@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
@@ -0,0 +1,227 @@
1
+ #!/usr/bin/env node
2
+ // Remove AOS from this machine.
3
+ //
4
+ // aos-uninstall what AOS installed; your data stays
5
+ // aos-uninstall --purge also the memory store, wikis and credentials
6
+ // aos-uninstall --dry-run list everything, delete nothing
7
+ // aos-uninstall --yes skip the confirmations (CI only)
8
+ //
9
+ // The file-level install manifest records every path AOS wrote together with
10
+ // the sha256 it wrote. That is what makes a precise uninstall possible: a file
11
+ // still matching its recorded hash is ours and untouched, so it goes; a file
12
+ // that differs was edited after installation and is backed up rather than
13
+ // deleted; a file with no manifest entry was never ours and is not considered
14
+ // at all.
15
+
16
+ import { readFileSync, existsSync, rmSync, copyFileSync, readdirSync, statSync, writeFileSync } from 'node:fs';
17
+ import { execFileSync } from 'node:child_process';
18
+ import { createHash } from 'node:crypto';
19
+ import { createInterface } from 'node:readline/promises';
20
+ import os from 'node:os';
21
+ import path from 'node:path';
22
+
23
+ const HOME = os.homedir();
24
+ const h = (...p) => path.join(HOME, ...p);
25
+ const tilde = (p) => p.replace(HOME, '~');
26
+
27
+ const PURGE = process.argv.includes('--purge');
28
+ const DRY = process.argv.includes('--dry-run');
29
+ const YES = process.argv.includes('--yes');
30
+
31
+ const MANIFEST = h('.agents', '.bdb-install-manifest.json');
32
+
33
+ // Machine-global state AOS creates but does not own the contents of. Removed
34
+ // only under --purge, and each is named individually before anything happens —
35
+ // losing a memory store to a flag nobody read would be unforgivable.
36
+ const DATA_PATHS = [
37
+ { path: h('.MemBDB'), what: 'memB memory store — every memory on this machine' },
38
+ { path: h('.openwiki'), what: 'OpenWiki credentials, daemon config and the watch list' },
39
+ { path: h('.synapse'), what: 'Synapse logs and reports' },
40
+ { path: h('.memb'), what: 'memB WebUI logs' },
41
+ { path: h('.ao'), what: 'AO Orchestrator logs' },
42
+ ];
43
+
44
+ const AGENTS = [
45
+ 'com.bdb.memb.webui', 'com.bdb.synapse', 'com.bdb.openwiki.daemon',
46
+ 'com.bdb.ao.daemon', 'com.bdb.agent-workspace', 'com.hybridlabor.bdb-remote',
47
+ ];
48
+
49
+ const MODULE_DIRS = ['memB', 'bdb-synapse', 'bdb-os-remote', 'bdb-dev-creator-extension',
50
+ 'bdb-dev-tool-installer',
51
+ 'bdb-agent-orchestrator', // AO
52
+ 'bdb-os-agent-workspace', // AO's archived predecessor, if still lying around
53
+ ].map((m) => h('.agents', m));
54
+
55
+ const sha256 = (file) => {
56
+ try { return createHash('sha256').update(readFileSync(file)).digest('hex'); }
57
+ catch { return null; }
58
+ };
59
+
60
+ // --------------------------------------------------------------------- plan
61
+ function plan() {
62
+ const manifest = (() => {
63
+ try { return JSON.parse(readFileSync(MANIFEST, 'utf8')); } catch { return null; }
64
+ })();
65
+
66
+ const ours = []; // matches its recorded hash — delete
67
+ const edited = []; // differs — back up, then delete
68
+ const gone = []; // already absent
69
+
70
+ for (const [p, entry] of Object.entries(manifest || {})) {
71
+ if (!existsSync(p)) { gone.push(p); continue; }
72
+ (sha256(p) === entry.sha256 ? ours : edited).push(p);
73
+ }
74
+
75
+ const agents = AGENTS
76
+ .map((label) => ({ label, plist: h('Library', 'LaunchAgents', `${label}.plist`) }))
77
+ .filter((a) => existsSync(a.plist));
78
+
79
+ const modules = MODULE_DIRS.filter(existsSync);
80
+ const data = PURGE ? DATA_PATHS.filter((d) => existsSync(d.path)) : [];
81
+
82
+ return { manifest, ours, edited, gone, agents, modules, data };
83
+ }
84
+
85
+ function describe(p) {
86
+ const { manifest, ours, edited, gone, agents, modules, data } = p;
87
+
88
+ if (!manifest) {
89
+ console.log('Kein Installations-Manifest unter ' + tilde(MANIFEST) + '.');
90
+ console.log('Ohne das lässt sich nicht sagen, welche Datei von AOS stammt — es wird nichts gelöscht.');
91
+ console.log('Betroffen wären sonst: ~/.claude/skills, ~/.gemini/config/skills, ~/.codex/skills, ~/.agents/');
92
+ return false;
93
+ }
94
+
95
+ console.log(`\nManifest: ${Object.keys(manifest).length} Dateien erfasst`);
96
+ console.log(` ${String(ours.length).padStart(5)} unverändert seit der Installation → werden entfernt`);
97
+ console.log(` ${String(edited.length).padStart(5)} nach der Installation bearbeitet → erst .bak, dann entfernt`);
98
+ console.log(` ${String(gone.length).padStart(5)} bereits nicht mehr vorhanden`);
99
+
100
+ if (edited.length) {
101
+ console.log('\n bearbeitet:');
102
+ for (const f of edited.slice(0, 8)) console.log(` ${tilde(f)}`);
103
+ if (edited.length > 8) console.log(` … und ${edited.length - 8} weitere`);
104
+ }
105
+
106
+ if (agents.length) {
107
+ console.log(`\nHintergrunddienste (${agents.length}): ${agents.map((a) => a.label).join(', ')}`);
108
+ }
109
+ if (modules.length) {
110
+ console.log('\nModule:');
111
+ for (const m of modules) console.log(` ${tilde(m)}`);
112
+ }
113
+
114
+ console.log('\nBleibt erhalten:');
115
+ if (!PURGE) for (const d of DATA_PATHS.filter((d) => existsSync(d.path))) console.log(` ${tilde(d.path).padEnd(18)} ${d.what}`);
116
+ console.log(' jede Datei ohne Manifest-Eintrag — eigene Skills, fremde Hooks, alles Selbstgeschriebene');
117
+
118
+ if (data.length) {
119
+ console.log('\n\x1b[31mWIRD GELÖSCHT (--purge):\x1b[0m');
120
+ for (const d of data) {
121
+ let size = '';
122
+ try { size = ` (${(dirSize(d.path) / 1e6).toFixed(1)} MB)`; } catch { /* unreadable */ }
123
+ console.log(` \x1b[31m${tilde(d.path).padEnd(18)}\x1b[0m ${d.what}${size}`);
124
+ }
125
+ }
126
+ return true;
127
+ }
128
+
129
+ function dirSize(p) {
130
+ let total = 0;
131
+ const walk = (d) => {
132
+ for (const e of readdirSync(d, { withFileTypes: true })) {
133
+ const f = path.join(d, e.name);
134
+ try { e.isDirectory() ? walk(f) : (total += statSync(f).size); } catch { /* raced */ }
135
+ }
136
+ };
137
+ try { statSync(p).isDirectory() ? walk(p) : (total = statSync(p).size); } catch { /* gone */ }
138
+ return total;
139
+ }
140
+
141
+ // ------------------------------------------------------------------ execute
142
+ function execute(p) {
143
+ const { ours, edited, agents, modules, data } = p;
144
+ const stamp = new Date().toISOString().replace(/[:.]/g, '').slice(0, 15);
145
+ let removed = 0, backed = 0;
146
+
147
+ for (const a of agents) {
148
+ try { execFileSync('launchctl', ['unload', a.plist], { stdio: 'ignore' }); } catch { /* not loaded */ }
149
+ try { rmSync(a.plist); } catch { /* already gone */ }
150
+ }
151
+ if (agents.length) console.log(` ${agents.length} Dienste gestoppt und entfernt`);
152
+
153
+ for (const f of edited) {
154
+ try { copyFileSync(f, `${f}.${stamp}.bak`); backed++; } catch { /* unreadable */ }
155
+ }
156
+ for (const f of [...ours, ...edited]) {
157
+ try { rmSync(f); removed++; } catch { /* already gone */ }
158
+ }
159
+ console.log(` ${removed} Dateien entfernt, ${backed} vorher gesichert`);
160
+
161
+ for (const m of modules) { try { rmSync(m, { recursive: true, force: true }); } catch { /* in use */ } }
162
+ if (modules.length) console.log(` ${modules.length} Module entfernt`);
163
+
164
+ // Only the BDB hook entries leave settings.json; everything else in it is
165
+ // the user's and must survive an uninstall exactly as it survives an install.
166
+ const settings = h('.claude', 'settings.json');
167
+ if (existsSync(settings)) {
168
+ try {
169
+ const s = JSON.parse(readFileSync(settings, 'utf8'));
170
+ const bdb = ['go-gate.mjs', 'graph-gate.mjs', 'memb-inject.mjs'];
171
+ let touched = false;
172
+ for (const [event, entries] of Object.entries(s.hooks || {})) {
173
+ const kept = entries.filter((e) => !(e.hooks || []).some((x) => bdb.some((n) => String(x.command).includes(n))));
174
+ if (kept.length !== entries.length) { touched = true; s.hooks[event] = kept; }
175
+ if (!kept.length) delete s.hooks[event];
176
+ }
177
+ if (touched) {
178
+ writeFileSync(settings, JSON.stringify(s, null, 2) + '\n');
179
+ console.log(' BDB-Hooks aus settings.json entfernt, alles andere unverändert');
180
+ }
181
+ } catch { console.log(' settings.json nicht lesbar — von Hand prüfen'); }
182
+ }
183
+
184
+ for (const d of data) {
185
+ try { rmSync(d.path, { recursive: true, force: true }); console.log(` \x1b[31mgelöscht:\x1b[0m ${tilde(d.path)}`); }
186
+ catch (e) { console.log(` konnte ${tilde(d.path)} nicht löschen: ${e.message}`); }
187
+ }
188
+
189
+ for (const f of [MANIFEST, h('.agents', '.bdb-manifest.json')]) {
190
+ try { rmSync(f); } catch { /* already gone */ }
191
+ }
192
+ }
193
+
194
+ // ---------------------------------------------------------------------- main
195
+ const ask = async (q) => {
196
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
197
+ const a = (await rl.question(q)).trim();
198
+ rl.close();
199
+ return a;
200
+ };
201
+
202
+ const p = plan();
203
+ console.log(PURGE ? '\x1b[31mAOS UNINSTALL — PURGE\x1b[0m' : 'AOS Uninstall');
204
+ if (!describe(p)) process.exit(1);
205
+
206
+ if (DRY) {
207
+ console.log('\n[dry-run] Es wurde nichts verändert.');
208
+ process.exit(0);
209
+ }
210
+
211
+ if (!YES) {
212
+ if ((await ask('\nFortfahren? [ja/nein] ')).toLowerCase() !== 'ja') {
213
+ console.log('Abgebrochen. Nichts verändert.');
214
+ process.exit(0);
215
+ }
216
+ if (PURGE) {
217
+ console.log('\n\x1b[31mDer zweite Schritt löscht das Gedächtnis und die Zugangsdaten unwiderruflich.\x1b[0m');
218
+ if ((await ask('Zum Bestätigen PURGE eingeben: ')).trim() !== 'PURGE') {
219
+ console.log('Abgebrochen. Nichts verändert.');
220
+ process.exit(0);
221
+ }
222
+ }
223
+ }
224
+
225
+ console.log('');
226
+ execute(p);
227
+ console.log('\nFertig. Neu einrichten mit: npx -y @hybridlabor-api/aos@latest');
@@ -0,0 +1,114 @@
1
+ # Audit 2026-09-13/14 — the "reports success, does nothing" family
2
+
3
+ Every defect below was found in one session, and they are all the same shape:
4
+ **a component reports a state it is not in.** Not crashes, not exceptions — a
5
+ clean run, a green check, and nothing actually delivered. That is why they
6
+ survived so many releases: the installer's own output said it worked.
7
+
8
+ Read this before adding a check anywhere in this repo. The question that
9
+ catches this family is not "does the check pass" but **"does the check measure
10
+ the thing, or something the tool itself produced?"**
11
+
12
+ Numbers here are measurements taken on one machine on 2026-09-13/14; they are
13
+ evidence for the defect, not invariants.
14
+
15
+ ---
16
+
17
+ ## Fixed and tested
18
+
19
+ | # | Defect | Why it was invisible |
20
+ |---|---|---|
21
+ | 1 | `runQuickUpdate()` delivered no harness files — hooks, dispatcher workflows, compiled subagents, `GEMINI.md` | Quick Update is what an existing install is offered. Everything `injectHarnessRules()` does was fresh-install-only, so machines kept first-install agent definitions forever. Fixed once for hooks in 4.4.1; the rest recurred one layer up |
22
+ | 2 | `memb-inject.mjs` imported `node:sqlite` at top level, outside its own `try` | The file documents itself as fail-open. A top-level import that throws escapes the `try`, so a Node without unflagged `node:sqlite` got a hook error on every prompt |
23
+ | 3 | The same hook read `project_id` from `$.metadata.project_id` | memB stores it at the payload top level. The lookup matched nothing, ever — the injected block rendered as `- None` and nobody read it as a bug |
24
+ | 4 | `resolveFileConflict()` skipped files whose content it did not recognise | Only ever called for paths the payload owns, so "unknown content" almost always meant *our own older file*. Bootstrap adoption catches only byte-identical files, so anything changed in between froze permanently. 50 files on one machine, the oldest untouched since July |
25
+ | 5 | `detectPlatforms()` tested for config directories | `syncSkillsToGlobalHarnesses()` and `universalHarnessSync()` create those directories. The detector read back evidence the installer had planted: 7 harnesses reported, 5 installed |
26
+ | 6 | `tar -xzf` unpacked module updates over the installed tree | A merge, not a replacement. Files the new version dropped stayed forever while `package.json` reported the module current |
27
+ | 7 | Seven call sites ignored `downloadOrUpdateModule()`'s `false` | A failed download fell through into venv setup and daemon registration, and the run still ended in a success banner |
28
+ | 8 | A failed `npm view` was swallowed | Every module read "up to date" indefinitely on an offline or proxied machine, indistinguishable from a real answer |
29
+ | 9 | The Agent Workspace printed its WebUI URL unconditionally | Directly under a warning that the port had not answered, and on Linux where no daemon is registered at all |
30
+ | 10 | `--dry-run` created a venv | The global `fs.*` dry-run patch does not cover child processes; `uv venv` ran for real |
31
+ | 11 | A second run overwrote the first `.bak` | Backups were not timestamped, so the recovery copy was destroyed by the act of recovering |
32
+ | 12 | AO's LaunchAgent ran the binary with no subcommand | Bare `ao` prints help and exits; with `KeepAlive` launchd restarted it until throttled. On every machine that installed AO through AOS the daemon never ran — it only looked installed |
33
+ | 13 | AO pointed at `@hybridlabor-api/bdb-os-agent-workspace` | That repository is archived and its last npm release predates the archiving, so installing it hands out the build with the CDC loop defect |
34
+ | 14 | There was no uninstall | "Remove and reinstall cleanly" was not possible, which also makes a genuine fresh-install test impossible |
35
+ | 15 | The OpenWiki daemon discovered nothing | `get_projects()` seeded a list with one entry and read it back unchanged forever. 31 wikis existed, 3 were refreshed, the oldest untouched since 23 July |
36
+ | 16 | No repository had a `.openwikiignore` | OpenWiki's `load()` falls back to `parse("")` — with no file it loads **zero** rules and indexes `.venv`, build output and its own `.openwiki/` recursively. Measured on one repo: 33 of 145 graph nodes were junk, 0 false positives after applying the template |
37
+
38
+ `tests/installer-e2e.sh` covers 18 of these against a throwaway `$HOME`. It is
39
+ deliberately outside `npm test` — real network, minutes to run — and belongs
40
+ before a release. The unit tests cover the logic; this covers whether the
41
+ installer does anything at all.
42
+
43
+ ---
44
+
45
+ ## Found, not yet fixed
46
+
47
+ **Operational data one publish away from the public package — corrected.**
48
+ `mcps/bdb-remoteos-mcp/queue.db` holds 134 real approval rows and `npm pack`
49
+ included it. The first reading of this was that it had already shipped. That
50
+ was wrong, and the correction matters more than the original claim: the
51
+ published tarballs for 4.2.0, 4.3.0, 4.4.0 and 4.4.1 were each downloaded and
52
+ searched, and every one contains zero matches for `queue.db` and `.pyc`. The
53
+ file has never been in git; it is created at runtime by the MCP, so a release
54
+ built from a clean checkout cannot contain it. A release published from a
55
+ development machine would have — which is exactly what 4.4.2 was going to be.
56
+
57
+ So this was a near miss, not a leak, and the lesson is about the check rather
58
+ than the defect: `npm pack --dry-run` on a working tree answers "what would
59
+ ship from *here*", which is not the same question as "what did ship". Only the
60
+ published tarball answers the second one. Both fixes stay: the negation inside
61
+ `files` (`.npmignore` has no effect on a path `files` includes wholesale), and
62
+ `.gitignore`, so neither the store nor its `-shm`/`-wal` siblings can enter
63
+ either channel from any machine.
64
+
65
+ **~46 MB that has never worked.** `tdmcp`, `touchdesigner-mcp` and `unreal_mcp`
66
+ declare `main` as `dist/index.js`; `dist/` is in no tarball. It exists only if
67
+ `npm run build` succeeds at install time, and that result is discarded — so the
68
+ MCP config is written pointing at files that were never produced.
69
+
70
+ **A smoke test that is theatre.** Four of the six Python MCP prewarm entries
71
+ call `uv -m mcp_server --help` without the required `run` subcommand. They fail
72
+ before `uv` reaches the script, `stdio` is `ignore`, and the result is
73
+ discarded.
74
+
75
+ **Hardcoded versions.** `bdb-os-remote` serves `1.0.0` from
76
+ `src/server/sse-server.js:94,189` while its manifest says 2.0.1; memB serves
77
+ `1.0.0` from `src/backend/server.py:36` against a manifest of 2.3.2.
78
+
79
+ **AO is macOS-arm64 only on npm.** The package ships one prebuilt binary. The
80
+ upstream project publishes every platform through GitHub Releases
81
+ (`darwin-arm64`, `darwin-x64`, `linux-x64` as AppImage/deb/rpm, `win32-x64.exe`)
82
+ and the fork's own `build-artifacts.yml` already produces them — only the path
83
+ into the package is missing. Separately, `bin/ao.js`'s `findBinary()` returns
84
+ the first path that *exists* without checking it can execute, so on Windows the
85
+ shim dies with an exec-format error instead of printing the hint it means to.
86
+
87
+ **12 of 187 skills are filler.** Three identical "Red Flags" lines appear in
88
+ eleven skills, one identical sentence in ten. `synapse-integration-skill` is
89
+ 23 % unique content and 72 % identical to `bdb-dev-os-skill`. `bdbsaas-ops` is
90
+ 16 lines, marked retired, and carries no commands.
91
+
92
+ ---
93
+
94
+ ## What a check has to do here
95
+
96
+ 1. **Measure the thing, not a proxy.** A port that answers is not the right
97
+ process; a directory that exists is not an installed application; a
98
+ `package.json` version is not what the running service reports.
99
+ 2. **Never read back your own writes as evidence.** If the installer creates
100
+ the path, the path proves nothing.
101
+ 3. **Distinguish "checked, fine" from "could not check."** An offline
102
+ registry must not read as up to date.
103
+ 4. **A discarded return value is a swallowed failure.** `installStep()` only
104
+ catches throws; a function that signals failure by returning `false` needs
105
+ its result read.
106
+ 5. **Every code path, not just the fresh one.** Quick Update, `--project-harness`,
107
+ `-y`, `--dry-run` and the interactive path each need the step, or the step
108
+ does not exist for the people on that path.
109
+ 6. **Ask about the artefact people actually have.** A dry run on a working tree
110
+ describes a hypothetical release from that machine. What users installed is
111
+ the published tarball, and only downloading it answers that. This rule was
112
+ added after the `queue.db` finding above was reported as a live leak on the
113
+ strength of a local `npm pack --dry-run`, and turned out on inspection of
114
+ all four published versions never to have shipped.
@@ -199,9 +199,6 @@
199
199
  |------------|-------------|
200
200
  | `bdbmediastorm` | The ultimate creative-tech and show-control brainstorming engine. Orchestrates multi-agent ideation focused on signal flow, hardware constraints, protocols, and BDB MCP integrations. Now strictly governed by the 3 Core Godmodes (engineering, ui-ux, shipping). |
201
201
  | `bdbrainstorm` | Combines multi-agent brainstorming, the /grill-me slash command, and the 3 Core Godmodes (godmode-engineering, godmode-ui-ux, godmode-shipping) to force a comprehensive, multi-agent ideation and technical design workflow. |
202
- | `bdbsaas-ops` | Retired — superseded by bdbsaashost. Use /bdbsaashost instead; this skill's content was merged there (2026-09-05, plan production_artifacts/00_execution_plan.md item B2). |
203
- | `bdbsaashost` | Use when operating the BDB Multi-Cloud Fleet. Governs Primary Compute, GCP Identity, Oracle, FastMCP SSE Gateway, 4-Eyes Approvals, agent-sudo guardrails, Incus containers, and LLDAP/Authelia identity management. |
204
- | `bdbsaastraining` | Use when onboarding or training staff on the BDB SaaS Host Engine. Guides trainees via interactive workloads (WordPress, mail, agents) through SSH 2FA, Incus, and FastMCP guardrails, culminating in a PDF certificate. |
205
202
  | `github-repo` | Standards and workflows for writing, formatting, sanitizing, and publishing high-quality GitHub repositories, complementing openwiki-skill. |
206
203
  | `memb-ingest` | Deep scan and ingest project files (.md, .json, agent.md, .openwiki) and past conversation logs into the local memB vector memory engine. |
207
204