@hybridlabor-api/aos 4.4.0 → 4.4.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/.agents/skills/firecrawl/SKILL.md +149 -0
  2. package/.agents/skills/firecrawl/rules/install.md +82 -0
  3. package/.agents/skills/firecrawl/rules/security.md +26 -0
  4. package/.agents/skills/firecrawl-agent/SKILL.md +58 -0
  5. package/.agents/skills/firecrawl-build/SKILL.md +39 -0
  6. package/.agents/skills/firecrawl-build-interact/SKILL.md +68 -0
  7. package/.agents/skills/firecrawl-build-onboarding/SKILL.md +103 -0
  8. package/.agents/skills/firecrawl-build-onboarding/references/auth-flow.md +39 -0
  9. package/.agents/skills/firecrawl-build-onboarding/references/project-setup.md +20 -0
  10. package/.agents/skills/firecrawl-build-onboarding/references/sdk-installation.md +17 -0
  11. package/.agents/skills/firecrawl-build-scrape/SKILL.md +69 -0
  12. package/.agents/skills/firecrawl-build-search/SKILL.md +69 -0
  13. package/.agents/skills/firecrawl-crawl/SKILL.md +59 -0
  14. package/.agents/skills/firecrawl-download/SKILL.md +70 -0
  15. package/.agents/skills/firecrawl-interact/SKILL.md +84 -0
  16. package/.agents/skills/firecrawl-map/SKILL.md +51 -0
  17. package/.agents/skills/firecrawl-scrape/SKILL.md +69 -0
  18. package/.agents/skills/firecrawl-search/SKILL.md +60 -0
  19. package/.claude/hooks/memb-inject.mjs +6 -0
  20. package/CLAUDE.md +573 -0
  21. package/README.de.md +0 -8
  22. package/README.md +0 -8
  23. package/README.pt.md +0 -8
  24. package/assets/brand/ao-ant-mark.svg +91 -0
  25. package/assets/brand/bdb-core-mark.svg +34 -0
  26. package/assets/brand/heimdall-guardian-mark.svg +16 -0
  27. package/assets/brand/memb-crystal-mark.svg +18 -0
  28. package/bin/aos-config.mjs +89 -0
  29. package/bin/aos-dashboard.mjs +608 -0
  30. package/bin/aos-uninstall.mjs +227 -0
  31. package/docs/sessions/audit-2026-09-14-silent-failures.md +114 -0
  32. package/docs/skills_table.md +0 -3
  33. package/installer.js +428 -237
  34. package/mcps/RhinoMCP/cc-plugin/.claude/settings.json +10 -0
  35. package/mcps/after-effects-mcp/build/index.js +840 -0
  36. package/mcps/after-effects-mcp/build/scripts/applyEffect.jsx +153 -0
  37. package/mcps/after-effects-mcp/build/scripts/applyEffectTemplate.jsx +218 -0
  38. package/mcps/after-effects-mcp/build/scripts/createComposition.jsx +71 -0
  39. package/mcps/after-effects-mcp/build/scripts/createShapeLayer.jsx +147 -0
  40. package/mcps/after-effects-mcp/build/scripts/createSolidLayer.jsx +114 -0
  41. package/mcps/after-effects-mcp/build/scripts/createTextLayer.jsx +115 -0
  42. package/mcps/after-effects-mcp/build/scripts/getLayerInfo.jsx +192 -0
  43. package/mcps/after-effects-mcp/build/scripts/getProjectInfo.jsx +90 -0
  44. package/mcps/after-effects-mcp/build/scripts/listCompositions.jsx +50 -0
  45. package/mcps/after-effects-mcp/build/scripts/mcp-bridge-auto.jsx +1773 -0
  46. package/mcps/after-effects-mcp/build/scripts/setLayerProperties.jsx +160 -0
  47. package/mcps/computer-use-mcp/dist/client.d.ts +150 -0
  48. package/mcps/computer-use-mcp/dist/client.js +136 -0
  49. package/mcps/computer-use-mcp/dist/entrypoint.d.ts +16 -0
  50. package/mcps/computer-use-mcp/dist/entrypoint.js +26 -0
  51. package/mcps/computer-use-mcp/dist/native.d.ts +212 -0
  52. package/mcps/computer-use-mcp/dist/native.js +50 -0
  53. package/mcps/computer-use-mcp/dist/server.d.ts +32 -0
  54. package/mcps/computer-use-mcp/dist/server.js +342 -0
  55. package/mcps/computer-use-mcp/dist/session.d.ts +101 -0
  56. package/mcps/computer-use-mcp/dist/session.js +2372 -0
  57. package/package.json +13 -4
  58. package/skills/global_config/aos-project-init/SKILL.md +97 -130
  59. package/skills/global_config/aos-project-init/assets/openwikiignore.template +62 -0
  60. package/skills/global_config/aos-project-init/scripts/aos-project-doctor.mjs +38 -1
  61. package/skills/global_config/aos-setup/SKILL.md +110 -11
  62. package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +48 -4
  63. package/skills/global_config/ask-tim/SKILL.md +2 -7
  64. package/skills/global_config/openwiki-skill/scripts/openwiki_daemon.py +65 -12
  65. package/bin/setup-saas.mjs +0 -792
  66. package/mcps/blender-mcp-server/.dockerignore +0 -19
  67. package/mcps/blender-mcp-server/.github/workflows/ci.yml +0 -67
  68. package/mcps/blender-mcp-server/.github/workflows/publish-pypi.yml +0 -54
  69. package/mcps/blender-mcp-server/CHANGELOG.md +0 -64
  70. package/mcps/blender-mcp-server/CONTRIBUTING.md +0 -107
  71. package/mcps/blender-mcp-server/Dockerfile +0 -19
  72. package/mcps/blender-mcp-server/LICENSE +0 -21
  73. package/mcps/blender-mcp-server/README.md +0 -409
  74. package/mcps/blender-mcp-server/addon/__init__.py +0 -1440
  75. package/mcps/blender-mcp-server/addon/models.py +0 -223
  76. package/mcps/blender-mcp-server/pyproject.toml +0 -120
  77. package/mcps/blender-mcp-server/scripts/blender_bridge_request.py +0 -71
  78. package/mcps/blender-mcp-server/scripts/blender_create_test_cube.py +0 -49
  79. package/mcps/blender-mcp-server/scripts/blender_scene_info.py +0 -38
  80. package/mcps/blender-mcp-server/scripts/build_addon_zip.sh +0 -29
  81. package/mcps/blender-mcp-server/scripts/demos/README.md +0 -186
  82. package/mcps/blender-mcp-server/scripts/demos/dam_break_scene.py +0 -276
  83. package/mcps/blender-mcp-server/scripts/demos/open_dam_break_gui.py +0 -33
  84. package/mcps/blender-mcp-server/scripts/demos/pipe_movement_study.py +0 -518
  85. package/mcps/blender-mcp-server/scripts/demos/pipe_pressure_failure_scene.py +0 -806
  86. package/mcps/blender-mcp-server/scripts/demos/procedural_dam_break_scene.py +0 -600
  87. package/mcps/blender-mcp-server/scripts/demos/run_dam_break.py +0 -510
  88. package/mcps/blender-mcp-server/scripts/launch_blender_gui.py +0 -41
  89. package/mcps/blender-mcp-server/scripts/library/README.md +0 -64
  90. package/mcps/blender-mcp-server/scripts/library/apply_transforms.py +0 -46
  91. package/mcps/blender-mcp-server/scripts/library/camera.py +0 -51
  92. package/mcps/blender-mcp-server/scripts/library/collections.py +0 -65
  93. package/mcps/blender-mcp-server/scripts/library/create_mesh.py +0 -41
  94. package/mcps/blender-mcp-server/scripts/library/effector.py +0 -48
  95. package/mcps/blender-mcp-server/scripts/library/fluid_domain.py +0 -80
  96. package/mcps/blender-mcp-server/scripts/library/fluid_inflow.py +0 -98
  97. package/mcps/blender-mcp-server/scripts/library/frame_range.py +0 -35
  98. package/mcps/blender-mcp-server/scripts/library/keyframes.py +0 -59
  99. package/mcps/blender-mcp-server/scripts/library/rigid_body.py +0 -52
  100. package/mcps/blender-mcp-server/scripts/library/save_blend.py +0 -40
  101. package/mcps/blender-mcp-server/scripts/server_start.sh +0 -26
  102. package/mcps/blender-mcp-server/src/blender_mcp_server/__init__.py +0 -3
  103. package/mcps/blender-mcp-server/src/blender_mcp_server/headless.py +0 -330
  104. package/mcps/blender-mcp-server/src/blender_mcp_server/server.py +0 -606
  105. package/mcps/davinci-mcp-professional/.bandit +0 -35
  106. package/mcps/davinci-mcp-professional/.claude/commands/security-review.md +0 -191
  107. package/mcps/davinci-mcp-professional/.claude/settings.json +0 -1
  108. package/mcps/davinci-mcp-professional/.editorconfig +0 -27
  109. package/mcps/davinci-mcp-professional/.gitattributes +0 -207
  110. package/mcps/davinci-mcp-professional/.github/CODEOWNERS +0 -2
  111. package/mcps/davinci-mcp-professional/.github/ISSUE_TEMPLATE/bug_report.md +0 -33
  112. package/mcps/davinci-mcp-professional/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
  113. package/mcps/davinci-mcp-professional/.github/PULL_REQUEST_TEMPLATE.md +0 -20
  114. package/mcps/davinci-mcp-professional/.github/SECURITY.md +0 -97
  115. package/mcps/davinci-mcp-professional/.github/dependabot.yml +0 -27
  116. package/mcps/davinci-mcp-professional/.github/workflows/ci.yml +0 -39
  117. package/mcps/davinci-mcp-professional/ATTRIBUTION.md +0 -4
  118. package/mcps/davinci-mcp-professional/AUTHORS.md +0 -9
  119. package/mcps/davinci-mcp-professional/BUGS.md +0 -55
  120. package/mcps/davinci-mcp-professional/CLAUDE.md +0 -229
  121. package/mcps/davinci-mcp-professional/CONTRIBUTING.md +0 -51
  122. package/mcps/davinci-mcp-professional/COPYING.md +0 -228
  123. package/mcps/davinci-mcp-professional/Doxyfile +0 -379
  124. package/mcps/davinci-mcp-professional/README.md +0 -143
  125. package/mcps/davinci-mcp-professional/SECURITY.md +0 -40
  126. package/mcps/davinci-mcp-professional/USING.md +0 -301
  127. package/mcps/davinci-mcp-professional/VERSION.md +0 -13
  128. package/mcps/davinci-mcp-professional/build.py +0 -169
  129. package/mcps/davinci-mcp-professional/claude_desktop_config_template.json +0 -11
  130. package/mcps/davinci-mcp-professional/hooks/ci-check.sh +0 -29
  131. package/mcps/davinci-mcp-professional/hooks/pre-push +0 -46
  132. package/mcps/davinci-mcp-professional/main.py +0 -40
  133. package/mcps/davinci-mcp-professional/mcp_server.py +0 -30
  134. package/mcps/davinci-mcp-professional/pyproject.toml +0 -115
  135. package/mcps/davinci-mcp-professional/security_audit.py +0 -379
  136. package/mcps/davinci-mcp-professional/src/davinci_mcp/__init__.py +0 -19
  137. package/mcps/davinci-mcp-professional/src/davinci_mcp/cli.py +0 -138
  138. package/mcps/davinci-mcp-professional/src/davinci_mcp/resolve_client.py +0 -342
  139. package/mcps/davinci-mcp-professional/src/davinci_mcp/resources/__init__.py +0 -60
  140. package/mcps/davinci-mcp-professional/src/davinci_mcp/server.py +0 -185
  141. package/mcps/davinci-mcp-professional/src/davinci_mcp/tools/__init__.py +0 -146
  142. package/mcps/davinci-mcp-professional/src/davinci_mcp/types.py +0 -125
  143. package/mcps/davinci-mcp-professional/src/davinci_mcp/utils/__init__.py +0 -19
  144. package/mcps/davinci-mcp-professional/src/davinci_mcp/utils/platform.py +0 -239
  145. package/mcps/davinci-mcp-professional/test.py +0 -186
  146. package/mcps/davinci-mcp-professional/uv.lock +0 -2073
  147. package/mcps/davinci-resolve-mcp/.claude/skills/media-analysis.md +0 -44
  148. package/mcps/davinci-resolve-mcp/.clinerules +0 -17
  149. package/mcps/davinci-resolve-mcp/.cursorrules +0 -17
  150. package/mcps/davinci-resolve-mcp/.github/copilot-instructions.md +0 -17
  151. package/mcps/davinci-resolve-mcp/.github/workflows/npm-publish.yml +0 -109
  152. package/mcps/davinci-resolve-mcp/.windsurfrules +0 -17
  153. package/mcps/davinci-resolve-mcp/AGENTS.md +0 -114
  154. package/mcps/davinci-resolve-mcp/CHANGELOG.md +0 -2648
  155. package/mcps/davinci-resolve-mcp/CLAUDE.md +0 -15
  156. package/mcps/davinci-resolve-mcp/LICENSE +0 -21
  157. package/mcps/davinci-resolve-mcp/README.md +0 -173
  158. package/mcps/davinci-resolve-mcp/SECURITY.md +0 -53
  159. package/mcps/davinci-resolve-mcp/bin/davinci-resolve-mcp.mjs +0 -450
  160. package/mcps/davinci-resolve-mcp/examples/README.md +0 -53
  161. package/mcps/davinci-resolve-mcp/examples/markers/README.md +0 -81
  162. package/mcps/davinci-resolve-mcp/examples/media/README.md +0 -94
  163. package/mcps/davinci-resolve-mcp/examples/timeline/README.md +0 -98
  164. package/mcps/davinci-resolve-mcp/install.py +0 -1687
  165. package/mcps/davinci-resolve-mcp/package.json +0 -52
  166. package/mcps/davinci-resolve-mcp/release-notes/v2.22.0.md +0 -51
  167. package/mcps/davinci-resolve-mcp/release-notes/v2.23.0.md +0 -51
  168. package/mcps/davinci-resolve-mcp/release-notes/v2.23.1.md +0 -35
  169. package/mcps/davinci-resolve-mcp/release-notes/v2.24.1.md +0 -32
  170. package/mcps/davinci-resolve-mcp/scripts/audit_api_parity.py +0 -275
  171. package/mcps/davinci-resolve-mcp/scripts/audit_readwrite_symmetry.py +0 -80
  172. package/mcps/davinci-resolve-mcp/scripts/doctor.py +0 -227
  173. package/mcps/davinci-resolve-mcp/scripts/gen_api_limitations.py +0 -144
  174. package/mcps/davinci-resolve-mcp/scripts/live_media_analysis_polish_probe.py +0 -65
  175. package/mcps/davinci-resolve-mcp/scripts/measure_bridge_cost.py +0 -65
  176. package/mcps/davinci-resolve-mcp/scripts/regen_panel_screenshots.py +0 -76
  177. package/mcps/davinci-resolve-mcp/src/__init__.py +0 -3
  178. package/mcps/davinci-resolve-mcp/src/analysis_dashboard.py +0 -15505
  179. package/mcps/davinci-resolve-mcp/src/batch_cli.py +0 -540
  180. package/mcps/davinci-resolve-mcp/src/control_panel.py +0 -13
  181. package/mcps/davinci-resolve-mcp/src/granular/__init__.py +0 -17
  182. package/mcps/davinci-resolve-mcp/src/granular/common.py +0 -741
  183. package/mcps/davinci-resolve-mcp/src/granular/folder.py +0 -420
  184. package/mcps/davinci-resolve-mcp/src/granular/gallery.py +0 -306
  185. package/mcps/davinci-resolve-mcp/src/granular/graph.py +0 -309
  186. package/mcps/davinci-resolve-mcp/src/granular/media_pool.py +0 -679
  187. package/mcps/davinci-resolve-mcp/src/granular/media_pool_item.py +0 -1020
  188. package/mcps/davinci-resolve-mcp/src/granular/media_storage.py +0 -179
  189. package/mcps/davinci-resolve-mcp/src/granular/project.py +0 -1654
  190. package/mcps/davinci-resolve-mcp/src/granular/resolve_control.py +0 -538
  191. package/mcps/davinci-resolve-mcp/src/granular/timeline.py +0 -1075
  192. package/mcps/davinci-resolve-mcp/src/granular/timeline_item.py +0 -2251
  193. package/mcps/davinci-resolve-mcp/src/resolve_mcp_server.py +0 -43
  194. package/mcps/davinci-resolve-mcp/src/server.py +0 -24116
  195. package/mcps/davinci-resolve-mcp/src/utils/__init__.py +0 -3
  196. package/mcps/davinci-resolve-mcp/src/utils/actor_identity.py +0 -46
  197. package/mcps/davinci-resolve-mcp/src/utils/analysis_caps.py +0 -678
  198. package/mcps/davinci-resolve-mcp/src/utils/analysis_memory.py +0 -755
  199. package/mcps/davinci-resolve-mcp/src/utils/analysis_runs.py +0 -307
  200. package/mcps/davinci-resolve-mcp/src/utils/analysis_store.py +0 -945
  201. package/mcps/davinci-resolve-mcp/src/utils/api_truth.py +0 -525
  202. package/mcps/davinci-resolve-mcp/src/utils/app_control.py +0 -319
  203. package/mcps/davinci-resolve-mcp/src/utils/audio_fairlight_live_probe.py +0 -263
  204. package/mcps/davinci-resolve-mcp/src/utils/brain_edits.py +0 -387
  205. package/mcps/davinci-resolve-mcp/src/utils/bridge_metrics.py +0 -76
  206. package/mcps/davinci-resolve-mcp/src/utils/cdl.py +0 -20
  207. package/mcps/davinci-resolve-mcp/src/utils/clip_query.py +0 -85
  208. package/mcps/davinci-resolve-mcp/src/utils/cloud_operations.py +0 -192
  209. package/mcps/davinci-resolve-mcp/src/utils/color_grade_live_probe.py +0 -444
  210. package/mcps/davinci-resolve-mcp/src/utils/contracts.py +0 -102
  211. package/mcps/davinci-resolve-mcp/src/utils/cut_ir.py +0 -115
  212. package/mcps/davinci-resolve-mcp/src/utils/dctl_templates.py +0 -368
  213. package/mcps/davinci-resolve-mcp/src/utils/deep_vision.py +0 -643
  214. package/mcps/davinci-resolve-mcp/src/utils/destructive_hook.py +0 -606
  215. package/mcps/davinci-resolve-mcp/src/utils/edit_engine.py +0 -737
  216. package/mcps/davinci-resolve-mcp/src/utils/embeddings.py +0 -922
  217. package/mcps/davinci-resolve-mcp/src/utils/entities.py +0 -579
  218. package/mcps/davinci-resolve-mcp/src/utils/extension_authoring_live_probe.py +0 -292
  219. package/mcps/davinci-resolve-mcp/src/utils/failure_tracker.py +0 -119
  220. package/mcps/davinci-resolve-mcp/src/utils/fuse_templates.py +0 -1968
  221. package/mcps/davinci-resolve-mcp/src/utils/fusion_composition_live_probe.py +0 -284
  222. package/mcps/davinci-resolve-mcp/src/utils/fusion_group_settings.py +0 -334
  223. package/mcps/davinci-resolve-mcp/src/utils/layout_presets.py +0 -333
  224. package/mcps/davinci-resolve-mcp/src/utils/mcp_stdio.py +0 -32
  225. package/mcps/davinci-resolve-mcp/src/utils/mcp_transport.py +0 -128
  226. package/mcps/davinci-resolve-mcp/src/utils/media_analysis.py +0 -7690
  227. package/mcps/davinci-resolve-mcp/src/utils/media_analysis_jobs.py +0 -805
  228. package/mcps/davinci-resolve-mcp/src/utils/media_pool_changes.py +0 -121
  229. package/mcps/davinci-resolve-mcp/src/utils/media_pool_ingest_live_probe.py +0 -592
  230. package/mcps/davinci-resolve-mcp/src/utils/multicam.py +0 -393
  231. package/mcps/davinci-resolve-mcp/src/utils/object_inspection.py +0 -301
  232. package/mcps/davinci-resolve-mcp/src/utils/page_lock.py +0 -75
  233. package/mcps/davinci-resolve-mcp/src/utils/platform.py +0 -157
  234. package/mcps/davinci-resolve-mcp/src/utils/proc.py +0 -26
  235. package/mcps/davinci-resolve-mcp/src/utils/project_cleanup.py +0 -73
  236. package/mcps/davinci-resolve-mcp/src/utils/project_lifecycle_live_probe.py +0 -376
  237. package/mcps/davinci-resolve-mcp/src/utils/project_lint.py +0 -131
  238. package/mcps/davinci-resolve-mcp/src/utils/project_properties.py +0 -601
  239. package/mcps/davinci-resolve-mcp/src/utils/project_spec.py +0 -459
  240. package/mcps/davinci-resolve-mcp/src/utils/readback.py +0 -91
  241. package/mcps/davinci-resolve-mcp/src/utils/render_deliver_live_probe.py +0 -384
  242. package/mcps/davinci-resolve-mcp/src/utils/resolve_ai_governance.py +0 -214
  243. package/mcps/davinci-resolve-mcp/src/utils/resolve_ai_ledger.py +0 -244
  244. package/mcps/davinci-resolve-mcp/src/utils/resolve_busy.py +0 -171
  245. package/mcps/davinci-resolve-mcp/src/utils/resolve_connection.py +0 -77
  246. package/mcps/davinci-resolve-mcp/src/utils/review_annotation_live_probe.py +0 -352
  247. package/mcps/davinci-resolve-mcp/src/utils/script_templates.py +0 -1193
  248. package/mcps/davinci-resolve-mcp/src/utils/shot_relationships.py +0 -544
  249. package/mcps/davinci-resolve-mcp/src/utils/structural_diff.py +0 -175
  250. package/mcps/davinci-resolve-mcp/src/utils/sync_detection.py +0 -889
  251. package/mcps/davinci-resolve-mcp/src/utils/timeline_brain_db.py +0 -826
  252. package/mcps/davinci-resolve-mcp/src/utils/timeline_conform_live_probe.py +0 -280
  253. package/mcps/davinci-resolve-mcp/src/utils/timeline_kernel_live_probe.py +0 -1092
  254. package/mcps/davinci-resolve-mcp/src/utils/timeline_kernel_probe.py +0 -185
  255. package/mcps/davinci-resolve-mcp/src/utils/timeline_title_text.py +0 -87
  256. package/mcps/davinci-resolve-mcp/src/utils/timeline_versioning.py +0 -730
  257. package/mcps/davinci-resolve-mcp/src/utils/update_check.py +0 -685
  258. package/mcps/vectorworks-mcp/.dockerignore +0 -8
  259. package/mcps/vectorworks-mcp/Dockerfile +0 -28
  260. package/mcps/vectorworks-mcp/README.md +0 -156
  261. package/mcps/vectorworks-mcp/app/__init__.py +0 -2
  262. package/mcps/vectorworks-mcp/app/api.py +0 -52
  263. package/mcps/vectorworks-mcp/app/chunking.py +0 -56
  264. package/mcps/vectorworks-mcp/app/config.py +0 -29
  265. package/mcps/vectorworks-mcp/app/embeddings.py +0 -28
  266. package/mcps/vectorworks-mcp/app/indexer.py +0 -106
  267. package/mcps/vectorworks-mcp/app/main.py +0 -33
  268. package/mcps/vectorworks-mcp/app/mcp_server.py +0 -71
  269. package/mcps/vectorworks-mcp/app/search.py +0 -54
  270. package/mcps/vectorworks-mcp/app/utils.py +0 -14
  271. package/mcps/vectorworks-mcp/data/.gitkeep +0 -1
  272. package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_PluginScript.htm +0 -95
  273. package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_ScriptEditor.htm +0 -266
  274. package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_Scripting.htm +0 -106
  275. package/mcps/vectorworks-mcp/data/vw-app-help/VW2023_CreatingScriptedPlugins.htm +0 -327
  276. package/mcps/vectorworks-mcp/data/vw-app-help/VW2024_RunningScripts.htm +0 -116
  277. package/mcps/vectorworks-mcp/data/vw-devwiki/VS_Function_Reference_category.html +0 -2129
  278. package/mcps/vectorworks-mcp/data/vw-jp-ref/ObjectsSymbols.html +0 -2035
  279. package/mcps/vectorworks-mcp/data/vw-jp-ref/ScriptFunctionReference.html +0 -29
  280. package/mcps/vectorworks-mcp/design.md +0 -57
  281. package/mcps/vectorworks-mcp/docker-compose.yml +0 -18
  282. package/mcps/vectorworks-mcp/index/.gitkeep +0 -1
  283. package/mcps/vectorworks-mcp/index/meta.jsonl +0 -3956
  284. package/mcps/vectorworks-mcp/index/vw.faiss +0 -0
  285. package/mcps/vectorworks-mcp/requirements.txt +0 -10
  286. package/mcps/vectorworks-mcp/scripts/fetch_docs_minimal.sh +0 -84
  287. package/mcps/vectorworks-mcp/scripts/fetch_github_vectorworks.sh +0 -85
  288. package/mcps/vectorworks-mcp/templates/index.html +0 -40
  289. package/scripts/ecosystem-health-audit.js +0 -257
  290. package/skills/bdb-dev-os-skill/SKILL.md +0 -49
  291. package/skills/bdb-dev-os-skill/package.json +0 -11
  292. package/skills/bdbsaastraining/SKILL.md +0 -316
  293. package/skills/bdbsaastraining/references/exam-pool.md +0 -313
  294. package/skills/bdbsaastraining/references/interaction-modes.md +0 -94
  295. package/skills/bdbsaastraining/references/track-a-ai-agent.md +0 -111
  296. package/skills/bdbsaastraining/references/track-b-wordpress.md +0 -111
  297. package/skills/bdbsaastraining/references/track-c-mailserver.md +0 -107
  298. package/skills/bdbsaastraining/references/track-d-debian.md +0 -109
  299. package/skills/bdbsaastraining/references/track-e-custom.md +0 -83
  300. package/skills/bdbsaastraining/scripts/build_profile.py +0 -529
  301. package/skills/bdbsaastraining/scripts/generate_certificate.py +0 -161
  302. package/skills/bdbsaastraining/scripts/preflight_check.sh +0 -150
  303. package/skills/bdbsaastraining/templates/certificate_template.html +0 -508
  304. package/skills/global_config/bdb-ecosystem-health/SKILL.md +0 -68
  305. package/skills/global_config/bdbsaas-ops/SKILL.md +0 -16
  306. package/skills/global_config/bdbsaashost/SKILL.md +0 -125
@@ -1,301 +0,0 @@
1
- # Developer Guide — DaVinci MCP Professional
2
-
3
- This document covers everything needed to work on the project from source,
4
- including setup, running, building, testing, and contributing.
5
-
6
- For end-user installation, see [README.md](README.md).
7
- For full API documentation, see `docs/html/index.html` or regenerate with
8
- `doxygen Doxyfile`.
9
-
10
- ---
11
-
12
- ## Prerequisites
13
-
14
- - Python 3.10 or later, **installed system-wide** (the installer from
15
- [python.org](https://www.python.org/downloads/) with "Add to PATH" and
16
- "Install for all users" selected)
17
- - [uv](https://docs.astral.sh/uv/getting-started/installation/)
18
- - DaVinci Resolve Studio, installed and running when using the server
19
- (the free edition does not support external scripting)
20
- - Git, configured with GPG signing (required for commits — see CONTRIBUTING.md)
21
-
22
- ---
23
-
24
- ## Development Setup
25
-
26
- ```bash
27
- git clone https://github.com/Positronikal/davinci-mcp-professional.git
28
- cd davinci-mcp-professional
29
- uv venv --python <system-python>
30
- uv sync
31
- ```
32
-
33
- **Windows — important:** The `--python` flag must point to the
34
- system-installed Python executable. DaVinci Resolve's `fusionscript.dll`
35
- discovers Python through the Windows registry
36
- (`HKLM\SOFTWARE\Python\PythonCore`) and loads `python3.dll` by full path
37
- from that installation. If the virtual environment uses a *different*
38
- Python (e.g. one downloaded by `uv` automatically), two Python runtimes
39
- end up in the same process and the server crashes.
40
-
41
- To find your system Python, run:
42
-
43
- ```powershell
44
- py -0p # Windows Python Launcher — lists installed versions and paths
45
- ```
46
-
47
- Then create the venv:
48
-
49
- ```bash
50
- uv venv --python "C:\Program Files\Python314\python.exe" # adjust to your version
51
- uv sync
52
- ```
53
-
54
- On **macOS / Linux**, `uv venv` with no `--python` flag works if the
55
- default `python3` is a system-wide installation.
56
-
57
- `uv sync` installs all runtime and dev dependencies from `uv.lock` into `.venv`.
58
-
59
- ---
60
-
61
- ## Running from Source
62
-
63
- The project has two entry points that serve different purposes:
64
-
65
- **`mcp_server.py` — MCP server (for AI clients)**
66
-
67
- ```bash
68
- uv run python mcp_server.py
69
- ```
70
-
71
- This is the entry point that MCP clients (Claude Desktop, Gemini CLI, etc.)
72
- launch as a subprocess. It speaks the MCP stdio protocol with no console
73
- output. Point your `claude_desktop_config.json` at this file.
74
-
75
- **`main.py` — Interactive CLI (for humans)**
76
-
77
- ```bash
78
- uv run python main.py
79
- uv run python main.py --debug
80
- ```
81
-
82
- This wraps the same MCP server with a human-friendly terminal interface:
83
- a colored startup banner, prerequisite checks (is Resolve running? is
84
- PYTHONPATH set?), and `--debug` / `--skip-checks` flags. Use this when
85
- running the server manually to verify connectivity or troubleshoot issues.
86
-
87
- ---
88
-
89
- ## MCP Client Configuration for Development
90
-
91
- Point your MCP client at the venv interpreter and `mcp_server.py`. Example
92
- for Claude Desktop (`claude_desktop_config.json`):
93
-
94
- **Windows:**
95
- ```json
96
- {
97
- "mcpServers": {
98
- "davinci-resolve": {
99
- "name": "DaVinci MCP Professional",
100
- "command": "C:\\path\\to\\davinci-mcp-professional\\.venv\\Scripts\\python.exe",
101
- "args": ["C:\\path\\to\\davinci-mcp-professional\\mcp_server.py"]
102
- }
103
- }
104
- }
105
- ```
106
-
107
- **macOS:**
108
- ```json
109
- {
110
- "mcpServers": {
111
- "davinci-resolve": {
112
- "name": "DaVinci MCP Professional",
113
- "command": "/path/to/davinci-mcp-professional/.venv/bin/python",
114
- "args": ["/path/to/davinci-mcp-professional/mcp_server.py"]
115
- }
116
- }
117
- }
118
- ```
119
-
120
- A ready-to-edit template is at `claude_desktop_config_template.json`.
121
-
122
- ---
123
-
124
- ## PyInstaller Builds
125
-
126
- Build standalone executables (single-directory bundles):
127
-
128
- ```bash
129
- uv sync --extra build # install PyInstaller into the venv
130
- uv run python build.py # build both targets
131
- ```
132
-
133
- Output:
134
-
135
- ```
136
- dist/davinci-mcp-server/davinci-mcp-server.exe # MCP server (for AI clients)
137
- dist/davinci-mcp/davinci-mcp.exe # Interactive CLI (for humans)
138
- ```
139
-
140
- These mirror the two entry points described in **Running from Source** above:
141
-
142
- - **`davinci-mcp-server.exe`** — the MCP stdio server. Use this in MCP client
143
- configurations when distributing to end users who do not have Python
144
- installed.
145
- - **`davinci-mcp.exe`** — the interactive CLI with prerequisite checks and
146
- colored output. Useful for manual testing and troubleshooting.
147
-
148
- ---
149
-
150
- ## Project Structure
151
-
152
- ```
153
- davinci-mcp-professional/
154
- ├── mcp_server.py # Pure MCP stdio server entry point
155
- ├── main.py # Interactive CLI entry point
156
- ├── build.py # PyInstaller build script
157
- ├── src/davinci_mcp/
158
- │ ├── __init__.py # Package init; imports __version__ from hatch-vcs
159
- │ ├── cli.py # click CLI, prerequisite checks, banner
160
- │ ├── server.py # MCP server: registers tool/resource handlers
161
- │ ├── resolve_client.py # DaVinci Resolve API wrapper
162
- │ ├── types.py # runtime_checkable Protocol types for Resolve objects
163
- │ ├── tools/__init__.py # All 13 MCP tool definitions (name, schema)
164
- │ ├── resources/__init__.py # All 7 MCP resource definitions (URI, schema)
165
- │ └── utils/
166
- │ ├── __init__.py
167
- │ └── platform.py # Platform detection, PYTHONPATH setup, process check
168
- ├── tests/
169
- │ ├── conftest.py
170
- │ └── test_security.py
171
- ├── docs/ # Doxygen-generated HTML (tracked in git)
172
- ├── pyproject.toml
173
- ├── uv.lock
174
- └── Doxyfile
175
- ```
176
-
177
- ---
178
-
179
- ## Available Tools
180
-
181
- | Tool | Description |
182
- |---|---|
183
- | `get_version` | DaVinci Resolve version string |
184
- | `get_current_page` | Currently active page (Edit, Color, etc.) |
185
- | `switch_page` | Navigate to a page (media/cut/edit/fusion/color/fairlight/deliver) |
186
- | `list_projects` | All projects in the current database |
187
- | `get_current_project` | Name of the open project |
188
- | `open_project` | Open a project by name |
189
- | `create_project` | Create a new project |
190
- | `list_timelines` | All timelines in the current project |
191
- | `get_current_timeline` | Name of the active timeline |
192
- | `create_timeline` | Create a new empty timeline |
193
- | `switch_timeline` | Switch to a timeline by name |
194
- | `list_media_clips` | All clips in the media pool root folder |
195
- | `import_media` | Import a media file into the media pool |
196
-
197
- ## Available Resources
198
-
199
- | URI | MIME type | Content |
200
- |---|---|---|
201
- | `resolve://version` | text/plain | Resolve version string |
202
- | `resolve://current-page` | text/plain | Active page name |
203
- | `resolve://projects` | application/json | Project list |
204
- | `resolve://current-project` | text/plain | Open project name |
205
- | `resolve://timelines` | application/json | Timeline list |
206
- | `resolve://current-timeline` | text/plain | Active timeline name |
207
- | `resolve://media-clips` | application/json | Media pool clip list |
208
-
209
- ---
210
-
211
- ## Extending the Server
212
-
213
- ### Adding a new tool
214
-
215
- 1. Add its definition to `src/davinci_mcp/tools/__init__.py` (name, description,
216
- inputSchema).
217
- 2. Add a dispatch branch in `server.py` → `_call_tool()`.
218
- 3. Implement the method in `resolve_client.py`.
219
-
220
- ### Adding a new resource
221
-
222
- 1. Add its definition to `src/davinci_mcp/resources/__init__.py` (URI, mimeType).
223
- 2. Add a dispatch branch in `server.py` → `_read_resource()`.
224
- 3. Implement the method in `resolve_client.py`.
225
-
226
- ---
227
-
228
- ## Testing, Linting, and Type Checking
229
-
230
- ```bash
231
- # Run all tests
232
- uv run pytest
233
-
234
- # Run a single test file
235
- uv run pytest tests/test_security.py -v
236
-
237
- # Skip integration tests (requires Resolve running)
238
- uv run pytest -m "not integration"
239
-
240
- # Coverage
241
- uv run pytest --cov=src/davinci_mcp --cov-report=html
242
-
243
- # Lint and format
244
- uv run ruff check src/ tests/
245
- uv run ruff format src/ tests/
246
-
247
- # Type checking
248
- uv run pyright
249
- uv run mypy src/
250
-
251
- # Security
252
- uv run bandit -r src/
253
- uv run safety check
254
- ```
255
-
256
- ---
257
-
258
- ## API Documentation
259
-
260
- Full Doxygen-generated API documentation is in `docs/html/`:
261
-
262
- ```bash
263
- # View locally
264
- open docs/html/index.html # macOS
265
- start docs/html/index.html # Windows
266
-
267
- # Serve with search support
268
- cd docs/html
269
- uv run python -m http.server 8000
270
- # then open http://localhost:8000
271
-
272
- # Regenerate after code changes
273
- doxygen Doxyfile
274
- ```
275
-
276
- ---
277
-
278
- ## Troubleshooting
279
-
280
- **DaVinci Resolve not found**
281
- - Confirm Resolve is installed in the default location for your OS.
282
- - On Windows: `C:\Program Files\Blackmagic Design\DaVinci Resolve\`
283
- - On macOS: `/Applications/DaVinci Resolve/`
284
-
285
- **DaVinci Resolve not running**
286
- - The server requires Resolve to be fully loaded before connecting.
287
- - Start Resolve first, wait for the UI to appear, then start the server.
288
-
289
- **Import errors after setup**
290
- - Run `uv sync` to ensure all dependencies are installed.
291
- - Confirm you are running via `uv run python ...` or have activated `.venv`.
292
-
293
- **Debug mode**
294
- ```bash
295
- uv run python main.py --debug
296
- ```
297
-
298
- **Dependency conflicts**
299
- ```bash
300
- uv sync --reinstall
301
- ```
@@ -1,13 +0,0 @@
1
- # Version
2
- Refer to the applied git tags for versioning using one of the following commands as appropriate:
3
-
4
- - Linux or Macintosh:
5
- ```
6
- $ git tag
7
- ```
8
- ...or...
9
-
10
- - Windows:
11
- ```
12
- > git tag
13
- ```
@@ -1,169 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- PyInstaller build script for DaVinci MCP Professional.
4
-
5
- Produces standalone single-directory bundles in dist/:
6
- - davinci-mcp-server/ (pure MCP stdio server, no console noise)
7
- - davinci-mcp/ (interactive CLI with prerequisite checks)
8
-
9
- Usage:
10
- uv run --extra build python build.py
11
-
12
- The build extra installs PyInstaller. Alternatively install it manually:
13
- uv add --optional build pyinstaller
14
- """
15
-
16
- import sys
17
- import os
18
- from pathlib import Path
19
-
20
- try:
21
- import PyInstaller.__main__
22
- except ImportError:
23
- print("[ERROR] PyInstaller not found.")
24
- print(" Install with: uv run --extra build python build.py")
25
- print(" Or manually: uv add --optional build pyinstaller")
26
- sys.exit(1)
27
-
28
- ROOT = Path(__file__).parent
29
- SRC = ROOT / "src"
30
-
31
- # ---------------------------------------------------------------------------
32
- # Hidden imports
33
- #
34
- # PyInstaller's static analysis misses modules that are imported at runtime
35
- # via importlib, __import__(), or behind try/except blocks.
36
- # ---------------------------------------------------------------------------
37
- HIDDEN_IMPORTS: list[str] = [
38
- # anyio: backends are selected at runtime by the event-loop policy
39
- "anyio._backends._asyncio",
40
- "anyio._backends._trio",
41
- # MCP internals used at connection time
42
- "mcp.server.stdio",
43
- "mcp.server.models",
44
- "mcp.server.lowlevel",
45
- "mcp.server.lowlevel.server",
46
- "mcp.types",
47
- # pydantic v2: validators and core are loaded dynamically
48
- "pydantic.deprecated.class_validators",
49
- "pydantic_core",
50
- # click / colorama: usually auto-detected, listed for safety
51
- "click",
52
- "colorama",
53
- "colorama.initialise",
54
- # importlib.metadata: used by __init__.py version fallback
55
- "importlib.metadata",
56
- ]
57
-
58
- # On Windows, mcp pulls in pywin32 for named-pipe transport
59
- if sys.platform == "win32":
60
- HIDDEN_IMPORTS += ["win32api", "win32con", "win32process", "pywintypes"]
61
-
62
- # ---------------------------------------------------------------------------
63
- # Packages to collect in full (Python files + data files + submodules).
64
- # Needed for packages that rely heavily on runtime discovery.
65
- # ---------------------------------------------------------------------------
66
- COLLECT_ALL: list[str] = [
67
- "mcp",
68
- "pydantic",
69
- "pydantic_core",
70
- "anyio",
71
- "httpx",
72
- "httpx_sse",
73
- "starlette",
74
- "sse_starlette",
75
- ]
76
-
77
-
78
- def _args(name: str, script: Path) -> list[str]:
79
- """Assemble the PyInstaller argument list for one target."""
80
- args = [
81
- str(script),
82
- "--name", name,
83
- "--onedir", # directory bundle — avoids AV false positives
84
- "--noconfirm", # overwrite previous dist without prompting
85
- "--distpath", str(ROOT / "dist"),
86
- "--workpath", str(ROOT / "build"),
87
- "--specpath", str(ROOT / "build"),
88
- "--paths", str(SRC), # ensure src/ is on the analysis path
89
- ]
90
-
91
- for imp in HIDDEN_IMPORTS:
92
- args += ["--hidden-import", imp]
93
-
94
- for pkg in COLLECT_ALL:
95
- args += ["--collect-all", pkg]
96
-
97
- return args
98
-
99
-
100
- def build_target(name: str, script_name: str) -> bool:
101
- """
102
- Build one executable bundle. Returns True on success.
103
-
104
- The MCP server communicates over stdio (JSON-RPC), so we deliberately
105
- do NOT pass --noconsole / --windowed. Hiding the console on Windows
106
- would break the stdio transport that Claude Desktop uses.
107
- """
108
- script = ROOT / script_name
109
- if not script.exists():
110
- print(f"[ERROR] Entry point not found: {script}")
111
- return False
112
-
113
- print(f"\n{'=' * 60}")
114
- print(f" Building: {name} ({script_name})")
115
- print(f"{'=' * 60}\n")
116
-
117
- args = _args(name, script)
118
-
119
- try:
120
- PyInstaller.__main__.run(args)
121
- except SystemExit as exc:
122
- if exc.code != 0:
123
- print(f"\n[ERROR] PyInstaller exited with code {exc.code}")
124
- return False
125
- except Exception as exc: # noqa: BLE001
126
- print(f"\n[ERROR] Build failed: {exc}")
127
- return False
128
-
129
- output_dir = ROOT / "dist" / name
130
- if output_dir.exists():
131
- print(f"\n[OK] Output directory: {output_dir}")
132
- return True
133
-
134
- print(f"\n[ERROR] Expected output not found: {output_dir}")
135
- return False
136
-
137
-
138
- def main() -> int:
139
- targets = [
140
- ("davinci-mcp-server", "mcp_server.py"),
141
- ("davinci-mcp", "main.py"),
142
- ]
143
-
144
- results: list[tuple[str, bool]] = []
145
- for name, script in targets:
146
- results.append((name, build_target(name, script)))
147
-
148
- print(f"\n{'=' * 60}")
149
- print(" Build Summary")
150
- print(f"{'=' * 60}")
151
- for name, ok in results:
152
- tag = "[OK] " if ok else "[FAILED]"
153
- print(f" {tag} dist/{name}/")
154
-
155
- if all(ok for _, ok in results):
156
- print(f"\nExecutables are inside their respective dist/ subdirectories.")
157
- if sys.platform == "win32":
158
- print(" dist/davinci-mcp-server/davinci-mcp-server.exe")
159
- print(" dist/davinci-mcp/davinci-mcp.exe")
160
- else:
161
- print(" dist/davinci-mcp-server/davinci-mcp-server")
162
- print(" dist/davinci-mcp/davinci-mcp")
163
- return 0
164
-
165
- return 1
166
-
167
-
168
- if __name__ == "__main__":
169
- sys.exit(main())
@@ -1,11 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "davinci-resolve": {
4
- "name": "DaVinci MCP Professional",
5
- "command": "/path/to/repo/.venv/bin/python",
6
- "args": ["/path/to/repo/mcp_server.py"],
7
- "_comment_windows": "On Windows use .venv\\Scripts\\python.exe",
8
- "_comment_uv": "Run 'uv venv && uv sync' in the repo to create .venv"
9
- }
10
- }
11
- }
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Single source of truth for CI/code-quality checks.
3
- # Invoked locally by hooks/pre-push (blocking) and by .github/workflows/ci.yml
4
- # (confirmation only) — both run this exact script so local and CI cannot drift.
5
- set -e
6
-
7
- uv sync
8
-
9
- echo "Running tests..."
10
- uv run pytest
11
-
12
- echo "Running pyright..."
13
- uv run pyright
14
-
15
- echo "Linting with Ruff..."
16
- uv run ruff check src/
17
- uv run ruff format src/ --check
18
-
19
- echo "Security vulnerability scan (safety)..."
20
- uv run safety check --json || echo "Safety check completed with warnings"
21
-
22
- echo "SAST with Bandit..."
23
- uv run bandit -r src/ -f json -o bandit-report.json || echo "Bandit scan completed"
24
-
25
- echo "License compliance check..."
26
- uv run pip-licenses --format=json --output-file=licenses.json
27
- echo "License compliance check completed"
28
-
29
- echo "ci-check passed."
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env bash
2
- # pre-push: local CI/CD gate + informational security review
3
- #
4
- # 1. hooks/ci-check.sh — same checks as .github/workflows/ci.yml.
5
- # BLOCKING: push aborts on failure. Local pass should reliably predict
6
- # the CI verdict for the same commit; GitHub Actions runs are
7
- # confirmation, not discovery.
8
- # 2. Claude Code security review — semantic, informational only.
9
- # Findings are advisory; review them but they do not block the push.
10
-
11
- set -e
12
-
13
- echo "Running local CI checks (hooks/ci-check.sh)..."
14
- bash hooks/ci-check.sh
15
-
16
- echo ""
17
- echo "Local CI checks passed."
18
- echo ""
19
-
20
- if ! command -v claude >/dev/null 2>&1; then
21
- echo "Claude Code not installed. Skipping security review."
22
- echo " Install from: https://claude.ai/download"
23
- exit 0
24
- fi
25
-
26
- if [ ! -f ".claude/commands/security-review.md" ]; then
27
- echo ".claude/commands/security-review.md not found. Skipping security review."
28
- exit 0
29
- fi
30
-
31
- DIFF=$(git diff --merge-base origin/HEAD 2>/dev/null || git diff HEAD~1 2>/dev/null)
32
-
33
- if [ -z "$DIFF" ]; then
34
- echo "No changes to review."
35
- exit 0
36
- fi
37
-
38
- echo "Running security review..."
39
- PROMPT="$(cat .claude/commands/security-review.md)
40
-
41
- DIFF:"
42
- printf '%s\n%s\n' "$PROMPT" "$DIFF" | claude -p 2>&1 || echo "Security review failed to run (non-blocking)."
43
-
44
- echo ""
45
- echo "Security review complete. Address any findings above before pushing."
46
- exit 0
@@ -1,40 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Main entry point for DaVinci Resolve MCP Server.
4
- """
5
-
6
- import os
7
- import sys
8
- import subprocess
9
- from pathlib import Path
10
-
11
- # Get the current directory and virtual environment
12
- current_dir = Path(__file__).parent
13
- venv_dir = current_dir / ".venv"
14
-
15
- # Check if we're in the virtual environment (skip when running as a frozen executable)
16
- if not getattr(sys, 'frozen', False) and not hasattr(sys, 'real_prefix') and not (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
17
- # Not in virtual environment, run with the venv python
18
- if os.name == "nt": # Windows
19
- venv_python = venv_dir / "Scripts" / "python.exe"
20
- else: # macOS/Linux
21
- venv_python = venv_dir / "bin" / "python"
22
-
23
- if venv_python.exists():
24
- print(f"Starting with virtual environment: {venv_python}")
25
- # Re-run this script with the virtual environment Python
26
- result = subprocess.run([str(venv_python), __file__] + sys.argv[1:], check=False)
27
- sys.exit(result.returncode)
28
- else:
29
- print(f"Virtual environment not found at {venv_dir}")
30
- print("Please run 'python setup.py' first")
31
- sys.exit(1)
32
-
33
- # Add the src directory to Python path
34
- src_dir = current_dir / "src"
35
- sys.path.insert(0, str(src_dir))
36
-
37
- from davinci_mcp.cli import main
38
-
39
- if __name__ == "__main__":
40
- main()
@@ -1,30 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Pure MCP server entry point for DaVinci Resolve.
4
- This version outputs no console messages - only JSON-RPC.
5
- """
6
-
7
- import asyncio
8
- import sys
9
- import os
10
- from pathlib import Path
11
-
12
- # Add the src directory to Python path
13
- current_dir = Path(__file__).parent
14
- src_dir = current_dir / "src"
15
- sys.path.insert(0, str(src_dir))
16
-
17
- from davinci_mcp.server import DaVinciMCPServer
18
-
19
- async def main():
20
- """Run the MCP server with no console output."""
21
- server = DaVinciMCPServer()
22
- await server.run()
23
-
24
- if __name__ == "__main__":
25
- # Suppress all output except JSON-RPC
26
- try:
27
- asyncio.run(main())
28
- except Exception:
29
- # Exit silently on any error to avoid polluting JSON-RPC
30
- sys.exit(1)