@hybridlabor-api/aos 4.4.1 → 4.4.2-beta.1

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 (305) 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.md +573 -0
  20. package/README.de.md +0 -8
  21. package/README.md +0 -8
  22. package/README.pt.md +0 -8
  23. package/assets/brand/ao-ant-mark.svg +91 -0
  24. package/assets/brand/bdb-core-mark.svg +34 -0
  25. package/assets/brand/heimdall-guardian-mark.svg +16 -0
  26. package/assets/brand/memb-crystal-mark.svg +18 -0
  27. package/bin/aos-config.mjs +89 -0
  28. package/bin/aos-dashboard.mjs +608 -0
  29. package/bin/aos-uninstall.mjs +227 -0
  30. package/docs/sessions/audit-2026-09-14-silent-failures.md +114 -0
  31. package/docs/skills_table.md +0 -3
  32. package/installer.js +471 -237
  33. package/mcps/RhinoMCP/cc-plugin/.claude/settings.json +10 -0
  34. package/mcps/after-effects-mcp/build/index.js +840 -0
  35. package/mcps/after-effects-mcp/build/scripts/applyEffect.jsx +153 -0
  36. package/mcps/after-effects-mcp/build/scripts/applyEffectTemplate.jsx +218 -0
  37. package/mcps/after-effects-mcp/build/scripts/createComposition.jsx +71 -0
  38. package/mcps/after-effects-mcp/build/scripts/createShapeLayer.jsx +147 -0
  39. package/mcps/after-effects-mcp/build/scripts/createSolidLayer.jsx +114 -0
  40. package/mcps/after-effects-mcp/build/scripts/createTextLayer.jsx +115 -0
  41. package/mcps/after-effects-mcp/build/scripts/getLayerInfo.jsx +192 -0
  42. package/mcps/after-effects-mcp/build/scripts/getProjectInfo.jsx +90 -0
  43. package/mcps/after-effects-mcp/build/scripts/listCompositions.jsx +50 -0
  44. package/mcps/after-effects-mcp/build/scripts/mcp-bridge-auto.jsx +1773 -0
  45. package/mcps/after-effects-mcp/build/scripts/setLayerProperties.jsx +160 -0
  46. package/mcps/computer-use-mcp/dist/client.d.ts +150 -0
  47. package/mcps/computer-use-mcp/dist/client.js +136 -0
  48. package/mcps/computer-use-mcp/dist/entrypoint.d.ts +16 -0
  49. package/mcps/computer-use-mcp/dist/entrypoint.js +26 -0
  50. package/mcps/computer-use-mcp/dist/native.d.ts +212 -0
  51. package/mcps/computer-use-mcp/dist/native.js +50 -0
  52. package/mcps/computer-use-mcp/dist/server.d.ts +32 -0
  53. package/mcps/computer-use-mcp/dist/server.js +342 -0
  54. package/mcps/computer-use-mcp/dist/session.d.ts +101 -0
  55. package/mcps/computer-use-mcp/dist/session.js +2372 -0
  56. package/package.json +13 -4
  57. package/skills/global_config/aos-project-init/SKILL.md +97 -130
  58. package/skills/global_config/aos-project-init/assets/openwikiignore.template +62 -0
  59. package/skills/global_config/aos-project-init/scripts/aos-project-doctor.mjs +38 -1
  60. package/skills/global_config/aos-setup/SKILL.md +98 -8
  61. package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +21 -2
  62. package/skills/global_config/ask-tim/SKILL.md +2 -7
  63. package/skills/global_config/openwiki-skill/scripts/openwiki_daemon.py +65 -12
  64. package/bin/setup-saas.mjs +0 -792
  65. package/mcps/blender-mcp-server/.dockerignore +0 -19
  66. package/mcps/blender-mcp-server/.github/workflows/ci.yml +0 -67
  67. package/mcps/blender-mcp-server/.github/workflows/publish-pypi.yml +0 -54
  68. package/mcps/blender-mcp-server/CHANGELOG.md +0 -64
  69. package/mcps/blender-mcp-server/CONTRIBUTING.md +0 -107
  70. package/mcps/blender-mcp-server/Dockerfile +0 -19
  71. package/mcps/blender-mcp-server/LICENSE +0 -21
  72. package/mcps/blender-mcp-server/README.md +0 -409
  73. package/mcps/blender-mcp-server/addon/__init__.py +0 -1440
  74. package/mcps/blender-mcp-server/addon/models.py +0 -223
  75. package/mcps/blender-mcp-server/pyproject.toml +0 -120
  76. package/mcps/blender-mcp-server/scripts/blender_bridge_request.py +0 -71
  77. package/mcps/blender-mcp-server/scripts/blender_create_test_cube.py +0 -49
  78. package/mcps/blender-mcp-server/scripts/blender_scene_info.py +0 -38
  79. package/mcps/blender-mcp-server/scripts/build_addon_zip.sh +0 -29
  80. package/mcps/blender-mcp-server/scripts/demos/README.md +0 -186
  81. package/mcps/blender-mcp-server/scripts/demos/dam_break_scene.py +0 -276
  82. package/mcps/blender-mcp-server/scripts/demos/open_dam_break_gui.py +0 -33
  83. package/mcps/blender-mcp-server/scripts/demos/pipe_movement_study.py +0 -518
  84. package/mcps/blender-mcp-server/scripts/demos/pipe_pressure_failure_scene.py +0 -806
  85. package/mcps/blender-mcp-server/scripts/demos/procedural_dam_break_scene.py +0 -600
  86. package/mcps/blender-mcp-server/scripts/demos/run_dam_break.py +0 -510
  87. package/mcps/blender-mcp-server/scripts/launch_blender_gui.py +0 -41
  88. package/mcps/blender-mcp-server/scripts/library/README.md +0 -64
  89. package/mcps/blender-mcp-server/scripts/library/apply_transforms.py +0 -46
  90. package/mcps/blender-mcp-server/scripts/library/camera.py +0 -51
  91. package/mcps/blender-mcp-server/scripts/library/collections.py +0 -65
  92. package/mcps/blender-mcp-server/scripts/library/create_mesh.py +0 -41
  93. package/mcps/blender-mcp-server/scripts/library/effector.py +0 -48
  94. package/mcps/blender-mcp-server/scripts/library/fluid_domain.py +0 -80
  95. package/mcps/blender-mcp-server/scripts/library/fluid_inflow.py +0 -98
  96. package/mcps/blender-mcp-server/scripts/library/frame_range.py +0 -35
  97. package/mcps/blender-mcp-server/scripts/library/keyframes.py +0 -59
  98. package/mcps/blender-mcp-server/scripts/library/rigid_body.py +0 -52
  99. package/mcps/blender-mcp-server/scripts/library/save_blend.py +0 -40
  100. package/mcps/blender-mcp-server/scripts/server_start.sh +0 -26
  101. package/mcps/blender-mcp-server/src/blender_mcp_server/__init__.py +0 -3
  102. package/mcps/blender-mcp-server/src/blender_mcp_server/headless.py +0 -330
  103. package/mcps/blender-mcp-server/src/blender_mcp_server/server.py +0 -606
  104. package/mcps/davinci-mcp-professional/.bandit +0 -35
  105. package/mcps/davinci-mcp-professional/.claude/commands/security-review.md +0 -191
  106. package/mcps/davinci-mcp-professional/.claude/settings.json +0 -1
  107. package/mcps/davinci-mcp-professional/.editorconfig +0 -27
  108. package/mcps/davinci-mcp-professional/.gitattributes +0 -207
  109. package/mcps/davinci-mcp-professional/.github/CODEOWNERS +0 -2
  110. package/mcps/davinci-mcp-professional/.github/ISSUE_TEMPLATE/bug_report.md +0 -33
  111. package/mcps/davinci-mcp-professional/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
  112. package/mcps/davinci-mcp-professional/.github/PULL_REQUEST_TEMPLATE.md +0 -20
  113. package/mcps/davinci-mcp-professional/.github/SECURITY.md +0 -97
  114. package/mcps/davinci-mcp-professional/.github/dependabot.yml +0 -27
  115. package/mcps/davinci-mcp-professional/.github/workflows/ci.yml +0 -39
  116. package/mcps/davinci-mcp-professional/ATTRIBUTION.md +0 -4
  117. package/mcps/davinci-mcp-professional/AUTHORS.md +0 -9
  118. package/mcps/davinci-mcp-professional/BUGS.md +0 -55
  119. package/mcps/davinci-mcp-professional/CLAUDE.md +0 -229
  120. package/mcps/davinci-mcp-professional/CONTRIBUTING.md +0 -51
  121. package/mcps/davinci-mcp-professional/COPYING.md +0 -228
  122. package/mcps/davinci-mcp-professional/Doxyfile +0 -379
  123. package/mcps/davinci-mcp-professional/README.md +0 -143
  124. package/mcps/davinci-mcp-professional/SECURITY.md +0 -40
  125. package/mcps/davinci-mcp-professional/USING.md +0 -301
  126. package/mcps/davinci-mcp-professional/VERSION.md +0 -13
  127. package/mcps/davinci-mcp-professional/build.py +0 -169
  128. package/mcps/davinci-mcp-professional/claude_desktop_config_template.json +0 -11
  129. package/mcps/davinci-mcp-professional/hooks/ci-check.sh +0 -29
  130. package/mcps/davinci-mcp-professional/hooks/pre-push +0 -46
  131. package/mcps/davinci-mcp-professional/main.py +0 -40
  132. package/mcps/davinci-mcp-professional/mcp_server.py +0 -30
  133. package/mcps/davinci-mcp-professional/pyproject.toml +0 -115
  134. package/mcps/davinci-mcp-professional/security_audit.py +0 -379
  135. package/mcps/davinci-mcp-professional/src/davinci_mcp/__init__.py +0 -19
  136. package/mcps/davinci-mcp-professional/src/davinci_mcp/cli.py +0 -138
  137. package/mcps/davinci-mcp-professional/src/davinci_mcp/resolve_client.py +0 -342
  138. package/mcps/davinci-mcp-professional/src/davinci_mcp/resources/__init__.py +0 -60
  139. package/mcps/davinci-mcp-professional/src/davinci_mcp/server.py +0 -185
  140. package/mcps/davinci-mcp-professional/src/davinci_mcp/tools/__init__.py +0 -146
  141. package/mcps/davinci-mcp-professional/src/davinci_mcp/types.py +0 -125
  142. package/mcps/davinci-mcp-professional/src/davinci_mcp/utils/__init__.py +0 -19
  143. package/mcps/davinci-mcp-professional/src/davinci_mcp/utils/platform.py +0 -239
  144. package/mcps/davinci-mcp-professional/test.py +0 -186
  145. package/mcps/davinci-mcp-professional/uv.lock +0 -2073
  146. package/mcps/davinci-resolve-mcp/.claude/skills/media-analysis.md +0 -44
  147. package/mcps/davinci-resolve-mcp/.clinerules +0 -17
  148. package/mcps/davinci-resolve-mcp/.cursorrules +0 -17
  149. package/mcps/davinci-resolve-mcp/.github/copilot-instructions.md +0 -17
  150. package/mcps/davinci-resolve-mcp/.github/workflows/npm-publish.yml +0 -109
  151. package/mcps/davinci-resolve-mcp/.windsurfrules +0 -17
  152. package/mcps/davinci-resolve-mcp/AGENTS.md +0 -114
  153. package/mcps/davinci-resolve-mcp/CHANGELOG.md +0 -2648
  154. package/mcps/davinci-resolve-mcp/CLAUDE.md +0 -15
  155. package/mcps/davinci-resolve-mcp/LICENSE +0 -21
  156. package/mcps/davinci-resolve-mcp/README.md +0 -173
  157. package/mcps/davinci-resolve-mcp/SECURITY.md +0 -53
  158. package/mcps/davinci-resolve-mcp/bin/davinci-resolve-mcp.mjs +0 -450
  159. package/mcps/davinci-resolve-mcp/examples/README.md +0 -53
  160. package/mcps/davinci-resolve-mcp/examples/markers/README.md +0 -81
  161. package/mcps/davinci-resolve-mcp/examples/media/README.md +0 -94
  162. package/mcps/davinci-resolve-mcp/examples/timeline/README.md +0 -98
  163. package/mcps/davinci-resolve-mcp/install.py +0 -1687
  164. package/mcps/davinci-resolve-mcp/package.json +0 -52
  165. package/mcps/davinci-resolve-mcp/release-notes/v2.22.0.md +0 -51
  166. package/mcps/davinci-resolve-mcp/release-notes/v2.23.0.md +0 -51
  167. package/mcps/davinci-resolve-mcp/release-notes/v2.23.1.md +0 -35
  168. package/mcps/davinci-resolve-mcp/release-notes/v2.24.1.md +0 -32
  169. package/mcps/davinci-resolve-mcp/scripts/audit_api_parity.py +0 -275
  170. package/mcps/davinci-resolve-mcp/scripts/audit_readwrite_symmetry.py +0 -80
  171. package/mcps/davinci-resolve-mcp/scripts/doctor.py +0 -227
  172. package/mcps/davinci-resolve-mcp/scripts/gen_api_limitations.py +0 -144
  173. package/mcps/davinci-resolve-mcp/scripts/live_media_analysis_polish_probe.py +0 -65
  174. package/mcps/davinci-resolve-mcp/scripts/measure_bridge_cost.py +0 -65
  175. package/mcps/davinci-resolve-mcp/scripts/regen_panel_screenshots.py +0 -76
  176. package/mcps/davinci-resolve-mcp/src/__init__.py +0 -3
  177. package/mcps/davinci-resolve-mcp/src/analysis_dashboard.py +0 -15505
  178. package/mcps/davinci-resolve-mcp/src/batch_cli.py +0 -540
  179. package/mcps/davinci-resolve-mcp/src/control_panel.py +0 -13
  180. package/mcps/davinci-resolve-mcp/src/granular/__init__.py +0 -17
  181. package/mcps/davinci-resolve-mcp/src/granular/common.py +0 -741
  182. package/mcps/davinci-resolve-mcp/src/granular/folder.py +0 -420
  183. package/mcps/davinci-resolve-mcp/src/granular/gallery.py +0 -306
  184. package/mcps/davinci-resolve-mcp/src/granular/graph.py +0 -309
  185. package/mcps/davinci-resolve-mcp/src/granular/media_pool.py +0 -679
  186. package/mcps/davinci-resolve-mcp/src/granular/media_pool_item.py +0 -1020
  187. package/mcps/davinci-resolve-mcp/src/granular/media_storage.py +0 -179
  188. package/mcps/davinci-resolve-mcp/src/granular/project.py +0 -1654
  189. package/mcps/davinci-resolve-mcp/src/granular/resolve_control.py +0 -538
  190. package/mcps/davinci-resolve-mcp/src/granular/timeline.py +0 -1075
  191. package/mcps/davinci-resolve-mcp/src/granular/timeline_item.py +0 -2251
  192. package/mcps/davinci-resolve-mcp/src/resolve_mcp_server.py +0 -43
  193. package/mcps/davinci-resolve-mcp/src/server.py +0 -24116
  194. package/mcps/davinci-resolve-mcp/src/utils/__init__.py +0 -3
  195. package/mcps/davinci-resolve-mcp/src/utils/actor_identity.py +0 -46
  196. package/mcps/davinci-resolve-mcp/src/utils/analysis_caps.py +0 -678
  197. package/mcps/davinci-resolve-mcp/src/utils/analysis_memory.py +0 -755
  198. package/mcps/davinci-resolve-mcp/src/utils/analysis_runs.py +0 -307
  199. package/mcps/davinci-resolve-mcp/src/utils/analysis_store.py +0 -945
  200. package/mcps/davinci-resolve-mcp/src/utils/api_truth.py +0 -525
  201. package/mcps/davinci-resolve-mcp/src/utils/app_control.py +0 -319
  202. package/mcps/davinci-resolve-mcp/src/utils/audio_fairlight_live_probe.py +0 -263
  203. package/mcps/davinci-resolve-mcp/src/utils/brain_edits.py +0 -387
  204. package/mcps/davinci-resolve-mcp/src/utils/bridge_metrics.py +0 -76
  205. package/mcps/davinci-resolve-mcp/src/utils/cdl.py +0 -20
  206. package/mcps/davinci-resolve-mcp/src/utils/clip_query.py +0 -85
  207. package/mcps/davinci-resolve-mcp/src/utils/cloud_operations.py +0 -192
  208. package/mcps/davinci-resolve-mcp/src/utils/color_grade_live_probe.py +0 -444
  209. package/mcps/davinci-resolve-mcp/src/utils/contracts.py +0 -102
  210. package/mcps/davinci-resolve-mcp/src/utils/cut_ir.py +0 -115
  211. package/mcps/davinci-resolve-mcp/src/utils/dctl_templates.py +0 -368
  212. package/mcps/davinci-resolve-mcp/src/utils/deep_vision.py +0 -643
  213. package/mcps/davinci-resolve-mcp/src/utils/destructive_hook.py +0 -606
  214. package/mcps/davinci-resolve-mcp/src/utils/edit_engine.py +0 -737
  215. package/mcps/davinci-resolve-mcp/src/utils/embeddings.py +0 -922
  216. package/mcps/davinci-resolve-mcp/src/utils/entities.py +0 -579
  217. package/mcps/davinci-resolve-mcp/src/utils/extension_authoring_live_probe.py +0 -292
  218. package/mcps/davinci-resolve-mcp/src/utils/failure_tracker.py +0 -119
  219. package/mcps/davinci-resolve-mcp/src/utils/fuse_templates.py +0 -1968
  220. package/mcps/davinci-resolve-mcp/src/utils/fusion_composition_live_probe.py +0 -284
  221. package/mcps/davinci-resolve-mcp/src/utils/fusion_group_settings.py +0 -334
  222. package/mcps/davinci-resolve-mcp/src/utils/layout_presets.py +0 -333
  223. package/mcps/davinci-resolve-mcp/src/utils/mcp_stdio.py +0 -32
  224. package/mcps/davinci-resolve-mcp/src/utils/mcp_transport.py +0 -128
  225. package/mcps/davinci-resolve-mcp/src/utils/media_analysis.py +0 -7690
  226. package/mcps/davinci-resolve-mcp/src/utils/media_analysis_jobs.py +0 -805
  227. package/mcps/davinci-resolve-mcp/src/utils/media_pool_changes.py +0 -121
  228. package/mcps/davinci-resolve-mcp/src/utils/media_pool_ingest_live_probe.py +0 -592
  229. package/mcps/davinci-resolve-mcp/src/utils/multicam.py +0 -393
  230. package/mcps/davinci-resolve-mcp/src/utils/object_inspection.py +0 -301
  231. package/mcps/davinci-resolve-mcp/src/utils/page_lock.py +0 -75
  232. package/mcps/davinci-resolve-mcp/src/utils/platform.py +0 -157
  233. package/mcps/davinci-resolve-mcp/src/utils/proc.py +0 -26
  234. package/mcps/davinci-resolve-mcp/src/utils/project_cleanup.py +0 -73
  235. package/mcps/davinci-resolve-mcp/src/utils/project_lifecycle_live_probe.py +0 -376
  236. package/mcps/davinci-resolve-mcp/src/utils/project_lint.py +0 -131
  237. package/mcps/davinci-resolve-mcp/src/utils/project_properties.py +0 -601
  238. package/mcps/davinci-resolve-mcp/src/utils/project_spec.py +0 -459
  239. package/mcps/davinci-resolve-mcp/src/utils/readback.py +0 -91
  240. package/mcps/davinci-resolve-mcp/src/utils/render_deliver_live_probe.py +0 -384
  241. package/mcps/davinci-resolve-mcp/src/utils/resolve_ai_governance.py +0 -214
  242. package/mcps/davinci-resolve-mcp/src/utils/resolve_ai_ledger.py +0 -244
  243. package/mcps/davinci-resolve-mcp/src/utils/resolve_busy.py +0 -171
  244. package/mcps/davinci-resolve-mcp/src/utils/resolve_connection.py +0 -77
  245. package/mcps/davinci-resolve-mcp/src/utils/review_annotation_live_probe.py +0 -352
  246. package/mcps/davinci-resolve-mcp/src/utils/script_templates.py +0 -1193
  247. package/mcps/davinci-resolve-mcp/src/utils/shot_relationships.py +0 -544
  248. package/mcps/davinci-resolve-mcp/src/utils/structural_diff.py +0 -175
  249. package/mcps/davinci-resolve-mcp/src/utils/sync_detection.py +0 -889
  250. package/mcps/davinci-resolve-mcp/src/utils/timeline_brain_db.py +0 -826
  251. package/mcps/davinci-resolve-mcp/src/utils/timeline_conform_live_probe.py +0 -280
  252. package/mcps/davinci-resolve-mcp/src/utils/timeline_kernel_live_probe.py +0 -1092
  253. package/mcps/davinci-resolve-mcp/src/utils/timeline_kernel_probe.py +0 -185
  254. package/mcps/davinci-resolve-mcp/src/utils/timeline_title_text.py +0 -87
  255. package/mcps/davinci-resolve-mcp/src/utils/timeline_versioning.py +0 -730
  256. package/mcps/davinci-resolve-mcp/src/utils/update_check.py +0 -685
  257. package/mcps/vectorworks-mcp/.dockerignore +0 -8
  258. package/mcps/vectorworks-mcp/Dockerfile +0 -28
  259. package/mcps/vectorworks-mcp/README.md +0 -156
  260. package/mcps/vectorworks-mcp/app/__init__.py +0 -2
  261. package/mcps/vectorworks-mcp/app/api.py +0 -52
  262. package/mcps/vectorworks-mcp/app/chunking.py +0 -56
  263. package/mcps/vectorworks-mcp/app/config.py +0 -29
  264. package/mcps/vectorworks-mcp/app/embeddings.py +0 -28
  265. package/mcps/vectorworks-mcp/app/indexer.py +0 -106
  266. package/mcps/vectorworks-mcp/app/main.py +0 -33
  267. package/mcps/vectorworks-mcp/app/mcp_server.py +0 -71
  268. package/mcps/vectorworks-mcp/app/search.py +0 -54
  269. package/mcps/vectorworks-mcp/app/utils.py +0 -14
  270. package/mcps/vectorworks-mcp/data/.gitkeep +0 -1
  271. package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_PluginScript.htm +0 -95
  272. package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_ScriptEditor.htm +0 -266
  273. package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_Scripting.htm +0 -106
  274. package/mcps/vectorworks-mcp/data/vw-app-help/VW2023_CreatingScriptedPlugins.htm +0 -327
  275. package/mcps/vectorworks-mcp/data/vw-app-help/VW2024_RunningScripts.htm +0 -116
  276. package/mcps/vectorworks-mcp/data/vw-devwiki/VS_Function_Reference_category.html +0 -2129
  277. package/mcps/vectorworks-mcp/data/vw-jp-ref/ObjectsSymbols.html +0 -2035
  278. package/mcps/vectorworks-mcp/data/vw-jp-ref/ScriptFunctionReference.html +0 -29
  279. package/mcps/vectorworks-mcp/design.md +0 -57
  280. package/mcps/vectorworks-mcp/docker-compose.yml +0 -18
  281. package/mcps/vectorworks-mcp/index/.gitkeep +0 -1
  282. package/mcps/vectorworks-mcp/index/meta.jsonl +0 -3956
  283. package/mcps/vectorworks-mcp/index/vw.faiss +0 -0
  284. package/mcps/vectorworks-mcp/requirements.txt +0 -10
  285. package/mcps/vectorworks-mcp/scripts/fetch_docs_minimal.sh +0 -84
  286. package/mcps/vectorworks-mcp/scripts/fetch_github_vectorworks.sh +0 -85
  287. package/mcps/vectorworks-mcp/templates/index.html +0 -40
  288. package/scripts/ecosystem-health-audit.js +0 -257
  289. package/skills/bdb-dev-os-skill/SKILL.md +0 -49
  290. package/skills/bdb-dev-os-skill/package.json +0 -11
  291. package/skills/bdbsaastraining/SKILL.md +0 -316
  292. package/skills/bdbsaastraining/references/exam-pool.md +0 -313
  293. package/skills/bdbsaastraining/references/interaction-modes.md +0 -94
  294. package/skills/bdbsaastraining/references/track-a-ai-agent.md +0 -111
  295. package/skills/bdbsaastraining/references/track-b-wordpress.md +0 -111
  296. package/skills/bdbsaastraining/references/track-c-mailserver.md +0 -107
  297. package/skills/bdbsaastraining/references/track-d-debian.md +0 -109
  298. package/skills/bdbsaastraining/references/track-e-custom.md +0 -83
  299. package/skills/bdbsaastraining/scripts/build_profile.py +0 -529
  300. package/skills/bdbsaastraining/scripts/generate_certificate.py +0 -161
  301. package/skills/bdbsaastraining/scripts/preflight_check.sh +0 -150
  302. package/skills/bdbsaastraining/templates/certificate_template.html +0 -508
  303. package/skills/global_config/bdb-ecosystem-health/SKILL.md +0 -68
  304. package/skills/global_config/bdbsaas-ops/SKILL.md +0 -16
  305. 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)