@inneranimalmedia/agentsam-sdk 2.6.3 → 2.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (608) hide show
  1. package/AGENTSAM.md +17 -0
  2. package/README.md +31 -10
  3. package/apps/client-cms-editor/AGENTS.md +12 -0
  4. package/apps/client-cms-editor/IMPORT_PROVENANCE.json +8 -0
  5. package/apps/client-cms-editor/README.md +72 -0
  6. package/apps/client-cms-editor/agentsam.app.json +57 -0
  7. package/apps/client-cms-editor/backend/README.md +5 -0
  8. package/apps/client-cms-editor/backend/package.json +22 -0
  9. package/apps/client-cms-editor/backend/src/api/client.ts +200 -0
  10. package/apps/client-cms-editor/backend/src/demo-bootstrap.ts +145 -0
  11. package/apps/client-cms-editor/backend/src/index.ts +6 -0
  12. package/apps/client-cms-editor/backend/src/model.ts +115 -0
  13. package/apps/client-cms-editor/backend/src/preview/bridge.ts +79 -0
  14. package/apps/client-cms-editor/backend/src/preview/urls.ts +55 -0
  15. package/apps/client-cms-editor/backend/src/routing/cms-route.js +293 -0
  16. package/apps/client-cms-editor/backend/src/routing/index.js +10 -0
  17. package/apps/client-cms-editor/backend/src/storefront.ts +52 -0
  18. package/apps/client-cms-editor/backend/tsconfig.json +15 -0
  19. package/apps/client-cms-editor/backend/worker/index.js +34 -0
  20. package/apps/client-cms-editor/backend/wrangler.jsonc +11 -0
  21. package/apps/client-cms-editor/bin/agentsam-cms.mjs +229 -0
  22. package/apps/client-cms-editor/frontend/index.html +12 -0
  23. package/apps/client-cms-editor/frontend/package.json +33 -0
  24. package/apps/client-cms-editor/frontend/src/AgentSamDrawer.tsx +188 -0
  25. package/apps/client-cms-editor/frontend/src/CmsAgentSurface.tsx +191 -0
  26. package/apps/client-cms-editor/frontend/src/CmsEditor.tsx +1345 -0
  27. package/apps/client-cms-editor/frontend/src/env.d.ts +14 -0
  28. package/apps/client-cms-editor/frontend/src/index.ts +8 -0
  29. package/apps/client-cms-editor/frontend/src/lib/content-safety.ts +63 -0
  30. package/apps/client-cms-editor/frontend/src/main.tsx +17 -0
  31. package/apps/client-cms-editor/frontend/src/mount.tsx +51 -0
  32. package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +214 -0
  33. package/apps/client-cms-editor/frontend/src/styles/cmsShell.css +1739 -0
  34. package/apps/client-cms-editor/frontend/src/styles/studio.css +106 -0
  35. package/apps/client-cms-editor/frontend/src/surfaces/CmsDashboard.tsx +313 -0
  36. package/apps/client-cms-editor/frontend/src/surfaces/CmsGuidedChatHero.tsx +121 -0
  37. package/apps/client-cms-editor/frontend/src/surfaces/CmsHubPage.tsx +132 -0
  38. package/apps/client-cms-editor/frontend/src/surfaces/CmsSiteSwitcher.tsx +176 -0
  39. package/apps/client-cms-editor/frontend/src/surfaces/index.ts +5 -0
  40. package/apps/client-cms-editor/frontend/src/surfaces/types.ts +48 -0
  41. package/apps/client-cms-editor/frontend/tsconfig.json +25 -0
  42. package/apps/client-cms-editor/frontend/vite.config.ts +13 -0
  43. package/apps/client-cms-editor/package-lock.json +3832 -0
  44. package/apps/client-cms-editor/package.json +23 -0
  45. package/apps/client-cms-editor/reference/DONOR_README.md +52 -0
  46. package/apps/client-cms-editor/reference/DONOR_package-lock.json +1253 -0
  47. package/apps/client-cms-editor/reference/DONOR_tsconfig.json +15 -0
  48. package/apps/client-cms-editor/shared/cms/package.json +21 -0
  49. package/apps/client-cms-editor/shared/cms/src/agent-context.ts +35 -0
  50. package/apps/client-cms-editor/shared/cms/src/cloudflare-bindings.ts +51 -0
  51. package/apps/client-cms-editor/shared/cms/src/editor-types.ts +58 -0
  52. package/apps/client-cms-editor/shared/cms/src/index.ts +5 -0
  53. package/apps/client-cms-editor/shared/cms/src/publication.ts +24 -0
  54. package/apps/client-cms-editor/shared/cms/src/routes.ts +11 -0
  55. package/apps/client-cms-editor/shared/cms/tsconfig.json +12 -0
  56. package/bin/agentsam +16 -1
  57. package/bin/agentsam-rapid-rust +36 -0
  58. package/docs/AUTH_IDENTITY_CONTRACT.md +2 -0
  59. package/docs/BRAND_INTELLIGENCE.md +1 -1
  60. package/docs/MACHINE_INTELLIGENCE.md +120 -0
  61. package/docs/WINDOWS_RUNTIME_INSTALL.md +30 -0
  62. package/docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md +188 -0
  63. package/docs/architecture/AGENTSAM_DISTRIBUTION_OWNERSHIP.md +176 -0
  64. package/docs/architecture/AGENTSAM_GO_RUNTIME.md +282 -0
  65. package/docs/architecture/AGENTSAM_RUNTIME_PROTOCOL.md +151 -0
  66. package/docs/architecture/CODEBASEINDEX_GUIDED_PATH.md +202 -0
  67. package/docs/architecture/FS_E2E_CLOSURE_RECEIPT.md +59 -0
  68. package/docs/architecture/LOCAL_FS_AUTHORITY.md +38 -0
  69. package/docs/architecture/LOCAL_STUDIO_CLOUDFLARE_OAUTH.md +36 -0
  70. package/docs/architecture/PLAN_CLI_AND_LOCAL_STUDIO_DESKTOP.md +96 -0
  71. package/docs/architecture/R2_SLUG_NAMESPACE.md +20 -0
  72. package/docs/architecture/SAM_ACTIVITY_RECOVERY_RECEIPT.md +39 -0
  73. package/docs/architecture/SAM_DECISION_WORK_RECEIPT.md +54 -0
  74. package/docs/architecture/SAM_KERNEL.md +181 -0
  75. package/docs/architecture/SAM_MACHINE_NORMALIZATION_PRECOMMIT_REPORT.md +208 -0
  76. package/docs/architecture/SLASH_SKILLS_PORTABLE.md +116 -0
  77. package/docs/architecture/WORK_PRODUCT_EXTRACTION.md +97 -0
  78. package/docs/architecture/fs-e2e-receipt.latest.json +42 -0
  79. package/docs/architecture/previews/codebaseindex-guided-path/CODEBASEINDEX_GUIDED_PATH.md +202 -0
  80. package/docs/architecture/previews/codebaseindex-guided-path/index.html +321 -0
  81. package/docs/brand/AGENT_SAM_ICON_GRAMMAR.md +70 -0
  82. package/docs/content-studio/HOST_MOUNT_CHECKLIST.md +71 -0
  83. package/docs/content-studio/REVISION_GATE_2026-09-27.md +501 -0
  84. package/docs/contracts/capability-install-planner.md +67 -0
  85. package/docs/contracts/environment-vocabulary.md +195 -0
  86. package/docs/contracts/google-cloud-oauth-setup.md +199 -0
  87. package/docs/local-studio/WORKMODE_DONOR_NOTES.md +1 -1
  88. package/docs/plans/LOCAL-STUDIO-GRADUATION-2026-09-26.md +290 -0
  89. package/docs/plans/LOCAL-STUDIO-REAL-APP-CONTRACT-ADDENDUM-2026-09-27.md +394 -0
  90. package/docs/plans/MACHINE-FIRST-APPS-TUI-2026-09-24.md +227 -0
  91. package/docs/plans/TOMORROW-EXTENSIVE-TODO-2026-09-26.md +221 -0
  92. package/docs/plans/TOMORROW-MACHINE-FIRST-BRIEFING.md +145 -0
  93. package/docs/plans/UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md +215 -0
  94. package/docs/plugins.md +2 -2
  95. package/docs/product/AGENTSAM_PRODUCT_EXPERIENCE_STANDARD.md +280 -0
  96. package/docs/product/LOCAL_STUDIO_DESKTOP_EXPERIENCE.md +139 -0
  97. package/docs/product/README.md +8 -0
  98. package/docs/rapid-rust-wasm.md +35 -0
  99. package/migrations/d1/0010_portable_tickets_memory.sql +140 -0
  100. package/migrations/d1/0011_agentsam_skill_v2.sql +185 -0
  101. package/migrations/d1/0011b_agentsam_skill_v2_cutover.sql +22 -0
  102. package/migrations/d1/0011c_agentsam_skill_v2_backfill.sql +76 -0
  103. package/migrations/d1/0011d_agentsam_skill_v2_retrieval_revisions.sql +50 -0
  104. package/migrations/d1/0012_agentsam_tools_required_seed.sql +67 -0
  105. package/migrations/d1/0013_identity_oauth_states.sql +15 -0
  106. package/migrations/d1/0014_auth_event_log.sql +20 -0
  107. package/migrations/d1/0015_identity_oauth_state_app_id.sql +3 -0
  108. package/migrations/d1/0016_cloudflare_oauth_user_oauth_tokens_ssot.sql +14 -0
  109. package/migrations/d1/README_PORTABLE_CONTROL_PLANE.md +16 -0
  110. package/migrations/sqlite/agentsam_skill_retrieval.portable.sql +42 -0
  111. package/package.json +88 -14
  112. package/packages/agentsam-brand/README.md +106 -11
  113. package/packages/agentsam-brand/bin/agentsam-brand.mjs +9 -0
  114. package/packages/agentsam-brand/package.json +39 -7
  115. package/packages/agentsam-brand/src/adapters/cloudflare-images.js +453 -0
  116. package/packages/agentsam-brand/src/adapters/cloudflare-r2.js +74 -0
  117. package/packages/agentsam-brand/src/adapters/d1-registry.js +26 -0
  118. package/packages/agentsam-brand/src/adapters/filesystem.js +59 -0
  119. package/packages/agentsam-brand/src/adapters/memory.js +31 -0
  120. package/packages/agentsam-brand/src/cli/controller.js +503 -0
  121. package/packages/agentsam-brand/src/cli/wizard.js +526 -0
  122. package/packages/agentsam-brand/src/core/capabilities.js +201 -0
  123. package/packages/agentsam-brand/src/core/derivatives.js +211 -0
  124. package/packages/agentsam-brand/src/core/errors.js +12 -0
  125. package/packages/agentsam-brand/src/core/ingest.js +195 -0
  126. package/packages/agentsam-brand/src/core/inspect.js +109 -0
  127. package/packages/agentsam-brand/src/core/keys.js +83 -0
  128. package/packages/agentsam-brand/src/core/naming.js +142 -0
  129. package/packages/agentsam-brand/src/core/optimize.js +316 -0
  130. package/packages/agentsam-brand/src/core/pack.js +305 -0
  131. package/packages/agentsam-brand/src/core/plan.js +276 -0
  132. package/packages/agentsam-brand/src/core/preview.js +159 -0
  133. package/packages/agentsam-brand/src/core/processors/cloudflare.js +68 -0
  134. package/packages/agentsam-brand/src/core/processors/contract.js +203 -0
  135. package/packages/agentsam-brand/src/core/processors/index.js +148 -0
  136. package/packages/agentsam-brand/src/core/processors/native.js +82 -0
  137. package/packages/agentsam-brand/src/core/processors/sharp.js +113 -0
  138. package/packages/agentsam-brand/src/core/processors/squoosh-binary.js +195 -0
  139. package/packages/agentsam-brand/src/core/promote.js +288 -0
  140. package/packages/agentsam-brand/src/core/receipts.js +155 -0
  141. package/packages/agentsam-brand/src/core/v2/compile.js +280 -0
  142. package/packages/agentsam-brand/src/core/v2/derivatives-semantic.js +207 -0
  143. package/packages/agentsam-brand/src/core/v2/ingest-graph.js +387 -0
  144. package/packages/agentsam-brand/src/core/v2/roles.js +180 -0
  145. package/packages/agentsam-brand/src/core/v2/schema.js +209 -0
  146. package/packages/agentsam-brand/src/core/v2/templates.js +114 -0
  147. package/packages/agentsam-brand/src/index.js +193 -36
  148. package/packages/agentsam-brand/src/presets/app-icon.json +16 -0
  149. package/packages/agentsam-brand/src/presets/favicon.json +17 -0
  150. package/packages/agentsam-brand/src/presets/hero.json +12 -0
  151. package/packages/agentsam-brand/src/presets/index.js +40 -0
  152. package/packages/agentsam-brand/src/presets/logo.json +12 -0
  153. package/packages/agentsam-brand/src/presets/model.json +8 -0
  154. package/packages/agentsam-brand/src/presets/og-image.json +10 -0
  155. package/packages/agentsam-brand/src/presets/product-shot.json +11 -0
  156. package/packages/agentsam-brand/src/presets/social-image.json +10 -0
  157. package/packages/agentsam-brand/src/presets/web-image.json +10 -0
  158. package/packages/agentsam-contracts/src/artifacts.ts +41 -0
  159. package/packages/agentsam-contracts/src/errors.ts +16 -0
  160. package/packages/agentsam-errors/src/envelope.js +53 -0
  161. package/packages/agentsam-errors/src/index.js +1 -0
  162. package/packages/agentsam-errors/src/recovery.js +301 -0
  163. package/packages/agentsam-knowledge/src/autorag/index.js +1 -1
  164. package/packages/agentsam-knowledge/src/providers/index.js +20 -6
  165. package/packages/agentsam-knowledge/src/providers/ollama-endpoint.js +31 -0
  166. package/packages/agentsam-knowledge/test/autorag.test.mjs +22 -1
  167. package/packages/agentsam-nav/package.json +2 -2
  168. package/packages/agentsam-rapid-rust/Cargo.lock +344 -0
  169. package/packages/agentsam-rapid-rust/Cargo.toml +18 -0
  170. package/packages/agentsam-rapid-rust/README.md +5 -0
  171. package/packages/agentsam-rapid-rust/src/main.rs +718 -0
  172. package/packages/agentsam-rapid-rust/templates/api/Cargo.toml.tmpl +18 -0
  173. package/packages/agentsam-rapid-rust/templates/api/src/lib.rs.tmpl +17 -0
  174. package/packages/agentsam-rapid-rust/templates/common/README.md.tmpl +22 -0
  175. package/packages/agentsam-rapid-rust/templates/common/package.json.tmpl +12 -0
  176. package/packages/agentsam-rapid-rust/templates/common/wrangler.toml.tmpl +6 -0
  177. package/packages/agentsam-rapid-rust/templates/crypto-auth/Cargo.toml.tmpl +21 -0
  178. package/packages/agentsam-rapid-rust/templates/crypto-auth/src/lib.rs.tmpl +32 -0
  179. package/packages/agentsam-rapid-rust/templates/data-processor/Cargo.toml.tmpl +18 -0
  180. package/packages/agentsam-rapid-rust/templates/data-processor/src/lib.rs.tmpl +41 -0
  181. package/packages/agentsam-rapid-rust/templates/shared-core/Cargo.toml.tmpl +9 -0
  182. package/packages/agentsam-rapid-rust/templates/shared-core/core/Cargo.toml.tmpl +7 -0
  183. package/packages/agentsam-rapid-rust/templates/shared-core/core/src/lib.rs.tmpl +23 -0
  184. package/packages/agentsam-rapid-rust/templates/shared-core/worker/Cargo.toml.tmpl +12 -0
  185. package/packages/agentsam-rapid-rust/templates/shared-core/worker/src/lib.rs.tmpl +16 -0
  186. package/packages/agentsam-rapid-rust/templates/shared-core/wrangler.toml.tmpl +6 -0
  187. package/packages/agentsam-repository/src/index.js +1 -0
  188. package/packages/agentsam-repository/src/merkle/semantic.js +3 -10
  189. package/packages/agentsam-repository/src/source-types.js +85 -0
  190. package/packages/agentsam-vault/README.md +96 -0
  191. package/packages/agentsam-vault/package.json +32 -0
  192. package/packages/agentsam-vault/src/contracts/credential.d.ts +78 -0
  193. package/packages/agentsam-vault/src/contracts/credential.js +132 -0
  194. package/packages/agentsam-vault/src/crypto/aes-gcm.d.ts +30 -0
  195. package/packages/agentsam-vault/src/crypto/aes-gcm.js +107 -0
  196. package/packages/agentsam-vault/src/crypto/oauth-envelope.js +150 -0
  197. package/packages/agentsam-vault/src/index.d.ts +9 -0
  198. package/packages/agentsam-vault/src/index.js +27 -0
  199. package/packages/agentsam-vault/src/providers/registry.js +90 -0
  200. package/packages/agentsam-vault/src/runtime/resolver.js +77 -0
  201. package/packages/agentsam-workbench/README.md +24 -0
  202. package/packages/agentsam-workbench/package.json +38 -0
  203. package/packages/agentsam-workbench/src/agent/AgentPanel.tsx +41 -0
  204. package/packages/agentsam-workbench/src/agent/ArtifactCard.tsx +9 -0
  205. package/packages/agentsam-workbench/src/agent/Composer.tsx +102 -0
  206. package/packages/agentsam-workbench/src/agent/ConnectedAgentPanel.tsx +194 -0
  207. package/packages/agentsam-workbench/src/agent/ContextualComposer.tsx +788 -0
  208. package/packages/agentsam-workbench/src/agent/GoalStatusStrip.tsx +38 -0
  209. package/packages/agentsam-workbench/src/agent/MiniAgentSam.tsx +86 -0
  210. package/packages/agentsam-workbench/src/agent/ModelSelect.tsx +19 -0
  211. package/packages/agentsam-workbench/src/agent/Thread.tsx +56 -0
  212. package/packages/agentsam-workbench/src/agent/ToolReceipt.tsx +11 -0
  213. package/packages/agentsam-workbench/src/agent/contextual-composer.css +611 -0
  214. package/packages/agentsam-workbench/src/agent/index.ts +10 -0
  215. package/packages/agentsam-workbench/src/agent/mini-agentsam.css +12 -0
  216. package/packages/agentsam-workbench/src/browser/BrowserFrame.tsx +37 -0
  217. package/packages/agentsam-workbench/src/browser/index.ts +1 -0
  218. package/packages/agentsam-workbench/src/index.ts +6 -0
  219. package/packages/agentsam-workbench/src/project-control.css +160 -0
  220. package/packages/agentsam-workbench/src/projects/ProjectsSurface.tsx +131 -0
  221. package/packages/agentsam-workbench/src/projects/index.ts +1 -0
  222. package/packages/agentsam-workbench/src/shell/Breadcrumb.tsx +35 -0
  223. package/packages/agentsam-workbench/src/shell/ResizableStage.tsx +99 -0
  224. package/packages/agentsam-workbench/src/shell/SidePanel.tsx +5 -0
  225. package/packages/agentsam-workbench/src/shell/index.ts +4 -0
  226. package/packages/agentsam-workbench/src/shell/surfaceRegistry.ts +29 -0
  227. package/packages/agentsam-workbench/src/terminal/TerminalSurface.tsx +5 -0
  228. package/packages/agentsam-workbench/src/terminal/index.ts +1 -0
  229. package/packages/agentsam-workbench/src/timeline/GanttBoard.tsx +258 -0
  230. package/packages/agentsam-workbench/src/timeline/index.ts +1 -0
  231. package/packages/agentsam-workbench/tsconfig.json +13 -0
  232. package/packages/connectors/cloudflare/OAUTH_STORAGE_AUDIT.md +53 -0
  233. package/packages/connectors/cloudflare/package.json +3 -1
  234. package/packages/connectors/cloudflare/src/api-client.js +279 -0
  235. package/packages/connectors/cloudflare/src/capabilities.js +585 -0
  236. package/packages/connectors/cloudflare/src/credential.js +318 -0
  237. package/packages/connectors/cloudflare/src/families/brand-protection.js +123 -0
  238. package/packages/connectors/cloudflare/src/families/keyless.js +114 -0
  239. package/packages/connectors/cloudflare/src/families/pages.js +151 -0
  240. package/packages/connectors/cloudflare/src/families/scanner.js +123 -0
  241. package/packages/connectors/cloudflare/src/families/snippets.js +207 -0
  242. package/packages/connectors/cloudflare/src/families/tag-gateway.js +46 -0
  243. package/packages/connectors/cloudflare/src/families/tags.js +124 -0
  244. package/packages/connectors/cloudflare/src/families/token-validation.js +95 -0
  245. package/packages/connectors/cloudflare/src/families/workflows.js +156 -0
  246. package/packages/connectors/cloudflare/src/index.js +102 -265
  247. package/packages/connectors/cloudflare/src/oauth-persist.js +336 -0
  248. package/packages/connectors/cloudflare/src/owner.js +42 -12
  249. package/packages/connectors/cloudflare/src/permission-options.js +1064 -0
  250. package/packages/connectors/cloudflare/src/routes.js +318 -144
  251. package/packages/connectors/cloudflare/src/scope-catalog.js +345 -0
  252. package/packages/connectors/cloudflare/src/vault.js +2 -2
  253. package/packages/connectors/cloudflare/tests/capabilities.test.mjs +276 -0
  254. package/packages/connectors/cloudflare/tests/connector.test.mjs +51 -30
  255. package/packages/connectors/cloudflare/tests/oauth-persist.test.mjs +125 -0
  256. package/packages/identity/.agentsam/features/oauth-login-portal/agentsam.feature.json +1 -1
  257. package/packages/identity/.agentsam/features/oauth-login-portal/providers.json +22 -2
  258. package/packages/identity/.agentsam/features/oauth-login-portal/resources.json +10 -4
  259. package/packages/identity/.agentsam/features/oauth-login-portal/routes.json +31 -2
  260. package/packages/identity/README.md +1 -1
  261. package/packages/identity/backend/README.md +1 -1
  262. package/packages/identity/docs/PORTABLE_IDENTITY_ARCHITECTURE.md +50 -0
  263. package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +32 -0
  264. package/packages/identity/migrations/sqlite/001_identity_core.sql +99 -0
  265. package/packages/identity/migrations/sqlite/002_identity_oauth_client.sql +38 -0
  266. package/packages/identity/migrations/sqlite/003_identity_oauth_server.sql +64 -0
  267. package/packages/identity/migrations/sqlite/004_identity_oauth_consent_catalog.sql +48 -0
  268. package/packages/identity/package.json +3 -2
  269. package/packages/identity/scripts/local-identity-bridge.mjs +184 -0
  270. package/packages/identity/scripts/preview-auth-portal.mjs +7 -7
  271. package/packages/identity/src/adapters/cloudflare-d1/index.js +153 -24
  272. package/packages/identity/src/adapters/sqlite/index.js +322 -0
  273. package/packages/identity/src/app/verify-app.js +95 -0
  274. package/packages/identity/src/contracts/auth-config.js +28 -8
  275. package/packages/identity/src/contracts/external-identity.js +1 -1
  276. package/packages/identity/src/contracts/identity-store.js +115 -0
  277. package/packages/identity/src/contracts/provider.js +1 -0
  278. package/packages/identity/src/contracts/route-ids.js +30 -0
  279. package/packages/identity/src/contracts/route-projection.js +218 -0
  280. package/packages/identity/src/contracts/routes.js +11 -0
  281. package/packages/identity/src/core/browser-paths.js +4 -5
  282. package/packages/identity/src/core/constants.js +13 -8
  283. package/packages/identity/src/core/session-policy.js +32 -0
  284. package/packages/identity/src/frontend/auth-portal/README.md +2 -1
  285. package/packages/identity/src/frontend/auth-portal/pages/login.html +16 -15
  286. package/packages/identity/src/frontend/auth-portal/pages/reset.html +9 -8
  287. package/packages/identity/src/frontend/auth-portal/pages/signup.html +9 -8
  288. package/packages/identity/src/frontend/auth-portal/preview/dashboard-stub.html +1 -1
  289. package/packages/identity/src/frontend/auth-portal/shared/company-branding.js +1 -1
  290. package/packages/identity/src/frontend/auth-portal/shared/desktop-identity-bridge.js +207 -0
  291. package/packages/identity/src/index.js +41 -0
  292. package/packages/identity/src/migrations/0001_identity_core.sql +19 -2
  293. package/packages/identity/src/migrations/0003_accounts_ssot.sql +20 -0
  294. package/packages/identity/src/migrations/README.md +5 -2
  295. package/packages/identity/src/oauth/README.md +19 -8
  296. package/packages/identity/src/oauth/consent-view.js +388 -0
  297. package/packages/identity/src/oauth/credentials.js +46 -19
  298. package/packages/identity/src/oauth/finalize-inbound.js +1 -1
  299. package/packages/identity/src/oauth/google-desktop-exchange.js +173 -0
  300. package/packages/identity/src/oauth/iam-platform.js +8 -7
  301. package/packages/identity/src/oauth/redirect-paths.js +27 -36
  302. package/packages/identity/src/providers/cloudflare/oauth.js +3 -4
  303. package/packages/identity/src/providers/cloudflare/profile.js +49 -14
  304. package/packages/identity/src/providers/iam/index.js +27 -5
  305. package/packages/identity/src/server/identity-service.js +61 -15
  306. package/packages/identity/src/server/mount-policy.js +30 -0
  307. package/packages/identity/src/server/post-auth.js +79 -0
  308. package/packages/identity/src/server/worker-router.js +208 -146
  309. package/packages/identity/tests/auth-config.test.mjs +3 -2
  310. package/packages/identity/tests/finalize-inbound-oauth.test.mjs +6 -6
  311. package/packages/identity/tests/iam-provider.test.mjs +1 -1
  312. package/packages/identity/tests/identity-init-scaffold.test.mjs +3 -0
  313. package/packages/identity/tests/identity-service.test.mjs +52 -5
  314. package/packages/identity/tests/native-session-worker.test.mjs +64 -0
  315. package/packages/identity/tests/oauth-consent-view.test.mjs +106 -0
  316. package/packages/identity/tests/oauth-credentials.test.mjs +20 -5
  317. package/packages/identity/tests/oauth-presets-accounts-ssot.test.mjs +58 -0
  318. package/packages/identity/tests/portable-identity-architecture.test.mjs +157 -0
  319. package/packages/identity/tests/preview-auth-portal.test.mjs +3 -3
  320. package/packages/identity/tests/session-routes-policy.test.mjs +21 -0
  321. package/packages/runtime-protocol/src/index.js +154 -0
  322. package/packages/theme-church-site/package.json +2 -1
  323. package/packages/theme-church-site/src/index.js +1 -0
  324. package/packages/theme-companions-site/package.json +2 -1
  325. package/packages/theme-companions-site/src/index.js +1 -0
  326. package/packages/theme-floors-site/package.json +2 -1
  327. package/packages/theme-floors-site/src/index.js +1 -0
  328. package/packages/theme-fuelnfree-site/package.json +2 -1
  329. package/packages/theme-fuelnfree-site/src/index.js +1 -0
  330. package/packages/theme-handyman-site/package.json +2 -1
  331. package/packages/theme-handyman-site/src/index.js +1 -0
  332. package/packages/theme-insurance-site/package.json +2 -1
  333. package/packages/theme-insurance-site/src/index.js +1 -0
  334. package/packages/theme-scenes/README.md +164 -0
  335. package/packages/theme-scenes/package.json +53 -0
  336. package/packages/theme-scenes/src/blocks/index.js +30 -0
  337. package/packages/theme-scenes/src/contracts/index.js +286 -0
  338. package/packages/theme-scenes/src/demos/index.js +65 -0
  339. package/packages/theme-scenes/src/index.js +75 -0
  340. package/packages/theme-scenes/src/presets/index.js +263 -0
  341. package/packages/theme-scenes/src/runtime/compile.js +119 -0
  342. package/packages/theme-scenes/src/scenes/index.js +146 -0
  343. package/packages/theme-scenes/src/shell/index.js +47 -0
  344. package/packages/theme-scenes/src/themes/index.js +129 -0
  345. package/packages/theme-scenes/src/visuals/index.js +41 -0
  346. package/packages/theme-scenes/test/theme-scenes.test.mjs +179 -0
  347. package/packages/theme-shinshu-site/package.json +2 -1
  348. package/packages/theme-shinshu-site/src/index.js +1 -0
  349. package/packages/work-graph/src/index.js +34 -1
  350. package/packages/work-graph/src/renderers/gantt-model.js +24 -0
  351. package/packages/work-graph/test/work-graph.test.mjs +27 -7
  352. package/protocol/README.md +15 -7
  353. package/protocol/apps/agentsam.app.v1.schema.json +133 -0
  354. package/protocol/apps/agentsam.host-install.v1.schema.json +36 -0
  355. package/protocol/assets/README.md +9 -0
  356. package/protocol/assets/asset-record.v1.schema.json +64 -0
  357. package/protocol/brand/brandpack.v1.schema.json +43 -0
  358. package/protocol/credentials/issue.v1.schema.json +38 -0
  359. package/protocol/database/connection.v1.schema.json +41 -0
  360. package/protocol/embeddings/embedding-profile.v1.schema.json +20 -0
  361. package/protocol/errors/error-envelope.schema.json +135 -1
  362. package/protocol/errors/recovery.v1.schema.json +50 -0
  363. package/protocol/runtime/agentsam.runtime.v1.schema.json +75 -0
  364. package/protocol/runtime/workspace-fs.v1.schema.json +71 -0
  365. package/protocol/sam/activity.v1.schema.json +48 -0
  366. package/protocol/sam/answer.v1.schema.json +35 -0
  367. package/protocol/sam/calibration.v1.schema.json +21 -0
  368. package/protocol/sam/decision-receipt.v1.schema.json +29 -0
  369. package/protocol/sam/evaluation.v1.schema.json +19 -0
  370. package/protocol/sam/operation.schema.json +66 -0
  371. package/protocol/sam/outcome.v1.schema.json +36 -0
  372. package/protocol/sam/question.v1.schema.json +26 -0
  373. package/protocol/sam/registry.seed.json +153 -0
  374. package/protocol/sam/result.schema.json +53 -0
  375. package/protocol/sam/state.v1.schema.json +23 -0
  376. package/protocol/scoring/README.md +10 -0
  377. package/protocol/scoring/scorecard.v1.schema.json +65 -0
  378. package/protocol/skills/agentsam.interaction.v1.schema.json +50 -0
  379. package/protocol/skills/agentsam.skill.v1.schema.json +57 -0
  380. package/protocol/ui/icon-registry.mjs +227 -0
  381. package/protocol/ui/icon.v1.schema.json +51 -0
  382. package/registry/cms-rust-machine-20260928/installable-products.json +31 -0
  383. package/registry/cms-rust-machine-20260928/manifest.json +22 -0
  384. package/registry/cms-rust-machine-20260928/migration.sql +237 -0
  385. package/registry/cms-rust-machine-20260928/receipt.json +21 -0
  386. package/registry/cms-rust-machine-20260928/receipt.sql +27 -0
  387. package/scripts/build_rapid_rust_cli.py +83 -0
  388. package/skills/README.md +22 -9
  389. package/skills/agentsam-codebaseindex/SKILL.md +225 -0
  390. package/skills/catalog.json +14 -0
  391. package/src/attachments/index.js +6 -0
  392. package/src/attachments/intake.js +235 -0
  393. package/src/capabilities/repository-snapshot.js +19 -2
  394. package/src/cli/command-catalog.js +138 -0
  395. package/src/cli/dispatch.js +48 -0
  396. package/src/cli.js +225 -27
  397. package/src/commands/account-auth.js +94 -8
  398. package/src/commands/api-key.js +244 -0
  399. package/src/commands/app.js +365 -29
  400. package/src/commands/billing.js +127 -0
  401. package/src/commands/brand.js +86 -74
  402. package/src/commands/cheat-sheet.js +154 -0
  403. package/src/commands/cloudflare-login.js +222 -0
  404. package/src/commands/cloudflare.js +453 -23
  405. package/src/commands/codebaseindex.js +693 -0
  406. package/src/commands/compute.js +4 -0
  407. package/src/commands/connections.js +11 -5
  408. package/src/commands/credentials.js +116 -0
  409. package/src/commands/env.js +152 -25
  410. package/src/commands/gcloud-auth.js +427 -0
  411. package/src/commands/go.js +366 -53
  412. package/src/commands/google-cloud.js +375 -0
  413. package/src/commands/identity-init.js +2 -2
  414. package/src/commands/interaction-clack.js +115 -0
  415. package/src/commands/mcp.js +226 -33
  416. package/src/commands/models.js +1 -1
  417. package/src/commands/ollama.js +3 -2
  418. package/src/commands/plugins.js +7 -2
  419. package/src/commands/product.js +36 -0
  420. package/src/commands/providers.js +62 -14
  421. package/src/commands/runtime-status.js +28 -9
  422. package/src/commands/runtime.js +313 -0
  423. package/src/commands/rust.js +24 -0
  424. package/src/commands/setup.js +279 -0
  425. package/src/commands/shell.js +59 -5
  426. package/src/commands/skill.js +248 -0
  427. package/src/commands/skills.js +1 -1
  428. package/src/commands/start-local.js +6 -2
  429. package/src/commands/terminal.js +171 -0
  430. package/src/commands/update.js +140 -0
  431. package/src/commands/whoami.js +392 -56
  432. package/src/features/resolve.js +1 -0
  433. package/src/go/build.js +229 -39
  434. package/src/go/cloudflare.js +506 -105
  435. package/src/go/container.js +120 -0
  436. package/src/go/contract.js +9 -4
  437. package/src/go/discover.js +149 -33
  438. package/src/go/index.js +15 -3
  439. package/src/go/native-probe-runner.mjs +119 -0
  440. package/src/go/{registry.js → official-registry.js} +64 -7
  441. package/src/go/official-release.js +10 -0
  442. package/src/go/receipts.js +77 -10
  443. package/src/go/verify.js +9 -2
  444. package/src/index.js +31 -0
  445. package/src/indexing/ingest/discover-models.js +298 -0
  446. package/src/indexing/ingest/inventory.js +478 -0
  447. package/src/indexing/ingest/job-graph.js +181 -0
  448. package/src/indexing/ingest/materials.js +204 -0
  449. package/src/indexing/ingest/style-evidence.js +181 -0
  450. package/src/knowledge/source.js +3 -3
  451. package/src/lib/account-session.js +11 -4
  452. package/src/lib/app-authority.js +172 -0
  453. package/src/lib/auth.js +94 -21
  454. package/src/lib/core-client.js +5 -6
  455. package/src/lib/credentials-audit.js +451 -0
  456. package/src/lib/deploy/health.js +24 -6
  457. package/src/lib/detect-context.js +7 -1
  458. package/src/lib/google-cloud-connection.js +270 -0
  459. package/src/lib/google-cloud-inventory.js +385 -0
  460. package/src/lib/google-desktop-oauth.js +372 -0
  461. package/src/lib/google-studio-brokered-oauth.js +158 -0
  462. package/src/lib/identity-scaffold.js +24 -6
  463. package/src/lib/init-options.js +192 -0
  464. package/src/lib/local-scaffold.js +48 -16
  465. package/src/lib/provider-command-remediation.js +308 -0
  466. package/src/lib/provider-credentials.js +71 -21
  467. package/src/lib/scaffold/index.js +8 -2
  468. package/src/lib/scaffold/mcp-server.js +43 -0
  469. package/src/lib/scaffold/templates/mcp-server/index.js +397 -0
  470. package/src/lib/scaffold/templates/mcp-server/presets.js +39 -0
  471. package/src/lib/scaffold/wizards/cms.js +93 -0
  472. package/src/lib/scaffold/wizards/mcp-server.js +61 -0
  473. package/src/lib/setup/contract.js +26 -0
  474. package/src/lib/setup/discover.js +116 -0
  475. package/src/lib/setup/execute.js +205 -0
  476. package/src/lib/setup/planner.js +134 -0
  477. package/src/lib/setup/recipes.js +235 -0
  478. package/src/lib/setup/runtime-persist.js +197 -0
  479. package/src/lib/setup/runtime.js +394 -0
  480. package/src/lib/slash-commands.js +3 -0
  481. package/src/lib/terminal/machine-identity.js +95 -0
  482. package/src/lib/terminal-local.js +164 -0
  483. package/src/lib/terminal-scopes.js +52 -0
  484. package/src/lib/whoami-capabilities.js +184 -0
  485. package/src/local-fs/capability.js +121 -0
  486. package/src/local-fs/freshness.js +75 -0
  487. package/src/local-fs/index.js +385 -0
  488. package/src/local-fs/paths.js +100 -0
  489. package/src/local-pty/server.js +326 -21
  490. package/src/mcp/authority.js +58 -108
  491. package/src/mcp/client-adapters.js +68 -144
  492. package/src/mcp/client.js +142 -122
  493. package/src/mcp/cloudflare-bundles.js +225 -0
  494. package/src/mcp/index.js +12 -0
  495. package/src/models/ai-access-onboarding.js +112 -0
  496. package/src/models/discovery.js +10 -2
  497. package/src/models/inventory-core.js +9 -1
  498. package/src/plugins/cloudflare.js +1 -1
  499. package/src/providers/ollama-chat.js +2 -1
  500. package/src/sam/activity/index.js +183 -0
  501. package/src/sam/client.js +252 -0
  502. package/src/sam/decision/calibration.js +109 -0
  503. package/src/sam/decision/confidence.js +126 -0
  504. package/src/sam/decision/evaluate.js +157 -0
  505. package/src/sam/decision/evaluators/deterministic.js +341 -0
  506. package/src/sam/decision/evaluators/heuristic.js +61 -0
  507. package/src/sam/decision/evaluators/select.js +50 -0
  508. package/src/sam/decision/evaluators/semantic.js +149 -0
  509. package/src/sam/decision/hierarchical.js +61 -0
  510. package/src/sam/decision/index.js +53 -0
  511. package/src/sam/decision/policy.js +86 -0
  512. package/src/sam/decision/questions.js +120 -0
  513. package/src/sam/decision/receipt.js +148 -0
  514. package/src/sam/decision/state.js +117 -0
  515. package/src/sam/decision/types.js +22 -0
  516. package/src/sam/decision/validate.js +200 -0
  517. package/src/sam/define.js +51 -0
  518. package/src/sam/index.js +65 -0
  519. package/src/sam/operations/brand-scan.js +62 -0
  520. package/src/sam/operations/cad-blender-inspect.js +36 -0
  521. package/src/sam/operations/codebaseindex-ingest.js +49 -0
  522. package/src/sam/operations/decision-evaluate.js +59 -0
  523. package/src/sam/operations/planning-astar.js +77 -0
  524. package/src/sam/operations/planning-goap.js +60 -0
  525. package/src/sam/operations/repository-inspect.js +72 -0
  526. package/src/sam/operations/security-scan.js +33 -0
  527. package/src/sam/operations/terminal-exec.js +29 -0
  528. package/src/sam/planning/astar.js +311 -0
  529. package/src/sam/planning/goap.js +177 -0
  530. package/src/sam/planning/index.js +21 -0
  531. package/src/sam/planning/state.js +84 -0
  532. package/src/sam/registry.js +48 -0
  533. package/src/sam/result.js +77 -0
  534. package/src/sam/seed.js +44 -0
  535. package/src/sam/types.js +116 -0
  536. package/src/security/inventory.js +12 -2
  537. package/src/security/local-vault.js +2 -0
  538. package/src/security/scan.js +1 -1
  539. package/src/skills/catalog.js +64 -0
  540. package/src/skills/content-resolver.js +124 -0
  541. package/src/skills/hosted-store.js +37 -0
  542. package/src/skills/index.js +29 -64
  543. package/src/skills/interaction.js +102 -0
  544. package/src/skills/local-store.js +228 -0
  545. package/src/skills/manifest.js +104 -0
  546. package/src/skills/metrics.js +31 -0
  547. package/src/skills/registry.js +184 -0
  548. package/src/skills/runtime.js +287 -0
  549. package/src/skills/slash.js +44 -0
  550. package/src/ui/cli/help.js +94 -101
  551. package/test/account-session.test.mjs +3 -3
  552. package/test/app-authority-context.test.mjs +32 -0
  553. package/test/cli/api-key-env-whoami.test.mjs +129 -0
  554. package/test/cli/codebaseindex-plan-ux.test.mjs +37 -0
  555. package/test/cli/go.test.mjs +62 -5
  556. package/test/cli/mcp-client.test.mjs +21 -10
  557. package/test/cli/runtime-persist.test.mjs +56 -0
  558. package/test/cli/rust-command.test.mjs +21 -0
  559. package/test/cli/skill-npm-and-env.test.mjs +52 -0
  560. package/test/cli/wireframes-go-registry.test.mjs +87 -2
  561. package/test/credentials-audit.test.mjs +113 -0
  562. package/test/deploy-health-scan.test.mjs +29 -1
  563. package/test/gcloud-auth.test.mjs +111 -0
  564. package/test/go/build-source-identity.test.mjs +31 -0
  565. package/test/go/cloudflare-probe.test.mjs +274 -10
  566. package/test/go/distribution.test.mjs +28 -0
  567. package/test/google-cloud-connection.test.mjs +83 -0
  568. package/test/google-cloud-inventory.test.mjs +64 -0
  569. package/test/init-options.test.mjs +35 -0
  570. package/test/integration/ai-access-onboarding.test.mjs +47 -0
  571. package/test/integration/app-command.test.mjs +30 -0
  572. package/test/integration/cad-project.test.mjs +4 -1
  573. package/test/integration/cli-help.test.mjs +1 -1
  574. package/test/integration/cms-app-scaffold.test.mjs +71 -0
  575. package/test/integration/cms-site-tenancy-contract.test.mjs +9 -8
  576. package/test/integration/codebaseindex-ingest.test.mjs +214 -0
  577. package/test/integration/features-resolve.test.mjs +30 -11
  578. package/test/integration/icon-registry.test.mjs +67 -0
  579. package/test/integration/ingest-discover-models.test.mjs +30 -0
  580. package/test/integration/inspect-path-cli.test.mjs +46 -0
  581. package/test/integration/install-script.test.mjs +12 -9
  582. package/test/integration/inventory-evidence.test.mjs +125 -0
  583. package/test/integration/local-fs.test.mjs +113 -0
  584. package/test/integration/provider-env-cli.test.mjs +2 -1
  585. package/test/integration/runtime-status.integration.test.mjs +2 -1
  586. package/test/integration/sam-activity-recovery.test.mjs +147 -0
  587. package/test/integration/sam-decision.test.mjs +584 -0
  588. package/test/integration/sam-kernel.test.mjs +99 -0
  589. package/test/integration/sam-planning-astar.test.mjs +279 -0
  590. package/test/integration/skill-runtime.test.mjs +240 -0
  591. package/test/integration/studio-fs-pty-e2e.test.mjs +294 -0
  592. package/test/knowledge.test.mjs +35 -1
  593. package/test/loopback-oauth.test.mjs +53 -0
  594. package/test/models.test.mjs +14 -7
  595. package/test/ollama.test.mjs +22 -0
  596. package/test/security.test.mjs +23 -0
  597. package/test/setup-planner.test.mjs +74 -0
  598. package/test/setup-runtime.test.mjs +51 -0
  599. package/test/shell.test.mjs +4 -4
  600. package/test/terminal/local-pty.mock.test.mjs +3 -1
  601. package/test/terminal-machine-identity.test.mjs +88 -0
  602. package/test/whoami-resume.test.mjs +27 -6
  603. package/packages/agentsam-brand/test/brand-scan.test.mjs +0 -106
  604. package/packages/work-graph/prototype/README.md +0 -32
  605. package/packages/work-graph/prototype/data/demo-workgraph.js +0 -47
  606. package/packages/work-graph/prototype/renderers/timeline-model.js +0 -21
  607. package/packages/work-graph/prototype/renderers/workgraph-runtime.js +0 -38
  608. package/packages/work-graph/prototype-gnantt.html +0 -655
@@ -0,0 +1,202 @@
1
+ # Codebaseindex Guided Path — Template Lanes + Inventory-First UX
2
+
3
+ **Status:** PLAN · LOCKED intent (2026-09-25)
4
+ **Product:** AgentSam · pipeline `sam.codebaseindex.index.run` · operation `codebaseindex.ingest`
5
+ **Audience:** SDK CLI/TUI, Local Studio, future customer “bring your own vector lane” templates
6
+
7
+ ---
8
+
9
+ ## 1. Host SSOT today — Supabase tables (Gemini @ 1536)
10
+
11
+ Owner IAM path: **Gemini Embedding 2 → 1536-d → Supabase pgvector**, written via **node-api** edge (`POST /codebase/ingest`, vector RPCs). D1 owns control/structure; Postgres owns vectors.
12
+
13
+ ### Live code-intelligence projections (`agentsam` schema)
14
+
15
+ | Table | Role |
16
+ |-------|------|
17
+ | `agentsam.agentsam_codebase_chunks_gemini_embedding_2_1536` | Chunk-level retrieval vectors (primary ANN for code Q&A) |
18
+ | `agentsam.agentsam_codebase_files_gemini_embedding_2_1536` | File-level vectors |
19
+ | `agentsam.agentsam_codebase_ast_symbols_gemini_embedding_2_1536` | Symbol ANN |
20
+
21
+ ### Related semantic / twin tables (same embed family, different corpora)
22
+
23
+ | Table | Role |
24
+ |-------|------|
25
+ | `agentsam.agentsam_gemini_semantic_embeddings_1536` | Unified semantic authority (memory + code symbol projections by `corpus_type` / `record_kind`) |
26
+ | `agentsam.agentsam_documents_gemini_embedding_2_1536` | Document ingest twin (node-api `/vectors/ingest`) |
27
+
28
+ ### Retired (do not write for new runs)
29
+
30
+ | Table | Note |
31
+ |-------|------|
32
+ | `agentsam.agentsam_codebase_*_oai3large_1536` | Legacy OpenAI code lanes |
33
+
34
+ ### Control plane (D1 — not Supabase, but paired)
35
+
36
+ | Table | Role |
37
+ |-------|------|
38
+ | `code_repositories` | Account-owned repo identity |
39
+ | `agentsam_code_index_job` / `agentsam_code_index_job_file` | Run progress (`cidxrun_*`) |
40
+ | `codebase_ast_nodes` / `codebase_dep_edges` | Structural units + deps |
41
+ | `agentsam_pgvector_lane_registry` | Purpose → live PG table + model + dims |
42
+ | `agentsam_fs_merkle_snapshots` | Merkle evidence receipts |
43
+ | `agentsam_codebase_index_health` | Staleness / weekly health |
44
+
45
+ **I/O path (owner):** Worker / SDK → **node-api** (Deno edge) → Hyperdrive / session pooler → Supabase PG.
46
+
47
+ ---
48
+
49
+ ## 2. End goal — templateable vector lanes
50
+
51
+ Owner setup is already live. Customers should get the **same harness**, parameterized:
52
+
53
+ ```text
54
+ codebaseindex.ingest (guided)
55
+ │
56
+ ┌───────────────┼───────────────┐
57
+ ▼ ▼ ▼
58
+ local_exact supabase_pgvector cloudflare_vectorize
59
+ (SQLite) (+ node-api edge) (CF binding)
60
+ │ │ │
61
+ Ollama/paid Gemini@1536 project Vectorize
62
+ on this machine BYO Supabase BYO index/model
63
+ ```
64
+
65
+ | Lane | Who runs compute | Where vectors live | When to offer |
66
+ |------|------------------|--------------------|---------------|
67
+ | **Local** | User machine | `.agentsam/knowledge/index.sqlite` | Default; Ollama free embed OK |
68
+ | **Supabase + node-api** | Their edge (template of IAM node-api) | Their `agentsam.*` PG tables | They opt into hosted ANN |
69
+ | **CF Vectorize** | Worker/plugin binding | Their Vectorize index | They already live on CF |
70
+
71
+ **Template rule:** ship **contracts + migrations + edge stubs**, not a shared multi-tenant dump of IAM tables into customer projects. Owner IAM remains the reference implementation.
72
+
73
+ Same-model law still holds per generation: vectors written with profile `P` are only queried with profile `P` (fingerprint of provider/model/dims/params).
74
+
75
+ ---
76
+
77
+ ## 3. Guided path (inventory first — LOCK this UX)
78
+
79
+ One option at a time. Plan/dry-run is **not** “skip inventory.”
80
+
81
+ ```text
82
+ ① Provider / connection
83
+ ↓
84
+ ② Scan → file map inventory (Merkle + facet view)
85
+ ↓
86
+ ③ Include / exclude against the map
87
+ ▼
88
+ ④ Embedding model + dimensions (discovered, not hardcoded)
89
+ ↓
90
+ ⑤ Vector lane / data source
91
+ · local SQLite
92
+ · Supabase + node-api (Hyperdrive)
93
+ · Cloudflare Vectorize
94
+ ↓
95
+ ⑥ Dry-run / plan receipt (work-graph stages)
96
+ ↓
97
+ ⑦ Confirm → run (progress on Gantt + CLI)
98
+ ```
99
+
100
+ ### CLI / TUI (lightweight)
101
+
102
+ | Step | Interaction |
103
+ |------|-------------|
104
+ | ① | `select` configured providers + optional `agentsam providers` deep-link; Ollama online badge from `ollama list` |
105
+ | ② | Run `repository.inspect` / Merkle; print compact tree + counts; `--json` for Studio |
106
+ | ③ | `text` include / exclude; optional local chat assist; never invent denylist |
107
+ | ④ | `select` from **discovered** embed models only |
108
+ | ⑤ | `select` lane; if Supabase → collect URL/env names + offer node-api scaffold; if Vectorize → binding/index |
109
+ | ⑥ | `plan` emits work-graph JSON + pretty plan card |
110
+ | ⑦ | `confirm` then run; stream stage events |
111
+
112
+ Terminal aesthetic: short notes, one clack prompt per step, `tip: use skill agentsam-codebaseindex`, no wall of presets.
113
+
114
+ ### Studio / localhost Gantt
115
+
116
+ Work-graph is the **source of truth** for the job; Gantt/timeline are projections.
117
+
118
+ Example stages (bars):
119
+
120
+ 1. `connect` — providers resolved
121
+ 2. `inventory` — file map / merkle
122
+ 3. `scope` — include/exclude locked
123
+ 4. `embed_profile` — model + dims
124
+ 5. `lane` — local | supabase | vectorize
125
+ 6. `plan` — dry-run receipt
126
+ 7. `index` — parse / chunk / embed
127
+ 8. `activate` — verify + ready
128
+
129
+ Local Studio (or this preview) polls `agentsam_code_index_job` / local generation receipts and feeds `createGanttModel(graph)`.
130
+
131
+ ---
132
+
133
+ ## 4. Supabase + node-api customer path (what “template” means)
134
+
135
+ When the user picks **Supabase / Hyperdrive**:
136
+
137
+ 1. Scaffold edge from IAM `supabase/functions/node-api` **pattern** (ingest + account-scoped vector query RPCs).
138
+ 2. Apply PG migrations that create **their** `agentsam.agentsam_codebase_*` (or lane-registry–driven table names).
139
+ 3. Wire `AGENTSAM_DATABASE_URL` / Hyperdrive binding names into knowledge `lane.backend = supabase_pgvector`.
140
+ 4. Register row in **their** `agentsam_pgvector_lane_registry` (or SDK lane config) pointing at table + model + dims.
141
+ 5. Runs still use `codebaseindex.ingest` / `sam.codebaseindex.index.run` — only the **provider adapter** changes.
142
+
143
+ Owner machine: skip scaffold; credentials and node-api already exist → wizard jumps to inventory.
144
+
145
+ ---
146
+
147
+ ## 5. CF Vectorize path (valid peer, not code-index SSOT for IAM)
148
+
149
+ IAM host law keeps **code index vectors off Vectorize**. Customer template may still choose Vectorize for **their** product:
150
+
151
+ - Plugin scope: binding + index + model + dims
152
+ - Knowledge `lane.backend = cloudflare_vectorize`
153
+ - Same guided steps ①–⑦; stage `lane` records Vectorize target in the receipt
154
+
155
+ Do not silently redirect owner IAM full-index onto Vectorize.
156
+
157
+ ---
158
+
159
+ ## 6. Local Ollama value (strategic I/O)
160
+
161
+ | Use | How |
162
+ |-----|-----|
163
+ | Free semantic search | `agentsam search --semantic` against local generation |
164
+ | Pre-filter before paid chat | Retrieve top-k chunks → pass only those to hosted model |
165
+ | Offline agent turns | Shell/agent retrieve while Ollama is up |
166
+ | Scope assist | Chat model (e.g. `qwen2.5-coder`) suggests include/exclude only |
167
+
168
+ Query must use **same** embed profile as write (e.g. `mxbai-embed-large:latest` @ 1024).
169
+
170
+ ---
171
+
172
+ ## 7. Implementation slices (ordered)
173
+
174
+ | Slice | Deliverable |
175
+ |-------|-------------|
176
+ | **A** | Reframe CLI wizard to ①→⑦ (inventory before scope); `plan` prints work-graph stages |
177
+ | **B** | Emit `codebaseindex.job.graph.v1` JSON consumed by work-graph Gantt |
178
+ | **C** | Local Studio / preview page binding graph → Gantt (this doc’s companion HTML) |
179
+ | **D** | Lane picker adapters: local (done-ish), supabase+node-api scaffold stub, vectorize scope probe |
180
+ | **E** | Customer template pack: migrations + edge stub + README (no IAM secrets) |
181
+
182
+ ---
183
+
184
+ ## 8. Acceptance checks
185
+
186
+ - [ ] Wizard never jumps to embed/lane before an inventory receipt exists (or user explicitly skips with `--skip-inventory`).
187
+ - [ ] Exclude is user-authored (blank = none).
188
+ - [ ] Embed options come only from credentials + live Ollama tags.
189
+ - [ ] Plan/dry-run produces work-graph JSON + human card.
190
+ - [ ] Gantt shows the same stage ids as CLI.
191
+ - [ ] Choosing Supabase does not mutate owner IAM tables when running as a customer template.
192
+ - [ ] Semantic retrieve fails closed on embedding-profile mismatch.
193
+
194
+ ---
195
+
196
+ ## Related
197
+
198
+ - Host SSOT: `inneranimalmedia/docs/platform/codebase-index-ssot-2026-07.md`
199
+ - SAM kernel: `docs/architecture/SAM_KERNEL.md`
200
+ - Skill: `skills/agentsam-codebaseindex/SKILL.md`
201
+ - Work-graph: `packages/work-graph` (`createGanttModel`)
202
+ - Preview: `docs/architecture/previews/codebaseindex-guided-path/`
@@ -0,0 +1,321 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Codebaseindex Guided Path — Preview</title>
7
+ <style>
8
+ :root {
9
+ color-scheme: light;
10
+ --bg: #f4f1ea;
11
+ --ink: #1a1c1e;
12
+ --muted: #5c6370;
13
+ --panel: #fffcf7;
14
+ --line: #d8d0c4;
15
+ --accent: #2f6f4e;
16
+ --accent-2: #b45309;
17
+ --bar: #3d7a5a;
18
+ --bar-done: #2f6f4e;
19
+ --bar-run: #c27803;
20
+ --bar-wait: #9aa3af;
21
+ --mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
22
+ --sans: "Source Sans 3", "Segoe UI", system-ui, sans-serif;
23
+ --display: "Fraunces", Georgia, serif;
24
+ }
25
+ * { box-sizing: border-box; }
26
+ body {
27
+ margin: 0;
28
+ font: 16px/1.5 var(--sans);
29
+ color: var(--ink);
30
+ background:
31
+ radial-gradient(1200px 600px at 10% -10%, #e8efe8 0%, transparent 55%),
32
+ radial-gradient(900px 500px at 100% 0%, #f3e6d4 0%, transparent 50%),
33
+ var(--bg);
34
+ }
35
+ main { max-width: 1080px; margin: 0 auto; padding: 40px 24px 80px; }
36
+ h1 {
37
+ font-family: var(--display);
38
+ font-weight: 550;
39
+ font-size: clamp(1.8rem, 3vw, 2.4rem);
40
+ margin: 0 0 8px;
41
+ letter-spacing: -0.02em;
42
+ }
43
+ .sub { color: var(--muted); margin: 0 0 28px; max-width: 62ch; }
44
+ .pill {
45
+ display: inline-block;
46
+ font: 12px/1 var(--mono);
47
+ padding: 5px 9px;
48
+ border: 1px solid var(--line);
49
+ border-radius: 999px;
50
+ margin-right: 6px;
51
+ background: var(--panel);
52
+ }
53
+ section {
54
+ background: var(--panel);
55
+ border: 1px solid var(--line);
56
+ border-radius: 4px;
57
+ padding: 20px 22px;
58
+ margin: 0 0 18px;
59
+ }
60
+ section h2 {
61
+ margin: 0 0 12px;
62
+ font-size: 0.95rem;
63
+ text-transform: uppercase;
64
+ letter-spacing: 0.06em;
65
+ color: var(--muted);
66
+ font-weight: 650;
67
+ }
68
+ ol.steps {
69
+ list-style: none;
70
+ margin: 0;
71
+ padding: 0;
72
+ display: grid;
73
+ gap: 8px;
74
+ }
75
+ ol.steps li {
76
+ display: grid;
77
+ grid-template-columns: 36px 1fr;
78
+ gap: 12px;
79
+ align-items: start;
80
+ padding: 10px 12px;
81
+ border: 1px solid transparent;
82
+ border-radius: 4px;
83
+ }
84
+ ol.steps li.active {
85
+ border-color: var(--accent);
86
+ background: #eef6f1;
87
+ }
88
+ ol.steps .n {
89
+ font: 700 14px/36px var(--mono);
90
+ width: 36px; height: 36px;
91
+ text-align: center;
92
+ border-radius: 50%;
93
+ background: #e7ece7;
94
+ color: var(--accent);
95
+ }
96
+ ol.steps li.active .n { background: var(--accent); color: #fff; }
97
+ ol.steps strong { display: block; }
98
+ ol.steps span { color: var(--muted); font-size: 0.92rem; }
99
+ table { width: 100%; border-collapse: collapse; font-size: 0.92rem; }
100
+ th, td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
101
+ th { color: var(--muted); font-weight: 600; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.04em; }
102
+ code { font-family: var(--mono); font-size: 0.84em; }
103
+ .lanes {
104
+ display: grid;
105
+ grid-template-columns: repeat(3, 1fr);
106
+ gap: 12px;
107
+ }
108
+ @media (max-width: 800px) { .lanes { grid-template-columns: 1fr; } }
109
+ .lane {
110
+ border: 1px solid var(--line);
111
+ border-radius: 4px;
112
+ padding: 14px;
113
+ min-height: 140px;
114
+ }
115
+ .lane h3 { margin: 0 0 6px; font-size: 1rem; }
116
+ .lane p { margin: 0; color: var(--muted); font-size: 0.9rem; }
117
+ .lane.pick { outline: 2px solid var(--accent); background: #f3faf6; }
118
+ .gantt { display: grid; gap: 8px; margin-top: 8px; }
119
+ .gantt-row {
120
+ display: grid;
121
+ grid-template-columns: 140px 1fr 72px;
122
+ gap: 10px;
123
+ align-items: center;
124
+ }
125
+ .gantt-row .label { font: 12px/1.2 var(--mono); }
126
+ .track {
127
+ height: 18px;
128
+ background: #ece7df;
129
+ border-radius: 3px;
130
+ position: relative;
131
+ overflow: hidden;
132
+ }
133
+ .bar {
134
+ position: absolute;
135
+ top: 0; bottom: 0;
136
+ border-radius: 3px;
137
+ background: var(--bar-wait);
138
+ }
139
+ .bar.done { background: var(--bar-done); }
140
+ .bar.run { background: var(--bar-run); }
141
+ .bar.wait { background: var(--bar-wait); opacity: 0.55; }
142
+ .status { font: 11px/1 var(--mono); color: var(--muted); text-align: right; }
143
+ .cli {
144
+ font: 13px/1.55 var(--mono);
145
+ background: #1b1f24;
146
+ color: #d7e0ea;
147
+ padding: 14px 16px;
148
+ border-radius: 4px;
149
+ white-space: pre-wrap;
150
+ }
151
+ .cli .dim { color: #8b95a5; }
152
+ .cli .ok { color: #6dcea2; }
153
+ .cli .tip { color: #e0b35a; }
154
+ a.doc { color: var(--accent); }
155
+ .actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
156
+ button {
157
+ font: 13px/1 var(--sans);
158
+ padding: 9px 12px;
159
+ border: 1px solid var(--line);
160
+ background: #fff;
161
+ border-radius: 4px;
162
+ cursor: pointer;
163
+ }
164
+ button.primary { background: var(--accent); color: #fff; border-color: var(--accent); }
165
+ </style>
166
+ </head>
167
+ <body>
168
+ <main>
169
+ <p>
170
+ <span class="pill">plan preview</span>
171
+ <span class="pill">sam.codebaseindex.index.run</span>
172
+ <span class="pill">codebaseindex.ingest</span>
173
+ </p>
174
+ <h1>Codebaseindex guided path</h1>
175
+ <p class="sub">
176
+ Inventory first, then scope, then vector lane. Owner IAM already runs Gemini@1536 → Supabase via node-api;
177
+ customers get the same harness as a template (local · Supabase+edge · CF Vectorize).
178
+ Spec:
179
+ <a class="doc" href="./CODEBASEINDEX_GUIDED_PATH.md">CODEBASEINDEX_GUIDED_PATH.md</a>
180
+ </p>
181
+
182
+ <section>
183
+ <h2>Wizard · one option at a time</h2>
184
+ <ol class="steps" id="steps"></ol>
185
+ <div class="actions">
186
+ <button type="button" id="prev">Back</button>
187
+ <button type="button" class="primary" id="next">Next step</button>
188
+ <button type="button" id="reset">Reset</button>
189
+ </div>
190
+ </section>
191
+
192
+ <section>
193
+ <h2>Vector lane choices</h2>
194
+ <div class="lanes">
195
+ <div class="lane" data-lane="local">
196
+ <h3>Local SQLite</h3>
197
+ <p>Ollama / paid embed on this machine. Free semantic search offline. Default for SDK.</p>
198
+ </div>
199
+ <div class="lane" data-lane="supabase">
200
+ <h3>Supabase + node-api</h3>
201
+ <p>BYO edge (IAM node-api template) → Hyperdrive/PG. Host SSOT pattern for Gemini@1536.</p>
202
+ </div>
203
+ <div class="lane" data-lane="vectorize">
204
+ <h3>CF Vectorize</h3>
205
+ <p>Valid customer lane via binding/index. Not IAM host code-index SSOT.</p>
206
+ </div>
207
+ </div>
208
+ </section>
209
+
210
+ <section>
211
+ <h2>Job Gantt · work-graph projection</h2>
212
+ <p class="sub" style="margin-bottom:12px">Same stage ids the CLI should emit in <code>codebaseindex.job.graph.v1</code>.</p>
213
+ <div class="gantt" id="gantt"></div>
214
+ </section>
215
+
216
+ <section>
217
+ <h2>Supabase tables (host code index)</h2>
218
+ <table>
219
+ <thead><tr><th>Table</th><th>Role</th></tr></thead>
220
+ <tbody>
221
+ <tr><td><code>agentsam.agentsam_codebase_chunks_gemini_embedding_2_1536</code></td><td>Chunk ANN</td></tr>
222
+ <tr><td><code>agentsam.agentsam_codebase_files_gemini_embedding_2_1536</code></td><td>File vectors</td></tr>
223
+ <tr><td><code>agentsam.agentsam_codebase_ast_symbols_gemini_embedding_2_1536</code></td><td>Symbol ANN</td></tr>
224
+ <tr><td><code>agentsam.agentsam_gemini_semantic_embeddings_1536</code></td><td>Unified semantic authority</td></tr>
225
+ <tr><td><code>agentsam.agentsam_documents_gemini_embedding_2_1536</code></td><td>Documents twin</td></tr>
226
+ </tbody>
227
+ </table>
228
+ </section>
229
+
230
+ <section>
231
+ <h2>CLI/TUI sketch</h2>
232
+ <div class="cli" id="cli"></div>
233
+ </section>
234
+ </main>
235
+ <script type="module">
236
+ const STEPS = [
237
+ { id: 'connect', title: 'Provider / connection', detail: 'Discover credentials + Ollama. Owner skips scaffold.' },
238
+ { id: 'inventory', title: 'Scan → file map', detail: 'repository.inspect / Merkle inventory before any exclude.' },
239
+ { id: 'scope', title: 'Include / exclude', detail: 'User-authored paths; optional local chat assist.' },
240
+ { id: 'embed', title: 'Model + dimensions', detail: 'Discovered only — e.g. mxbai-embed-large:latest @ 1024.' },
241
+ { id: 'lane', title: 'Vector data source', detail: 'local · supabase+node-api · cloudflare_vectorize' },
242
+ { id: 'plan', title: 'Dry-run / plan', detail: 'Work-graph receipt — not a silent jump to write.' },
243
+ { id: 'run', title: 'Confirm → run', detail: 'Progress events feed this Gantt + terminal.' },
244
+ ];
245
+
246
+ const GANTT = [
247
+ { id: 'connect', start: 0, end: 10, status: 'done' },
248
+ { id: 'inventory', start: 10, end: 28, status: 'done' },
249
+ { id: 'scope', start: 28, end: 40, status: 'done' },
250
+ { id: 'embed_profile', start: 40, end: 48, status: 'run' },
251
+ { id: 'lane', start: 48, end: 58, status: 'wait' },
252
+ { id: 'plan', start: 58, end: 70, status: 'wait' },
253
+ { id: 'index', start: 70, end: 92, status: 'wait' },
254
+ { id: 'activate', start: 92, end: 100, status: 'wait' },
255
+ ];
256
+
257
+ let step = 1;
258
+ let lane = 'local';
259
+
260
+ const stepsEl = document.getElementById('steps');
261
+ const ganttEl = document.getElementById('gantt');
262
+ const cliEl = document.getElementById('cli');
263
+
264
+ function renderSteps() {
265
+ stepsEl.innerHTML = STEPS.map((s, i) => `
266
+ <li class="${i === step ? 'active' : ''}">
267
+ <div class="n">${i + 1}</div>
268
+ <div><strong>${s.title}</strong><span>${s.detail}</span></div>
269
+ </li>`).join('');
270
+ }
271
+
272
+ function renderGantt() {
273
+ ganttEl.innerHTML = GANTT.map((row) => `
274
+ <div class="gantt-row">
275
+ <div class="label">${row.id}</div>
276
+ <div class="track"><div class="bar ${row.status}" style="left:${row.start}%;width:${row.end - row.start}%"></div></div>
277
+ <div class="status">${row.status}</div>
278
+ </div>`).join('');
279
+ }
280
+
281
+ function renderCli() {
282
+ const s = STEPS[step];
283
+ cliEl.innerHTML = [
284
+ `<span class="dim">agentsam codebaseindex</span>`,
285
+ `<span class="tip">tip: use skill agentsam-codebaseindex</span>`,
286
+ ``,
287
+ `<span class="ok">✓</span> step ${step + 1}/${STEPS.length} · ${s.id}`,
288
+ ` ${s.title}`,
289
+ ` lane preference: <span class="ok">${lane}</span>`,
290
+ ``,
291
+ step === 1 ? ` inventory: merkle_root=ab12… files=482 facets ready` : ` <span class="dim">(advance to see inventory framing)</span>`,
292
+ step >= 4 ? ` embed: discovered ollama|mxbai-embed-large:latest|1024` : '',
293
+ step >= 5 ? ` data source → ${lane === 'supabase' ? 'node-api → agentsam.agentsam_codebase_chunks_…' : lane}` : '',
294
+ step >= 6 ? ` plan receipt → codebaseindex.job.graph.v1` : '',
295
+ ].filter(Boolean).join('\n');
296
+ }
297
+
298
+ function renderLanes() {
299
+ document.querySelectorAll('.lane').forEach((el) => {
300
+ el.classList.toggle('pick', el.dataset.lane === lane);
301
+ });
302
+ }
303
+
304
+ function paint() {
305
+ renderSteps();
306
+ renderGantt();
307
+ renderCli();
308
+ renderLanes();
309
+ }
310
+
311
+ document.getElementById('next').onclick = () => { step = Math.min(STEPS.length - 1, step + 1); paint(); };
312
+ document.getElementById('prev').onclick = () => { step = Math.max(0, step - 1); paint(); };
313
+ document.getElementById('reset').onclick = () => { step = 0; lane = 'local'; paint(); };
314
+ document.querySelectorAll('.lane').forEach((el) => {
315
+ el.addEventListener('click', () => { lane = el.dataset.lane; paint(); });
316
+ });
317
+
318
+ paint();
319
+ </script>
320
+ </body>
321
+ </html>
@@ -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)