@inneranimalmedia/agentsam-sdk 2.6.4 → 2.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (699) hide show
  1. package/AGENTSAM.md +40 -0
  2. package/README.md +15 -9
  3. package/apps/README.md +5 -0
  4. package/apps/cad-creator/README.md +4 -4
  5. package/apps/cad-creator/shared/cad/package.json +1 -1
  6. package/apps/client-cms-editor/AGENTS.md +17 -0
  7. package/apps/client-cms-editor/IMPORT_PROVENANCE.json +8 -0
  8. package/apps/client-cms-editor/README.md +100 -0
  9. package/apps/client-cms-editor/agentsam.app.json +74 -0
  10. package/apps/client-cms-editor/backend/README.md +5 -0
  11. package/apps/client-cms-editor/backend/package.json +39 -0
  12. package/apps/client-cms-editor/backend/src/api/client.ts +233 -0
  13. package/apps/client-cms-editor/backend/src/index.ts +6 -0
  14. package/apps/client-cms-editor/backend/src/model.ts +11 -0
  15. package/apps/client-cms-editor/backend/src/preview/bridge.ts +79 -0
  16. package/apps/client-cms-editor/backend/src/preview/urls.ts +55 -0
  17. package/apps/client-cms-editor/backend/src/routing/cms-route.js +293 -0
  18. package/apps/client-cms-editor/backend/src/routing/index.js +10 -0
  19. package/apps/client-cms-editor/backend/src/storefront.ts +52 -0
  20. package/apps/client-cms-editor/backend/tsconfig.json +20 -0
  21. package/apps/client-cms-editor/backend/worker/index.js +34 -0
  22. package/apps/client-cms-editor/backend/wrangler.jsonc +11 -0
  23. package/apps/client-cms-editor/bin/agentsam-cms.js +262 -0
  24. package/apps/client-cms-editor/bin/agentsam-cms.mjs +3 -0
  25. package/apps/client-cms-editor/frontend/index.html +12 -0
  26. package/apps/client-cms-editor/frontend/package.json +42 -0
  27. package/apps/client-cms-editor/frontend/src/AgentSamDrawer.tsx +156 -0
  28. package/apps/client-cms-editor/frontend/src/CmsAgentSurface.tsx +36 -0
  29. package/apps/client-cms-editor/frontend/src/adapters/heuristic.ts +29 -0
  30. package/apps/client-cms-editor/frontend/src/adapters/http.ts +628 -0
  31. package/apps/client-cms-editor/frontend/src/adapters/memory.ts +510 -0
  32. package/apps/client-cms-editor/frontend/src/editor/CmsEditor.tsx +213 -0
  33. package/apps/client-cms-editor/frontend/src/editor/CmsEditorProvider.tsx +20 -0
  34. package/apps/client-cms-editor/frontend/src/editor/canvas/PreviewCanvas.tsx +53 -0
  35. package/apps/client-cms-editor/frontend/src/editor/legacy/CmsEditorPrototype.tsx +1374 -0
  36. package/apps/client-cms-editor/frontend/src/editor/useCmsEditorController.ts +218 -0
  37. package/apps/client-cms-editor/frontend/src/env.d.ts +14 -0
  38. package/apps/client-cms-editor/frontend/src/index.ts +22 -0
  39. package/apps/client-cms-editor/frontend/src/lib/agent-host.ts +24 -0
  40. package/apps/client-cms-editor/frontend/src/lib/content-safety.ts +63 -0
  41. package/apps/client-cms-editor/frontend/src/main.tsx +91 -0
  42. package/apps/client-cms-editor/frontend/src/mount.tsx +113 -0
  43. package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +214 -0
  44. package/apps/client-cms-editor/frontend/src/styles/cmsShell.css +1739 -0
  45. package/apps/client-cms-editor/frontend/src/styles/studio.css +158 -0
  46. package/apps/client-cms-editor/frontend/src/surfaces/CmsDashboard.tsx +313 -0
  47. package/apps/client-cms-editor/frontend/src/surfaces/CmsGuidedChatHero.tsx +121 -0
  48. package/apps/client-cms-editor/frontend/src/surfaces/CmsHubPage.tsx +132 -0
  49. package/apps/client-cms-editor/frontend/src/surfaces/CmsSiteSwitcher.tsx +176 -0
  50. package/apps/client-cms-editor/frontend/src/surfaces/index.ts +5 -0
  51. package/apps/client-cms-editor/frontend/src/surfaces/types.ts +48 -0
  52. package/apps/client-cms-editor/frontend/tsconfig.json +36 -0
  53. package/apps/client-cms-editor/frontend/vite.config.ts +25 -0
  54. package/apps/client-cms-editor/package-lock.json +4671 -0
  55. package/apps/client-cms-editor/package.json +135 -0
  56. package/apps/client-cms-editor/reference/DONOR_README.md +52 -0
  57. package/apps/client-cms-editor/reference/DONOR_package-lock.json +1253 -0
  58. package/apps/client-cms-editor/reference/DONOR_tsconfig.json +15 -0
  59. package/apps/client-cms-editor/reference/harvest/HARVEST_RECEIPT.json +201 -0
  60. package/apps/client-cms-editor/reference/harvest/PROVENANCE_HISTORY.txt +10 -0
  61. package/apps/client-cms-editor/reference/harvest/README.md +8 -0
  62. package/apps/client-cms-editor/reference/harvest/plans/ARCHIVE-INTAKE.md +135 -0
  63. package/apps/client-cms-editor/reference/harvest/plans/CHATGPT-IDENTITY-HARVEST.md +83 -0
  64. package/apps/client-cms-editor/reference/harvest/plans/CMS-EDITOR-HARVEST.md +166 -0
  65. package/apps/client-cms-editor/reference/harvest/plans/HARVEST-INDEX.md +196 -0
  66. package/apps/client-cms-editor/reference/harvest/plans/INNERANIMALS-CONTENT-001.md +137 -0
  67. package/apps/client-cms-editor/reference/harvest/plans/NO-IMPLICIT-SIDE-EFFECTS.md +87 -0
  68. package/apps/client-cms-editor/reference/harvest/plans/STOREFRONT-SURFACE-MAP.md +140 -0
  69. package/apps/client-cms-editor/reference/harvest/plans/THEME-INNERANIMALS-HARVEST.md +137 -0
  70. package/apps/client-cms-editor/reference/harvest/plans/TOOLING-LAB.md +63 -0
  71. package/apps/client-cms-editor/reference/harvest/plans/harvest-manifest.json +97 -0
  72. package/apps/client-cms-editor/reference/harvest/plans/local-cms-harvest-schema.sql +328 -0
  73. package/apps/client-cms-editor/shared/cms/package.json +31 -0
  74. package/apps/client-cms-editor/shared/cms/src/adapter.ts +204 -0
  75. package/apps/client-cms-editor/shared/cms/src/agent-context.ts +37 -0
  76. package/apps/client-cms-editor/shared/cms/src/cloudflare-bindings.ts +51 -0
  77. package/apps/client-cms-editor/shared/cms/src/editor-types.ts +90 -0
  78. package/apps/client-cms-editor/shared/cms/src/host.ts +82 -0
  79. package/apps/client-cms-editor/shared/cms/src/index.ts +9 -0
  80. package/apps/client-cms-editor/shared/cms/src/map.ts +115 -0
  81. package/apps/client-cms-editor/shared/cms/src/publication.ts +24 -0
  82. package/apps/client-cms-editor/shared/cms/src/routes.ts +11 -0
  83. package/apps/client-cms-editor/shared/cms/src/starter-pack.ts +158 -0
  84. package/apps/client-cms-editor/shared/cms/tsconfig.json +12 -0
  85. package/bin/agentsam-rapid-rust +36 -0
  86. package/contracts/source-types.v1.json +353 -0
  87. package/docs/AUTH_IDENTITY_CONTRACT.md +2 -0
  88. package/docs/CMS_CONTEXTUAL_COMPOSER.md +1 -1
  89. package/docs/MACHINE_INTELLIGENCE.md +120 -0
  90. package/docs/PRODUCT_LIFECYCLE.md +566 -0
  91. package/docs/THEME_REFINERY.md +2 -2
  92. package/docs/WINDOWS_RUNTIME_INSTALL.md +30 -0
  93. package/docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md +188 -0
  94. package/docs/architecture/AGENTSAM_RUNTIME_PROTOCOL.md +171 -0
  95. package/docs/architecture/LOCAL_STUDIO_CLOUDFLARE_OAUTH.md +12 -4
  96. package/docs/architecture/R2_SLUG_NAMESPACE.md +20 -0
  97. package/docs/architecture/WORK_PRODUCT_EXTRACTION.md +97 -0
  98. package/docs/brand/AGENT_SAM_ICON_GRAMMAR.md +70 -0
  99. package/docs/content-studio/HOST_MOUNT_CHECKLIST.md +71 -0
  100. package/docs/content-studio/REVISION_GATE_2026-09-27.md +501 -0
  101. package/docs/contracts/capability-install-planner.md +67 -0
  102. package/docs/contracts/environment-vocabulary.md +195 -0
  103. package/docs/contracts/google-cloud-oauth-setup.md +199 -0
  104. package/docs/local-studio/WORKMODE_DONOR_NOTES.md +1 -1
  105. package/docs/plans/LOCAL-STUDIO-GRADUATION-2026-09-26.md +290 -0
  106. package/docs/plans/LOCAL-STUDIO-REAL-APP-CONTRACT-ADDENDUM-2026-09-27.md +394 -0
  107. package/docs/plans/LOCAL_STUDIO_DESKTOP_RELEASE_2026-09-29.md +150 -0
  108. package/docs/plans/MACHINE-FIRST-APPS-TUI-2026-09-24.md +227 -0
  109. package/docs/plans/TOMORROW-EXTENSIVE-TODO-2026-09-26.md +221 -0
  110. package/docs/plans/TOMORROW-MACHINE-FIRST-BRIEFING.md +145 -0
  111. package/docs/plans/UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md +215 -0
  112. package/docs/plugins.md +2 -2
  113. package/docs/product/AGENTSAM_PRODUCT_EXPERIENCE_STANDARD.md +280 -0
  114. package/docs/product/LOCAL_STUDIO_DESKTOP_EXPERIENCE.md +139 -0
  115. package/docs/product/README.md +8 -0
  116. package/docs/rapid-rust-wasm.md +35 -0
  117. package/migrations/d1/0016_cloudflare_oauth_user_oauth_tokens_ssot.sql +14 -0
  118. package/migrations/d1/0017_identity_native_oauth.sql +21 -0
  119. package/native/agentsam-machine/Cargo.lock +426 -0
  120. package/native/agentsam-machine/Cargo.toml +9 -0
  121. package/native/agentsam-machine/cli/Cargo.toml +14 -0
  122. package/native/agentsam-machine/cli/src/main.rs +77 -0
  123. package/native/agentsam-machine/core/Cargo.toml +15 -0
  124. package/native/agentsam-machine/core/src/assets.rs +790 -0
  125. package/native/agentsam-machine/core/src/bound.rs +298 -0
  126. package/native/agentsam-machine/core/src/enrich.rs +706 -0
  127. package/native/agentsam-machine/core/src/frontend.rs +442 -0
  128. package/native/agentsam-machine/core/src/lib.rs +1086 -0
  129. package/native/agentsam-machine/core/src/liquid.rs +528 -0
  130. package/native/agentsam-machine/core/src/source_types.rs +78 -0
  131. package/package.json +110 -21
  132. package/packages/agentsam-brand/README.md +107 -12
  133. package/packages/agentsam-brand/bin/agentsam-brand.mjs +9 -0
  134. package/packages/agentsam-brand/package.json +41 -9
  135. package/packages/agentsam-brand/src/adapters/cloudflare-images.js +453 -0
  136. package/packages/agentsam-brand/src/adapters/cloudflare-r2.js +74 -0
  137. package/packages/agentsam-brand/src/adapters/d1-registry.js +26 -0
  138. package/packages/agentsam-brand/src/adapters/filesystem.js +59 -0
  139. package/packages/agentsam-brand/src/adapters/memory.js +31 -0
  140. package/packages/agentsam-brand/src/cli/controller.js +503 -0
  141. package/packages/agentsam-brand/src/cli/wizard.js +526 -0
  142. package/packages/agentsam-brand/src/core/capabilities.js +201 -0
  143. package/packages/agentsam-brand/src/core/derivatives.js +211 -0
  144. package/packages/agentsam-brand/src/core/errors.js +12 -0
  145. package/packages/agentsam-brand/src/core/ingest.js +195 -0
  146. package/packages/agentsam-brand/src/core/inspect.js +109 -0
  147. package/packages/agentsam-brand/src/core/keys.js +83 -0
  148. package/packages/agentsam-brand/src/core/naming.js +142 -0
  149. package/packages/agentsam-brand/src/core/optimize.js +316 -0
  150. package/packages/agentsam-brand/src/core/pack.js +305 -0
  151. package/packages/agentsam-brand/src/core/plan.js +276 -0
  152. package/packages/agentsam-brand/src/core/preview.js +159 -0
  153. package/packages/agentsam-brand/src/core/processors/cloudflare.js +68 -0
  154. package/packages/agentsam-brand/src/core/processors/contract.js +203 -0
  155. package/packages/agentsam-brand/src/core/processors/index.js +148 -0
  156. package/packages/agentsam-brand/src/core/processors/native.js +82 -0
  157. package/packages/agentsam-brand/src/core/processors/sharp.js +113 -0
  158. package/packages/agentsam-brand/src/core/processors/squoosh-binary.js +195 -0
  159. package/packages/agentsam-brand/src/core/promote.js +288 -0
  160. package/packages/agentsam-brand/src/core/receipts.js +155 -0
  161. package/packages/agentsam-brand/src/core/v2/compile.js +280 -0
  162. package/packages/agentsam-brand/src/core/v2/derivatives-semantic.js +207 -0
  163. package/packages/agentsam-brand/src/core/v2/ingest-graph.js +387 -0
  164. package/packages/agentsam-brand/src/core/v2/roles.js +180 -0
  165. package/packages/agentsam-brand/src/core/v2/schema.js +209 -0
  166. package/packages/agentsam-brand/src/core/v2/templates.js +114 -0
  167. package/packages/agentsam-brand/src/index.js +193 -36
  168. package/packages/agentsam-brand/src/presets/app-icon.json +16 -0
  169. package/packages/agentsam-brand/src/presets/favicon.json +17 -0
  170. package/packages/agentsam-brand/src/presets/hero.json +12 -0
  171. package/packages/agentsam-brand/src/presets/index.js +40 -0
  172. package/packages/agentsam-brand/src/presets/logo.json +12 -0
  173. package/packages/agentsam-brand/src/presets/model.json +8 -0
  174. package/packages/agentsam-brand/src/presets/og-image.json +10 -0
  175. package/packages/agentsam-brand/src/presets/product-shot.json +11 -0
  176. package/packages/agentsam-brand/src/presets/social-image.json +10 -0
  177. package/packages/agentsam-brand/src/presets/web-image.json +10 -0
  178. package/packages/agentsam-contracts/package.json +13 -3
  179. package/packages/agentsam-contracts/src/artifacts.ts +41 -0
  180. package/packages/agentsam-contracts/src/tools.ts +22 -0
  181. package/packages/agentsam-errors/package.json +13 -3
  182. package/packages/agentsam-knowledge/package.json +18 -4
  183. package/packages/agentsam-knowledge/src/autorag/index.js +11 -4
  184. package/packages/agentsam-knowledge/src/backends/index.js +33 -1
  185. package/packages/agentsam-knowledge/src/providers/index.js +6 -4
  186. package/packages/agentsam-knowledge/src/providers/ollama-endpoint.js +31 -0
  187. package/packages/agentsam-knowledge/test/autorag.test.mjs +81 -1
  188. package/packages/agentsam-nav/package.json +26 -8
  189. package/packages/agentsam-queue-control/README.md +1 -1
  190. package/packages/agentsam-queue-control/package.json +7 -2
  191. package/packages/agentsam-rapid-rust/Cargo.lock +344 -0
  192. package/packages/agentsam-rapid-rust/Cargo.toml +18 -0
  193. package/packages/agentsam-rapid-rust/README.md +5 -0
  194. package/packages/agentsam-rapid-rust/src/main.rs +718 -0
  195. package/packages/agentsam-rapid-rust/templates/api/Cargo.toml.tmpl +18 -0
  196. package/packages/agentsam-rapid-rust/templates/api/src/lib.rs.tmpl +17 -0
  197. package/packages/agentsam-rapid-rust/templates/common/README.md.tmpl +22 -0
  198. package/packages/agentsam-rapid-rust/templates/common/package.json.tmpl +12 -0
  199. package/packages/agentsam-rapid-rust/templates/common/wrangler.toml.tmpl +6 -0
  200. package/packages/agentsam-rapid-rust/templates/crypto-auth/Cargo.toml.tmpl +21 -0
  201. package/packages/agentsam-rapid-rust/templates/crypto-auth/src/lib.rs.tmpl +32 -0
  202. package/packages/agentsam-rapid-rust/templates/data-processor/Cargo.toml.tmpl +18 -0
  203. package/packages/agentsam-rapid-rust/templates/data-processor/src/lib.rs.tmpl +41 -0
  204. package/packages/agentsam-rapid-rust/templates/shared-core/Cargo.toml.tmpl +9 -0
  205. package/packages/agentsam-rapid-rust/templates/shared-core/core/Cargo.toml.tmpl +7 -0
  206. package/packages/agentsam-rapid-rust/templates/shared-core/core/src/lib.rs.tmpl +23 -0
  207. package/packages/agentsam-rapid-rust/templates/shared-core/worker/Cargo.toml.tmpl +12 -0
  208. package/packages/agentsam-rapid-rust/templates/shared-core/worker/src/lib.rs.tmpl +16 -0
  209. package/packages/agentsam-rapid-rust/templates/shared-core/wrangler.toml.tmpl +6 -0
  210. package/packages/agentsam-repository/package.json +13 -3
  211. package/packages/agentsam-repository/src/index.js +1 -0
  212. package/packages/agentsam-repository/src/merkle/semantic.js +3 -10
  213. package/packages/agentsam-repository/src/source-types.js +93 -0
  214. package/packages/agentsam-vault/README.md +96 -0
  215. package/packages/agentsam-vault/package.json +42 -0
  216. package/packages/agentsam-vault/src/contracts/credential.d.ts +78 -0
  217. package/packages/agentsam-vault/src/contracts/credential.js +132 -0
  218. package/packages/agentsam-vault/src/crypto/aes-gcm.d.ts +30 -0
  219. package/packages/agentsam-vault/src/crypto/aes-gcm.js +107 -0
  220. package/packages/agentsam-vault/src/crypto/oauth-envelope.js +150 -0
  221. package/packages/agentsam-vault/src/index.d.ts +9 -0
  222. package/packages/agentsam-vault/src/index.js +27 -0
  223. package/packages/agentsam-vault/src/providers/registry.js +90 -0
  224. package/packages/agentsam-vault/src/runtime/resolver.js +77 -0
  225. package/packages/agentsam-workbench/README.md +24 -0
  226. package/packages/agentsam-workbench/package.json +49 -0
  227. package/packages/agentsam-workbench/src/agent/AgentPanel.tsx +41 -0
  228. package/packages/agentsam-workbench/src/agent/ArtifactCard.tsx +9 -0
  229. package/packages/agentsam-workbench/src/agent/Composer.tsx +102 -0
  230. package/packages/agentsam-workbench/src/agent/ConnectedAgentPanel.tsx +194 -0
  231. package/packages/agentsam-workbench/src/agent/ContextualComposer.tsx +788 -0
  232. package/packages/agentsam-workbench/src/agent/GoalStatusStrip.tsx +38 -0
  233. package/packages/agentsam-workbench/src/agent/MiniAgentSam.tsx +86 -0
  234. package/packages/agentsam-workbench/src/agent/ModelSelect.tsx +19 -0
  235. package/packages/agentsam-workbench/src/agent/Thread.tsx +56 -0
  236. package/packages/agentsam-workbench/src/agent/ToolPermissionRequest.tsx +94 -0
  237. package/packages/agentsam-workbench/src/agent/ToolReceipt.tsx +11 -0
  238. package/packages/agentsam-workbench/src/agent/contextual-composer.css +611 -0
  239. package/packages/agentsam-workbench/src/agent/index.ts +12 -0
  240. package/packages/agentsam-workbench/src/agent/mini-agentsam.css +12 -0
  241. package/packages/agentsam-workbench/src/agent/tool-permission.css +134 -0
  242. package/packages/agentsam-workbench/src/browser/BrowserFrame.tsx +37 -0
  243. package/packages/agentsam-workbench/src/browser/index.ts +1 -0
  244. package/packages/agentsam-workbench/src/index.ts +6 -0
  245. package/packages/agentsam-workbench/src/project-control.css +160 -0
  246. package/packages/agentsam-workbench/src/projects/ProjectsSurface.tsx +131 -0
  247. package/packages/agentsam-workbench/src/projects/index.ts +1 -0
  248. package/packages/agentsam-workbench/src/shell/Breadcrumb.tsx +35 -0
  249. package/packages/agentsam-workbench/src/shell/ResizableStage.tsx +99 -0
  250. package/packages/agentsam-workbench/src/shell/SidePanel.tsx +5 -0
  251. package/packages/agentsam-workbench/src/shell/index.ts +4 -0
  252. package/packages/agentsam-workbench/src/shell/surfaceRegistry.ts +29 -0
  253. package/packages/agentsam-workbench/src/terminal/TerminalSurface.tsx +5 -0
  254. package/packages/agentsam-workbench/src/terminal/index.ts +1 -0
  255. package/packages/agentsam-workbench/src/timeline/GanttBoard.tsx +258 -0
  256. package/packages/agentsam-workbench/src/timeline/index.ts +1 -0
  257. package/packages/agentsam-workbench/tsconfig.json +13 -0
  258. package/packages/connectors/cloudflare/OAUTH_STORAGE_AUDIT.md +53 -0
  259. package/packages/connectors/cloudflare/package.json +16 -4
  260. package/packages/connectors/cloudflare/src/api-client.js +280 -0
  261. package/packages/connectors/cloudflare/src/capabilities.js +585 -0
  262. package/packages/connectors/cloudflare/src/credential.js +318 -0
  263. package/packages/connectors/cloudflare/src/families/brand-protection.js +123 -0
  264. package/packages/connectors/cloudflare/src/families/keyless.js +114 -0
  265. package/packages/connectors/cloudflare/src/families/pages.js +151 -0
  266. package/packages/connectors/cloudflare/src/families/scanner.js +123 -0
  267. package/packages/connectors/cloudflare/src/families/snippets.js +207 -0
  268. package/packages/connectors/cloudflare/src/families/tag-gateway.js +46 -0
  269. package/packages/connectors/cloudflare/src/families/tags.js +124 -0
  270. package/packages/connectors/cloudflare/src/families/token-validation.js +95 -0
  271. package/packages/connectors/cloudflare/src/families/vectorize.js +127 -0
  272. package/packages/connectors/cloudflare/src/families/workflows.js +156 -0
  273. package/packages/connectors/cloudflare/src/index.js +103 -265
  274. package/packages/connectors/cloudflare/src/oauth-persist.js +336 -0
  275. package/packages/connectors/cloudflare/src/owner.js +42 -12
  276. package/packages/connectors/cloudflare/src/permission-options.js +1064 -0
  277. package/packages/connectors/cloudflare/src/routes.js +309 -144
  278. package/packages/connectors/cloudflare/src/scope-catalog.js +345 -0
  279. package/packages/connectors/cloudflare/src/vault.js +2 -2
  280. package/packages/connectors/cloudflare/tests/capabilities.test.mjs +276 -0
  281. package/packages/connectors/cloudflare/tests/connector.test.mjs +26 -30
  282. package/packages/connectors/cloudflare/tests/oauth-persist.test.mjs +125 -0
  283. package/packages/heuristic-theme/README.md +2 -2
  284. package/packages/heuristic-theme/package.json +8 -3
  285. package/packages/heuristic-theme/src/registry.js +2 -2
  286. package/packages/heuristic-theme/src/theme.js +1 -1
  287. package/packages/heuristic-theme/test/theme.test.mjs +1 -1
  288. package/packages/identity/.agentsam/features/oauth-login-portal/agentsam.feature.json +1 -1
  289. package/packages/identity/.agentsam/features/oauth-login-portal/providers.json +44 -4
  290. package/packages/identity/.agentsam/features/oauth-login-portal/resources.json +10 -4
  291. package/packages/identity/.agentsam/features/oauth-login-portal/routes.json +20 -0
  292. package/packages/identity/README.md +2 -2
  293. package/packages/identity/backend/README.md +1 -1
  294. package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +18 -14
  295. package/packages/identity/migrations/apply-portable.js +109 -0
  296. package/packages/identity/migrations/sqlite/004_identity_oauth_consent_catalog.sql +48 -0
  297. package/packages/identity/migrations/sqlite/005_identity_company_native.sql +52 -0
  298. package/packages/identity/package.json +27 -5
  299. package/packages/identity/schema/agentsam.identity/manifest.json +101 -0
  300. package/packages/identity/scripts/local-identity-bridge.mjs +190 -0
  301. package/packages/identity/scripts/preview-auth-portal.mjs +8 -8
  302. package/packages/identity/src/adapters/cloudflare-d1/index.js +8 -372
  303. package/packages/identity/src/adapters/iam-compat/index.js +540 -0
  304. package/packages/identity/src/adapters/portable-d1/index.js +18 -0
  305. package/packages/identity/src/adapters/portable-store.js +479 -0
  306. package/packages/identity/src/adapters/sqlite/index.js +13 -309
  307. package/packages/identity/src/contracts/auth-config.js +27 -8
  308. package/packages/identity/src/contracts/external-identity.js +1 -1
  309. package/packages/identity/src/contracts/identity-store.js +56 -5
  310. package/packages/identity/src/contracts/provider.js +2 -0
  311. package/packages/identity/src/contracts/sign-in-options.js +104 -0
  312. package/packages/identity/src/core/constants.js +1 -1
  313. package/packages/identity/src/core/session-policy.js +31 -0
  314. package/packages/identity/src/frontend/auth-portal/README.md +2 -1
  315. package/packages/identity/src/frontend/auth-portal/pages/login.html +7 -6
  316. package/packages/identity/src/frontend/auth-portal/pages/reset.html +6 -5
  317. package/packages/identity/src/frontend/auth-portal/pages/signup.html +6 -5
  318. package/packages/identity/src/frontend/auth-portal/shared/company-branding.js +1 -1
  319. package/packages/identity/src/frontend/auth-portal/shared/desktop-identity-bridge.js +176 -0
  320. package/packages/identity/src/index.js +44 -1
  321. package/packages/identity/src/migrations/0001_identity_core.sql +19 -2
  322. package/packages/identity/src/migrations/0003_accounts_ssot.sql +20 -0
  323. package/packages/identity/src/migrations/README.md +23 -20
  324. package/packages/identity/src/oauth/README.md +10 -5
  325. package/packages/identity/src/oauth/consent-view.js +388 -0
  326. package/packages/identity/src/oauth/credentials.js +39 -20
  327. package/packages/identity/src/oauth/google-desktop-exchange.js +341 -0
  328. package/packages/identity/src/oauth/iam-platform.js +21 -9
  329. package/packages/identity/src/oauth/native-handoff.js +136 -0
  330. package/packages/identity/src/providers/chatgpt/headers.js +65 -0
  331. package/packages/identity/src/providers/chatgpt/index.js +86 -0
  332. package/packages/identity/src/providers/chatgpt/mapper.js +43 -0
  333. package/packages/identity/src/providers/chatgpt/paths.js +45 -0
  334. package/packages/identity/src/providers/cloudflare/oauth.js +3 -4
  335. package/packages/identity/src/providers/cloudflare/profile.js +49 -14
  336. package/packages/identity/src/providers/github/oauth.js +1 -2
  337. package/packages/identity/src/providers/github/profile.js +16 -2
  338. package/packages/identity/src/providers/iam/index.js +27 -5
  339. package/packages/identity/src/providers/index.js +11 -3
  340. package/packages/identity/src/server/identity-service.js +33 -3
  341. package/packages/identity/src/server/worker-router.js +171 -88
  342. package/packages/identity/tests/auth-config.test.mjs +3 -2
  343. package/packages/identity/tests/chatgpt-provider.test.mjs +75 -0
  344. package/packages/identity/tests/google-desktop-identity-login.test.mjs +210 -0
  345. package/packages/identity/tests/identity-init-scaffold.test.mjs +17 -3
  346. package/packages/identity/tests/identity-service.test.mjs +16 -0
  347. package/packages/identity/tests/lane1-identity-store-parity.test.mjs +527 -0
  348. package/packages/identity/tests/lane1-packed-consumer.test.mjs +175 -0
  349. package/packages/identity/tests/native-oauth-handoff.test.mjs +292 -0
  350. package/packages/identity/tests/native-session-worker.test.mjs +64 -0
  351. package/packages/identity/tests/oauth-consent-view.test.mjs +106 -0
  352. package/packages/identity/tests/oauth-credentials.test.mjs +21 -8
  353. package/packages/identity/tests/oauth-presets-accounts-ssot.test.mjs +58 -0
  354. package/packages/identity/tests/preview-auth-portal.test.mjs +5 -3
  355. package/packages/identity/tests/session-routes-policy.test.mjs +13 -1
  356. package/packages/identity/tests/worker-runtime-boundary.test.mjs +11 -0
  357. package/packages/providers/completeful/package.json +7 -2
  358. package/packages/runtime-protocol/src/index.js +154 -0
  359. package/packages/theme-church-site/package.json +17 -6
  360. package/packages/theme-church-site/src/harvest.json +4 -2
  361. package/packages/theme-church-site/src/index.js +7 -3
  362. package/packages/theme-church-site/test/theme.test.mjs +4 -2
  363. package/packages/theme-companions-site/package.json +17 -6
  364. package/packages/theme-companions-site/src/harvest.json +4 -2
  365. package/packages/theme-companions-site/src/index.js +7 -3
  366. package/packages/theme-companions-site/test/theme.test.mjs +4 -2
  367. package/packages/theme-floors-site/package.json +17 -6
  368. package/packages/theme-floors-site/src/harvest.json +4 -2
  369. package/packages/theme-floors-site/src/index.js +7 -3
  370. package/packages/theme-floors-site/test/theme.test.mjs +4 -2
  371. package/packages/theme-fuelnfree-site/package.json +17 -6
  372. package/packages/theme-fuelnfree-site/src/harvest.json +4 -2
  373. package/packages/theme-fuelnfree-site/src/index.js +7 -3
  374. package/packages/theme-fuelnfree-site/test/theme.test.mjs +4 -2
  375. package/packages/theme-handyman-site/package.json +17 -6
  376. package/packages/theme-handyman-site/src/harvest.json +4 -2
  377. package/packages/theme-handyman-site/src/index.js +7 -3
  378. package/packages/theme-handyman-site/test/theme.test.mjs +4 -2
  379. package/packages/theme-insurance-site/package.json +17 -6
  380. package/packages/theme-insurance-site/src/harvest.json +4 -2
  381. package/packages/theme-insurance-site/src/index.js +7 -3
  382. package/packages/theme-insurance-site/test/theme.test.mjs +4 -2
  383. package/packages/theme-scenes/README.md +164 -0
  384. package/packages/theme-scenes/package.json +54 -0
  385. package/packages/theme-scenes/src/blocks/index.js +30 -0
  386. package/packages/theme-scenes/src/contracts/index.js +286 -0
  387. package/packages/theme-scenes/src/demos/index.js +65 -0
  388. package/packages/theme-scenes/src/index.js +75 -0
  389. package/packages/theme-scenes/src/presets/index.js +263 -0
  390. package/packages/theme-scenes/src/registry.js +187 -0
  391. package/packages/theme-scenes/src/runtime/compile.js +119 -0
  392. package/packages/theme-scenes/src/scenes/index.js +146 -0
  393. package/packages/theme-scenes/src/shell/index.js +47 -0
  394. package/packages/theme-scenes/src/themes/index.js +129 -0
  395. package/packages/theme-scenes/src/visuals/index.js +41 -0
  396. package/packages/theme-scenes/test/theme-scenes.test.mjs +179 -0
  397. package/packages/theme-shinshu-site/package.json +17 -6
  398. package/packages/theme-shinshu-site/src/harvest.json +4 -2
  399. package/packages/theme-shinshu-site/src/index.js +7 -3
  400. package/packages/theme-shinshu-site/test/theme.test.mjs +4 -2
  401. package/packages/work-graph/package.json +14 -4
  402. package/packages/work-graph/src/index.js +34 -1
  403. package/packages/work-graph/src/renderers/gantt-model.js +24 -0
  404. package/packages/work-graph/test/work-graph.test.mjs +27 -7
  405. package/protocol/FILEMETA_V1.md +2 -2
  406. package/protocol/README.md +15 -7
  407. package/protocol/apps/agentsam.app.v1.schema.json +89 -7
  408. package/protocol/apps/agentsam.host-install.v1.schema.json +36 -0
  409. package/protocol/assets/README.md +9 -0
  410. package/protocol/assets/asset-record.v1.schema.json +64 -0
  411. package/protocol/capabilities/manifest.json +1 -1
  412. package/protocol/database/agentsam.schema-pack.v1.schema.json +72 -0
  413. package/protocol/presets/catalog.json +2 -2
  414. package/protocol/runtime/agentsam.runtime.v1.schema.json +75 -0
  415. package/protocol/scoring/README.md +10 -0
  416. package/protocol/scoring/scorecard.v1.schema.json +65 -0
  417. package/protocol/theme-refinery/lineage-registry.json +105 -0
  418. package/protocol/theme-refinery/product-metadata.schema.json +21 -1
  419. package/protocol/ui/icon-registry.mjs +1 -0
  420. package/registry/cms-rust-machine-20260928/installable-products.json +31 -0
  421. package/registry/cms-rust-machine-20260928/manifest.json +22 -0
  422. package/registry/cms-rust-machine-20260928/migration.sql +237 -0
  423. package/registry/cms-rust-machine-20260928/receipt.json +21 -0
  424. package/registry/cms-rust-machine-20260928/receipt.sql +27 -0
  425. package/scripts/build_rapid_rust_cli.py +83 -0
  426. package/skills/grok-auth/SKILL.md +110 -0
  427. package/skills/grok-auth/agentsam.skill.json +25 -0
  428. package/skills/grok-auth/references/grok-identity.md +64 -0
  429. package/skills/grok-auth/references/per-user-data.md +49 -0
  430. package/skills/grok-auth/references/prewired-and-env.md +54 -0
  431. package/skills/grok-auth/references/session-ui.md +133 -0
  432. package/skills/grok-auth/references/sign-in-methods.md +55 -0
  433. package/skills/grok-auth/references/wiring.md +71 -0
  434. package/skills/grok-building-games/SKILL.md +213 -0
  435. package/skills/grok-building-games/agentsam.skill.json +25 -0
  436. package/skills/grok-building-games/references/3d-libs.md +64 -0
  437. package/skills/grok-building-games/references/ai-pathfinding.md +122 -0
  438. package/skills/grok-building-games/references/audio.md +129 -0
  439. package/skills/grok-building-games/references/babylon.md +202 -0
  440. package/skills/grok-building-games/references/collision-physics.md +122 -0
  441. package/skills/grok-building-games/references/ecs-architecture.md +111 -0
  442. package/skills/grok-building-games/references/game-feel-juice.md +110 -0
  443. package/skills/grok-building-games/references/genres/board-card-chess.md +89 -0
  444. package/skills/grok-building-games/references/genres/endless-runner.md +83 -0
  445. package/skills/grok-building-games/references/genres/fps.md +105 -0
  446. package/skills/grok-building-games/references/genres/platformer-2d.md +97 -0
  447. package/skills/grok-building-games/references/genres/puzzle-match3-tetris.md +131 -0
  448. package/skills/grok-building-games/references/genres/racing-kart.md +106 -0
  449. package/skills/grok-building-games/references/genres/topdown-twin-stick.md +97 -0
  450. package/skills/grok-building-games/references/genres/tower-defense.md +84 -0
  451. package/skills/grok-building-games/references/genres/voxel-minecraft.md +89 -0
  452. package/skills/grok-building-games/references/input.md +139 -0
  453. package/skills/grok-building-games/references/phaser.md +277 -0
  454. package/skills/grok-building-games/references/procedural-generation.md +141 -0
  455. package/skills/grok-building-games/references/save-persistence.md +108 -0
  456. package/skills/grok-building-games/references/threejs-foundational.md +148 -0
  457. package/skills/grok-controls/SKILL.md +274 -0
  458. package/skills/grok-controls/agentsam.skill.json +25 -0
  459. package/skills/grok-design-ui/SKILL.md +122 -0
  460. package/skills/grok-design-ui/agentsam.skill.json +25 -0
  461. package/skills/grok-design-ui/references/animations.md +379 -0
  462. package/skills/grok-design-ui/references/performance.md +88 -0
  463. package/skills/grok-design-ui/references/refined-ui.md +384 -0
  464. package/skills/grok-design-ui/references/surfaces.md +247 -0
  465. package/skills/grok-design-ui/references/typography.md +123 -0
  466. package/skills/grok-game-animation-frames/SKILL.md +84 -0
  467. package/skills/grok-game-animation-frames/agentsam.skill.json +25 -0
  468. package/skills/grok-game-asset-core/SKILL.md +69 -0
  469. package/skills/grok-game-asset-core/agentsam.skill.json +25 -0
  470. package/skills/grok-game-character-consistency/SKILL.md +69 -0
  471. package/skills/grok-game-character-consistency/agentsam.skill.json +25 -0
  472. package/skills/grok-game-tilesets/SKILL.md +65 -0
  473. package/skills/grok-game-tilesets/agentsam.skill.json +25 -0
  474. package/skills/grok-game-ui-icons/SKILL.md +56 -0
  475. package/skills/grok-game-ui-icons/agentsam.skill.json +25 -0
  476. package/skills/grok-generate2dmap/LICENSE +21 -0
  477. package/skills/grok-generate2dmap/SKILL.md +120 -0
  478. package/skills/grok-generate2dmap/SOURCE.md +6 -0
  479. package/skills/grok-generate2dmap/agentsam.skill.json +25 -0
  480. package/skills/grok-generate2dmap/references/deliverables.md +101 -0
  481. package/skills/grok-generate2dmap/references/layered-map-contract.md +209 -0
  482. package/skills/grok-generate2dmap/references/map-strategies.md +341 -0
  483. package/skills/grok-generate2dmap/references/object-production-gate.md +24 -0
  484. package/skills/grok-generate2dmap/references/pipeline.md +149 -0
  485. package/skills/grok-generate2dmap/references/prop-pack-contract.md +174 -0
  486. package/skills/grok-generate2dmap/references/side-scroll-stages.md +29 -0
  487. package/skills/grok-generate2dmap/scripts/compose_layered_preview.py +157 -0
  488. package/skills/grok-generate2dmap/scripts/extract_prop_pack.py +369 -0
  489. package/skills/grok-generate2dsprite/LICENSE +21 -0
  490. package/skills/grok-generate2dsprite/SKILL.md +313 -0
  491. package/skills/grok-generate2dsprite/SOURCE.md +6 -0
  492. package/skills/grok-generate2dsprite/agentsam.skill.json +25 -0
  493. package/skills/grok-generate2dsprite/references/modes.md +124 -0
  494. package/skills/grok-generate2dsprite/references/prompt-rules.md +315 -0
  495. package/skills/grok-generate2dsprite/scripts/generate2dsprite.py +1031 -0
  496. package/skills/grok-generate2dsprite/scripts/make_layout_guide.py +109 -0
  497. package/skills/grok-imagine/SKILL.md +201 -0
  498. package/skills/grok-imagine/agentsam.skill.json +25 -0
  499. package/skills/grok-multiplayer-p2p/SKILL.md +111 -0
  500. package/skills/grok-multiplayer-p2p/agentsam.skill.json +25 -0
  501. package/skills/grok-multiplayer-p2p/references/react-binding.md +144 -0
  502. package/skills/grok-multiplayer-p2p/references/signaling-relay.md +269 -0
  503. package/skills/grok-neon/SKILL.md +157 -0
  504. package/skills/grok-neon/agentsam.skill.json +25 -0
  505. package/skills/grok-og/SKILL.md +102 -0
  506. package/skills/grok-og/agentsam.skill.json +25 -0
  507. package/skills/grok-og/references/brand-pass.md +53 -0
  508. package/skills/grok-og/references/custom-card.md +107 -0
  509. package/skills/grok-og/references/favicon-and-icons.md +48 -0
  510. package/skills/grok-og/references/og-type-contract.md +18 -0
  511. package/skills/grok-og/references/placeholder-card.md +21 -0
  512. package/skills/grok-og/references/x-banner.md +41 -0
  513. package/skills/grok-threejs/SKILL.md +67 -0
  514. package/skills/grok-threejs/agentsam.skill.json +25 -0
  515. package/skills/grok-threejs/references/llms-full.txt +2780 -0
  516. package/skills/grok-video2dsprite/LICENSE +21 -0
  517. package/skills/grok-video2dsprite/SKILL.md +236 -0
  518. package/skills/grok-video2dsprite/SOURCE.md +6 -0
  519. package/skills/grok-video2dsprite/agentsam.skill.json +25 -0
  520. package/skills/grok-video2dsprite/references/pipeline.md +90 -0
  521. package/skills/grok-video2dsprite/references/prompt-rules.md +63 -0
  522. package/skills/grok-video2dsprite/scripts/video2dsprite.py +490 -0
  523. package/skills/grok-xai-api/SKILL.md +152 -0
  524. package/skills/grok-xai-api/agentsam.skill.json +25 -0
  525. package/src/attachments/index.js +6 -0
  526. package/src/attachments/intake.js +235 -0
  527. package/src/capabilities/repository-snapshot.js +19 -2
  528. package/src/cli/command-catalog.js +53 -3
  529. package/src/cli/dispatch.js +1 -0
  530. package/src/cli.js +192 -26
  531. package/src/cloudflare/runtime-status.js +2 -1
  532. package/src/commands/account-auth.js +94 -8
  533. package/src/commands/app.js +307 -3
  534. package/src/commands/autorag.js +67 -13
  535. package/src/commands/billing.js +127 -0
  536. package/src/commands/brand.js +74 -60
  537. package/src/commands/cheat-sheet.js +179 -0
  538. package/src/commands/cloudflare-login.js +222 -0
  539. package/src/commands/cloudflare.js +453 -23
  540. package/src/commands/codebaseindex.js +51 -3
  541. package/src/commands/compute.js +4 -0
  542. package/src/commands/connections.js +11 -5
  543. package/src/commands/credentials.js +116 -0
  544. package/src/commands/gcloud-auth.js +427 -0
  545. package/src/commands/google-cloud.js +375 -0
  546. package/src/commands/identity-init.js +2 -2
  547. package/src/commands/knowledge.js +59 -2
  548. package/src/commands/machine-binary.js +103 -0
  549. package/src/commands/machine.js +137 -0
  550. package/src/commands/mcp.js +226 -33
  551. package/src/commands/ollama.js +3 -2
  552. package/src/commands/plugins.js +7 -2
  553. package/src/commands/product.js +36 -0
  554. package/src/commands/runtime-status.js +28 -9
  555. package/src/commands/runtime.js +313 -0
  556. package/src/commands/rust.js +24 -0
  557. package/src/commands/security.js +67 -4
  558. package/src/commands/setup.js +296 -0
  559. package/src/commands/shell.js +16 -3
  560. package/src/commands/start-local.js +2 -2
  561. package/src/commands/status.js +8 -1
  562. package/src/commands/terminal.js +171 -0
  563. package/src/commands/update.js +140 -0
  564. package/src/commands/whoami.js +329 -65
  565. package/src/features/resolve.js +2 -0
  566. package/src/index.js +4 -0
  567. package/src/indexing/ingest/inventory.js +254 -19
  568. package/src/indexing/ingest/materials.js +3 -9
  569. package/src/indexing/ingest/style-evidence.js +181 -0
  570. package/src/knowledge/engine.js +21 -2
  571. package/src/knowledge/runtime-discovery.js +127 -0
  572. package/src/knowledge/source.js +3 -3
  573. package/src/lib/account-session.js +11 -4
  574. package/src/lib/app-authority.js +172 -0
  575. package/src/lib/auth.js +94 -21
  576. package/src/lib/core-client.js +5 -6
  577. package/src/lib/credentials-audit.js +451 -0
  578. package/src/lib/deploy/health.js +24 -6
  579. package/src/lib/detect-context.js +7 -1
  580. package/src/lib/google-cloud-connection.js +270 -0
  581. package/src/lib/google-cloud-inventory.js +385 -0
  582. package/src/lib/google-desktop-oauth.js +372 -0
  583. package/src/lib/google-studio-brokered-oauth.js +158 -0
  584. package/src/lib/identity-scaffold.js +76 -18
  585. package/src/lib/init-options.js +192 -0
  586. package/src/lib/local-scaffold.js +48 -16
  587. package/src/lib/provider-command-remediation.js +308 -0
  588. package/src/lib/provider-credentials.js +8 -0
  589. package/src/lib/scaffold/index.js +8 -2
  590. package/src/lib/scaffold/mcp-server.js +43 -0
  591. package/src/lib/scaffold/templates/mcp-server/index.js +397 -0
  592. package/src/lib/scaffold/templates/mcp-server/presets.js +39 -0
  593. package/src/lib/scaffold/wizards/cms.js +93 -0
  594. package/src/lib/scaffold/wizards/mcp-server.js +61 -0
  595. package/src/lib/setup/contract.js +26 -0
  596. package/src/lib/setup/discover.js +116 -0
  597. package/src/lib/setup/execute.js +205 -0
  598. package/src/lib/setup/planner.js +134 -0
  599. package/src/lib/setup/recipes.js +235 -0
  600. package/src/lib/setup/runtime-persist.js +197 -0
  601. package/src/lib/setup/runtime.js +394 -0
  602. package/src/lib/slash-commands.js +2 -0
  603. package/src/lib/terminal/machine-identity.js +95 -0
  604. package/src/lib/terminal-local.js +164 -0
  605. package/src/lib/terminal-scopes.js +52 -0
  606. package/src/lib/whoami-capabilities.js +184 -0
  607. package/src/local-pty/server.js +34 -5
  608. package/src/mcp/authority.js +58 -108
  609. package/src/mcp/client-adapters.js +68 -144
  610. package/src/mcp/client.js +142 -122
  611. package/src/mcp/cloudflare-bundles.js +225 -0
  612. package/src/mcp/index.js +12 -0
  613. package/src/models/discovery.js +40 -22
  614. package/src/models/inventory-core.d.ts +105 -0
  615. package/src/models/inventory-core.js +54 -6
  616. package/src/plugins/cloudflare.js +1 -1
  617. package/src/providers/ollama-chat.js +2 -1
  618. package/src/sam/types.js +27 -2
  619. package/src/security/inventory.js +12 -2
  620. package/src/security/local-vault.js +2 -0
  621. package/src/security/logs.js +3 -0
  622. package/src/security/scan.js +1 -1
  623. package/src/ui/cli/help.js +41 -0
  624. package/test/account-session.test.mjs +3 -3
  625. package/test/app-authority-context.test.mjs +32 -0
  626. package/test/apps-scaffold-contract.test.mjs +3 -2
  627. package/test/cli/api-key-env-whoami.test.mjs +2 -2
  628. package/test/cli/catalog-authority.test.mjs +64 -0
  629. package/test/cli/codebaseindex-plan-ux.test.mjs +1 -1
  630. package/test/cli/machine-command.test.mjs +34 -0
  631. package/test/cli/mcp-client.test.mjs +21 -10
  632. package/test/cli/runtime-persist.test.mjs +56 -0
  633. package/test/cli/rust-command.test.mjs +21 -0
  634. package/test/credentials-audit.test.mjs +113 -0
  635. package/test/deploy-health-scan.test.mjs +29 -1
  636. package/test/fixtures/project-authority/customer-app/.agentsam/app.json +5 -0
  637. package/test/fixtures/project-authority/customer-app/apps/my-product/index.ts +1 -0
  638. package/test/fixtures/project-authority/customer-app/wrangler.toml +17 -0
  639. package/test/gcloud-auth.test.mjs +111 -0
  640. package/test/google-cloud-connection.test.mjs +83 -0
  641. package/test/google-cloud-inventory.test.mjs +64 -0
  642. package/test/init-options.test.mjs +35 -0
  643. package/test/integration/app-command.test.mjs +30 -0
  644. package/test/integration/autorag-project-authority.integration.test.mjs +51 -0
  645. package/test/integration/autorag-runtime-discovery.test.mjs +107 -0
  646. package/test/integration/cad-project.test.mjs +4 -1
  647. package/test/integration/cms-app-scaffold.test.mjs +77 -0
  648. package/test/integration/cms-site-tenancy-contract.test.mjs +31 -19
  649. package/test/integration/codebaseindex-ingest.test.mjs +89 -0
  650. package/test/integration/database-hosted-honesty.test.mjs +49 -0
  651. package/test/integration/desktop-keychain-boundary.test.mjs +45 -0
  652. package/test/integration/features-resolve.test.mjs +30 -11
  653. package/test/integration/hosted-work-host-authority.test.mjs +47 -0
  654. package/test/integration/inspect-path-cli.test.mjs +46 -0
  655. package/test/integration/inventory-eligibility.test.mjs +59 -0
  656. package/test/integration/inventory-evidence.test.mjs +125 -0
  657. package/test/integration/local-provider-bridge.test.mjs +65 -0
  658. package/test/integration/local-studio-settings-production.test.mjs +40 -0
  659. package/test/integration/lockfile-sync.test.mjs +26 -0
  660. package/test/integration/provider-env-cli.test.mjs +13 -3
  661. package/test/integration/runtime-status.integration.test.mjs +17 -1
  662. package/test/integration/theme-package-registry.test.mjs +31 -0
  663. package/test/knowledge.test.mjs +35 -1
  664. package/test/loopback-oauth.test.mjs +53 -0
  665. package/test/ollama.test.mjs +22 -0
  666. package/test/repository-snapshot-view.test.mjs +2 -2
  667. package/test/security.test.mjs +37 -0
  668. package/test/setup-planner.test.mjs +74 -0
  669. package/test/setup-runtime.test.mjs +51 -0
  670. package/test/terminal/local-pty.mock.test.mjs +3 -1
  671. package/test/terminal-machine-identity.test.mjs +88 -0
  672. package/test/whoami-resume.test.mjs +27 -6
  673. package/packages/agentsam-brand/test/brand-scan.test.mjs +0 -106
  674. package/packages/agentsam-nav/dist/Nav.d.ts +0 -43
  675. package/packages/agentsam-nav/dist/NavCollapsible.d.ts +0 -10
  676. package/packages/agentsam-nav/dist/NavContent.d.ts +0 -2
  677. package/packages/agentsam-nav/dist/NavFooter.d.ts +0 -2
  678. package/packages/agentsam-nav/dist/NavGroup.d.ts +0 -3
  679. package/packages/agentsam-nav/dist/NavHeader.d.ts +0 -2
  680. package/packages/agentsam-nav/dist/NavMenu.d.ts +0 -22
  681. package/packages/agentsam-nav/dist/NavProvider.d.ts +0 -35
  682. package/packages/agentsam-nav/dist/NavTrigger.d.ts +0 -2
  683. package/packages/agentsam-nav/dist/Surfaces.d.ts +0 -41
  684. package/packages/agentsam-nav/dist/browser.d.ts +0 -11
  685. package/packages/agentsam-nav/dist/browser.global.js +0 -132
  686. package/packages/agentsam-nav/dist/browser.js +0 -613
  687. package/packages/agentsam-nav/dist/contracts.d.ts +0 -76
  688. package/packages/agentsam-nav/dist/index.d.ts +0 -11
  689. package/packages/agentsam-nav/dist/index.js +0 -614
  690. package/packages/agentsam-nav/dist/legacy.css +0 -83
  691. package/packages/agentsam-nav/dist/shell.css +0 -113
  692. package/packages/agentsam-nav/dist/theme.css +0 -113
  693. package/packages/agentsam-nav/dist/utils.d.ts +0 -1
  694. package/packages/agentsam-repository/src/goap.js.bak-20260922011251 +0 -670
  695. package/packages/work-graph/prototype/README.md +0 -32
  696. package/packages/work-graph/prototype/data/demo-workgraph.js +0 -47
  697. package/packages/work-graph/prototype/renderers/timeline-model.js +0 -21
  698. package/packages/work-graph/prototype/renderers/workgraph-runtime.js +0 -38
  699. package/packages/work-graph/prototype-gnantt.html +0 -655
package/AGENTSAM.md CHANGED
@@ -8,6 +8,35 @@ conventional client variable for that machinery, never a human identity. Prefer
8
8
  “AgentSam executes through SAM…” over anthropomorphic phrasing. Architecture SSOT:
9
9
  `docs/architecture/SAM_KERNEL.md`.
10
10
 
11
+ ## AgentSam system model: deterministic machinery + LLM augmentation
12
+
13
+ AgentSam is deliberately **not** “an LLM with tools.” It is a layered system:
14
+
15
+ - **Old-school AgentSam / SAM** owns deterministic perception and execution: repository discovery, manifests, Git/Merkle evidence, AST/indexes, capability probes, provider/runtime discovery, schemas/migrations, routing constraints, typed operations, receipts, and verification.
16
+ - **LLM AgentSam** augments that machinery where language-model reasoning is valuable: interpreting intent, resolving ambiguity, planning across valid options, composing/translating content or code, explaining evidence, and proposing transformations.
17
+ - Deterministic evidence is authoritative when it can answer a question reliably. Do not ask an LLM to rediscover or guess facts that SAM can inspect, derive, or prove.
18
+ - LLM output never overrides authorization, runtime capability evidence, manifests, migrations, provider state, product contracts, or verification receipts.
19
+ - Core product workflows should remain inspectable and recoverable without hidden model reasoning. Emit typed/versioned receipts and explicit state transitions instead of treating a transcript as system state.
20
+ - A model may recommend an action; trusted machinery decides whether the action is available, authorized, correctly scoped, and verifiably complete.
21
+
22
+ This division is a product requirement: **LLMs supercharge AgentSam; they do not become the source of truth that holds AgentSam together.**
23
+
24
+ ## Portability, resale, and repurposability law
25
+
26
+ AgentSam machinery is only reusable when an unrelated user can install or instantiate it without inheriting the operator's machine, identity, credentials, infrastructure, or monorepo.
27
+
28
+ - A reusable package, app, template, or pipeline must not require Sam/operator-specific usernames, device names, absolute paths, domains, account IDs, database IDs, repository names, credentials, customer content, or private infrastructure assumptions.
29
+ - Customer differences belong primarily in manifests, portable schema/data, company/brand rows, themes, provider grants, capability configuration, and content — **not source-code forks**.
30
+ - Product apps under `apps/` are independently extractable. Advertised CLI/app capabilities must work from the published/packed artifact outside this monorepo; repo-local `file:` escape dependencies are not a valid release mechanism.
31
+ - If the SDK advertises a datastore, provider, runtime, or backend as supported, the corresponding contract and implementation must ship together. Do not mark placeholders or “follow-up” adapters as supported production paths.
32
+ - Generic packages stay generic. Product/customer seeds, deployment bindings, brand values, and app-specific migrations belong with the consuming app or installation.
33
+ - Authorization and resource visibility are always principal/installation scoped. **No authorized resource must never fall back to a platform-owner resource.**
34
+ - Product readiness is proven, not asserted. Use current manifests, machine inspection, clean-room packaging/install tests, migrations, doctors, and receipts. If a product cannot pass its declared contract, mark it non-graduated/unavailable rather than advertising readiness.
35
+ - Extend existing authorities and adapters instead of creating parallel copies of Identity, Database Studio, Settings, themes, registries, or runtime state.
36
+
37
+ Product graduation and resale enforcement are defined in
38
+ [`docs/PRODUCT_LIFECYCLE.md`](docs/PRODUCT_LIFECYCLE.md).
39
+
11
40
  ## Execution
12
41
 
13
42
  - Infer routine implementation details when repository evidence makes the answer clear; do not block on unnecessary questions.
@@ -76,6 +105,17 @@ conventional client variable for that machinery, never a human identity. Prefer
76
105
  See [Storage architecture](docs/architecture/STORAGE.md) for enforcement and
77
106
  the current compatibility boundary.
78
107
 
108
+ ## Application contract (APP identity)
109
+
110
+ Portable product apps follow [`docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md`](docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md).
111
+
112
+ - **APP** = installable product (`agentsam.app.json`, immutable kebab-case `APP.id`).
113
+ - **Not** an APP merely because it is under `apps/`, deployable, or an npm package.
114
+ - Runtime identity: `import APP from "./agentsam.app.json"` — never `const APP = "agentsam-…"`.
115
+ - `.agentsam/app.json` is host/install state (`app_id`), not a second product definition.
116
+ - Package, Worker, route, desktop, and service names are separate namespaces with explicit pointers.
117
+ - Gate: `agentsam app validate` / `npm run guard:apps`.
118
+
79
119
  ## Model and run policy
80
120
 
81
121
  - Model, reasoning effort, service tier, budget, and permissions are runtime configuration, not hidden prompt instructions.
package/README.md CHANGED
@@ -76,19 +76,24 @@ Without a global install, use `npx @inneranimalmedia/agentsam-sdk create my-agen
76
76
 
77
77
  ## MCP setup
78
78
 
79
- Cloudflare's API MCP server uses `https://mcp.cloudflare.com/mcp`. Add that URL
80
- to the agent client you use, then complete its Cloudflare OAuth flow. For Codex:
79
+ Register MCP servers into `~/.agentsam/mcp/` and sync IDE adapters:
81
80
 
82
81
  ```sh
83
- codex mcp add cloudflare-api --url https://mcp.cloudflare.com/mcp
84
- codex mcp login cloudflare-api
82
+ agentsam mcp add inneranimalmedia --client cursor
83
+ agentsam mcp add cloudflare-api --client cursor
84
+ agentsam mcp list --bundles # Cloudflare portal bundles + pack scopes
85
+ agentsam mcp scopes cloudflare-bindings
86
+ agentsam mcp doctor cloudflare-api
85
87
  ```
86
88
 
87
- `agentsam mcp add cloudflare-api --url https://mcp.cloudflare.com/mcp` is not
88
- currently an AgentSam CLI command. The repo's `.agentsam/config.json` is a
89
- portable project manifest, not an MCP client configuration; it cannot register
90
- this server for every agent tool on clone. Keep OAuth tokens in each client's
91
- credential store rather than committing them to the repository.
89
+ Cloudflare MCP portals (bindings, builds, browser, …) are **server bundles**, not
90
+ OAuth clients. AgentSam Cloudflare OAuth stays pack-scoped (`agentsam` pack includes
91
+ `mcp-portals.read` / `mcp-portals.write`). Never request the full ~315-scope catalog
92
+ at connect time — upgrade with `agentsam cloudflare permissions authorize --packs …`.
93
+
94
+ Portal-hosted OAuth (Cloudflare’s own consent on `*.mcp.cloudflare.com`) is separate
95
+ from AgentSam’s CF connection token. Keep tokens in each client’s credential store;
96
+ do not commit them.
92
97
 
93
98
  ## Index an existing repository
94
99
 
@@ -126,6 +131,7 @@ read-only `repository.snapshot` composition primitive. See [Capabilities and pre
126
131
  | File integrity | `agentsam merkle`; `/merkle` | [Merkle](docs/MERKLE.md) |
127
132
  | Security, trust-boundary scan, and repair | `agentsam security`; `/security` | [Security](docs/SECURITY.md) |
128
133
  | Mini prototypes | `agentsam mini`; `/mini` | [Mini](docs/MINI.md) |
134
+ | Machine Intelligence (MINI/APP/WORLD ladder) | world-state / maturity (in progress) | [Machine Intelligence](docs/MACHINE_INTELLIGENCE.md) · [Tomorrow briefing](docs/plans/TOMORROW-MACHINE-FIRST-BRIEFING.md) |
129
135
  | Recon bounded-worker packets | `agentsam recon pack\|validate` | [Recon](docs/RECON.md) |
130
136
  | Local containers | `agentsam dockerize`; `/dockerize` | [Dockerize](docs/DOCKERIZE.md) |
131
137
  | Background indexing service | Docker `knowledge_service`; `/knowledge-service-client` | [Knowledge service](docs/knowledge-service.md) |
package/apps/README.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  `apps/` is the development/authoring source of truth for runnable AgentSam product surfaces. Product apps are independently extractable and are intentionally **not** members of the SDK root npm workspace graph.
4
4
 
5
+ **Lifecycle SSOT (validate → machine → prove → graduate → install):** [`docs/PRODUCT_LIFECYCLE.md`](../docs/PRODUCT_LIFECYCLE.md).
6
+ Use that doc for product map, graduation gates, scaffold vocabulary, old-school SAM + LLM layering, and how Identity/Desktop/Database lanes must stay extractable for resale.
7
+
8
+ **Global agent/runtime law:** [`AGENTSAM.md`](../AGENTSAM.md). Product apps may specialize behavior through app-owned manifests/data, but they must not weaken the portability, principal-isolation, deterministic-evidence, or receipt-backed completion rules.
9
+
5
10
  ## Product app law
6
11
 
7
12
  Every deployable product app follows the same ownership boundary:
@@ -462,7 +462,7 @@ If you want, I can also **put this directly into `SamPrimeaux/AgentSamCadCreatio
462
462
  CAD Creator is packaged independently from the core SDK as:
463
463
 
464
464
  ```text
465
- @inneranimalmedia/agentsam-sdk-cad-creator
465
+ @inneranimalmedia/agentsam-cad-creator
466
466
  ```
467
467
 
468
468
  The package deliberately contains both:
@@ -477,13 +477,13 @@ It deliberately does **not** publish `reference/`, donor ZIPs/snapshots, `node_m
477
477
  Once published:
478
478
 
479
479
  ```bash
480
- npx @inneranimalmedia/agentsam-sdk-cad-creator
480
+ npx @inneranimalmedia/agentsam-cad-creator
481
481
  ```
482
482
 
483
483
  or after installing it:
484
484
 
485
485
  ```bash
486
- npm install @inneranimalmedia/agentsam-sdk-cad-creator
486
+ npm install @inneranimalmedia/agentsam-cad-creator
487
487
  npx agentsam-cad-creator --port 3000
488
488
  ```
489
489
 
@@ -500,7 +500,7 @@ The normal Design Studio shell loads first. The MuJoCo/robotics workspace remain
500
500
  ### Materialize an editable project
501
501
 
502
502
  ```bash
503
- npx @inneranimalmedia/agentsam-sdk-cad-creator scaffold ./my-cad-app
503
+ npx @inneranimalmedia/agentsam-cad-creator scaffold ./my-cad-app
504
504
  cd ./my-cad-app
505
505
  npm install
506
506
  npm run dev
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inneranimalmedia/agentsam-cad-shared",
3
- "version": "0.0.0",
3
+ "version": "2.6.7",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "exports": {
@@ -0,0 +1,17 @@
1
+ # Client CMS Editor workspace law
2
+
3
+ - Product authority is the installable npm package `@inneranimalmedia/client-cms-editor`, not registry rows and not host-app vite aliases.
4
+ - Donor behavioral authority: `studio-cms-editor` + `reference/harvest/plans/CMS-EDITOR-HARVEST.md`. Encode requirements in `acceptance/cms-parity.v1.json`.
5
+ - This app is an independent workspace root. Keep one active lockfile at `apps/client-cms-editor/package-lock.json`.
6
+ - Do not add its frontend/backend/shared packages to the SDK root workspace list.
7
+ - Do not import from sibling host apps for runtime authority.
8
+ - `shared/cms` owns pure CMS editor/publication/adapter/config contracts only; no React and no vendor runtime SDKs.
9
+ - Persistence adapters implement `CmsEditorAdapter` (`shared/cms/src/adapter.ts`). Never treat localStorage as an authority or scaffold persistence choice.
10
+ - `backend/` is a portable host bridge. Consumer `/api/cms/*` routes are one implementation of the adapter contract — not the product architecture.
11
+ - Do not invent product resources (Worker binding labels, fixed account/database IDs, or deployment hostnames) inside this package.
12
+ - Public CMS runtime must remain smaller than the authoring app. Do not ship Monaco, terminal, browser automation, auth-admin, or a full agent workbench to anonymous visitors.
13
+ - Session caches and containers are never auth/identity authority.
14
+ - CMS agent context must be explicit. Never scrape editor/site state silently.
15
+ - Prefer structured/versioned section data for publication. Arbitrary executable editor HTML is not a public-content authority.
16
+ - Heuristic is a stock starter pack (`starter-packs/heuristic`), not fake demo mode. Fake write short-circuits are forbidden.
17
+ - Before calling a release good: `npm run verify:cms` must pass, then a fresh empty-folder install of the packed/published tarball must boot the editor.
@@ -0,0 +1,8 @@
1
+ {
2
+ "source_repository": "SamPrimeaux/inneranimalmedia",
3
+ "source_path": "packages/client-cms-editor",
4
+ "source_commit": "5957af19dfb67e1551d0174b72141dd65acc4972",
5
+ "source_ref": "origin/main",
6
+ "imported_as": "apps/client-cms-editor",
7
+ "note": "Imported as real files, then normalized into an independent npm workspace root. Canonical platform CMS server/domain code remains in inneranimalmedia src/core/agentsam/cms until a dedicated agentsam-cms package extraction."
8
+ }
@@ -0,0 +1,100 @@
1
+ # AgentSam Client CMS
2
+
3
+ Reusable, white-label **website + CMS application kit** published as `@inneranimalmedia/client-cms-editor`.
4
+
5
+ A developer can scaffold a customer website, run it completely locally, browse the public pages and CMS, customize or import a theme, edit and publish through real local persistence, then connect identity/cloud/deployment providers without replacing the CMS or content model.
6
+
7
+ **Authority order:** donor behavior → this npm package → adapters under the UX → registry receipts last.
8
+ See [`ALPHA.md`](./ALPHA.md) and [`acceptance/cms-parity.v1.json`](./acceptance/cms-parity.v1.json).
9
+
10
+ ```text
11
+ scaffold
12
+ ↓
13
+ customer project
14
+ ├── public multi-page site (header / pages / footer)
15
+ └── protected CMS (pages · sections · blocks · media · theme · draft/preview/publish)
16
+ ↓
17
+ same CmsEditorAdapter authority
18
+ ```
19
+
20
+ ## First-run (local before cloud)
21
+
22
+ ```bash
23
+ npx agentsam-cms create my-site --starter heuristic # or blank | import --theme ./old-theme.zip
24
+ cd my-site
25
+ npx agentsam-cms dev
26
+ ```
27
+
28
+ Then browse:
29
+
30
+ | URL | Surface |
31
+ |-----|---------|
32
+ | `http://localhost:4317/` | Published public home |
33
+ | `http://localhost:4317/about` | Published interior page |
34
+ | `http://localhost:4317/cms` | Protected CMS (local-dev principal by default) |
35
+
36
+ No GitHub / Cloudflare / Supabase account is required to inspect or use the local product.
37
+
38
+ ### Starters
39
+
40
+ | Starter | Meaning |
41
+ |---------|---------|
42
+ | **Heuristic** | Built-in multipage starter pack |
43
+ | **Blank** | Empty durable site shell |
44
+ | **IASF** | Stock Inner Animal Storefront (`--starter iasf`) |
45
+ | **Import existing theme** | Directory or `.zip` → safe intake → ThemePack → `installStarterPack` |
46
+
47
+ Imported themes are normalized into the **same** `CmsStarterPack` contract Heuristic uses. The editor never parses ZIP/Liquid itself — import/refinery tooling does.
48
+
49
+ ## Architecture
50
+
51
+ ```text
52
+ CmsEditor / public renderer
53
+ ↓
54
+ CmsEditorAdapter
55
+
56
+ LOCAL → ./sqlite-adapter (Node / node:sqlite)
57
+ CLOUD → D1 + R2 adapter
58
+ OTHER → HTTP / custom
59
+ ```
60
+
61
+ - Browser CMS UI does **not** import `node:sqlite`.
62
+ - `./sqlite-adapter`, `./import`, and `./local` are Node/local-runtime surfaces.
63
+ - Root package `engines` stay cross-runtime (`node >= 20`); only `./sqlite-adapter` documents the `node:sqlite` requirement.
64
+
65
+ ## Auth boundary
66
+
67
+ `/cms` is protected through a portable `CmsAuthHost` contract. Local scaffolds use an explicit local-development principal. Stock sign-in options for OAuth / CMS prebuild:
68
+
69
+ - **Cloudflare** — `createStockCmsAuthHost('cloudflare')`
70
+ - **Google** — `createStockCmsAuthHost('google')`
71
+ - **Inner Animal Media** — `createStockCmsAuthHost('inneranimalmedia')`
72
+ - **ChatGPT** — `createStockCmsAuthHost('chatgpt')` (Apps SDK hosted headers)
73
+
74
+ Consumers wire OAuth/OIDC/their identity service without rebuilding route protection.
75
+
76
+ ## Persistence
77
+
78
+ | Adapter | Role |
79
+ |---------|------|
80
+ | SQLite | desktop/offline authority via `./sqlite-adapter` |
81
+ | D1 + R2 | cloud authority from **proven** OAuth resources |
82
+ | HTTP / custom | consumer backend |
83
+ | localStorage | UI chrome cache only — never scaffolded as authority |
84
+
85
+ ## Development / gates
86
+
87
+ ```bash
88
+ cd apps/client-cms-editor
89
+ npm ci
90
+ npm run build
91
+ npm run verify:cms
92
+ # package + memory + sqlite durability + theme import + browser isolation + pack/bin
93
+ ```
94
+
95
+ Release (`private:false` required):
96
+
97
+ ```bash
98
+ npm run verify:cms-release
99
+ npm publish --tag alpha --access public
100
+ ```
@@ -0,0 +1,74 @@
1
+ {
2
+ "schema": "agentsam.app.v1",
3
+ "id": "client-cms-editor",
4
+ "product_id": "cms",
5
+ "name": "AgentSam Website + CMS Kit",
6
+ "kind": "app",
7
+ "package": "@inneranimalmedia/client-cms-editor",
8
+ "version": "0.1.0-alpha.0",
9
+ "description": "Reusable white-label website + CMS kit: multipage public site, protected authoring dashboard, local SQLite, Heuristic/Blank/Import Theme starters, pluggable auth and deployment adapters.",
10
+ "entrypoints": {
11
+ "frontend": "./frontend",
12
+ "backend": "./backend",
13
+ "cli": "./bin/agentsam-cms.js",
14
+ "public_renderer": "./local/public-renderer.ts",
15
+ "import_refinery": "./import/index.ts"
16
+ },
17
+ "capabilities": [
18
+ "cms",
19
+ "media",
20
+ "templates",
21
+ "admin_content",
22
+ "theme_import",
23
+ "local_storefront",
24
+ "auth_boundary"
25
+ ],
26
+ "provides": [
27
+ "cms.editor",
28
+ "cms.public_renderer",
29
+ "cms.templates",
30
+ "cms.media.library",
31
+ "cms.theme_import",
32
+ "workspace.panel"
33
+ ],
34
+ "surfaces": [
35
+ "public-site",
36
+ "store",
37
+ "theme-editor",
38
+ "cms-editor",
39
+ "templates",
40
+ "media-library",
41
+ "agentsam"
42
+ ],
43
+ "starters": [
44
+ "heuristic",
45
+ "blank",
46
+ "import-existing-theme"
47
+ ],
48
+ "runtime": {
49
+ "local_preview": "ready",
50
+ "source_scaffold": "ready",
51
+ "local_sqlite": "ready",
52
+ "theme_import": "ready",
53
+ "cloudflare": "adapter-ready",
54
+ "github": "source-ready",
55
+ "browser": true,
56
+ "local": true
57
+ },
58
+ "commands": {
59
+ "create": "agentsam-cms create <directory> --starter heuristic|blank|import",
60
+ "dev": "agentsam-cms dev",
61
+ "import_theme": "agentsam-cms import-theme <source> --out <dir>",
62
+ "doctor": "agentsam-cms doctor",
63
+ "info": "agentsam-cms info"
64
+ },
65
+ "bin": "bin/agentsam-cms.js",
66
+ "install": {
67
+ "command": "agentsam-cms create",
68
+ "selector": "client-cms-editor",
69
+ "paths": [
70
+ "/install/cms",
71
+ "/install/client-cms-editor"
72
+ ]
73
+ }
74
+ }
@@ -0,0 +1,5 @@
1
+ # CMS backend bridge
2
+
3
+ This workspace package is the portable CMS client/backend boundary: HTTP API calls, model mapping, routing, preview messages and storefront URL helpers. It does not own the platform CMS server implementation or identity authority.
4
+
5
+ The current platform implementation remains `inneranimalmedia/src/core/agentsam/cms/` until it is extracted into reusable `agentsam-cms-*` packages.
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@inneranimalmedia/agentsam-cms-backend",
3
+ "version": "2.6.7",
4
+ "description": "Internal CMS backend bridge (bundled into @inneranimalmedia/client-cms-editor \u2014 not published separately).",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": "./src/index.ts",
8
+ "./api": "./src/api/client.ts",
9
+ "./model": "./src/model.ts",
10
+ "./preview": "./src/preview/bridge.ts",
11
+ "./routing": "./src/routing/index.js"
12
+ },
13
+ "scripts": {
14
+ "typecheck": "tsc --noEmit -p tsconfig.json"
15
+ },
16
+ "dependencies": {
17
+ "@inneranimalmedia/agentsam-cms-shared": "2.6.7"
18
+ },
19
+ "devDependencies": {
20
+ "typescript": "^5.9.3"
21
+ },
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/SamPrimeaux/agentsam-sdk.git",
28
+ "directory": "apps/client-cms-editor/backend"
29
+ },
30
+ "files": [
31
+ "src"
32
+ ],
33
+ "agentsam": {
34
+ "releaseIgnore": [
35
+ "worker",
36
+ "wrangler.jsonc"
37
+ ]
38
+ }
39
+ }
@@ -0,0 +1,233 @@
1
+ /**
2
+ * HTTP CMS API client — real fetch only.
3
+ * Never fabricates success, never falls back to demo fixtures on localhost.
4
+ */
5
+ import { mapCmsEditorBlock, mapCmsEditorBootstrap, mapCmsEditorPage, mapCmsEditorSection } from '../../../shared/cms/src/map';
6
+ import type { CmsEditorBlock, CmsEditorPage, CmsEditorSection } from '../../../shared/cms/src/editor-types';
7
+
8
+ type Json = Record<string, any>;
9
+ type ApiInit = Omit<RequestInit, 'body'> & { body?: any };
10
+
11
+ async function api<T extends Json = Json>(path: string, init: ApiInit = {}): Promise<T> {
12
+ const headers = new Headers(init.headers);
13
+ let body = init.body;
14
+ if (body != null && !(body instanceof FormData) && typeof body !== 'string') {
15
+ headers.set('Content-Type', 'application/json');
16
+ body = JSON.stringify(body);
17
+ }
18
+ const response = await fetch(path, { ...init, body, headers, credentials: 'include', cache: 'no-store' });
19
+ const payload = await response.json().catch(() => ({}));
20
+ if (!response.ok) {
21
+ const message = payload?.message || payload?.error || response.statusText || 'Request failed';
22
+ throw Object.assign(new Error(String(message)), { status: response.status, payload });
23
+ }
24
+ return payload as T;
25
+ }
26
+
27
+ export async function getCmsEditorBootstrap(projectSlug: string, focusPageId?: string | null) {
28
+ if (!String(projectSlug || '').trim()) {
29
+ throw new Error('project_slug_required');
30
+ }
31
+ const params = new URLSearchParams({ project_slug: projectSlug, site: projectSlug });
32
+ if (focusPageId) params.set('page_id', focusPageId);
33
+ return mapCmsEditorBootstrap(await api<Json>(`/api/cms/bootstrap?${params}`), projectSlug);
34
+ }
35
+
36
+ export async function getCmsEditorPagePreview(pageId: string, mode: 'draft' | 'published' = 'draft') {
37
+ return api<Json>(`/api/cms/pages/${encodeURIComponent(pageId)}?preview=${encodeURIComponent(mode)}`);
38
+ }
39
+
40
+ export const saveCmsEditorSection = (sectionId: string, fields: Record<string, any>, css?: Record<string, any>) =>
41
+ api(`/api/cms/sections/${encodeURIComponent(sectionId)}`, {
42
+ method: 'PUT',
43
+ body: { section_data: { ...fields, ...(css && Object.keys(css).length ? { css_override: css } : {}) } },
44
+ });
45
+
46
+ export const renameCmsEditorSection = (sectionId: string, sectionName: string) =>
47
+ api(`/api/cms/sections/${encodeURIComponent(sectionId)}`, { method: 'PUT', body: { section_name: sectionName } });
48
+
49
+ export const reorderCmsEditorSections = (pageId: string, sections: CmsEditorSection[]) =>
50
+ api('/api/cms/sections/reorder', {
51
+ method: 'POST',
52
+ body: { page_id: pageId, order: sections.map((section, index) => ({ id: section.id, sort_order: (index + 1) * 10 })) },
53
+ });
54
+
55
+ export const setCmsEditorSectionVisibility = (sectionId: string, visible: boolean) =>
56
+ api(`/api/cms/sections/${encodeURIComponent(sectionId)}/visibility`, {
57
+ method: 'POST',
58
+ body: { is_visible: visible ? 1 : 0 },
59
+ });
60
+
61
+ export async function createCmsEditorSection(pageId: string, name: string, fields: Record<string, any>, sortOrder: number) {
62
+ const result = await api<Json>('/api/cms/sections', {
63
+ method: 'POST',
64
+ body: {
65
+ page_id: pageId,
66
+ section_type: name.toLowerCase().replace(/\s+/g, '-'),
67
+ section_name: name,
68
+ section_data: fields,
69
+ sort_order: sortOrder,
70
+ },
71
+ });
72
+ return mapCmsEditorSection(result.section || { id: result.id, section_name: name, section_type: name, section_data: fields, is_visible: 1 });
73
+ }
74
+
75
+ export async function deleteCmsEditorSection(sectionId: string) {
76
+ return api(`/api/cms/sections/${encodeURIComponent(sectionId)}`, { method: 'DELETE' });
77
+ }
78
+
79
+ export async function listCmsEditorBlocks(sectionId: string) {
80
+ const result = await api<Json>(`/api/cms/blocks?section_id=${encodeURIComponent(sectionId)}`);
81
+ return (result.blocks || result.components || []).map((row: Json) => mapCmsEditorBlock(row, sectionId));
82
+ }
83
+
84
+ export async function createCmsEditorBlock(sectionId: string, type: string, data: Record<string, any>, sortOrder = 10) {
85
+ const blockType = String(type || 'text').trim() || 'text';
86
+ const result = await api<Json>('/api/cms/blocks', {
87
+ method: 'POST',
88
+ body: {
89
+ section_id: sectionId,
90
+ type: blockType,
91
+ block_type: blockType,
92
+ component_type: blockType,
93
+ data,
94
+ sort_order: sortOrder,
95
+ },
96
+ });
97
+ return mapCmsEditorBlock(result.block || result.component || { id: result.id, section_id: sectionId, type: blockType, data }, sectionId);
98
+ }
99
+
100
+ export const saveCmsEditorBlock = (block: CmsEditorBlock) =>
101
+ api(`/api/cms/blocks/${encodeURIComponent(block.id)}`, {
102
+ method: 'PUT',
103
+ body: { block_data: block.data, block_type: block.type, type: block.type, component_type: block.type },
104
+ });
105
+
106
+ export const setCmsEditorBlockVisibility = (blockId: string, visible: boolean) =>
107
+ api(`/api/cms/blocks/${encodeURIComponent(blockId)}/visibility`, {
108
+ method: 'POST',
109
+ body: { is_visible: visible ? 1 : 0 },
110
+ });
111
+
112
+ export const reorderCmsEditorBlocks = (blocks: CmsEditorBlock[]) =>
113
+ api('/api/cms/blocks/reorder', {
114
+ method: 'POST',
115
+ body: { order: blocks.map((block, index) => ({ id: block.id, sort_order: (index + 1) * 10 })) },
116
+ });
117
+
118
+ export async function deleteCmsEditorBlock(blockId: string) {
119
+ return api(`/api/cms/blocks/${encodeURIComponent(blockId)}`, { method: 'DELETE' });
120
+ }
121
+
122
+ export async function createCmsEditorPage(projectSlug: string, input: { title: string; slug: string; type: string }) {
123
+ const slug = input.slug.replace(/^\/+/, '') || 'untitled';
124
+ const result = await api<Json>('/api/cms/pages', {
125
+ method: 'POST',
126
+ body: {
127
+ project_id: projectSlug,
128
+ title: input.title || 'Untitled',
129
+ slug,
130
+ route_path: `/${slug}`,
131
+ page_type: input.type,
132
+ status: 'draft',
133
+ content: '',
134
+ },
135
+ });
136
+ return mapCmsEditorPage({
137
+ ...result,
138
+ id: result.id,
139
+ title: input.title,
140
+ slug,
141
+ route_path: result.route_path || `/${slug}`,
142
+ page_type: input.type,
143
+ status: 'draft',
144
+ });
145
+ }
146
+
147
+ export async function deleteCmsEditorPage(pageId: string) {
148
+ return api(`/api/cms/pages/${encodeURIComponent(pageId)}`, { method: 'DELETE' });
149
+ }
150
+
151
+ export const saveCmsEditorPageMeta = (page: CmsEditorPage) => {
152
+ const route = page.slug.startsWith('/') ? page.slug : `/${String(page.slug || '').replace(/^\/+/, '')}`;
153
+ const normalizedRoute = route.length > 1 ? route.replace(/\/+$/, '') : route || '/';
154
+ const slug = normalizedRoute === '/' ? 'home' : normalizedRoute.replace(/^\/+/, '') || 'untitled';
155
+ return api(`/api/cms/pages/${encodeURIComponent(page.id)}`, {
156
+ method: 'PUT',
157
+ body: {
158
+ title: page.title,
159
+ route_path: normalizedRoute,
160
+ slug,
161
+ page_type: page.type,
162
+ seo_title: page.metaTitle,
163
+ meta_description: page.metaDescription,
164
+ },
165
+ });
166
+ };
167
+
168
+ export const publishCmsEditorPage = (pageId: string) =>
169
+ api(`/api/cms/pages/${encodeURIComponent(pageId)}/publish`, { method: 'POST', body: {} });
170
+
171
+ export const saveCmsEditorThemeVars = (projectSlug: string, vars: Record<string, string>) =>
172
+ api('/api/cms/theme-vars', { method: 'PATCH', body: { project_slug: projectSlug, vars } });
173
+
174
+ export async function getCmsEditorAssets() {
175
+ const result = await api<Json>('/api/cms/assets');
176
+ return (result.assets || []).map((asset: Json, index: number) => ({
177
+ id: asset.id || index,
178
+ name: asset.original_filename || asset.filename || asset.label || 'Asset',
179
+ type: String(asset.mime_type || '').startsWith('video/')
180
+ ? 'Video'
181
+ : String(asset.mime_type || '').includes('font')
182
+ ? 'Font'
183
+ : String(asset.mime_type || '').includes('pdf')
184
+ ? 'Document'
185
+ : 'Image',
186
+ size: asset.content_size_bytes ? `${(Number(asset.content_size_bytes) / 1e6).toFixed(1)} MB` : '—',
187
+ color: ['#5346db', '#d2e9df', '#ebc59d', '#25302b', '#705cf0', '#e6e0d3'][index % 6],
188
+ previewUrl: asset.thumbnail_url || asset.cdn_url || asset.public_url || null,
189
+ }));
190
+ }
191
+
192
+ export async function getCmsEditorTemplates() {
193
+ const result = await api<Json>('/api/cms/templates');
194
+ return (result.templates || [])
195
+ .map((row: Json) => ({
196
+ id: String(row.id || ''),
197
+ name: String(row.template_name || row.iam_label || row.slug || 'Template'),
198
+ type: String(row.template_type || 'section'),
199
+ category: String(row.category || 'General'),
200
+ slug: row.slug ? String(row.slug) : null,
201
+ previewImageUrl: row.preview_image_url ? String(row.preview_image_url) : null,
202
+ hasHtml: Boolean(row.source_html_r2_key),
203
+ }))
204
+ .filter((row: { id: string }) => row.id);
205
+ }
206
+
207
+ export async function applyCmsEditorTemplate(
208
+ templateId: string,
209
+ input: { pageId?: string | null; projectSlug?: string | null } = {},
210
+ ) {
211
+ return api<Json>(`/api/cms/templates/${encodeURIComponent(templateId)}/apply`, {
212
+ method: 'POST',
213
+ body: {
214
+ page_id: input.pageId || undefined,
215
+ project_slug: input.projectSlug || undefined,
216
+ },
217
+ });
218
+ }
219
+
220
+ export async function getCmsEditorContacts() {
221
+ const result = await api<Json>('/api/user/contacts');
222
+ return (result.contacts || []).map((row: Json, index: number) => ({
223
+ id: index,
224
+ name: String(row.name || row.display_name || row.email || 'Contact'),
225
+ email: String(row.email || ''),
226
+ source: String(row.source || 'Contact form'),
227
+ date: String(row.updated_at || row.created_at || 'Recently'),
228
+ tag: Array.isArray(row.tags) ? row.tags[0] || 'Lead' : row.tag || 'Lead',
229
+ }));
230
+ }
231
+
232
+ export const activateCmsEditorTheme = (themeSlug: string, accent?: string) =>
233
+ api('/api/cms/themes/activate', { method: 'POST', body: { slug: themeSlug, accent } });
@@ -0,0 +1,6 @@
1
+ export * from './api/client';
2
+ export * from '../../shared/cms/src/index';
3
+ export * from './model';
4
+ export * from './preview/bridge';
5
+ export * from './preview/urls';
6
+ export * from './storefront';
@@ -0,0 +1,11 @@
1
+ /** @deprecated Prefer shared/cms map helpers — kept as re-export for transitional imports. */
2
+ export {
3
+ parseCmsEditorObject,
4
+ cmsEditorInitials,
5
+ mapCmsEditorBlock,
6
+ mapCmsEditorSection,
7
+ mapCmsEditorPage,
8
+ mapCmsEditorBootstrap,
9
+ selectCmsEditorTarget,
10
+ } from '../../shared/cms/src/map';
11
+ export { emptyCmsEditorSelection } from '../../shared/cms/src/editor-types';