@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
@@ -0,0 +1,237 @@
1
+ -- AgentSam CMS / Rust / machine product registry graduation.
2
+ -- Idempotent: stable product slugs + unique relationship edges.
3
+ -- Database: inneranimalmedia-business
4
+
5
+ INSERT INTO agentsam_products (
6
+ slug, name, kind, status, description,
7
+ repository_id, canonical_path, package_name, version, tags, metadata, updated_at
8
+ ) VALUES (
9
+ 'cms',
10
+ 'InnerAnimalMedia CMS',
11
+ 'product',
12
+ 'wired',
13
+ 'Independent CMS product identity; portable editor/runtime surfaces inherit AgentSam capabilities.',
14
+ 'github:samprimeaux/inneranimalmedia',
15
+ 'src/core/agentsam/cms',
16
+ NULL,
17
+ NULL,
18
+ '["cms","product","installable"]',
19
+ '{"origin":"registry.cms-rust-machine-20260928","installable":true,"app_id":"client-cms-editor","install":{"command":"agentsam app scaffold client-cms-editor","paths":["/install/cms"]},"run_targets":["local","cloudflare","tauri"],"persistence":["sqlite","d1","localStorage_cache"],"cli_commands":[],"capabilities":["cms.editor","cms.pages","cms.sections","cms.components","cms.media"]}',
20
+ unixepoch()
21
+ )
22
+ ON CONFLICT(slug) DO UPDATE SET
23
+ name=excluded.name,
24
+ kind=excluded.kind,
25
+ status=excluded.status,
26
+ description=excluded.description,
27
+ repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
28
+ canonical_path=excluded.canonical_path,
29
+ package_name=excluded.package_name,
30
+ version=excluded.version,
31
+ tags=excluded.tags,
32
+ metadata=excluded.metadata,
33
+ updated_at=excluded.updated_at;
34
+
35
+ INSERT INTO agentsam_products (
36
+ slug, name, kind, status, description,
37
+ repository_id, canonical_path, package_name, version, tags, metadata, updated_at
38
+ ) VALUES (
39
+ 'client-cms-editor',
40
+ 'AgentSam CMS Editor',
41
+ 'app',
42
+ 'scaffolded',
43
+ 'Canonical reusable CMS editor app; donor-quality remaster is in progress behind adapter boundaries.',
44
+ 'github:samprimeaux/agentsam-sdk',
45
+ 'apps/client-cms-editor',
46
+ '@inneranimalmedia/client-cms-editor',
47
+ '0.1.0',
48
+ '["cms","app","editor","installable"]',
49
+ '{"origin":"registry.cms-rust-machine-20260928","installable":true,"app_id":"client-cms-editor","product_id":"cms","legacy_slug":"iam-client-cms-editor","install":{"command":"agentsam app scaffold client-cms-editor","paths":["/install/cms","/install/client-cms-editor"]},"run_targets":["local","cloudflare","tauri"],"persistence":["sqlite","d1","localStorage_cache"],"cli_commands":[],"capabilities":["cms.editor","cms.pages","cms.sections","cms.components","cms.media"]}',
50
+ unixepoch()
51
+ )
52
+ ON CONFLICT(slug) DO UPDATE SET
53
+ name=excluded.name,
54
+ kind=excluded.kind,
55
+ status=excluded.status,
56
+ description=excluded.description,
57
+ repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
58
+ canonical_path=excluded.canonical_path,
59
+ package_name=excluded.package_name,
60
+ version=excluded.version,
61
+ tags=excluded.tags,
62
+ metadata=excluded.metadata,
63
+ updated_at=excluded.updated_at;
64
+
65
+ INSERT INTO agentsam_products (
66
+ slug, name, kind, status, description,
67
+ repository_id, canonical_path, package_name, version, tags, metadata, updated_at
68
+ ) VALUES (
69
+ 'theme-inneranimals-site',
70
+ 'Inner Animals Site Theme',
71
+ 'theme',
72
+ 'prototype',
73
+ 'Harvested Inner Animals storefront/theme candidate awaiting canonical reusable theme graduation.',
74
+ NULL,
75
+ NULL,
76
+ NULL,
77
+ NULL,
78
+ '["cms","theme","harvest","candidate"]',
79
+ '{"origin":"registry.cms-rust-machine-20260928","installable":false,"candidate":true,"source":"harvest","capabilities":["cms.theme"]}',
80
+ unixepoch()
81
+ )
82
+ ON CONFLICT(slug) DO UPDATE SET
83
+ name=excluded.name,
84
+ kind=excluded.kind,
85
+ status=excluded.status,
86
+ description=excluded.description,
87
+ repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
88
+ canonical_path=excluded.canonical_path,
89
+ package_name=excluded.package_name,
90
+ version=excluded.version,
91
+ tags=excluded.tags,
92
+ metadata=excluded.metadata,
93
+ updated_at=excluded.updated_at;
94
+
95
+ INSERT INTO agentsam_products (
96
+ slug, name, kind, status, description,
97
+ repository_id, canonical_path, package_name, version, tags, metadata, updated_at
98
+ ) VALUES (
99
+ 'asrust',
100
+ 'AgentSam Rust/Wasm Edge Lab',
101
+ 'service',
102
+ 'wired',
103
+ 'Live Rust/Wasm Worker capability lab at asrust.inneranimalmedia.com.',
104
+ NULL,
105
+ NULL,
106
+ NULL,
107
+ NULL,
108
+ '["rust","wasm","cloudflare","service"]',
109
+ '{"origin":"registry.cms-rust-machine-20260928","runtime":"rust-wasm","deployment":{"provider":"cloudflare","url":"https://asrust.inneranimalmedia.com","state":"live"},"run_targets":["cloudflare"],"cli_commands":[],"capabilities":["rust.wasm.worker"]}',
110
+ unixepoch()
111
+ )
112
+ ON CONFLICT(slug) DO UPDATE SET
113
+ name=excluded.name,
114
+ kind=excluded.kind,
115
+ status=excluded.status,
116
+ description=excluded.description,
117
+ repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
118
+ canonical_path=excluded.canonical_path,
119
+ package_name=excluded.package_name,
120
+ version=excluded.version,
121
+ tags=excluded.tags,
122
+ metadata=excluded.metadata,
123
+ updated_at=excluded.updated_at;
124
+
125
+ INSERT INTO agentsam_products (
126
+ slug, name, kind, status, description,
127
+ repository_id, canonical_path, package_name, version, tags, metadata, updated_at
128
+ ) VALUES (
129
+ 'agentsam-machine',
130
+ 'AgentSam Machine',
131
+ 'service',
132
+ 'prototype',
133
+ 'Deterministic native inspect/catalog engine; native core is present while top-level agentsam machine dispatch remains pending.',
134
+ 'github:samprimeaux/agentsam-sdk',
135
+ 'native/agentsam-machine',
136
+ NULL,
137
+ '0.1.0',
138
+ '["rust","native","machine","inspect"]',
139
+ '{"origin":"registry.cms-rust-machine-20260928","installable":false,"runtime":"native-rust","run_targets":["local","tauri"],"cli_commands":[],"capabilities":["machine.inspect"],"dispatch":"pending"}',
140
+ unixepoch()
141
+ )
142
+ ON CONFLICT(slug) DO UPDATE SET
143
+ name=excluded.name,
144
+ kind=excluded.kind,
145
+ status=excluded.status,
146
+ description=excluded.description,
147
+ repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
148
+ canonical_path=excluded.canonical_path,
149
+ package_name=excluded.package_name,
150
+ version=excluded.version,
151
+ tags=excluded.tags,
152
+ metadata=excluded.metadata,
153
+ updated_at=excluded.updated_at;
154
+
155
+ INSERT INTO agentsam_products (
156
+ slug, name, kind, status, description,
157
+ repository_id, canonical_path, package_name, version, tags, metadata, updated_at
158
+ ) VALUES (
159
+ 'agentsam-rapid-rust',
160
+ 'AgentSam Rapid Rust',
161
+ 'sdk-package',
162
+ 'prototype',
163
+ 'Rust/Wasm Worker scaffolding and local proof tooling shipped inside the AgentSam SDK.',
164
+ 'github:samprimeaux/agentsam-sdk',
165
+ 'packages/agentsam-rapid-rust',
166
+ '@inneranimalmedia/agentsam-sdk',
167
+ '0.1.0',
168
+ '["rust","wasm","sdk","cli","installable"]',
169
+ '{"origin":"registry.cms-rust-machine-20260928","installable":true,"bundled_in":"@inneranimalmedia/agentsam-sdk","run_targets":["local","cloudflare"],"persistence":[],"cli_commands":["agentsam rust","agentsam wasm"],"capabilities":["rust.scaffold","rust.check","rust.build","rust.dev","rust.deploy"]}',
170
+ unixepoch()
171
+ )
172
+ ON CONFLICT(slug) DO UPDATE SET
173
+ name=excluded.name,
174
+ kind=excluded.kind,
175
+ status=excluded.status,
176
+ description=excluded.description,
177
+ repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
178
+ canonical_path=excluded.canonical_path,
179
+ package_name=excluded.package_name,
180
+ version=excluded.version,
181
+ tags=excluded.tags,
182
+ metadata=excluded.metadata,
183
+ updated_at=excluded.updated_at;
184
+
185
+ -- CMS product is packaged as the canonical editor app.
186
+ INSERT INTO asset_relationships (
187
+ source_type, source_id, target_type, target_id, relationship_type, metadata
188
+ )
189
+ SELECT 'agentsam_product', cms.id, 'agentsam_product', editor.id, 'packaged_as',
190
+ '{"origin":"registry.cms-rust-machine-20260928","role":"editor_app"}'
191
+ FROM agentsam_products cms, agentsam_products editor
192
+ WHERE cms.slug='cms' AND editor.slug='client-cms-editor'
193
+ ON CONFLICT(source_type,source_id,target_type,target_id,relationship_type)
194
+ DO UPDATE SET metadata=excluded.metadata;
195
+
196
+ -- Preserve the existing legacy product identity as an alias, not a second canonical editor.
197
+ INSERT INTO asset_relationships (
198
+ source_type, source_id, target_type, target_id, relationship_type, metadata
199
+ )
200
+ SELECT 'agentsam_product', legacy.id, 'agentsam_product', editor.id, 'aliased_as',
201
+ '{"origin":"registry.cms-rust-machine-20260928","legacy_slug":"iam-client-cms-editor"}'
202
+ FROM agentsam_products legacy, agentsam_products editor
203
+ WHERE legacy.slug='iam-client-cms-editor' AND editor.slug='client-cms-editor'
204
+ ON CONFLICT(source_type,source_id,target_type,target_id,relationship_type)
205
+ DO UPDATE SET metadata=excluded.metadata;
206
+
207
+ -- Harvested theme candidate belongs to the CMS product family.
208
+ INSERT INTO asset_relationships (
209
+ source_type, source_id, target_type, target_id, relationship_type, metadata
210
+ )
211
+ SELECT 'agentsam_product', theme.id, 'agentsam_product', cms.id, 'depends_on',
212
+ '{"origin":"registry.cms-rust-machine-20260928","role":"cms_theme"}'
213
+ FROM agentsam_products theme, agentsam_products cms
214
+ WHERE theme.slug='theme-inneranimals-site' AND cms.slug='cms'
215
+ ON CONFLICT(source_type,source_id,target_type,target_id,relationship_type)
216
+ DO UPDATE SET metadata=excluded.metadata;
217
+
218
+ -- Rapid Rust exposes the commands that are already mainline and tested.
219
+ INSERT INTO asset_relationships (
220
+ source_type, source_id, target_type, target_id, relationship_type, metadata
221
+ )
222
+ SELECT 'agentsam_product', p.id, 'cli_command', 'agentsam:rust', 'exposes_command',
223
+ '{"origin":"registry.cms-rust-machine-20260928","command":"agentsam rust"}'
224
+ FROM agentsam_products p
225
+ WHERE p.slug='agentsam-rapid-rust'
226
+ ON CONFLICT(source_type,source_id,target_type,target_id,relationship_type)
227
+ DO UPDATE SET metadata=excluded.metadata;
228
+
229
+ INSERT INTO asset_relationships (
230
+ source_type, source_id, target_type, target_id, relationship_type, metadata
231
+ )
232
+ SELECT 'agentsam_product', p.id, 'cli_command', 'agentsam:wasm', 'exposes_command',
233
+ '{"origin":"registry.cms-rust-machine-20260928","command":"agentsam wasm"}'
234
+ FROM agentsam_products p
235
+ WHERE p.slug='agentsam-rapid-rust'
236
+ ON CONFLICT(source_type,source_id,target_type,target_id,relationship_type)
237
+ DO UPDATE SET metadata=excluded.metadata;
@@ -0,0 +1,21 @@
1
+ {
2
+ "schema": "agentsam.registry.receipt.v1",
3
+ "database": "inneranimalmedia-business",
4
+ "applied_at": "2026-09-28",
5
+ "validated": true,
6
+ "products": {
7
+ "cms": "wired",
8
+ "client-cms-editor": "scaffolded",
9
+ "theme-inneranimals-site": "prototype",
10
+ "asrust": "wired",
11
+ "agentsam-machine": "prototype",
12
+ "agentsam-rapid-rust": "prototype"
13
+ },
14
+ "relationships": [
15
+ ["cms", "packaged_as", "client-cms-editor"],
16
+ ["iam-client-cms-editor", "aliased_as", "client-cms-editor"],
17
+ ["theme-inneranimals-site", "depends_on", "cms"],
18
+ ["agentsam-rapid-rust", "exposes_command", "agentsam:rust"],
19
+ ["agentsam-rapid-rust", "exposes_command", "agentsam:wasm"]
20
+ ]
21
+ }
@@ -0,0 +1,27 @@
1
+ SELECT slug,kind,status,canonical_path,package_name,
2
+ json_extract(metadata,'$.app_id') AS app_id,
3
+ json_extract(metadata,'$.legacy_slug') AS legacy_slug,
4
+ json_extract(metadata,'$.dispatch') AS dispatch
5
+ FROM agentsam_products
6
+ WHERE slug IN (
7
+ 'cms',
8
+ 'client-cms-editor',
9
+ 'theme-inneranimals-site',
10
+ 'asrust',
11
+ 'agentsam-machine',
12
+ 'agentsam-rapid-rust'
13
+ )
14
+ ORDER BY slug;
15
+
16
+ SELECT p.slug AS source_slug,
17
+ ar.relationship_type,
18
+ CASE WHEN ar.target_type='agentsam_product' THEN tp.slug ELSE ar.target_id END AS target,
19
+ ar.target_type
20
+ FROM asset_relationships ar
21
+ JOIN agentsam_products p
22
+ ON ar.source_type='agentsam_product' AND ar.source_id=p.id
23
+ LEFT JOIN agentsam_products tp
24
+ ON ar.target_type='agentsam_product' AND ar.target_id=tp.id
25
+ WHERE p.slug IN ('cms','iam-client-cms-editor','theme-inneranimals-site','agentsam-rapid-rust')
26
+ AND ar.relationship_type IN ('packaged_as','aliased_as','depends_on','exposes_command')
27
+ ORDER BY source_slug, ar.relationship_type, target;
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env python3
2
+ """Build/install/smoke-test AgentSam Rapid Rust native CLI.
3
+
4
+ Nothing here deploys a Worker. --bootstrap only installs local Rust/Wasm build
5
+ prerequisites. --smoke scaffolds disposable projects and cargo-checks them.
6
+ """
7
+ from __future__ import annotations
8
+ import argparse, json, os, shutil, subprocess, sys, tempfile
9
+ from pathlib import Path
10
+
11
+ ROOT = Path(__file__).resolve().parents[1]
12
+ MANIFEST = ROOT / "packages" / "agentsam-rapid-rust" / "Cargo.toml"
13
+ BINARY = ROOT / "packages" / "agentsam-rapid-rust" / "target" / "release" / "agentsam-rapid-rust"
14
+ WORKER_BUILD_VERSION = "0.8.7"
15
+ TEMPLATES = ("api", "shared-core", "crypto-auth", "data-processor")
16
+
17
+ def run(cmd, *, cwd=ROOT, check=True):
18
+ print("→", " ".join(map(str, cmd)))
19
+ return subprocess.run(list(map(str, cmd)), cwd=cwd, check=check)
20
+
21
+ def have(cmd):
22
+ return shutil.which(cmd) is not None
23
+
24
+ def bootstrap():
25
+ if not have("rustup") or not have("cargo"):
26
+ raise RuntimeError("Rust/rustup/cargo are required")
27
+ installed = subprocess.check_output(["rustup", "target", "list", "--installed"], text=True)
28
+ if "wasm32-unknown-unknown" not in installed.splitlines():
29
+ run(["rustup", "target", "add", "wasm32-unknown-unknown"])
30
+ if not have("worker-build"):
31
+ run(["cargo", "install", "worker-build", "--version", WORKER_BUILD_VERSION, "--locked"])
32
+
33
+ def build():
34
+ run(["cargo", "fmt", "--manifest-path", MANIFEST, "--", "--check"])
35
+ run(["cargo", "test", "--manifest-path", MANIFEST])
36
+ run(["cargo", "build", "--release", "--manifest-path", MANIFEST])
37
+
38
+ def install(dest: Path):
39
+ if not BINARY.exists():
40
+ build()
41
+ dest.mkdir(parents=True, exist_ok=True)
42
+ target = dest / "agentsam-rapid-rust-native"
43
+ tmp = dest / ".agentsam-rapid-rust-native.tmp"
44
+ shutil.copy2(BINARY, tmp)
45
+ tmp.chmod(0o755)
46
+ os.replace(tmp, target)
47
+ print("installed:", target)
48
+ return target
49
+
50
+ def smoke(binary: Path):
51
+ bootstrap()
52
+ with tempfile.TemporaryDirectory(prefix="agentsam-rapid-rust-") as td:
53
+ root = Path(td)
54
+ for template in TEMPLATES:
55
+ name = "fixture-" + template
56
+ run([binary, "new", name, "--template", template, "--out", root])
57
+ project = root / name
58
+ run([binary, "check", "--cwd", project])
59
+
60
+ def main():
61
+ ap=argparse.ArgumentParser(description=__doc__)
62
+ ap.add_argument("--bootstrap", action="store_true")
63
+ ap.add_argument("--build", action="store_true")
64
+ ap.add_argument("--install", action="store_true")
65
+ ap.add_argument("--install-dir", type=Path, default=Path.home()/".agentsam"/"bin")
66
+ ap.add_argument("--smoke", action="store_true")
67
+ ap.add_argument("--json", action="store_true")
68
+ args=ap.parse_args()
69
+ if not any((args.bootstrap,args.build,args.install,args.smoke)):
70
+ args.build=True
71
+ if args.bootstrap: bootstrap()
72
+ if args.build or args.install or args.smoke: build()
73
+ installed=None
74
+ if args.install: installed=install(args.install_dir.expanduser())
75
+ if args.smoke: smoke(installed or BINARY)
76
+ result={"ok":True,"binary":str(BINARY),"installed":str(installed) if installed else None,"smoke":args.smoke}
77
+ if args.json: print(json.dumps(result,indent=2))
78
+ return 0
79
+
80
+ if __name__ == '__main__':
81
+ try: raise SystemExit(main())
82
+ except (RuntimeError, subprocess.CalledProcessError) as exc:
83
+ print("ERROR:", exc, file=sys.stderr); raise SystemExit(2)
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: auth
3
+ description: >
4
+ Add user accounts and sign-in to this TanStack Start app. Use when the app
5
+ needs authentication, sign-in, user accounts, protected routes, or per-user
6
+ data. Triggers on "auth", "login", "log in", "sign in", "sign up", "account",
7
+ "users", "authentication", "protected", "who is logged in", "current user",
8
+ "per-user".
9
+ metadata:
10
+ short-description: "Auth via the Grok broker (Google, X) or local email/password — no other methods supported"
11
+ user-invocable: false
12
+ ---
13
+
14
+ # Auth
15
+
16
+ This app runs its **own** [Better Auth](https://better-auth.com) at
17
+ `/api/auth/*`, federating to the shared **Grok auth broker** (`auth.grok.me`)
18
+ via the `genericOAuth` plugin. This template wires **Google** and **X**.
19
+
20
+ **Supported sign-in methods — use ONLY these three; nothing else is supported:
21
+ Google, X, and email/password.** No other social/OAuth provider (GitHub, Apple,
22
+ Discord, …), no magic links, passkeys, OTP, phone/SMS, or anonymous sign-in. Do
23
+ not add entries to `GROK_PROVIDERS`. Method detail and the email/password switch
24
+ (edit **only** `src/lib/auth/email-password.ts`): `references/sign-in-methods.md`.
25
+ **Exception — gate viewers are signed in already; NEVER render login/re-auth
26
+ buttons for them. Connector / app-data apps: ONLY gate "Continue with Grok",
27
+ no Google/X buttons**: `references/grok-identity.md`.
28
+
29
+ **Sign-in is OFF by default** — the template ships `.grok/app-env.json` with
30
+ `{"VITE_AUTH_ENABLED": "false"}`, so only add accounts when the ask calls for
31
+ them (AGENTS.md §0.5). Switching it on is "Turning sign-in on" below.
32
+
33
+ **Once on, sign-in is REAL — including in the sandbox live preview.** Do **NOT**
34
+ scaffold demo/mock/hardcoded users. Preview: popup + baked preview client;
35
+ deployed: per-app client + `DATABASE_URL` + zero-click gate sign-in
36
+ (`references/prewired-and-env.md`).
37
+
38
+ **While OFF** (`VITE_AUTH_ENABLED=false`) a **dev user** is returned so a
39
+ non-auth app renders without a signed-in visitor — dev and preview only.
40
+ Deployed, the flag is the platform's (always `"true"`), so `requireUserId`
41
+ rejects every visitor — auth-off apps use neither it nor `authMiddleware`.
42
+
43
+ Everything is **preinstalled and pre-wired in `src/lib/auth/`** — do not
44
+ `npm install` anything; `better-auth` is the only auth package (never
45
+ `@neondatabase/*`, `@stackframe/*`, or `@clerk/*`). **Do not edit or rewrite any
46
+ file under `src/lib/auth/`** — `server.ts` least of all — except
47
+ `email-password.ts` for its one flag. Per-file map:
48
+ `references/prewired-and-env.md`.
49
+
50
+ **`/auth/popup` is already handled by the template Vite plugin**
51
+ (`vite.config.ts` → `popup.server.ts`): it never paints the React app. **Do NOT
52
+ create `src/routes/auth/popup.tsx`** (or any React page / client OAuth at that
53
+ path) — that shows the full app inside the popup, the common failure mode.
54
+
55
+ **Never write a `.env` / `.env.local` / `.env.example`** in this sandbox: live
56
+ preview needs **zero** env configuration and a deployed app gets its vars
57
+ injected by the platform. The knobs that exist are in
58
+ `references/prewired-and-env.md` — never expose a non-`VITE_` var to the client.
59
+
60
+ `migrations/auth/0001_auth.sql` is the Better Auth schema — **do not edit**. It
61
+ sits outside the globbed `migrations/` directory (neither applier descends), so
62
+ it is not applied to apps without sign-in; "Turning sign-in on" copies it up.
63
+
64
+ ## Turning sign-in on
65
+
66
+ Do all of this — the routes alone render the disabled branch:
67
+
68
+ 1. **Flag:** delete the `VITE_AUTH_ENABLED` key from `.grok/app-env.json` and
69
+ **restart the dev server**. Vite reads env at startup, so HMR will not pick
70
+ it up. `npm run dev`, `npm run build` and `npm run preview` all read that
71
+ file through `scripts/with-app-env.mjs`, so preview and the built output flip
72
+ together — never start Vite directly.
73
+ 2. **Schema:** `cp migrations/auth/0001_auth.sql migrations/0001_auth.sql`, then
74
+ restart so it applies. It is tracked by basename in `_migrations`, so a
75
+ database that already has it will not re-run it.
76
+ 3. **Routes:** add `src/routes/api/auth/$.ts` + `src/routes/login.tsx` — copy
77
+ both from `references/wiring.md` (the catch-all API route is what makes
78
+ `/api/auth/*` and the broker callback work).
79
+ 4. **Sign out:** a login with no way out is not done — render `<UserButton />`
80
+ from `@/lib/auth/gates` (wires `signOut()`; hides sign-out for gate sessions).
81
+ 5. **Existing data:** wrap the app's server functions in `authMiddleware` (an
82
+ auth-off app must not have been using it — see the `neon` skill). Rows from
83
+ before sign-in existed are **development data**: drop and recreate them
84
+ unless the user says otherwise — don't hand them to whoever signs in first.
85
+
86
+ ## Building on it once it's on
87
+
88
+ - **Sign in / out:** `signIn(providerId)` and `signOut()` from
89
+ `@/lib/auth/client`; `GROK_PROVIDERS` renders the buttons. The popup,
90
+ bearer-token hand-off, and request attachment are internal — leave them alone.
91
+ Prefer `<UserButton />` (it handles the pending and failure states); `signOut()`
92
+ rejects when deployed if the server never confirms — catch it. Never
93
+ `authClient.signOut()`: it leaves the preview bearer token attached to every
94
+ later request, so the visitor stays signed in.
95
+ - **Reading the user:** `useCurrentUser()` is display-only (`null` means
96
+ *loading OR signed out*, so never redirect on it alone); guard on
97
+ `useCurrentUserState()`'s `isPending` instead. Gates (`SignedIn`, `SignedOut`,
98
+ `SignInGate`, `RedirectToSignIn`, `UserButton`) live in `@/lib/auth/gates`.
99
+ CTA hard rules, skeleton, and cookie-SSR zero-flash: `references/session-ui.md`.
100
+ - **Per-user data (mandatory):** every server function that touches per-user data
101
+ must use the prewired `authMiddleware` and scope every read **and** write to
102
+ `context.userId` — a Postgres driver has full DB access, so nothing else limits
103
+ the query. Keep `user_id` columns `TEXT`; never trust a client-supplied user id;
104
+ signed out, the middleware throws `UnauthorizedError` (401). Code and
105
+ disabled-mode semantics: `references/per-user-data.md`.
106
+ - **Security model:** headless broker, `__Host-` cookies + `trustedOrigins`, and
107
+ Fetch-Metadata sibling isolation are already wired — never weaken them to make
108
+ an error go away (`references/sign-in-methods.md` covers the model and the
109
+ "Invalid origin" fix).
110
+
@@ -0,0 +1,25 @@
1
+ {
2
+ "schema": "agentsam.skill.v1",
3
+ "id": "grok-auth",
4
+ "name": "Grok \u00b7 auth",
5
+ "description": "Auth via the Grok broker (Google, X) or local email/password \u2014 no other methods supported",
6
+ "icon": "skill",
7
+ "slash": {
8
+ "suggested": "/grok-auth"
9
+ },
10
+ "instructions": {
11
+ "source": "local_file",
12
+ "ref": "SKILL.md"
13
+ },
14
+ "execution": {
15
+ "mode": "turn",
16
+ "tools": [],
17
+ "operations": [],
18
+ "capabilities": []
19
+ },
20
+ "provenance": {
21
+ "source": "apps/local-studio/.grok/skills",
22
+ "vendor": "grok",
23
+ "status": "imported"
24
+ }
25
+ }
@@ -0,0 +1,64 @@
1
+ # Sign in with Grok (deployed apps — zero clicks)
2
+
3
+ Behind the edge gate, every proxied request from a signed-in Grok viewer
4
+ carries an unforgeable `x-grok-identity` JWT (EdDSA, minted per request; the
5
+ gate strips any client-supplied copy). The pre-wired `gateIdentitySessions`
6
+ plugin (`src/lib/auth/gate-session.server.ts`) verifies it against the gate's
7
+ JWKS (`/__gate/identity-key`, via `src/lib/auth/gate-identity.server.ts`) and,
8
+ when the app has no session yet, materializes the Better Auth session for that
9
+ viewer automatically — no sign-in button, no redirect, no broker round-trip.
10
+ `useSession` / `useCurrentUser` simply return the Grok user.
11
+
12
+ The broker OAuth flow is the **fallback** for anonymous/public viewers and for
13
+ contexts without the gate. The live preview gets the same zero-click identity
14
+ from the in-VM preview proxy at `http://127.0.0.1:6014` (preview tokens carry
15
+ audience `preview`); the popup mechanism remains the fallback there.
16
+
17
+ ## Never render sign-in or re-auth UI to a gate viewer
18
+
19
+ A gate-authenticated viewer is **already signed in**, and the gate refreshes
20
+ connector tokens on every proxied request — **the platform has no re-auth
21
+ concept**. Never render "Re-auth with Grok", "Sign in again", "Refresh
22
+ session", or a standing "Continue with Grok" button: sign-in UI may appear
23
+ only in the `app-data` skill's `login` error state, after a connector call
24
+ actually returned `loginRequired: true`.
25
+
26
+ The live preview gets the same zero-click session, so a sign-in button visible
27
+ to the owner in the preview indicates a bug (a CTA rendered while the session
28
+ check was still pending, or rendered in reaction to a data error) — fix it,
29
+ don't restyle it. For any fallback sign-in surface use `<SignInGate>` from
30
+ `@/lib/auth/gates`: it renders sign-in UI only after the session check resolved
31
+ to no user, never during loading and never from a data error.
32
+
33
+ Sign-out is also a no-op for a gate session — the next request re-materializes
34
+ it from `x-grok-identity`, an instant sign-back-in loop. `<UserButton />`
35
+ already hides its sign-out control for gate sessions; never build a custom
36
+ sign-out (or any sign-out route/handler) for gate viewers.
37
+
38
+ ## Files (pre-wired — do not edit)
39
+
40
+ | File | Role |
41
+ |---|---|
42
+ | `gate-identity.server.ts` | Verifies the gate's `x-grok-identity` viewer JWT (EdDSA vs the gate JWKS; fail-closed). Server-only. |
43
+ | `gate-session.server.ts` | Better Auth plugin that turns a verified gate identity into the app session with zero clicks. Already registered in `server.ts`. |
44
+
45
+ ## Env (deployer-injected)
46
+
47
+ | Var | Scope | Meaning |
48
+ |---|---|---|
49
+ | `GROK_PROJECT_ID` | server | deployed apps: enables "Sign in with Grok" (`x-grok-identity` audience check `app:<project_id>`) |
50
+ | `GROK_GATE_ORIGIN` | server | gate public origin override (JWKS + issuer pin); unset → preview mode (no `GROK_PROJECT_ID`) defaults to the in-VM proxy `http://127.0.0.1:6014` (audience `preview`), deployed mode derives it from the inbound host |
51
+
52
+ Deployed behavior: gate-authenticated viewers are signed in automatically from
53
+ `x-grok-identity`; the deployer also injects a per-app broker client +
54
+ `DATABASE_URL`, so the fallback sign-in persists identities in Postgres.
55
+
56
+ ## Connector / app-data apps: gate sign-in only
57
+
58
+ When the `app-data` skill applies, the login page offers ONLY "Continue with
59
+ Grok" via the gate sign-in — the zero-click `x-grok-identity` session above, or
60
+ the gate-built `loginUrl` returned by a connector call. Do not wire Google/X
61
+ buttons for these apps: a broker login can mint an identity that is not the
62
+ gate viewer the connector data belongs to. The three-method rule applies to
63
+ apps without connector data. Still no new `GROK_PROVIDERS` entries, still never
64
+ edit `src/lib/auth/`.
@@ -0,0 +1,49 @@
1
+ # Per-user data (server-side — mandatory)
2
+
3
+ Pair auth with the DB (see the `neon` skill). A regular Postgres driver has full
4
+ DB access, so **every** server function that touches per-user data must verify
5
+ the caller and scope rows to them. Use the prewired **`authMiddleware`**: it
6
+ resolves the same-origin session to a verified `context.userId` (and rejects
7
+ scripted cross-site/sibling requests) — no token threading:
8
+
9
+ ```ts
10
+ import { createServerFn } from "@tanstack/react-start";
11
+ import { getSql } from "@/lib/db";
12
+ import { authMiddleware } from "@/lib/auth/middleware";
13
+
14
+ export const listTodos = createServerFn({ method: "GET" })
15
+ .middleware([authMiddleware])
16
+ .handler(async ({ context }) => {
17
+ const sql = await getSql();
18
+ // Type the row shape — a server fn's return must be provably serializable.
19
+ return sql<{ id: number; title: string; done: boolean }>`select id, title, done from todos where user_id = ${context.userId} order by id desc`;
20
+ });
21
+
22
+ // Inputs go through `.validator()` (the current API); the client passes `{ data }`:
23
+ export const addTodo = createServerFn({ method: "POST" })
24
+ .validator((title: string) => title.trim())
25
+ .middleware([authMiddleware])
26
+ .handler(async ({ context, data: title }) => {
27
+ if (!title) return;
28
+ const sql = await getSql();
29
+ await sql`insert into todos (user_id, title) values (${context.userId}, ${title})`;
30
+ });
31
+ // mutations must scope writes too: `... where id = ${id} and user_id = ${context.userId}`
32
+ ```
33
+
34
+ Call these from **client code** (effects, event handlers, React Query) — that's
35
+ where `Sec-Fetch-Site: same-origin` holds:
36
+
37
+ ```ts
38
+ useEffect(() => { listTodos().then(setTodos).catch(() => setTodos([])); }, []);
39
+ ```
40
+
41
+ Semantics: signed out → the middleware throws `UnauthorizedError` (message
42
+ `"Unauthorized"`, `status` 401 — match it to send the visitor to sign-in), in the
43
+ live preview too (real auth). With auth disabled (`VITE_AUTH_ENABLED=false`) it
44
+ resolves the dev user (`"dev-user"`) in dev and preview only — the deployed flag
45
+ comes from the deployer (today always `"true"`), so deployed it rejects every
46
+ visitor — which is why an app without sign-in must not use the middleware at all
47
+ (see the `neon` skill). Keep `user_id` columns
48
+ `TEXT` (Better Auth uses text ids; the disabled dev user is `'dev-user'`). Never
49
+ trust a client-supplied user id — only the middleware / `requireUserId()` result.