@inneranimalmedia/agentsam-sdk 2.6.3 → 2.6.5

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 (608) hide show
  1. package/AGENTSAM.md +17 -0
  2. package/README.md +31 -10
  3. package/apps/client-cms-editor/AGENTS.md +12 -0
  4. package/apps/client-cms-editor/IMPORT_PROVENANCE.json +8 -0
  5. package/apps/client-cms-editor/README.md +72 -0
  6. package/apps/client-cms-editor/agentsam.app.json +57 -0
  7. package/apps/client-cms-editor/backend/README.md +5 -0
  8. package/apps/client-cms-editor/backend/package.json +22 -0
  9. package/apps/client-cms-editor/backend/src/api/client.ts +200 -0
  10. package/apps/client-cms-editor/backend/src/demo-bootstrap.ts +145 -0
  11. package/apps/client-cms-editor/backend/src/index.ts +6 -0
  12. package/apps/client-cms-editor/backend/src/model.ts +115 -0
  13. package/apps/client-cms-editor/backend/src/preview/bridge.ts +79 -0
  14. package/apps/client-cms-editor/backend/src/preview/urls.ts +55 -0
  15. package/apps/client-cms-editor/backend/src/routing/cms-route.js +293 -0
  16. package/apps/client-cms-editor/backend/src/routing/index.js +10 -0
  17. package/apps/client-cms-editor/backend/src/storefront.ts +52 -0
  18. package/apps/client-cms-editor/backend/tsconfig.json +15 -0
  19. package/apps/client-cms-editor/backend/worker/index.js +34 -0
  20. package/apps/client-cms-editor/backend/wrangler.jsonc +11 -0
  21. package/apps/client-cms-editor/bin/agentsam-cms.mjs +229 -0
  22. package/apps/client-cms-editor/frontend/index.html +12 -0
  23. package/apps/client-cms-editor/frontend/package.json +33 -0
  24. package/apps/client-cms-editor/frontend/src/AgentSamDrawer.tsx +188 -0
  25. package/apps/client-cms-editor/frontend/src/CmsAgentSurface.tsx +191 -0
  26. package/apps/client-cms-editor/frontend/src/CmsEditor.tsx +1345 -0
  27. package/apps/client-cms-editor/frontend/src/env.d.ts +14 -0
  28. package/apps/client-cms-editor/frontend/src/index.ts +8 -0
  29. package/apps/client-cms-editor/frontend/src/lib/content-safety.ts +63 -0
  30. package/apps/client-cms-editor/frontend/src/main.tsx +17 -0
  31. package/apps/client-cms-editor/frontend/src/mount.tsx +51 -0
  32. package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +214 -0
  33. package/apps/client-cms-editor/frontend/src/styles/cmsShell.css +1739 -0
  34. package/apps/client-cms-editor/frontend/src/styles/studio.css +106 -0
  35. package/apps/client-cms-editor/frontend/src/surfaces/CmsDashboard.tsx +313 -0
  36. package/apps/client-cms-editor/frontend/src/surfaces/CmsGuidedChatHero.tsx +121 -0
  37. package/apps/client-cms-editor/frontend/src/surfaces/CmsHubPage.tsx +132 -0
  38. package/apps/client-cms-editor/frontend/src/surfaces/CmsSiteSwitcher.tsx +176 -0
  39. package/apps/client-cms-editor/frontend/src/surfaces/index.ts +5 -0
  40. package/apps/client-cms-editor/frontend/src/surfaces/types.ts +48 -0
  41. package/apps/client-cms-editor/frontend/tsconfig.json +25 -0
  42. package/apps/client-cms-editor/frontend/vite.config.ts +13 -0
  43. package/apps/client-cms-editor/package-lock.json +3832 -0
  44. package/apps/client-cms-editor/package.json +23 -0
  45. package/apps/client-cms-editor/reference/DONOR_README.md +52 -0
  46. package/apps/client-cms-editor/reference/DONOR_package-lock.json +1253 -0
  47. package/apps/client-cms-editor/reference/DONOR_tsconfig.json +15 -0
  48. package/apps/client-cms-editor/shared/cms/package.json +21 -0
  49. package/apps/client-cms-editor/shared/cms/src/agent-context.ts +35 -0
  50. package/apps/client-cms-editor/shared/cms/src/cloudflare-bindings.ts +51 -0
  51. package/apps/client-cms-editor/shared/cms/src/editor-types.ts +58 -0
  52. package/apps/client-cms-editor/shared/cms/src/index.ts +5 -0
  53. package/apps/client-cms-editor/shared/cms/src/publication.ts +24 -0
  54. package/apps/client-cms-editor/shared/cms/src/routes.ts +11 -0
  55. package/apps/client-cms-editor/shared/cms/tsconfig.json +12 -0
  56. package/bin/agentsam +16 -1
  57. package/bin/agentsam-rapid-rust +36 -0
  58. package/docs/AUTH_IDENTITY_CONTRACT.md +2 -0
  59. package/docs/BRAND_INTELLIGENCE.md +1 -1
  60. package/docs/MACHINE_INTELLIGENCE.md +120 -0
  61. package/docs/WINDOWS_RUNTIME_INSTALL.md +30 -0
  62. package/docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md +188 -0
  63. package/docs/architecture/AGENTSAM_DISTRIBUTION_OWNERSHIP.md +176 -0
  64. package/docs/architecture/AGENTSAM_GO_RUNTIME.md +282 -0
  65. package/docs/architecture/AGENTSAM_RUNTIME_PROTOCOL.md +151 -0
  66. package/docs/architecture/CODEBASEINDEX_GUIDED_PATH.md +202 -0
  67. package/docs/architecture/FS_E2E_CLOSURE_RECEIPT.md +59 -0
  68. package/docs/architecture/LOCAL_FS_AUTHORITY.md +38 -0
  69. package/docs/architecture/LOCAL_STUDIO_CLOUDFLARE_OAUTH.md +36 -0
  70. package/docs/architecture/PLAN_CLI_AND_LOCAL_STUDIO_DESKTOP.md +96 -0
  71. package/docs/architecture/R2_SLUG_NAMESPACE.md +20 -0
  72. package/docs/architecture/SAM_ACTIVITY_RECOVERY_RECEIPT.md +39 -0
  73. package/docs/architecture/SAM_DECISION_WORK_RECEIPT.md +54 -0
  74. package/docs/architecture/SAM_KERNEL.md +181 -0
  75. package/docs/architecture/SAM_MACHINE_NORMALIZATION_PRECOMMIT_REPORT.md +208 -0
  76. package/docs/architecture/SLASH_SKILLS_PORTABLE.md +116 -0
  77. package/docs/architecture/WORK_PRODUCT_EXTRACTION.md +97 -0
  78. package/docs/architecture/fs-e2e-receipt.latest.json +42 -0
  79. package/docs/architecture/previews/codebaseindex-guided-path/CODEBASEINDEX_GUIDED_PATH.md +202 -0
  80. package/docs/architecture/previews/codebaseindex-guided-path/index.html +321 -0
  81. package/docs/brand/AGENT_SAM_ICON_GRAMMAR.md +70 -0
  82. package/docs/content-studio/HOST_MOUNT_CHECKLIST.md +71 -0
  83. package/docs/content-studio/REVISION_GATE_2026-09-27.md +501 -0
  84. package/docs/contracts/capability-install-planner.md +67 -0
  85. package/docs/contracts/environment-vocabulary.md +195 -0
  86. package/docs/contracts/google-cloud-oauth-setup.md +199 -0
  87. package/docs/local-studio/WORKMODE_DONOR_NOTES.md +1 -1
  88. package/docs/plans/LOCAL-STUDIO-GRADUATION-2026-09-26.md +290 -0
  89. package/docs/plans/LOCAL-STUDIO-REAL-APP-CONTRACT-ADDENDUM-2026-09-27.md +394 -0
  90. package/docs/plans/MACHINE-FIRST-APPS-TUI-2026-09-24.md +227 -0
  91. package/docs/plans/TOMORROW-EXTENSIVE-TODO-2026-09-26.md +221 -0
  92. package/docs/plans/TOMORROW-MACHINE-FIRST-BRIEFING.md +145 -0
  93. package/docs/plans/UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md +215 -0
  94. package/docs/plugins.md +2 -2
  95. package/docs/product/AGENTSAM_PRODUCT_EXPERIENCE_STANDARD.md +280 -0
  96. package/docs/product/LOCAL_STUDIO_DESKTOP_EXPERIENCE.md +139 -0
  97. package/docs/product/README.md +8 -0
  98. package/docs/rapid-rust-wasm.md +35 -0
  99. package/migrations/d1/0010_portable_tickets_memory.sql +140 -0
  100. package/migrations/d1/0011_agentsam_skill_v2.sql +185 -0
  101. package/migrations/d1/0011b_agentsam_skill_v2_cutover.sql +22 -0
  102. package/migrations/d1/0011c_agentsam_skill_v2_backfill.sql +76 -0
  103. package/migrations/d1/0011d_agentsam_skill_v2_retrieval_revisions.sql +50 -0
  104. package/migrations/d1/0012_agentsam_tools_required_seed.sql +67 -0
  105. package/migrations/d1/0013_identity_oauth_states.sql +15 -0
  106. package/migrations/d1/0014_auth_event_log.sql +20 -0
  107. package/migrations/d1/0015_identity_oauth_state_app_id.sql +3 -0
  108. package/migrations/d1/0016_cloudflare_oauth_user_oauth_tokens_ssot.sql +14 -0
  109. package/migrations/d1/README_PORTABLE_CONTROL_PLANE.md +16 -0
  110. package/migrations/sqlite/agentsam_skill_retrieval.portable.sql +42 -0
  111. package/package.json +88 -14
  112. package/packages/agentsam-brand/README.md +106 -11
  113. package/packages/agentsam-brand/bin/agentsam-brand.mjs +9 -0
  114. package/packages/agentsam-brand/package.json +39 -7
  115. package/packages/agentsam-brand/src/adapters/cloudflare-images.js +453 -0
  116. package/packages/agentsam-brand/src/adapters/cloudflare-r2.js +74 -0
  117. package/packages/agentsam-brand/src/adapters/d1-registry.js +26 -0
  118. package/packages/agentsam-brand/src/adapters/filesystem.js +59 -0
  119. package/packages/agentsam-brand/src/adapters/memory.js +31 -0
  120. package/packages/agentsam-brand/src/cli/controller.js +503 -0
  121. package/packages/agentsam-brand/src/cli/wizard.js +526 -0
  122. package/packages/agentsam-brand/src/core/capabilities.js +201 -0
  123. package/packages/agentsam-brand/src/core/derivatives.js +211 -0
  124. package/packages/agentsam-brand/src/core/errors.js +12 -0
  125. package/packages/agentsam-brand/src/core/ingest.js +195 -0
  126. package/packages/agentsam-brand/src/core/inspect.js +109 -0
  127. package/packages/agentsam-brand/src/core/keys.js +83 -0
  128. package/packages/agentsam-brand/src/core/naming.js +142 -0
  129. package/packages/agentsam-brand/src/core/optimize.js +316 -0
  130. package/packages/agentsam-brand/src/core/pack.js +305 -0
  131. package/packages/agentsam-brand/src/core/plan.js +276 -0
  132. package/packages/agentsam-brand/src/core/preview.js +159 -0
  133. package/packages/agentsam-brand/src/core/processors/cloudflare.js +68 -0
  134. package/packages/agentsam-brand/src/core/processors/contract.js +203 -0
  135. package/packages/agentsam-brand/src/core/processors/index.js +148 -0
  136. package/packages/agentsam-brand/src/core/processors/native.js +82 -0
  137. package/packages/agentsam-brand/src/core/processors/sharp.js +113 -0
  138. package/packages/agentsam-brand/src/core/processors/squoosh-binary.js +195 -0
  139. package/packages/agentsam-brand/src/core/promote.js +288 -0
  140. package/packages/agentsam-brand/src/core/receipts.js +155 -0
  141. package/packages/agentsam-brand/src/core/v2/compile.js +280 -0
  142. package/packages/agentsam-brand/src/core/v2/derivatives-semantic.js +207 -0
  143. package/packages/agentsam-brand/src/core/v2/ingest-graph.js +387 -0
  144. package/packages/agentsam-brand/src/core/v2/roles.js +180 -0
  145. package/packages/agentsam-brand/src/core/v2/schema.js +209 -0
  146. package/packages/agentsam-brand/src/core/v2/templates.js +114 -0
  147. package/packages/agentsam-brand/src/index.js +193 -36
  148. package/packages/agentsam-brand/src/presets/app-icon.json +16 -0
  149. package/packages/agentsam-brand/src/presets/favicon.json +17 -0
  150. package/packages/agentsam-brand/src/presets/hero.json +12 -0
  151. package/packages/agentsam-brand/src/presets/index.js +40 -0
  152. package/packages/agentsam-brand/src/presets/logo.json +12 -0
  153. package/packages/agentsam-brand/src/presets/model.json +8 -0
  154. package/packages/agentsam-brand/src/presets/og-image.json +10 -0
  155. package/packages/agentsam-brand/src/presets/product-shot.json +11 -0
  156. package/packages/agentsam-brand/src/presets/social-image.json +10 -0
  157. package/packages/agentsam-brand/src/presets/web-image.json +10 -0
  158. package/packages/agentsam-contracts/src/artifacts.ts +41 -0
  159. package/packages/agentsam-contracts/src/errors.ts +16 -0
  160. package/packages/agentsam-errors/src/envelope.js +53 -0
  161. package/packages/agentsam-errors/src/index.js +1 -0
  162. package/packages/agentsam-errors/src/recovery.js +301 -0
  163. package/packages/agentsam-knowledge/src/autorag/index.js +1 -1
  164. package/packages/agentsam-knowledge/src/providers/index.js +20 -6
  165. package/packages/agentsam-knowledge/src/providers/ollama-endpoint.js +31 -0
  166. package/packages/agentsam-knowledge/test/autorag.test.mjs +22 -1
  167. package/packages/agentsam-nav/package.json +2 -2
  168. package/packages/agentsam-rapid-rust/Cargo.lock +344 -0
  169. package/packages/agentsam-rapid-rust/Cargo.toml +18 -0
  170. package/packages/agentsam-rapid-rust/README.md +5 -0
  171. package/packages/agentsam-rapid-rust/src/main.rs +718 -0
  172. package/packages/agentsam-rapid-rust/templates/api/Cargo.toml.tmpl +18 -0
  173. package/packages/agentsam-rapid-rust/templates/api/src/lib.rs.tmpl +17 -0
  174. package/packages/agentsam-rapid-rust/templates/common/README.md.tmpl +22 -0
  175. package/packages/agentsam-rapid-rust/templates/common/package.json.tmpl +12 -0
  176. package/packages/agentsam-rapid-rust/templates/common/wrangler.toml.tmpl +6 -0
  177. package/packages/agentsam-rapid-rust/templates/crypto-auth/Cargo.toml.tmpl +21 -0
  178. package/packages/agentsam-rapid-rust/templates/crypto-auth/src/lib.rs.tmpl +32 -0
  179. package/packages/agentsam-rapid-rust/templates/data-processor/Cargo.toml.tmpl +18 -0
  180. package/packages/agentsam-rapid-rust/templates/data-processor/src/lib.rs.tmpl +41 -0
  181. package/packages/agentsam-rapid-rust/templates/shared-core/Cargo.toml.tmpl +9 -0
  182. package/packages/agentsam-rapid-rust/templates/shared-core/core/Cargo.toml.tmpl +7 -0
  183. package/packages/agentsam-rapid-rust/templates/shared-core/core/src/lib.rs.tmpl +23 -0
  184. package/packages/agentsam-rapid-rust/templates/shared-core/worker/Cargo.toml.tmpl +12 -0
  185. package/packages/agentsam-rapid-rust/templates/shared-core/worker/src/lib.rs.tmpl +16 -0
  186. package/packages/agentsam-rapid-rust/templates/shared-core/wrangler.toml.tmpl +6 -0
  187. package/packages/agentsam-repository/src/index.js +1 -0
  188. package/packages/agentsam-repository/src/merkle/semantic.js +3 -10
  189. package/packages/agentsam-repository/src/source-types.js +85 -0
  190. package/packages/agentsam-vault/README.md +96 -0
  191. package/packages/agentsam-vault/package.json +32 -0
  192. package/packages/agentsam-vault/src/contracts/credential.d.ts +78 -0
  193. package/packages/agentsam-vault/src/contracts/credential.js +132 -0
  194. package/packages/agentsam-vault/src/crypto/aes-gcm.d.ts +30 -0
  195. package/packages/agentsam-vault/src/crypto/aes-gcm.js +107 -0
  196. package/packages/agentsam-vault/src/crypto/oauth-envelope.js +150 -0
  197. package/packages/agentsam-vault/src/index.d.ts +9 -0
  198. package/packages/agentsam-vault/src/index.js +27 -0
  199. package/packages/agentsam-vault/src/providers/registry.js +90 -0
  200. package/packages/agentsam-vault/src/runtime/resolver.js +77 -0
  201. package/packages/agentsam-workbench/README.md +24 -0
  202. package/packages/agentsam-workbench/package.json +38 -0
  203. package/packages/agentsam-workbench/src/agent/AgentPanel.tsx +41 -0
  204. package/packages/agentsam-workbench/src/agent/ArtifactCard.tsx +9 -0
  205. package/packages/agentsam-workbench/src/agent/Composer.tsx +102 -0
  206. package/packages/agentsam-workbench/src/agent/ConnectedAgentPanel.tsx +194 -0
  207. package/packages/agentsam-workbench/src/agent/ContextualComposer.tsx +788 -0
  208. package/packages/agentsam-workbench/src/agent/GoalStatusStrip.tsx +38 -0
  209. package/packages/agentsam-workbench/src/agent/MiniAgentSam.tsx +86 -0
  210. package/packages/agentsam-workbench/src/agent/ModelSelect.tsx +19 -0
  211. package/packages/agentsam-workbench/src/agent/Thread.tsx +56 -0
  212. package/packages/agentsam-workbench/src/agent/ToolReceipt.tsx +11 -0
  213. package/packages/agentsam-workbench/src/agent/contextual-composer.css +611 -0
  214. package/packages/agentsam-workbench/src/agent/index.ts +10 -0
  215. package/packages/agentsam-workbench/src/agent/mini-agentsam.css +12 -0
  216. package/packages/agentsam-workbench/src/browser/BrowserFrame.tsx +37 -0
  217. package/packages/agentsam-workbench/src/browser/index.ts +1 -0
  218. package/packages/agentsam-workbench/src/index.ts +6 -0
  219. package/packages/agentsam-workbench/src/project-control.css +160 -0
  220. package/packages/agentsam-workbench/src/projects/ProjectsSurface.tsx +131 -0
  221. package/packages/agentsam-workbench/src/projects/index.ts +1 -0
  222. package/packages/agentsam-workbench/src/shell/Breadcrumb.tsx +35 -0
  223. package/packages/agentsam-workbench/src/shell/ResizableStage.tsx +99 -0
  224. package/packages/agentsam-workbench/src/shell/SidePanel.tsx +5 -0
  225. package/packages/agentsam-workbench/src/shell/index.ts +4 -0
  226. package/packages/agentsam-workbench/src/shell/surfaceRegistry.ts +29 -0
  227. package/packages/agentsam-workbench/src/terminal/TerminalSurface.tsx +5 -0
  228. package/packages/agentsam-workbench/src/terminal/index.ts +1 -0
  229. package/packages/agentsam-workbench/src/timeline/GanttBoard.tsx +258 -0
  230. package/packages/agentsam-workbench/src/timeline/index.ts +1 -0
  231. package/packages/agentsam-workbench/tsconfig.json +13 -0
  232. package/packages/connectors/cloudflare/OAUTH_STORAGE_AUDIT.md +53 -0
  233. package/packages/connectors/cloudflare/package.json +3 -1
  234. package/packages/connectors/cloudflare/src/api-client.js +279 -0
  235. package/packages/connectors/cloudflare/src/capabilities.js +585 -0
  236. package/packages/connectors/cloudflare/src/credential.js +318 -0
  237. package/packages/connectors/cloudflare/src/families/brand-protection.js +123 -0
  238. package/packages/connectors/cloudflare/src/families/keyless.js +114 -0
  239. package/packages/connectors/cloudflare/src/families/pages.js +151 -0
  240. package/packages/connectors/cloudflare/src/families/scanner.js +123 -0
  241. package/packages/connectors/cloudflare/src/families/snippets.js +207 -0
  242. package/packages/connectors/cloudflare/src/families/tag-gateway.js +46 -0
  243. package/packages/connectors/cloudflare/src/families/tags.js +124 -0
  244. package/packages/connectors/cloudflare/src/families/token-validation.js +95 -0
  245. package/packages/connectors/cloudflare/src/families/workflows.js +156 -0
  246. package/packages/connectors/cloudflare/src/index.js +102 -265
  247. package/packages/connectors/cloudflare/src/oauth-persist.js +336 -0
  248. package/packages/connectors/cloudflare/src/owner.js +42 -12
  249. package/packages/connectors/cloudflare/src/permission-options.js +1064 -0
  250. package/packages/connectors/cloudflare/src/routes.js +318 -144
  251. package/packages/connectors/cloudflare/src/scope-catalog.js +345 -0
  252. package/packages/connectors/cloudflare/src/vault.js +2 -2
  253. package/packages/connectors/cloudflare/tests/capabilities.test.mjs +276 -0
  254. package/packages/connectors/cloudflare/tests/connector.test.mjs +51 -30
  255. package/packages/connectors/cloudflare/tests/oauth-persist.test.mjs +125 -0
  256. package/packages/identity/.agentsam/features/oauth-login-portal/agentsam.feature.json +1 -1
  257. package/packages/identity/.agentsam/features/oauth-login-portal/providers.json +22 -2
  258. package/packages/identity/.agentsam/features/oauth-login-portal/resources.json +10 -4
  259. package/packages/identity/.agentsam/features/oauth-login-portal/routes.json +31 -2
  260. package/packages/identity/README.md +1 -1
  261. package/packages/identity/backend/README.md +1 -1
  262. package/packages/identity/docs/PORTABLE_IDENTITY_ARCHITECTURE.md +50 -0
  263. package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +32 -0
  264. package/packages/identity/migrations/sqlite/001_identity_core.sql +99 -0
  265. package/packages/identity/migrations/sqlite/002_identity_oauth_client.sql +38 -0
  266. package/packages/identity/migrations/sqlite/003_identity_oauth_server.sql +64 -0
  267. package/packages/identity/migrations/sqlite/004_identity_oauth_consent_catalog.sql +48 -0
  268. package/packages/identity/package.json +3 -2
  269. package/packages/identity/scripts/local-identity-bridge.mjs +184 -0
  270. package/packages/identity/scripts/preview-auth-portal.mjs +7 -7
  271. package/packages/identity/src/adapters/cloudflare-d1/index.js +153 -24
  272. package/packages/identity/src/adapters/sqlite/index.js +322 -0
  273. package/packages/identity/src/app/verify-app.js +95 -0
  274. package/packages/identity/src/contracts/auth-config.js +28 -8
  275. package/packages/identity/src/contracts/external-identity.js +1 -1
  276. package/packages/identity/src/contracts/identity-store.js +115 -0
  277. package/packages/identity/src/contracts/provider.js +1 -0
  278. package/packages/identity/src/contracts/route-ids.js +30 -0
  279. package/packages/identity/src/contracts/route-projection.js +218 -0
  280. package/packages/identity/src/contracts/routes.js +11 -0
  281. package/packages/identity/src/core/browser-paths.js +4 -5
  282. package/packages/identity/src/core/constants.js +13 -8
  283. package/packages/identity/src/core/session-policy.js +32 -0
  284. package/packages/identity/src/frontend/auth-portal/README.md +2 -1
  285. package/packages/identity/src/frontend/auth-portal/pages/login.html +16 -15
  286. package/packages/identity/src/frontend/auth-portal/pages/reset.html +9 -8
  287. package/packages/identity/src/frontend/auth-portal/pages/signup.html +9 -8
  288. package/packages/identity/src/frontend/auth-portal/preview/dashboard-stub.html +1 -1
  289. package/packages/identity/src/frontend/auth-portal/shared/company-branding.js +1 -1
  290. package/packages/identity/src/frontend/auth-portal/shared/desktop-identity-bridge.js +207 -0
  291. package/packages/identity/src/index.js +41 -0
  292. package/packages/identity/src/migrations/0001_identity_core.sql +19 -2
  293. package/packages/identity/src/migrations/0003_accounts_ssot.sql +20 -0
  294. package/packages/identity/src/migrations/README.md +5 -2
  295. package/packages/identity/src/oauth/README.md +19 -8
  296. package/packages/identity/src/oauth/consent-view.js +388 -0
  297. package/packages/identity/src/oauth/credentials.js +46 -19
  298. package/packages/identity/src/oauth/finalize-inbound.js +1 -1
  299. package/packages/identity/src/oauth/google-desktop-exchange.js +173 -0
  300. package/packages/identity/src/oauth/iam-platform.js +8 -7
  301. package/packages/identity/src/oauth/redirect-paths.js +27 -36
  302. package/packages/identity/src/providers/cloudflare/oauth.js +3 -4
  303. package/packages/identity/src/providers/cloudflare/profile.js +49 -14
  304. package/packages/identity/src/providers/iam/index.js +27 -5
  305. package/packages/identity/src/server/identity-service.js +61 -15
  306. package/packages/identity/src/server/mount-policy.js +30 -0
  307. package/packages/identity/src/server/post-auth.js +79 -0
  308. package/packages/identity/src/server/worker-router.js +208 -146
  309. package/packages/identity/tests/auth-config.test.mjs +3 -2
  310. package/packages/identity/tests/finalize-inbound-oauth.test.mjs +6 -6
  311. package/packages/identity/tests/iam-provider.test.mjs +1 -1
  312. package/packages/identity/tests/identity-init-scaffold.test.mjs +3 -0
  313. package/packages/identity/tests/identity-service.test.mjs +52 -5
  314. package/packages/identity/tests/native-session-worker.test.mjs +64 -0
  315. package/packages/identity/tests/oauth-consent-view.test.mjs +106 -0
  316. package/packages/identity/tests/oauth-credentials.test.mjs +20 -5
  317. package/packages/identity/tests/oauth-presets-accounts-ssot.test.mjs +58 -0
  318. package/packages/identity/tests/portable-identity-architecture.test.mjs +157 -0
  319. package/packages/identity/tests/preview-auth-portal.test.mjs +3 -3
  320. package/packages/identity/tests/session-routes-policy.test.mjs +21 -0
  321. package/packages/runtime-protocol/src/index.js +154 -0
  322. package/packages/theme-church-site/package.json +2 -1
  323. package/packages/theme-church-site/src/index.js +1 -0
  324. package/packages/theme-companions-site/package.json +2 -1
  325. package/packages/theme-companions-site/src/index.js +1 -0
  326. package/packages/theme-floors-site/package.json +2 -1
  327. package/packages/theme-floors-site/src/index.js +1 -0
  328. package/packages/theme-fuelnfree-site/package.json +2 -1
  329. package/packages/theme-fuelnfree-site/src/index.js +1 -0
  330. package/packages/theme-handyman-site/package.json +2 -1
  331. package/packages/theme-handyman-site/src/index.js +1 -0
  332. package/packages/theme-insurance-site/package.json +2 -1
  333. package/packages/theme-insurance-site/src/index.js +1 -0
  334. package/packages/theme-scenes/README.md +164 -0
  335. package/packages/theme-scenes/package.json +53 -0
  336. package/packages/theme-scenes/src/blocks/index.js +30 -0
  337. package/packages/theme-scenes/src/contracts/index.js +286 -0
  338. package/packages/theme-scenes/src/demos/index.js +65 -0
  339. package/packages/theme-scenes/src/index.js +75 -0
  340. package/packages/theme-scenes/src/presets/index.js +263 -0
  341. package/packages/theme-scenes/src/runtime/compile.js +119 -0
  342. package/packages/theme-scenes/src/scenes/index.js +146 -0
  343. package/packages/theme-scenes/src/shell/index.js +47 -0
  344. package/packages/theme-scenes/src/themes/index.js +129 -0
  345. package/packages/theme-scenes/src/visuals/index.js +41 -0
  346. package/packages/theme-scenes/test/theme-scenes.test.mjs +179 -0
  347. package/packages/theme-shinshu-site/package.json +2 -1
  348. package/packages/theme-shinshu-site/src/index.js +1 -0
  349. package/packages/work-graph/src/index.js +34 -1
  350. package/packages/work-graph/src/renderers/gantt-model.js +24 -0
  351. package/packages/work-graph/test/work-graph.test.mjs +27 -7
  352. package/protocol/README.md +15 -7
  353. package/protocol/apps/agentsam.app.v1.schema.json +133 -0
  354. package/protocol/apps/agentsam.host-install.v1.schema.json +36 -0
  355. package/protocol/assets/README.md +9 -0
  356. package/protocol/assets/asset-record.v1.schema.json +64 -0
  357. package/protocol/brand/brandpack.v1.schema.json +43 -0
  358. package/protocol/credentials/issue.v1.schema.json +38 -0
  359. package/protocol/database/connection.v1.schema.json +41 -0
  360. package/protocol/embeddings/embedding-profile.v1.schema.json +20 -0
  361. package/protocol/errors/error-envelope.schema.json +135 -1
  362. package/protocol/errors/recovery.v1.schema.json +50 -0
  363. package/protocol/runtime/agentsam.runtime.v1.schema.json +75 -0
  364. package/protocol/runtime/workspace-fs.v1.schema.json +71 -0
  365. package/protocol/sam/activity.v1.schema.json +48 -0
  366. package/protocol/sam/answer.v1.schema.json +35 -0
  367. package/protocol/sam/calibration.v1.schema.json +21 -0
  368. package/protocol/sam/decision-receipt.v1.schema.json +29 -0
  369. package/protocol/sam/evaluation.v1.schema.json +19 -0
  370. package/protocol/sam/operation.schema.json +66 -0
  371. package/protocol/sam/outcome.v1.schema.json +36 -0
  372. package/protocol/sam/question.v1.schema.json +26 -0
  373. package/protocol/sam/registry.seed.json +153 -0
  374. package/protocol/sam/result.schema.json +53 -0
  375. package/protocol/sam/state.v1.schema.json +23 -0
  376. package/protocol/scoring/README.md +10 -0
  377. package/protocol/scoring/scorecard.v1.schema.json +65 -0
  378. package/protocol/skills/agentsam.interaction.v1.schema.json +50 -0
  379. package/protocol/skills/agentsam.skill.v1.schema.json +57 -0
  380. package/protocol/ui/icon-registry.mjs +227 -0
  381. package/protocol/ui/icon.v1.schema.json +51 -0
  382. package/registry/cms-rust-machine-20260928/installable-products.json +31 -0
  383. package/registry/cms-rust-machine-20260928/manifest.json +22 -0
  384. package/registry/cms-rust-machine-20260928/migration.sql +237 -0
  385. package/registry/cms-rust-machine-20260928/receipt.json +21 -0
  386. package/registry/cms-rust-machine-20260928/receipt.sql +27 -0
  387. package/scripts/build_rapid_rust_cli.py +83 -0
  388. package/skills/README.md +22 -9
  389. package/skills/agentsam-codebaseindex/SKILL.md +225 -0
  390. package/skills/catalog.json +14 -0
  391. package/src/attachments/index.js +6 -0
  392. package/src/attachments/intake.js +235 -0
  393. package/src/capabilities/repository-snapshot.js +19 -2
  394. package/src/cli/command-catalog.js +138 -0
  395. package/src/cli/dispatch.js +48 -0
  396. package/src/cli.js +225 -27
  397. package/src/commands/account-auth.js +94 -8
  398. package/src/commands/api-key.js +244 -0
  399. package/src/commands/app.js +365 -29
  400. package/src/commands/billing.js +127 -0
  401. package/src/commands/brand.js +86 -74
  402. package/src/commands/cheat-sheet.js +154 -0
  403. package/src/commands/cloudflare-login.js +222 -0
  404. package/src/commands/cloudflare.js +453 -23
  405. package/src/commands/codebaseindex.js +693 -0
  406. package/src/commands/compute.js +4 -0
  407. package/src/commands/connections.js +11 -5
  408. package/src/commands/credentials.js +116 -0
  409. package/src/commands/env.js +152 -25
  410. package/src/commands/gcloud-auth.js +427 -0
  411. package/src/commands/go.js +366 -53
  412. package/src/commands/google-cloud.js +375 -0
  413. package/src/commands/identity-init.js +2 -2
  414. package/src/commands/interaction-clack.js +115 -0
  415. package/src/commands/mcp.js +226 -33
  416. package/src/commands/models.js +1 -1
  417. package/src/commands/ollama.js +3 -2
  418. package/src/commands/plugins.js +7 -2
  419. package/src/commands/product.js +36 -0
  420. package/src/commands/providers.js +62 -14
  421. package/src/commands/runtime-status.js +28 -9
  422. package/src/commands/runtime.js +313 -0
  423. package/src/commands/rust.js +24 -0
  424. package/src/commands/setup.js +279 -0
  425. package/src/commands/shell.js +59 -5
  426. package/src/commands/skill.js +248 -0
  427. package/src/commands/skills.js +1 -1
  428. package/src/commands/start-local.js +6 -2
  429. package/src/commands/terminal.js +171 -0
  430. package/src/commands/update.js +140 -0
  431. package/src/commands/whoami.js +392 -56
  432. package/src/features/resolve.js +1 -0
  433. package/src/go/build.js +229 -39
  434. package/src/go/cloudflare.js +506 -105
  435. package/src/go/container.js +120 -0
  436. package/src/go/contract.js +9 -4
  437. package/src/go/discover.js +149 -33
  438. package/src/go/index.js +15 -3
  439. package/src/go/native-probe-runner.mjs +119 -0
  440. package/src/go/{registry.js → official-registry.js} +64 -7
  441. package/src/go/official-release.js +10 -0
  442. package/src/go/receipts.js +77 -10
  443. package/src/go/verify.js +9 -2
  444. package/src/index.js +31 -0
  445. package/src/indexing/ingest/discover-models.js +298 -0
  446. package/src/indexing/ingest/inventory.js +478 -0
  447. package/src/indexing/ingest/job-graph.js +181 -0
  448. package/src/indexing/ingest/materials.js +204 -0
  449. package/src/indexing/ingest/style-evidence.js +181 -0
  450. package/src/knowledge/source.js +3 -3
  451. package/src/lib/account-session.js +11 -4
  452. package/src/lib/app-authority.js +172 -0
  453. package/src/lib/auth.js +94 -21
  454. package/src/lib/core-client.js +5 -6
  455. package/src/lib/credentials-audit.js +451 -0
  456. package/src/lib/deploy/health.js +24 -6
  457. package/src/lib/detect-context.js +7 -1
  458. package/src/lib/google-cloud-connection.js +270 -0
  459. package/src/lib/google-cloud-inventory.js +385 -0
  460. package/src/lib/google-desktop-oauth.js +372 -0
  461. package/src/lib/google-studio-brokered-oauth.js +158 -0
  462. package/src/lib/identity-scaffold.js +24 -6
  463. package/src/lib/init-options.js +192 -0
  464. package/src/lib/local-scaffold.js +48 -16
  465. package/src/lib/provider-command-remediation.js +308 -0
  466. package/src/lib/provider-credentials.js +71 -21
  467. package/src/lib/scaffold/index.js +8 -2
  468. package/src/lib/scaffold/mcp-server.js +43 -0
  469. package/src/lib/scaffold/templates/mcp-server/index.js +397 -0
  470. package/src/lib/scaffold/templates/mcp-server/presets.js +39 -0
  471. package/src/lib/scaffold/wizards/cms.js +93 -0
  472. package/src/lib/scaffold/wizards/mcp-server.js +61 -0
  473. package/src/lib/setup/contract.js +26 -0
  474. package/src/lib/setup/discover.js +116 -0
  475. package/src/lib/setup/execute.js +205 -0
  476. package/src/lib/setup/planner.js +134 -0
  477. package/src/lib/setup/recipes.js +235 -0
  478. package/src/lib/setup/runtime-persist.js +197 -0
  479. package/src/lib/setup/runtime.js +394 -0
  480. package/src/lib/slash-commands.js +3 -0
  481. package/src/lib/terminal/machine-identity.js +95 -0
  482. package/src/lib/terminal-local.js +164 -0
  483. package/src/lib/terminal-scopes.js +52 -0
  484. package/src/lib/whoami-capabilities.js +184 -0
  485. package/src/local-fs/capability.js +121 -0
  486. package/src/local-fs/freshness.js +75 -0
  487. package/src/local-fs/index.js +385 -0
  488. package/src/local-fs/paths.js +100 -0
  489. package/src/local-pty/server.js +326 -21
  490. package/src/mcp/authority.js +58 -108
  491. package/src/mcp/client-adapters.js +68 -144
  492. package/src/mcp/client.js +142 -122
  493. package/src/mcp/cloudflare-bundles.js +225 -0
  494. package/src/mcp/index.js +12 -0
  495. package/src/models/ai-access-onboarding.js +112 -0
  496. package/src/models/discovery.js +10 -2
  497. package/src/models/inventory-core.js +9 -1
  498. package/src/plugins/cloudflare.js +1 -1
  499. package/src/providers/ollama-chat.js +2 -1
  500. package/src/sam/activity/index.js +183 -0
  501. package/src/sam/client.js +252 -0
  502. package/src/sam/decision/calibration.js +109 -0
  503. package/src/sam/decision/confidence.js +126 -0
  504. package/src/sam/decision/evaluate.js +157 -0
  505. package/src/sam/decision/evaluators/deterministic.js +341 -0
  506. package/src/sam/decision/evaluators/heuristic.js +61 -0
  507. package/src/sam/decision/evaluators/select.js +50 -0
  508. package/src/sam/decision/evaluators/semantic.js +149 -0
  509. package/src/sam/decision/hierarchical.js +61 -0
  510. package/src/sam/decision/index.js +53 -0
  511. package/src/sam/decision/policy.js +86 -0
  512. package/src/sam/decision/questions.js +120 -0
  513. package/src/sam/decision/receipt.js +148 -0
  514. package/src/sam/decision/state.js +117 -0
  515. package/src/sam/decision/types.js +22 -0
  516. package/src/sam/decision/validate.js +200 -0
  517. package/src/sam/define.js +51 -0
  518. package/src/sam/index.js +65 -0
  519. package/src/sam/operations/brand-scan.js +62 -0
  520. package/src/sam/operations/cad-blender-inspect.js +36 -0
  521. package/src/sam/operations/codebaseindex-ingest.js +49 -0
  522. package/src/sam/operations/decision-evaluate.js +59 -0
  523. package/src/sam/operations/planning-astar.js +77 -0
  524. package/src/sam/operations/planning-goap.js +60 -0
  525. package/src/sam/operations/repository-inspect.js +72 -0
  526. package/src/sam/operations/security-scan.js +33 -0
  527. package/src/sam/operations/terminal-exec.js +29 -0
  528. package/src/sam/planning/astar.js +311 -0
  529. package/src/sam/planning/goap.js +177 -0
  530. package/src/sam/planning/index.js +21 -0
  531. package/src/sam/planning/state.js +84 -0
  532. package/src/sam/registry.js +48 -0
  533. package/src/sam/result.js +77 -0
  534. package/src/sam/seed.js +44 -0
  535. package/src/sam/types.js +116 -0
  536. package/src/security/inventory.js +12 -2
  537. package/src/security/local-vault.js +2 -0
  538. package/src/security/scan.js +1 -1
  539. package/src/skills/catalog.js +64 -0
  540. package/src/skills/content-resolver.js +124 -0
  541. package/src/skills/hosted-store.js +37 -0
  542. package/src/skills/index.js +29 -64
  543. package/src/skills/interaction.js +102 -0
  544. package/src/skills/local-store.js +228 -0
  545. package/src/skills/manifest.js +104 -0
  546. package/src/skills/metrics.js +31 -0
  547. package/src/skills/registry.js +184 -0
  548. package/src/skills/runtime.js +287 -0
  549. package/src/skills/slash.js +44 -0
  550. package/src/ui/cli/help.js +94 -101
  551. package/test/account-session.test.mjs +3 -3
  552. package/test/app-authority-context.test.mjs +32 -0
  553. package/test/cli/api-key-env-whoami.test.mjs +129 -0
  554. package/test/cli/codebaseindex-plan-ux.test.mjs +37 -0
  555. package/test/cli/go.test.mjs +62 -5
  556. package/test/cli/mcp-client.test.mjs +21 -10
  557. package/test/cli/runtime-persist.test.mjs +56 -0
  558. package/test/cli/rust-command.test.mjs +21 -0
  559. package/test/cli/skill-npm-and-env.test.mjs +52 -0
  560. package/test/cli/wireframes-go-registry.test.mjs +87 -2
  561. package/test/credentials-audit.test.mjs +113 -0
  562. package/test/deploy-health-scan.test.mjs +29 -1
  563. package/test/gcloud-auth.test.mjs +111 -0
  564. package/test/go/build-source-identity.test.mjs +31 -0
  565. package/test/go/cloudflare-probe.test.mjs +274 -10
  566. package/test/go/distribution.test.mjs +28 -0
  567. package/test/google-cloud-connection.test.mjs +83 -0
  568. package/test/google-cloud-inventory.test.mjs +64 -0
  569. package/test/init-options.test.mjs +35 -0
  570. package/test/integration/ai-access-onboarding.test.mjs +47 -0
  571. package/test/integration/app-command.test.mjs +30 -0
  572. package/test/integration/cad-project.test.mjs +4 -1
  573. package/test/integration/cli-help.test.mjs +1 -1
  574. package/test/integration/cms-app-scaffold.test.mjs +71 -0
  575. package/test/integration/cms-site-tenancy-contract.test.mjs +9 -8
  576. package/test/integration/codebaseindex-ingest.test.mjs +214 -0
  577. package/test/integration/features-resolve.test.mjs +30 -11
  578. package/test/integration/icon-registry.test.mjs +67 -0
  579. package/test/integration/ingest-discover-models.test.mjs +30 -0
  580. package/test/integration/inspect-path-cli.test.mjs +46 -0
  581. package/test/integration/install-script.test.mjs +12 -9
  582. package/test/integration/inventory-evidence.test.mjs +125 -0
  583. package/test/integration/local-fs.test.mjs +113 -0
  584. package/test/integration/provider-env-cli.test.mjs +2 -1
  585. package/test/integration/runtime-status.integration.test.mjs +2 -1
  586. package/test/integration/sam-activity-recovery.test.mjs +147 -0
  587. package/test/integration/sam-decision.test.mjs +584 -0
  588. package/test/integration/sam-kernel.test.mjs +99 -0
  589. package/test/integration/sam-planning-astar.test.mjs +279 -0
  590. package/test/integration/skill-runtime.test.mjs +240 -0
  591. package/test/integration/studio-fs-pty-e2e.test.mjs +294 -0
  592. package/test/knowledge.test.mjs +35 -1
  593. package/test/loopback-oauth.test.mjs +53 -0
  594. package/test/models.test.mjs +14 -7
  595. package/test/ollama.test.mjs +22 -0
  596. package/test/security.test.mjs +23 -0
  597. package/test/setup-planner.test.mjs +74 -0
  598. package/test/setup-runtime.test.mjs +51 -0
  599. package/test/shell.test.mjs +4 -4
  600. package/test/terminal/local-pty.mock.test.mjs +3 -1
  601. package/test/terminal-machine-identity.test.mjs +88 -0
  602. package/test/whoami-resume.test.mjs +27 -6
  603. package/packages/agentsam-brand/test/brand-scan.test.mjs +0 -106
  604. package/packages/work-graph/prototype/README.md +0 -32
  605. package/packages/work-graph/prototype/data/demo-workgraph.js +0 -47
  606. package/packages/work-graph/prototype/renderers/timeline-model.js +0 -21
  607. package/packages/work-graph/prototype/renderers/workgraph-runtime.js +0 -38
  608. package/packages/work-graph/prototype-gnantt.html +0 -655
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Catalog-backed dispatch bootstrap.
3
+ * Full cli.js cutover is incremental — this module is the target authority for handlers.
4
+ */
5
+
6
+ import { getCliCommand, printAssistTip, suggestCliCommands } from './command-catalog.js';
7
+
8
+ /** @type {Record<string, () => Promise<(argv: string[]) => unknown>>} */
9
+ const HANDLERS = {
10
+ codebaseindex: async () => (await import('../commands/codebaseindex.js')).runCodebaseindex,
11
+ ingest: async () => (await import('../commands/codebaseindex.js')).runCodebaseindex,
12
+ 'codebase-index': async () => (await import('../commands/codebaseindex.js')).runCodebaseindex,
13
+ skill: async () => (await import('../commands/skill.js')).runSkill,
14
+ skills: async () => (await import('../commands/skills.js')).runSkills,
15
+ };
16
+
17
+ /**
18
+ * @param {string} command
19
+ * @param {string[]} rest
20
+ * @param {{ reportError?: (e: Error) => void }} [ctx]
21
+ */
22
+ export async function dispatchCatalogCommand(command, rest = [], ctx = {}) {
23
+ const entry = getCliCommand(command);
24
+ if (!entry) {
25
+ const suggestions = suggestCliCommands(command);
26
+ const err = new Error(`Unknown command: ${command}`);
27
+ err.code = 'AGENTSAM_UNKNOWN_COMMAND';
28
+ err.suggestions = suggestions;
29
+ throw err;
30
+ }
31
+
32
+ printAssistTip(entry, { json: rest.includes('--json') });
33
+
34
+ const loader = HANDLERS[entry.id] || HANDLERS[command];
35
+ if (!loader) {
36
+ const err = new Error(`Catalog entry "${entry.id}" is not yet wired to a lazy handler (legacy cli.js path).`);
37
+ err.code = 'AGENTSAM_HANDLER_NOT_MIGRATED';
38
+ err.entry = entry;
39
+ throw err;
40
+ }
41
+
42
+ const run = await loader();
43
+ return run(rest);
44
+ }
45
+
46
+ export function listDispatchableCommands() {
47
+ return Object.keys(HANDLERS);
48
+ }
package/src/cli.js CHANGED
@@ -34,22 +34,42 @@ import { runSecurity } from './commands/security.js';
34
34
  import { runRecon } from './commands/recon.js';
35
35
  import { runCad } from './commands/cad.js';
36
36
  import { runSkills } from './commands/skills.js';
37
+ import { runSkill } from './commands/skill.js';
37
38
  import { runEval } from './commands/eval.js';
38
39
  import { runMcp } from './commands/mcp.js';
39
40
  import { runCloudflare } from './commands/cloudflare.js';
40
41
  import { runGo } from './commands/go.js';
42
+ import { runRust } from './commands/rust.js';
41
43
  import { runWhoami } from './commands/whoami.js';
44
+ import { runTerminal } from './commands/terminal.js';
45
+ import { runApiKey } from './commands/api-key.js';
42
46
  import { runResume } from './commands/resume.js';
43
47
  import { runLogin, runLogout } from './commands/account-auth.js';
44
48
  import { runPlugins } from './commands/plugins.js';
49
+ import { runCredentials } from './commands/credentials.js';
50
+ import { runCheatSheet } from './commands/cheat-sheet.js';
51
+ import { runCompute } from './commands/compute.js';
52
+ import { runGoogleCloud } from './commands/google-cloud.js';
53
+ import { runBilling } from './commands/billing.js';
54
+ import { runUpdate } from './commands/update.js';
55
+ import { runSetup } from './commands/setup.js';
56
+ import { runRuntime } from './commands/runtime.js';
45
57
  import { applyPresetSelection, runAdd, runCapabilities, runDev, runInspect } from './commands/product.js';
46
58
  import { listPresets, resolvePreset } from './presets/index.js';
59
+ import {
60
+ getInstallableProductChoice,
61
+ guidanceForRunTarget,
62
+ listInitProjectTypeOptions,
63
+ parseProjectTypeChoice,
64
+ RUN_TARGET_OPTIONS,
65
+ } from './lib/init-options.js';
66
+ import { resolveAccountAuth } from './lib/account-session.js';
47
67
  import fs from 'node:fs';
48
68
  import { repositoryRoot } from './knowledge/config.js';
49
- import { resolveAccountAuth } from './lib/account-session.js';
50
69
  import { renderDiagnosticError } from './errors/index.js';
51
70
  import { renderHelpOverview, runHelp } from './ui/cli/help.js';
52
71
  import { hydrateSecureCredentials } from './security/local-vault.js';
72
+ import { getCliCommand, printAssistTip, suggestCliCommands } from './cli/command-catalog.js';
53
73
 
54
74
  const VERSION = pkg.version;
55
75
 
@@ -80,13 +100,16 @@ function printLegacyHelp() {
80
100
  agentsam deploy Graduate an AgentSam project intentionally
81
101
 
82
102
  Capability discovery:
103
+ agentsam setup Discover → plan → approve → install (Homebrew-style)
83
104
  agentsam capabilities [capability-id] [--json]
105
+ agentsam skill list|create|inspect|install|alias|remove|invoke
84
106
  agentsam skills [skill-id-or-alias] [--references] [--json]
85
107
 
86
108
  Power-user UX:
87
109
  agentsam context [--json] Git repo/revision + bridge configuration from any repo
88
110
  agentsam init Configure knowledge in this repo; --name scaffolds a new project
89
111
  agentsam index Plan/run incremental AST and optional embeddings (--help)
112
+ agentsam codebaseindex Guided ingest: materials/allowlist/embeddings/storage (alias: ingest)
90
113
  agentsam search "query" Retrieve indexed code/text; --semantic enables embeddings
91
114
  agentsam repo snapshot Git composition/churn; --save retains observations
92
115
  agentsam cad blender Programmatic Blender inspect/build/render/export (--help)
@@ -104,10 +127,15 @@ function printLegacyHelp() {
104
127
  agentsam login Sign in to Inner Animal Media and persist a secure machine-local session
105
128
  agentsam logout Sign out locally; provider credentials stay untouched
106
129
  agentsam whoami [--json] Authenticated account identity + safe credential status
130
+ agentsam terminal identity [--json] This machine's hostname, platform, arch, and model
131
+ agentsam terminal enroll --instance <id> [--pair] [--json]
132
+ Needs AGENTSAM_API_KEY; --pair writes AGENTSAM_BRIDGE_KEY
133
+ (one terminal_connection in ~/.execos/profiles/)
107
134
  agentsam resume [session] Resume a saved Agent Sam session; omit id for picker
108
135
  agentsam eval context Offline context-strategy/economics fixtures (--help)
109
- agentsam cloudflare Native Wrangler reads + Worker CPU profile analysis (--help)
136
+ agentsam cloudflare Capabilities + CF OAuth packs (agentsam cloudflare login --pack agentsam)
110
137
  agentsam go Go runtime discovery/build/deploy (Cloudflare worker-container)
138
+ agentsam rust Rust/Wasm scaffold/doctor/check/build/dev/deploy (explicit deploy)
111
139
  agentsam start-local Local PTY on ws://127.0.0.1:3099 (no tunnel, no Cloudflare)
112
140
  agentsam ollama Opt-in local Ollama setup/status/model management
113
141
  agentsam shell Interactive Agent Sam slash-command shell
@@ -236,6 +264,7 @@ async function runLocalInit(config) {
236
264
  ✓ SQLite ${db.dbPath} (${db.tables.length} tables)
237
265
  ✓ Local API Node · http://127.0.0.1:8787
238
266
  ✓ Agent Sam interactive CLI ready
267
+ ✓ Run target ${meta.runTarget}
239
268
 
240
269
  Next:`);
241
270
  console.log(` cd ${meta.projectName}`);
@@ -243,10 +272,19 @@ async function runLocalInit(config) {
243
272
  console.log(` ${step}`);
244
273
  }
245
274
 
246
-
247
- console.log(`
248
- Local means local: no Worker, tunnel, IAM login, or cloud database is required.
275
+ if (meta.runTarget === 'local') {
276
+ console.log(`
277
+ Local is ready on this host. Cloudflare OAuth, GCP OAuth, and Docker are available when you want them:
278
+ agentsam connections setup · agentsam google-cloud doctor · agentsam dockerize
249
279
  `);
280
+ } else {
281
+ console.log(`
282
+ Guided path for ${meta.runTarget}:`);
283
+ for (const step of guidanceForRunTarget(meta.runTarget, { projectName: meta.projectName })) {
284
+ console.log(` ${step}`);
285
+ }
286
+ console.log('');
287
+ }
250
288
  return { dir, meta };
251
289
  }
252
290
 
@@ -269,38 +307,83 @@ async function initInteractive(partial = {}) {
269
307
  },
270
308
  }));
271
309
 
272
- const laneKey = partial.lane || pick(await select({
273
- message: 'Project type',
274
- initialValue: 'fullstack',
275
- options: [
276
- { value: 'fullstack', label: 'Full Stack' },
277
- { value: 'cms', label: 'CMS' },
278
- { value: 'data', label: 'Data Solutions' },
279
- { value: 'crm', label: 'Customer Management' },
280
- { value: 'creative', label: 'Creative & Design' },
281
- ],
310
+ const typeOptions = listInitProjectTypeOptions();
311
+ const typeChoice = partial.projectType || pick(await select({
312
+ message: 'What do you want to build?',
313
+ initialValue: typeOptions[0]?.value || 'preset:fullstack',
314
+ options: typeOptions.map((row) => ({
315
+ value: row.value,
316
+ label: row.label,
317
+ hint: row.hint,
318
+ })),
282
319
  }));
320
+ const parsed = parseProjectTypeChoice(typeChoice) || { kind: 'preset', id: 'fullstack' };
321
+
322
+ if (parsed.kind === 'scaffold') {
323
+ const { runScaffold } = await import('./lib/scaffold/index.js');
324
+ await runScaffold(parsed.id);
325
+ outro(`Scaffold ${parsed.id} ready`);
326
+ return;
327
+ }
328
+
329
+ if (parsed.kind === 'product') {
330
+ const product = getInstallableProductChoice(parsed.id);
331
+ if (!product?.action) throw new Error(`installable product action unavailable: ${parsed.id}`);
332
+ if (product.action.kind === 'app') {
333
+ const targetDir = path.resolve(process.cwd(), projectName);
334
+ await runApp(['scaffold', product.action.id, targetDir]);
335
+ outro(`Product ${parsed.id} scaffolded at ${projectName}`);
336
+ return;
337
+ }
338
+ if (product.action.kind === 'scaffold') {
339
+ const { runScaffold } = await import('./lib/scaffold/index.js');
340
+ await runScaffold(product.action.id);
341
+ outro(`Product ${parsed.id} scaffold ready`);
342
+ return;
343
+ }
344
+ if (product.action.kind === 'rust-template') {
345
+ await runRust(['new', projectName, '--template', product.action.template || 'shared-core']);
346
+ outro(`Product ${parsed.id} scaffolded at ${projectName}`);
347
+ return;
348
+ }
349
+ throw new Error(`unsupported installable product action: ${product.action.kind}`);
350
+ }
351
+
352
+ if (parsed.kind === 'app') {
353
+ const targetDir = path.resolve(process.cwd(), projectName);
354
+ console.log(`\n Scaffolding app ${parsed.id} → ${targetDir}\n`);
355
+ await runApp(['scaffold', parsed.id, targetDir]);
356
+ outro(`App ${parsed.id} scaffolded at ${projectName}`);
357
+ return;
358
+ }
359
+
360
+ const preset = resolvePreset(parsed.id);
361
+ const laneKey = preset.lane || preset.id;
283
362
 
284
363
  const runTarget = partial.runTarget || pick(await select({
285
- message: 'Future deploy target',
364
+ message: 'Where will this run?',
286
365
  initialValue: 'local',
287
- options: [
288
- { value: 'local', label: 'Local only / decide later' },
289
- { value: 'cloudflare', label: 'Cloudflare later' },
290
- { value: 'gcp', label: 'GCP later' },
291
- ],
366
+ options: RUN_TARGET_OPTIONS.map((row) => ({
367
+ value: row.value,
368
+ label: row.label,
369
+ hint: row.hint,
370
+ })),
292
371
  }));
293
372
 
294
373
  if (runTarget !== 'local') {
295
374
  const { detectContext, missingForInit } = await import('./lib/detect-context.js');
296
375
  const ctx = await detectContext();
297
- if (missingForInit(ctx, resolveAccountAuth({ env: process.env }).value, { runTarget }).length) {
298
- printContextSummary(ctx);
376
+ const missing = missingForInit(ctx, resolveAccountAuth({ env: process.env }).value, { runTarget });
377
+ printContextSummary(ctx);
378
+ if (missing.length) {
379
+ console.log(` Missing for ${runTarget}: ${missing.join(', ')}`);
380
+ console.log(' Use the guided commands printed after scaffold — the tooling is already shipped.\n');
299
381
  }
300
382
  }
301
383
 
302
- await runLocalInit({ projectName, lane: laneKey, runTarget, prompt: null });
303
- outro(`Created ${projectName}`);
384
+ const created = await runLocalInit({ projectName, lane: laneKey, runTarget, prompt: null });
385
+ applyPresetSelection(created.dir, preset);
386
+ outro(`Created ${projectName} (${preset.id} · ${runTarget})`);
304
387
  }
305
388
 
306
389
  async function initFromArgs(argv) {
@@ -317,6 +400,11 @@ const rest = process.argv.slice(3);
317
400
 
318
401
  hydrateSecureCredentials(process.env);
319
402
 
403
+ const catalogEntry = command && !command.startsWith('-') ? getCliCommand(command) : null;
404
+ if (catalogEntry && command !== 'help') {
405
+ printAssistTip(catalogEntry);
406
+ }
407
+
320
408
  if (command === '--version' || command === '-v') {
321
409
  console.log(VERSION);
322
410
  } else if (command === 'help') {
@@ -339,7 +427,7 @@ if (command === '--version' || command === '-v') {
339
427
  try {
340
428
  const opts = parseCreateArgs(rest);
341
429
  if (opts.help || !opts.projectName) {
342
- console.log(`agentsam create <name> --preset <${listPresets().map((row) => row.id).join('|')}> [--target local|cloudflare|gcp]`);
430
+ console.log(`agentsam create <name> --preset <${listPresets().map((row) => row.id).join('|')}> [--target local|cloudflare|gcp|docker]`);
343
431
  } else {
344
432
  const preset = resolvePreset(opts.preset);
345
433
  const created = await runLocalInit({ projectName: opts.projectName, lane: preset.lane, runTarget: opts.runTarget, prompt: null });
@@ -407,6 +495,69 @@ if (command === '--version' || command === '-v') {
407
495
  reportCliError(e);
408
496
  process.exit(1);
409
497
  }
498
+ } else if (command === 'credentials' || command === 'credential') {
499
+ try {
500
+ const code = await runCredentials(rest);
501
+ if (code) process.exitCode = code;
502
+ } catch (e) {
503
+ reportCliError(e);
504
+ process.exitCode = 1;
505
+ }
506
+ } else if (command === 'cheat-sheet' || command === 'cheatsheet') {
507
+ try {
508
+ process.exitCode = runCheatSheet(rest, { version: VERSION }) || 0;
509
+ } catch (e) {
510
+ reportCliError(e);
511
+ process.exitCode = 1;
512
+ }
513
+ } else if (command === 'setup') {
514
+ try {
515
+ const code = await runSetup(rest);
516
+ if (code) process.exitCode = code;
517
+ } catch (e) {
518
+ reportCliError(e);
519
+ process.exitCode = 1;
520
+ }
521
+ } else if (command === 'runtime' || command === 'agentsamd') {
522
+ try {
523
+ const code = await runRuntime(rest);
524
+ if (code) process.exitCode = code;
525
+ } catch (e) {
526
+ reportCliError(e);
527
+ process.exitCode = 1;
528
+ }
529
+ } else if (command === 'compute') {
530
+ try {
531
+ const code = await runCompute(rest);
532
+ if (code) process.exitCode = code;
533
+ } catch (e) {
534
+ reportCliError(e);
535
+ process.exitCode = 1;
536
+ }
537
+ } else if (command === 'google-cloud' || command === 'gcp' || command === 'gcloud') {
538
+ try {
539
+ const code = await runGoogleCloud(rest);
540
+ if (code) process.exitCode = code;
541
+ } catch (e) {
542
+ reportCliError(e);
543
+ process.exitCode = 1;
544
+ }
545
+ } else if (command === 'billing' || command === 'costs') {
546
+ try {
547
+ const code = await runBilling(rest);
548
+ if (code) process.exitCode = code;
549
+ } catch (e) {
550
+ reportCliError(e);
551
+ process.exitCode = 1;
552
+ }
553
+ } else if (command === 'update') {
554
+ try {
555
+ const code = await runUpdate(rest);
556
+ if (code) process.exitCode = code;
557
+ } catch (e) {
558
+ reportCliError(e);
559
+ process.exitCode = 1;
560
+ }
410
561
  } else if (command === 'env') {
411
562
  try {
412
563
  await runEnv(rest);
@@ -442,6 +593,13 @@ if (command === '--version' || command === '-v') {
442
593
  if (!e?.reported) reportCliError(e);
443
594
  process.exitCode = 1;
444
595
  }
596
+ } else if (command === 'rust' || command === 'wasm' || command === 'rapid-rust') {
597
+ try {
598
+ await runRust(rest);
599
+ } catch (e) {
600
+ if (!e?.reported) reportCliError(e);
601
+ process.exitCode = Number(e?.exitCode || 1);
602
+ }
445
603
  } else if (command === 'login') {
446
604
  try {
447
605
  await runLogin(rest);
@@ -463,6 +621,21 @@ if (command === '--version' || command === '-v') {
463
621
  reportCliError(e);
464
622
  process.exitCode = 1;
465
623
  }
624
+ } else if (command === 'terminal') {
625
+ try {
626
+ const result = await runTerminal(rest);
627
+ if (result?.ok === false) process.exitCode = 1;
628
+ } catch (e) {
629
+ reportCliError(e);
630
+ process.exitCode = 1;
631
+ }
632
+ } else if (command === 'api-key' || command === 'apikey' || command === 'api-keys') {
633
+ try {
634
+ await runApiKey(rest);
635
+ } catch (e) {
636
+ reportCliError(e);
637
+ process.exitCode = 1;
638
+ }
466
639
  } else if (command === 'resume') {
467
640
  try {
468
641
  await runResume(rest);
@@ -547,13 +720,20 @@ if (command === '--version' || command === '-v') {
547
720
  }
548
721
  } else if (command === 'security' || command === 'sca') {
549
722
  await runSecurity(rest);
550
- } else if (command === 'skills' || command === 'skill') {
723
+ } else if (command === 'skills') {
551
724
  try {
552
725
  runSkills(rest);
553
726
  } catch (e) {
554
727
  reportCliError(e);
555
728
  process.exitCode = 1;
556
729
  }
730
+ } else if (command === 'skill') {
731
+ try {
732
+ await runSkill(rest);
733
+ } catch (e) {
734
+ reportCliError(e);
735
+ process.exitCode = 1;
736
+ }
557
737
  } else if (command === 'merkle') {
558
738
  await runMerkle(rest);
559
739
  } else if (command === 'deploy-receipt') {
@@ -570,6 +750,15 @@ if (command === '--version' || command === '-v') {
570
750
  } else if (command === 'autorag') {
571
751
  try { await (await import('./commands/autorag.js')).runAutoRag(rest); }
572
752
  catch (e) { reportCliError(e); process.exitCode = 1; }
753
+ } else if (command === 'codebaseindex' || command === 'ingest' || command === 'codebase-index') {
754
+ try {
755
+ await (await import('./commands/codebaseindex.js')).runCodebaseindex(rest);
756
+ } catch (e) {
757
+ if (e?.code !== 'AGENTSAM_CODEBASEINDEX_CANCELLED') {
758
+ reportCliError(e);
759
+ process.exitCode = 1;
760
+ }
761
+ }
573
762
  } else if (['index', 'search', 'repo'].includes(command)) {
574
763
  try {
575
764
  const commands = await import('./commands/knowledge.js');
@@ -642,6 +831,15 @@ if (command === '--version' || command === '-v') {
642
831
  }
643
832
  } else {
644
833
  console.error(`\n Unknown command: ${command}\n`);
834
+ const suggestions = suggestCliCommands(command);
835
+ if (suggestions.length) {
836
+ console.error(' Did you mean:');
837
+ for (const row of suggestions) {
838
+ console.error(` agentsam ${row.id} — ${row.summary}`);
839
+ if (row.skill) console.error(` tip: use skill ${row.skill}`);
840
+ }
841
+ console.error('');
842
+ }
645
843
  printHelp();
646
844
  process.exit(1);
647
845
  }
@@ -1,24 +1,110 @@
1
1
  import { authenticateViaBrowser } from '../lib/auth.js';
2
2
  import { clearAccountSession, readAccountSession, saveAccountSession } from '../lib/account-session.js';
3
- import { collectWhoami, renderWhoami } from './whoami.js';
3
+ import { collectWhoami, renderLoginResult, renderWhoami } from './whoami.js';
4
+ import readline from 'node:readline';
4
5
 
5
6
  function writeLine(write, value = '') { write(`${value}\n`); }
6
7
 
8
+ /**
9
+ * Interactive provider picker for `agentsam login`.
10
+ * @returns {Promise<'inneranimalmedia'|'google'|'cloudflare'>}
11
+ */
12
+ export async function promptLoginProvider(options = {}) {
13
+ const input = options.input || process.stdin;
14
+ const output = options.output || process.stdout;
15
+ const write = options.write || ((text) => output.write(text));
16
+
17
+ if (options.provider) {
18
+ const p = String(options.provider).trim().toLowerCase();
19
+ if (p === 'iam' || p === 'inneranimalmedia' || p === '1') return 'inneranimalmedia';
20
+ if (p === 'google' || p === '2') return 'google';
21
+ if (p === 'cloudflare' || p === 'cf' || p === '3') return 'cloudflare';
22
+ }
23
+
24
+ // Non-interactive / CI: default to Inner Animal Media AS (CLI OAuth).
25
+ if (!input?.isTTY || !output?.isTTY || options.skipPrompt === true) {
26
+ return 'inneranimalmedia';
27
+ }
28
+
29
+ writeLine(write, '');
30
+ writeLine(write, ' How do you want to sign in?');
31
+ writeLine(write, ' [1] Inner Animal Media (IAM_CLIENT_ID + IAM_OAUTH_ISSUER)');
32
+ writeLine(write, ' [2] Google OAuth (GOOGLE_CLIENT_ID or GOOGLE_DESKTOP_CLIENT_ID)');
33
+ writeLine(write, ' [3] Cloudflare OAuth (CLOUDFLARE_OAUTH_CLIENT_ID)');
34
+ writeLine(write, '');
35
+
36
+ const rl = readline.createInterface({ input, output });
37
+ try {
38
+ const answer = await new Promise((resolve) => {
39
+ rl.question(' Choose [1/2/3] (default 1): ', resolve);
40
+ });
41
+ const raw = String(answer || '').trim().toLowerCase();
42
+ if (!raw || raw === '1' || raw === 'iam' || raw === 'inneranimalmedia') return 'inneranimalmedia';
43
+ if (raw === '2' || raw === 'google') return 'google';
44
+ if (raw === '3' || raw === 'cloudflare' || raw === 'cf') return 'cloudflare';
45
+ writeLine(write, ` Unknown choice "${raw}" — using Inner Animal Media.`);
46
+ return 'inneranimalmedia';
47
+ } finally {
48
+ rl.close();
49
+ }
50
+ }
51
+
7
52
  export async function runLogin(argv = [], options = {}) {
8
- const allowed = new Set(['--json']);
9
- const unknown = argv.filter((arg) => !allowed.has(arg));
53
+ const allowed = new Set(['--json', '--provider', '--iam', '--google', '--cloudflare']);
54
+ const unknown = argv.filter((arg) => {
55
+ if (allowed.has(arg)) return false;
56
+ if (arg.startsWith('--provider=')) return false;
57
+ return true;
58
+ });
10
59
  if (unknown.length) throw new Error(`unknown login option: ${unknown[0]}`);
11
60
  const write = options.write || ((text) => process.stdout.write(text));
12
61
  const authenticate = options.authenticateImpl || authenticateViaBrowser;
13
- const session = await authenticate();
62
+
63
+ let providerFlag = null;
64
+ for (const arg of argv) {
65
+ if (arg === '--iam') providerFlag = 'inneranimalmedia';
66
+ if (arg === '--google') providerFlag = 'google';
67
+ if (arg === '--cloudflare') providerFlag = 'cloudflare';
68
+ if (arg.startsWith('--provider=')) providerFlag = arg.slice('--provider='.length);
69
+ }
70
+
71
+ const provider = await promptLoginProvider({
72
+ ...options,
73
+ provider: providerFlag || options.provider,
74
+ write,
75
+ input: options.input,
76
+ output: options.output,
77
+ skipPrompt: argv.includes('--json') || options.skipPrompt === true,
78
+ });
79
+
80
+ const session = await authenticate({
81
+ home: options.home,
82
+ env: options.env || process.env,
83
+ input: options.input,
84
+ output: options.output,
85
+ loginProvider: provider,
86
+ });
14
87
  if (!String(session?.access_token || '').trim()) throw new Error('Agent Sam login did not return a browser session credential');
15
88
  // authenticateViaBrowser persists by default. Keep injected transports/test flows equivalent.
16
89
  if (!readAccountSession({ home: options.home })) saveAccountSession(session, { home: options.home });
17
90
  const status = await collectWhoami({ home: options.home, env: options.env || process.env, contextLoader: options.contextLoader });
18
- if (argv.includes('--json')) writeLine(write, JSON.stringify(status, null, 2));
19
- else {
20
- writeLine(write, '');
21
- writeLine(write, ' Agent Sam login complete.');
91
+ if (argv.includes('--json')) {
92
+ writeLine(write, JSON.stringify({
93
+ ...status,
94
+ login: {
95
+ browser_oauth_saved: true,
96
+ provider,
97
+ authoritative: status.active_auth?.kind || null,
98
+ oauth_authoritative:
99
+ status.active_auth?.kind === 'agentsam_browser_oauth'
100
+ || status.active_auth?.kind === 'browser_oauth',
101
+ api_key_shadows_oauth:
102
+ Boolean(status.browser_session?.configured)
103
+ && (status.active_auth?.kind === 'agentsam_api_key' || status.active_auth?.kind === 'api_key'),
104
+ },
105
+ }, null, 2));
106
+ } else {
107
+ write(renderLoginResult(status));
22
108
  write(renderWhoami(status));
23
109
  }
24
110
  return status;