@inneranimalmedia/agentsam-sdk 2.6.4 → 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 (418) hide show
  1. package/AGENTSAM.md +11 -0
  2. package/README.md +15 -9
  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-rapid-rust +36 -0
  57. package/docs/AUTH_IDENTITY_CONTRACT.md +2 -0
  58. package/docs/MACHINE_INTELLIGENCE.md +120 -0
  59. package/docs/WINDOWS_RUNTIME_INSTALL.md +30 -0
  60. package/docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md +188 -0
  61. package/docs/architecture/AGENTSAM_RUNTIME_PROTOCOL.md +151 -0
  62. package/docs/architecture/LOCAL_STUDIO_CLOUDFLARE_OAUTH.md +12 -4
  63. package/docs/architecture/R2_SLUG_NAMESPACE.md +20 -0
  64. package/docs/architecture/WORK_PRODUCT_EXTRACTION.md +97 -0
  65. package/docs/brand/AGENT_SAM_ICON_GRAMMAR.md +70 -0
  66. package/docs/content-studio/HOST_MOUNT_CHECKLIST.md +71 -0
  67. package/docs/content-studio/REVISION_GATE_2026-09-27.md +501 -0
  68. package/docs/contracts/capability-install-planner.md +67 -0
  69. package/docs/contracts/environment-vocabulary.md +195 -0
  70. package/docs/contracts/google-cloud-oauth-setup.md +199 -0
  71. package/docs/local-studio/WORKMODE_DONOR_NOTES.md +1 -1
  72. package/docs/plans/LOCAL-STUDIO-GRADUATION-2026-09-26.md +290 -0
  73. package/docs/plans/LOCAL-STUDIO-REAL-APP-CONTRACT-ADDENDUM-2026-09-27.md +394 -0
  74. package/docs/plans/MACHINE-FIRST-APPS-TUI-2026-09-24.md +227 -0
  75. package/docs/plans/TOMORROW-EXTENSIVE-TODO-2026-09-26.md +221 -0
  76. package/docs/plans/TOMORROW-MACHINE-FIRST-BRIEFING.md +145 -0
  77. package/docs/plans/UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md +215 -0
  78. package/docs/plugins.md +2 -2
  79. package/docs/product/AGENTSAM_PRODUCT_EXPERIENCE_STANDARD.md +280 -0
  80. package/docs/product/LOCAL_STUDIO_DESKTOP_EXPERIENCE.md +139 -0
  81. package/docs/product/README.md +8 -0
  82. package/docs/rapid-rust-wasm.md +35 -0
  83. package/migrations/d1/0016_cloudflare_oauth_user_oauth_tokens_ssot.sql +14 -0
  84. package/package.json +73 -14
  85. package/packages/agentsam-brand/README.md +106 -11
  86. package/packages/agentsam-brand/bin/agentsam-brand.mjs +9 -0
  87. package/packages/agentsam-brand/package.json +39 -7
  88. package/packages/agentsam-brand/src/adapters/cloudflare-images.js +453 -0
  89. package/packages/agentsam-brand/src/adapters/cloudflare-r2.js +74 -0
  90. package/packages/agentsam-brand/src/adapters/d1-registry.js +26 -0
  91. package/packages/agentsam-brand/src/adapters/filesystem.js +59 -0
  92. package/packages/agentsam-brand/src/adapters/memory.js +31 -0
  93. package/packages/agentsam-brand/src/cli/controller.js +503 -0
  94. package/packages/agentsam-brand/src/cli/wizard.js +526 -0
  95. package/packages/agentsam-brand/src/core/capabilities.js +201 -0
  96. package/packages/agentsam-brand/src/core/derivatives.js +211 -0
  97. package/packages/agentsam-brand/src/core/errors.js +12 -0
  98. package/packages/agentsam-brand/src/core/ingest.js +195 -0
  99. package/packages/agentsam-brand/src/core/inspect.js +109 -0
  100. package/packages/agentsam-brand/src/core/keys.js +83 -0
  101. package/packages/agentsam-brand/src/core/naming.js +142 -0
  102. package/packages/agentsam-brand/src/core/optimize.js +316 -0
  103. package/packages/agentsam-brand/src/core/pack.js +305 -0
  104. package/packages/agentsam-brand/src/core/plan.js +276 -0
  105. package/packages/agentsam-brand/src/core/preview.js +159 -0
  106. package/packages/agentsam-brand/src/core/processors/cloudflare.js +68 -0
  107. package/packages/agentsam-brand/src/core/processors/contract.js +203 -0
  108. package/packages/agentsam-brand/src/core/processors/index.js +148 -0
  109. package/packages/agentsam-brand/src/core/processors/native.js +82 -0
  110. package/packages/agentsam-brand/src/core/processors/sharp.js +113 -0
  111. package/packages/agentsam-brand/src/core/processors/squoosh-binary.js +195 -0
  112. package/packages/agentsam-brand/src/core/promote.js +288 -0
  113. package/packages/agentsam-brand/src/core/receipts.js +155 -0
  114. package/packages/agentsam-brand/src/core/v2/compile.js +280 -0
  115. package/packages/agentsam-brand/src/core/v2/derivatives-semantic.js +207 -0
  116. package/packages/agentsam-brand/src/core/v2/ingest-graph.js +387 -0
  117. package/packages/agentsam-brand/src/core/v2/roles.js +180 -0
  118. package/packages/agentsam-brand/src/core/v2/schema.js +209 -0
  119. package/packages/agentsam-brand/src/core/v2/templates.js +114 -0
  120. package/packages/agentsam-brand/src/index.js +193 -36
  121. package/packages/agentsam-brand/src/presets/app-icon.json +16 -0
  122. package/packages/agentsam-brand/src/presets/favicon.json +17 -0
  123. package/packages/agentsam-brand/src/presets/hero.json +12 -0
  124. package/packages/agentsam-brand/src/presets/index.js +40 -0
  125. package/packages/agentsam-brand/src/presets/logo.json +12 -0
  126. package/packages/agentsam-brand/src/presets/model.json +8 -0
  127. package/packages/agentsam-brand/src/presets/og-image.json +10 -0
  128. package/packages/agentsam-brand/src/presets/product-shot.json +11 -0
  129. package/packages/agentsam-brand/src/presets/social-image.json +10 -0
  130. package/packages/agentsam-brand/src/presets/web-image.json +10 -0
  131. package/packages/agentsam-contracts/src/artifacts.ts +41 -0
  132. package/packages/agentsam-knowledge/src/autorag/index.js +1 -1
  133. package/packages/agentsam-knowledge/src/providers/index.js +6 -4
  134. package/packages/agentsam-knowledge/src/providers/ollama-endpoint.js +31 -0
  135. package/packages/agentsam-knowledge/test/autorag.test.mjs +22 -1
  136. package/packages/agentsam-nav/package.json +2 -2
  137. package/packages/agentsam-rapid-rust/Cargo.lock +344 -0
  138. package/packages/agentsam-rapid-rust/Cargo.toml +18 -0
  139. package/packages/agentsam-rapid-rust/README.md +5 -0
  140. package/packages/agentsam-rapid-rust/src/main.rs +718 -0
  141. package/packages/agentsam-rapid-rust/templates/api/Cargo.toml.tmpl +18 -0
  142. package/packages/agentsam-rapid-rust/templates/api/src/lib.rs.tmpl +17 -0
  143. package/packages/agentsam-rapid-rust/templates/common/README.md.tmpl +22 -0
  144. package/packages/agentsam-rapid-rust/templates/common/package.json.tmpl +12 -0
  145. package/packages/agentsam-rapid-rust/templates/common/wrangler.toml.tmpl +6 -0
  146. package/packages/agentsam-rapid-rust/templates/crypto-auth/Cargo.toml.tmpl +21 -0
  147. package/packages/agentsam-rapid-rust/templates/crypto-auth/src/lib.rs.tmpl +32 -0
  148. package/packages/agentsam-rapid-rust/templates/data-processor/Cargo.toml.tmpl +18 -0
  149. package/packages/agentsam-rapid-rust/templates/data-processor/src/lib.rs.tmpl +41 -0
  150. package/packages/agentsam-rapid-rust/templates/shared-core/Cargo.toml.tmpl +9 -0
  151. package/packages/agentsam-rapid-rust/templates/shared-core/core/Cargo.toml.tmpl +7 -0
  152. package/packages/agentsam-rapid-rust/templates/shared-core/core/src/lib.rs.tmpl +23 -0
  153. package/packages/agentsam-rapid-rust/templates/shared-core/worker/Cargo.toml.tmpl +12 -0
  154. package/packages/agentsam-rapid-rust/templates/shared-core/worker/src/lib.rs.tmpl +16 -0
  155. package/packages/agentsam-rapid-rust/templates/shared-core/wrangler.toml.tmpl +6 -0
  156. package/packages/agentsam-repository/src/index.js +1 -0
  157. package/packages/agentsam-repository/src/merkle/semantic.js +3 -10
  158. package/packages/agentsam-repository/src/source-types.js +85 -0
  159. package/packages/agentsam-vault/README.md +96 -0
  160. package/packages/agentsam-vault/package.json +32 -0
  161. package/packages/agentsam-vault/src/contracts/credential.d.ts +78 -0
  162. package/packages/agentsam-vault/src/contracts/credential.js +132 -0
  163. package/packages/agentsam-vault/src/crypto/aes-gcm.d.ts +30 -0
  164. package/packages/agentsam-vault/src/crypto/aes-gcm.js +107 -0
  165. package/packages/agentsam-vault/src/crypto/oauth-envelope.js +150 -0
  166. package/packages/agentsam-vault/src/index.d.ts +9 -0
  167. package/packages/agentsam-vault/src/index.js +27 -0
  168. package/packages/agentsam-vault/src/providers/registry.js +90 -0
  169. package/packages/agentsam-vault/src/runtime/resolver.js +77 -0
  170. package/packages/agentsam-workbench/README.md +24 -0
  171. package/packages/agentsam-workbench/package.json +38 -0
  172. package/packages/agentsam-workbench/src/agent/AgentPanel.tsx +41 -0
  173. package/packages/agentsam-workbench/src/agent/ArtifactCard.tsx +9 -0
  174. package/packages/agentsam-workbench/src/agent/Composer.tsx +102 -0
  175. package/packages/agentsam-workbench/src/agent/ConnectedAgentPanel.tsx +194 -0
  176. package/packages/agentsam-workbench/src/agent/ContextualComposer.tsx +788 -0
  177. package/packages/agentsam-workbench/src/agent/GoalStatusStrip.tsx +38 -0
  178. package/packages/agentsam-workbench/src/agent/MiniAgentSam.tsx +86 -0
  179. package/packages/agentsam-workbench/src/agent/ModelSelect.tsx +19 -0
  180. package/packages/agentsam-workbench/src/agent/Thread.tsx +56 -0
  181. package/packages/agentsam-workbench/src/agent/ToolReceipt.tsx +11 -0
  182. package/packages/agentsam-workbench/src/agent/contextual-composer.css +611 -0
  183. package/packages/agentsam-workbench/src/agent/index.ts +10 -0
  184. package/packages/agentsam-workbench/src/agent/mini-agentsam.css +12 -0
  185. package/packages/agentsam-workbench/src/browser/BrowserFrame.tsx +37 -0
  186. package/packages/agentsam-workbench/src/browser/index.ts +1 -0
  187. package/packages/agentsam-workbench/src/index.ts +6 -0
  188. package/packages/agentsam-workbench/src/project-control.css +160 -0
  189. package/packages/agentsam-workbench/src/projects/ProjectsSurface.tsx +131 -0
  190. package/packages/agentsam-workbench/src/projects/index.ts +1 -0
  191. package/packages/agentsam-workbench/src/shell/Breadcrumb.tsx +35 -0
  192. package/packages/agentsam-workbench/src/shell/ResizableStage.tsx +99 -0
  193. package/packages/agentsam-workbench/src/shell/SidePanel.tsx +5 -0
  194. package/packages/agentsam-workbench/src/shell/index.ts +4 -0
  195. package/packages/agentsam-workbench/src/shell/surfaceRegistry.ts +29 -0
  196. package/packages/agentsam-workbench/src/terminal/TerminalSurface.tsx +5 -0
  197. package/packages/agentsam-workbench/src/terminal/index.ts +1 -0
  198. package/packages/agentsam-workbench/src/timeline/GanttBoard.tsx +258 -0
  199. package/packages/agentsam-workbench/src/timeline/index.ts +1 -0
  200. package/packages/agentsam-workbench/tsconfig.json +13 -0
  201. package/packages/connectors/cloudflare/OAUTH_STORAGE_AUDIT.md +53 -0
  202. package/packages/connectors/cloudflare/package.json +3 -1
  203. package/packages/connectors/cloudflare/src/api-client.js +279 -0
  204. package/packages/connectors/cloudflare/src/capabilities.js +585 -0
  205. package/packages/connectors/cloudflare/src/credential.js +318 -0
  206. package/packages/connectors/cloudflare/src/families/brand-protection.js +123 -0
  207. package/packages/connectors/cloudflare/src/families/keyless.js +114 -0
  208. package/packages/connectors/cloudflare/src/families/pages.js +151 -0
  209. package/packages/connectors/cloudflare/src/families/scanner.js +123 -0
  210. package/packages/connectors/cloudflare/src/families/snippets.js +207 -0
  211. package/packages/connectors/cloudflare/src/families/tag-gateway.js +46 -0
  212. package/packages/connectors/cloudflare/src/families/tags.js +124 -0
  213. package/packages/connectors/cloudflare/src/families/token-validation.js +95 -0
  214. package/packages/connectors/cloudflare/src/families/workflows.js +156 -0
  215. package/packages/connectors/cloudflare/src/index.js +102 -265
  216. package/packages/connectors/cloudflare/src/oauth-persist.js +336 -0
  217. package/packages/connectors/cloudflare/src/owner.js +42 -12
  218. package/packages/connectors/cloudflare/src/permission-options.js +1064 -0
  219. package/packages/connectors/cloudflare/src/routes.js +309 -144
  220. package/packages/connectors/cloudflare/src/scope-catalog.js +345 -0
  221. package/packages/connectors/cloudflare/src/vault.js +2 -2
  222. package/packages/connectors/cloudflare/tests/capabilities.test.mjs +276 -0
  223. package/packages/connectors/cloudflare/tests/connector.test.mjs +26 -30
  224. package/packages/connectors/cloudflare/tests/oauth-persist.test.mjs +125 -0
  225. package/packages/identity/.agentsam/features/oauth-login-portal/providers.json +22 -2
  226. package/packages/identity/.agentsam/features/oauth-login-portal/resources.json +10 -4
  227. package/packages/identity/.agentsam/features/oauth-login-portal/routes.json +20 -0
  228. package/packages/identity/README.md +1 -1
  229. package/packages/identity/backend/README.md +1 -1
  230. package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +3 -2
  231. package/packages/identity/migrations/sqlite/004_identity_oauth_consent_catalog.sql +48 -0
  232. package/packages/identity/package.json +4 -3
  233. package/packages/identity/scripts/local-identity-bridge.mjs +184 -0
  234. package/packages/identity/scripts/preview-auth-portal.mjs +7 -7
  235. package/packages/identity/src/adapters/cloudflare-d1/index.js +31 -2
  236. package/packages/identity/src/adapters/sqlite/index.js +4 -1
  237. package/packages/identity/src/contracts/auth-config.js +28 -8
  238. package/packages/identity/src/contracts/external-identity.js +1 -1
  239. package/packages/identity/src/contracts/provider.js +1 -0
  240. package/packages/identity/src/frontend/auth-portal/README.md +2 -1
  241. package/packages/identity/src/frontend/auth-portal/pages/login.html +6 -5
  242. package/packages/identity/src/frontend/auth-portal/pages/reset.html +6 -5
  243. package/packages/identity/src/frontend/auth-portal/pages/signup.html +6 -5
  244. package/packages/identity/src/frontend/auth-portal/shared/company-branding.js +1 -1
  245. package/packages/identity/src/frontend/auth-portal/shared/desktop-identity-bridge.js +207 -0
  246. package/packages/identity/src/index.js +16 -0
  247. package/packages/identity/src/migrations/0001_identity_core.sql +19 -2
  248. package/packages/identity/src/migrations/0003_accounts_ssot.sql +20 -0
  249. package/packages/identity/src/migrations/README.md +5 -2
  250. package/packages/identity/src/oauth/README.md +10 -5
  251. package/packages/identity/src/oauth/consent-view.js +388 -0
  252. package/packages/identity/src/oauth/credentials.js +31 -11
  253. package/packages/identity/src/oauth/google-desktop-exchange.js +173 -0
  254. package/packages/identity/src/providers/cloudflare/oauth.js +3 -4
  255. package/packages/identity/src/providers/cloudflare/profile.js +49 -14
  256. package/packages/identity/src/providers/iam/index.js +27 -5
  257. package/packages/identity/src/server/identity-service.js +31 -2
  258. package/packages/identity/src/server/worker-router.js +111 -81
  259. package/packages/identity/tests/auth-config.test.mjs +3 -2
  260. package/packages/identity/tests/identity-init-scaffold.test.mjs +3 -0
  261. package/packages/identity/tests/identity-service.test.mjs +16 -0
  262. package/packages/identity/tests/native-session-worker.test.mjs +64 -0
  263. package/packages/identity/tests/oauth-consent-view.test.mjs +106 -0
  264. package/packages/identity/tests/oauth-credentials.test.mjs +17 -4
  265. package/packages/identity/tests/oauth-presets-accounts-ssot.test.mjs +58 -0
  266. package/packages/identity/tests/preview-auth-portal.test.mjs +3 -3
  267. package/packages/runtime-protocol/src/index.js +154 -0
  268. package/packages/theme-scenes/README.md +164 -0
  269. package/packages/theme-scenes/package.json +53 -0
  270. package/packages/theme-scenes/src/blocks/index.js +30 -0
  271. package/packages/theme-scenes/src/contracts/index.js +286 -0
  272. package/packages/theme-scenes/src/demos/index.js +65 -0
  273. package/packages/theme-scenes/src/index.js +75 -0
  274. package/packages/theme-scenes/src/presets/index.js +263 -0
  275. package/packages/theme-scenes/src/runtime/compile.js +119 -0
  276. package/packages/theme-scenes/src/scenes/index.js +146 -0
  277. package/packages/theme-scenes/src/shell/index.js +47 -0
  278. package/packages/theme-scenes/src/themes/index.js +129 -0
  279. package/packages/theme-scenes/src/visuals/index.js +41 -0
  280. package/packages/theme-scenes/test/theme-scenes.test.mjs +179 -0
  281. package/packages/work-graph/src/index.js +34 -1
  282. package/packages/work-graph/src/renderers/gantt-model.js +24 -0
  283. package/packages/work-graph/test/work-graph.test.mjs +27 -7
  284. package/protocol/README.md +15 -7
  285. package/protocol/apps/agentsam.app.v1.schema.json +89 -7
  286. package/protocol/apps/agentsam.host-install.v1.schema.json +36 -0
  287. package/protocol/assets/README.md +9 -0
  288. package/protocol/assets/asset-record.v1.schema.json +64 -0
  289. package/protocol/runtime/agentsam.runtime.v1.schema.json +75 -0
  290. package/protocol/scoring/README.md +10 -0
  291. package/protocol/scoring/scorecard.v1.schema.json +65 -0
  292. package/protocol/ui/icon-registry.mjs +1 -0
  293. package/registry/cms-rust-machine-20260928/installable-products.json +31 -0
  294. package/registry/cms-rust-machine-20260928/manifest.json +22 -0
  295. package/registry/cms-rust-machine-20260928/migration.sql +237 -0
  296. package/registry/cms-rust-machine-20260928/receipt.json +21 -0
  297. package/registry/cms-rust-machine-20260928/receipt.sql +27 -0
  298. package/scripts/build_rapid_rust_cli.py +83 -0
  299. package/src/attachments/index.js +6 -0
  300. package/src/attachments/intake.js +235 -0
  301. package/src/capabilities/repository-snapshot.js +19 -2
  302. package/src/cli/command-catalog.js +8 -0
  303. package/src/cli.js +182 -26
  304. package/src/commands/account-auth.js +94 -8
  305. package/src/commands/app.js +307 -3
  306. package/src/commands/billing.js +127 -0
  307. package/src/commands/brand.js +74 -60
  308. package/src/commands/cheat-sheet.js +154 -0
  309. package/src/commands/cloudflare-login.js +222 -0
  310. package/src/commands/cloudflare.js +453 -23
  311. package/src/commands/codebaseindex.js +6 -1
  312. package/src/commands/compute.js +4 -0
  313. package/src/commands/connections.js +11 -5
  314. package/src/commands/credentials.js +116 -0
  315. package/src/commands/gcloud-auth.js +427 -0
  316. package/src/commands/google-cloud.js +375 -0
  317. package/src/commands/identity-init.js +2 -2
  318. package/src/commands/mcp.js +226 -33
  319. package/src/commands/ollama.js +3 -2
  320. package/src/commands/plugins.js +7 -2
  321. package/src/commands/product.js +36 -0
  322. package/src/commands/runtime-status.js +28 -9
  323. package/src/commands/runtime.js +313 -0
  324. package/src/commands/rust.js +24 -0
  325. package/src/commands/setup.js +279 -0
  326. package/src/commands/shell.js +16 -3
  327. package/src/commands/start-local.js +2 -2
  328. package/src/commands/terminal.js +171 -0
  329. package/src/commands/update.js +140 -0
  330. package/src/commands/whoami.js +329 -65
  331. package/src/features/resolve.js +1 -0
  332. package/src/index.js +4 -0
  333. package/src/indexing/ingest/inventory.js +254 -19
  334. package/src/indexing/ingest/materials.js +3 -9
  335. package/src/indexing/ingest/style-evidence.js +181 -0
  336. package/src/knowledge/source.js +3 -3
  337. package/src/lib/account-session.js +11 -4
  338. package/src/lib/app-authority.js +172 -0
  339. package/src/lib/auth.js +94 -21
  340. package/src/lib/core-client.js +5 -6
  341. package/src/lib/credentials-audit.js +451 -0
  342. package/src/lib/deploy/health.js +24 -6
  343. package/src/lib/detect-context.js +7 -1
  344. package/src/lib/google-cloud-connection.js +270 -0
  345. package/src/lib/google-cloud-inventory.js +385 -0
  346. package/src/lib/google-desktop-oauth.js +372 -0
  347. package/src/lib/google-studio-brokered-oauth.js +158 -0
  348. package/src/lib/identity-scaffold.js +24 -6
  349. package/src/lib/init-options.js +192 -0
  350. package/src/lib/local-scaffold.js +48 -16
  351. package/src/lib/provider-command-remediation.js +308 -0
  352. package/src/lib/provider-credentials.js +8 -0
  353. package/src/lib/scaffold/index.js +8 -2
  354. package/src/lib/scaffold/mcp-server.js +43 -0
  355. package/src/lib/scaffold/templates/mcp-server/index.js +397 -0
  356. package/src/lib/scaffold/templates/mcp-server/presets.js +39 -0
  357. package/src/lib/scaffold/wizards/cms.js +93 -0
  358. package/src/lib/scaffold/wizards/mcp-server.js +61 -0
  359. package/src/lib/setup/contract.js +26 -0
  360. package/src/lib/setup/discover.js +116 -0
  361. package/src/lib/setup/execute.js +205 -0
  362. package/src/lib/setup/planner.js +134 -0
  363. package/src/lib/setup/recipes.js +235 -0
  364. package/src/lib/setup/runtime-persist.js +197 -0
  365. package/src/lib/setup/runtime.js +394 -0
  366. package/src/lib/slash-commands.js +2 -0
  367. package/src/lib/terminal/machine-identity.js +95 -0
  368. package/src/lib/terminal-local.js +164 -0
  369. package/src/lib/terminal-scopes.js +52 -0
  370. package/src/lib/whoami-capabilities.js +184 -0
  371. package/src/local-pty/server.js +34 -5
  372. package/src/mcp/authority.js +58 -108
  373. package/src/mcp/client-adapters.js +68 -144
  374. package/src/mcp/client.js +142 -122
  375. package/src/mcp/cloudflare-bundles.js +225 -0
  376. package/src/mcp/index.js +12 -0
  377. package/src/plugins/cloudflare.js +1 -1
  378. package/src/providers/ollama-chat.js +2 -1
  379. package/src/sam/types.js +27 -2
  380. package/src/security/inventory.js +12 -2
  381. package/src/security/local-vault.js +2 -0
  382. package/src/security/scan.js +1 -1
  383. package/test/account-session.test.mjs +3 -3
  384. package/test/app-authority-context.test.mjs +32 -0
  385. package/test/cli/codebaseindex-plan-ux.test.mjs +1 -1
  386. package/test/cli/mcp-client.test.mjs +21 -10
  387. package/test/cli/runtime-persist.test.mjs +56 -0
  388. package/test/cli/rust-command.test.mjs +21 -0
  389. package/test/credentials-audit.test.mjs +113 -0
  390. package/test/deploy-health-scan.test.mjs +29 -1
  391. package/test/gcloud-auth.test.mjs +111 -0
  392. package/test/google-cloud-connection.test.mjs +83 -0
  393. package/test/google-cloud-inventory.test.mjs +64 -0
  394. package/test/init-options.test.mjs +35 -0
  395. package/test/integration/app-command.test.mjs +30 -0
  396. package/test/integration/cad-project.test.mjs +4 -1
  397. package/test/integration/cms-app-scaffold.test.mjs +71 -0
  398. package/test/integration/cms-site-tenancy-contract.test.mjs +3 -2
  399. package/test/integration/codebaseindex-ingest.test.mjs +48 -0
  400. package/test/integration/features-resolve.test.mjs +30 -11
  401. package/test/integration/inspect-path-cli.test.mjs +46 -0
  402. package/test/integration/inventory-evidence.test.mjs +125 -0
  403. package/test/integration/runtime-status.integration.test.mjs +2 -1
  404. package/test/knowledge.test.mjs +35 -1
  405. package/test/loopback-oauth.test.mjs +53 -0
  406. package/test/ollama.test.mjs +22 -0
  407. package/test/security.test.mjs +23 -0
  408. package/test/setup-planner.test.mjs +74 -0
  409. package/test/setup-runtime.test.mjs +51 -0
  410. package/test/terminal/local-pty.mock.test.mjs +3 -1
  411. package/test/terminal-machine-identity.test.mjs +88 -0
  412. package/test/whoami-resume.test.mjs +27 -6
  413. package/packages/agentsam-brand/test/brand-scan.test.mjs +0 -106
  414. package/packages/work-graph/prototype/README.md +0 -32
  415. package/packages/work-graph/prototype/data/demo-workgraph.js +0 -47
  416. package/packages/work-graph/prototype/renderers/timeline-model.js +0 -21
  417. package/packages/work-graph/prototype/renderers/workgraph-runtime.js +0 -38
  418. package/packages/work-graph/prototype-gnantt.html +0 -655
@@ -0,0 +1,394 @@
1
+ # ADDENDUM — Local Studio is a real application (2026-09-27)
2
+
3
+ **Status:** Non-negotiable product/engineering contract. Supersedes any scaffold, demo, remote-redirect, or “UI-first” shortcut that conflicts.
4
+ **Applies to:** `apps/local-studio`, `packages/agentsam-desktop-shell`, `packages/agentsam-*` Studio UI packages, `agentsamd`.
5
+ **Related:** [`LOCAL-STUDIO-GRADUATION-2026-09-26.md`](./LOCAL-STUDIO-GRADUATION-2026-09-26.md) · Fuel/web zero-local handoff remains a separate track.
6
+
7
+ **Governing principle (verbatim):**
8
+
9
+ > Build correctly from the start. Half-measures cost double.
10
+ > Do not optimize for appearing finished. Optimize for each completed slice being production architecture that we can keep.
11
+
12
+ ---
13
+
14
+ ## Part A — Architecture correction (Tauri is real; the product UI must be bundled)
15
+
16
+ ### What is actually wrong
17
+
18
+ The `.app`, Rust process, WebView, keychain, sidecars, and Tauri IPC are **real**. That is not the disputed part.
19
+
20
+ The bug is: **we built native capabilities, then stopped rendering a desktop client that consumes them.**
21
+
22
+ ```text
23
+ CURRENT (wrong product shape)
24
+
25
+ AgentSam Local Studio.app
26
+ ├── Tauri / Rust ✅ real native application
27
+ │ ├── keychain / updater / OS
28
+ │ ├── agentsamd supervision
29
+ │ └── Tauri IPC commands
30
+ ├── bundled desktop-boot.html ✅ local launcher only
31
+ └── "Open Studio UI"
32
+ └── navigates WebView to
33
+ https://agentsam.inneranimalmedia.com/agentsam
34
+ └── hosted web application
35
+ ❌ not the bundled desktop UI
36
+ ```
37
+
38
+ Effective architecture today:
39
+
40
+ `native runtime → tiny local bootstrap → hosted Studio`
41
+
42
+ Required architecture:
43
+
44
+ ```text
45
+ TARGET
46
+
47
+ AgentSam Local Studio.app
48
+ ├── Tauri / Rust
49
+ │ └── native desktop integration (keychain, windows, updater, OAuth handoff, dialogs)
50
+ ├── bundled Studio React client
51
+ │ ├── /agentsam
52
+ │ ├── /database
53
+ │ ├── /terminal
54
+ │ ├── /files / Library
55
+ │ ├── /sites (CMS)
56
+ │ ├── /cad
57
+ │ ├── /projects
58
+ │ └── /settings
59
+ └── agentsamd
60
+ ├── SQLite
61
+ ├── PTY / terminal
62
+ ├── filesystem / workspace
63
+ ├── Git
64
+ ├── MCP / tools
65
+ ├── local models / jobs
66
+ └── machine runtime APIs
67
+ ```
68
+
69
+ Cloud services are **dependencies of the installed application**, not replacements for it.
70
+
71
+ ```text
72
+ Local Studio UI (bundled)
73
+ │
74
+ ┌──────────┼───────────┐
75
+ ▼ ▼ ▼
76
+ agentsamd Tauri cloud APIs
77
+ local IPC optional
78
+ ```
79
+
80
+ ### IPC nuance (do not overstate)
81
+
82
+ Saying “`invoke` dies because the page became remote” is slightly too absolute.
83
+
84
+ - Product truth: after navigating to the hosted Studio, the **primary UI is no longer the bundled desktop client**.
85
+ - Technical nuance: Tauri **can** grant capabilities to remote origins so a hosted page could call `local_sqlite_bridge`, etc.
86
+ - **We refuse that architecture.** Granting a remotely deployed webpage privileged access to SQLite, PTY, filesystem, and agentsamd is the wrong trust boundary for Local Studio.
87
+
88
+ ### Nitro SSR ≠ justification for redirect
89
+
90
+ Server-rendered Studio works like: request → Nitro HTML → hydrateRoot(document).
91
+
92
+ Tauri `frontendDist` is static files — there is no Nitro server behind it. Copying hydrate-only client chunks into the `.app` produces a blank window. That is a **build-target problem**, not a reason to make Local Studio remote.
93
+
94
+ **Do not** solve this by bundling Node + Nitro SSR into the `.app` solely to reuse the web entry. Prefer:
95
+
96
+ ```text
97
+ // web entry
98
+ hydrateRoot(document, <Studio runtime={cloudRuntime} />);
99
+
100
+ // desktop entry
101
+ createRoot(document.getElementById("root")!).render(
102
+ <Studio runtime={desktopRuntime} />
103
+ );
104
+ ```
105
+
106
+ ### Shared UI, not two products
107
+
108
+ Do **not** create duplicated `local-studio-cloud` / `local-studio-desktop` apps that fork screens.
109
+
110
+ ```text
111
+ packages/
112
+ studio-ui/ (or existing feature packages)
113
+ studio-runtime/ contracts + RuntimeHost
114
+
115
+ apps/
116
+ local-studio/
117
+ desktop-entry → DesktopRuntimeHost → Tauri + agentsamd
118
+ studio-web/ (or current Nitro app)
119
+ server-entry → CloudRuntimeHost → authenticated APIs
120
+ ```
121
+
122
+ Screens call:
123
+
124
+ ```ts
125
+ const runtime = useRuntime();
126
+ await runtime.database.query(...);
127
+ await runtime.terminal.create(...);
128
+ await runtime.files.read(...);
129
+ await runtime.content.importAsset(...);
130
+ ```
131
+
132
+ Not scattered `invoke("local_sqlite_bridge")` inside random React components.
133
+
134
+ ### Preferred desktop runtime split
135
+
136
+ | Layer | Owns |
137
+ | --- | --- |
138
+ | **Tauri** | Windowing, keychain, updater, OAuth handoff, native dialogs, app lifecycle, OS integration |
139
+ | **agentsamd** | Terminal/PTY, filesystem/workspaces, Git, SQLite, MCP/tools, jobs, local models — reusable outside Tauri |
140
+ | **Cloud APIs** | Optional authenticated services when the feature truly needs them |
141
+
142
+ Later the same UI can target: `local agentsamd | remote agentsamd | cloud runtime` via one protocol.
143
+
144
+ ---
145
+
146
+ ## Part B — Real application contract (mockups are specs, not permission to fake)
147
+
148
+ This overrides any earlier scaffold / demo / placeholder / remote-redirect interpretation.
149
+
150
+ **A screen is not implemented because its layout exists.**
151
+ A feature is implemented only when its intended user workflow works end-to-end against the real runtime.
152
+
153
+ ### Non-negotiable rules
154
+
155
+ 1. **Every mocked primary surface must become functional** — or be withheld from production navigation. No clickable UI that leads to empty canvases, fake datasets, placeholder editors, dead controls, decorative metrics, or simulated success.
156
+
157
+ 2. **The installed application owns a real bundled application UI.** No main product action may escape via `location.href = https://agentsam.inneranimalmedia.com/...` (or equivalent) merely to obtain the real UI.
158
+
159
+ 3. **Mockups define intended capability, not merely styling.** Database → real workbench. CAD → real workspace/runtime. Sites → real site data/ops. Projects → real workspaces. Settings “Runtime: Local Studio - Mac” → detected state.
160
+
161
+ 4. **No mock data may silently survive into production paths.** Seed/demo only inside explicitly identified fixtures.
162
+
163
+ 5. **Every control terminates in a real contract:**
164
+
165
+ ```text
166
+ UI → domain/runtime contract → real implementation
167
+ (agentsamd | Tauri | SQLite | FS | Git | PTY | MCP | cloud API | remote runtime)
168
+ ```
169
+
170
+ 6. **Tauri and agentsamd have separate responsibilities** (see Part A). Do not scatter machine logic across React because `invoke()` is convenient.
171
+
172
+ 7. **Desktop UI and web UI may share implementation; desktop is not a redirected web session.** Solve Nitro/SSR via a desktop entry/build target.
173
+
174
+ 8. **Routes are capabilities, not milestones.** `/database` existing ≠ done.
175
+
176
+ 9. **Blank or skeletal surfaces fail acceptance.** Keep unfinished routes development-only / out of release nav.
177
+
178
+ 10. **Database means an actual database workbench** — provider-aware, schema/table/query/CRUD, real errors, persisted connection context. Not mocked JSON.
179
+
180
+ 11. **Terminal means an actual terminal** — real PTY/session, stdout/stderr/input, lifecycle/reconnect. Not canned echoes or a remote page.
181
+
182
+ 12. **Sites/CMS means actual content ownership and publishing** — reusable across customers; not hard-coded to AgentSam SDK, Fuel, or one brand.
183
+
184
+ 13. **Account/Settings read and mutate actual state** — appearance, runtime identity, project context, health checks, update channel.
185
+
186
+ 14. **Offline/local-first claims must be testable.** Shell + local files + local DB + supported agentsamd ops must work without needing `agentsam.inneranimalmedia.com` to *render* the primary UI. Cloud-required features may report offline.
187
+
188
+ 15. **Do not implement temporary architecture we already know must be removed.** Partial scope OK. Fake completion not OK.
189
+
190
+ 16. **“Done” requires evidence** — boot from installed `.app`; no product-critical redirect; real runtime detected; core CRUD/workflow; persist across relaunch; failure + offline tested where relevant; no mock source in production; screenshot/video or automated receipt.
191
+
192
+ ### Definition of Done
193
+
194
+ ```text
195
+ mock exists ≠ implemented
196
+ route exists ≠ implemented
197
+ component renders ≠ implemented
198
+ API stub exists ≠ implemented
199
+ fake data looks OK ≠ implemented
200
+
201
+ real user action
202
+ → real runtime/provider
203
+ → real state change/result
204
+ → persisted/recoverable state
205
+ = implemented
206
+ ```
207
+
208
+ Visual parity and functional parity are **both** required. Incremental shipping is OK (Database before CAD); calling empty shells “done” is not.
209
+
210
+ ### Navigation status (required)
211
+
212
+ Every primary nav item must be explicitly one of:
213
+
214
+ | Status | Meaning |
215
+ | --- | --- |
216
+ | **REAL** | Acceptance matrix passed |
217
+ | **IN DEVELOPMENT** | Wired but incomplete; may show in dev builds |
218
+ | **NOT SHIPPED** | Hidden from production nav |
219
+
220
+ There is no fourth category: “looks finished but doesn’t do anything.”
221
+
222
+ Surfaces currently represented (must eventually be REAL or withheld): AgentSam/chat, Library, Sites/CMS, CAD, Database, Projects, Settings (Account, Agents, Customize, Brand & Design, Git & PRs, Codebase, Browser & Network, Themes, Storage, Keys & Secrets, Plan & Usage, Notifications, Docs), terminal/runtime controls.
223
+
224
+ Themes cards (AgentSam Graphite, Fuel N Free, Shinshu, …) must become discovered/installed theme projections — not permanent hard-coded gallery fakes. Healthy badges and Local account must derive from real checks/identity.
225
+
226
+ ### Library vs Sites → Media
227
+
228
+ | Surface | Meaning |
229
+ | --- | --- |
230
+ | **Library** | Global/user/project resources (files, docs, imports, conversation resources, reusable assets) |
231
+ | **Sites → Media** | Assets belonging to a site’s content model (images, video, logos, product/theme media, variants) |
232
+
233
+ Share storage/runtime primitives underneath. Do **not** build two unrelated media-management systems. Theme editors pick from Media Library — they do not invent a second upload store. Do **not** put the media uploader under `/settings/themes`.
234
+
235
+ ---
236
+
237
+ ## Part C — Content Studio / Media slice (post `0ac693c` / `49fdf16`)
238
+
239
+ ### What landed (foundation — not finished UX)
240
+
241
+ On `agentsam-sdk` `main` through `49fdf16`:
242
+
243
+ - `packages/agentsam-content-studio` — `MediaDropzone.tsx`, wiring in `ContentLibrary` / `ContentStudio`
244
+ - `apps/local-studio/frontend` — `ContentStudioPage` upload→optimize path, `agentsam-sdk-brand` dependency, ambient types unblocker
245
+ - `apps/local-studio/frontend/src/routes/api/content.optimize.ts` — **web/Nitro host** optimize route (sharp server-side)
246
+ - Removed `examples/local-studio-demo` + workspace entry
247
+
248
+ Verified claim from that pass: package typechecks; processors (sharp/etc.) correctly stay server/runtime-side, not in the browser component.
249
+
250
+ ### Not complete until product UX + desktop runtime
251
+
252
+ A package component + API route + green typecheck ≠ finished feature.
253
+
254
+ #### 1. Canonical Local Studio destination
255
+
256
+ ```text
257
+ Local Studio → Sites → selected site/project → Media / Content Library → real ContentStudio
258
+ ```
259
+
260
+ Existing Sites hierarchy (Content / Media / Structure / Settings) is correct. **“Open media library” must open the real ContentStudio / ContentLibrary** (with MediaDropzone), not a stub and not Themes.
261
+
262
+ #### 2. Required media UX states
263
+
264
+ Visible lifecycle for uploads: `uploading | registered | processing | ready | failed`.
265
+
266
+ For images, user can see **Original** and **optimized variant**, plus real metadata when available (filename, type, dimensions, sizes, variants, created time, storage/provider, processing state). Do not optimize invisibly.
267
+
268
+ #### 3. `/api/content/optimize` is web-host only — not universal
269
+
270
+ ```text
271
+ WRONG as universal architecture:
272
+ ContentStudioPage → POST /api/content/optimize → Nitro → sharp
273
+ (especially if that silently means agentsam.inneranimalmedia.com)
274
+
275
+ RIGHT:
276
+ ContentStudio UI → ContentRuntime → host-specific implementation
277
+ ```
278
+
279
+ ```text
280
+ ContentStudio UI
281
+ │
282
+ ContentRuntime
283
+ │
284
+ ┌──────────────┼───────────────┐
285
+ ▼ ▼ ▼
286
+ DesktopRuntime WebRuntime CustomerRuntime
287
+ │ │ │
288
+ agentsamd /api route host adapter
289
+ local fs sharp/etc. configured
290
+ ```
291
+
292
+ Desktop must **not** require the hosted Studio for local import/optimize. Do not bundle Nitro solely to keep this helper. Contract is SSOT; sharp is one web implementation.
293
+
294
+ #### 4. Orchestration belongs in the runtime, not the page
295
+
296
+ Prefer:
297
+
298
+ ```ts
299
+ runtime.content.importAsset(...)
300
+ // events: asset.created | processing | variant.created | ready | failed
301
+ ```
302
+
303
+ over page-owned:
304
+
305
+ ```text
306
+ createAsset(rawBytes) → POST optimize → addVariant()
307
+ ```
308
+
309
+ Otherwise every host (Local Studio, Fuel, IAM CMS, customer N) duplicates the pipeline and kills portability.
310
+
311
+ #### 5. Persisted means persisted
312
+
313
+ Reactive event bus = live UX notification, **not** SSOT.
314
+
315
+ Acceptance: upload → appears → quit app → relaunch → asset + variants still present. Metadata store + byte store as configured by runtime (e.g. SQLite + local content storage).
316
+
317
+ #### 6. `agentsam-sdk-brand` typing
318
+
319
+ Ambient `agentsam-sdk-brand.d.ts` in the consumer is an **unblocker only**. Canonical types must eventually ship from the package (or shared contracts). Record the gap; do not treat per-consumer `.d.ts` as permanent ownership.
320
+
321
+ #### 7. TanStack `routeTree.gen.ts`
322
+
323
+ Do **not** hand-patch the generated file. Do **regenerate** via normal `npm run dev` / build before calling the route “done.” “It fixes itself someday” is not acceptance.
324
+
325
+ #### 8. FnF migration
326
+
327
+ Keep Fuel & Free Time migration **separate** until Local Studio acceptance for this slice passes. Then migrate FnF onto the same Content Studio package/runtime — do not recreate.
328
+
329
+ ### Minimum acceptance test (this media feature)
330
+
331
+ 1. Launch **AgentSam Local Studio.app**
332
+ 2. Sites → choose site → Media
333
+ 3. Drop a real PNG/JPEG
334
+ 4. UI shows the real asset immediately
335
+ 5. Original bytes persisted
336
+ 6. Processing runs (local for desktop; web route only for web host)
337
+ 7. Optimized variant generated
338
+ 8. UI shows completion + variant info
339
+ 9. Quit completely
340
+ 10. Relaunch → same site Media → original + variant still present
341
+ 11. Disconnect internet → local asset workflow still works (desktop)
342
+ 12. Force optimization failure → real failure UI
343
+ 13. No request to `agentsam.inneranimalmedia.com` required for the local operation
344
+ 14. Clean checkout: generate routes, typecheck, build pass
345
+
346
+ ---
347
+
348
+ ## Part D — Cursor / next-agent implementation order
349
+
350
+ Treat current Content Studio work as **runtime/component foundation**, not completed UX.
351
+
352
+ 1. Wire real ContentStudio into **Sites → selected site → Media / Open media library**.
353
+ 2. Visible processing / variant / error state in that surface.
354
+ 3. Move upload/optimization orchestration behind reusable **ContentRuntime** (`importAsset` + events).
355
+ 4. Keep `/api/content/optimize` as **WebRuntime** only.
356
+ 5. Provide **DesktopRuntime** implementation (agentsamd / local) without hosted site.
357
+ 6. Verify durable persistence across relaunch.
358
+ 7. Regenerate TanStack route tree; run real build/typecheck.
359
+ 8. Remaster `packages/agentsam-desktop-shell/scripts/desktop-boot.html` as a real machine home UI — and stop making “Open Studio UI” (remote) the primary product path; desktop entry + bundled client is the path.
360
+ 9. Keep FnF migration after Local Studio acceptance.
361
+ 10. Do not add more UI placeholders while these core paths remain disconnected.
362
+
363
+ ### Explicit anti-pattern for this slice
364
+
365
+ Wiring desktop UI **directly** to `/api/content/optimize` (or the hosted origin) recreates the Tauri failure mode: beautiful local chrome whose important work secretly depends on the hosted web runtime.
366
+
367
+ **Right outcome:**
368
+
369
+ ```text
370
+ same Content Studio UI
371
+ same Content runtime contract
372
+
373
+ desktop → local execution
374
+ web → server execution
375
+ FnF → configured host execution
376
+ ```
377
+
378
+ ---
379
+
380
+ ## Part E — Evidence / open items at authoring time
381
+
382
+ | Item | State |
383
+ | --- | --- |
384
+ | MediaDropzone + content.optimize (web) | Landed on `main` (`0ac693c`…`49fdf16`) — foundation |
385
+ | Sites → Media mounts real ContentStudio | **Open** — instruct next Cursor pass |
386
+ | DesktopRuntime optimize (no Nitro) | **Open** |
387
+ | Desktop SPA / createRoot entry (no remote redirect) | **Open** — build-target + graduation plan |
388
+ | routeTree.gen.ts regenerated in CI/dev | **Open** until proven |
389
+ | agentsam-brand package `.d.ts` | **Gap** — ambient consumer unblocker only |
390
+ | Boot shell remaster | **Open** — source: `packages/agentsam-desktop-shell/scripts/desktop-boot.html` |
391
+
392
+ ---
393
+
394
+ *End of addendum. If this file conflicts with scaffold notes or “open cloud Studio until SPA ships” copy in boot UI / sync scripts, this file wins.*
@@ -0,0 +1,227 @@
1
+ ---
2
+ name: Machine-first apps TUI
3
+ overview: "Fully plan Batches A–D of the Universal ingest stack in agentsam-sdk: Machine Intelligence docs + decision primitives, world-state/`inspect`, calculated maturity + verify, ingest feeding world-state, and a Clack TUI `agentsam apps` catalog to select/preview/scaffold/deploy packaged prebuilds of past work."
4
+ todos:
5
+ - id: batch-a-docs-primitives
6
+ content: "Batch A: MACHINE_INTELLIGENCE.md + predicate/choice/score + confidence policy + decision receipts"
7
+ status: pending
8
+ - id: batch-b-world-maturity-verify
9
+ content: "Batch B: world-state envelope for inspect; expand app discovery; calculated maturity; strengthen verify-*"
10
+ status: pending
11
+ - id: batch-d1-clack-apps
12
+ content: "Batch D1: agentsam apps Clack TUI catalog — select app → Preview/Info/Doctor/Scaffold/Deploy (maturity-gated)"
13
+ status: pending
14
+ - id: batch-c-ingest
15
+ content: "Batch C: universal ingest (paste/path/stdin) feeding world-state with sensitive redaction"
16
+ status: pending
17
+ - id: batch-d2-distribute-mini
18
+ content: "Batch D2–D3: agentsam app add / npm distribute curated apps; mini kept tiny in docs/help"
19
+ status: pending
20
+ isProject: false
21
+ ---
22
+
23
+ # Machine-first AgentSam + Apps Clack Catalog
24
+
25
+ **Home:** [`/Users/samprimeaux/agentsam-sdk`](/Users/samprimeaux/agentsam-sdk) · supersedes pending todos in [UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md](./UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md)
26
+
27
+ **Locked product intent:** Apps become a Clack/TUI selectable catalog of packaged previews/prebuilds of past work. Selecting an app leads to Preview (primary), then Scaffold/Add, then Deploy when maturity allows. Machine Intelligence + world-state make that catalog honest (calculated maturity, not hand badges).
28
+
29
+ ## Intent (unchanged except Apps UX)
30
+
31
+ Audit and strengthen in place. No repo redesign for package purity. Proof = real `apps/*` + harvested sites. Mini stays the tiny lane.
32
+
33
+ ```text
34
+ MINI — tiny local artifact (agentsam mini)
35
+ APP — Clack catalog → preview / scaffold / npm distribute
36
+ WORLD — arbitrary path → world-state → progressive normalize
37
+ ```
38
+
39
+ Maturity ladder (calculated, observable):
40
+
41
+ ```text
42
+ harvested → scaffolded → wired → verified → releasable → production
43
+ ```
44
+
45
+ ## Architecture
46
+
47
+ ```mermaid
48
+ flowchart TB
49
+ appsDir[apps_star] --> discover[discover_manifests]
50
+ discover --> catalog[Clack_apps_menu]
51
+ catalog --> preview[Preview_local]
52
+ catalog --> scaffold[Scaffold_or_app_add]
53
+ catalog --> deploy[Deploy_if_releasable]
54
+ pathIn[Path_paste_stdin] --> ingest[detect_extract_catalog]
55
+ ingest --> world[WORLD_STATE]
56
+ discover --> world
57
+ scan[repository_snapshot_merkle_brand] --> world
58
+ world --> maturity[Calculated_maturity]
59
+ maturity --> catalog
60
+ world --> primitives[predicate_choice_score]
61
+ primitives --> policy[confidence_policy]
62
+ policy --> next[next_actions]
63
+ verify[verify_package_boundaries_app] --> maturity
64
+ ```
65
+
66
+ ## Current baselines to leverage (do not rebuild)
67
+
68
+ | Piece | Path | Use |
69
+ |-------|------|-----|
70
+ | CLI router (`app`/`apps` alias) | [`src/cli.js`](/Users/samprimeaux/agentsam-sdk/src/cli.js) | Route bare `apps` → TUI |
71
+ | App commands today | [`src/commands/app.js`](/Users/samprimeaux/agentsam-sdk/src/commands/app.js) | Extend discovery + actions; today only `agentsam.app.json` (4 product apps) |
72
+ | Clack already | `@clack/prompts` in help/models/providers/scaffold | Same patterns for apps menu |
73
+ | Inspect | [`src/commands/product.js`](/Users/samprimeaux/agentsam-sdk/src/commands/product.js) → [`repository-snapshot.js`](/Users/samprimeaux/agentsam-sdk/src/capabilities/repository-snapshot.js) | Expand into world-state envelope |
74
+ | Progression / next | [`src/progression/engine.js`](/Users/samprimeaux/agentsam-sdk/src/progression/engine.js) | Feed maturity next-actions |
75
+ | Brand Intelligence | [`docs/BRAND_INTELLIGENCE.md`](/Users/samprimeaux/agentsam-sdk/docs/BRAND_INTELLIGENCE.md) + `packages/agentsam-brand` | Consumer of world-state + primitives |
76
+ | Verify | `scripts/verify-package.mjs`, `verify-source-boundaries.mjs` | Strengthen; wire into maturity |
77
+ | Theme apps | `.agentsam/app.json` on 7 harvested sites | Include in catalog (today invisible to `listAppManifests`) |
78
+
79
+ ---
80
+
81
+ ## Batch A — Machine Intelligence foundation
82
+
83
+ ### A1. Docs
84
+ - Add [`docs/MACHINE_INTELLIGENCE.md`](/Users/samprimeaux/agentsam-sdk/docs/MACHINE_INTELLIGENCE.md): ladder, MINI/APP/WORLD, confidence ≠ risk, receipts, LLM as one handler.
85
+ - Cross-link Brand Intelligence + Repository Intelligence + this Apps catalog.
86
+ - Demote mini as architectural poster in help copy (Batch D completes that).
87
+
88
+ ### A2. Decision primitives (AgentSam-owned)
89
+ - New module under `src/intelligence/` (or `packages/agentsam-intelligence` if boundary requires): `predicate`, `choice`, `score`, `distribution`.
90
+ - Confidence policy: abstention, hierarchical degrade, confidence ≠ risk.
91
+ - Decision receipts: `{input_hash, primitive, result, confidence, risk?, next}`.
92
+ - Protocol schemas under `protocol/` mirroring brand capability style.
93
+ - First consumer path: classify app maturity gate OR brand scan route — one real path with a receipt, not a demo.
94
+
95
+ **Acceptance A:** Doc lands; ≥1 classification path emits a decision receipt without a model.
96
+
97
+ ---
98
+
99
+ ## Batch B — World-state + every app observable
100
+
101
+ ### B1. World-state envelope
102
+ Converge into one JSON envelope (new capability `world.state` or extend `repository.snapshot` with a stable `world` view):
103
+
104
+ - files / hashes / MIME (snapshot + merkle)
105
+ - AST / routes / APIs (existing intelligence slices)
106
+ - brand packet (when present)
107
+ - app manifest + provenance
108
+ - verify receipts
109
+ - maturity + next_actions
110
+
111
+ `agentsam inspect [path]` returns this envelope for arbitrary paths **and** every `apps/*`.
112
+
113
+ ### B2. Discovery + maturity engine
114
+ Extend [`listAppManifests`](/Users/samprimeaux/agentsam-sdk/src/commands/app.js):
115
+
116
+ 1. Prefer `agentsam.app.json` (product apps).
117
+ 2. Fall back to `.agentsam/app.json` (theme-refinery / harvested).
118
+ 3. Still list dirs under `apps/` that lack manifests as `harvested` with low maturity (observable, not hidden).
119
+
120
+ Calculated maturity gates (facts, not labels):
121
+
122
+ | Stage | Gate examples |
123
+ |-------|----------------|
124
+ | harvested | dir exists; optional gallery/canonical paths |
125
+ | scaffolded | package.json / wrangler / preview root present |
126
+ | wired | bin + commands.preview/doctor resolve |
127
+ | verified | doctor + app contract / boundary checks pass |
128
+ | releasable | verify receipts green; no donor junk in publish set; secrets marked |
129
+ | production | deploy receipt / remote binding evidence |
130
+
131
+ ### B3. Strengthen verify-\*
132
+ - `verify-package` / `verify-source-boundaries`: keep; add app-level contract checks invoked by `agentsam app doctor` and maturity.
133
+ - Imperfect apps stay listed; failures become receipts on the catalog row.
134
+
135
+ **Acceptance B:** `agentsam inspect apps/cad-creator` and `agentsam inspect apps/church-site` both emit world-state; `agentsam app list --json` shows maturity for every `apps/*`.
136
+
137
+ ---
138
+
139
+ ## Batch C — Universal ingest → world-state
140
+
141
+ - Paste / path / stdin → detect → extract → sensitive candidates (confidence ≠ risk; redact before preview/model) → catalog → world-state.
142
+ - Safe localhost gallery / Brand Packet = projections of world-state.
143
+ - Fixtures = harvested sites + real app slices (not mini, not toy repos).
144
+ - Wire into existing ZIP ingest only as one path (`scripts/ingest-app-zips.py`); CLI front door is `agentsam inspect` / shell paste, not a separate product brand.
145
+
146
+ **Acceptance C:** Ingest a harvested site fixture → world-state row appears in apps discovery or inspect output with sensitive fields redacted.
147
+
148
+ ---
149
+
150
+ ## Batch D — Apps Clack catalog + distribute + mini clarity
151
+
152
+ ### D1. Clack TUI is the primary `agentsam apps` UX (locked)
153
+
154
+ When TTY and no subcommand (or `--interactive`):
155
+
156
+ ```text
157
+ agentsam apps
158
+ → Clack select: catalog of apps
159
+ label: name · id · maturity · kind(product|theme|incoming)
160
+ → Clack select: action
161
+ Preview | Info | Doctor | Scaffold / Add | Deploy
162
+ ```
163
+
164
+ **Action rules (locked):**
165
+
166
+ | Action | When enabled | Behavior |
167
+ |--------|--------------|----------|
168
+ | **Preview** | maturity ≥ scaffolded and preview command/bin exists | Existing `runAppBin(..., preview)` / theme gallery preview — local packaged prebuild |
169
+ | **Info** | always | Manifest + world-state summary |
170
+ | **Doctor** | wired+ | Existing doctor bin / calculated checks |
171
+ | **Scaffold / Add** | scaffolded+ | `agentsam app scaffold <id> <dir>` or new `agentsam app add <id>` into cwd/target; ships runtime/scaffold only |
172
+ | **Deploy** | maturity ≥ releasable | Delegate to existing app wrangler / `agentsam deploy` path; refuse with next_actions if below gate |
173
+
174
+ Non-TTY / scripted: keep `agentsam app list|info|doctor|preview|scaffold` and add:
175
+
176
+ - `agentsam app add <id> [dir]`
177
+ - `agentsam app list --json` (maturity fields)
178
+ - `agentsam apps` with args still routes to same command tree
179
+
180
+ Implementation touchpoints:
181
+
182
+ - Expand [`src/commands/app.js`](/Users/samprimeaux/agentsam-sdk/src/commands/app.js) with `runAppsInteractive()` using `@clack/prompts` `select` / `confirm` (same style as [`src/ui/cli/help.js`](/Users/samprimeaux/agentsam-sdk/src/ui/cli/help.js)).
183
+ - [`src/cli.js`](/Users/samprimeaux/agentsam-sdk/src/cli.js): bare `apps` with empty argv → interactive; `app list` stays non-interactive default for scripts.
184
+
185
+ ### D2. npm distribute
186
+ - Curate publishable set for product apps (cad / cms / studio / ecommerce) toward `@inneranimalmedia/<app>` or documented `agentsam app add` from registry.
187
+ - Exclude donor/reference junk per existing RELEASES / local-studio donor notes.
188
+ - Catalog marks `distributable: true` only when releasable gates pass.
189
+
190
+ ### D3. Mini lane
191
+ - Keep `agentsam mini` working; docs/help state it is the tiny utility lane, not the proof of architecture.
192
+ - Apps catalog is the poster for packaged past work.
193
+
194
+ **Acceptance D:** On a TTY, `agentsam apps` opens Clack menu listing product + harvested apps with maturity; selecting Preview boots a local prebuild; Deploy is offered only for releasable apps; `agentsam mini` still works; docs state MINI/APP/WORLD.
195
+
196
+ ---
197
+
198
+ ## Explicit non-goals
199
+
200
+ - Repo redesign for package purity
201
+ - New toy apps as proof
202
+ - Hiding imperfect apps from the catalog
203
+ - TypeSafe/Jev vocabulary
204
+ - Auto-fetch remotes / execute imported HTML
205
+ - Jumping every path to LLM
206
+ - Replacing `agentsam shell` interactive UI work (already planned separately)
207
+
208
+ ## Execution order
209
+
210
+ 1. **Batch A** (docs + primitives) — unblocks vocabulary
211
+ 2. **Batch B** (world-state + maturity + verify + discovery) — unblocks honest catalog
212
+ 3. **Batch D1** (Clack `agentsam apps` menu) — ship usable select/preview as soon as maturity stubs exist; refine gates as B hardens
213
+ 4. **Batch C** (ingest → world-state) — feeds catalog/inspect
214
+ 5. **Batch D2–D3** (npm distribute + mini framing)
215
+
216
+ Suggested first PR slice after plan approval: A1+A2 + B2 discovery expansion + D1 Clack menu with stub maturity (wired from manifest presence), then deepen world-state/verify.
217
+
218
+ ## Validation (each batch)
219
+
220
+ - `node --check` on touched JS
221
+ - Existing `test/cli/*.test.mjs` + new tests for maturity calculation and interactive path (mock Clack or non-TTY `--json`)
222
+ - `npm run verify:package` / `verify:boundaries` before any distribute claim
223
+ - Manual TTY: `agentsam apps` → select `local-studio` → Preview
224
+
225
+ ## Optional hygiene (non-blocking)
226
+
227
+ Review leftover `/Users/samprimeaux/agent-worktrees/*` clones (stale SDK @ 892 behind, etc.) when convenient.