@hybridlabor-api/aos 4.4.1 → 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 (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 +387 -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,352 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Live Review Annotation boundary probe."""
3
-
4
- from __future__ import annotations
5
-
6
- import json
7
- import platform
8
- import shutil
9
- import subprocess
10
- import sys
11
- import tempfile
12
- import time
13
- from pathlib import Path
14
- from typing import Any, Dict, Optional
15
-
16
- from src.utils.timeline_kernel_probe import ProbeRecorder, render_markdown_report, utc_timestamp
17
-
18
-
19
- def _require_success(label: str, result: Dict[str, Any]) -> Dict[str, Any]:
20
- if not isinstance(result, dict):
21
- raise AssertionError(f"{label}: expected dict, got {result!r}")
22
- if result.get("error"):
23
- raise AssertionError(f"{label}: {result['error']}")
24
- if "success" in result and result["success"] is not True:
25
- raise AssertionError(f"{label}: expected success=True, got {result!r}")
26
- return result
27
-
28
-
29
- def _record_tool_result(
30
- recorder: ProbeRecorder,
31
- category: str,
32
- name: str,
33
- result: Dict[str, Any],
34
- *,
35
- expected_boundary: bool = False,
36
- ) -> None:
37
- if not isinstance(result, dict):
38
- recorder.record(category, name, "error", details={"reason": "non-dict result", "result": repr(result)})
39
- return
40
- if result.get("error"):
41
- recorder.record(
42
- category,
43
- name,
44
- "unsupported" if expected_boundary else "error",
45
- details={"reason": result.get("error"), "expected_boundary": expected_boundary},
46
- evidence=result,
47
- )
48
- return
49
- if "success" in result and result["success"] is not True:
50
- recorder.record(
51
- category,
52
- name,
53
- "unsupported" if expected_boundary else "partially_supported",
54
- details={"reason": "success returned false", "expected_boundary": expected_boundary},
55
- evidence=result,
56
- )
57
- return
58
- recorder.record(category, name, "supported", evidence=result)
59
-
60
-
61
- def _run_ffmpeg(args: list[str]) -> None:
62
- subprocess.run(["ffmpeg", "-hide_banner", "-loglevel", "error", *args], check=True, timeout=120)
63
-
64
-
65
- def _make_synthetic_video(work_dir: Path) -> Path:
66
- video = work_dir / "review_annotation_probe.mov"
67
- _run_ffmpeg(
68
- [
69
- "-f",
70
- "lavfi",
71
- "-i",
72
- "testsrc2=size=320x180:rate=24:duration=4",
73
- "-f",
74
- "lavfi",
75
- "-i",
76
- "sine=frequency=550:sample_rate=48000:duration=4",
77
- "-shortest",
78
- "-pix_fmt",
79
- "yuv420p",
80
- "-c:v",
81
- "libx264",
82
- "-c:a",
83
- "aac",
84
- "-y",
85
- str(video),
86
- ]
87
- )
88
- return video
89
-
90
-
91
- def _first_imported_clip(imported_items):
92
- for item in imported_items or []:
93
- try:
94
- if item.GetUniqueId():
95
- return item
96
- except Exception:
97
- pass
98
- return None
99
-
100
-
101
- def run_probe(server, output_dir: Path, keep_open: bool = False) -> Dict[str, Any]:
102
- output_dir.mkdir(parents=True, exist_ok=True)
103
- work_dir = Path(tempfile.mkdtemp(prefix="mcp_review_annotation_probe_"))
104
- project_name = f"_mcp_review_annotation_probe_{int(time.time())}"
105
- timeline_name = "Review Annotation Probe Timeline"
106
- recorder = ProbeRecorder()
107
- created_project = False
108
- delete_result: Optional[Dict[str, Any]] = None
109
-
110
- metadata: Dict[str, Any] = {
111
- "title": "Review Annotation Kernel Capability Probe",
112
- "timestamp_utc": utc_timestamp(),
113
- "python": sys.version,
114
- "platform": platform.platform(),
115
- "output_dir": str(output_dir),
116
- "project_name": project_name,
117
- }
118
-
119
- try:
120
- version = _require_success("resolve_control.get_version", server.resolve_control("get_version"))
121
- metadata.update(
122
- {
123
- "product": version.get("product"),
124
- "version": version.get("version"),
125
- "version_string": version.get("version_string"),
126
- }
127
- )
128
- print(f"Connected to {metadata['product']} {metadata['version_string']}")
129
-
130
- _require_success("project_manager.create", server.project_manager("create", {"name": project_name}))
131
- created_project = True
132
- print(f"Created disposable project: {project_name}")
133
- server.resolve_control("open_page", {"page": "edit"})
134
-
135
- video = _make_synthetic_video(work_dir)
136
- metadata["synthetic_media"] = {"video": str(video)}
137
- print(f"Generated synthetic media under: {work_dir}")
138
-
139
- resolve = server.get_resolve()
140
- project = resolve.GetProjectManager().GetCurrentProject()
141
- media_pool = project.GetMediaPool()
142
- imported = media_pool.ImportMedia([str(video)]) or []
143
- clip = _first_imported_clip(imported)
144
- if not clip:
145
- raise AssertionError("Failed to import synthetic review media")
146
- clip_id = clip.GetUniqueId()
147
- metadata["clip_id"] = clip_id
148
- timeline = media_pool.CreateTimelineFromClips(timeline_name, [clip])
149
- if not timeline:
150
- raise AssertionError("Failed to create review annotation timeline")
151
- project.SetCurrentTimeline(timeline)
152
- timeline.SetCurrentTimecode("01:00:00:01")
153
- print(f"Created timeline: {timeline_name}")
154
-
155
- _record_tool_result(recorder, "capabilities", "annotation_capabilities", server.timeline_markers("annotation_capabilities"))
156
- _record_tool_result(
157
- recorder,
158
- "normalization",
159
- "normalize_marker_payload",
160
- server.timeline_markers(
161
- "normalize_marker_payload",
162
- {"frameId": "24", "color": "green", "label": "Normalized", "comment": "Payload", "customData": "normalized-24"},
163
- ),
164
- )
165
- _record_tool_result(
166
- recorder,
167
- "normalization",
168
- "invalid_color_boundary",
169
- server.timeline_markers("normalize_marker_payload", {"frame": 25, "color": "Invisible"}),
170
- expected_boundary=True,
171
- )
172
-
173
- timeline_markers = [
174
- ("add_frame", {"frame": 4, "color": "Blue", "name": "Frame", "note": "frame alias", "custom_data": "tl-frame"}),
175
- ("add_frame_id", {"frame_id": 8, "color": "Green", "name": "Frame ID", "note": "frame_id alias", "custom_data": "tl-frame-id"}),
176
- ("add_frameId", {"frameId": 12, "color": "Yellow", "name": "FrameId", "note": "frameId alias", "custom_data": "tl-frameId"}),
177
- ("add_timecode", {"timecode": "00:00:00:16", "color": "Red", "name": "Timecode", "note": "timecode alias", "custom_data": "tl-timecode"}),
178
- ("add_current_playhead", {"color": "Cyan", "name": "Current", "note": "current playhead", "custom_data": "tl-current"}),
179
- ]
180
- for name, params in timeline_markers:
181
- _record_tool_result(recorder, "timeline_markers", name, server.timeline_markers("add", params))
182
-
183
- _record_tool_result(recorder, "timeline_markers", "get_all", server.timeline_markers("get_all"))
184
- _record_tool_result(
185
- recorder,
186
- "timeline_markers",
187
- "get_by_custom_data",
188
- server.timeline_markers("get_by_custom_data", {"custom_data": "tl-frame"}),
189
- )
190
- _record_tool_result(
191
- recorder,
192
- "timeline_markers",
193
- "update_custom_data",
194
- server.timeline_markers("update_custom_data", {"frame": 4, "custom_data": "tl-frame-updated"}),
195
- )
196
- _record_tool_result(
197
- recorder,
198
- "timeline_markers",
199
- "get_custom_data",
200
- server.timeline_markers("get_custom_data", {"frame": 4}),
201
- )
202
-
203
- for index, color in enumerate(
204
- ["Blue", "Cyan", "Green", "Yellow", "Red", "Pink", "Purple", "Fuchsia", "Rose", "Lavender", "Sky", "Mint", "Lemon", "Sand", "Cocoa", "Cream"],
205
- start=40,
206
- ):
207
- _record_tool_result(
208
- recorder,
209
- "marker_colors",
210
- f"color_{color}",
211
- server.timeline_markers("add", {"frame": index, "color": color, "name": color, "custom_data": f"color-{color.lower()}"}),
212
- )
213
-
214
- _record_tool_result(
215
- recorder,
216
- "copy",
217
- "copy_timeline_to_item",
218
- server.timeline_markers(
219
- "copy_annotations",
220
- {"source": {"scope": "timeline"}, "target": {"scope": "timeline_item", "track_type": "video", "track_index": 1, "item_index": 0}},
221
- ),
222
- )
223
- _record_tool_result(
224
- recorder,
225
- "timeline_item",
226
- "sync_marker_custom_data",
227
- server.timeline_markers(
228
- "sync_marker_custom_data",
229
- {"scope": "timeline_item", "track_type": "video", "track_index": 1, "item_index": 0, "frame": 4, "custom_data": "item-synced"},
230
- ),
231
- )
232
- _record_tool_result(
233
- recorder,
234
- "timeline_item",
235
- "add_flag",
236
- server.timeline_item_markers("add_flag", {"track_type": "video", "track_index": 1, "item_index": 0, "color": "Blue"}),
237
- )
238
- _record_tool_result(
239
- recorder,
240
- "timeline_item",
241
- "get_flags",
242
- server.timeline_item_markers("get_flags", {"track_type": "video", "track_index": 1, "item_index": 0}),
243
- )
244
- _record_tool_result(
245
- recorder,
246
- "timeline_item",
247
- "set_clip_color",
248
- server.timeline_item_markers("set_clip_color", {"track_type": "video", "track_index": 1, "item_index": 0, "color": "Blue"}),
249
- )
250
- _record_tool_result(
251
- recorder,
252
- "timeline_item",
253
- "get_clip_color",
254
- server.timeline_item_markers("get_clip_color", {"track_type": "video", "track_index": 1, "item_index": 0}),
255
- )
256
-
257
- _record_tool_result(
258
- recorder,
259
- "media_pool_item",
260
- "marker_add",
261
- server.media_pool_item_markers(
262
- "add",
263
- {"clip_id": clip_id, "frame": 20, "color": "Blue", "name": "Media", "note": "media marker", "custom_data": "mpi-20"},
264
- ),
265
- )
266
- _record_tool_result(
267
- recorder,
268
- "media_pool_item",
269
- "add_flag",
270
- server.media_pool_item_markers("add_flag", {"clip_id": clip_id, "color": "Blue"}),
271
- )
272
- _record_tool_result(
273
- recorder,
274
- "media_pool_item",
275
- "set_clip_color",
276
- server.media_pool_item("set_clip_color", {"clip_id": clip_id, "color": "Blue"}),
277
- )
278
- _record_tool_result(
279
- recorder,
280
- "move",
281
- "move_media_pool_to_timeline",
282
- server.timeline_markers(
283
- "move_annotations",
284
- {"source": {"scope": "media_pool_item", "clip_id": clip_id}, "target": {"scope": "timeline"}},
285
- ),
286
- )
287
-
288
- _record_tool_result(recorder, "report", "probe_annotations", server.timeline_markers("probe_annotations"))
289
- _record_tool_result(recorder, "report", "export_review_report", server.timeline_markers("export_review_report"))
290
- _record_tool_result(recorder, "report", "annotation_boundary_report", server.timeline_markers("annotation_boundary_report"))
291
-
292
- _record_tool_result(
293
- recorder,
294
- "cleanup",
295
- "clear_timeline_item_annotations",
296
- server.timeline_markers(
297
- "clear_annotations_by_scope",
298
- {"scope": "timeline_item", "track_type": "video", "track_index": 1, "item_index": 0, "all": True, "clear_flags": True, "clear_clip_color": True},
299
- ),
300
- )
301
- _record_tool_result(
302
- recorder,
303
- "cleanup",
304
- "clear_timeline_annotations",
305
- server.timeline_markers("clear_annotations_by_scope", {"scope": "timeline", "all": True}),
306
- )
307
- _record_tool_result(
308
- recorder,
309
- "cleanup",
310
- "clear_media_pool_flags",
311
- server.media_pool_item_markers("clear_flags", {"clip_id": clip_id, "color": "Blue"}),
312
- )
313
- _record_tool_result(
314
- recorder,
315
- "cleanup",
316
- "clear_media_pool_color",
317
- server.media_pool_item("clear_clip_color", {"clip_id": clip_id}),
318
- )
319
-
320
- if keep_open:
321
- server.project_manager("save")
322
- print(f"LEFT PROJECT OPEN FOR INSPECTION: {project_name}")
323
- created_project = False
324
-
325
- finally:
326
- if created_project:
327
- server.project_manager("save")
328
- server.project_manager("close")
329
- delete_result = server.project_manager("delete", {"name": project_name})
330
- print(f"Deleted disposable project: {delete_result}")
331
-
332
- report = recorder.to_report(
333
- metadata,
334
- {
335
- "json": str(output_dir / "review-annotation-probe.json"),
336
- "markdown": str(output_dir / "review-annotation-probe.md"),
337
- },
338
- )
339
- json_path = output_dir / "review-annotation-probe.json"
340
- markdown_path = output_dir / "review-annotation-probe.md"
341
- json_path.write_text(json.dumps(report, indent=2, sort_keys=True), encoding="utf-8")
342
- markdown_path.write_text(render_markdown_report(report), encoding="utf-8")
343
- print(f"Wrote JSON report: {json_path}")
344
- print(f"Wrote Markdown report: {markdown_path}")
345
- print(f"Counts: {json.dumps(report['counts'], sort_keys=True)}")
346
- if not keep_open:
347
- shutil.rmtree(work_dir, ignore_errors=True)
348
- print(f"Removed synthetic media directory: {work_dir}")
349
-
350
- if delete_result and delete_result.get("success") is not True:
351
- raise AssertionError(f"Cleanup failed for {project_name}: {delete_result!r}")
352
- return report