@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,7 +1,6 @@
1
1
  {
2
2
  "name": "@inneranimalmedia/agentsam-workbench",
3
- "version": "0.1.0",
4
- "private": true,
3
+ "version": "2.6.7",
5
4
  "description": "Reusable AgentSam workbench primitives for agent threads, composer, browser, terminal and resizable work surfaces.",
6
5
  "type": "module",
7
6
  "main": "./src/index.ts",
@@ -10,6 +9,7 @@
10
9
  "./agent": "./src/agent/index.ts",
11
10
  "./agent/mini-agentsam.css": "./src/agent/mini-agentsam.css",
12
11
  "./agent/contextual-composer.css": "./src/agent/contextual-composer.css",
12
+ "./agent/tool-permission.css": "./src/agent/tool-permission.css",
13
13
  "./shell": "./src/shell/index.ts",
14
14
  "./browser": "./src/browser/index.ts",
15
15
  "./terminal": "./src/terminal/index.ts",
@@ -22,7 +22,7 @@
22
22
  "test": "node --test test/*.test.mjs"
23
23
  },
24
24
  "dependencies": {
25
- "@inneranimalmedia/agentsam-contracts": "0.1.0"
25
+ "@inneranimalmedia/agentsam-contracts": "2.6.7"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": ">=18",
@@ -34,5 +34,16 @@
34
34
  "react": "^19.2.0",
35
35
  "react-dom": "^19.2.0",
36
36
  "typescript": "^5.9.3"
37
- }
37
+ },
38
+ "publishConfig": {
39
+ "access": "public"
40
+ },
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "git+https://github.com/SamPrimeaux/agentsam-sdk.git",
44
+ "directory": "packages/agentsam-workbench"
45
+ },
46
+ "files": [
47
+ "src"
48
+ ]
38
49
  }
@@ -0,0 +1,94 @@
1
+ import type {
2
+ AgentToolPermissionDecision,
3
+ AgentToolPermissionRequest as AgentToolPermissionRequestContract,
4
+ } from '@inneranimalmedia/agentsam-contracts';
5
+
6
+ export interface ToolPermissionRequestProps {
7
+ request: AgentToolPermissionRequestContract;
8
+ busy?: boolean;
9
+ className?: string;
10
+ onDecision: (decision: AgentToolPermissionDecision) => void | Promise<void>;
11
+ }
12
+
13
+ function permissionSummary(request: AgentToolPermissionRequestContract) {
14
+ if (request.summary) return request.summary;
15
+ const provider = request.provider ? ' through ' + request.provider : '';
16
+ return 'AgentSam wants to use ' + request.displayName + provider + '.';
17
+ }
18
+
19
+ export function ToolPermissionRequest({
20
+ request,
21
+ busy = false,
22
+ className,
23
+ onDecision,
24
+ }: ToolPermissionRequestProps) {
25
+ const titleId = request.id + '-title';
26
+ const descriptionId = request.id + '-description';
27
+ const rootClass = 'agentsam-tool-permission-overlay' + (className ? ' ' + className : '');
28
+ return (
29
+ <div className={rootClass} role="presentation">
30
+ <section
31
+ className="agentsam-tool-permission-card"
32
+ role="alertdialog"
33
+ aria-modal="true"
34
+ aria-labelledby={titleId}
35
+ aria-describedby={descriptionId}
36
+ >
37
+ <header className="agentsam-tool-permission-header">
38
+ <div className="agentsam-tool-permission-mark" aria-hidden="true">AS</div>
39
+ <div>
40
+ <h2 id={titleId}>Allow AgentSam to use {request.displayName}?</h2>
41
+ <p id={descriptionId}>{permissionSummary(request)}</p>
42
+ </div>
43
+ </header>
44
+
45
+ <div className="agentsam-tool-permission-body">
46
+ <dl className="agentsam-tool-permission-facts">
47
+ <div><dt>Tool</dt><dd>{request.toolKey}</dd></div>
48
+ {request.provider ? <div><dt>Provider</dt><dd>{request.provider}</dd></div> : null}
49
+ {request.scope ? <div><dt>Scope</dt><dd>{request.scope}</dd></div> : null}
50
+ {request.riskLevel ? <div><dt>Risk</dt><dd>{request.riskLevel}</dd></div> : null}
51
+ </dl>
52
+
53
+ {request.sharedData?.length ? (
54
+ <div className="agentsam-tool-permission-shared">
55
+ <h3>Sharing data includes:</h3>
56
+ <dl>
57
+ {request.sharedData.map((item) => (
58
+ <div key={item.label + ':' + item.value}>
59
+ <dt>{item.label}</dt>
60
+ <dd>{item.value}</dd>
61
+ </div>
62
+ ))}
63
+ </dl>
64
+ </div>
65
+ ) : null}
66
+
67
+ {request.destructive ? (
68
+ <p className="agentsam-tool-permission-warning">
69
+ This action may modify or delete data. Review the scope before allowing it.
70
+ </p>
71
+ ) : null}
72
+ </div>
73
+
74
+ <footer className="agentsam-tool-permission-actions">
75
+ <button type="button" disabled={busy} onClick={() => void onDecision('deny')}>
76
+ Deny
77
+ </button>
78
+ <span className="agentsam-tool-permission-spacer" />
79
+ <button type="button" disabled={busy} onClick={() => void onDecision('allow_once')}>
80
+ Allow once
81
+ </button>
82
+ <button
83
+ type="button"
84
+ className="agentsam-tool-permission-primary"
85
+ disabled={busy}
86
+ onClick={() => void onDecision('allow_session')}
87
+ >
88
+ Allow for this session
89
+ </button>
90
+ </footer>
91
+ </section>
92
+ </div>
93
+ );
94
+ }
@@ -8,3 +8,5 @@ export * from './ConnectedAgentPanel';
8
8
  export * from './GoalStatusStrip';
9
9
  export * from './MiniAgentSam';
10
10
  export * from './ContextualComposer';
11
+
12
+ export * from './ToolPermissionRequest';
@@ -0,0 +1,134 @@
1
+ .agentsam-tool-permission-overlay {
2
+ position: fixed;
3
+ inset: 0;
4
+ z-index: 120;
5
+ display: grid;
6
+ place-items: center;
7
+ padding: 24px;
8
+ background: color-mix(in srgb, var(--background, #09090b) 68%, transparent);
9
+ backdrop-filter: blur(10px);
10
+ }
11
+ .agentsam-tool-permission-card {
12
+ width: min(640px, calc(100vw - 32px));
13
+ overflow: hidden;
14
+ border: 1px solid color-mix(in srgb, var(--border, #3f3f46) 82%, transparent);
15
+ border-radius: 22px;
16
+ background: color-mix(in srgb, var(--card, #18181b) 97%, black);
17
+ color: var(--card-foreground, #fafafa);
18
+ box-shadow: 0 28px 90px rgba(0, 0, 0, .45);
19
+ }
20
+ .agentsam-tool-permission-header {
21
+ display: flex;
22
+ gap: 14px;
23
+ align-items: flex-start;
24
+ padding: 22px 22px 18px;
25
+ border-bottom: 1px solid var(--border, #3f3f46);
26
+ }
27
+ .agentsam-tool-permission-mark {
28
+ display: grid;
29
+ place-items: center;
30
+ width: 38px;
31
+ height: 38px;
32
+ flex: 0 0 auto;
33
+ border: 1px solid var(--border, #3f3f46);
34
+ border-radius: 11px;
35
+ background: var(--background, #09090b);
36
+ font-size: 11px;
37
+ font-weight: 700;
38
+ letter-spacing: .08em;
39
+ }
40
+ .agentsam-tool-permission-header h2 {
41
+ margin: 0;
42
+ font-size: 16px;
43
+ font-weight: 650;
44
+ }
45
+ .agentsam-tool-permission-header p {
46
+ margin: 6px 0 0;
47
+ color: var(--muted-foreground, #a1a1aa);
48
+ font-size: 13px;
49
+ line-height: 1.45;
50
+ }
51
+ .agentsam-tool-permission-body {
52
+ display: grid;
53
+ gap: 16px;
54
+ padding: 18px 22px;
55
+ }
56
+ .agentsam-tool-permission-facts,
57
+ .agentsam-tool-permission-shared dl {
58
+ display: grid;
59
+ gap: 8px;
60
+ margin: 0;
61
+ }
62
+ .agentsam-tool-permission-facts > div,
63
+ .agentsam-tool-permission-shared dl > div {
64
+ display: grid;
65
+ grid-template-columns: minmax(90px, 140px) 1fr;
66
+ gap: 14px;
67
+ align-items: baseline;
68
+ }
69
+ .agentsam-tool-permission-facts dt,
70
+ .agentsam-tool-permission-shared dt {
71
+ color: var(--muted-foreground, #a1a1aa);
72
+ font-size: 12px;
73
+ }
74
+ .agentsam-tool-permission-facts dd,
75
+ .agentsam-tool-permission-shared dd {
76
+ min-width: 0;
77
+ margin: 0;
78
+ overflow-wrap: anywhere;
79
+ font-size: 13px;
80
+ }
81
+ .agentsam-tool-permission-shared { padding-top: 2px; }
82
+ .agentsam-tool-permission-shared h3 {
83
+ margin: 0 0 10px;
84
+ font-size: 12px;
85
+ font-weight: 600;
86
+ }
87
+ .agentsam-tool-permission-warning {
88
+ margin: 0;
89
+ border: 1px solid color-mix(in srgb, #f59e0b 45%, var(--border, #3f3f46));
90
+ border-radius: 12px;
91
+ padding: 10px 12px;
92
+ color: color-mix(in srgb, #fbbf24 72%, var(--card-foreground, #fafafa));
93
+ font-size: 12px;
94
+ line-height: 1.45;
95
+ }
96
+ .agentsam-tool-permission-actions {
97
+ display: flex;
98
+ gap: 8px;
99
+ align-items: center;
100
+ padding: 14px 16px;
101
+ border-top: 1px solid var(--border, #3f3f46);
102
+ background: color-mix(in srgb, var(--muted, #27272a) 42%, transparent);
103
+ }
104
+ .agentsam-tool-permission-actions button {
105
+ min-height: 36px;
106
+ border: 1px solid var(--border, #3f3f46);
107
+ border-radius: 10px;
108
+ padding: 0 13px;
109
+ background: var(--card, #18181b);
110
+ color: inherit;
111
+ font: inherit;
112
+ font-size: 12px;
113
+ cursor: pointer;
114
+ }
115
+ .agentsam-tool-permission-actions button:disabled {
116
+ cursor: wait;
117
+ opacity: .55;
118
+ }
119
+ .agentsam-tool-permission-actions button:hover:not(:disabled) {
120
+ background: var(--muted, #27272a);
121
+ }
122
+ .agentsam-tool-permission-actions .agentsam-tool-permission-primary {
123
+ border-color: color-mix(in srgb, var(--primary, #fafafa) 48%, var(--border, #3f3f46));
124
+ background: var(--primary, #fafafa);
125
+ color: var(--primary-foreground, #18181b);
126
+ }
127
+ .agentsam-tool-permission-spacer { flex: 1; }
128
+ @media (max-width: 640px) {
129
+ .agentsam-tool-permission-overlay { padding: 12px; align-items: end; }
130
+ .agentsam-tool-permission-card { width: 100%; border-radius: 18px; }
131
+ .agentsam-tool-permission-actions { flex-wrap: wrap; }
132
+ .agentsam-tool-permission-spacer { display: none; }
133
+ .agentsam-tool-permission-actions button { flex: 1 1 auto; }
134
+ }
@@ -1,12 +1,22 @@
1
1
  {
2
2
  "name": "@inneranimalmedia/agentsam-connector-cloudflare",
3
- "version": "0.1.0",
4
- "private": true,
3
+ "version": "2.6.7",
5
4
  "type": "module",
6
5
  "main": "./src/index.js",
7
6
  "exports": {
8
7
  ".": "./src/index.js",
9
8
  "./capabilities": "./src/capabilities.js",
10
9
  "./api-client": "./src/api-client.js"
11
- }
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/SamPrimeaux/agentsam-sdk.git",
17
+ "directory": "packages/connectors/cloudflare"
18
+ },
19
+ "files": [
20
+ "src"
21
+ ]
12
22
  }
@@ -135,15 +135,16 @@ export class CloudflareApiClient {
135
135
  }
136
136
 
137
137
  const headers = {
138
- Authorization: `Bearer ${this.apiToken}`,
139
138
  Accept: 'application/json',
139
+ ...(opts.headers || {}),
140
+ Authorization: `Bearer ${this.apiToken}`,
140
141
  };
141
142
  let body;
142
143
  if (opts.body != null && method !== 'GET' && method !== 'HEAD') {
143
144
  if (opts.body instanceof FormData || typeof opts.body === 'string' || Buffer.isBuffer(opts.body)) {
144
145
  body = opts.body;
145
146
  } else {
146
- headers['Content-Type'] = 'application/json';
147
+ if (!headers['Content-Type'] && !headers['content-type']) headers['Content-Type'] = 'application/json';
147
148
  body = JSON.stringify(opts.body);
148
149
  }
149
150
  }
@@ -0,0 +1,127 @@
1
+ import { createCloudflareApiClient } from '../api-client.js';
2
+
3
+ export const VECTORIZE_CAPABILITY_ID = 'cloudflare.vectorize';
4
+
5
+ const clean = value => String(value || '').trim();
6
+
7
+ function assertIndex(index) {
8
+ const value = clean(index);
9
+ if (!value) throw new Error('cloudflare_vectorize_index_required');
10
+ return value;
11
+ }
12
+
13
+ function normalizeVector(record = {}) {
14
+ const id = clean(record.id);
15
+ const values = Array.isArray(record.values) ? record.values : record.vector;
16
+ if (!id) throw new Error('cloudflare_vectorize_vector_id_required');
17
+ if (!Array.isArray(values) || !values.length || values.some(value => typeof value !== 'number' || !Number.isFinite(value))) {
18
+ throw new Error('cloudflare_vectorize_vector_values_required');
19
+ }
20
+ const vector = { id, values };
21
+ if (record.namespace != null) vector.namespace = record.namespace;
22
+ if (record.metadata != null) vector.metadata = record.metadata;
23
+ return vector;
24
+ }
25
+
26
+ function workerBinding(binding, context = {}) {
27
+ if (context.backend && typeof context.backend.query === 'function' && typeof context.backend.upsert === 'function') return context.backend;
28
+ if (context.workerBinding && typeof context.workerBinding.query === 'function' && typeof context.workerBinding.upsert === 'function') return context.workerBinding;
29
+ return context.env?.[binding] || null;
30
+ }
31
+
32
+ async function apiClient(context = {}) {
33
+ if (context.apiClient) return context.apiClient;
34
+ return createCloudflareApiClient({
35
+ capabilityId: VECTORIZE_CAPABILITY_ID,
36
+ env: context.env || process.env,
37
+ ownerId: context.ownerId || context.owner_id || '',
38
+ explicitAccountId: context.accountId || context.account_id || '',
39
+ apiToken: context.apiToken || '',
40
+ authMode: context.authMode,
41
+ fetchImpl: context.fetchImpl,
42
+ decryptUserOauthToken: context.decryptUserOauthToken,
43
+ });
44
+ }
45
+
46
+ function indexPath(client, index, operation = '') {
47
+ const suffix = `/vectorize/v2/indexes/${encodeURIComponent(assertIndex(index))}${operation ? `/${operation}` : ''}`;
48
+ return client.accountPath(suffix);
49
+ }
50
+
51
+ export async function vectorizeUpsert({ binding, index, records, context = {} } = {}) {
52
+ const vectors = (records || []).map(normalizeVector);
53
+ const worker = workerBinding(binding, context);
54
+ if (worker) return { transport: 'worker_binding', result: await worker.upsert(vectors) };
55
+ const client = await apiClient(context);
56
+ const ndjson = vectors.map(row => JSON.stringify(row)).join('\n') + (vectors.length ? '\n' : '');
57
+ const result = await client.request('POST', indexPath(client, index, 'upsert'), {
58
+ capabilityId: VECTORIZE_CAPABILITY_ID,
59
+ operation: 'vectorize.upsert',
60
+ headers: { 'Content-Type': 'application/x-ndjson' },
61
+ body: ndjson,
62
+ });
63
+ return { transport: 'cloudflare_api', result: result.result, auth: result.auth };
64
+ }
65
+
66
+ export async function vectorizeQuery({ binding, index, vector, options = {}, context = {} } = {}) {
67
+ if (!Array.isArray(vector) || !vector.length) throw new Error('cloudflare_vectorize_query_vector_required');
68
+ const worker = workerBinding(binding, context);
69
+ if (worker) return { transport: 'worker_binding', result: await worker.query(vector, options) };
70
+ const client = await apiClient(context);
71
+ const result = await client.request('POST', indexPath(client, index, 'query'), {
72
+ capabilityId: VECTORIZE_CAPABILITY_ID,
73
+ operation: 'vectorize.query',
74
+ body: { vector, ...options },
75
+ });
76
+ return { transport: 'cloudflare_api', result: result.result, auth: result.auth };
77
+ }
78
+
79
+ export async function vectorizeDelete({ binding, index, ids, context = {} } = {}) {
80
+ const normalizedIds = (ids || []).map(clean).filter(Boolean);
81
+ const worker = workerBinding(binding, context);
82
+ if (worker) {
83
+ if (typeof worker.deleteByIds !== 'function') throw new Error('cloudflare_vectorize_worker_delete_unavailable');
84
+ return { transport: 'worker_binding', result: await worker.deleteByIds(normalizedIds) };
85
+ }
86
+ const client = await apiClient(context);
87
+ const result = await client.request('POST', indexPath(client, index, 'delete_by_ids'), {
88
+ capabilityId: VECTORIZE_CAPABILITY_ID,
89
+ operation: 'vectorize.delete_by_ids',
90
+ body: { ids: normalizedIds },
91
+ });
92
+ return { transport: 'cloudflare_api', result: result.result, auth: result.auth };
93
+ }
94
+
95
+ export async function vectorizeGetByIds({ binding, index, ids, context = {} } = {}) {
96
+ const normalizedIds = (ids || []).map(clean).filter(Boolean);
97
+ const worker = workerBinding(binding, context);
98
+ if (worker) {
99
+ if (typeof worker.getByIds !== 'function') throw new Error('cloudflare_vectorize_worker_get_by_ids_unavailable');
100
+ return { transport: 'worker_binding', result: await worker.getByIds(normalizedIds) };
101
+ }
102
+ const client = await apiClient(context);
103
+ const result = await client.request('POST', indexPath(client, index, 'get_by_ids'), {
104
+ capabilityId: VECTORIZE_CAPABILITY_ID,
105
+ operation: 'vectorize.get_by_ids',
106
+ body: { ids: normalizedIds },
107
+ });
108
+ return { transport: 'cloudflare_api', result: result.result, auth: result.auth };
109
+ }
110
+
111
+ export async function vectorizeHealth({ binding, index, context = {} } = {}) {
112
+ const worker = workerBinding(binding, context);
113
+ if (worker) {
114
+ if (typeof worker.describe !== 'function') return { operational: true, transport: 'worker_binding', detail: null };
115
+ return { operational: true, transport: 'worker_binding', detail: await worker.describe() };
116
+ }
117
+ try {
118
+ const client = await apiClient(context);
119
+ const result = await client.request('GET', indexPath(client, index, 'info'), {
120
+ capabilityId: VECTORIZE_CAPABILITY_ID,
121
+ operation: 'vectorize.info',
122
+ });
123
+ return { operational: true, transport: 'cloudflare_api', detail: result.result, auth: result.auth };
124
+ } catch (error) {
125
+ return { operational: false, transport: 'cloudflare_api', error: error?.code || error?.message || String(error) };
126
+ }
127
+ }
@@ -64,6 +64,7 @@ export * as keyless from './families/keyless.js';
64
64
  export * as tokenValidation from './families/token-validation.js';
65
65
  export * as pages from './families/pages.js';
66
66
  export * as snippets from './families/snippets.js';
67
+ export * as vectorize from './families/vectorize.js';
67
68
 
68
69
  import { scopesForCapabilities as _scopesForCapabilities, scopesForFeaturePacks as _scopesForFeaturePacks } from './capabilities.js';
69
70
  import { CLOUDFLARE_ALL_SCOPES as _CLOUDFLARE_ALL_SCOPES, isKnownCloudflareScope } from './scope-catalog.js';
@@ -1,9 +1,9 @@
1
- # @inneranimalmedia/heuristic-theme
1
+ # @inneranimalmedia/theme-heuristic
2
2
 
3
3
  Stock AgentSam CMS storefront shell theme. Exports a deterministic theme contract consumed by CMS presets and `theme.storefront.shell`.
4
4
 
5
5
  ```js
6
- import { createStorefrontShellTheme } from "@inneranimalmedia/heuristic-theme";
6
+ import { createStorefrontShellTheme } from "@inneranimalmedia/theme-heuristic";
7
7
 
8
8
  const theme = createStorefrontShellTheme();
9
9
  ```
@@ -1,6 +1,6 @@
1
1
  {
2
- "name": "@inneranimalmedia/heuristic-theme",
3
- "version": "0.1.0",
2
+ "name": "@inneranimalmedia/theme-heuristic",
3
+ "version": "2.6.7",
4
4
  "description": "Stock AgentSam CMS storefront shell theme contract (heuristic-theme).",
5
5
  "type": "module",
6
6
  "main": "./src/index.js",
@@ -21,5 +21,10 @@
21
21
  "publishConfig": {
22
22
  "access": "public"
23
23
  },
24
- "license": "MIT"
24
+ "license": "MIT",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/SamPrimeaux/agentsam-sdk.git",
28
+ "directory": "packages/heuristic-theme"
29
+ }
25
30
  }
@@ -14,11 +14,11 @@ export function createHeuristicThemeProductRow({ accountId, repositoryId = null
14
14
  status: "wired",
15
15
  repository_id: repositoryId,
16
16
  canonical_path: "packages/heuristic-theme",
17
- package_name: "@inneranimalmedia/heuristic-theme",
17
+ package_name: "@inneranimalmedia/theme-heuristic",
18
18
  metadata: {
19
19
  origin: "gallery_mount",
20
20
  normalization_state: "wired",
21
- package: "@inneranimalmedia/heuristic-theme",
21
+ package: "@inneranimalmedia/theme-heuristic",
22
22
  preview_kind: "live",
23
23
  capabilities: ["theme.storefront.shell"],
24
24
  app_manifest: null,
@@ -32,7 +32,7 @@ export function createStorefrontShellTheme() {
32
32
  { type: "footer", label: "Footer" },
33
33
  ],
34
34
  metadata: {
35
- package: "@inneranimalmedia/heuristic-theme",
35
+ package: "@inneranimalmedia/theme-heuristic",
36
36
  capability: "theme.storefront.shell",
37
37
  deterministic: true,
38
38
  demoSite: "demo",
@@ -10,7 +10,7 @@ test("createStorefrontShellTheme returns stable stock contract", () => {
10
10
  assert.ok(theme.surfaces.includes("cms.editor"));
11
11
  assert.ok(theme.slots.shell.includes("header"));
12
12
  assert.equal(theme.tokens["--color-accent"], "#1e6a6f");
13
- assert.equal(theme.metadata.package, "@inneranimalmedia/heuristic-theme");
13
+ assert.equal(theme.metadata.package, "@inneranimalmedia/theme-heuristic");
14
14
  assert.deepEqual(createStorefrontShellTheme(), theme);
15
15
  });
16
16
 
@@ -5,7 +5,7 @@
5
5
  "kind": "integration",
6
6
  "status": "extracted",
7
7
  "package": {
8
- "name": "@inneranimalmedia/agentsam-sdk-identity",
8
+ "name": "@inneranimalmedia/agentsam-identity",
9
9
  "version": "2.6.3",
10
10
  "directory": "packages/identity"
11
11
  },
@@ -5,7 +5,9 @@
5
5
  "providers": [
6
6
  {
7
7
  "id": "inneranimalmedia",
8
- "aliases": ["iam"],
8
+ "aliases": [
9
+ "iam"
10
+ ],
9
11
  "oauth_provider_key": "iam",
10
12
  "kind": "oidc",
11
13
  "status": "ready",
@@ -40,7 +42,9 @@
40
42
  },
41
43
  {
42
44
  "id": "google_desktop",
43
- "aliases": ["google-desktop"],
45
+ "aliases": [
46
+ "google-desktop"
47
+ ],
44
48
  "kind": "oauth",
45
49
  "status": "ready",
46
50
  "implementation": "src/providers/google",
@@ -52,10 +56,8 @@
52
56
  "required_configuration": [
53
57
  "GOOGLE_DESKTOP_CLIENT_ID"
54
58
  ],
55
- "optional_configuration": [
56
- "GOOGLE_DESKTOP_CLIENT_SECRET"
57
- ],
58
- "notes": "Desktop/public PKCE client (Console type Desktop app — no secret). Worker brokers POST /api/oauth/google/desktop-exchange for loopback redirects. Optional GOOGLE_DESKTOP_CLIENT_SECRET only if the client id was mis-typed as Web."
59
+ "optional_configuration": [],
60
+ "notes": "Desktop/public PKCE client (Console type Desktop app). Uses system browser + loopback redirect and no embedded client secret."
59
61
  },
60
62
  {
61
63
  "id": "github",
@@ -81,7 +83,7 @@
81
83
  "identity.oauth.authorize",
82
84
  "identity.profile.resolve"
83
85
  ],
84
- "notes": "Contract + authorize URL only — exchange not implemented."
86
+ "notes": "Contract + authorize URL only \u2014 exchange not implemented."
85
87
  },
86
88
  {
87
89
  "id": "email",
@@ -111,6 +113,24 @@
111
113
  "CLOUDFLARE_OAUTH_CLIENT_SECRET"
112
114
  ],
113
115
  "notes": "Cloudflare sign-in (same Worker secrets as the Cloudflare resource connector). Client secret optional for PKCE-only clients (Token Authentication Method = None)."
116
+ },
117
+ {
118
+ "id": "chatgpt",
119
+ "aliases": [
120
+ "openai",
121
+ "chatgpt-hosted"
122
+ ],
123
+ "kind": "hosted_headers",
124
+ "status": "ready",
125
+ "registered": true,
126
+ "implementation": "src/providers/chatgpt",
127
+ "capabilities": [
128
+ "identity.hosted.headers",
129
+ "identity.profile.resolve",
130
+ "cms.auth_host"
131
+ ],
132
+ "required_configuration": [],
133
+ "notes": "ChatGPT / OpenAI Apps SDK hosted identity. Reads oai-authenticated-* request headers and normalizes to NormalizedExternalIdentity (provider=chatgpt). Not classic OAuth client credentials — use createChatGptCmsAuthHost for /cms protection."
114
134
  }
115
135
  ]
116
136
  }
@@ -20,14 +20,14 @@ identity.login(request); // alpha: throws until Identity Service adapter is wi
20
20
  identity.session.fromRequest(request); // alpha: throws until adapter is wired
21
21
  ```
22
22
 
23
- **Alpha scope:** contracts, D1 adapter, Worker router, `agentsam identity init` scaffold (`app/frontend` + `backend` + migrations), and `agentsam identity preview`. Default OAuth: minted `IAM_CLIENT_ID` + `IAM_CLIENT_SECRET`. BYOK options: Google web, Google Desktop (`GOOGLE_DESKTOP_CLIENT_ID`), GitHub, Cloudflare (`CLOUDFLARE_OAUTH_CLIENT_*`). **Account SSOT:** `accounts` (not `account_identities` — that table is IdP linkage only).
23
+ **Alpha scope:** contracts, D1 adapter, Worker router, `agentsam identity init` scaffold (`app/frontend` + `backend` + migrations), and `agentsam identity preview`. Default OAuth: minted `IAM_CLIENT_ID` + `IAM_CLIENT_SECRET`. BYOK options: Google web, Google Desktop (`GOOGLE_DESKTOP_CLIENT_ID`), GitHub, Cloudflare (`CLOUDFLARE_OAUTH_CLIENT_*`). **Stock CMS sign-in picker:** Cloudflare · Google · Inner Animal Media · ChatGPT (`hosted_headers` via Apps SDK). **Account SSOT:** `accounts` (not `account_identities` — that table is IdP linkage only).
24
24
 
25
25
  ## Layout
26
26
 
27
27
  ```
28
28
  src/
29
29
  core/ identity · sessions · accounts · recovery
30
- providers/ google · github · gcp · email
30
+ providers/ google · github · gcp · email · iam · cloudflare · chatgpt
31
31
  oauth/ authorize/callback (extract from IAM — next sprint)
32
32
  adapters/ inneranimalmedia · cloudflare-d1
33
33
  contracts/