@inneranimalmedia/agentsam-sdk 2.6.4 → 2.6.7

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 (699) hide show
  1. package/AGENTSAM.md +40 -0
  2. package/README.md +15 -9
  3. package/apps/README.md +5 -0
  4. package/apps/cad-creator/README.md +4 -4
  5. package/apps/cad-creator/shared/cad/package.json +1 -1
  6. package/apps/client-cms-editor/AGENTS.md +17 -0
  7. package/apps/client-cms-editor/IMPORT_PROVENANCE.json +8 -0
  8. package/apps/client-cms-editor/README.md +100 -0
  9. package/apps/client-cms-editor/agentsam.app.json +74 -0
  10. package/apps/client-cms-editor/backend/README.md +5 -0
  11. package/apps/client-cms-editor/backend/package.json +39 -0
  12. package/apps/client-cms-editor/backend/src/api/client.ts +233 -0
  13. package/apps/client-cms-editor/backend/src/index.ts +6 -0
  14. package/apps/client-cms-editor/backend/src/model.ts +11 -0
  15. package/apps/client-cms-editor/backend/src/preview/bridge.ts +79 -0
  16. package/apps/client-cms-editor/backend/src/preview/urls.ts +55 -0
  17. package/apps/client-cms-editor/backend/src/routing/cms-route.js +293 -0
  18. package/apps/client-cms-editor/backend/src/routing/index.js +10 -0
  19. package/apps/client-cms-editor/backend/src/storefront.ts +52 -0
  20. package/apps/client-cms-editor/backend/tsconfig.json +20 -0
  21. package/apps/client-cms-editor/backend/worker/index.js +34 -0
  22. package/apps/client-cms-editor/backend/wrangler.jsonc +11 -0
  23. package/apps/client-cms-editor/bin/agentsam-cms.js +262 -0
  24. package/apps/client-cms-editor/bin/agentsam-cms.mjs +3 -0
  25. package/apps/client-cms-editor/frontend/index.html +12 -0
  26. package/apps/client-cms-editor/frontend/package.json +42 -0
  27. package/apps/client-cms-editor/frontend/src/AgentSamDrawer.tsx +156 -0
  28. package/apps/client-cms-editor/frontend/src/CmsAgentSurface.tsx +36 -0
  29. package/apps/client-cms-editor/frontend/src/adapters/heuristic.ts +29 -0
  30. package/apps/client-cms-editor/frontend/src/adapters/http.ts +628 -0
  31. package/apps/client-cms-editor/frontend/src/adapters/memory.ts +510 -0
  32. package/apps/client-cms-editor/frontend/src/editor/CmsEditor.tsx +213 -0
  33. package/apps/client-cms-editor/frontend/src/editor/CmsEditorProvider.tsx +20 -0
  34. package/apps/client-cms-editor/frontend/src/editor/canvas/PreviewCanvas.tsx +53 -0
  35. package/apps/client-cms-editor/frontend/src/editor/legacy/CmsEditorPrototype.tsx +1374 -0
  36. package/apps/client-cms-editor/frontend/src/editor/useCmsEditorController.ts +218 -0
  37. package/apps/client-cms-editor/frontend/src/env.d.ts +14 -0
  38. package/apps/client-cms-editor/frontend/src/index.ts +22 -0
  39. package/apps/client-cms-editor/frontend/src/lib/agent-host.ts +24 -0
  40. package/apps/client-cms-editor/frontend/src/lib/content-safety.ts +63 -0
  41. package/apps/client-cms-editor/frontend/src/main.tsx +91 -0
  42. package/apps/client-cms-editor/frontend/src/mount.tsx +113 -0
  43. package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +214 -0
  44. package/apps/client-cms-editor/frontend/src/styles/cmsShell.css +1739 -0
  45. package/apps/client-cms-editor/frontend/src/styles/studio.css +158 -0
  46. package/apps/client-cms-editor/frontend/src/surfaces/CmsDashboard.tsx +313 -0
  47. package/apps/client-cms-editor/frontend/src/surfaces/CmsGuidedChatHero.tsx +121 -0
  48. package/apps/client-cms-editor/frontend/src/surfaces/CmsHubPage.tsx +132 -0
  49. package/apps/client-cms-editor/frontend/src/surfaces/CmsSiteSwitcher.tsx +176 -0
  50. package/apps/client-cms-editor/frontend/src/surfaces/index.ts +5 -0
  51. package/apps/client-cms-editor/frontend/src/surfaces/types.ts +48 -0
  52. package/apps/client-cms-editor/frontend/tsconfig.json +36 -0
  53. package/apps/client-cms-editor/frontend/vite.config.ts +25 -0
  54. package/apps/client-cms-editor/package-lock.json +4671 -0
  55. package/apps/client-cms-editor/package.json +135 -0
  56. package/apps/client-cms-editor/reference/DONOR_README.md +52 -0
  57. package/apps/client-cms-editor/reference/DONOR_package-lock.json +1253 -0
  58. package/apps/client-cms-editor/reference/DONOR_tsconfig.json +15 -0
  59. package/apps/client-cms-editor/reference/harvest/HARVEST_RECEIPT.json +201 -0
  60. package/apps/client-cms-editor/reference/harvest/PROVENANCE_HISTORY.txt +10 -0
  61. package/apps/client-cms-editor/reference/harvest/README.md +8 -0
  62. package/apps/client-cms-editor/reference/harvest/plans/ARCHIVE-INTAKE.md +135 -0
  63. package/apps/client-cms-editor/reference/harvest/plans/CHATGPT-IDENTITY-HARVEST.md +83 -0
  64. package/apps/client-cms-editor/reference/harvest/plans/CMS-EDITOR-HARVEST.md +166 -0
  65. package/apps/client-cms-editor/reference/harvest/plans/HARVEST-INDEX.md +196 -0
  66. package/apps/client-cms-editor/reference/harvest/plans/INNERANIMALS-CONTENT-001.md +137 -0
  67. package/apps/client-cms-editor/reference/harvest/plans/NO-IMPLICIT-SIDE-EFFECTS.md +87 -0
  68. package/apps/client-cms-editor/reference/harvest/plans/STOREFRONT-SURFACE-MAP.md +140 -0
  69. package/apps/client-cms-editor/reference/harvest/plans/THEME-INNERANIMALS-HARVEST.md +137 -0
  70. package/apps/client-cms-editor/reference/harvest/plans/TOOLING-LAB.md +63 -0
  71. package/apps/client-cms-editor/reference/harvest/plans/harvest-manifest.json +97 -0
  72. package/apps/client-cms-editor/reference/harvest/plans/local-cms-harvest-schema.sql +328 -0
  73. package/apps/client-cms-editor/shared/cms/package.json +31 -0
  74. package/apps/client-cms-editor/shared/cms/src/adapter.ts +204 -0
  75. package/apps/client-cms-editor/shared/cms/src/agent-context.ts +37 -0
  76. package/apps/client-cms-editor/shared/cms/src/cloudflare-bindings.ts +51 -0
  77. package/apps/client-cms-editor/shared/cms/src/editor-types.ts +90 -0
  78. package/apps/client-cms-editor/shared/cms/src/host.ts +82 -0
  79. package/apps/client-cms-editor/shared/cms/src/index.ts +9 -0
  80. package/apps/client-cms-editor/shared/cms/src/map.ts +115 -0
  81. package/apps/client-cms-editor/shared/cms/src/publication.ts +24 -0
  82. package/apps/client-cms-editor/shared/cms/src/routes.ts +11 -0
  83. package/apps/client-cms-editor/shared/cms/src/starter-pack.ts +158 -0
  84. package/apps/client-cms-editor/shared/cms/tsconfig.json +12 -0
  85. package/bin/agentsam-rapid-rust +36 -0
  86. package/contracts/source-types.v1.json +353 -0
  87. package/docs/AUTH_IDENTITY_CONTRACT.md +2 -0
  88. package/docs/CMS_CONTEXTUAL_COMPOSER.md +1 -1
  89. package/docs/MACHINE_INTELLIGENCE.md +120 -0
  90. package/docs/PRODUCT_LIFECYCLE.md +566 -0
  91. package/docs/THEME_REFINERY.md +2 -2
  92. package/docs/WINDOWS_RUNTIME_INSTALL.md +30 -0
  93. package/docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md +188 -0
  94. package/docs/architecture/AGENTSAM_RUNTIME_PROTOCOL.md +171 -0
  95. package/docs/architecture/LOCAL_STUDIO_CLOUDFLARE_OAUTH.md +12 -4
  96. package/docs/architecture/R2_SLUG_NAMESPACE.md +20 -0
  97. package/docs/architecture/WORK_PRODUCT_EXTRACTION.md +97 -0
  98. package/docs/brand/AGENT_SAM_ICON_GRAMMAR.md +70 -0
  99. package/docs/content-studio/HOST_MOUNT_CHECKLIST.md +71 -0
  100. package/docs/content-studio/REVISION_GATE_2026-09-27.md +501 -0
  101. package/docs/contracts/capability-install-planner.md +67 -0
  102. package/docs/contracts/environment-vocabulary.md +195 -0
  103. package/docs/contracts/google-cloud-oauth-setup.md +199 -0
  104. package/docs/local-studio/WORKMODE_DONOR_NOTES.md +1 -1
  105. package/docs/plans/LOCAL-STUDIO-GRADUATION-2026-09-26.md +290 -0
  106. package/docs/plans/LOCAL-STUDIO-REAL-APP-CONTRACT-ADDENDUM-2026-09-27.md +394 -0
  107. package/docs/plans/LOCAL_STUDIO_DESKTOP_RELEASE_2026-09-29.md +150 -0
  108. package/docs/plans/MACHINE-FIRST-APPS-TUI-2026-09-24.md +227 -0
  109. package/docs/plans/TOMORROW-EXTENSIVE-TODO-2026-09-26.md +221 -0
  110. package/docs/plans/TOMORROW-MACHINE-FIRST-BRIEFING.md +145 -0
  111. package/docs/plans/UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md +215 -0
  112. package/docs/plugins.md +2 -2
  113. package/docs/product/AGENTSAM_PRODUCT_EXPERIENCE_STANDARD.md +280 -0
  114. package/docs/product/LOCAL_STUDIO_DESKTOP_EXPERIENCE.md +139 -0
  115. package/docs/product/README.md +8 -0
  116. package/docs/rapid-rust-wasm.md +35 -0
  117. package/migrations/d1/0016_cloudflare_oauth_user_oauth_tokens_ssot.sql +14 -0
  118. package/migrations/d1/0017_identity_native_oauth.sql +21 -0
  119. package/native/agentsam-machine/Cargo.lock +426 -0
  120. package/native/agentsam-machine/Cargo.toml +9 -0
  121. package/native/agentsam-machine/cli/Cargo.toml +14 -0
  122. package/native/agentsam-machine/cli/src/main.rs +77 -0
  123. package/native/agentsam-machine/core/Cargo.toml +15 -0
  124. package/native/agentsam-machine/core/src/assets.rs +790 -0
  125. package/native/agentsam-machine/core/src/bound.rs +298 -0
  126. package/native/agentsam-machine/core/src/enrich.rs +706 -0
  127. package/native/agentsam-machine/core/src/frontend.rs +442 -0
  128. package/native/agentsam-machine/core/src/lib.rs +1086 -0
  129. package/native/agentsam-machine/core/src/liquid.rs +528 -0
  130. package/native/agentsam-machine/core/src/source_types.rs +78 -0
  131. package/package.json +110 -21
  132. package/packages/agentsam-brand/README.md +107 -12
  133. package/packages/agentsam-brand/bin/agentsam-brand.mjs +9 -0
  134. package/packages/agentsam-brand/package.json +41 -9
  135. package/packages/agentsam-brand/src/adapters/cloudflare-images.js +453 -0
  136. package/packages/agentsam-brand/src/adapters/cloudflare-r2.js +74 -0
  137. package/packages/agentsam-brand/src/adapters/d1-registry.js +26 -0
  138. package/packages/agentsam-brand/src/adapters/filesystem.js +59 -0
  139. package/packages/agentsam-brand/src/adapters/memory.js +31 -0
  140. package/packages/agentsam-brand/src/cli/controller.js +503 -0
  141. package/packages/agentsam-brand/src/cli/wizard.js +526 -0
  142. package/packages/agentsam-brand/src/core/capabilities.js +201 -0
  143. package/packages/agentsam-brand/src/core/derivatives.js +211 -0
  144. package/packages/agentsam-brand/src/core/errors.js +12 -0
  145. package/packages/agentsam-brand/src/core/ingest.js +195 -0
  146. package/packages/agentsam-brand/src/core/inspect.js +109 -0
  147. package/packages/agentsam-brand/src/core/keys.js +83 -0
  148. package/packages/agentsam-brand/src/core/naming.js +142 -0
  149. package/packages/agentsam-brand/src/core/optimize.js +316 -0
  150. package/packages/agentsam-brand/src/core/pack.js +305 -0
  151. package/packages/agentsam-brand/src/core/plan.js +276 -0
  152. package/packages/agentsam-brand/src/core/preview.js +159 -0
  153. package/packages/agentsam-brand/src/core/processors/cloudflare.js +68 -0
  154. package/packages/agentsam-brand/src/core/processors/contract.js +203 -0
  155. package/packages/agentsam-brand/src/core/processors/index.js +148 -0
  156. package/packages/agentsam-brand/src/core/processors/native.js +82 -0
  157. package/packages/agentsam-brand/src/core/processors/sharp.js +113 -0
  158. package/packages/agentsam-brand/src/core/processors/squoosh-binary.js +195 -0
  159. package/packages/agentsam-brand/src/core/promote.js +288 -0
  160. package/packages/agentsam-brand/src/core/receipts.js +155 -0
  161. package/packages/agentsam-brand/src/core/v2/compile.js +280 -0
  162. package/packages/agentsam-brand/src/core/v2/derivatives-semantic.js +207 -0
  163. package/packages/agentsam-brand/src/core/v2/ingest-graph.js +387 -0
  164. package/packages/agentsam-brand/src/core/v2/roles.js +180 -0
  165. package/packages/agentsam-brand/src/core/v2/schema.js +209 -0
  166. package/packages/agentsam-brand/src/core/v2/templates.js +114 -0
  167. package/packages/agentsam-brand/src/index.js +193 -36
  168. package/packages/agentsam-brand/src/presets/app-icon.json +16 -0
  169. package/packages/agentsam-brand/src/presets/favicon.json +17 -0
  170. package/packages/agentsam-brand/src/presets/hero.json +12 -0
  171. package/packages/agentsam-brand/src/presets/index.js +40 -0
  172. package/packages/agentsam-brand/src/presets/logo.json +12 -0
  173. package/packages/agentsam-brand/src/presets/model.json +8 -0
  174. package/packages/agentsam-brand/src/presets/og-image.json +10 -0
  175. package/packages/agentsam-brand/src/presets/product-shot.json +11 -0
  176. package/packages/agentsam-brand/src/presets/social-image.json +10 -0
  177. package/packages/agentsam-brand/src/presets/web-image.json +10 -0
  178. package/packages/agentsam-contracts/package.json +13 -3
  179. package/packages/agentsam-contracts/src/artifacts.ts +41 -0
  180. package/packages/agentsam-contracts/src/tools.ts +22 -0
  181. package/packages/agentsam-errors/package.json +13 -3
  182. package/packages/agentsam-knowledge/package.json +18 -4
  183. package/packages/agentsam-knowledge/src/autorag/index.js +11 -4
  184. package/packages/agentsam-knowledge/src/backends/index.js +33 -1
  185. package/packages/agentsam-knowledge/src/providers/index.js +6 -4
  186. package/packages/agentsam-knowledge/src/providers/ollama-endpoint.js +31 -0
  187. package/packages/agentsam-knowledge/test/autorag.test.mjs +81 -1
  188. package/packages/agentsam-nav/package.json +26 -8
  189. package/packages/agentsam-queue-control/README.md +1 -1
  190. package/packages/agentsam-queue-control/package.json +7 -2
  191. package/packages/agentsam-rapid-rust/Cargo.lock +344 -0
  192. package/packages/agentsam-rapid-rust/Cargo.toml +18 -0
  193. package/packages/agentsam-rapid-rust/README.md +5 -0
  194. package/packages/agentsam-rapid-rust/src/main.rs +718 -0
  195. package/packages/agentsam-rapid-rust/templates/api/Cargo.toml.tmpl +18 -0
  196. package/packages/agentsam-rapid-rust/templates/api/src/lib.rs.tmpl +17 -0
  197. package/packages/agentsam-rapid-rust/templates/common/README.md.tmpl +22 -0
  198. package/packages/agentsam-rapid-rust/templates/common/package.json.tmpl +12 -0
  199. package/packages/agentsam-rapid-rust/templates/common/wrangler.toml.tmpl +6 -0
  200. package/packages/agentsam-rapid-rust/templates/crypto-auth/Cargo.toml.tmpl +21 -0
  201. package/packages/agentsam-rapid-rust/templates/crypto-auth/src/lib.rs.tmpl +32 -0
  202. package/packages/agentsam-rapid-rust/templates/data-processor/Cargo.toml.tmpl +18 -0
  203. package/packages/agentsam-rapid-rust/templates/data-processor/src/lib.rs.tmpl +41 -0
  204. package/packages/agentsam-rapid-rust/templates/shared-core/Cargo.toml.tmpl +9 -0
  205. package/packages/agentsam-rapid-rust/templates/shared-core/core/Cargo.toml.tmpl +7 -0
  206. package/packages/agentsam-rapid-rust/templates/shared-core/core/src/lib.rs.tmpl +23 -0
  207. package/packages/agentsam-rapid-rust/templates/shared-core/worker/Cargo.toml.tmpl +12 -0
  208. package/packages/agentsam-rapid-rust/templates/shared-core/worker/src/lib.rs.tmpl +16 -0
  209. package/packages/agentsam-rapid-rust/templates/shared-core/wrangler.toml.tmpl +6 -0
  210. package/packages/agentsam-repository/package.json +13 -3
  211. package/packages/agentsam-repository/src/index.js +1 -0
  212. package/packages/agentsam-repository/src/merkle/semantic.js +3 -10
  213. package/packages/agentsam-repository/src/source-types.js +93 -0
  214. package/packages/agentsam-vault/README.md +96 -0
  215. package/packages/agentsam-vault/package.json +42 -0
  216. package/packages/agentsam-vault/src/contracts/credential.d.ts +78 -0
  217. package/packages/agentsam-vault/src/contracts/credential.js +132 -0
  218. package/packages/agentsam-vault/src/crypto/aes-gcm.d.ts +30 -0
  219. package/packages/agentsam-vault/src/crypto/aes-gcm.js +107 -0
  220. package/packages/agentsam-vault/src/crypto/oauth-envelope.js +150 -0
  221. package/packages/agentsam-vault/src/index.d.ts +9 -0
  222. package/packages/agentsam-vault/src/index.js +27 -0
  223. package/packages/agentsam-vault/src/providers/registry.js +90 -0
  224. package/packages/agentsam-vault/src/runtime/resolver.js +77 -0
  225. package/packages/agentsam-workbench/README.md +24 -0
  226. package/packages/agentsam-workbench/package.json +49 -0
  227. package/packages/agentsam-workbench/src/agent/AgentPanel.tsx +41 -0
  228. package/packages/agentsam-workbench/src/agent/ArtifactCard.tsx +9 -0
  229. package/packages/agentsam-workbench/src/agent/Composer.tsx +102 -0
  230. package/packages/agentsam-workbench/src/agent/ConnectedAgentPanel.tsx +194 -0
  231. package/packages/agentsam-workbench/src/agent/ContextualComposer.tsx +788 -0
  232. package/packages/agentsam-workbench/src/agent/GoalStatusStrip.tsx +38 -0
  233. package/packages/agentsam-workbench/src/agent/MiniAgentSam.tsx +86 -0
  234. package/packages/agentsam-workbench/src/agent/ModelSelect.tsx +19 -0
  235. package/packages/agentsam-workbench/src/agent/Thread.tsx +56 -0
  236. package/packages/agentsam-workbench/src/agent/ToolPermissionRequest.tsx +94 -0
  237. package/packages/agentsam-workbench/src/agent/ToolReceipt.tsx +11 -0
  238. package/packages/agentsam-workbench/src/agent/contextual-composer.css +611 -0
  239. package/packages/agentsam-workbench/src/agent/index.ts +12 -0
  240. package/packages/agentsam-workbench/src/agent/mini-agentsam.css +12 -0
  241. package/packages/agentsam-workbench/src/agent/tool-permission.css +134 -0
  242. package/packages/agentsam-workbench/src/browser/BrowserFrame.tsx +37 -0
  243. package/packages/agentsam-workbench/src/browser/index.ts +1 -0
  244. package/packages/agentsam-workbench/src/index.ts +6 -0
  245. package/packages/agentsam-workbench/src/project-control.css +160 -0
  246. package/packages/agentsam-workbench/src/projects/ProjectsSurface.tsx +131 -0
  247. package/packages/agentsam-workbench/src/projects/index.ts +1 -0
  248. package/packages/agentsam-workbench/src/shell/Breadcrumb.tsx +35 -0
  249. package/packages/agentsam-workbench/src/shell/ResizableStage.tsx +99 -0
  250. package/packages/agentsam-workbench/src/shell/SidePanel.tsx +5 -0
  251. package/packages/agentsam-workbench/src/shell/index.ts +4 -0
  252. package/packages/agentsam-workbench/src/shell/surfaceRegistry.ts +29 -0
  253. package/packages/agentsam-workbench/src/terminal/TerminalSurface.tsx +5 -0
  254. package/packages/agentsam-workbench/src/terminal/index.ts +1 -0
  255. package/packages/agentsam-workbench/src/timeline/GanttBoard.tsx +258 -0
  256. package/packages/agentsam-workbench/src/timeline/index.ts +1 -0
  257. package/packages/agentsam-workbench/tsconfig.json +13 -0
  258. package/packages/connectors/cloudflare/OAUTH_STORAGE_AUDIT.md +53 -0
  259. package/packages/connectors/cloudflare/package.json +16 -4
  260. package/packages/connectors/cloudflare/src/api-client.js +280 -0
  261. package/packages/connectors/cloudflare/src/capabilities.js +585 -0
  262. package/packages/connectors/cloudflare/src/credential.js +318 -0
  263. package/packages/connectors/cloudflare/src/families/brand-protection.js +123 -0
  264. package/packages/connectors/cloudflare/src/families/keyless.js +114 -0
  265. package/packages/connectors/cloudflare/src/families/pages.js +151 -0
  266. package/packages/connectors/cloudflare/src/families/scanner.js +123 -0
  267. package/packages/connectors/cloudflare/src/families/snippets.js +207 -0
  268. package/packages/connectors/cloudflare/src/families/tag-gateway.js +46 -0
  269. package/packages/connectors/cloudflare/src/families/tags.js +124 -0
  270. package/packages/connectors/cloudflare/src/families/token-validation.js +95 -0
  271. package/packages/connectors/cloudflare/src/families/vectorize.js +127 -0
  272. package/packages/connectors/cloudflare/src/families/workflows.js +156 -0
  273. package/packages/connectors/cloudflare/src/index.js +103 -265
  274. package/packages/connectors/cloudflare/src/oauth-persist.js +336 -0
  275. package/packages/connectors/cloudflare/src/owner.js +42 -12
  276. package/packages/connectors/cloudflare/src/permission-options.js +1064 -0
  277. package/packages/connectors/cloudflare/src/routes.js +309 -144
  278. package/packages/connectors/cloudflare/src/scope-catalog.js +345 -0
  279. package/packages/connectors/cloudflare/src/vault.js +2 -2
  280. package/packages/connectors/cloudflare/tests/capabilities.test.mjs +276 -0
  281. package/packages/connectors/cloudflare/tests/connector.test.mjs +26 -30
  282. package/packages/connectors/cloudflare/tests/oauth-persist.test.mjs +125 -0
  283. package/packages/heuristic-theme/README.md +2 -2
  284. package/packages/heuristic-theme/package.json +8 -3
  285. package/packages/heuristic-theme/src/registry.js +2 -2
  286. package/packages/heuristic-theme/src/theme.js +1 -1
  287. package/packages/heuristic-theme/test/theme.test.mjs +1 -1
  288. package/packages/identity/.agentsam/features/oauth-login-portal/agentsam.feature.json +1 -1
  289. package/packages/identity/.agentsam/features/oauth-login-portal/providers.json +44 -4
  290. package/packages/identity/.agentsam/features/oauth-login-portal/resources.json +10 -4
  291. package/packages/identity/.agentsam/features/oauth-login-portal/routes.json +20 -0
  292. package/packages/identity/README.md +2 -2
  293. package/packages/identity/backend/README.md +1 -1
  294. package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +18 -14
  295. package/packages/identity/migrations/apply-portable.js +109 -0
  296. package/packages/identity/migrations/sqlite/004_identity_oauth_consent_catalog.sql +48 -0
  297. package/packages/identity/migrations/sqlite/005_identity_company_native.sql +52 -0
  298. package/packages/identity/package.json +27 -5
  299. package/packages/identity/schema/agentsam.identity/manifest.json +101 -0
  300. package/packages/identity/scripts/local-identity-bridge.mjs +190 -0
  301. package/packages/identity/scripts/preview-auth-portal.mjs +8 -8
  302. package/packages/identity/src/adapters/cloudflare-d1/index.js +8 -372
  303. package/packages/identity/src/adapters/iam-compat/index.js +540 -0
  304. package/packages/identity/src/adapters/portable-d1/index.js +18 -0
  305. package/packages/identity/src/adapters/portable-store.js +479 -0
  306. package/packages/identity/src/adapters/sqlite/index.js +13 -309
  307. package/packages/identity/src/contracts/auth-config.js +27 -8
  308. package/packages/identity/src/contracts/external-identity.js +1 -1
  309. package/packages/identity/src/contracts/identity-store.js +56 -5
  310. package/packages/identity/src/contracts/provider.js +2 -0
  311. package/packages/identity/src/contracts/sign-in-options.js +104 -0
  312. package/packages/identity/src/core/constants.js +1 -1
  313. package/packages/identity/src/core/session-policy.js +31 -0
  314. package/packages/identity/src/frontend/auth-portal/README.md +2 -1
  315. package/packages/identity/src/frontend/auth-portal/pages/login.html +7 -6
  316. package/packages/identity/src/frontend/auth-portal/pages/reset.html +6 -5
  317. package/packages/identity/src/frontend/auth-portal/pages/signup.html +6 -5
  318. package/packages/identity/src/frontend/auth-portal/shared/company-branding.js +1 -1
  319. package/packages/identity/src/frontend/auth-portal/shared/desktop-identity-bridge.js +176 -0
  320. package/packages/identity/src/index.js +44 -1
  321. package/packages/identity/src/migrations/0001_identity_core.sql +19 -2
  322. package/packages/identity/src/migrations/0003_accounts_ssot.sql +20 -0
  323. package/packages/identity/src/migrations/README.md +23 -20
  324. package/packages/identity/src/oauth/README.md +10 -5
  325. package/packages/identity/src/oauth/consent-view.js +388 -0
  326. package/packages/identity/src/oauth/credentials.js +39 -20
  327. package/packages/identity/src/oauth/google-desktop-exchange.js +341 -0
  328. package/packages/identity/src/oauth/iam-platform.js +21 -9
  329. package/packages/identity/src/oauth/native-handoff.js +136 -0
  330. package/packages/identity/src/providers/chatgpt/headers.js +65 -0
  331. package/packages/identity/src/providers/chatgpt/index.js +86 -0
  332. package/packages/identity/src/providers/chatgpt/mapper.js +43 -0
  333. package/packages/identity/src/providers/chatgpt/paths.js +45 -0
  334. package/packages/identity/src/providers/cloudflare/oauth.js +3 -4
  335. package/packages/identity/src/providers/cloudflare/profile.js +49 -14
  336. package/packages/identity/src/providers/github/oauth.js +1 -2
  337. package/packages/identity/src/providers/github/profile.js +16 -2
  338. package/packages/identity/src/providers/iam/index.js +27 -5
  339. package/packages/identity/src/providers/index.js +11 -3
  340. package/packages/identity/src/server/identity-service.js +33 -3
  341. package/packages/identity/src/server/worker-router.js +171 -88
  342. package/packages/identity/tests/auth-config.test.mjs +3 -2
  343. package/packages/identity/tests/chatgpt-provider.test.mjs +75 -0
  344. package/packages/identity/tests/google-desktop-identity-login.test.mjs +210 -0
  345. package/packages/identity/tests/identity-init-scaffold.test.mjs +17 -3
  346. package/packages/identity/tests/identity-service.test.mjs +16 -0
  347. package/packages/identity/tests/lane1-identity-store-parity.test.mjs +527 -0
  348. package/packages/identity/tests/lane1-packed-consumer.test.mjs +175 -0
  349. package/packages/identity/tests/native-oauth-handoff.test.mjs +292 -0
  350. package/packages/identity/tests/native-session-worker.test.mjs +64 -0
  351. package/packages/identity/tests/oauth-consent-view.test.mjs +106 -0
  352. package/packages/identity/tests/oauth-credentials.test.mjs +21 -8
  353. package/packages/identity/tests/oauth-presets-accounts-ssot.test.mjs +58 -0
  354. package/packages/identity/tests/preview-auth-portal.test.mjs +5 -3
  355. package/packages/identity/tests/session-routes-policy.test.mjs +13 -1
  356. package/packages/identity/tests/worker-runtime-boundary.test.mjs +11 -0
  357. package/packages/providers/completeful/package.json +7 -2
  358. package/packages/runtime-protocol/src/index.js +154 -0
  359. package/packages/theme-church-site/package.json +17 -6
  360. package/packages/theme-church-site/src/harvest.json +4 -2
  361. package/packages/theme-church-site/src/index.js +7 -3
  362. package/packages/theme-church-site/test/theme.test.mjs +4 -2
  363. package/packages/theme-companions-site/package.json +17 -6
  364. package/packages/theme-companions-site/src/harvest.json +4 -2
  365. package/packages/theme-companions-site/src/index.js +7 -3
  366. package/packages/theme-companions-site/test/theme.test.mjs +4 -2
  367. package/packages/theme-floors-site/package.json +17 -6
  368. package/packages/theme-floors-site/src/harvest.json +4 -2
  369. package/packages/theme-floors-site/src/index.js +7 -3
  370. package/packages/theme-floors-site/test/theme.test.mjs +4 -2
  371. package/packages/theme-fuelnfree-site/package.json +17 -6
  372. package/packages/theme-fuelnfree-site/src/harvest.json +4 -2
  373. package/packages/theme-fuelnfree-site/src/index.js +7 -3
  374. package/packages/theme-fuelnfree-site/test/theme.test.mjs +4 -2
  375. package/packages/theme-handyman-site/package.json +17 -6
  376. package/packages/theme-handyman-site/src/harvest.json +4 -2
  377. package/packages/theme-handyman-site/src/index.js +7 -3
  378. package/packages/theme-handyman-site/test/theme.test.mjs +4 -2
  379. package/packages/theme-insurance-site/package.json +17 -6
  380. package/packages/theme-insurance-site/src/harvest.json +4 -2
  381. package/packages/theme-insurance-site/src/index.js +7 -3
  382. package/packages/theme-insurance-site/test/theme.test.mjs +4 -2
  383. package/packages/theme-scenes/README.md +164 -0
  384. package/packages/theme-scenes/package.json +54 -0
  385. package/packages/theme-scenes/src/blocks/index.js +30 -0
  386. package/packages/theme-scenes/src/contracts/index.js +286 -0
  387. package/packages/theme-scenes/src/demos/index.js +65 -0
  388. package/packages/theme-scenes/src/index.js +75 -0
  389. package/packages/theme-scenes/src/presets/index.js +263 -0
  390. package/packages/theme-scenes/src/registry.js +187 -0
  391. package/packages/theme-scenes/src/runtime/compile.js +119 -0
  392. package/packages/theme-scenes/src/scenes/index.js +146 -0
  393. package/packages/theme-scenes/src/shell/index.js +47 -0
  394. package/packages/theme-scenes/src/themes/index.js +129 -0
  395. package/packages/theme-scenes/src/visuals/index.js +41 -0
  396. package/packages/theme-scenes/test/theme-scenes.test.mjs +179 -0
  397. package/packages/theme-shinshu-site/package.json +17 -6
  398. package/packages/theme-shinshu-site/src/harvest.json +4 -2
  399. package/packages/theme-shinshu-site/src/index.js +7 -3
  400. package/packages/theme-shinshu-site/test/theme.test.mjs +4 -2
  401. package/packages/work-graph/package.json +14 -4
  402. package/packages/work-graph/src/index.js +34 -1
  403. package/packages/work-graph/src/renderers/gantt-model.js +24 -0
  404. package/packages/work-graph/test/work-graph.test.mjs +27 -7
  405. package/protocol/FILEMETA_V1.md +2 -2
  406. package/protocol/README.md +15 -7
  407. package/protocol/apps/agentsam.app.v1.schema.json +89 -7
  408. package/protocol/apps/agentsam.host-install.v1.schema.json +36 -0
  409. package/protocol/assets/README.md +9 -0
  410. package/protocol/assets/asset-record.v1.schema.json +64 -0
  411. package/protocol/capabilities/manifest.json +1 -1
  412. package/protocol/database/agentsam.schema-pack.v1.schema.json +72 -0
  413. package/protocol/presets/catalog.json +2 -2
  414. package/protocol/runtime/agentsam.runtime.v1.schema.json +75 -0
  415. package/protocol/scoring/README.md +10 -0
  416. package/protocol/scoring/scorecard.v1.schema.json +65 -0
  417. package/protocol/theme-refinery/lineage-registry.json +105 -0
  418. package/protocol/theme-refinery/product-metadata.schema.json +21 -1
  419. package/protocol/ui/icon-registry.mjs +1 -0
  420. package/registry/cms-rust-machine-20260928/installable-products.json +31 -0
  421. package/registry/cms-rust-machine-20260928/manifest.json +22 -0
  422. package/registry/cms-rust-machine-20260928/migration.sql +237 -0
  423. package/registry/cms-rust-machine-20260928/receipt.json +21 -0
  424. package/registry/cms-rust-machine-20260928/receipt.sql +27 -0
  425. package/scripts/build_rapid_rust_cli.py +83 -0
  426. package/skills/grok-auth/SKILL.md +110 -0
  427. package/skills/grok-auth/agentsam.skill.json +25 -0
  428. package/skills/grok-auth/references/grok-identity.md +64 -0
  429. package/skills/grok-auth/references/per-user-data.md +49 -0
  430. package/skills/grok-auth/references/prewired-and-env.md +54 -0
  431. package/skills/grok-auth/references/session-ui.md +133 -0
  432. package/skills/grok-auth/references/sign-in-methods.md +55 -0
  433. package/skills/grok-auth/references/wiring.md +71 -0
  434. package/skills/grok-building-games/SKILL.md +213 -0
  435. package/skills/grok-building-games/agentsam.skill.json +25 -0
  436. package/skills/grok-building-games/references/3d-libs.md +64 -0
  437. package/skills/grok-building-games/references/ai-pathfinding.md +122 -0
  438. package/skills/grok-building-games/references/audio.md +129 -0
  439. package/skills/grok-building-games/references/babylon.md +202 -0
  440. package/skills/grok-building-games/references/collision-physics.md +122 -0
  441. package/skills/grok-building-games/references/ecs-architecture.md +111 -0
  442. package/skills/grok-building-games/references/game-feel-juice.md +110 -0
  443. package/skills/grok-building-games/references/genres/board-card-chess.md +89 -0
  444. package/skills/grok-building-games/references/genres/endless-runner.md +83 -0
  445. package/skills/grok-building-games/references/genres/fps.md +105 -0
  446. package/skills/grok-building-games/references/genres/platformer-2d.md +97 -0
  447. package/skills/grok-building-games/references/genres/puzzle-match3-tetris.md +131 -0
  448. package/skills/grok-building-games/references/genres/racing-kart.md +106 -0
  449. package/skills/grok-building-games/references/genres/topdown-twin-stick.md +97 -0
  450. package/skills/grok-building-games/references/genres/tower-defense.md +84 -0
  451. package/skills/grok-building-games/references/genres/voxel-minecraft.md +89 -0
  452. package/skills/grok-building-games/references/input.md +139 -0
  453. package/skills/grok-building-games/references/phaser.md +277 -0
  454. package/skills/grok-building-games/references/procedural-generation.md +141 -0
  455. package/skills/grok-building-games/references/save-persistence.md +108 -0
  456. package/skills/grok-building-games/references/threejs-foundational.md +148 -0
  457. package/skills/grok-controls/SKILL.md +274 -0
  458. package/skills/grok-controls/agentsam.skill.json +25 -0
  459. package/skills/grok-design-ui/SKILL.md +122 -0
  460. package/skills/grok-design-ui/agentsam.skill.json +25 -0
  461. package/skills/grok-design-ui/references/animations.md +379 -0
  462. package/skills/grok-design-ui/references/performance.md +88 -0
  463. package/skills/grok-design-ui/references/refined-ui.md +384 -0
  464. package/skills/grok-design-ui/references/surfaces.md +247 -0
  465. package/skills/grok-design-ui/references/typography.md +123 -0
  466. package/skills/grok-game-animation-frames/SKILL.md +84 -0
  467. package/skills/grok-game-animation-frames/agentsam.skill.json +25 -0
  468. package/skills/grok-game-asset-core/SKILL.md +69 -0
  469. package/skills/grok-game-asset-core/agentsam.skill.json +25 -0
  470. package/skills/grok-game-character-consistency/SKILL.md +69 -0
  471. package/skills/grok-game-character-consistency/agentsam.skill.json +25 -0
  472. package/skills/grok-game-tilesets/SKILL.md +65 -0
  473. package/skills/grok-game-tilesets/agentsam.skill.json +25 -0
  474. package/skills/grok-game-ui-icons/SKILL.md +56 -0
  475. package/skills/grok-game-ui-icons/agentsam.skill.json +25 -0
  476. package/skills/grok-generate2dmap/LICENSE +21 -0
  477. package/skills/grok-generate2dmap/SKILL.md +120 -0
  478. package/skills/grok-generate2dmap/SOURCE.md +6 -0
  479. package/skills/grok-generate2dmap/agentsam.skill.json +25 -0
  480. package/skills/grok-generate2dmap/references/deliverables.md +101 -0
  481. package/skills/grok-generate2dmap/references/layered-map-contract.md +209 -0
  482. package/skills/grok-generate2dmap/references/map-strategies.md +341 -0
  483. package/skills/grok-generate2dmap/references/object-production-gate.md +24 -0
  484. package/skills/grok-generate2dmap/references/pipeline.md +149 -0
  485. package/skills/grok-generate2dmap/references/prop-pack-contract.md +174 -0
  486. package/skills/grok-generate2dmap/references/side-scroll-stages.md +29 -0
  487. package/skills/grok-generate2dmap/scripts/compose_layered_preview.py +157 -0
  488. package/skills/grok-generate2dmap/scripts/extract_prop_pack.py +369 -0
  489. package/skills/grok-generate2dsprite/LICENSE +21 -0
  490. package/skills/grok-generate2dsprite/SKILL.md +313 -0
  491. package/skills/grok-generate2dsprite/SOURCE.md +6 -0
  492. package/skills/grok-generate2dsprite/agentsam.skill.json +25 -0
  493. package/skills/grok-generate2dsprite/references/modes.md +124 -0
  494. package/skills/grok-generate2dsprite/references/prompt-rules.md +315 -0
  495. package/skills/grok-generate2dsprite/scripts/generate2dsprite.py +1031 -0
  496. package/skills/grok-generate2dsprite/scripts/make_layout_guide.py +109 -0
  497. package/skills/grok-imagine/SKILL.md +201 -0
  498. package/skills/grok-imagine/agentsam.skill.json +25 -0
  499. package/skills/grok-multiplayer-p2p/SKILL.md +111 -0
  500. package/skills/grok-multiplayer-p2p/agentsam.skill.json +25 -0
  501. package/skills/grok-multiplayer-p2p/references/react-binding.md +144 -0
  502. package/skills/grok-multiplayer-p2p/references/signaling-relay.md +269 -0
  503. package/skills/grok-neon/SKILL.md +157 -0
  504. package/skills/grok-neon/agentsam.skill.json +25 -0
  505. package/skills/grok-og/SKILL.md +102 -0
  506. package/skills/grok-og/agentsam.skill.json +25 -0
  507. package/skills/grok-og/references/brand-pass.md +53 -0
  508. package/skills/grok-og/references/custom-card.md +107 -0
  509. package/skills/grok-og/references/favicon-and-icons.md +48 -0
  510. package/skills/grok-og/references/og-type-contract.md +18 -0
  511. package/skills/grok-og/references/placeholder-card.md +21 -0
  512. package/skills/grok-og/references/x-banner.md +41 -0
  513. package/skills/grok-threejs/SKILL.md +67 -0
  514. package/skills/grok-threejs/agentsam.skill.json +25 -0
  515. package/skills/grok-threejs/references/llms-full.txt +2780 -0
  516. package/skills/grok-video2dsprite/LICENSE +21 -0
  517. package/skills/grok-video2dsprite/SKILL.md +236 -0
  518. package/skills/grok-video2dsprite/SOURCE.md +6 -0
  519. package/skills/grok-video2dsprite/agentsam.skill.json +25 -0
  520. package/skills/grok-video2dsprite/references/pipeline.md +90 -0
  521. package/skills/grok-video2dsprite/references/prompt-rules.md +63 -0
  522. package/skills/grok-video2dsprite/scripts/video2dsprite.py +490 -0
  523. package/skills/grok-xai-api/SKILL.md +152 -0
  524. package/skills/grok-xai-api/agentsam.skill.json +25 -0
  525. package/src/attachments/index.js +6 -0
  526. package/src/attachments/intake.js +235 -0
  527. package/src/capabilities/repository-snapshot.js +19 -2
  528. package/src/cli/command-catalog.js +53 -3
  529. package/src/cli/dispatch.js +1 -0
  530. package/src/cli.js +192 -26
  531. package/src/cloudflare/runtime-status.js +2 -1
  532. package/src/commands/account-auth.js +94 -8
  533. package/src/commands/app.js +307 -3
  534. package/src/commands/autorag.js +67 -13
  535. package/src/commands/billing.js +127 -0
  536. package/src/commands/brand.js +74 -60
  537. package/src/commands/cheat-sheet.js +179 -0
  538. package/src/commands/cloudflare-login.js +222 -0
  539. package/src/commands/cloudflare.js +453 -23
  540. package/src/commands/codebaseindex.js +51 -3
  541. package/src/commands/compute.js +4 -0
  542. package/src/commands/connections.js +11 -5
  543. package/src/commands/credentials.js +116 -0
  544. package/src/commands/gcloud-auth.js +427 -0
  545. package/src/commands/google-cloud.js +375 -0
  546. package/src/commands/identity-init.js +2 -2
  547. package/src/commands/knowledge.js +59 -2
  548. package/src/commands/machine-binary.js +103 -0
  549. package/src/commands/machine.js +137 -0
  550. package/src/commands/mcp.js +226 -33
  551. package/src/commands/ollama.js +3 -2
  552. package/src/commands/plugins.js +7 -2
  553. package/src/commands/product.js +36 -0
  554. package/src/commands/runtime-status.js +28 -9
  555. package/src/commands/runtime.js +313 -0
  556. package/src/commands/rust.js +24 -0
  557. package/src/commands/security.js +67 -4
  558. package/src/commands/setup.js +296 -0
  559. package/src/commands/shell.js +16 -3
  560. package/src/commands/start-local.js +2 -2
  561. package/src/commands/status.js +8 -1
  562. package/src/commands/terminal.js +171 -0
  563. package/src/commands/update.js +140 -0
  564. package/src/commands/whoami.js +329 -65
  565. package/src/features/resolve.js +2 -0
  566. package/src/index.js +4 -0
  567. package/src/indexing/ingest/inventory.js +254 -19
  568. package/src/indexing/ingest/materials.js +3 -9
  569. package/src/indexing/ingest/style-evidence.js +181 -0
  570. package/src/knowledge/engine.js +21 -2
  571. package/src/knowledge/runtime-discovery.js +127 -0
  572. package/src/knowledge/source.js +3 -3
  573. package/src/lib/account-session.js +11 -4
  574. package/src/lib/app-authority.js +172 -0
  575. package/src/lib/auth.js +94 -21
  576. package/src/lib/core-client.js +5 -6
  577. package/src/lib/credentials-audit.js +451 -0
  578. package/src/lib/deploy/health.js +24 -6
  579. package/src/lib/detect-context.js +7 -1
  580. package/src/lib/google-cloud-connection.js +270 -0
  581. package/src/lib/google-cloud-inventory.js +385 -0
  582. package/src/lib/google-desktop-oauth.js +372 -0
  583. package/src/lib/google-studio-brokered-oauth.js +158 -0
  584. package/src/lib/identity-scaffold.js +76 -18
  585. package/src/lib/init-options.js +192 -0
  586. package/src/lib/local-scaffold.js +48 -16
  587. package/src/lib/provider-command-remediation.js +308 -0
  588. package/src/lib/provider-credentials.js +8 -0
  589. package/src/lib/scaffold/index.js +8 -2
  590. package/src/lib/scaffold/mcp-server.js +43 -0
  591. package/src/lib/scaffold/templates/mcp-server/index.js +397 -0
  592. package/src/lib/scaffold/templates/mcp-server/presets.js +39 -0
  593. package/src/lib/scaffold/wizards/cms.js +93 -0
  594. package/src/lib/scaffold/wizards/mcp-server.js +61 -0
  595. package/src/lib/setup/contract.js +26 -0
  596. package/src/lib/setup/discover.js +116 -0
  597. package/src/lib/setup/execute.js +205 -0
  598. package/src/lib/setup/planner.js +134 -0
  599. package/src/lib/setup/recipes.js +235 -0
  600. package/src/lib/setup/runtime-persist.js +197 -0
  601. package/src/lib/setup/runtime.js +394 -0
  602. package/src/lib/slash-commands.js +2 -0
  603. package/src/lib/terminal/machine-identity.js +95 -0
  604. package/src/lib/terminal-local.js +164 -0
  605. package/src/lib/terminal-scopes.js +52 -0
  606. package/src/lib/whoami-capabilities.js +184 -0
  607. package/src/local-pty/server.js +34 -5
  608. package/src/mcp/authority.js +58 -108
  609. package/src/mcp/client-adapters.js +68 -144
  610. package/src/mcp/client.js +142 -122
  611. package/src/mcp/cloudflare-bundles.js +225 -0
  612. package/src/mcp/index.js +12 -0
  613. package/src/models/discovery.js +40 -22
  614. package/src/models/inventory-core.d.ts +105 -0
  615. package/src/models/inventory-core.js +54 -6
  616. package/src/plugins/cloudflare.js +1 -1
  617. package/src/providers/ollama-chat.js +2 -1
  618. package/src/sam/types.js +27 -2
  619. package/src/security/inventory.js +12 -2
  620. package/src/security/local-vault.js +2 -0
  621. package/src/security/logs.js +3 -0
  622. package/src/security/scan.js +1 -1
  623. package/src/ui/cli/help.js +41 -0
  624. package/test/account-session.test.mjs +3 -3
  625. package/test/app-authority-context.test.mjs +32 -0
  626. package/test/apps-scaffold-contract.test.mjs +3 -2
  627. package/test/cli/api-key-env-whoami.test.mjs +2 -2
  628. package/test/cli/catalog-authority.test.mjs +64 -0
  629. package/test/cli/codebaseindex-plan-ux.test.mjs +1 -1
  630. package/test/cli/machine-command.test.mjs +34 -0
  631. package/test/cli/mcp-client.test.mjs +21 -10
  632. package/test/cli/runtime-persist.test.mjs +56 -0
  633. package/test/cli/rust-command.test.mjs +21 -0
  634. package/test/credentials-audit.test.mjs +113 -0
  635. package/test/deploy-health-scan.test.mjs +29 -1
  636. package/test/fixtures/project-authority/customer-app/.agentsam/app.json +5 -0
  637. package/test/fixtures/project-authority/customer-app/apps/my-product/index.ts +1 -0
  638. package/test/fixtures/project-authority/customer-app/wrangler.toml +17 -0
  639. package/test/gcloud-auth.test.mjs +111 -0
  640. package/test/google-cloud-connection.test.mjs +83 -0
  641. package/test/google-cloud-inventory.test.mjs +64 -0
  642. package/test/init-options.test.mjs +35 -0
  643. package/test/integration/app-command.test.mjs +30 -0
  644. package/test/integration/autorag-project-authority.integration.test.mjs +51 -0
  645. package/test/integration/autorag-runtime-discovery.test.mjs +107 -0
  646. package/test/integration/cad-project.test.mjs +4 -1
  647. package/test/integration/cms-app-scaffold.test.mjs +77 -0
  648. package/test/integration/cms-site-tenancy-contract.test.mjs +31 -19
  649. package/test/integration/codebaseindex-ingest.test.mjs +89 -0
  650. package/test/integration/database-hosted-honesty.test.mjs +49 -0
  651. package/test/integration/desktop-keychain-boundary.test.mjs +45 -0
  652. package/test/integration/features-resolve.test.mjs +30 -11
  653. package/test/integration/hosted-work-host-authority.test.mjs +47 -0
  654. package/test/integration/inspect-path-cli.test.mjs +46 -0
  655. package/test/integration/inventory-eligibility.test.mjs +59 -0
  656. package/test/integration/inventory-evidence.test.mjs +125 -0
  657. package/test/integration/local-provider-bridge.test.mjs +65 -0
  658. package/test/integration/local-studio-settings-production.test.mjs +40 -0
  659. package/test/integration/lockfile-sync.test.mjs +26 -0
  660. package/test/integration/provider-env-cli.test.mjs +13 -3
  661. package/test/integration/runtime-status.integration.test.mjs +17 -1
  662. package/test/integration/theme-package-registry.test.mjs +31 -0
  663. package/test/knowledge.test.mjs +35 -1
  664. package/test/loopback-oauth.test.mjs +53 -0
  665. package/test/ollama.test.mjs +22 -0
  666. package/test/repository-snapshot-view.test.mjs +2 -2
  667. package/test/security.test.mjs +37 -0
  668. package/test/setup-planner.test.mjs +74 -0
  669. package/test/setup-runtime.test.mjs +51 -0
  670. package/test/terminal/local-pty.mock.test.mjs +3 -1
  671. package/test/terminal-machine-identity.test.mjs +88 -0
  672. package/test/whoami-resume.test.mjs +27 -6
  673. package/packages/agentsam-brand/test/brand-scan.test.mjs +0 -106
  674. package/packages/agentsam-nav/dist/Nav.d.ts +0 -43
  675. package/packages/agentsam-nav/dist/NavCollapsible.d.ts +0 -10
  676. package/packages/agentsam-nav/dist/NavContent.d.ts +0 -2
  677. package/packages/agentsam-nav/dist/NavFooter.d.ts +0 -2
  678. package/packages/agentsam-nav/dist/NavGroup.d.ts +0 -3
  679. package/packages/agentsam-nav/dist/NavHeader.d.ts +0 -2
  680. package/packages/agentsam-nav/dist/NavMenu.d.ts +0 -22
  681. package/packages/agentsam-nav/dist/NavProvider.d.ts +0 -35
  682. package/packages/agentsam-nav/dist/NavTrigger.d.ts +0 -2
  683. package/packages/agentsam-nav/dist/Surfaces.d.ts +0 -41
  684. package/packages/agentsam-nav/dist/browser.d.ts +0 -11
  685. package/packages/agentsam-nav/dist/browser.global.js +0 -132
  686. package/packages/agentsam-nav/dist/browser.js +0 -613
  687. package/packages/agentsam-nav/dist/contracts.d.ts +0 -76
  688. package/packages/agentsam-nav/dist/index.d.ts +0 -11
  689. package/packages/agentsam-nav/dist/index.js +0 -614
  690. package/packages/agentsam-nav/dist/legacy.css +0 -83
  691. package/packages/agentsam-nav/dist/shell.css +0 -113
  692. package/packages/agentsam-nav/dist/theme.css +0 -113
  693. package/packages/agentsam-nav/dist/utils.d.ts +0 -1
  694. package/packages/agentsam-repository/src/goap.js.bak-20260922011251 +0 -670
  695. package/packages/work-graph/prototype/README.md +0 -32
  696. package/packages/work-graph/prototype/data/demo-workgraph.js +0 -47
  697. package/packages/work-graph/prototype/renderers/timeline-model.js +0 -21
  698. package/packages/work-graph/prototype/renderers/workgraph-runtime.js +0 -38
  699. package/packages/work-graph/prototype-gnantt.html +0 -655
@@ -1,670 +0,0 @@
1
- import fs from 'node:fs';
2
- import os from 'node:os';
3
- import path from 'node:path';
4
- import { execFileSync } from 'node:child_process';
5
- import { tryResolveGitContext } from './git-context.js';
6
- import {
7
- createTicketId,
8
- createAgentRunId,
9
- generateTicketCreateSql,
10
- generateTicketCloseSql,
11
- } from './tickets.js';
12
-
13
- function clean(value) {
14
- return value == null ? '' : String(value).trim();
15
- }
16
-
17
- function sqlEsc(value) {
18
- return String(value ?? '').replaceAll("'", "''");
19
- }
20
-
21
- function formatDate(epoch) {
22
- if (!epoch) return 'none';
23
- const num = Number(epoch);
24
- return Number.isFinite(num) ? new Date(num * 1000).toISOString().replace('T', ' ').slice(0, 19) : String(epoch);
25
- }
26
-
27
- function executeD1JsonQuery({
28
- cwd = process.cwd(),
29
- sql,
30
- query = null,
31
- wranglerConfig = 'apps/local-studio/backend/wrangler.jsonc',
32
- databaseName = 'inneranimalmedia-business',
33
- }) {
34
- if (typeof query === 'function') return query(sql);
35
- const configPath = path.resolve(cwd, wranglerConfig);
36
- const args = ['d1', 'execute', databaseName, '--remote', '--json'];
37
- if (fs.existsSync(configPath)) args.push('--config', configPath);
38
- args.push('--command', sql);
39
-
40
- const out = execFileSync('npx', ['wrangler', ...args], {
41
- cwd,
42
- encoding: 'utf8',
43
- stdio: ['ignore', 'pipe', 'pipe'],
44
- });
45
-
46
- const startIdx = out.indexOf('[');
47
- const endIdx = out.lastIndexOf(']');
48
- if (startIdx === -1 || endIdx === -1) {
49
- throw new Error(`Invalid JSON output from D1: ${out.slice(0, 200)}`);
50
- }
51
- return JSON.parse(out.slice(startIdx, endIdx + 1));
52
- }
53
-
54
- function executeD1WriteSql({
55
- cwd = process.cwd(),
56
- sql,
57
- write = null,
58
- wranglerConfig = 'apps/local-studio/backend/wrangler.jsonc',
59
- databaseName = 'inneranimalmedia-business',
60
- }) {
61
- if (typeof write === 'function') return write(sql);
62
- const configPath = path.resolve(cwd, wranglerConfig);
63
- const tmpFile = path.join(os.tmpdir(), `agentsam-d1-${Date.now()}-${Math.random().toString(36).slice(2, 7)}.sql`);
64
- fs.writeFileSync(tmpFile, `${sql}\n`, 'utf8');
65
-
66
- try {
67
- const args = ['d1', 'execute', databaseName, '--remote', '--yes'];
68
- if (fs.existsSync(configPath)) args.push('--config', configPath);
69
- args.push(`--file=${tmpFile}`);
70
-
71
- return execFileSync('npx', ['wrangler', ...args], {
72
- cwd,
73
- encoding: 'utf8',
74
- stdio: ['ignore', 'pipe', 'pipe'],
75
- });
76
- } finally {
77
- try { fs.unlinkSync(tmpFile); } catch {}
78
- }
79
- }
80
-
81
- /**
82
- * Read the complete GOAP state straight off tables:
83
- * - agentsam_workspace_state (beliefs, lock, checkpoint)
84
- * - agentsam_tickets (active goal/task, linked commit, agent run pointer)
85
- * - agentsam_agent_run (live run status, calls, tokens)
86
- * - agentsam_work_git_commits (recent commit history)
87
- * - agentsam_work_tracking_checkpoint (ingest cursor)
88
- */
89
- export async function readGoapState({
90
- cwd = process.cwd(),
91
- repositoryId = null,
92
- accountId = null,
93
- wranglerConfig = 'apps/local-studio/backend/wrangler.jsonc',
94
- databaseName = 'inneranimalmedia-business',
95
- query = null,
96
- } = {}) {
97
- const git = tryResolveGitContext({ cwd });
98
- const repoId = repositoryId || (git?.repoFullName ? `github:${git.repoFullName.toLowerCase()}` : null);
99
- if (!repoId) return { ok: false, error: 'repository_identity_unresolved', git };
100
- const accId = clean(accountId);
101
- if (!accId) return { ok: false, repositoryId: repoId, error: 'account_id_required', git };
102
-
103
- try {
104
- const sql = `
105
- SELECT * FROM agentsam_workspace_state WHERE repository_id = '${sqlEsc(repoId)}' LIMIT 1;
106
- SELECT * FROM agentsam_tickets WHERE id = (SELECT current_task_id FROM agentsam_workspace_state WHERE repository_id = '${sqlEsc(repoId)}') AND account_id = '${sqlEsc(accId)}' AND repository_id = '${sqlEsc(repoId)}' LIMIT 1;
107
- SELECT * FROM agentsam_agent_run WHERE id = (SELECT agent_run_id FROM agentsam_tickets WHERE id = (SELECT current_task_id FROM agentsam_workspace_state WHERE repository_id = '${sqlEsc(repoId)}') AND account_id = '${sqlEsc(accId)}' AND repository_id = '${sqlEsc(repoId)}' LIMIT 1) LIMIT 1;
108
- SELECT sha, message, committed_at FROM agentsam_work_git_commits WHERE repository_id = '${sqlEsc(repoId)}' ORDER BY committed_at DESC LIMIT 3;
109
- SELECT * FROM agentsam_work_tracking_checkpoint WHERE repository_id = '${sqlEsc(repoId)}' AND tracker_key = 'git_commit_ingest' LIMIT 1;
110
- SELECT id, title, status, sort_order FROM agentsam_todo
111
- WHERE plan_id IN (SELECT id FROM agentsam_plans WHERE agent_run_id = (SELECT agent_run_id FROM agentsam_tickets WHERE id = (SELECT current_task_id FROM agentsam_workspace_state WHERE repository_id = '${sqlEsc(repoId)}') LIMIT 1))
112
- ORDER BY sort_order, created_at_unix;
113
- `;
114
- const data = await executeD1JsonQuery({ cwd, sql, query, wranglerConfig, databaseName });
115
- const workspaceState = data?.[0]?.results?.[0] || null;
116
- const activeTicket = data?.[1]?.results?.[0] || null;
117
- const agentRun = data?.[2]?.results?.[0] || null;
118
- const recentCommits = data?.[3]?.results || [];
119
- const checkpoint = data?.[4]?.results?.[0] || null;
120
- const steps = (data?.[5]?.results || []).map((row) => ({
121
- id: row.id,
122
- title: row.title,
123
- status: row.status,
124
- sort_order: row.sort_order,
125
- }));
126
-
127
- let cursor = {};
128
- if (checkpoint?.cursor_json) {
129
- try { cursor = JSON.parse(checkpoint.cursor_json); } catch {}
130
- }
131
-
132
- return {
133
- ok: true,
134
- repositoryId: repoId,
135
- git,
136
- workspaceState,
137
- activeTicket,
138
- agentRun,
139
- recentCommits,
140
- checkpoint,
141
- cursor,
142
- steps,
143
- };
144
- } catch (err) {
145
- return {
146
- ok: false,
147
- repositoryId: repoId,
148
- git,
149
- error: err?.stderr || err?.message || String(err),
150
- };
151
- }
152
- }
153
-
154
- /**
155
- * List all GOAP tickets/goals for the current repository and workspace.
156
- */
157
- export async function listGoapTickets({
158
- cwd = process.cwd(),
159
- repositoryId = null,
160
- accountId = null,
161
- limit = 20,
162
- wranglerConfig = 'apps/local-studio/backend/wrangler.jsonc',
163
- databaseName = 'inneranimalmedia-business',
164
- query = null,
165
- } = {}) {
166
- const git = tryResolveGitContext({ cwd });
167
- const repoId = repositoryId || (git?.repoFullName ? `github:${git.repoFullName.toLowerCase()}` : null);
168
- if (!repoId) return { ok: false, error: 'repository_identity_unresolved', git, tickets: [] };
169
-
170
- try {
171
- const accId = clean(accountId);
172
- if (!accId) return { ok: false, repositoryId: repoId, error: 'account_id_required', tickets: [] };
173
- const sql = `
174
- SELECT current_task_id FROM agentsam_workspace_state WHERE repository_id = '${sqlEsc(repoId)}' LIMIT 1;
175
- SELECT id, title, status, priority, subsystem, surface, agent_run_id, linked_commit,
176
- account_id, repository_id, owner_ref, created_at, updated_at
177
- FROM agentsam_tickets
178
- WHERE account_id = '${sqlEsc(accId)}' AND repository_id = '${sqlEsc(repoId)}'
179
- ORDER BY
180
- (id = (SELECT current_task_id FROM agentsam_workspace_state WHERE repository_id = '${sqlEsc(repoId)}' LIMIT 1)) DESC,
181
- CASE status
182
- WHEN 'active' THEN 1
183
- WHEN 'backlog' THEN 2
184
- WHEN 'blocked' THEN 3
185
- ELSE 4
186
- END,
187
- updated_at DESC
188
- LIMIT ${Math.max(1, Math.min(Number(limit) || 20, 100))};
189
- `;
190
- const data = await executeD1JsonQuery({ cwd, sql, query, wranglerConfig, databaseName });
191
- const currentTaskId = data?.[0]?.results?.[0]?.current_task_id || null;
192
- const tickets = data?.[1]?.results || [];
193
-
194
- return {
195
- ok: true,
196
- repositoryId: repoId,
197
- currentTaskId,
198
- tickets,
199
- };
200
- } catch (err) {
201
- return {
202
- ok: false,
203
- repositoryId: repoId,
204
- error: err?.stderr || err?.message || String(err),
205
- tickets: [],
206
- };
207
- }
208
- }
209
-
210
- /**
211
- * Create and activate a new GOAP goal/ticket.
212
- */
213
- export async function createGoapGoal({
214
- cwd = process.cwd(),
215
- title,
216
- accountId = null,
217
- priority = 'P2',
218
- subsystem = 'agent-runtime',
219
- description = null,
220
- surface = 'platform',
221
- status = 'active',
222
- setActive = true,
223
- wranglerConfig = 'apps/local-studio/backend/wrangler.jsonc',
224
- databaseName = 'inneranimalmedia-business',
225
- write = null,
226
- } = {}) {
227
- const cleanTitle = clean(title);
228
- if (!cleanTitle) throw new Error('title_required');
229
-
230
- const git = tryResolveGitContext({ cwd });
231
- const repoId = git?.repoFullName ? `github:${git.repoFullName.toLowerCase()}` : 'github:local/workspace';
232
-
233
- let accId = clean(accountId);
234
- if (!accId) throw new Error('account_id_required');
235
-
236
- const ticketId = createTicketId();
237
- const agentRunId = createAgentRunId();
238
- const now = Math.floor(Date.now() / 1000);
239
-
240
- const { sql: ticketSql } = generateTicketCreateSql({
241
- accountId: accId,
242
- ticketId,
243
- title: cleanTitle,
244
- description,
245
- status,
246
- priority,
247
- subsystem,
248
- surface,
249
- accountIdForTicket: accId,
250
- repositoryId: repoId,
251
- ownerRef: repoId,
252
- source: 'agentsam_sdk',
253
- agentRunId,
254
- now,
255
- });
256
-
257
- const statements = [ticketSql];
258
-
259
- if (setActive) {
260
- const wsId = `ws_${repoId.replace(/[^a-zA-Z0-9_]/g, '_')}`;
261
- statements.push(`
262
- INSERT INTO agentsam_workspace_state (
263
- id, repository_id, workspace_id, current_task_id, locked_by, checkpoint_sha,
264
- last_agent_action, state_json, created_at, updated_at
265
- ) VALUES (
266
- 'wss_' || lower(hex(randomblob(8))),
267
- '${sqlEsc(repoId)}',
268
- '${sqlEsc(wsId)}',
269
- '${sqlEsc(ticketId)}',
270
- 'agentsam_cli',
271
- ${git?.headSha ? `'${sqlEsc(git.headSha.slice(0, 10))}'` : 'NULL'},
272
- 'created_and_activated_goal',
273
- '{}',
274
- ${now},
275
- ${now}
276
- )
277
- ON CONFLICT(repository_id) DO UPDATE SET
278
- current_task_id = '${sqlEsc(ticketId)}',
279
- last_agent_action = 'activated_goal',
280
- updated_at = ${now};
281
- `);
282
- }
283
-
284
- const fullSql = statements.join('\n\n');
285
- await executeD1WriteSql({ cwd, sql: fullSql, write, wranglerConfig, databaseName });
286
-
287
- return {
288
- ok: true,
289
- ticketId,
290
- agentRunId,
291
- title: cleanTitle,
292
- status,
293
- priority,
294
- subsystem,
295
- active: setActive,
296
- };
297
- }
298
-
299
- /**
300
- * Switch active GOAP focus to an existing ticket.
301
- */
302
- export async function switchGoapGoal({
303
- cwd = process.cwd(),
304
- ticketId,
305
- accountId = null,
306
- wranglerConfig = 'apps/local-studio/backend/wrangler.jsonc',
307
- databaseName = 'inneranimalmedia-business',
308
- query = null,
309
- write = null,
310
- } = {}) {
311
- const tid = clean(ticketId);
312
- if (!tid) throw new Error('ticket_id_required');
313
-
314
- const git = tryResolveGitContext({ cwd });
315
- const repoId = git?.repoFullName ? `github:${git.repoFullName.toLowerCase()}` : 'github:local/workspace';
316
- const now = Math.floor(Date.now() / 1000);
317
- const wsId = `ws_${repoId.replace(/[^a-zA-Z0-9_]/g, '_')}`;
318
- const lookup = await executeD1JsonQuery({
319
- cwd,
320
- query,
321
- wranglerConfig,
322
- databaseName,
323
- sql: `SELECT id, account_id, repository_id FROM agentsam_tickets WHERE id = '${sqlEsc(tid)}' LIMIT 1;`,
324
- });
325
- const ticket = lookup?.[0]?.results?.[0];
326
- const accId = clean(accountId);
327
- if (!ticket) throw new Error('ticket_not_found');
328
- if (ticket.repository_id && ticket.repository_id !== repoId) throw new Error('ticket_repository_mismatch');
329
- if (!accId || ticket.account_id !== accId) throw new Error('ticket_account_mismatch');
330
- const runId = createAgentRunId();
331
-
332
- const sql = `
333
- INSERT INTO agentsam_agent_run (
334
- id, account_id, mode, status, started_at_unix, created_at_unix, updated_at_unix
335
- ) VALUES ('${sqlEsc(runId)}', '${sqlEsc(accId)}', 'agent', 'running', ${now}, ${now}, ${now});
336
-
337
- UPDATE agentsam_tickets SET
338
- status = 'active',
339
- agent_run_id = '${sqlEsc(runId)}',
340
- updated_at = ${now}
341
- WHERE id = '${sqlEsc(tid)}';
342
-
343
- INSERT INTO agentsam_workspace_state (
344
- id, repository_id, workspace_id, current_task_id, locked_by, checkpoint_sha,
345
- last_agent_action, state_json, created_at, updated_at
346
- ) VALUES (
347
- 'wss_' || lower(hex(randomblob(8))),
348
- '${sqlEsc(repoId)}',
349
- '${sqlEsc(wsId)}',
350
- '${sqlEsc(tid)}',
351
- 'agentsam_cli',
352
- ${git?.headSha ? `'${sqlEsc(git.headSha.slice(0, 10))}'` : 'NULL'},
353
- 'switched_active_goal',
354
- '{}',
355
- ${now},
356
- ${now}
357
- )
358
- ON CONFLICT(repository_id) DO UPDATE SET
359
- current_task_id = '${sqlEsc(tid)}',
360
- last_agent_action = 'switched_active_goal',
361
- updated_at = ${now};
362
- `;
363
-
364
- await executeD1WriteSql({ cwd, sql, write, wranglerConfig, databaseName });
365
-
366
- return {
367
- ok: true,
368
- ticketId: tid,
369
- repositoryId: repoId,
370
- agentRunId: runId,
371
- };
372
- }
373
-
374
- /**
375
- * Close/ship the active GOAP goal or a specified ticket.
376
- */
377
- export async function closeGoapGoal({
378
- cwd = process.cwd(),
379
- ticketId = null,
380
- status = 'shipped',
381
- statusReason = null,
382
- linkedCommit = null,
383
- clearActive = true,
384
- accountId = null,
385
- wranglerConfig = 'apps/local-studio/backend/wrangler.jsonc',
386
- databaseName = 'inneranimalmedia-business',
387
- query = null,
388
- write = null,
389
- } = {}) {
390
- const git = tryResolveGitContext({ cwd });
391
- const repoId = git?.repoFullName ? `github:${git.repoFullName.toLowerCase()}` : 'github:local/workspace';
392
- const now = Math.floor(Date.now() / 1000);
393
-
394
- let tid = clean(ticketId);
395
- if (!tid) {
396
- const existing = await readGoapState({ cwd, accountId, wranglerConfig, databaseName, query });
397
- tid = existing?.workspaceState?.current_task_id || existing?.activeTicket?.id;
398
- }
399
- if (!tid) throw new Error('no_active_ticket_to_close');
400
- const lookup = await executeD1JsonQuery({
401
- cwd,
402
- query,
403
- wranglerConfig,
404
- databaseName,
405
- sql: `SELECT id, account_id, repository_id FROM agentsam_tickets WHERE id = '${sqlEsc(tid)}' LIMIT 1;`,
406
- });
407
- const ticket = lookup?.[0]?.results?.[0];
408
- const accId = clean(accountId);
409
- if (!ticket) throw new Error('ticket_not_found');
410
- if (ticket.repository_id && ticket.repository_id !== repoId) throw new Error('ticket_repository_mismatch');
411
- if (!accId || ticket.account_id !== accId) throw new Error('ticket_account_mismatch');
412
-
413
- const commitSha = clean(linkedCommit) || clean(git?.headSha) || null;
414
- const { sql: closeSql } = generateTicketCloseSql({
415
- ticketId: tid,
416
- status,
417
- statusReason: statusReason || `closed_via_goap_${status}`,
418
- linkedCommit: commitSha,
419
- now,
420
- });
421
-
422
- const statements = [closeSql];
423
-
424
- if (clearActive) {
425
- statements.push(`
426
- UPDATE agentsam_workspace_state SET
427
- current_task_id = NULL,
428
- last_agent_action = 'closed_task_${sqlEsc(tid)}_${sqlEsc(status)}',
429
- updated_at = ${now}
430
- WHERE repository_id = '${sqlEsc(repoId)}';
431
- `);
432
- }
433
-
434
- const fullSql = statements.join('\n\n');
435
- await executeD1WriteSql({ cwd, sql: fullSql, write, wranglerConfig, databaseName });
436
-
437
- return {
438
- ok: true,
439
- ticketId: tid,
440
- status,
441
- linkedCommit: commitSha,
442
- clearedActive: clearActive,
443
- };
444
- }
445
-
446
- /**
447
- * Render GOAP status view.
448
- */
449
- export function renderGoapStatus(state = {}) {
450
- const ws = state.workspaceState || {};
451
- const ticket = state.activeTicket || {};
452
- const run = state.agentRun || {};
453
- const cp = state.cursor || {};
454
- const git = state.git || {};
455
- const headSha = git?.revisionSha || git?.headSha || 'unknown';
456
-
457
- return [
458
- '================================================================================',
459
- ' GOAP BLACKBOARD STATUS ',
460
- '================================================================================',
461
- `Repository: ${state.repositoryId || git?.repoFullName || 'unknown'}`,
462
- `Branch / HEAD: ${git?.branch || 'main'} @ ${headSha !== 'unknown' ? headSha.slice(0, 10) : 'unknown'} (${git?.dirty ? 'DIRTY' : 'CLEAN'})`,
463
- `Locked By: ${ws.locked_by || 'unlocked'}`,
464
- `Active Task: ${ws.current_task_id || ticket.id || 'none'}`,
465
- `Task Title: ${ticket.title || 'no active ticket'}`,
466
- `Task Status: ${ticket.status || 'none'} [Priority: ${ticket.priority || 'P2'}] [Subsystem: ${ticket.subsystem || 'general'}]`,
467
- `Agent Run: ${ticket.agent_run_id || run.id || 'none'} [Status: ${run.status || 'none'}] [Mode: ${run.mode || 'agent'}]`,
468
- `Linked Commit: ${ticket.linked_commit ? ticket.linked_commit.slice(0, 10) : 'none'}`,
469
- `Checkpoint: ${ws.checkpoint_sha ? ws.checkpoint_sha.slice(0, 10) : 'none'} (Tracker cursor: ${cp.last_sha ? cp.last_sha.slice(0, 10) : 'none'})`,
470
- `Last Action: ${ws.last_agent_action || 'none'}`,
471
- `Updated: ${formatDate(ws.updated_at || ticket.updated_at)}`,
472
- '--------------------------------------------------------------------------------',
473
- `Recent Ingested Commits (${state.recentCommits?.length || 0}):`,
474
- ...(state.recentCommits && state.recentCommits.length
475
- ? state.recentCommits.map((c) => ` * ${c.sha.slice(0, 8)} ${c.message?.slice(0, 65)} (${formatDate(c.committed_at)})`)
476
- : [' (no commits ingested yet)']),
477
- '================================================================================',
478
- ].join('\n');
479
- }
480
-
481
- /**
482
- * Render GOAP list view.
483
- */
484
- export function renderGoapList(state = {}) {
485
- const tickets = Array.isArray(state) ? state : (state.tickets || []);
486
- const currentTaskId = state.currentTaskId || state.activeTaskId || null;
487
-
488
- const header = [
489
- '================================================================================',
490
- ' GOAP TICKETS & GOALS ',
491
- '================================================================================',
492
- ];
493
-
494
- if (!tickets.length) {
495
- return [
496
- ...header,
497
- ' (no tickets found in agentsam_tickets)',
498
- '',
499
- ' To create a new goal, run:',
500
- ' agentsam goap new "Your goal title" [--priority P1] [--subsystem sys]',
501
- '================================================================================',
502
- ].join('\n');
503
- }
504
-
505
- const rows = [
506
- ' ACT STATUS PRI TICKET ID TITLE',
507
- ' --- -------- ---- -------------------------- -----------------------------',
508
- ];
509
-
510
- for (const t of tickets) {
511
- const isActive = Boolean(currentTaskId && t.id === currentTaskId);
512
- const actMark = isActive ? ' * ' : ' ';
513
- const status = (t.status || 'open').padEnd(8).slice(0, 8);
514
- const pri = (t.priority || 'P2').padEnd(4).slice(0, 4);
515
- const id = (t.id || '').padEnd(26).slice(0, 26);
516
- const title = (t.title || 'untitled').slice(0, 42);
517
- rows.push(` ${actMark} ${status} ${pri} ${id} ${title}`);
518
- }
519
-
520
- return [
521
- ...header,
522
- ...rows,
523
- '--------------------------------------------------------------------------------',
524
- ' * = active blackboard goal',
525
- ' Commands:',
526
- ' agentsam goap new "<title>" Create and activate a new goal',
527
- ' agentsam goap switch <ticket_id> Switch active goal focus',
528
- ' agentsam goap close [ticket_id] Close/ship active goal',
529
- '================================================================================',
530
- ].join('\n');
531
- }
532
-
533
- /**
534
- * Render GOAP goal view.
535
- */
536
- export function renderGoapGoal(state = {}) {
537
- const ws = state.workspaceState || {};
538
- const ticket = state.activeTicket || {};
539
- const run = state.agentRun || {};
540
-
541
- return [
542
- '================================================================================',
543
- ' GOAP ACTIVE GOAL ',
544
- '================================================================================',
545
- `Goal ID: ${ticket.id || ws.current_task_id || 'none'}`,
546
- `Title: ${ticket.title || 'no goal active'}`,
547
- `Priority: ${ticket.priority || 'P2'}`,
548
- `Subsystem: ${ticket.subsystem || 'general'}`,
549
- `Surface: ${ticket.surface || 'platform'}`,
550
- `Status: ${ticket.status || 'none'}`,
551
- `Reason: ${ticket.status_reason || 'primary sprint goal'}`,
552
- '--------------------------------------------------------------------------------',
553
- 'EXECUTION RUN ENVELOPE:',
554
- `Agent Run ID: ${ticket.agent_run_id || run.id || 'unassigned'}`,
555
- `Run Status: ${run.status || 'unknown'}`,
556
- `Run Mode: ${run.mode || 'agent'}`,
557
- `Started At: ${formatDate(run.started_at_unix)}`,
558
- `Calls / Tools: ${run.model_call_count || 0} model / ${run.tool_call_count || 0} tool calls`,
559
- '--------------------------------------------------------------------------------',
560
- 'GOAL SUCCESS CRITERIA:',
561
- ' 1. Verify code changes pass local tests and typecheck.',
562
- ' 2. Commit changes with a why-focused message.',
563
- ' 3. Sync commit to agentsam_work_git_commits & advance checkpoint.',
564
- ` 4. Populate agentsam_tickets.linked_commit for ${ticket.id || 'active task'}.`,
565
- ' 5. Transition ticket to shipped and complete agent_run.',
566
- '================================================================================',
567
- ].join('\n');
568
- }
569
-
570
- /**
571
- * Render GOAP why view.
572
- */
573
- export function renderGoapWhy(state = {}) {
574
- const ws = state.workspaceState || {};
575
- const ticket = state.activeTicket || {};
576
- const git = state.git || {};
577
- const headSha = git?.revisionSha || git?.headSha || 'unknown';
578
-
579
- return [
580
- '================================================================================',
581
- ' GOAP BELIEF GROUNDING (WHY) ',
582
- '================================================================================',
583
- `Question: Why is task [${ticket.id || ws.current_task_id || 'none'}] active right now?`,
584
- '',
585
- 'BELIEF FOUNDATIONS:',
586
- ` 1. Repository Identity: ${state.repositoryId || git?.repoFullName || 'unknown'}`,
587
- ` - Workspace lock is held by '${ws.locked_by || 'agentsam_cli'}'.`,
588
- ` - Current HEAD is ${headSha !== 'unknown' ? headSha.slice(0, 10) : 'unknown'} (${git?.dirty ? 'working tree dirty' : 'clean'}).`,
589
- '',
590
- ` 2. Ticket Priority & Assignment:`,
591
- ` - Ticket [${ticket.id || ws.current_task_id || 'none'}] is marked '${ticket.status || 'active'}' with priority '${ticket.priority || 'P2'}'.`,
592
- ` - Subsystem: '${ticket.subsystem || 'agent-runtime'}'.`,
593
- ` - Title: ${ticket.title || 'no active ticket'}`,
594
- '',
595
- ` 3. Operational Provenance:`,
596
- ` - Linked Agent Run: ${ticket.agent_run_id || 'none'}`,
597
- ` - Checkpoint Commit: ${ws.checkpoint_sha ? ws.checkpoint_sha.slice(0, 10) : 'none'}`,
598
- ` - Linked Commit: ${ticket.linked_commit ? ticket.linked_commit.slice(0, 10) : 'pending commit'}`,
599
- ` - Last Agent Action: ${ws.last_agent_action || 'none'}`,
600
- '',
601
- 'CONCLUSION:',
602
- ticket.id
603
- ? ` The agent selected this action because ticket [${ticket.id}] has active operator\n focus, satisfies all prerequisite blockers, and is linked to the live workspace belief state.`
604
- : ' No ticket is currently active. Run `agentsam goap list` or `agentsam goap new` to establish focus.',
605
- '================================================================================',
606
- ].join('\n');
607
- }
608
-
609
- /**
610
- * Render GOAP plan view.
611
- */
612
- export function renderGoapPlan(state = {}) {
613
- const ws = state.workspaceState || {};
614
- const ticket = state.activeTicket || {};
615
- const run = state.agentRun || {};
616
- const git = state.git || {};
617
-
618
- let steps = [];
619
- if (Array.isArray(state.steps) && state.steps.length > 0) {
620
- steps = state.steps.map((step) => ({
621
- text: step.title || step.text || String(step),
622
- status: step.status || 'open',
623
- }));
624
- } else if (ticket.plan_steps && Array.isArray(ticket.plan_steps)) {
625
- steps = ticket.plan_steps;
626
- } else if (ticket.description) {
627
- const lines = ticket.description.split('\n')
628
- .map((l) => l.trim())
629
- .filter((l) => /^(\d+\.|\*|\-|\-\s*\[[ x]\])/i.test(l));
630
- if (lines.length > 0) {
631
- steps = lines.map((l) => l.replace(/^(\d+\.|\*|\-\s*\[[ x]\]|\-)\s*/, '').trim());
632
- }
633
- }
634
-
635
- if (!steps.length) {
636
- if (ticket.title) {
637
- steps = [
638
- `Step 1: Understand context and isolate scope for "${ticket.title}"`,
639
- `Step 2: Implement focused changes with test-driven verification`,
640
- `Step 3: Run repository test suite and verify build integrity`,
641
- `Step 4: Commit changes with why-focused message linked to ${ticket.id || 'ticket'}`,
642
- `Step 5: Transition ticket ${ticket.id || ''} to shipped and finalize agent run`,
643
- ];
644
- } else {
645
- steps = [
646
- 'No active goal selected. Use `agentsam goap new "<title>"` or `agentsam goap switch <ticket_id>` to select a goal.',
647
- ];
648
- }
649
- }
650
-
651
- return [
652
- '================================================================================',
653
- ' GOAP OPERATIONAL ACTION PLAN ',
654
- '================================================================================',
655
- `Objective: ${ticket.title || 'No active goal selected'}`,
656
- `Active Ticket: ${ticket.id || ws.current_task_id || 'none'} [Priority: ${ticket.priority || 'P2'}]`,
657
- `Active Run: ${ticket.agent_run_id || run.id || 'none'}`,
658
- `Repository: ${state.repositoryId || git?.repoFullName || 'unknown'}`,
659
- '',
660
- 'PLANNED ACTION SEQUENCE:',
661
- ...steps.map((step, idx) => {
662
- const text = typeof step === 'string' ? step : step.text;
663
- const status = typeof step === 'string' ? 'open' : step.status;
664
- const prefix = text.startsWith('Step ') || /^\d+\./.test(text) ? '' : `Step ${idx + 1}: `;
665
- const marker = status === 'complete' ? 'x' : status === 'blocked' ? '!' : ' ';
666
- return ` [${marker}] ${prefix}${text}`;
667
- }),
668
- '================================================================================',
669
- ].join('\n');
670
- }
@@ -1,32 +0,0 @@
1
- # AgentSam Timeline Prototype
2
-
3
- `prototype-gnantt.html` renders from the WorkGraph demo — bars, board, list, and drawer are projections, not hardcoded markup.
4
-
5
- Flow:
6
-
7
- ```
8
- demo-workgraph.js
9
- |
10
- v
11
- workgraph-runtime.js / timeline-model.js
12
- |
13
- v
14
- prototype-gnantt.html (ES module bootstrap)
15
- ```
16
-
17
- The timeline is a projection of the graph, not the source of truth.
18
-
19
- Supported projections:
20
-
21
- - task timeline bars (status-colored)
22
- - agent / human owner lanes in the sidebar
23
- - evidence / artifact drawer data
24
- - timeline event markers
25
- - board + list views from the same work items
26
-
27
- Open locally (module imports need a static server):
28
-
29
- ```bash
30
- npx --yes serve -l 4173 .
31
- # then http://localhost:4173/prototype-gnantt.html
32
- ```