@inneranimalmedia/agentsam-sdk 2.6.2 → 2.6.3

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 (497) hide show
  1. package/AGENTSAM.md +45 -1
  2. package/README.md +80 -0
  3. package/apps/README.md +34 -0
  4. package/apps/cad-creator/README.md +728 -0
  5. package/apps/cad-creator/shared/cad/package.json +19 -0
  6. package/apps/cad-creator/shared/cad/src/domain/operations.ts +7 -0
  7. package/apps/cad-creator/shared/cad/src/domain/project-contract.d.ts +3 -0
  8. package/apps/cad-creator/shared/cad/src/domain/project-contract.js +75 -0
  9. package/apps/cad-creator/shared/cad/src/domain/project-tools.d.ts +1 -0
  10. package/apps/cad-creator/shared/cad/src/domain/project-tools.js +24 -0
  11. package/apps/cad-creator/shared/cad/src/domain/validation.ts +191 -0
  12. package/apps/cad-creator/shared/cad/src/index.ts +4 -0
  13. package/apps/cad-creator/shared/cad/src/robotics/types.ts +232 -0
  14. package/apps/cad-creator/shared/cad/src/types.ts +507 -0
  15. package/apps/cad-creator/shared/cad/tsconfig.json +14 -0
  16. package/docs/AUTORAG.md +58 -0
  17. package/docs/BRAND_INTELLIGENCE.md +30 -0
  18. package/docs/CLI_SHELL.md +4 -2
  19. package/docs/CMS_CONTEXTUAL_COMPOSER.md +38 -0
  20. package/docs/MERKLE.md +4 -0
  21. package/docs/PROJECT_CONFIG.md +3 -0
  22. package/docs/REPOSITORY_KNOWLEDGE.md +2 -0
  23. package/docs/THEME_REFINERY.md +120 -0
  24. package/docs/architecture/PROVIDER-TOOLS-AND-COMPACTION.md +60 -0
  25. package/docs/architecture/STORAGE.md +87 -0
  26. package/docs/cad-project-tools.md +69 -0
  27. package/docs/cms-scaffolding-pattern-reference.md +73 -0
  28. package/docs/plans/AGENTSAM-INTERACTIVE-UI-REQUIREMENTS-codex-tui-20260919.md +113 -0
  29. package/docs/plans/AGENTSAM-INTERACTIVE-UI-REQUIREMENTS.md +85 -0
  30. package/docs/plans/AGENTSAM-MCP-CLIENT-2026-09-19.md +181 -0
  31. package/docs/plans/ASBD-PORTABLE-WORKGRAPH-UI-DEFERRED.md +34 -0
  32. package/docs/plans/ASTRA-BRIEF-2026-09-18.md +258 -0
  33. package/docs/plans/MULTI-AGENT-SPRINTS-2026-09-19.md +373 -0
  34. package/docs/plans/NEXT-AGENT-HANDOFF.md +167 -0
  35. package/docs/plans/RECONCILIATION-2026-09-19.md +178 -0
  36. package/docs/plugins.md +43 -0
  37. package/docs/tools/README.md +57 -0
  38. package/docs/tools/agent-and-orchestration.md +49 -0
  39. package/docs/tools/browser-and-research.md +46 -0
  40. package/docs/tools/cloudflare-platform.md +32 -0
  41. package/docs/tools/cms.md +25 -0
  42. package/docs/tools/communications.md +41 -0
  43. package/docs/tools/database-and-storage.md +62 -0
  44. package/docs/tools/design-and-media.md +64 -0
  45. package/docs/tools/filesystem-and-code.md +55 -0
  46. package/docs/tools/github.md +56 -0
  47. package/docs/tools/integrations-and-misc.md +16 -0
  48. package/docs/tools/memory.md +21 -0
  49. package/docs/tools/terminal-and-execution.md +29 -0
  50. package/docs/tools/tickets-and-platform.md +30 -0
  51. package/migrations/d1/0001_agentsam_plugin_runtime.sql +177 -0
  52. package/migrations/d1/0002_agentsam_ticket_ownership.sql +8 -0
  53. package/migrations/d1/0002_dynamic_model_policies.sql +23 -0
  54. package/migrations/d1/0003_expand_tool_handler_families.sql +18 -0
  55. package/migrations/d1/0004_project_aware_retrieval_lanes.sql +24 -0
  56. package/migrations/d1/0005_portable_knowledge_identity.sql +104 -0
  57. package/migrations/d1/0006_repair_ops_trail_account_scope.sql +14 -0
  58. package/migrations/d1/0007_repair_ops_trail_agent_run_account.sql +13 -0
  59. package/migrations/d1/0008_backfill_knowledge_run_legacy_tenant.sql +14 -0
  60. package/migrations/d1/0009_normalize_cloudflare_plugin_installations.sql +137 -0
  61. package/migrations/runtime/0001_cli_runtime.sql +67 -0
  62. package/migrations/runtime/0002_project_sessions.sql +15 -0
  63. package/migrations/runtime/0003_provider_continuations.sql +8 -0
  64. package/package.json +92 -12
  65. package/packages/agentsam-brand/README.md +21 -0
  66. package/packages/agentsam-brand/package.json +22 -0
  67. package/packages/agentsam-brand/src/contract.js +59 -0
  68. package/packages/agentsam-brand/src/extract.js +126 -0
  69. package/packages/agentsam-brand/src/goap-actions.js +73 -0
  70. package/packages/agentsam-brand/src/index.js +48 -0
  71. package/packages/agentsam-brand/src/plan.js +115 -0
  72. package/packages/agentsam-brand/src/resolve.js +139 -0
  73. package/packages/agentsam-brand/src/scan.js +250 -0
  74. package/packages/agentsam-brand/test/brand-scan.test.mjs +106 -0
  75. package/packages/agentsam-contracts/README.md +23 -0
  76. package/packages/agentsam-contracts/package.json +32 -0
  77. package/packages/agentsam-contracts/src/adapter.ts +25 -0
  78. package/packages/agentsam-contracts/src/agent.ts +35 -0
  79. package/packages/agentsam-contracts/src/artifacts.ts +33 -0
  80. package/packages/agentsam-contracts/src/authority.ts +29 -0
  81. package/packages/agentsam-contracts/src/context.ts +16 -0
  82. package/packages/agentsam-contracts/src/errors.ts +46 -0
  83. package/packages/agentsam-contracts/src/events.ts +47 -0
  84. package/packages/agentsam-contracts/src/execution.ts +50 -0
  85. package/packages/agentsam-contracts/src/hooks.ts +40 -0
  86. package/packages/agentsam-contracts/src/identity.ts +16 -0
  87. package/packages/agentsam-contracts/src/index.ts +14 -0
  88. package/packages/agentsam-contracts/src/models.ts +9 -0
  89. package/packages/agentsam-contracts/src/providers.ts +33 -0
  90. package/packages/agentsam-contracts/src/repository.ts +64 -0
  91. package/packages/agentsam-contracts/src/tools.ts +98 -0
  92. package/packages/agentsam-contracts/test/contracts.test.mjs +16 -0
  93. package/packages/agentsam-contracts/test/errors-catalog.test.mjs +25 -0
  94. package/packages/agentsam-contracts/test/repository.test.mjs +18 -0
  95. package/packages/agentsam-contracts/tsconfig.json +12 -0
  96. package/packages/agentsam-errors/package.json +17 -0
  97. package/packages/agentsam-errors/src/adapters/anthropic.js +15 -0
  98. package/packages/agentsam-errors/src/adapters/cad.js +109 -0
  99. package/packages/agentsam-errors/src/adapters/cloudflare.js +21 -0
  100. package/packages/agentsam-errors/src/adapters/cursor.js +4 -0
  101. package/packages/agentsam-errors/src/adapters/device.js +38 -0
  102. package/packages/agentsam-errors/src/adapters/docker.js +28 -0
  103. package/packages/agentsam-errors/src/adapters/gcp.js +14 -0
  104. package/packages/agentsam-errors/src/adapters/github.js +22 -0
  105. package/packages/agentsam-errors/src/adapters/google.js +17 -0
  106. package/packages/agentsam-errors/src/adapters/index.js +55 -0
  107. package/packages/agentsam-errors/src/adapters/internal.js +40 -0
  108. package/packages/agentsam-errors/src/adapters/oauth.js +24 -0
  109. package/packages/agentsam-errors/src/adapters/openai.js +17 -0
  110. package/packages/agentsam-errors/src/adapters/process.js +35 -0
  111. package/packages/agentsam-errors/src/adapters/provider.js +114 -0
  112. package/packages/agentsam-errors/src/envelope.js +186 -0
  113. package/packages/agentsam-errors/src/error.js +24 -0
  114. package/packages/agentsam-errors/src/fingerprint.js +35 -0
  115. package/packages/agentsam-errors/src/index.js +10 -0
  116. package/packages/agentsam-errors/src/normalize.js +30 -0
  117. package/packages/agentsam-errors/src/redaction.js +52 -0
  118. package/packages/agentsam-errors/src/render.js +16 -0
  119. package/packages/agentsam-errors/src/retry.js +10 -0
  120. package/packages/agentsam-errors/src/transport.js +52 -0
  121. package/packages/agentsam-errors/src/vocabulary.js +320 -0
  122. package/packages/agentsam-errors/test/envelope.test.mjs +70 -0
  123. package/packages/agentsam-errors/test/providers.test.mjs +99 -0
  124. package/packages/agentsam-errors/test/redaction.test.mjs +21 -0
  125. package/packages/agentsam-errors/test/runtime-cad-device.test.mjs +76 -0
  126. package/packages/agentsam-errors/test/transport.test.mjs +46 -0
  127. package/packages/agentsam-knowledge/package.json +15 -0
  128. package/packages/agentsam-knowledge/src/autorag/index.js +64 -0
  129. package/packages/agentsam-knowledge/src/backends/index.js +26 -0
  130. package/packages/agentsam-knowledge/src/index.js +3 -0
  131. package/packages/agentsam-knowledge/src/providers/index.js +95 -0
  132. package/packages/agentsam-knowledge/test/autorag.test.mjs +42 -0
  133. package/packages/agentsam-nav/README.md +40 -0
  134. package/packages/agentsam-nav/dist/Nav.d.ts +43 -0
  135. package/packages/agentsam-nav/dist/NavCollapsible.d.ts +10 -0
  136. package/packages/agentsam-nav/dist/NavContent.d.ts +2 -0
  137. package/packages/agentsam-nav/dist/NavFooter.d.ts +2 -0
  138. package/packages/agentsam-nav/dist/NavGroup.d.ts +3 -0
  139. package/packages/agentsam-nav/dist/NavHeader.d.ts +2 -0
  140. package/packages/agentsam-nav/dist/NavMenu.d.ts +22 -0
  141. package/packages/agentsam-nav/dist/NavProvider.d.ts +35 -0
  142. package/packages/agentsam-nav/dist/NavTrigger.d.ts +2 -0
  143. package/packages/agentsam-nav/dist/Surfaces.d.ts +41 -0
  144. package/packages/agentsam-nav/dist/browser.d.ts +11 -0
  145. package/packages/agentsam-nav/dist/browser.global.js +132 -0
  146. package/packages/agentsam-nav/dist/browser.js +613 -0
  147. package/packages/agentsam-nav/dist/contracts.d.ts +76 -0
  148. package/packages/agentsam-nav/dist/index.d.ts +11 -0
  149. package/packages/agentsam-nav/dist/index.js +614 -0
  150. package/packages/agentsam-nav/dist/legacy.css +83 -0
  151. package/packages/agentsam-nav/dist/shell.css +113 -0
  152. package/packages/agentsam-nav/dist/theme.css +113 -0
  153. package/packages/agentsam-nav/dist/utils.d.ts +1 -0
  154. package/packages/agentsam-nav/package.json +43 -0
  155. package/packages/agentsam-queue-control/README.md +107 -0
  156. package/packages/agentsam-queue-control/package.json +31 -0
  157. package/packages/agentsam-queue-control/schemas/job-envelope.schema.json +56 -0
  158. package/packages/agentsam-queue-control/src/adapters/cloudflare.js +152 -0
  159. package/packages/agentsam-queue-control/src/adapters/memory.js +38 -0
  160. package/packages/agentsam-queue-control/src/contracts.js +130 -0
  161. package/packages/agentsam-queue-control/src/control-plane.js +141 -0
  162. package/packages/agentsam-queue-control/src/dispatch.js +43 -0
  163. package/packages/agentsam-queue-control/src/index.js +7 -0
  164. package/packages/agentsam-queue-control/src/policy.js +88 -0
  165. package/packages/agentsam-queue-control/src/topology.js +66 -0
  166. package/packages/agentsam-queue-control/test/queue-control.test.mjs +100 -0
  167. package/packages/agentsam-repository/src/goap.js +718 -0
  168. package/packages/agentsam-repository/src/goap.js.bak-20260922011251 +670 -0
  169. package/packages/agentsam-repository/src/index.js +5 -0
  170. package/packages/agentsam-repository/src/merkle/cloudflare-persistence.js +2 -2
  171. package/packages/agentsam-repository/src/tickets.js +184 -0
  172. package/packages/agentsam-repository/src/work-tracking.js +199 -0
  173. package/packages/agentsam-repository/src/workspace-state.js +176 -0
  174. package/packages/agentsam-repository/test/goap-tickets-workspace-state.test.mjs +152 -0
  175. package/packages/connectors/cloudflare/src/index.js +297 -15
  176. package/packages/connectors/cloudflare/src/owner.js +43 -40
  177. package/packages/connectors/cloudflare/src/routes.js +167 -26
  178. package/packages/connectors/cloudflare/tests/connector.test.mjs +112 -2
  179. package/packages/heuristic-theme/README.md +11 -0
  180. package/packages/heuristic-theme/package.json +25 -0
  181. package/packages/heuristic-theme/src/index.js +2 -0
  182. package/packages/heuristic-theme/src/registry.js +36 -0
  183. package/packages/heuristic-theme/src/theme.js +41 -0
  184. package/packages/heuristic-theme/test/theme.test.mjs +26 -0
  185. package/packages/identity/.agentsam/features/oauth-login-portal/agentsam.feature.json +64 -0
  186. package/packages/identity/.agentsam/features/oauth-login-portal/providers.json +96 -0
  187. package/packages/identity/.agentsam/features/oauth-login-portal/resources.json +47 -0
  188. package/packages/identity/.agentsam/features/oauth-login-portal/routes.json +74 -0
  189. package/packages/identity/.agentsam/features/oauth-login-portal/ui.json +35 -0
  190. package/packages/identity/package.json +3 -2
  191. package/packages/identity/src/adapters/cloudflare-d1/ids.js +4 -0
  192. package/packages/identity/src/adapters/cloudflare-d1/index.js +39 -1
  193. package/packages/identity/src/contracts/provider.js +3 -2
  194. package/packages/identity/src/frontend/auth-portal/pages/login.html +7 -0
  195. package/packages/identity/src/index.js +2 -0
  196. package/packages/identity/src/oauth/credentials.js +13 -0
  197. package/packages/identity/src/oauth/iam-platform.js +5 -5
  198. package/packages/identity/src/providers/cloudflare/index.js +19 -0
  199. package/packages/identity/src/providers/cloudflare/mapper.js +21 -0
  200. package/packages/identity/src/providers/cloudflare/oauth.js +48 -0
  201. package/packages/identity/src/providers/cloudflare/profile.js +28 -0
  202. package/packages/identity/src/providers/index.js +18 -2
  203. package/packages/identity/src/server/identity-service.js +13 -3
  204. package/packages/identity/src/server/worker-router.js +63 -8
  205. package/packages/identity/tests/identity-service.test.mjs +15 -0
  206. package/packages/providers/completeful/README.md +38 -0
  207. package/packages/providers/completeful/package.json +29 -0
  208. package/packages/providers/completeful/src/client.js +162 -0
  209. package/packages/providers/completeful/src/events.js +49 -0
  210. package/packages/providers/completeful/src/index.js +22 -0
  211. package/packages/providers/completeful/src/tools.js +579 -0
  212. package/packages/providers/completeful/src/webhooks.js +55 -0
  213. package/packages/providers/completeful/test/provider.test.mjs +196 -0
  214. package/packages/theme-church-site/README.md +10 -0
  215. package/packages/theme-church-site/package.json +30 -0
  216. package/packages/theme-church-site/src/harvest.json +14 -0
  217. package/packages/theme-church-site/src/index.js +84 -0
  218. package/packages/theme-church-site/test/theme.test.mjs +19 -0
  219. package/packages/theme-companions-site/README.md +10 -0
  220. package/packages/theme-companions-site/package.json +30 -0
  221. package/packages/theme-companions-site/src/harvest.json +12 -0
  222. package/packages/theme-companions-site/src/index.js +82 -0
  223. package/packages/theme-companions-site/test/theme.test.mjs +19 -0
  224. package/packages/theme-floors-site/README.md +10 -0
  225. package/packages/theme-floors-site/package.json +30 -0
  226. package/packages/theme-floors-site/src/harvest.json +14 -0
  227. package/packages/theme-floors-site/src/index.js +82 -0
  228. package/packages/theme-floors-site/test/theme.test.mjs +19 -0
  229. package/packages/theme-fuelnfree-site/README.md +10 -0
  230. package/packages/theme-fuelnfree-site/package.json +30 -0
  231. package/packages/theme-fuelnfree-site/src/harvest.json +13 -0
  232. package/packages/theme-fuelnfree-site/src/index.js +81 -0
  233. package/packages/theme-fuelnfree-site/test/theme.test.mjs +19 -0
  234. package/packages/theme-handyman-site/README.md +10 -0
  235. package/packages/theme-handyman-site/package.json +30 -0
  236. package/packages/theme-handyman-site/src/harvest.json +10 -0
  237. package/packages/theme-handyman-site/src/index.js +83 -0
  238. package/packages/theme-handyman-site/test/theme.test.mjs +19 -0
  239. package/packages/theme-insurance-site/README.md +10 -0
  240. package/packages/theme-insurance-site/package.json +30 -0
  241. package/packages/theme-insurance-site/src/harvest.json +10 -0
  242. package/packages/theme-insurance-site/src/index.js +83 -0
  243. package/packages/theme-insurance-site/test/theme.test.mjs +19 -0
  244. package/packages/theme-shinshu-site/README.md +10 -0
  245. package/packages/theme-shinshu-site/package.json +30 -0
  246. package/packages/theme-shinshu-site/src/harvest.json +12 -0
  247. package/packages/theme-shinshu-site/src/index.js +83 -0
  248. package/packages/theme-shinshu-site/test/theme.test.mjs +19 -0
  249. package/packages/work-graph/README.md +49 -0
  250. package/packages/work-graph/package.json +19 -0
  251. package/packages/work-graph/prototype/README.md +32 -0
  252. package/packages/work-graph/prototype/data/demo-workgraph.js +47 -0
  253. package/packages/work-graph/prototype/renderers/timeline-model.js +21 -0
  254. package/packages/work-graph/prototype/renderers/workgraph-runtime.js +38 -0
  255. package/packages/work-graph/prototype-gnantt.html +655 -0
  256. package/packages/work-graph/src/adapters/business/projects.js +23 -0
  257. package/packages/work-graph/src/adapters/engineering/git.js +22 -0
  258. package/packages/work-graph/src/adapters/engineering/mcp.js +22 -0
  259. package/packages/work-graph/src/index.js +76 -0
  260. package/packages/work-graph/src/renderers/gantt-model.js +11 -0
  261. package/packages/work-graph/src/renderers/timeline.js +16 -0
  262. package/packages/work-graph/test/work-graph.test.mjs +37 -0
  263. package/protocol/README.md +12 -0
  264. package/protocol/capabilities/cloudflare-cpu-audit-input.schema.json +30 -6
  265. package/protocol/capabilities/cloudflare-cpu-profile-input.schema.json +18 -4
  266. package/protocol/capabilities/cloudflare-wrangler-native-input.schema.json +59 -10
  267. package/protocol/capabilities/knowledge-search-input.schema.json +35 -0
  268. package/protocol/capabilities/manifest.json +163 -1
  269. package/protocol/capabilities/repository-audit-input.schema.json +39 -6
  270. package/protocol/capabilities/repository-snapshot-input.schema.json +15 -3
  271. package/protocol/capabilities/terminal-exec-input.schema.json +55 -0
  272. package/protocol/commerce/catalog.v1.json +50 -0
  273. package/protocol/errors/error-catalog.json +164 -0
  274. package/protocol/errors/error-envelope.schema.json +544 -0
  275. package/protocol/features/README.md +57 -0
  276. package/protocol/features/agentsam.feature.v1.schema.json +290 -0
  277. package/protocol/features/catalog.json +65 -0
  278. package/protocol/features/examples/provider-resend.feature.json +17 -0
  279. package/protocol/go/agentsam-go-runtime.v1.json +17 -0
  280. package/protocol/knowledge/LIFECYCLE.md +140 -0
  281. package/protocol/knowledge/README.md +4 -0
  282. package/protocol/presets/catalog.json +128 -19
  283. package/protocol/rpc/v1/errors.proto +24 -0
  284. package/protocol/theme-refinery/d1-reconciliation.md +48 -0
  285. package/protocol/theme-refinery/product-metadata.schema.json +27 -0
  286. package/protocol/theme-refinery/receipts/products-registry-batch-20260924.json +318 -0
  287. package/protocol/theme-refinery/receipts/theme-harvest-20260924.json +472 -0
  288. package/protocol/theme-refinery/reconciliation-receipt.schema.json +83 -0
  289. package/services/cad/server.py +249 -2
  290. package/src/agent/capability-adapter.js +15 -5
  291. package/src/agent/index.js +2 -1
  292. package/src/agent/model-turn.js +51 -0
  293. package/src/agent/responses-runner.js +304 -38
  294. package/src/capabilities/index.js +1 -0
  295. package/src/capabilities/terminal-exec.js +78 -0
  296. package/src/cli.js +117 -9
  297. package/src/cloudflare/index.js +6 -0
  298. package/src/cloudflare/runtime-status.js +393 -0
  299. package/src/cloudflare/wrangler.js +17 -1
  300. package/src/commands/app.js +106 -0
  301. package/src/commands/autorag.js +77 -0
  302. package/src/commands/brand.js +293 -0
  303. package/src/commands/cad.js +1 -0
  304. package/src/commands/connections.js +126 -29
  305. package/src/commands/context-economics.js +8 -0
  306. package/src/commands/db.js +7 -0
  307. package/src/commands/env.js +5 -4
  308. package/src/commands/eval.js +209 -14
  309. package/src/commands/go.js +365 -0
  310. package/src/commands/goap.js +176 -0
  311. package/src/commands/identity-init.js +27 -3
  312. package/src/commands/identity-protocol.js +195 -0
  313. package/src/commands/knowledge.js +64 -5
  314. package/src/commands/mcp.js +341 -0
  315. package/src/commands/merkle-persist.js +3 -1
  316. package/src/commands/merkle.js +18 -3
  317. package/src/commands/models.js +109 -23
  318. package/src/commands/plugins.js +175 -0
  319. package/src/commands/preferences.js +28 -8
  320. package/src/commands/product.js +53 -10
  321. package/src/commands/providers.js +118 -37
  322. package/src/commands/resume.js +9 -5
  323. package/src/commands/runtime-status.js +154 -0
  324. package/src/commands/shell.js +466 -55
  325. package/src/commands/status.js +82 -7
  326. package/src/commands/tunnel.js +228 -195
  327. package/src/commands/whoami.js +78 -6
  328. package/src/context/budget.js +6 -0
  329. package/src/context/index.js +2 -1
  330. package/src/context/project-card.js +75 -0
  331. package/src/errors/contract.js +34 -211
  332. package/src/errors/diagnostic.js +95 -51
  333. package/src/errors/index.js +6 -13
  334. package/src/eval/index.js +6 -0
  335. package/src/eval/live.js +439 -0
  336. package/src/features/resolve.js +242 -0
  337. package/src/go/build.js +108 -0
  338. package/src/go/cloudflare.js +207 -0
  339. package/src/go/contract.js +139 -0
  340. package/src/go/discover.js +96 -0
  341. package/src/go/index.js +13 -0
  342. package/src/go/receipts.js +77 -0
  343. package/src/go/registry.js +223 -0
  344. package/src/go/verify.js +31 -0
  345. package/src/index.js +100 -1
  346. package/src/knowledge/config.js +13 -5
  347. package/src/knowledge/engine.js +23 -8
  348. package/src/knowledge/index.js +1 -0
  349. package/src/knowledge/lane-registry.js +46 -0
  350. package/src/knowledge/providers/gemini.js +48 -8
  351. package/src/knowledge/service/client.js +13 -1
  352. package/src/knowledge/service/grpc-codec.js +156 -53
  353. package/src/knowledge/service/job-engine.js +133 -11
  354. package/src/knowledge/service/job-worker.js +34 -5
  355. package/src/knowledge/service/server.js +10 -1
  356. package/src/knowledge/store-discovery.js +77 -0
  357. package/src/lib/account-session.js +8 -2
  358. package/src/lib/agent-instructions.js +3 -0
  359. package/src/lib/auth.js +7 -3
  360. package/src/lib/cad/blender.js +42 -3
  361. package/src/lib/cad/d1-project-store.js +43 -0
  362. package/src/lib/cad/discovery.js +616 -0
  363. package/src/lib/cad/docker-executor.js +352 -0
  364. package/src/lib/cad/freecad.js +253 -0
  365. package/src/lib/cad/index.js +40 -0
  366. package/src/lib/cad/openscad.js +198 -0
  367. package/src/lib/cad/project-cli.d.ts +2 -0
  368. package/src/lib/cad/project-cli.js +21 -0
  369. package/src/lib/cad/project-contract.d.ts +3 -0
  370. package/src/lib/cad/project-contract.js +1 -0
  371. package/src/lib/cad/project-recipe.js +30 -0
  372. package/src/lib/cad/project-runtime.d.ts +2 -0
  373. package/src/lib/cad/project-runtime.js +53 -0
  374. package/src/lib/cad/project-store.js +25 -0
  375. package/src/lib/cad/project-workflows.js +31 -0
  376. package/src/lib/cad-docker.js +21 -2
  377. package/src/lib/cli-preferences.js +17 -2
  378. package/src/lib/core-client.js +37 -18
  379. package/src/lib/deploy/local-studio.js +6 -5
  380. package/src/lib/dockerize.js +3 -0
  381. package/src/lib/execution-approvals.js +1 -0
  382. package/src/lib/identity-scaffold.js +4 -1
  383. package/src/lib/knowledge-docker.js +9 -1
  384. package/src/lib/local-sessions.js +124 -34
  385. package/src/lib/local-status.js +35 -14
  386. package/src/lib/project-config.js +9 -0
  387. package/src/lib/provider-credentials.js +73 -11
  388. package/src/lib/scaffold/resolve-cloudflare-account.js +37 -0
  389. package/src/lib/scaffold/wizards/cms.js +2 -8
  390. package/src/lib/scaffold/wizards/worker-api.js +2 -8
  391. package/src/lib/slash-commands.js +9 -2
  392. package/src/local/migrations.js +109 -1
  393. package/src/local/runtime-store.js +31 -5
  394. package/src/local/sqlite.js +36 -1
  395. package/src/mcp/authority.js +348 -0
  396. package/src/mcp/client-adapters.js +431 -0
  397. package/src/mcp/client.js +172 -0
  398. package/src/mcp/index.js +47 -0
  399. package/src/mcp/telemetry.js +103 -0
  400. package/src/models/catalog.js +329 -51
  401. package/src/models/discovery.js +24 -4
  402. package/src/models/index.js +2 -0
  403. package/src/models/inventory-core.js +182 -0
  404. package/src/models/policy.js +20 -0
  405. package/src/plugins/cloudflare.js +103 -0
  406. package/src/plugins/completeful.js +69 -0
  407. package/src/plugins/contracts.js +86 -0
  408. package/src/plugins/index.js +11 -0
  409. package/src/plugins/registry.js +207 -0
  410. package/src/plugins/resource-scope.js +45 -0
  411. package/src/plugins/runtime.js +118 -0
  412. package/src/plugins/vectorize.js +31 -0
  413. package/src/progression/engine.js +171 -0
  414. package/src/progression/index.js +1 -0
  415. package/src/providers/cloudflare-chat.js +1 -1
  416. package/src/providers/gemini-generate-content.js +2 -1
  417. package/src/providers/openai-responses.js +45 -16
  418. package/src/providers/tool-schema.js +85 -0
  419. package/src/repository/index.js +29 -0
  420. package/src/rpc/generated/errors_pb.js +961 -1
  421. package/src/security/local-vault.js +415 -0
  422. package/src/security/process.js +20 -4
  423. package/src/status/actions.js +192 -0
  424. package/src/tools/hydrate.js +5 -1
  425. package/src/tools/index.js +7 -0
  426. package/src/tools/redact.js +64 -0
  427. package/src/tools/registry.js +83 -0
  428. package/src/tools/runtime.js +257 -0
  429. package/src/tools/search.js +21 -8
  430. package/src/ui/ansi.js +117 -3
  431. package/src/ui/cli/activity.js +76 -7
  432. package/src/ui/cli/footer.js +110 -9
  433. package/src/ui/cli/help.js +11 -4
  434. package/src/ui/wireframes.js +166 -0
  435. package/test/account-session.test.mjs +28 -0
  436. package/test/apps-scaffold-contract.test.mjs +16 -1
  437. package/test/capabilities.test.mjs +1 -1
  438. package/test/cli/eval-live.test.mjs +219 -0
  439. package/test/cli/go.test.mjs +71 -0
  440. package/test/cli/local-vault-and-provider-setup.test.mjs +268 -0
  441. package/test/cli/mcp-client.test.mjs +245 -0
  442. package/test/cli/runtime-ui.test.mjs +69 -2
  443. package/test/cli/status-actions.test.mjs +88 -0
  444. package/test/cli/wireframes-go-registry.test.mjs +54 -0
  445. package/test/cloudflare-connector.test.mjs +3 -6
  446. package/test/cloudflare-runtime.test.mjs +8 -1
  447. package/test/context.test.mjs +15 -0
  448. package/test/error-diagnostics.test.mjs +9 -0
  449. package/test/fixtures/cad/courtyard-house.json +208 -0
  450. package/test/go/cloudflare-probe.test.mjs +53 -0
  451. package/test/integration/app-command.test.mjs +55 -0
  452. package/test/integration/cad-discovery.test.mjs +158 -0
  453. package/test/integration/cad-docker-executor.test.mjs +249 -0
  454. package/test/integration/cad-execution.test.mjs +184 -0
  455. package/test/integration/cad-project-app.test.mjs +31 -0
  456. package/test/integration/cad-project-d1.test.mjs +25 -0
  457. package/test/integration/cad-project-native.test.mjs +24 -0
  458. package/test/integration/cad-project-workflow.test.mjs +9 -0
  459. package/test/integration/cad-project.test.mjs +82 -0
  460. package/test/integration/cli-help.test.mjs +4 -0
  461. package/test/integration/cms-site-tenancy-contract.test.mjs +256 -0
  462. package/test/integration/core-client.integration.test.mjs +55 -0
  463. package/test/integration/error-runtime-rpc.test.mjs +71 -0
  464. package/test/integration/features-resolve.test.mjs +128 -0
  465. package/test/integration/install-script.test.mjs +107 -0
  466. package/test/integration/inventory-core.test.mjs +53 -0
  467. package/test/integration/plugins-cloudflare.integration.test.mjs +28 -0
  468. package/test/integration/provider-env-cli.test.mjs +1 -1
  469. package/test/integration/runtime-migrations.test.mjs +6 -1
  470. package/test/integration/runtime-status.integration.test.mjs +211 -0
  471. package/test/integration/scaffold-cloudflare.test.mjs +46 -0
  472. package/test/integration/storage-architecture.test.mjs +154 -0
  473. package/test/integration/store-discovery.test.mjs +44 -0
  474. package/test/integration/terminal-exec.integration.test.mjs +86 -0
  475. package/test/integration/tool-runtime.test.mjs +124 -0
  476. package/test/integration/tool-schema.test.mjs +59 -0
  477. package/test/knowledge-service.test.mjs +4 -0
  478. package/test/local-sessions.test.mjs +11 -2
  479. package/test/local-studio-deploy.test.mjs +1 -1
  480. package/test/model-catalog.test.mjs +28 -1
  481. package/test/models.test.mjs +159 -5
  482. package/test/openai-responses.test.mjs +60 -0
  483. package/test/provider-credentials.test.mjs +15 -5
  484. package/test/responses-runner.test.mjs +321 -6
  485. package/test/shell.test.mjs +149 -4
  486. package/test/smoke.mjs +2 -2
  487. package/test/tools-search.test.mjs +33 -0
  488. package/test/unit/website-assets-bindings.test.mjs +60 -0
  489. package/test/whoami-resume.test.mjs +82 -3
  490. package/examples/gorilla-shell/README.md +0 -15
  491. package/src/lib/gorilla-template.js +0 -54
  492. package/templates/gorilla-shell/App.tsx +0 -639
  493. package/templates/gorilla-shell/README.md +0 -34
  494. package/templates/gorilla-shell/index.html +0 -15
  495. package/templates/gorilla-shell/main.jsx +0 -9
  496. package/templates/gorilla-shell/package.json +0 -19
  497. package/templates/gorilla-shell/vite.config.js +0 -21
@@ -0,0 +1,55 @@
1
+ # Filesystem & Code
2
+
3
+ Reading/writing/searching files, AST-level codebase retrieval, code index builds, Merkle diffing, and knowledge ingestion.
4
+
5
+ **20 tools** in this domain.
6
+
7
+ ## `code` (1)
8
+
9
+ - **`agentsam_codebase_retrieve`** (Codebase AST Retrieve) — Query-type-routed codebase retrieval: exact name/calls/exports resolve from D1 AST without embeddings; fuzzy natural-language questions use OpenAI embeddings → pgvector AST symbols, then optional one-hop graph expand. mode is a HARD override: structural=D1 only, semantic=pgvector ANN, auto=classify first. Empty structural lookups escalate to semantic unless escalate=false. Do NOT use agentsam_d1_query for source code. _★ heavily used (327 calls)_
10
+
11
+ ## `code.index` (1)
12
+
13
+ - **`agentsam_code_index_build`** (Code Index Build) — Start or observe the existing account/repository-scoped index pipeline. Does not implement parsing/embedding/activation itself. _never used_
14
+
15
+ ## `code.search` (2)
16
+
17
+ - **`agentsam_github_grep`** (GitHub Grep (live tree)) — GitHub Code Search API alias of agentsam_github_search (repo-scoped via OAuth). Not local disk, not PTY ripgrep — use fs_search_files or agentsam_grep for those.
18
+ - **`agentsam_grep`** (Grep (github | filesystem | terminal rg)) — Ripgrep over the workspace checkout. Default lane: MY_CONTAINER (works when Mac PTY is down). Optional fast lane: local PTY working tree.
19
+
20
+ ## `filesystem` (10)
21
+
22
+ - **`agentsam_filesystem_git_status`** (Filesystem Git Status) — Structured staged/unstaged/untracked via git status --porcelain under workspace_root.
23
+ - **`agentsam_filesystem_hash_many`** (Filesystem Hash Many) — Batch content hashes. content_mode raw_bytes|git_blob. _never used_
24
+ - **`agentsam_filesystem_stat_many`** (Filesystem Stat Many) — Batch stat metadata under approved workspace_root. _never used_
25
+ - **`agentsam_filesystem_walk`** (Filesystem Walk) — Walk approved workspace_root with containment limits. Prefer over terminal find for tree inspection.
26
+ - **`agentsam_merkle_build`** (Merkle Build) — Construct + persist content-addressed fs-merkle-v1 snapshot (github|execos|entries).
27
+ - **`agentsam_merkle_compare`** (Merkle Compare) — Domain-checked Merkle diff. Refuses mismatched leaf_hash_domain.
28
+ - **`agentsam_merkle_delete`** (Merkle Delete) — Delete snapshot R2 body + thin D1 index row. _never used_
29
+ - **`agentsam_merkle_explain`** (Merkle Explain) — Explain why a folder changed (V1 honest subset — no pure-rename claim).
30
+ - **`agentsam_merkle_get`** (Merkle Get) — Fetch snapshot path/children by snapshot_id from R2+D1 index.
31
+ - **`fs_list_dir`** (List directory) — List entries on the active Files plane: Local FSA when connected; else host path on the caller tunnel. When files_source=r2, lists the selected R2 bucket/prefix. Not a terminal tool, not GitHub.
32
+
33
+ ## `filesystem.edit` (1)
34
+
35
+ - **`fs_edit_file`** (FS Edit File) — Patch a file in the connected local filesystem only. GitHub edits must use agentsam_github_patch with explicit repo and branch. _risk: high_
36
+
37
+ ## `filesystem.read` (1)
38
+
39
+ - **`fs_read_file`** (FS Read File) — Read a workspace file (Local folder / PTY / GitHub committed tip). Default max_bytes=32768 with byte_offset pagination. Prefer line_start/line_end from agentsam_codebase_retrieve over whole-file reads. _★ heavily used (546 calls)_
40
+
41
+ ## `filesystem.search` (1)
42
+
43
+ - **`fs_search_files`** (Search Files (rg)) — Ripgrep over the workspace checkout. Required: query. Optional: path. Never call with {}. _★ heavily used (530 calls)_
44
+
45
+ ## `filesystem.write` (1)
46
+
47
+ - **`fs_write_file`** (FS Write File) — Write a file to the connected local filesystem only. GitHub writes must use agentsam_github_write with explicit repo and branch. _risk: high, ★ heavily used (101 calls)_
48
+
49
+ ## `knowledge` (1)
50
+
51
+ - **`agentsam_knowledge_ingest_segment`** (Knowledge ingest segment) — Canonical atomic knowledge write (ingest_segment). Pass a full ingest_segment payload, or markdown + file_name for the docs topic adapter. _never used_
52
+
53
+ ## `repository.evidence` (1)
54
+
55
+ - **`agentsam_repository_snapshot`** (Repository Snapshot) — Capture the canonical agentsam.snapshot.v1 repository evidence packet. Deterministic filesystem inspection delegated to the SDK on an authorized host. _**inactive**, never used_
@@ -0,0 +1,56 @@
1
+ # GitHub
2
+
3
+ Every GitHub read (repos, branches, commits, PRs, issues, workflow runs) and write (commit, patch, branch, PR, comment) operation.
4
+
5
+ **36 tools** in this domain.
6
+
7
+ ## `gh.pr` (1)
8
+
9
+ - **`agentsam_gh_pr_list`** (GitHub CLI PR List) — List pull requests via gh pr list (JSON). Complements agentsam_github_pr_list REST tool. _never used_
10
+
11
+ ## `github.issue` (1)
12
+
13
+ - **`agentsam_github_issue`** (GitHub Issue) — Create or manage GitHub issues using your connected GitHub account. Requires explicit owner/repo.
14
+
15
+ ## `github.pr` (1)
16
+
17
+ - **`agentsam_github_pr`** (GitHub PR) — Open a pull request using your connected GitHub account. Requires explicit owner/repo, title, head, and base. _risk: high_
18
+
19
+ ## `github.read` (21)
20
+
21
+ - **`agentsam_github_check_permission`** (GitHub Check Permission) — READ ONLY — return your effective permission level (admin/write/read/none) on a repository. _never used_
22
+ - **`agentsam_github_commit_get`** (GitHub Commit Get) — READ ONLY — get a single commit's full details (repo + sha required). Use agentsam_github_list_commits for bulk. _never used_
23
+ - **`agentsam_github_commit_status_get`** (GitHub Commit Status Get) — READ ONLY — get the combined commit status/CI checks for a commit (repo + sha required). _never used_
24
+ - **`agentsam_github_compare`** (GitHub Compare Commits) — READ ONLY — compare two refs/commits (base...head): ahead_by, behind_by, changed files. _never used_
25
+ - **`agentsam_github_job_logs_get`** (GitHub Job Logs Get) — READ ONLY — fetch raw log output for a single Actions job (repo + job_id required). Call agentsam_github_workflow_jobs_list first to find job_id. _never used_
26
+ - **`agentsam_github_list_branches`** (GitHub List Branches) — READ ONLY — list branches for a repository (paginated, up to 300). Use to discover a real base ref before agentsam_github_create_branch. Never invent main.
27
+ - **`agentsam_github_list_commits`** (GitHub List Commits) — READ ONLY — list recent commits for a branch/ref. _★ heavily used (107 calls)_
28
+ - **`agentsam_github_pr_diff`** (GitHub PR Diff) — READ ONLY — fetch the full unified diff for a pull request. _never used_
29
+ - **`agentsam_github_pr_files`** (GitHub PR Changed Files) — READ ONLY — list filenames changed in a pull request. Call before fetching a single-file patch.
30
+ - **`agentsam_github_pr_get`** (GitHub PR Get) — READ ONLY — fetch a single pull request's metadata (title, state, head/base refs, body).
31
+ - **`agentsam_github_pr_list`** (GitHub PR List) — READ ONLY — list pull requests for a repo, optionally filtered by state/base/head.
32
+ - **`agentsam_github_read`** (GitHub Read) — Read a file from GitHub using your connected GitHub account. Requires explicit owner/repo and path. _★ heavily used (310 calls)_
33
+ - **`agentsam_github_read_many`** (GitHub Batch File Read) — When you need several files at once, batch-read paths; pass metadata_only:true for sha/size without content.
34
+ - **`agentsam_github_repo_get`** (GitHub Repo Get) — READ ONLY — repository snapshot: full_name, default_branch, private, archived, your permission level. Call before create_branch/compare/create_pr when default_branch is unknown.
35
+ - **`agentsam_github_repo_list`** (List GitHub Repos) — READ ONLY — list repositories for the connected GitHub account. Not a file reader — use agentsam_github_read/tree/search for contents.
36
+ - **`agentsam_github_search`** (GitHub Code Search) — READ ONLY — GitHub code search scoped to one repo. Rate-limited (~10/min). Prefer agentsam_github_tree for browsing. _★ heavily used (332 calls)_
37
+ - **`agentsam_github_search_issues_prs`** (GitHub Search Issues/PRs) — READ ONLY — search issues and pull requests using search syntax. Distinct from agentsam_github_search which searches code.
38
+ - **`agentsam_github_tree`** (GitHub Repo Tree) — Read GitHub data for the explicit owner/repo. Never use a catalog repo default. _★ heavily used (265 calls)_
39
+ - **`agentsam_github_workflow_jobs_list`** (GitHub Workflow Jobs List) — READ ONLY — list jobs within a workflow run. Use to find job_id before pulling logs. _never used_
40
+ - **`agentsam_github_workflow_run_get`** (GitHub Workflow Run Get) — READ ONLY — get a single Actions workflow run's status/details. _never used_
41
+ - **`agentsam_github_workflow_runs_list`** (GitHub Workflow Runs List) — READ ONLY — list Actions workflow runs, optionally filtered by branch/workflow_id/status/event. _never used_
42
+
43
+ ## `github.write` (12)
44
+
45
+ - **`agentsam_github_comment_create`** (GitHub Comment Create) — Create a comment on an issue or pull request. PRs use issue_number for comments. _risk: high, never used_
46
+ - **`agentsam_github_commit_status_set`** (GitHub Commit Status Set) — Set a commit status/CI check. state must be error|failure|pending|success. _risk: high, never used_
47
+ - **`agentsam_github_commit_tree`** (GitHub Commit Tree) — Commit multiple files in one GitHub tree. Requires explicit owner/repo, message, files, and branch.
48
+ - **`agentsam_github_create_branch`** (GitHub Create Branch) — Create a remote branch from a base ref or SHA. Does not create a local checkout. Call before patch/commit_tree/write when the target branch doesn't exist yet. Discover base via agentsam_github_list_branches. _risk: high_
49
+ - **`agentsam_github_create_repo`** (GitHub Create Repo) — Create a new GitHub repository. Greenfield scaffold path. Defaults private=true, auto_init=true. _risk: high_
50
+ - **`agentsam_github_delete`** (GitHub Delete File) — Delete a file via Contents API. Resolves current blob sha automatically if omitted. _risk: high, never used_
51
+ - **`agentsam_github_delete_branch`** (GitHub Delete Branch) — Delete a remote branch ref. Irreversible unless SHA recovered elsewhere. _risk: high, never used_
52
+ - **`agentsam_github_patch`** (GitHub Patch File) — Surgical find/replace on an existing GitHub branch (exact unique match or fail). Branch must already exist — create it first. Never default to main. _risk: high_
53
+ - **`agentsam_github_pr_create`** (GitHub PR Create) — Open PR after branch is pushed (terminal git push first). Do not use Contents API to simulate multi-file PRs. _never used_
54
+ - **`agentsam_github_pr_merge`** (GitHub PR Merge) — Merge an existing, already-open pull request. Does not create or approve. _risk: high, never used_
55
+ - **`agentsam_github_pr_update`** (GitHub PR Update) — Update an already-open pull request's title/body/state/base. Does not create or merge. _risk: high, never used_
56
+ - **`agentsam_github_write`** (GitHub Write) — Write a file to GitHub. Requires explicit owner/repo, path, content, message, and branch. _risk: high_
@@ -0,0 +1,16 @@
1
+ # Integrations & Misc
2
+
3
+ Google Drive, Resend (inactive), and raw HTTP fetch (inactive).
4
+
5
+ **5 tools** in this domain.
6
+
7
+ ## `integrations.execute` (4)
8
+
9
+ - **`agentsam_gdrive`** (Google Drive) — Reads files and folders from Google Drive via IAM gdrive proxy tools. _never used_
10
+ - **`gdrive_list`** (Google Drive List) — List files in Google Drive with optional query filter. _**inactive**, never used_
11
+ - **`resend_send_broadcast`** (Resend Broadcast) — Send a broadcast email to an audience via Resend. Requires approval. _**inactive**, risk: high, never used_
12
+ - **`resend_send_email`** (Resend Send Email) — Send a transactional email via Resend API. Requires from/to/subject/html. _**inactive**, never used_
13
+
14
+ ## `network` (1)
15
+
16
+ - **`http_fetch`** (HTTP Fetch) — Fetch a URL via HTTP GET. Returns response body as text. Use for external APIs without auth. _**inactive**, never used_
@@ -0,0 +1,21 @@
1
+ # Memory
2
+
3
+ Agent Sam's own memory commit/search/save/manager surface — semantic memory, not to be confused with this assistant's own memory system.
4
+
5
+ **4 tools** in this domain.
6
+
7
+ ## `memory` (1)
8
+
9
+ - **`agentsam_memory_commit`** (Memory Commit) — Canonical Agent Sam memory commit (D1 SSOT + projection outbox). Returns memory_id, revision, content_hash, semantic_ready, and projection receipts. Use dry_run to validate. Prefer this over agentsam_memory_manager.
10
+
11
+ ## `memory.manager` (1)
12
+
13
+ - **`agentsam_memory_manager`** (Memory Manager (compat)) — COMPATIBILITY adapter only. Prefer agentsam_memory_commit / agentsam_memory_search. Routes through IAM_MAIN canonical hybrid/commit — not the legacy standalone Supabase vector lane.
14
+
15
+ ## `memory.search` (1)
16
+
17
+ - **`agentsam_memory_search`** (Memory Search) — Hybrid semantic memory search via IAM_MAIN (exact → Vectorize → pgvector → lexical → D1 hydrate). Returns memory_id/revision/content_hash and suppresses low-score noise.
18
+
19
+ ## `memory.write` (1)
20
+
21
+ - **`agentsam_memory_save`** (Memory Save) — Canonical memory save (same commit path as agentsam_memory_commit with eager=false). Still enqueues outbox; projections retry on hourly cron.
@@ -0,0 +1,29 @@
1
+ # Terminal & Execution
2
+
3
+ Running shell/Python/Node commands — on the user's own Mac, the always-on cloud desk, or an isolated sandbox — plus container batch exec and Code Mode.
4
+
5
+ **6 tools** in this domain.
6
+
7
+ ## `container.exec` (1)
8
+
9
+ - **`agentsam_container_exec`** (Container Batch Exec) — Execute a non-interactive shell command in the explicitly selected Cloudflare MY_CONTAINER sandbox. _risk: high_
10
+
11
+ ## `runtime.codemode` (1)
12
+
13
+ - **`codemode`** (Code Mode) — Run JavaScript that orchestrates IAM catalog tools inside an isolated Worker sandbox (env.LOADER).
14
+
15
+ ## `terminal` (1)
16
+
17
+ - **`agentsam_code_interpreter`** (Code interpreter (Python crunch)) — Execute Python for calculations, data transformation, analysis, and generated files on the current local execution host. _never used_
18
+
19
+ ## `terminal.execute` (1)
20
+
21
+ - **`agentsam_terminal_sandbox`** (Terminal Sandbox) — Isolated cloud shell in a CF Container sandbox (MY_CONTAINER). Use for experiment zones (zone_slug: engineer, architect, cms, specialist) and disposable builds. For persistent operator repo state on the cloud desk prefer agentsam_terminal_remote; for your own machine use agentsam_terminal_local. _risk: high_
22
+
23
+ ## `terminal.local` (1)
24
+
25
+ - **`agentsam_terminal_local`** (Terminal Local) — Run a shell command on the signed-in user's own machine via their provisioned device tunnel. Requires Settings → Terminal device setup. Not for cloud VM — use agentsam_terminal_remote when away from desk, or agentsam_terminal_sandbox for an isolated cloud shell. Do not use shell for file edits when fs_edit_file / agentsam_github_patch can do it — shell bypasses exact-match and diff guarantees. _risk: high, ★ heavily used (311 calls)_
26
+
27
+ ## `terminal.remote` (1)
28
+
29
+ - **`agentsam_terminal_remote`** (Terminal Remote) — Run a shell command on the platform cloud desk (always-on VM). Primary lane for ChatGPT/Claude connectors and phone when the desk machine is asleep — git, wrangler worker-only, sparse repo clones. Prefer this over sandbox for persistent operator repo state. _risk: high, ★ heavily used (129 calls)_
@@ -0,0 +1,30 @@
1
+ # Tickets & Platform
2
+
3
+ The ticket lifecycle (create/get/list/set-status/add-note), plus platform-level admin: MCP audit log, ship-check, checkout-root pin/get/clear, ping.
4
+
5
+ **13 tools** in this domain.
6
+
7
+ ## `platform` (4)
8
+
9
+ - **`agentsam_checkout_root_clear`** (Checkout root clear) — Clear the sticky checkout_root pin for this MCP session. _never used_
10
+ - **`agentsam_checkout_root_get`** (Checkout root get) — Return the sticky checkout_root for this MCP session (if pinned). _never used_
11
+ - **`agentsam_checkout_root_pin`** (Checkout root pin) — Pin absolute checkout_root for this MCP session (sticky). Dual-agent worktrees: pass absolute worktree path once so relative fs/terminal paths resolve there — never silent operator main. _never used_
12
+ - **`agentsam_ping`** (Ping) — Liveness ping. Returns MCP server version and whether D1 is bound. No workspace or tenant identity. No side effects.
13
+
14
+ ## `platform.audit` (1)
15
+
16
+ - **`agentsam_mcp_audit`** (MCP Audit Log) — Read recent MCP tool calls for your connected account. Scoped by auth user, not workspace. _never used_
17
+
18
+ ## `platform.ship` (2)
19
+
20
+ - **`agentsam_d1_validate_migration`** (D1 Validate Migration (dry-run)) — When editing or reviewing a migration SQL file, statically validate it (memory_id, destructive DDL, conflict targets) before apply. Pass sql, files[], or GitHub paths[]. _never used_
21
+ - **`agentsam_ship_check`** (Ship Check (dual-repo migrations)) — When preparing deploy:full or ship:remote, run preflight across BOTH monorepo and MCP migrations trees vs d1_migrations ledger, with static SQL validation on pending files. _never used_
22
+
23
+ ## `tickets` (6)
24
+
25
+ - **`agentsam_ticket`** (Ticket) — Platform tickets — one tool for list/get/create/set_status/add_note. Pass operation. Reads need ticket.read; create/add_note need ticket.write; set_status needs ticket.status. _never used_
26
+ - **`agentsam_ticket_add_note`** (Ticket Add Note) — Append a note and/or attach visual proof to a platform ticket. Note optional when attachment fields present. _never used_
27
+ - **`agentsam_ticket_create`** (Ticket Create) — Create a platform engineering ticket. Pass dedup_key to avoid double-create on retry. _never used_
28
+ - **`agentsam_ticket_get`** (Ticket Get) — Get one platform ticket by id. _never used_
29
+ - **`agentsam_ticket_list`** (Ticket List) — List platform engineering tickets (agentsam_tickets). Filters: status, project, subsystem, priority. _never used_
30
+ - **`agentsam_ticket_set_status`** (Ticket Set Status) — Set ticket status (server enforces status_reason for blocked/abandoned). _never used_
@@ -0,0 +1,177 @@
1
+ -- Canonical portable plugin/tool registry for AgentSam applications.
2
+ -- OAuth ciphertext remains in provider-owned connection tables encrypted by
3
+ -- the application's own vault key; these rows contain metadata and evidence.
4
+
5
+ CREATE TABLE IF NOT EXISTS agentsam_plugins (
6
+ id TEXT PRIMARY KEY DEFAULT ('plg_' || lower(hex(randomblob(8)))),
7
+ account_id TEXT NOT NULL,
8
+ plugin_key TEXT NOT NULL,
9
+ provider_key TEXT NOT NULL,
10
+ installation_key TEXT NOT NULL DEFAULT 'default',
11
+ environment TEXT NOT NULL DEFAULT 'production' CHECK (environment IN ('development','preview','staging','production')),
12
+ plugin_kind TEXT NOT NULL CHECK (plugin_kind IN ('mcp','api','oauth','native','webhook','database','storage','ai')),
13
+ category TEXT NOT NULL DEFAULT 'integration',
14
+ display_name TEXT NOT NULL,
15
+ short_name TEXT,
16
+ description TEXT,
17
+ mention_aliases_json TEXT NOT NULL DEFAULT '[]',
18
+ endpoint_url TEXT,
19
+ transport TEXT NOT NULL CHECK (transport IN ('remote_jsonrpc','iam_mcp_catalog','http_rest','http_graphql','webhook','workers_binding','native','none')),
20
+ auth_type TEXT NOT NULL DEFAULT 'none' CHECK (auth_type IN ('none','bridge','oauth','oauth_via_iam','bearer_secret','api_key_secret','workers_binding')),
21
+ secret_ref TEXT,
22
+ oauth_connect_url TEXT,
23
+ capabilities_json TEXT NOT NULL DEFAULT '[]',
24
+ tool_lanes_json TEXT NOT NULL DEFAULT '[]',
25
+ resource_scope_json TEXT NOT NULL DEFAULT '{}',
26
+ config_json TEXT NOT NULL DEFAULT '{}',
27
+ metadata_json TEXT NOT NULL DEFAULT '{}',
28
+ icon_url TEXT,
29
+ icon_dark_url TEXT,
30
+ icon_alt TEXT,
31
+ icon_fit TEXT NOT NULL DEFAULT 'contain' CHECK (icon_fit IN ('contain','cover')),
32
+ composer_visible INTEGER NOT NULL DEFAULT 1 CHECK (composer_visible IN (0,1)),
33
+ settings_visible INTEGER NOT NULL DEFAULT 1 CHECK (settings_visible IN (0,1)),
34
+ sort_priority INTEGER NOT NULL DEFAULT 50,
35
+ is_enabled INTEGER NOT NULL DEFAULT 1 CHECK (is_enabled IN (0,1)),
36
+ setup_status TEXT NOT NULL DEFAULT 'unconfigured' CHECK (setup_status IN ('unconfigured','configured','connected','disabled')),
37
+ health_strategy TEXT NOT NULL DEFAULT 'adapter' CHECK (health_strategy IN ('none','adapter','mcp_ping','oauth_probe','provider_probe')),
38
+ health_status TEXT NOT NULL DEFAULT 'unknown' CHECK (health_status IN ('unknown','healthy','degraded','unhealthy','unreachable','auth_error','disabled')),
39
+ last_health_at INTEGER,
40
+ last_healthy_at INTEGER,
41
+ consecutive_failures INTEGER NOT NULL DEFAULT 0,
42
+ avg_latency_ms REAL,
43
+ error_rate_24h REAL NOT NULL DEFAULT 0,
44
+ last_error_code TEXT,
45
+ last_error_message TEXT,
46
+ created_at INTEGER NOT NULL DEFAULT (unixepoch()),
47
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
48
+ UNIQUE (account_id, environment, plugin_key, installation_key)
49
+ );
50
+
51
+ CREATE TABLE IF NOT EXISTS agentsam_plugin_health_checks (
52
+ id TEXT PRIMARY KEY DEFAULT ('plgh_' || lower(hex(randomblob(8)))),
53
+ plugin_id TEXT NOT NULL REFERENCES agentsam_plugins(id) ON DELETE CASCADE,
54
+ plugin_key TEXT NOT NULL,
55
+ account_id TEXT NOT NULL,
56
+ environment TEXT NOT NULL,
57
+ check_kind TEXT NOT NULL,
58
+ check_source TEXT NOT NULL DEFAULT 'scheduled' CHECK (check_source IN ('scheduled','manual','page_load','tool_call','deploy','startup')),
59
+ status TEXT NOT NULL CHECK (status IN ('healthy','degraded','unhealthy','unreachable','auth_error')),
60
+ started_at INTEGER NOT NULL,
61
+ completed_at INTEGER NOT NULL,
62
+ latency_ms INTEGER,
63
+ http_status INTEGER,
64
+ provider_request_id TEXT,
65
+ error_code TEXT,
66
+ error_message TEXT,
67
+ details_json TEXT NOT NULL DEFAULT '{}',
68
+ created_at INTEGER NOT NULL DEFAULT (unixepoch())
69
+ );
70
+
71
+ CREATE TABLE IF NOT EXISTS agentsam_capabilities (
72
+ capability_key TEXT PRIMARY KEY,
73
+ domain TEXT NOT NULL,
74
+ verb TEXT NOT NULL,
75
+ description TEXT NOT NULL,
76
+ is_mutating INTEGER NOT NULL DEFAULT 0 CHECK (is_mutating IN (0,1)),
77
+ is_active INTEGER NOT NULL DEFAULT 1 CHECK (is_active IN (0,1)),
78
+ created_at INTEGER NOT NULL DEFAULT (unixepoch()),
79
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch())
80
+ );
81
+
82
+ CREATE TABLE IF NOT EXISTS agentsam_tools (
83
+ id TEXT PRIMARY KEY DEFAULT ('ast_' || lower(hex(randomblob(8)))),
84
+ tool_name TEXT NOT NULL UNIQUE,
85
+ display_name TEXT NOT NULL,
86
+ tool_category TEXT NOT NULL,
87
+ handler_type TEXT NOT NULL DEFAULT 'mcp' CHECK (handler_type IN ('mcp','r2','github','terminal','http','proxy','ai','d1','hyperdrive','supabase','kv','durable_object','filesystem','browser_agentic','mybrowser','websearch','telemetry','eval','task.planner','task.organizer','task.manager','workspace.reader','cf','deploy','git','memory','notify','workflow','agent','browser','media','canvas','integrations','cms','completeful','vectorize')),
88
+ description TEXT,
89
+ input_schema TEXT,
90
+ output_schema TEXT,
91
+ linked_mcp_tool_id TEXT,
92
+ mcp_service_url TEXT,
93
+ handler_config TEXT DEFAULT '{}',
94
+ intent_tags TEXT DEFAULT '[]',
95
+ intent_category_tags TEXT,
96
+ modes_json TEXT DEFAULT '["agent","plan","debug","multitask","ask"]',
97
+ risk_level TEXT NOT NULL DEFAULT 'low' CHECK (risk_level IN ('low','medium','high','critical')),
98
+ requires_approval INTEGER NOT NULL DEFAULT 0,
99
+ requires_confirmation INTEGER NOT NULL DEFAULT 0,
100
+ token_budget_per_call INTEGER,
101
+ max_calls_per_session INTEGER,
102
+ cost_per_call_usd REAL DEFAULT 0.0,
103
+ is_active INTEGER NOT NULL DEFAULT 1,
104
+ is_degraded INTEGER NOT NULL DEFAULT 0,
105
+ failure_rate REAL DEFAULT 0.0,
106
+ avg_latency_ms REAL,
107
+ use_count INTEGER NOT NULL DEFAULT 0,
108
+ last_used_at INTEGER,
109
+ last_health_check INTEGER,
110
+ sort_priority INTEGER DEFAULT 50,
111
+ workspace_scope TEXT NOT NULL DEFAULT '["*"]',
112
+ subagent_profile_id TEXT,
113
+ schema_hint TEXT,
114
+ notes TEXT,
115
+ created_at INTEGER NOT NULL DEFAULT (unixepoch()),
116
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
117
+ is_global INTEGER DEFAULT 1,
118
+ tool_key TEXT,
119
+ capability_key TEXT,
120
+ handler_key TEXT,
121
+ route_key TEXT,
122
+ workflow_key TEXT,
123
+ task_type TEXT DEFAULT 'tool_use',
124
+ domain TEXT DEFAULT 'general',
125
+ capability_tier TEXT DEFAULT 'common',
126
+ internal_seo TEXT DEFAULT '',
127
+ tool_code TEXT,
128
+ oauth_visible INTEGER NOT NULL DEFAULT 0,
129
+ dispatch_target TEXT NOT NULL DEFAULT 'internal',
130
+ result_policy_json TEXT,
131
+ caller_policy TEXT,
132
+ cache_policy_json TEXT,
133
+ updated_at_unix INTEGER,
134
+ connector_visible INTEGER NOT NULL DEFAULT 0 CHECK (connector_visible IN (0,1)),
135
+ connector_priority INTEGER,
136
+ connector_access_class TEXT NOT NULL DEFAULT 'read' CHECK (connector_access_class IN ('read','write')),
137
+ account_id TEXT,
138
+ plugin_key TEXT,
139
+ plugin_id TEXT REFERENCES agentsam_plugins(id) ON DELETE SET NULL
140
+ );
141
+
142
+ CREATE TABLE IF NOT EXISTS agentsam_tool_capabilities (
143
+ tool_id TEXT NOT NULL REFERENCES agentsam_tools(id) ON DELETE CASCADE,
144
+ capability_key TEXT NOT NULL REFERENCES agentsam_capabilities(capability_key),
145
+ requirement_type TEXT NOT NULL DEFAULT 'required' CHECK (requirement_type='required'),
146
+ is_primary INTEGER NOT NULL DEFAULT 0 CHECK (is_primary IN (0,1)),
147
+ operations_json TEXT,
148
+ created_at INTEGER NOT NULL DEFAULT (unixepoch()),
149
+ PRIMARY KEY (tool_id, capability_key)
150
+ );
151
+
152
+ CREATE TABLE IF NOT EXISTS agentsam_tool_call_log (
153
+ id TEXT PRIMARY KEY DEFAULT ('atcl_' || lower(hex(randomblob(8)))),
154
+ account_id TEXT NOT NULL,
155
+ agent_run_id TEXT,
156
+ conversation_id TEXT,
157
+ call_index INTEGER,
158
+ tool_key TEXT NOT NULL,
159
+ status TEXT NOT NULL CHECK (status IN ('success','error','blocked','timeout','cancelled')),
160
+ duration_ms INTEGER NOT NULL DEFAULT 0,
161
+ error_code TEXT NOT NULL DEFAULT '',
162
+ failure_origin TEXT CHECK (failure_origin IS NULL OR failure_origin IN ('model','tool','provider','platform','policy','user')),
163
+ cost_usd REAL NOT NULL DEFAULT 0,
164
+ input_tokens INTEGER NOT NULL DEFAULT 0,
165
+ output_tokens INTEGER NOT NULL DEFAULT 0,
166
+ cost_basis TEXT NOT NULL DEFAULT 'unknown' CHECK (cost_basis IN ('api_metered','external_subscription','platform_included','unknown')),
167
+ source_client TEXT NOT NULL DEFAULT 'unknown',
168
+ cache_hit INTEGER NOT NULL DEFAULT 0,
169
+ external_execution INTEGER NOT NULL DEFAULT 1,
170
+ result_source TEXT CHECK (result_source IS NULL OR result_source IN ('live','tool_cache')),
171
+ created_at_unix INTEGER NOT NULL DEFAULT (unixepoch()),
172
+ cache_eligible INTEGER NOT NULL DEFAULT 0 CHECK (cache_eligible IN (0,1)),
173
+ cache_lookup_reason TEXT,
174
+ cache_lookup_ms INTEGER,
175
+ cache_key_hash TEXT,
176
+ cache_input_hash TEXT
177
+ );
@@ -0,0 +1,8 @@
1
+ -- Add explicit account/repository ownership to pre-existing GOAP tickets.
2
+ -- Existing rows remain nullable because their historical owner cannot be
3
+ -- inferred safely; new AgentSam-created goals always populate both fields.
4
+ ALTER TABLE agentsam_tickets ADD COLUMN account_id TEXT;
5
+ ALTER TABLE agentsam_tickets ADD COLUMN repository_id TEXT;
6
+
7
+ CREATE INDEX IF NOT EXISTS idx_agentsam_tickets_account_repository
8
+ ON agentsam_tickets(account_id, repository_id, updated_at DESC);
@@ -0,0 +1,23 @@
1
+ -- Provider/model working-set policy is runtime configuration, not prompt text.
2
+ -- Apps may seed this from their provider catalog; the SDK remains provider-neutral.
3
+ CREATE TABLE IF NOT EXISTS agentsam_model_policies (
4
+ provider TEXT NOT NULL,
5
+ model_key TEXT NOT NULL,
6
+ target_input_tokens INTEGER,
7
+ compact_at_tokens INTEGER,
8
+ intervene_at_tokens INTEGER,
9
+ max_normal_input_tokens INTEGER,
10
+ pricing_threshold_tokens INTEGER,
11
+ max_cumulative_input_tokens INTEGER,
12
+ safety_margin_tokens INTEGER,
13
+ compaction_strategy TEXT NOT NULL DEFAULT 'provider_or_runtime'
14
+ CHECK (compaction_strategy IN ('provider_or_runtime','provider_native','runtime_summary','none')),
15
+ policy_source TEXT NOT NULL DEFAULT 'application'
16
+ CHECK (policy_source IN ('application','provider','catalog','operator')),
17
+ is_active INTEGER NOT NULL DEFAULT 1 CHECK (is_active IN (0,1)),
18
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
19
+ PRIMARY KEY (provider, model_key)
20
+ );
21
+
22
+ CREATE INDEX IF NOT EXISTS idx_agentsam_model_policies_active
23
+ ON agentsam_model_policies(provider, is_active);
@@ -0,0 +1,18 @@
1
+ -- Native provider families are carried by handler_key so this migration is
2
+ -- safe for the existing agentsam_tools CHECK constraint (`cms` is the
3
+ -- ecommerce native family). This registry lets dispatchers discover provider
4
+ -- identity without rebuilding a table referenced by legacy views.
5
+ CREATE TABLE IF NOT EXISTS agentsam_tool_handler_families (
6
+ handler_family TEXT PRIMARY KEY,
7
+ handler_type TEXT NOT NULL,
8
+ dispatch_target TEXT NOT NULL,
9
+ description TEXT NOT NULL,
10
+ is_active INTEGER NOT NULL DEFAULT 1 CHECK (is_active IN (0,1)),
11
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch())
12
+ );
13
+
14
+ INSERT OR REPLACE INTO agentsam_tool_handler_families
15
+ (handler_family, handler_type, dispatch_target, description, updated_at)
16
+ VALUES
17
+ ('ecommerce-cms-agentsam.completeful', 'cms', 'native', 'Completeful curated ecommerce capabilities.', unixepoch()),
18
+ ('project.vectorize', 'vectorize', 'native', 'Project-declared Vectorize binding/index/model lane.', unixepoch());
@@ -0,0 +1,24 @@
1
+ -- Retrieval lanes are provider-neutral. A lane may live in pgvector,
2
+ -- Vectorize, Hyperdrive, D1, or another store; the project row names the
3
+ -- actual database/resource used at runtime.
4
+ ALTER TABLE agentsam_pgvector_lane_registry ADD COLUMN account_id TEXT;
5
+ ALTER TABLE agentsam_pgvector_lane_registry ADD COLUMN repository_id TEXT;
6
+ ALTER TABLE agentsam_pgvector_lane_registry ADD COLUMN database_id TEXT;
7
+ ALTER TABLE agentsam_pgvector_lane_registry ADD COLUMN backend_kind TEXT NOT NULL DEFAULT 'pgvector';
8
+ ALTER TABLE agentsam_pgvector_lane_registry ADD COLUMN provider_key TEXT;
9
+ ALTER TABLE agentsam_pgvector_lane_registry ADD COLUMN resource_id TEXT;
10
+ ALTER TABLE agentsam_pgvector_lane_registry ADD COLUMN binding_name TEXT;
11
+ ALTER TABLE agentsam_pgvector_lane_registry ADD COLUMN index_name TEXT;
12
+ ALTER TABLE agentsam_pgvector_lane_registry ADD COLUMN metadata_json TEXT NOT NULL DEFAULT '{}';
13
+
14
+ ALTER TABLE agentsam_rag_intent_routes ADD COLUMN account_id TEXT;
15
+ ALTER TABLE agentsam_rag_intent_routes ADD COLUMN repository_id TEXT;
16
+ ALTER TABLE agentsam_rag_intent_routes ADD COLUMN database_id TEXT;
17
+ ALTER TABLE agentsam_rag_intent_routes ADD COLUMN resource_scope_json TEXT NOT NULL DEFAULT '{}';
18
+
19
+ CREATE INDEX IF NOT EXISTS idx_agentsam_lane_project
20
+ ON agentsam_pgvector_lane_registry(account_id, repository_id, is_active);
21
+ CREATE INDEX IF NOT EXISTS idx_agentsam_lane_database
22
+ ON agentsam_pgvector_lane_registry(database_id, backend_kind, is_active);
23
+ CREATE INDEX IF NOT EXISTS idx_agentsam_rag_route_project
24
+ ON agentsam_rag_intent_routes(account_id, repository_id, is_active);
@@ -0,0 +1,104 @@
1
+ -- AutoRAG uses the existing knowledge lifecycle. This migration refines its
2
+ -- identity scope; it deliberately creates no parallel autorag run/chunk tables.
3
+ PRAGMA foreign_keys = OFF;
4
+
5
+ -- This pre-existing view is currently invalid because agentsam_agent_run was
6
+ -- already normalized to account authority. Drop/recreate it around the table
7
+ -- rebuild so D1 can revalidate schema atomically.
8
+ DROP VIEW IF EXISTS v_agentsam_ops_trail;
9
+
10
+ ALTER TABLE agentsam_knowledge_runs ADD COLUMN account_id TEXT;
11
+ ALTER TABLE agentsam_knowledge_runs ADD COLUMN repository_id TEXT;
12
+ ALTER TABLE agentsam_knowledge_runs ADD COLUMN project_key TEXT;
13
+ ALTER TABLE agentsam_knowledge_runs ADD COLUMN lane_id TEXT;
14
+
15
+ -- Legacy rows remain addressable through workspace_id, but new code must use
16
+ -- authenticated account + repository/project/lane ownership.
17
+ UPDATE agentsam_knowledge_runs
18
+ SET account_id = COALESCE(account_id, 'legacy:' || COALESCE(NULLIF(tenant_id, ''), NULLIF((SELECT tenant_id FROM agentsam_knowledge_generation WHERE workspace_id = agentsam_knowledge_runs.workspace_id), ''), 'unknown')),
19
+ repository_id = COALESCE(repository_id, 'legacy:workspace:' || workspace_id),
20
+ project_key = COALESCE(project_key, workspace_id),
21
+ lane_id = COALESCE(lane_id, 'default');
22
+
23
+ CREATE INDEX IF NOT EXISTS idx_agentsam_knowledge_runs_portable_scope
24
+ ON agentsam_knowledge_runs(account_id, repository_id, project_key, lane_id, updated_at);
25
+
26
+ -- The historical workspace primary key prevented one account from maintaining
27
+ -- independent repository/lane generations. Rebuild the same table safely and
28
+ -- retain a legacy_workspace_id read path for old callers.
29
+ ALTER TABLE agentsam_knowledge_generation RENAME TO agentsam_knowledge_generation_legacy;
30
+ CREATE TABLE agentsam_knowledge_generation (
31
+ account_id TEXT NOT NULL,
32
+ repository_id TEXT NOT NULL,
33
+ project_key TEXT NOT NULL,
34
+ lane_id TEXT NOT NULL,
35
+ generation INTEGER NOT NULL DEFAULT 1,
36
+ legacy_workspace_id TEXT UNIQUE,
37
+ tenant_id TEXT,
38
+ updated_at_unix INTEGER NOT NULL DEFAULT (unixepoch()),
39
+ PRIMARY KEY (account_id, repository_id, project_key, lane_id)
40
+ );
41
+ INSERT INTO agentsam_knowledge_generation (
42
+ account_id, repository_id, project_key, lane_id, generation,
43
+ legacy_workspace_id, tenant_id, updated_at_unix
44
+ )
45
+ SELECT
46
+ 'legacy:' || COALESCE(NULLIF(tenant_id, ''), 'unknown'),
47
+ 'legacy:workspace:' || workspace_id,
48
+ workspace_id,
49
+ 'default',
50
+ generation,
51
+ workspace_id,
52
+ tenant_id,
53
+ updated_at_unix
54
+ FROM agentsam_knowledge_generation_legacy;
55
+ DROP TABLE agentsam_knowledge_generation_legacy;
56
+ CREATE INDEX IF NOT EXISTS idx_agentsam_knowledge_generation_legacy_workspace
57
+ ON agentsam_knowledge_generation(legacy_workspace_id);
58
+
59
+ -- intent_key was globally unique, which made a repository-specific override
60
+ -- impossible. Preserve all records while making the effective lookup order
61
+ -- repository -> account -> portable default possible.
62
+ ALTER TABLE agentsam_rag_intent_routes RENAME TO agentsam_rag_intent_routes_legacy;
63
+ CREATE TABLE agentsam_rag_intent_routes (
64
+ id TEXT PRIMARY KEY,
65
+ intent_key TEXT NOT NULL,
66
+ lane_order_json TEXT NOT NULL,
67
+ description TEXT,
68
+ is_active INTEGER NOT NULL DEFAULT 1,
69
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
70
+ account_id TEXT,
71
+ repository_id TEXT,
72
+ database_id TEXT,
73
+ resource_scope_json TEXT NOT NULL DEFAULT '{}',
74
+ UNIQUE(account_id, repository_id, intent_key)
75
+ );
76
+ INSERT INTO agentsam_rag_intent_routes (
77
+ id, intent_key, lane_order_json, description, is_active, updated_at,
78
+ account_id, repository_id, database_id, resource_scope_json
79
+ )
80
+ SELECT id, intent_key, lane_order_json, description, is_active, updated_at,
81
+ account_id, repository_id, database_id, resource_scope_json
82
+ FROM agentsam_rag_intent_routes_legacy;
83
+ DROP TABLE agentsam_rag_intent_routes_legacy;
84
+ CREATE INDEX IF NOT EXISTS idx_agentsam_rag_route_effective_lookup
85
+ ON agentsam_rag_intent_routes(intent_key, account_id, repository_id, is_active);
86
+
87
+ -- The compatibility lane registry remains the single physical lane registry.
88
+ -- New writes must name backend/resource/binding/index explicitly in the host
89
+ -- adapter; legacy pgvector rows remain readable until their host is migrated.
90
+ CREATE INDEX IF NOT EXISTS idx_agentsam_lane_explicit_resource
91
+ ON agentsam_pgvector_lane_registry(backend_kind, database_id, resource_id, binding_name, index_name, dimensions, is_active);
92
+
93
+ CREATE VIEW v_agentsam_ops_trail AS
94
+ SELECT 'agent_run' AS source_table,id AS event_id,created_at_unix AS ts_unix,COALESCE(status,'unknown') AS event_kind,'' AS workspace_id,COALESCE(account_id,'') AS user_id,COALESCE(conversation_id,'') AS conversation_id,COALESCE(model_key,'') AS detail,CAST(NULL AS TEXT) AS error_message FROM agentsam_agent_run WHERE created_at_unix IS NOT NULL
95
+ UNION ALL
96
+ SELECT 'tool_call_log',id,created_at_unix,COALESCE(status,'unknown'),'',COALESCE(account_id,''),COALESCE(conversation_id,''),COALESCE(tool_key,''),error_code FROM agentsam_tool_call_log WHERE created_at_unix IS NOT NULL
97
+ UNION ALL
98
+ SELECT 'error_log',id,created_at,COALESCE(error_type,'error'),'',COALESCE(account_id,''),COALESCE(session_id,''),COALESCE(source,''),error_message FROM agentsam_error_log WHERE created_at IS NOT NULL
99
+ UNION ALL
100
+ SELECT 'mcp_tool_execution',CAST(id AS TEXT),created_at_unix,CASE WHEN success=1 THEN 'success' ELSE 'error' END,'',COALESCE(user_id,''),'',COALESCE(tool_key,tool_name,''),error_message FROM agentsam_mcp_tool_execution WHERE created_at_unix IS NOT NULL
101
+ UNION ALL
102
+ SELECT 'deployment_health',id,COALESCE(checked_at_unix,last_checked_at),COALESCE(status,'health'),'',COALESCE(account_id,''),'',COALESCE(worker_name,''),error_message FROM agentsam_deployment_health WHERE COALESCE(checked_at_unix,last_checked_at) IS NOT NULL;
103
+
104
+ PRAGMA foreign_keys = ON;
@@ -0,0 +1,14 @@
1
+ -- 0005 exposed a pre-existing stale workspace column in the operations view.
2
+ -- Operations telemetry is account-owned now; retain the legacy output column
3
+ -- as an empty compatibility field rather than inventing a workspace mapping.
4
+ DROP VIEW IF EXISTS v_agentsam_ops_trail;
5
+ CREATE VIEW v_agentsam_ops_trail AS
6
+ SELECT 'agent_run' AS source_table,id AS event_id,created_at_unix AS ts_unix,COALESCE(status,'unknown') AS event_kind,'' AS workspace_id,COALESCE(account_id,'') AS user_id,COALESCE(conversation_id,'') AS conversation_id,COALESCE(model_key,'') AS detail,CAST(NULL AS TEXT) AS error_message FROM agentsam_agent_run WHERE created_at_unix IS NOT NULL
7
+ UNION ALL
8
+ SELECT 'tool_call_log',id,created_at_unix,COALESCE(status,'unknown'),'',COALESCE(account_id,''),COALESCE(conversation_id,''),COALESCE(tool_key,''),error_code FROM agentsam_tool_call_log WHERE created_at_unix IS NOT NULL
9
+ UNION ALL
10
+ SELECT 'error_log',id,created_at,COALESCE(error_type,'error'),'',COALESCE(account_id,''),COALESCE(session_id,''),COALESCE(source,''),error_message FROM agentsam_error_log WHERE created_at IS NOT NULL
11
+ UNION ALL
12
+ SELECT 'mcp_tool_execution',CAST(id AS TEXT),created_at_unix,CASE WHEN success=1 THEN 'success' ELSE 'error' END,'',COALESCE(user_id,''),'',COALESCE(tool_key,tool_name,''),error_message FROM agentsam_mcp_tool_execution WHERE created_at_unix IS NOT NULL
13
+ UNION ALL
14
+ SELECT 'deployment_health',id,COALESCE(checked_at_unix,last_checked_at),COALESCE(status,'health'),'',COALESCE(account_id,''),'',COALESCE(worker_name,''),error_message FROM agentsam_deployment_health WHERE COALESCE(checked_at_unix,last_checked_at) IS NOT NULL;
@@ -0,0 +1,13 @@
1
+ -- SQLite resolves every COALESCE argument at prepare time. The old view kept
2
+ -- a removed user_id fallback even though account_id is now authoritative.
3
+ DROP VIEW IF EXISTS v_agentsam_ops_trail;
4
+ CREATE VIEW v_agentsam_ops_trail AS
5
+ SELECT 'agent_run' AS source_table,id AS event_id,created_at_unix AS ts_unix,COALESCE(status,'unknown') AS event_kind,'' AS workspace_id,COALESCE(account_id,'') AS user_id,COALESCE(conversation_id,'') AS conversation_id,COALESCE(model_key,'') AS detail,CAST(NULL AS TEXT) AS error_message FROM agentsam_agent_run WHERE created_at_unix IS NOT NULL
6
+ UNION ALL
7
+ SELECT 'tool_call_log',id,created_at_unix,COALESCE(status,'unknown'),'',COALESCE(account_id,''),COALESCE(conversation_id,''),COALESCE(tool_key,''),error_code FROM agentsam_tool_call_log WHERE created_at_unix IS NOT NULL
8
+ UNION ALL
9
+ SELECT 'error_log',id,created_at,COALESCE(error_type,'error'),'',COALESCE(account_id,''),COALESCE(session_id,''),COALESCE(source,''),error_message FROM agentsam_error_log WHERE created_at IS NOT NULL
10
+ UNION ALL
11
+ SELECT 'mcp_tool_execution',CAST(id AS TEXT),created_at_unix,CASE WHEN success=1 THEN 'success' ELSE 'error' END,'',COALESCE(user_id,''),'',COALESCE(tool_key,tool_name,''),error_message FROM agentsam_mcp_tool_execution WHERE created_at_unix IS NOT NULL
12
+ UNION ALL
13
+ SELECT 'deployment_health',id,COALESCE(checked_at_unix,last_checked_at),COALESCE(status,'health'),'',COALESCE(account_id,''),'',COALESCE(worker_name,''),error_message FROM agentsam_deployment_health WHERE COALESCE(checked_at_unix,last_checked_at) IS NOT NULL;
@@ -0,0 +1,14 @@
1
+ -- Complete the portable identity backfill for runs whose historical row did
2
+ -- not carry tenant_id but whose legacy active generation did.
3
+ UPDATE agentsam_knowledge_runs
4
+ SET account_id = 'legacy:' || (
5
+ SELECT tenant_id FROM agentsam_knowledge_generation generation
6
+ WHERE generation.legacy_workspace_id = agentsam_knowledge_runs.workspace_id
7
+ )
8
+ WHERE account_id = 'legacy:unknown'
9
+ AND EXISTS (
10
+ SELECT 1 FROM agentsam_knowledge_generation generation
11
+ WHERE generation.legacy_workspace_id = agentsam_knowledge_runs.workspace_id
12
+ AND generation.tenant_id IS NOT NULL
13
+ AND generation.tenant_id <> ''
14
+ );