=== WHAT'S BEEN DONE (Recent) === MCP Pipeline Factory: - 38 MCP servers tracked across 7 pipeline stages - 31 servers at Stage 16 (Website Built) — ready to deploy - All 30 production servers patched to 100/100 protocol compliance - Built complete testing infra: mcp-jest, mcp-validator, mcp-add, MCP Inspector - 702 auto-generated test cases ready for live API testing - Autonomous pipeline operator system w/ 7 Discord channels + cron jobs - Dashboard live at 192.168.0.25:8888 (drag-drop kanban) CloseBot MCP: - 119 tools, 4,656 lines TypeScript, compiles clean - 14 modules (8 tool groups + 6 UI apps) GHL MCP: - Stage 11 (Edge Case Testing) — 42 failing tests identified Sub-agent _meta Labels: - All 643 tools across 5 MCPs tagged (GHL, Google Ads, Meta Ads, Google Console, Twilio) OpenClaw Upwork Launch: - 15 graphics, 6 mockups, 2 PDFs, 90-sec Remotion video - 3-tier pricing: $2,499 / $7,499 / $24,999 - First $20k deal closed + $2k/mo retainer (hospice) Other: - Surya Blender animation scripts (7 tracks) - Clawdbot architecture deep dive doc - Pipeline state.json updates === TO-DO (Open Items) === BLOCKERS: - [ ] GHL MCP: Fix 42 failing edge case tests (Stage 11) - [ ] Expired Anthropic API key in localbosses-app .env.local - [ ] Testing strategy decision: structural vs live API vs hybrid NEEDS API KEYS (can't progress without): - [ ] Meta Ads MCP — needs META_ADS_API_KEY for Stage 8→9 - [ ] Twilio MCP — needs TWILIO_API_KEY for Stage 8→9 - [ ] CloseBot MCP — needs CLOSEBOT_API_KEY for live testing - [ ] 702 test cases across all servers need live API credentials PIPELINE ADVANCEMENT: - [ ] Stage 7→8: CloseBot + Google Console need design approval - [ ] Stage 6→7: 22 servers need UI apps built - [ ] Stage 5→6: 5 servers need core tools built (FreshBooks, Gusto, Jobber, Keap, Lightspeed) - [ ] Stage 1→5: 3 new MCPs need scaffolding (Compliance GRC, HR People Ops, Product Analytics) PENDING REVIEW: - [ ] Jake review OpenClaw video + gallery → finalize Upwork listing - [ ] LocalBosses UI redesign (Steve Jobs critique delivered, recs available) QUEUED PROJECTS: - [ ] SongSense AI music analysis product (architecture done, build not started) - [ ] 8-Week Agent Study Plan execution (curriculum posted, Week 1 not started)
79 lines
2.2 KiB
Python
79 lines
2.2 KiB
Python
"""
|
|
SURYA - GLTF Export Script
|
|
Exports all scenes from surya_all.blend as individual GLTF files.
|
|
|
|
Usage:
|
|
/Applications/Blender.app/Contents/MacOS/Blender surya_all.blend --background --python export_gltf.py
|
|
"""
|
|
|
|
import bpy
|
|
import os
|
|
|
|
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
EXPORTS_DIR = os.path.join(SCRIPT_DIR, "exports")
|
|
|
|
def export_all_gltf():
|
|
"""Export each scene as a GLTF file."""
|
|
os.makedirs(EXPORTS_DIR, exist_ok=True)
|
|
|
|
print("=" * 60)
|
|
print("SURYA - GLTF Export")
|
|
print("=" * 60)
|
|
|
|
exported = []
|
|
failed = []
|
|
|
|
for scene in bpy.data.scenes:
|
|
scene_name = scene.name
|
|
print(f"\nExporting: {scene_name}...")
|
|
|
|
# Set as active scene
|
|
bpy.context.window.scene = scene
|
|
|
|
# Deselect all, then select all visible
|
|
bpy.ops.object.select_all(action='DESELECT')
|
|
for obj in scene.objects:
|
|
if obj.visible_get():
|
|
obj.select_set(True)
|
|
|
|
gltf_path = os.path.join(EXPORTS_DIR, f"{scene_name}.gltf")
|
|
|
|
try:
|
|
bpy.ops.export_scene.gltf(
|
|
filepath=gltf_path,
|
|
export_format='GLTF_SEPARATE',
|
|
export_animations=True,
|
|
export_apply=False,
|
|
export_texcoords=True,
|
|
export_normals=True,
|
|
export_materials='EXPORT',
|
|
use_selection=False,
|
|
export_extras=False,
|
|
export_yup=True,
|
|
export_cameras=True,
|
|
)
|
|
print(f" ✓ Exported: {gltf_path}")
|
|
exported.append(scene_name)
|
|
except Exception as e:
|
|
print(f" ✗ Failed: {e}")
|
|
failed.append((scene_name, str(e)))
|
|
|
|
# Summary
|
|
print("\n" + "=" * 60)
|
|
print("GLTF EXPORT SUMMARY")
|
|
print("=" * 60)
|
|
print(f"\nSuccessful: {len(exported)}")
|
|
for name in exported:
|
|
print(f" ✓ {name}.gltf")
|
|
|
|
if failed:
|
|
print(f"\nFailed: {len(failed)}")
|
|
for name, error in failed:
|
|
print(f" ✗ {name}: {error}")
|
|
|
|
print(f"\nOutput directory: {EXPORTS_DIR}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
export_all_gltf()
|