@inneranimalmedia/agentsam-sdk 2.6.5 → 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 (371) hide show
  1. package/AGENTSAM.md +29 -0
  2. package/apps/README.md +5 -0
  3. package/apps/cad-creator/README.md +4 -4
  4. package/apps/cad-creator/shared/cad/package.json +1 -1
  5. package/apps/client-cms-editor/AGENTS.md +12 -7
  6. package/apps/client-cms-editor/README.md +76 -48
  7. package/apps/client-cms-editor/agentsam.app.json +26 -9
  8. package/apps/client-cms-editor/backend/package.json +20 -3
  9. package/apps/client-cms-editor/backend/src/api/client.ts +134 -101
  10. package/apps/client-cms-editor/backend/src/index.ts +1 -1
  11. package/apps/client-cms-editor/backend/src/model.ts +11 -115
  12. package/apps/client-cms-editor/backend/src/preview/bridge.ts +1 -1
  13. package/apps/client-cms-editor/backend/tsconfig.json +6 -1
  14. package/apps/client-cms-editor/bin/agentsam-cms.js +262 -0
  15. package/apps/client-cms-editor/bin/agentsam-cms.mjs +2 -228
  16. package/apps/client-cms-editor/frontend/package.json +16 -7
  17. package/apps/client-cms-editor/frontend/src/AgentSamDrawer.tsx +9 -41
  18. package/apps/client-cms-editor/frontend/src/CmsAgentSurface.tsx +19 -174
  19. package/apps/client-cms-editor/frontend/src/adapters/heuristic.ts +29 -0
  20. package/apps/client-cms-editor/frontend/src/adapters/http.ts +628 -0
  21. package/apps/client-cms-editor/frontend/src/adapters/memory.ts +510 -0
  22. package/apps/client-cms-editor/frontend/src/editor/CmsEditor.tsx +213 -0
  23. package/apps/client-cms-editor/frontend/src/editor/CmsEditorProvider.tsx +20 -0
  24. package/apps/client-cms-editor/frontend/src/editor/canvas/PreviewCanvas.tsx +53 -0
  25. package/apps/client-cms-editor/frontend/src/{CmsEditor.tsx → editor/legacy/CmsEditorPrototype.tsx} +52 -23
  26. package/apps/client-cms-editor/frontend/src/editor/useCmsEditorController.ts +218 -0
  27. package/apps/client-cms-editor/frontend/src/index.ts +19 -5
  28. package/apps/client-cms-editor/frontend/src/lib/agent-host.ts +24 -0
  29. package/apps/client-cms-editor/frontend/src/main.tsx +82 -8
  30. package/apps/client-cms-editor/frontend/src/mount.tsx +92 -30
  31. package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +1 -1
  32. package/apps/client-cms-editor/frontend/src/styles/cmsShell.css +8 -8
  33. package/apps/client-cms-editor/frontend/src/styles/studio.css +55 -3
  34. package/apps/client-cms-editor/frontend/tsconfig.json +12 -1
  35. package/apps/client-cms-editor/frontend/vite.config.ts +12 -0
  36. package/apps/client-cms-editor/package-lock.json +973 -134
  37. package/apps/client-cms-editor/package.json +118 -6
  38. package/apps/client-cms-editor/reference/harvest/HARVEST_RECEIPT.json +201 -0
  39. package/apps/client-cms-editor/reference/harvest/PROVENANCE_HISTORY.txt +10 -0
  40. package/apps/client-cms-editor/reference/harvest/README.md +8 -0
  41. package/apps/client-cms-editor/reference/harvest/plans/ARCHIVE-INTAKE.md +135 -0
  42. package/apps/client-cms-editor/reference/harvest/plans/CHATGPT-IDENTITY-HARVEST.md +83 -0
  43. package/apps/client-cms-editor/reference/harvest/plans/CMS-EDITOR-HARVEST.md +166 -0
  44. package/apps/client-cms-editor/reference/harvest/plans/HARVEST-INDEX.md +196 -0
  45. package/apps/client-cms-editor/reference/harvest/plans/INNERANIMALS-CONTENT-001.md +137 -0
  46. package/apps/client-cms-editor/reference/harvest/plans/NO-IMPLICIT-SIDE-EFFECTS.md +87 -0
  47. package/apps/client-cms-editor/reference/harvest/plans/STOREFRONT-SURFACE-MAP.md +140 -0
  48. package/apps/client-cms-editor/reference/harvest/plans/THEME-INNERANIMALS-HARVEST.md +137 -0
  49. package/apps/client-cms-editor/reference/harvest/plans/TOOLING-LAB.md +63 -0
  50. package/apps/client-cms-editor/reference/harvest/plans/harvest-manifest.json +97 -0
  51. package/apps/client-cms-editor/reference/harvest/plans/local-cms-harvest-schema.sql +328 -0
  52. package/apps/client-cms-editor/shared/cms/package.json +17 -7
  53. package/apps/client-cms-editor/shared/cms/src/adapter.ts +204 -0
  54. package/apps/client-cms-editor/shared/cms/src/agent-context.ts +7 -5
  55. package/apps/client-cms-editor/shared/cms/src/editor-types.ts +32 -0
  56. package/apps/client-cms-editor/shared/cms/src/host.ts +82 -0
  57. package/apps/client-cms-editor/shared/cms/src/index.ts +4 -0
  58. package/apps/client-cms-editor/shared/cms/src/map.ts +115 -0
  59. package/apps/client-cms-editor/shared/cms/src/starter-pack.ts +158 -0
  60. package/contracts/source-types.v1.json +353 -0
  61. package/docs/CMS_CONTEXTUAL_COMPOSER.md +1 -1
  62. package/docs/PRODUCT_LIFECYCLE.md +566 -0
  63. package/docs/THEME_REFINERY.md +2 -2
  64. package/docs/architecture/AGENTSAM_RUNTIME_PROTOCOL.md +40 -20
  65. package/docs/content-studio/REVISION_GATE_2026-09-27.md +1 -1
  66. package/docs/plans/LOCAL_STUDIO_DESKTOP_RELEASE_2026-09-29.md +150 -0
  67. package/migrations/d1/0017_identity_native_oauth.sql +21 -0
  68. package/native/agentsam-machine/Cargo.lock +426 -0
  69. package/native/agentsam-machine/Cargo.toml +9 -0
  70. package/native/agentsam-machine/cli/Cargo.toml +14 -0
  71. package/native/agentsam-machine/cli/src/main.rs +77 -0
  72. package/native/agentsam-machine/core/Cargo.toml +15 -0
  73. package/native/agentsam-machine/core/src/assets.rs +790 -0
  74. package/native/agentsam-machine/core/src/bound.rs +298 -0
  75. package/native/agentsam-machine/core/src/enrich.rs +706 -0
  76. package/native/agentsam-machine/core/src/frontend.rs +442 -0
  77. package/native/agentsam-machine/core/src/lib.rs +1086 -0
  78. package/native/agentsam-machine/core/src/liquid.rs +528 -0
  79. package/native/agentsam-machine/core/src/source_types.rs +78 -0
  80. package/package.json +51 -21
  81. package/packages/agentsam-brand/README.md +1 -1
  82. package/packages/agentsam-brand/package.json +4 -4
  83. package/packages/agentsam-brand/src/index.js +1 -1
  84. package/packages/agentsam-contracts/package.json +13 -3
  85. package/packages/agentsam-contracts/src/tools.ts +22 -0
  86. package/packages/agentsam-errors/package.json +13 -3
  87. package/packages/agentsam-knowledge/package.json +18 -4
  88. package/packages/agentsam-knowledge/src/autorag/index.js +10 -3
  89. package/packages/agentsam-knowledge/src/backends/index.js +33 -1
  90. package/packages/agentsam-knowledge/test/autorag.test.mjs +60 -1
  91. package/packages/agentsam-nav/package.json +24 -6
  92. package/packages/agentsam-queue-control/README.md +1 -1
  93. package/packages/agentsam-queue-control/package.json +7 -2
  94. package/packages/agentsam-rapid-rust/src/main.rs +1 -1
  95. package/packages/agentsam-repository/package.json +13 -3
  96. package/packages/agentsam-repository/src/source-types.js +8 -0
  97. package/packages/agentsam-vault/package.json +14 -4
  98. package/packages/agentsam-workbench/package.json +15 -4
  99. package/packages/agentsam-workbench/src/agent/ToolPermissionRequest.tsx +94 -0
  100. package/packages/agentsam-workbench/src/agent/index.ts +2 -0
  101. package/packages/agentsam-workbench/src/agent/tool-permission.css +134 -0
  102. package/packages/connectors/cloudflare/package.json +13 -3
  103. package/packages/connectors/cloudflare/src/api-client.js +3 -2
  104. package/packages/connectors/cloudflare/src/families/vectorize.js +127 -0
  105. package/packages/connectors/cloudflare/src/index.js +1 -0
  106. package/packages/heuristic-theme/README.md +2 -2
  107. package/packages/heuristic-theme/package.json +8 -3
  108. package/packages/heuristic-theme/src/registry.js +2 -2
  109. package/packages/heuristic-theme/src/theme.js +1 -1
  110. package/packages/heuristic-theme/test/theme.test.mjs +1 -1
  111. package/packages/identity/.agentsam/features/oauth-login-portal/agentsam.feature.json +1 -1
  112. package/packages/identity/.agentsam/features/oauth-login-portal/providers.json +27 -7
  113. package/packages/identity/README.md +2 -2
  114. package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +18 -15
  115. package/packages/identity/migrations/apply-portable.js +109 -0
  116. package/packages/identity/migrations/sqlite/004_identity_oauth_consent_catalog.sql +1 -1
  117. package/packages/identity/migrations/sqlite/005_identity_company_native.sql +52 -0
  118. package/packages/identity/package.json +27 -6
  119. package/packages/identity/schema/agentsam.identity/manifest.json +101 -0
  120. package/packages/identity/scripts/local-identity-bridge.mjs +13 -7
  121. package/packages/identity/scripts/preview-auth-portal.mjs +6 -6
  122. package/packages/identity/src/adapters/cloudflare-d1/index.js +8 -401
  123. package/packages/identity/src/adapters/iam-compat/index.js +540 -0
  124. package/packages/identity/src/adapters/portable-d1/index.js +18 -0
  125. package/packages/identity/src/adapters/portable-store.js +479 -0
  126. package/packages/identity/src/adapters/sqlite/index.js +13 -312
  127. package/packages/identity/src/contracts/auth-config.js +0 -1
  128. package/packages/identity/src/contracts/identity-store.js +56 -5
  129. package/packages/identity/src/contracts/provider.js +1 -0
  130. package/packages/identity/src/contracts/sign-in-options.js +104 -0
  131. package/packages/identity/src/core/constants.js +1 -1
  132. package/packages/identity/src/core/session-policy.js +31 -0
  133. package/packages/identity/src/frontend/auth-portal/pages/login.html +6 -6
  134. package/packages/identity/src/frontend/auth-portal/pages/reset.html +5 -5
  135. package/packages/identity/src/frontend/auth-portal/pages/signup.html +5 -5
  136. package/packages/identity/src/frontend/auth-portal/shared/company-branding.js +1 -1
  137. package/packages/identity/src/frontend/auth-portal/shared/desktop-identity-bridge.js +6 -37
  138. package/packages/identity/src/index.js +28 -1
  139. package/packages/identity/src/migrations/README.md +23 -23
  140. package/packages/identity/src/oauth/README.md +1 -1
  141. package/packages/identity/src/oauth/credentials.js +10 -11
  142. package/packages/identity/src/oauth/google-desktop-exchange.js +195 -27
  143. package/packages/identity/src/oauth/iam-platform.js +21 -9
  144. package/packages/identity/src/oauth/native-handoff.js +136 -0
  145. package/packages/identity/src/providers/chatgpt/headers.js +65 -0
  146. package/packages/identity/src/providers/chatgpt/index.js +86 -0
  147. package/packages/identity/src/providers/chatgpt/mapper.js +43 -0
  148. package/packages/identity/src/providers/chatgpt/paths.js +45 -0
  149. package/packages/identity/src/providers/github/oauth.js +1 -2
  150. package/packages/identity/src/providers/github/profile.js +16 -2
  151. package/packages/identity/src/providers/index.js +11 -3
  152. package/packages/identity/src/server/identity-service.js +2 -1
  153. package/packages/identity/src/server/worker-router.js +71 -18
  154. package/packages/identity/tests/chatgpt-provider.test.mjs +75 -0
  155. package/packages/identity/tests/google-desktop-identity-login.test.mjs +210 -0
  156. package/packages/identity/tests/identity-init-scaffold.test.mjs +15 -4
  157. package/packages/identity/tests/lane1-identity-store-parity.test.mjs +527 -0
  158. package/packages/identity/tests/lane1-packed-consumer.test.mjs +175 -0
  159. package/packages/identity/tests/native-oauth-handoff.test.mjs +292 -0
  160. package/packages/identity/tests/oauth-credentials.test.mjs +4 -4
  161. package/packages/identity/tests/preview-auth-portal.test.mjs +4 -2
  162. package/packages/identity/tests/session-routes-policy.test.mjs +13 -1
  163. package/packages/identity/tests/worker-runtime-boundary.test.mjs +11 -0
  164. package/packages/providers/completeful/package.json +7 -2
  165. package/packages/theme-church-site/package.json +17 -6
  166. package/packages/theme-church-site/src/harvest.json +4 -2
  167. package/packages/theme-church-site/src/index.js +7 -3
  168. package/packages/theme-church-site/test/theme.test.mjs +4 -2
  169. package/packages/theme-companions-site/package.json +17 -6
  170. package/packages/theme-companions-site/src/harvest.json +4 -2
  171. package/packages/theme-companions-site/src/index.js +7 -3
  172. package/packages/theme-companions-site/test/theme.test.mjs +4 -2
  173. package/packages/theme-floors-site/package.json +17 -6
  174. package/packages/theme-floors-site/src/harvest.json +4 -2
  175. package/packages/theme-floors-site/src/index.js +7 -3
  176. package/packages/theme-floors-site/test/theme.test.mjs +4 -2
  177. package/packages/theme-fuelnfree-site/package.json +17 -6
  178. package/packages/theme-fuelnfree-site/src/harvest.json +4 -2
  179. package/packages/theme-fuelnfree-site/src/index.js +7 -3
  180. package/packages/theme-fuelnfree-site/test/theme.test.mjs +4 -2
  181. package/packages/theme-handyman-site/package.json +17 -6
  182. package/packages/theme-handyman-site/src/harvest.json +4 -2
  183. package/packages/theme-handyman-site/src/index.js +7 -3
  184. package/packages/theme-handyman-site/test/theme.test.mjs +4 -2
  185. package/packages/theme-insurance-site/package.json +17 -6
  186. package/packages/theme-insurance-site/src/harvest.json +4 -2
  187. package/packages/theme-insurance-site/src/index.js +7 -3
  188. package/packages/theme-insurance-site/test/theme.test.mjs +4 -2
  189. package/packages/theme-scenes/README.md +1 -1
  190. package/packages/theme-scenes/package.json +4 -3
  191. package/packages/theme-scenes/src/registry.js +187 -0
  192. package/packages/theme-shinshu-site/package.json +17 -6
  193. package/packages/theme-shinshu-site/src/harvest.json +4 -2
  194. package/packages/theme-shinshu-site/src/index.js +7 -3
  195. package/packages/theme-shinshu-site/test/theme.test.mjs +4 -2
  196. package/packages/work-graph/package.json +14 -4
  197. package/protocol/FILEMETA_V1.md +2 -2
  198. package/protocol/capabilities/manifest.json +1 -1
  199. package/protocol/database/agentsam.schema-pack.v1.schema.json +72 -0
  200. package/protocol/presets/catalog.json +2 -2
  201. package/protocol/theme-refinery/lineage-registry.json +105 -0
  202. package/protocol/theme-refinery/product-metadata.schema.json +21 -1
  203. package/skills/grok-auth/SKILL.md +110 -0
  204. package/skills/grok-auth/agentsam.skill.json +25 -0
  205. package/skills/grok-auth/references/grok-identity.md +64 -0
  206. package/skills/grok-auth/references/per-user-data.md +49 -0
  207. package/skills/grok-auth/references/prewired-and-env.md +54 -0
  208. package/skills/grok-auth/references/session-ui.md +133 -0
  209. package/skills/grok-auth/references/sign-in-methods.md +55 -0
  210. package/skills/grok-auth/references/wiring.md +71 -0
  211. package/skills/grok-building-games/SKILL.md +213 -0
  212. package/skills/grok-building-games/agentsam.skill.json +25 -0
  213. package/skills/grok-building-games/references/3d-libs.md +64 -0
  214. package/skills/grok-building-games/references/ai-pathfinding.md +122 -0
  215. package/skills/grok-building-games/references/audio.md +129 -0
  216. package/skills/grok-building-games/references/babylon.md +202 -0
  217. package/skills/grok-building-games/references/collision-physics.md +122 -0
  218. package/skills/grok-building-games/references/ecs-architecture.md +111 -0
  219. package/skills/grok-building-games/references/game-feel-juice.md +110 -0
  220. package/skills/grok-building-games/references/genres/board-card-chess.md +89 -0
  221. package/skills/grok-building-games/references/genres/endless-runner.md +83 -0
  222. package/skills/grok-building-games/references/genres/fps.md +105 -0
  223. package/skills/grok-building-games/references/genres/platformer-2d.md +97 -0
  224. package/skills/grok-building-games/references/genres/puzzle-match3-tetris.md +131 -0
  225. package/skills/grok-building-games/references/genres/racing-kart.md +106 -0
  226. package/skills/grok-building-games/references/genres/topdown-twin-stick.md +97 -0
  227. package/skills/grok-building-games/references/genres/tower-defense.md +84 -0
  228. package/skills/grok-building-games/references/genres/voxel-minecraft.md +89 -0
  229. package/skills/grok-building-games/references/input.md +139 -0
  230. package/skills/grok-building-games/references/phaser.md +277 -0
  231. package/skills/grok-building-games/references/procedural-generation.md +141 -0
  232. package/skills/grok-building-games/references/save-persistence.md +108 -0
  233. package/skills/grok-building-games/references/threejs-foundational.md +148 -0
  234. package/skills/grok-controls/SKILL.md +274 -0
  235. package/skills/grok-controls/agentsam.skill.json +25 -0
  236. package/skills/grok-design-ui/SKILL.md +122 -0
  237. package/skills/grok-design-ui/agentsam.skill.json +25 -0
  238. package/skills/grok-design-ui/references/animations.md +379 -0
  239. package/skills/grok-design-ui/references/performance.md +88 -0
  240. package/skills/grok-design-ui/references/refined-ui.md +384 -0
  241. package/skills/grok-design-ui/references/surfaces.md +247 -0
  242. package/skills/grok-design-ui/references/typography.md +123 -0
  243. package/skills/grok-game-animation-frames/SKILL.md +84 -0
  244. package/skills/grok-game-animation-frames/agentsam.skill.json +25 -0
  245. package/skills/grok-game-asset-core/SKILL.md +69 -0
  246. package/skills/grok-game-asset-core/agentsam.skill.json +25 -0
  247. package/skills/grok-game-character-consistency/SKILL.md +69 -0
  248. package/skills/grok-game-character-consistency/agentsam.skill.json +25 -0
  249. package/skills/grok-game-tilesets/SKILL.md +65 -0
  250. package/skills/grok-game-tilesets/agentsam.skill.json +25 -0
  251. package/skills/grok-game-ui-icons/SKILL.md +56 -0
  252. package/skills/grok-game-ui-icons/agentsam.skill.json +25 -0
  253. package/skills/grok-generate2dmap/LICENSE +21 -0
  254. package/skills/grok-generate2dmap/SKILL.md +120 -0
  255. package/skills/grok-generate2dmap/SOURCE.md +6 -0
  256. package/skills/grok-generate2dmap/agentsam.skill.json +25 -0
  257. package/skills/grok-generate2dmap/references/deliverables.md +101 -0
  258. package/skills/grok-generate2dmap/references/layered-map-contract.md +209 -0
  259. package/skills/grok-generate2dmap/references/map-strategies.md +341 -0
  260. package/skills/grok-generate2dmap/references/object-production-gate.md +24 -0
  261. package/skills/grok-generate2dmap/references/pipeline.md +149 -0
  262. package/skills/grok-generate2dmap/references/prop-pack-contract.md +174 -0
  263. package/skills/grok-generate2dmap/references/side-scroll-stages.md +29 -0
  264. package/skills/grok-generate2dmap/scripts/compose_layered_preview.py +157 -0
  265. package/skills/grok-generate2dmap/scripts/extract_prop_pack.py +369 -0
  266. package/skills/grok-generate2dsprite/LICENSE +21 -0
  267. package/skills/grok-generate2dsprite/SKILL.md +313 -0
  268. package/skills/grok-generate2dsprite/SOURCE.md +6 -0
  269. package/skills/grok-generate2dsprite/agentsam.skill.json +25 -0
  270. package/skills/grok-generate2dsprite/references/modes.md +124 -0
  271. package/skills/grok-generate2dsprite/references/prompt-rules.md +315 -0
  272. package/skills/grok-generate2dsprite/scripts/generate2dsprite.py +1031 -0
  273. package/skills/grok-generate2dsprite/scripts/make_layout_guide.py +109 -0
  274. package/skills/grok-imagine/SKILL.md +201 -0
  275. package/skills/grok-imagine/agentsam.skill.json +25 -0
  276. package/skills/grok-multiplayer-p2p/SKILL.md +111 -0
  277. package/skills/grok-multiplayer-p2p/agentsam.skill.json +25 -0
  278. package/skills/grok-multiplayer-p2p/references/react-binding.md +144 -0
  279. package/skills/grok-multiplayer-p2p/references/signaling-relay.md +269 -0
  280. package/skills/grok-neon/SKILL.md +157 -0
  281. package/skills/grok-neon/agentsam.skill.json +25 -0
  282. package/skills/grok-og/SKILL.md +102 -0
  283. package/skills/grok-og/agentsam.skill.json +25 -0
  284. package/skills/grok-og/references/brand-pass.md +53 -0
  285. package/skills/grok-og/references/custom-card.md +107 -0
  286. package/skills/grok-og/references/favicon-and-icons.md +48 -0
  287. package/skills/grok-og/references/og-type-contract.md +18 -0
  288. package/skills/grok-og/references/placeholder-card.md +21 -0
  289. package/skills/grok-og/references/x-banner.md +41 -0
  290. package/skills/grok-threejs/SKILL.md +67 -0
  291. package/skills/grok-threejs/agentsam.skill.json +25 -0
  292. package/skills/grok-threejs/references/llms-full.txt +2780 -0
  293. package/skills/grok-video2dsprite/LICENSE +21 -0
  294. package/skills/grok-video2dsprite/SKILL.md +236 -0
  295. package/skills/grok-video2dsprite/SOURCE.md +6 -0
  296. package/skills/grok-video2dsprite/agentsam.skill.json +25 -0
  297. package/skills/grok-video2dsprite/references/pipeline.md +90 -0
  298. package/skills/grok-video2dsprite/references/prompt-rules.md +63 -0
  299. package/skills/grok-video2dsprite/scripts/video2dsprite.py +490 -0
  300. package/skills/grok-xai-api/SKILL.md +152 -0
  301. package/skills/grok-xai-api/agentsam.skill.json +25 -0
  302. package/src/cli/command-catalog.js +46 -4
  303. package/src/cli/dispatch.js +1 -0
  304. package/src/cli.js +10 -0
  305. package/src/cloudflare/runtime-status.js +2 -1
  306. package/src/commands/autorag.js +67 -13
  307. package/src/commands/cheat-sheet.js +29 -4
  308. package/src/commands/codebaseindex.js +45 -2
  309. package/src/commands/knowledge.js +59 -2
  310. package/src/commands/machine-binary.js +103 -0
  311. package/src/commands/machine.js +137 -0
  312. package/src/commands/security.js +67 -4
  313. package/src/commands/setup.js +33 -16
  314. package/src/commands/status.js +8 -1
  315. package/src/features/resolve.js +1 -0
  316. package/src/knowledge/engine.js +21 -2
  317. package/src/knowledge/runtime-discovery.js +127 -0
  318. package/src/lib/identity-scaffold.js +53 -13
  319. package/src/lib/setup/recipes.js +1 -1
  320. package/src/models/discovery.js +40 -22
  321. package/src/models/inventory-core.d.ts +105 -0
  322. package/src/models/inventory-core.js +54 -6
  323. package/src/security/logs.js +3 -0
  324. package/src/ui/cli/help.js +41 -0
  325. package/test/apps-scaffold-contract.test.mjs +3 -2
  326. package/test/cli/api-key-env-whoami.test.mjs +2 -2
  327. package/test/cli/catalog-authority.test.mjs +64 -0
  328. package/test/cli/machine-command.test.mjs +34 -0
  329. package/test/fixtures/project-authority/customer-app/.agentsam/app.json +5 -0
  330. package/test/fixtures/project-authority/customer-app/apps/my-product/index.ts +1 -0
  331. package/test/fixtures/project-authority/customer-app/wrangler.toml +17 -0
  332. package/test/integration/autorag-project-authority.integration.test.mjs +51 -0
  333. package/test/integration/autorag-runtime-discovery.test.mjs +107 -0
  334. package/test/integration/cms-app-scaffold.test.mjs +37 -31
  335. package/test/integration/cms-site-tenancy-contract.test.mjs +28 -17
  336. package/test/integration/codebaseindex-ingest.test.mjs +41 -0
  337. package/test/integration/database-hosted-honesty.test.mjs +49 -0
  338. package/test/integration/desktop-keychain-boundary.test.mjs +45 -0
  339. package/test/integration/hosted-work-host-authority.test.mjs +47 -0
  340. package/test/integration/inventory-eligibility.test.mjs +59 -0
  341. package/test/integration/local-provider-bridge.test.mjs +65 -0
  342. package/test/integration/local-studio-settings-production.test.mjs +40 -0
  343. package/test/integration/lockfile-sync.test.mjs +26 -0
  344. package/test/integration/provider-env-cli.test.mjs +13 -3
  345. package/test/integration/runtime-status.integration.test.mjs +16 -1
  346. package/test/integration/theme-package-registry.test.mjs +31 -0
  347. package/test/repository-snapshot-view.test.mjs +2 -2
  348. package/test/security.test.mjs +14 -0
  349. package/test/terminal-machine-identity.test.mjs +2 -2
  350. package/apps/client-cms-editor/backend/src/demo-bootstrap.ts +0 -145
  351. package/packages/agentsam-nav/dist/Nav.d.ts +0 -43
  352. package/packages/agentsam-nav/dist/NavCollapsible.d.ts +0 -10
  353. package/packages/agentsam-nav/dist/NavContent.d.ts +0 -2
  354. package/packages/agentsam-nav/dist/NavFooter.d.ts +0 -2
  355. package/packages/agentsam-nav/dist/NavGroup.d.ts +0 -3
  356. package/packages/agentsam-nav/dist/NavHeader.d.ts +0 -2
  357. package/packages/agentsam-nav/dist/NavMenu.d.ts +0 -22
  358. package/packages/agentsam-nav/dist/NavProvider.d.ts +0 -35
  359. package/packages/agentsam-nav/dist/NavTrigger.d.ts +0 -2
  360. package/packages/agentsam-nav/dist/Surfaces.d.ts +0 -41
  361. package/packages/agentsam-nav/dist/browser.d.ts +0 -11
  362. package/packages/agentsam-nav/dist/browser.global.js +0 -132
  363. package/packages/agentsam-nav/dist/browser.js +0 -613
  364. package/packages/agentsam-nav/dist/contracts.d.ts +0 -76
  365. package/packages/agentsam-nav/dist/index.d.ts +0 -11
  366. package/packages/agentsam-nav/dist/index.js +0 -614
  367. package/packages/agentsam-nav/dist/legacy.css +0 -83
  368. package/packages/agentsam-nav/dist/shell.css +0 -113
  369. package/packages/agentsam-nav/dist/theme.css +0 -113
  370. package/packages/agentsam-nav/dist/utils.d.ts +0 -1
  371. package/packages/agentsam-repository/src/goap.js.bak-20260922011251 +0 -670
@@ -1,32 +1,35 @@
1
- # Identity schema mapping — portable ↔ Cloudflare D1
1
+ # Identity schema mapping — portable ↔ Cloudflare D1 (IAM compat)
2
2
 
3
3
  Portable SQLite (`packages/identity/migrations/sqlite/`) is the product schema.
4
- The D1 adapter maps existing hosted table names without requiring a big-bang rename.
4
+ The IAM-compat adapter maps existing hosted table names without requiring a big-bang rename.
5
5
 
6
- | Portable (SQLite) | Hosted D1 (current) | Notes |
6
+ | Portable (SQLite / portable D1) | Hosted D1 (IAM compat) | Notes |
7
7
  |---|---|---|
8
- | `identity_users` / account plane | **`accounts`** | **Account SSOT** — row of record |
9
- | login principal | `auth_users` | 1:1 with `accounts.id` in portable scaffold |
10
- | `identity_external_accounts` | `account_identities` | IdP linkage only (`account_id` → `accounts.id`) — never the account SSOT |
11
- | `identity_sessions` | `auth_sessions` | Same columns |
12
- | `identity_auth_events` | `auth_event_log` | Same columns |
13
- | `identity_oauth_transactions` | `identity_oauth_states` → migrate to `identity_oauth_transactions` | Requires `app_id NOT NULL`; no silent pre-app_id fallback |
14
- | `identity_provider_connections` | (new / connector tables) | `credential_ref` → vault/KMS; never store raw tokens in D1 rows |
8
+ | `identity_users` / account plane | **`accounts`** + `auth_users` | **Account SSOT** — row of record |
9
+ | `identity_external_accounts` | `account_identities` | IdP linkage only |
10
+ | `identity_sessions` (+ `type`) | `auth_sessions` (+ `type`) | browser / desktop |
11
+ | `identity_auth_events` | `auth_event_log` | Same semantics |
12
+ | `identity_oauth_transactions` (+ native cols) | `identity_oauth_states` | Requires `app_id NOT NULL`; native cols optional |
13
+ | `identity_native_handoffs` | `identity_native_handoffs` | Single-use desktop pickup |
14
+ | `identity_companies` | `company` | Branding / host resolution |
15
+ | `identity_provider_connections` | `identity_provider_connections` (or connector tables) | `credential_ref` only — never raw secrets |
15
16
  | `identity_app_registry` | cache of `agentsam.app.json` | Disk manifests remain SSOT |
16
17
  | `identity_route_registry` | projection cache | Disk manifests remain SSOT |
17
18
  | `identity_oauth_clients` … | optional `identity.oauth-server` pack | Only if product is an AS |
18
19
 
20
+ Password recovery is **not** a portable core table. It uses `createPasswordResetService` with an injected `{get,put,delete}` store. Optional `identity.recovery` pack may exist later.
21
+
19
22
  ## Schema version
20
23
 
21
- Both adapters read `identity_schema_meta.schema_version` (SQLite) or
22
- `PRAGMA`/meta row. Missing `app_id` on OAuth transactions is an
23
- `IdentitySchemaError('IDENTITY_SCHEMA_MIGRATION_REQUIRED')`, not a soft
24
- downgrade.
24
+ Portable adapters read `identity_schema_meta.schema_version`. Lane 1 requires version **2** (after `005_identity_company_native.sql`). Missing `app_id` on OAuth transactions is an `IdentitySchemaError`, not a soft downgrade.
25
25
 
26
26
  ## Packs
27
27
 
28
28
  | Pack | Apply when |
29
29
  |---|---|
30
- | `identity.core` | Always (local + hosted) |
30
+ | `identity.core` | Always (local + hosted portable) |
31
31
  | `identity.oauth-client` | Signing into external IdPs |
32
32
  | `identity.oauth-server` | Product issues its own codes/tokens |
33
+
34
+ Family manifest: `packages/identity/schema/agentsam.identity/manifest.json`
35
+ Generic contract: `protocol/database/agentsam.schema-pack.v1.schema.json`
@@ -0,0 +1,109 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+
5
+ const HERE = path.dirname(fileURLToPath(import.meta.url));
6
+
7
+ /** Package-owned portable SQL SSOT (resolves inside installed npm package). */
8
+ export const PORTABLE_IDENTITY_MIGRATIONS_DIR = path.resolve(HERE, 'sqlite');
9
+
10
+ /** @deprecated Prefer PORTABLE_IDENTITY_MIGRATIONS_DIR */
11
+ export const SQLITE_MIGRATIONS_DIR = PORTABLE_IDENTITY_MIGRATIONS_DIR;
12
+
13
+ export const IDENTITY_SCHEMA_PACK_MANIFEST_PATH = path.resolve(
14
+ HERE,
15
+ '../schema/agentsam.identity/manifest.json',
16
+ );
17
+
18
+ /**
19
+ * Resolve the agentsam.identity pack-family manifest from the installed package.
20
+ * @returns {{ manifest: object, manifestPath: string, sqlDir: string }}
21
+ */
22
+ export function resolveIdentitySchemaPack() {
23
+ const manifestPath = IDENTITY_SCHEMA_PACK_MANIFEST_PATH;
24
+ const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
25
+ return {
26
+ manifest,
27
+ manifestPath,
28
+ sqlDir: PORTABLE_IDENTITY_MIGRATIONS_DIR,
29
+ };
30
+ }
31
+
32
+ function listPortableMigrationFiles(opts = {}) {
33
+ const files = [
34
+ '001_identity_core.sql',
35
+ '002_identity_oauth_client.sql',
36
+ '005_identity_company_native.sql',
37
+ ];
38
+ if (opts.includeOAuthServer) {
39
+ files.push('003_identity_oauth_server.sql');
40
+ files.push('004_identity_oauth_consent_catalog.sql');
41
+ }
42
+ return files;
43
+ }
44
+
45
+ function isIgnorableMigrationError(err) {
46
+ const msg = String(err?.message || err || '').toLowerCase();
47
+ return (
48
+ msg.includes('duplicate column')
49
+ || msg.includes('already exists')
50
+ || msg.includes('duplicate column name')
51
+ );
52
+ }
53
+
54
+ async function runSql(db, sql) {
55
+ if (typeof db.exec === 'function') {
56
+ try {
57
+ db.exec(sql);
58
+ return;
59
+ } catch (err) {
60
+ // Multi-statement exec may fail mid-file on duplicate ALTER; fall through to statements.
61
+ if (!isIgnorableMigrationError(err) && !/alter table/i.test(sql)) throw err;
62
+ }
63
+ }
64
+ const stripped = sql.replace(/\/\*[\s\S]*?\*\//g, '');
65
+ const statements = stripped
66
+ .split(';')
67
+ .map((s) => s.replace(/--[^\n]*/g, '').trim())
68
+ .filter(Boolean);
69
+ for (const statement of statements) {
70
+ try {
71
+ if (typeof db.exec === 'function' && !db.prepare) {
72
+ db.exec(statement);
73
+ } else {
74
+ await db.prepare(statement).run();
75
+ }
76
+ } catch (err) {
77
+ if (isIgnorableMigrationError(err)) continue;
78
+ throw err;
79
+ }
80
+ }
81
+ }
82
+
83
+ /**
84
+ * Apply portable agentsam.identity SQL pack to a SQLite or D1-shaped target.
85
+ * Same SQL sources for both; executor differs by driver API.
86
+ *
87
+ * @param {{ prepare?: Function, exec?: Function }} target
88
+ * @param {{ includeOAuthServer?: boolean }} [opts]
89
+ */
90
+ export async function applyPortableIdentityMigrations(target, opts = {}) {
91
+ if (!target || (typeof target.exec !== 'function' && typeof target.prepare !== 'function')) {
92
+ throw new Error('applyPortableIdentityMigrations_requires_db_target');
93
+ }
94
+ const files = listPortableMigrationFiles(opts);
95
+ for (const file of files) {
96
+ const sqlPath = path.join(PORTABLE_IDENTITY_MIGRATIONS_DIR, file);
97
+ const sql = fs.readFileSync(sqlPath, 'utf8');
98
+ await runSql(target, sql);
99
+ }
100
+ }
101
+
102
+ /**
103
+ * Stable compatibility alias — same portable pack, same sources.
104
+ * @param {{ prepare?: Function, exec?: Function }} db
105
+ * @param {{ includeOAuthServer?: boolean }} [opts]
106
+ */
107
+ export async function applySqliteIdentityMigrations(db, opts = {}) {
108
+ return applyPortableIdentityMigrations(db, opts);
109
+ }
@@ -1,5 +1,5 @@
1
1
  -- identity.oauth-server consent catalog.
2
- -- Issuer branding remains owned by the portable company table.
2
+ -- Issuer branding remains owned by portable identity_companies (identity.core).
3
3
 
4
4
  INSERT OR IGNORE INTO identity_schema_meta (key, value)
5
5
  VALUES ('pack_oauth_consent_catalog', '1');
@@ -0,0 +1,52 @@
1
+ -- identity.core extension — company / brand + native handoff parity
2
+ -- Portable identity_* names only. Does not create IAM `company` / `accounts`.
3
+ -- Does NOT include password-reset tables — recovery remains storage-agnostic
4
+ -- (createPasswordResetService + injected {get,put,delete} store).
5
+ -- Upgrades schema_version 1 → 2. Safe to re-run (IF NOT EXISTS / ignorable ALTERs).
6
+
7
+ INSERT OR REPLACE INTO identity_schema_meta (key, value)
8
+ VALUES ('schema_version', '2');
9
+
10
+ INSERT OR IGNORE INTO identity_schema_meta (key, value)
11
+ VALUES ('pack_company_native', '1');
12
+
13
+ CREATE TABLE IF NOT EXISTS identity_companies (
14
+ id TEXT PRIMARY KEY NOT NULL,
15
+ slug TEXT NOT NULL,
16
+ name TEXT NOT NULL,
17
+ legal_name TEXT,
18
+ logo_url TEXT,
19
+ favicon_url TEXT,
20
+ primary_color TEXT,
21
+ auth_bg_color TEXT,
22
+ support_email TEXT,
23
+ website_url TEXT,
24
+ tagline TEXT,
25
+ meta_json TEXT,
26
+ created_at INTEGER NOT NULL,
27
+ updated_at INTEGER NOT NULL
28
+ );
29
+
30
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_identity_companies_slug
31
+ ON identity_companies(slug);
32
+
33
+ CREATE TABLE IF NOT EXISTS identity_native_handoffs (
34
+ handoff_hash TEXT PRIMARY KEY NOT NULL,
35
+ session_id TEXT NOT NULL,
36
+ challenge TEXT NOT NULL,
37
+ expires_at INTEGER NOT NULL,
38
+ created_at INTEGER NOT NULL,
39
+ consumed_at INTEGER,
40
+ FOREIGN KEY (session_id) REFERENCES identity_sessions(id)
41
+ );
42
+
43
+ CREATE INDEX IF NOT EXISTS idx_identity_native_handoffs_expires
44
+ ON identity_native_handoffs(expires_at);
45
+
46
+ -- Session type for browser vs desktop/native (default keeps existing rows as browser).
47
+ ALTER TABLE identity_sessions ADD COLUMN type TEXT NOT NULL DEFAULT 'browser';
48
+
49
+ -- Native OAuth transaction fields (optional on browser transactions).
50
+ ALTER TABLE identity_oauth_transactions ADD COLUMN client_type TEXT;
51
+ ALTER TABLE identity_oauth_transactions ADD COLUMN native_challenge TEXT;
52
+ ALTER TABLE identity_oauth_transactions ADD COLUMN native_redirect TEXT;
@@ -1,9 +1,8 @@
1
1
  {
2
- "name": "@inneranimalmedia/agentsam-sdk-identity",
3
- "version": "2.6.5",
4
- "private": true,
2
+ "name": "@inneranimalmedia/agentsam-identity",
3
+ "version": "2.6.7",
5
4
  "type": "module",
6
- "description": "Identity module for @inneranimalmedia/agentsam-sdk (workspace \u2014 publish via root SDK)",
5
+ "description": "Identity module for @inneranimalmedia/agentsam-sdk (workspace — publish via root SDK)",
7
6
  "agentsam": {
8
7
  "system": "identity",
9
8
  "kind": "library",
@@ -27,10 +26,17 @@
27
26
  "./contracts/provider": "./src/contracts/provider.js",
28
27
  "./contracts/external-identity": "./src/contracts/external-identity.js",
29
28
  "./contracts/auth-config": "./src/contracts/auth-config.js",
29
+ "./contracts/identity-store": "./src/contracts/identity-store.js",
30
30
  "./oauth/callback": "./src/oauth/callback.js",
31
31
  "./frontend/auth-portal/*": "./src/frontend/auth-portal/*",
32
32
  "./providers/cloudflare": "./src/providers/cloudflare/index.js",
33
- "./oauth/consent-view": "./src/oauth/consent-view.js"
33
+ "./providers/chatgpt": "./src/providers/chatgpt/index.js",
34
+ "./contracts/sign-in-options": "./src/contracts/sign-in-options.js",
35
+ "./oauth/consent-view": "./src/oauth/consent-view.js",
36
+ "./adapters/sqlite": "./src/adapters/sqlite/index.js",
37
+ "./adapters/portable-d1": "./src/adapters/portable-d1/index.js",
38
+ "./adapters/iam-compat": "./src/adapters/iam-compat/index.js",
39
+ "./adapters/cloudflare-d1": "./src/adapters/cloudflare-d1/index.js"
34
40
  },
35
41
  "scripts": {
36
42
  "test": "node --test tests/*.test.mjs",
@@ -38,5 +44,20 @@
38
44
  },
39
45
  "engines": {
40
46
  "node": ">=20"
41
- }
47
+ },
48
+ "publishConfig": {
49
+ "access": "public"
50
+ },
51
+ "repository": {
52
+ "type": "git",
53
+ "url": "git+https://github.com/SamPrimeaux/agentsam-sdk.git",
54
+ "directory": "packages/identity"
55
+ },
56
+ "files": [
57
+ "src",
58
+ "backend",
59
+ "migrations",
60
+ "schema",
61
+ "scripts"
62
+ ]
42
63
  }
@@ -0,0 +1,101 @@
1
+ {
2
+ "$schema": "../../../protocol/database/agentsam.schema-pack.v1.schema.json",
3
+ "schema": "agentsam.schema-pack.v1",
4
+ "id": "agentsam.identity",
5
+ "version": "2.0.0",
6
+ "pack_family": "agentsam.identity",
7
+ "components": [
8
+ "identity.core",
9
+ "identity.oauth-client",
10
+ "identity.oauth-server"
11
+ ],
12
+ "component_dependencies": {
13
+ "identity.core": [],
14
+ "identity.oauth-client": ["identity.core"],
15
+ "identity.oauth-server": ["identity.core"]
16
+ },
17
+ "adapters": [
18
+ "sqlite",
19
+ "portable-d1",
20
+ "iam-compat"
21
+ ],
22
+ "sql": {
23
+ "portable_dir": "migrations/sqlite",
24
+ "files": {
25
+ "identity.core": [
26
+ "001_identity_core.sql",
27
+ "005_identity_company_native.sql"
28
+ ],
29
+ "identity.oauth-client": [
30
+ "002_identity_oauth_client.sql"
31
+ ],
32
+ "identity.oauth-server": [
33
+ "003_identity_oauth_server.sql",
34
+ "004_identity_oauth_consent_catalog.sql"
35
+ ]
36
+ },
37
+ "apply_order_fresh": [
38
+ "001_identity_core.sql",
39
+ "002_identity_oauth_client.sql",
40
+ "005_identity_company_native.sql"
41
+ ],
42
+ "apply_order_upgrade_v1_to_v2": [
43
+ "005_identity_company_native.sql"
44
+ ],
45
+ "optional_after_core": [
46
+ "003_identity_oauth_server.sql",
47
+ "004_identity_oauth_consent_catalog.sql"
48
+ ]
49
+ },
50
+ "tables": {
51
+ "identity.core": [
52
+ "identity_schema_meta",
53
+ "identity_users",
54
+ "identity_external_accounts",
55
+ "identity_sessions",
56
+ "identity_auth_events",
57
+ "identity_app_registry",
58
+ "identity_route_registry",
59
+ "identity_companies",
60
+ "identity_native_handoffs"
61
+ ],
62
+ "identity.oauth-client": [
63
+ "identity_oauth_transactions",
64
+ "identity_provider_connections"
65
+ ],
66
+ "identity.oauth-server": [
67
+ "identity_oauth_clients",
68
+ "identity_oauth_authorization_codes",
69
+ "identity_oauth_access_tokens",
70
+ "identity_oauth_refresh_tokens",
71
+ "identity_oauth_resources",
72
+ "identity_oauth_scopes",
73
+ "identity_oauth_resource_scopes"
74
+ ]
75
+ },
76
+ "table_patterns": ["identity_*"],
77
+ "seed_policy": "none",
78
+ "compatibility": {
79
+ "iam-compat": {
80
+ "owns_portable_schema": false,
81
+ "maps_onto": [
82
+ "accounts",
83
+ "auth_users",
84
+ "account_identities",
85
+ "auth_sessions",
86
+ "auth_event_log",
87
+ "identity_oauth_states",
88
+ "identity_native_handoffs",
89
+ "company"
90
+ ],
91
+ "stable_alias": "createCloudflareD1Adapter"
92
+ }
93
+ },
94
+ "recovery": {
95
+ "authority": "createPasswordResetService",
96
+ "storage": "injected {get,put,delete} — not IdentityStore / not identity.core SQL",
97
+ "optional_future_pack": "identity.recovery"
98
+ },
99
+ "owner": "@inneranimalmedia/agentsam-sdk/identity",
100
+ "notes": "Pack family for portable IdentityStore. Component IDs remain the contract units. Portable SQL SSOT is migrations/sqlite/. IAM production tables are NOT this pack — use the iam-compat adapter against hosted schema. Secrets are credential_ref / vault references, never raw tokens in rows. Password recovery stays storage-agnostic."
101
+ }
@@ -59,14 +59,20 @@ function sanitizeUser(user) {
59
59
  };
60
60
  }
61
61
 
62
+ function cliArg(name) {
63
+ const i = process.argv.indexOf(name);
64
+ return i > 1 ? process.argv[i + 1] : undefined;
65
+ }
66
+
62
67
  const request = await readStdin();
63
- const dbPath = path.resolve(
64
- process.env.AGENTSAM_IDENTITY_DB || '.agentsam/data/local-studio-identity.sqlite',
65
- );
66
- const manifestPath = path.resolve(
67
- process.env.AGENTSAM_IDENTITY_APP_MANIFEST
68
- || new URL('../../../apps/local-studio/agentsam.app.json', import.meta.url).pathname,
69
- );
68
+ const dbArg = cliArg('--db');
69
+ const manifestArg = cliArg('--manifest');
70
+ if (!dbArg || !manifestArg) {
71
+ process.stderr.write('usage: local-identity-bridge.mjs --db <sqlite path> --manifest <agentsam.app.json>\n');
72
+ process.exit(2);
73
+ }
74
+ const dbPath = path.resolve(dbArg);
75
+ const manifestPath = path.resolve(manifestArg);
70
76
 
71
77
  fs.mkdirSync(path.dirname(dbPath), { recursive: true, mode: 0o700 });
72
78
  const nativeDb = new DatabaseSync(dbPath);
@@ -119,15 +119,15 @@ function hubHtml(baseUrl) {
119
119
  const PREVIEW_COMPANY = {
120
120
  id: 'co_default',
121
121
  slug: 'default',
122
- name: 'AgentSam',
123
- legalName: 'AgentSam',
124
- logoUrl: '/shared/agentsam-mark.svg',
122
+ name: 'Preview App',
123
+ legalName: 'Preview App',
124
+ logoUrl: '/shared/app-icon.png',
125
125
  faviconUrl: null,
126
126
  primaryColor: '#007AFF',
127
127
  authBgColor: '#050508',
128
- supportEmail: 'support@agentsam.dev',
129
- websiteUrl: 'https://agentsam.dev',
130
- tagline: 'Instant Access',
128
+ supportEmail: 'support@example.com',
129
+ websiteUrl: 'https://example.com',
130
+ tagline: 'Welcome',
131
131
  meta: {
132
132
  privacyUrl: '/privacy',
133
133
  termsUrl: '/terms',