@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,151 @@
1
+ # AgentSam Runtime Protocol
2
+
3
+ > Branch: `feat/runtime-protocol-agentsamd`. Law: **agentsamd is the machine daemon; providers are adapters.**
4
+
5
+ ## Architectural law
6
+
7
+ **agentsamd is the AgentSam machine/runtime daemon. Providers are adapters beneath it.**
8
+
9
+ Physical D1 tables stay `terminal_*` for this generation. Domain nouns in code are `RuntimeInstance`, `RuntimeConnection`, `RuntimeAdapter`, `RuntimeCapabilities`.
10
+
11
+ | Noun | Role |
12
+ |---|---|
13
+ | **agentsamd** | Lives with execution: exec, PTY, fs, processes, git, tools, capabilities, attach |
14
+ | **Native helper** (this sprint) | Privileged companion under unprivileged Go: keychain, mounts, devices |
15
+ | **EXECOS Worker** (`env.EXECOS` / `EXECOS_IAM`) | Interim cloud→machine hop + session/job writes. Becomes `runtime_adapter=execos_legacy`, then retires |
16
+ | **PTY_SERVICE** | VPC/PTY health lane — not the daemon |
17
+ | **agentsam-go-worker** | Optional hosted Go service (same Go core). **Not** the Studio control plane |
18
+ | **Local Studio Worker** | Stock app host: auth, D1 SSOT, bindings, runtime APIs |
19
+
20
+ ### Four permanent concepts (never conflate)
21
+
22
+ ```text
23
+ INSTANCE what computer/execution environment is this?
24
+ ADAPTER what speaks agentsam.runtime.v1 there?
25
+ TRANSPORT how do we reach that adapter?
26
+ AUTH how is this connection authenticated?
27
+ ```
28
+
29
+ Examples:
30
+
31
+ | | Mac | GCP VM | CF Sandbox |
32
+ |---|---|---|---|
33
+ | provider | local | google_cloud | cloudflare |
34
+ | substrate | host | vm | sandbox |
35
+ | lifecycle | persistent | persistent | ephemeral |
36
+ | provider_product | (host) | compute_engine | sandbox |
37
+ | protocol | agentsam.runtime.v1 | same | same |
38
+ | runtime_adapter | agentsamd | agentsamd | cloudflare_sandbox |
39
+ | transport | cloudflare_tunnel / direct_https | cloudflare_tunnel / vpc_service | service_binding |
40
+ | auth_mode | connection_token | connection_token / platform_bridge | service_binding |
41
+
42
+ **Forbidden:** `transport IN ('execos','container')` — those were adapter/substrate smuggled into transport.
43
+
44
+ ---
45
+
46
+ ## Runtime Registry (D1 spine — preserve)
47
+
48
+ ```text
49
+ ACCOUNT
50
+ │
51
+ ├── agentsam_api_credentials AAK / BRK
52
+ ├── cloud_provider_connections optional provisioning authority (widen providers)
53
+ │
54
+ └── terminal_instances WHAT EXISTS
55
+ ├── provider, substrate, provider_product, lifecycle
56
+ ├── platform / arch / capabilities_json
57
+ ▼
58
+ terminal_connections HOW AGENTSAM TALKS TO IT
59
+ ├── protocol = agentsam.runtime.v1
60
+ ├── runtime_adapter = agentsamd | execos_legacy | …
61
+ ├── transport = direct_https | cloudflare_tunnel | vpc_service | …
62
+ ├── auth_mode
63
+ ├── terminal_connection_credentials
64
+ ├── terminal_enrollment_tokens
65
+ ├── terminal_sessions interactive PTY
66
+ ├── terminal_jobs noninteractive (runtime_run_id)
67
+ └── terminal_port_forwards
68
+ ```
69
+
70
+ **Do not** introduce parallel `runtime_instances` / `runtime_connections` tables this generation.
71
+
72
+ ### Authority ladder (keep)
73
+
74
+ ```text
75
+ AAK / BRK → enrollment token → connection credential → session attach token
76
+ ```
77
+
78
+ ### Rebuild now (bounded)
79
+
80
+ 1. **`terminal_instances`** — drop `kind`↔provider CHECK; drop `compute_provider`; add substrate / provider_product / lifecycle / hw_model; normalize arch `x64`→`x86_64`.
81
+ 2. **`terminal_connections`** — replace transport=`execos|container` with `protocol` + `runtime_adapter` + real `transport`; fold `transport_provider` into `transport`; add `endpoint_ref`; stop growing provider-specific columns (keep queried CF indexes for now, prefer `provider_metadata_json`).
82
+ 3. **`terminal_jobs`** — `execos_run_id` → `runtime_run_id` (all live values null).
83
+ 4. **`cloud_provider_connections`** — widen `provider`; remove policy CHECK forcing GCP `provider_connection_id`.
84
+
85
+ ### Do not rebuild unless needed
86
+
87
+ `terminal_connection_credentials`, `terminal_enrollment_tokens`, `terminal_sessions` (optionally rename `auth_token_hash`→`attach_token_hash` while empty), `terminal_port_forwards`, `agentsam_api_credentials`.
88
+
89
+ ---
90
+
91
+ ## Installation grades (this sprint)
92
+
93
+ | Grade | What |
94
+ |---|---|
95
+ | **Full daemon** | Go `agentsamd` + enroll + LaunchAgent/systemd |
96
+ | **Native helper** | Rust/Zig privileged helper with daemon |
97
+ | **Provider adapter** | CF Sandbox etc. (`runtime_adapter=cloudflare_sandbox`) |
98
+
99
+ ```bash
100
+ agentsam setup runtime
101
+ # plan → create instance → create connection → mint enrollment → agentsamd enroll
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Protocol surface
107
+
108
+ ```text
109
+ identity / capabilities / health
110
+ exec / spawn / signal / terminate
111
+ pty.create|attach|resize|detach
112
+ fs.read|write|list|watch
113
+ ports.list|expose
114
+ system.inspect
115
+ ```
116
+
117
+ ---
118
+
119
+ ## Migration priority
120
+
121
+ 1. Freeze vocabulary (this doc + `packages/runtime-protocol`)
122
+ 2. Rebuild `terminal_instances` (local_device→host)
123
+ 3. Rebuild `terminal_connections` (execos→`runtime_adapter=execos_legacy`)
124
+ 4. New enrollments default `runtime_adapter=agentsamd`, `protocol=agentsam.runtime.v1`
125
+ 5. `execos_run_id` → `runtime_run_id`
126
+ 6. Widen `cloud_provider_connections`
127
+ 7. Heartbeat fills `capabilities_json`, `provider_product`, lifecycle facts
128
+ 8. `agentsam setup runtime` writes these records from GOAP plans
129
+ 9. After agentsamd proven: migrate live ExecOS rows `execos_legacy` → `agentsamd`
130
+ 10. Keep ExecOS as adapter during cutover — never as the architecture
131
+
132
+ ---
133
+
134
+ ## Rejected
135
+
136
+ - Parallel `runtime_*` physical tables beside `terminal_*` this generation
137
+ - `transport = execos` or `container`
138
+ - kind↔provider coupling (VM=Google only, etc.)
139
+ - Soft dual-write forever
140
+ - Casting agentsam-go-worker as the EXECOS/control plane
141
+ - Stock dependence on `load-agent-env.sh`
142
+
143
+ ---
144
+
145
+ ## Success criteria
146
+
147
+ - User123: Studio → `setup runtime` → enrolled agentsamd (+ native helper on host) → attach
148
+ - Same protocol on Mac / GCP VM / Docker / CF Container; Sandbox via adapter
149
+ - Transport changes without renaming the instance
150
+ - D1 spine stays `terminal_*`; vocabulary is four-axis + adapter + transport
151
+ - ExecOS is `execos_legacy` until retired; agentsamd is the computer
@@ -14,12 +14,20 @@
14
14
  Browser GET on connections **start** → 302 to Cloudflare.
15
15
  `fetch` + `Accept: application/json` → `{ authorize_url }`.
16
16
 
17
- ## D1
17
+ ## D1 tables (Cloudflare connect / approve)
18
18
 
19
- - `identity_oauth_states` — identity PKCE (migration `0013_identity_oauth_states.sql`)
20
- - `agentsam_cloudflare_oauth_state` — MCP connector PKCE
19
+ | Table | Role |
20
+ |---|---|
21
+ | `oauth_state_nonces` | Short-lived PKCE state for connector `/api/connections/cloudflare/*` |
22
+ | `identity_oauth_states` | Short-lived PKCE for identity “Sign in with Cloudflare” |
23
+ | `user_oauth_tokens` | **SSOT** durable grant: sealed access/refresh, scopes, `account_identifier` (= CF account id), `is_active` |
24
+ | `agentsam_cloudflare_connections` | **Legacy** — migrated/superseded into `user_oauth_tokens`; do not write new rows |
25
+ | `agentsam_cloudflare_oauth_state` | Legacy MCP connector PKCE (prefer `oauth_state_nonces`) |
26
+
27
+ Vault seals token material; D1 never stores raw refresh/access plaintext in the durable grant row when vault is configured.
28
+
29
+ Resource discovery (their D1/R2/Workers) uses the sealed token from `user_oauth_tokens` — never the platform `env.DB` binding.
21
30
 
22
- ## IAM AS redirect (required)
23
31
 
24
32
  Register on client `iam_agentsam_sdk_web`:
25
33
 
@@ -0,0 +1,20 @@
1
+ # AgentSam R2 layout — slug-keyed customer namespaces (not account_id)
2
+ #
3
+ # Path identity = brand.slug (UNIQUE in D1). account_id lives inside manifest.json
4
+ # as ownership data for auth checks — never as a directory segment.
5
+ #
6
+ # {slug}/
7
+ # brand/identity.json
8
+ # brand/assets/{asset_key}/{version}/ ← brand_asset / brand_asset_variant
9
+ # site/public/… site/draft/…
10
+ # frontend/dist/
11
+ # backend/
12
+ # manifest.json ← account_id, oauth defaults, included_apps
13
+ #
14
+ # Platform chrome (not a customer):
15
+ # _platform/shared/…
16
+ #
17
+ # Product surface for non-git customers:
18
+ # agentsam scaffold new <slug>
19
+ # → provisions R2 prefix + Worker + D1 rows from an npm-packaged app scaffold
20
+ # → customers never see the monorepo
@@ -0,0 +1,97 @@
1
+ # AgentSam Work product extraction
2
+
3
+ ## Product boundary
4
+
5
+ AgentSam Work is a **private monorepo workspace package**, not a separately
6
+ published product package. It is reusable UI/runtime contract code consumed by
7
+ Local Studio and can later be composed into other AgentSam apps.
8
+
9
+ ```
10
+ packages/agentsam-work
11
+ contracts normalized Work view/runtime models
12
+ frontend shell, mini navigation, right rail, surfaces
13
+ client transport adapter
14
+ fixtures production-shaped localhost data
15
+
16
+ apps/local-studio
17
+ frontend route composition + LocalStudio WorkHost
18
+ backend/server/work
19
+ authenticated provider/storage adapters
20
+ ```
21
+
22
+ The package is intentionally parallel to `@inneranimalmedia/agentsam-settings`:
23
+ presentation/contracts are reusable; Local Studio remains the first host and
24
+ owns backend authority.
25
+
26
+ ## Donor material
27
+
28
+ The current InnerAnimalMedia dashboard remains a donor, not a dependency.
29
+
30
+ The extraction studied:
31
+
32
+ - `CollaborateWorkShell.tsx`
33
+ - `CollaboratePageRail.tsx`
34
+ - `collaborateRailNav.ts`
35
+ - `shellNav.ts`
36
+ - `LaunchDeskPage.tsx`
37
+ - `CollaborateTasksPanel.tsx`
38
+ - `MailPage.tsx`
39
+ - `api/tickets.ts`
40
+ - `api/projects.ts`
41
+ - calendar/mail/Gmail OAuth backend modules
42
+
43
+ The useful product grammar is retained:
44
+
45
+ - one Work mini navigation family;
46
+ - optional narrow right utility rail;
47
+ - Calendar/Tickets/Mail as one Work workbench;
48
+ - ticket `surface` separates engineering/platform tickets from Collaborate
49
+ tickets without duplicating the ticket runtime;
50
+ - Artifacts and Projects share the same Work chrome;
51
+ - Projects keep their card-grid information architecture;
52
+ - project detail keeps its main AgentSam composer plus the quick-stats and
53
+ project-context rail.
54
+
55
+ Dashboard-specific route prefixes, workspace navigation infrastructure, and
56
+ host-specific CSS are not imported into the package.
57
+
58
+ ## Flat route contract
59
+
60
+ ```
61
+ /collaborate
62
+ /collaborate?seg=tickets
63
+ /mail
64
+ /artifacts
65
+ /artifacts/tickets
66
+ /artifacts/tickets/:ticketId
67
+ /projects
68
+ /projects/:projectId
69
+ ```
70
+
71
+ `seg=tasks` may remain a compatibility alias at a host boundary, but reusable
72
+ links emit `seg=tickets`.
73
+
74
+ ## Theme contract
75
+
76
+ The default theme intentionally follows the simple Google Workspace/Cloud
77
+ visual grammar visible in the donor Work pages: bright canvas, subtle blue
78
+ selection, compact rows, restrained borders, little shadow, and rounded
79
+ controls.
80
+
81
+ It is not hard-coded as brand authority. Work surfaces consume semantic
82
+ `--agentsam-work-*` CSS variables. `applyWorkThemeTokens()` lets Local
83
+ Studio project a Settings → Themes selection into the Work package without
84
+ making Work import Settings.
85
+
86
+ ## Backend extraction order
87
+
88
+ 1. Keep all routes on the production-shaped fixture host until the UI shell is
89
+ approved.
90
+ 2. Implement read-only Local Studio adapters for projects, artifacts, tickets,
91
+ calendar, and mail.
92
+ 3. Switch Local Studio from `createFixtureWorkHost` to the HTTP host.
93
+ 4. Add mutations (ticket CRUD, calendar CRUD, mail actions/compose) behind the
94
+ same adapters.
95
+ 5. Normalize Gmail OAuth return paths to flat `/mail`.
96
+ 6. Only then evaluate database migrations; do not reshape live D1 just to
97
+ satisfy the frontend scaffold.
@@ -0,0 +1,70 @@
1
+ # AgentSam icon & motion grammar
2
+
3
+ Family system for product marks and UI glyphs. Static identity stays quiet and architectural; runtime motion (Computational Hyperspace) is spectral and dimensional — not the icon itself.
4
+
5
+ ## Brand hierarchy
6
+
7
+ ```text
8
+ AgentSam master brand
9
+ ├── Local Studio product identity
10
+ ├── CAD Creator product identity
11
+ ├── Ecommerce product identity
12
+ ├── CLI surface identity
13
+ └── future apps
14
+ ```
15
+
16
+ Related without sharing the exact same icon. One recognizable **master silhouette** (abstract SAM core / aperture / dimensional mark — readable at 16–24 px). Each product adds a single cue:
17
+
18
+ | Product | Cue on master geometry |
19
+ |---|---|
20
+ | Local Studio | workspace / portal |
21
+ | CAD Creator | dimensional plane / cube |
22
+ | Ecommerce | modular product-card |
23
+
24
+ ## Icon grammar
25
+
26
+ | Attribute | Rule |
27
+ |---|---|
28
+ | Base | graphite / near-black dimensional surface |
29
+ | Accent | spectral blue → violet; amber only for special active states |
30
+ | Geometry | rounded, slightly architectural |
31
+ | Detail | one dominant shape, max 2–3 secondary forms |
32
+ | Text | never in the app icon |
33
+ | Lighting | restrained edge/highlight — not glossy clip-art |
34
+ | Small sizes | simplify rather than shrink detail |
35
+ | Status icons | separate semantic system from product logos |
36
+ | Motion | slow depth/parallax; no bouncing/spinning clutter |
37
+
38
+ ## Asset drop paths (desktop shell)
39
+
40
+ | Asset | Path |
41
+ |---|---|
42
+ | App / Dock / tray PNG (prefer **1024×1024**) | `packages/agentsam-desktop-shell/icons/<app_id>/icon.png` |
43
+ | Vector mark | `packages/agentsam-desktop-shell/icons/<app_id>/*.svg` |
44
+ | Manifest | `packages/agentsam-desktop-shell/manifests/<app_id>.json` → `icon_set`, `icon_mark_svg` |
45
+
46
+ Build: `cd packages/agentsam-desktop-shell && npm run build:brand -- local-studio`
47
+ Optional: `AGENTSAM_ICON_URL=https://…/logo.png` overrides local files.
48
+
49
+ `build-brand.mjs` must honor `icon_mark_svg` when `icon.png` is missing (rasterize → `src-tauri/icons/`).
50
+
51
+ ## UI glyphs (not product logos)
52
+
53
+ One semantic layer — design system picks the glyph family:
54
+
55
+ ```jsx
56
+ <Icon name="workspace" />
57
+ <Icon name="terminal" />
58
+ <Icon name="activity" />
59
+ <Icon name="repository" />
60
+ <Icon name="warning" />
61
+ ```
62
+
63
+ Do not mix Heroicons / Lucide / random SVGs / macOS symbols as the AgentSam brand identity. Platform-native symbols OK only for OS chrome.
64
+
65
+ ## Identity vs motion
66
+
67
+ - **Static identity:** quiet / recognizable / architectural
68
+ - **Runtime motion:** spectral / dimensional / computational (Hyperspace)
69
+
70
+ See also: `docs/plans/LOCAL-STUDIO-GRADUATION-2026-09-26.md`.
@@ -0,0 +1,71 @@
1
+ # Host mount checklist — Content Studio (Path A / Commit 6)
2
+
3
+ Portable packages are ready for host adapters. Full OAuth / production mounts
4
+ are Path B / host-app work — do **not** fork packages per host.
5
+
6
+ ## Shared mount contract
7
+
8
+ Each host supplies a `ContentRuntime` via `createContentRuntime({...})`:
9
+
10
+ | Seam | Local Studio | IAM dashboard | Fuel & Free Time (customer) |
11
+ |---|---|---|---|
12
+ | `account` / `actor` | desktop session | IAM auth session | customer tenant session |
13
+ | `providers` / capability adapters | local + optional CF | R2 / Images / Drive / Stream | customer-scoped providers |
14
+ | `brandResolver` | project BrandPack projection | org BrandPack projection | customer BrandPack projection |
15
+ | `knowledge` | local / injected | host Vectorize/AutoRAG/pgvector | customer knowledge adapter |
16
+ | `localHost` | Tauri / agentsamd bridge | usually `unavailable` | usually `unavailable` |
17
+ | `routes` / `permissions` | desktop RouteMap | IAM RouteMap | customer RouteMap |
18
+ | UI | `<ContentStudio runtime={rt} />` | same | same |
19
+
20
+ ## Do
21
+
22
+ 1. Build runtime in the **host** app (not inside `agentsam-content-studio`).
23
+ 2. Derive UI tabs/actions from `await runtime.capabilities()`.
24
+ 3. Keep BrandPack authority in `agentsam-brand` / `brand.pack.json`.
25
+ 4. Use `inferBrandAssociation` only as proposals + ScoreCard evidence.
26
+ 5. Use `@inneranimalmedia/agentsam-cloudflare-images` for CF Images HTTP.
27
+
28
+ ## Don't
29
+
30
+ - Import Tauri / raw `fs` / agentsamd into reusable UI packages.
31
+ - Hardcode R2 / Images / Drive / Vectorize tabs in Content Studio.
32
+ - Embed real customer BrandPack fixtures in generic packages.
33
+ - Seed fictional `DEMO_BRAND_PROJECTIONS` into production `/content` runtimes.
34
+ - Run IAM `deploy:full` from this SDK repo for content-studio work.
35
+
36
+ ## Local Studio mount (wired)
37
+
38
+ - Route: `/content` → `ContentStudioPage` mounts `<ContentStudio runtime={…} />`
39
+ - Runtime factory: `apps/local-studio/frontend/src/lib/content/createLocalStudioContentRuntime.ts`
40
+ - **Identity:** resolved from `useCurrentUserState()` / Auth session — fail closed when missing.
41
+ No `acct_local_studio` / `local-studio-user` production defaults.
42
+ - **Brand:** empty `ContentBrandResolver` projections until host injects BrandPack (Path B).
43
+ Fictional demos live only in `demoBrandProjections.ts` (tests/examples).
44
+ - **LocalContentHost (desktop):** native Rust Tauri `local_content_bridge` —
45
+ `rfd` pickers, opaque `localref_*` / `localdir_*`, granted roots, browse in place,
46
+ copy only on `import_to_library`. **Does not require** monorepo Node or global Node.
47
+ - **LocalContentHost (browser/dev):** File System Access API when available; else
48
+ explicit browser-import (`import_bytes`, 32 MiB) via Node `/api/content/local/bridge`.
49
+ - Knowledge / BrandSimilarity: noop adapters (no Vectorize hardcode)
50
+ - agentsamd: probed via Tauri `ensure_agentsamd` / health; FS ops are native Rust until
51
+ agentsamd ships native `/v1/fs` (documented migration target)
52
+
53
+ ## Packaged-app contract
54
+
55
+ | Requirement | Status |
56
+ |---|---|
57
+ | Works from `/Applications` without repo checkout | Native Rust FS — yes |
58
+ | No global Node for content FS | Desktop native — yes; Node bridge is browser/dev only |
59
+ | Native Open File / Open Folder | `rfd` via `pick_files` / `pick_directory` |
60
+ | Selected file not copied until import | Yes — `import_to_library` is separate |
61
+ | Opaque refs only to UI/models | Yes — absolute paths stay in Rust/grant store |
62
+
63
+ ## Remaining for true 3-host E2E (Path B)
64
+
65
+ - agentsamd native `/v1/fs` + watch (migration from native Rust bridge)
66
+ - IAM dashboard route + OAuth-scoped providers
67
+ - F&F admin mount with customer account scope
68
+ - Production BrandPack projection into Local Studio `brandResolver`
69
+ - Harvest Go pipeline → SiteGraph / TokenGraph → package-readiness ScoreCards
70
+ - Brand package migration onto shared CF Images transport (content already uses it)
71
+ - Beta / outcome calibration receipts for accept/reject (does not mutate evidence)