@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,1739 @@
1
+ /* AgentSam CMS shell — mobile-first, warm command center + editor chrome */
2
+ .iam-cms-shell {
3
+ --cms-bg: var(--color-background, #f9f7f2);
4
+ --cms-panel: var(--color-card, #ffffff);
5
+ --cms-border: var(--color-border, #e8e4dc);
6
+ --cms-text: var(--color-foreground, #1a1a1a);
7
+ --cms-muted: var(--color-muted-foreground, #6b6560);
8
+ --cms-teal: var(--color-accent, #0d9488);
9
+ --cms-teal-soft: color-mix(in srgb, var(--cms-teal) 14%, transparent);
10
+ --cms-shadow: 0 1px 0 color-mix(in srgb, var(--cms-text) 5%, transparent), 0 12px 40px color-mix(in srgb, var(--cms-text) 7%, transparent);
11
+ display: flex;
12
+ flex-direction: column;
13
+ flex: 1;
14
+ min-height: 0;
15
+ min-width: 0;
16
+ background: var(--cms-bg);
17
+ color: var(--cms-text);
18
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
19
+ }
20
+
21
+ .iam-cms-shell .text-muted,
22
+ .iam-cms-shell .iam-cms-muted,
23
+ .iam-agentsam-cms-host .iam-cms-muted {
24
+ color: var(--cms-muted);
25
+ }
26
+
27
+ .iam-cms-shell--hub-minimal .iam-cms-shell__top,
28
+ .iam-cms-shell--hub-minimal .iam-cms-shell__nav {
29
+ display: none !important;
30
+ }
31
+
32
+ .iam-cms-shell--hub-minimal .iam-cms-shell__body {
33
+ padding: 0;
34
+ min-height: 0;
35
+ }
36
+
37
+ .sr-only {
38
+ position: absolute;
39
+ width: 1px;
40
+ height: 1px;
41
+ padding: 0;
42
+ margin: -1px;
43
+ overflow: hidden;
44
+ clip: rect(0, 0, 0, 0);
45
+ white-space: nowrap;
46
+ border: 0;
47
+ }
48
+
49
+ .iam-cms-empty-card__title {
50
+ margin: 0 0 6px;
51
+ font-size: 15px;
52
+ font-weight: 700;
53
+ color: var(--cms-text);
54
+ }
55
+
56
+ .iam-cms-shell__top {
57
+ display: flex;
58
+ flex-direction: column;
59
+ gap: 0;
60
+ border-bottom: 1px solid var(--cms-border);
61
+ background: var(--cms-panel);
62
+ shrink: 0;
63
+ }
64
+
65
+ .iam-cms-shell__bar {
66
+ display: flex;
67
+ align-items: center;
68
+ gap: 10px;
69
+ padding: 10px 12px;
70
+ min-height: 52px;
71
+ }
72
+
73
+ @media (min-width: 768px) {
74
+ .iam-cms-shell__bar {
75
+ padding: 10px 20px;
76
+ min-height: 56px;
77
+ }
78
+ }
79
+
80
+ .iam-cms-shell__back {
81
+ display: inline-flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ width: 36px;
85
+ height: 36px;
86
+ border: 1px solid var(--cms-border);
87
+ border-radius: 10px;
88
+ background: transparent;
89
+ color: var(--cms-muted);
90
+ cursor: pointer;
91
+ flex-shrink: 0;
92
+ }
93
+
94
+ .iam-cms-shell__back:hover {
95
+ background: var(--cms-bg);
96
+ color: var(--cms-text);
97
+ }
98
+
99
+ .iam-cms-shell__brand {
100
+ display: flex;
101
+ align-items: center;
102
+ gap: 10px;
103
+ min-width: 0;
104
+ flex: 1;
105
+ }
106
+
107
+ .iam-cms-shell__mark {
108
+ width: 36px;
109
+ height: 36px;
110
+ border-radius: 11px;
111
+ display: grid;
112
+ place-items: center;
113
+ font-size: 11px;
114
+ font-weight: 800;
115
+ color: #fff;
116
+ background: var(--cms-teal);
117
+ flex-shrink: 0;
118
+ overflow: hidden;
119
+ }
120
+
121
+ .iam-cms-shell__mark-img {
122
+ width: 100%;
123
+ height: 100%;
124
+ object-fit: cover;
125
+ display: block;
126
+ }
127
+
128
+ .iam-cms-shell__mark-wrap {
129
+ flex-shrink: 0;
130
+ }
131
+
132
+ .iam-cms-shell__title-wrap {
133
+ min-width: 0;
134
+ }
135
+
136
+ .iam-cms-shell__title {
137
+ margin: 0;
138
+ font-size: 15px;
139
+ font-weight: 750;
140
+ letter-spacing: -0.02em;
141
+ white-space: nowrap;
142
+ overflow: hidden;
143
+ text-overflow: ellipsis;
144
+ }
145
+
146
+ .iam-cms-shell__domain {
147
+ margin: 2px 0 0;
148
+ font-size: 12px;
149
+ color: var(--cms-muted);
150
+ white-space: nowrap;
151
+ overflow: hidden;
152
+ text-overflow: ellipsis;
153
+ }
154
+
155
+ .iam-cms-shell__actions {
156
+ display: flex;
157
+ align-items: center;
158
+ gap: 8px;
159
+ flex-shrink: 0;
160
+ }
161
+
162
+ .iam-cms-shell__agent-btn {
163
+ display: inline-flex;
164
+ align-items: center;
165
+ gap: 6px;
166
+ height: 36px;
167
+ padding: 0 12px;
168
+ border-radius: 999px;
169
+ border: 1px solid var(--cms-border);
170
+ background: var(--cms-teal-soft);
171
+ color: var(--cms-teal);
172
+ font-size: 12px;
173
+ font-weight: 700;
174
+ cursor: pointer;
175
+ }
176
+
177
+ .iam-cms-shell__agent-btn:hover {
178
+ border-color: color-mix(in srgb, var(--cms-teal) 35%, var(--cms-border));
179
+ }
180
+
181
+ .iam-cms-shell__nav {
182
+ display: flex;
183
+ gap: 4px;
184
+ padding: 0 12px 10px;
185
+ overflow-x: auto;
186
+ scrollbar-width: none;
187
+ }
188
+
189
+ .iam-cms-shell__nav::-webkit-scrollbar {
190
+ display: none;
191
+ }
192
+
193
+ @media (min-width: 768px) {
194
+ .iam-cms-shell__nav {
195
+ padding: 0 20px 12px;
196
+ }
197
+ }
198
+
199
+ .iam-cms-shell__nav-link {
200
+ display: inline-flex;
201
+ align-items: center;
202
+ height: 32px;
203
+ padding: 0 12px;
204
+ border-radius: 999px;
205
+ border: 1px solid transparent;
206
+ background: transparent;
207
+ color: var(--cms-muted);
208
+ font-size: 12px;
209
+ font-weight: 650;
210
+ white-space: nowrap;
211
+ cursor: pointer;
212
+ text-decoration: none;
213
+ }
214
+
215
+ .iam-cms-shell__nav-link:hover {
216
+ background: var(--cms-bg);
217
+ color: var(--cms-text);
218
+ }
219
+
220
+ .iam-cms-shell__nav-link.is-active {
221
+ background: var(--cms-teal-soft);
222
+ border-color: color-mix(in srgb, var(--cms-teal) 22%, transparent);
223
+ color: var(--cms-teal);
224
+ }
225
+
226
+ .iam-cms-shell__body {
227
+ flex: 1;
228
+ min-height: 0;
229
+ overflow: hidden;
230
+ display: flex;
231
+ flex-direction: column;
232
+ }
233
+
234
+ .iam-cms-shell--editor .iam-cms-shell__top {
235
+ box-shadow: 0 1px 0 rgba(26, 26, 26, 0.04);
236
+ }
237
+
238
+ .iam-cms-shell__agent-btn.is-active {
239
+ background: #fff;
240
+ border-color: color-mix(in srgb, var(--cms-teal) 35%, var(--cms-border));
241
+ }
242
+
243
+ .iam-cms-studio-shell {
244
+ flex: 1;
245
+ min-height: 0;
246
+ min-width: 0;
247
+ display: flex;
248
+ flex-direction: column;
249
+ overflow: hidden;
250
+ }
251
+
252
+ .iam-cms-studio-frame {
253
+ flex: 1;
254
+ min-height: 0;
255
+ width: 100%;
256
+ border: 0;
257
+ }
258
+
259
+ .iam-cms-shell__agent-fab {
260
+ position: fixed;
261
+ right: max(16px, env(safe-area-inset-right, 0px));
262
+ bottom: max(20px, env(safe-area-inset-bottom, 0px));
263
+ z-index: 45;
264
+ width: 44px;
265
+ height: 44px;
266
+ border-radius: 999px;
267
+ border: 1px solid color-mix(in srgb, var(--cms-teal) 28%, var(--cms-border));
268
+ background: var(--cms-panel);
269
+ color: var(--cms-teal);
270
+ box-shadow: 0 8px 28px rgba(26, 26, 26, 0.12);
271
+ display: grid;
272
+ place-items: center;
273
+ cursor: pointer;
274
+ }
275
+
276
+ .iam-cms-shell__agent-fab:hover {
277
+ background: var(--cms-teal-soft);
278
+ }
279
+
280
+ .iam-cms-compose {
281
+ padding: 16px 12px 0;
282
+ }
283
+
284
+ @media (min-width: 768px) {
285
+ .iam-cms-compose {
286
+ padding: 20px 20px 0;
287
+ }
288
+ }
289
+
290
+ .iam-cms-compose__inner {
291
+ max-width: 920px;
292
+ margin: 0 auto;
293
+ padding: 14px 16px;
294
+ border-radius: 16px;
295
+ border: 1px solid var(--cms-border);
296
+ background: var(--cms-panel);
297
+ box-shadow: var(--cms-shadow);
298
+ display: flex;
299
+ align-items: center;
300
+ gap: 10px;
301
+ }
302
+
303
+ .iam-cms-compose__input {
304
+ flex: 1;
305
+ min-width: 0;
306
+ border: 0;
307
+ background: transparent;
308
+ font-size: 14px;
309
+ color: var(--cms-text);
310
+ outline: none;
311
+ }
312
+
313
+ .iam-cms-compose__input::placeholder {
314
+ color: var(--cms-muted);
315
+ }
316
+
317
+ .iam-cms-compose__send {
318
+ width: 36px;
319
+ height: 36px;
320
+ border-radius: 999px;
321
+ border: 0;
322
+ background: var(--cms-teal);
323
+ color: #fff;
324
+ display: grid;
325
+ place-items: center;
326
+ cursor: pointer;
327
+ flex-shrink: 0;
328
+ }
329
+
330
+ .iam-cms-compose__send:disabled {
331
+ opacity: 0.45;
332
+ cursor: not-allowed;
333
+ }
334
+
335
+ .iam-cms-dashboard {
336
+ padding: 8px 0 16px;
337
+ max-width: none;
338
+ margin: 0;
339
+ }
340
+
341
+ @media (min-width: 768px) {
342
+ .iam-cms-dashboard {
343
+ padding: 8px 0 24px;
344
+ }
345
+ }
346
+
347
+ .iam-cms-dashboard__hero {
348
+ display: grid;
349
+ gap: 12px;
350
+ margin-bottom: 16px;
351
+ grid-template-columns: repeat(2, minmax(0, 1fr));
352
+ }
353
+
354
+ @media (min-width: 720px) {
355
+ .iam-cms-dashboard__hero {
356
+ grid-template-columns: repeat(4, minmax(0, 1fr));
357
+ }
358
+
359
+ .iam-cms-site-hero,
360
+ .iam-cms-site-hero--setup,
361
+ .iam-cms-site-hero--skeleton {
362
+ grid-column: span 2;
363
+ grid-row: span 2;
364
+ }
365
+ }
366
+
367
+ @media (min-width: 1100px) {
368
+ .iam-cms-dashboard__hero {
369
+ grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.9fr);
370
+ align-items: stretch;
371
+ gap: 12px;
372
+ }
373
+
374
+ .iam-cms-site-hero,
375
+ .iam-cms-site-hero--setup,
376
+ .iam-cms-site-hero--skeleton {
377
+ grid-column: 1;
378
+ grid-row: 1;
379
+ min-width: 0;
380
+ align-self: stretch;
381
+ }
382
+
383
+ .iam-cms-modules {
384
+ display: grid;
385
+ grid-column: 2;
386
+ grid-row: 1;
387
+ grid-template-columns: repeat(2, minmax(0, 1fr));
388
+ grid-template-rows: repeat(2, minmax(148px, 1fr));
389
+ gap: 12px;
390
+ min-height: 100%;
391
+ }
392
+
393
+ .iam-cms-modules .iam-cms-module {
394
+ min-height: 0;
395
+ height: 100%;
396
+ }
397
+ }
398
+
399
+ .iam-cms-card {
400
+ background: var(--cms-panel);
401
+ border: 1px solid var(--cms-border);
402
+ border-radius: 18px;
403
+ box-shadow: var(--cms-shadow);
404
+ }
405
+
406
+ .iam-cms-site-hero {
407
+ padding: 18px;
408
+ display: flex;
409
+ flex-direction: column;
410
+ gap: 14px;
411
+ min-height: 148px;
412
+ min-width: 0;
413
+ overflow: visible;
414
+ container-type: inline-size;
415
+ container-name: cms-site-hero;
416
+ }
417
+
418
+ .iam-cms-site-hero__head {
419
+ display: flex;
420
+ align-items: flex-start;
421
+ justify-content: space-between;
422
+ gap: 12px;
423
+ }
424
+
425
+ .iam-cms-site-hero__live {
426
+ display: inline-flex;
427
+ align-items: center;
428
+ gap: 6px;
429
+ height: 26px;
430
+ padding: 0 10px;
431
+ border-radius: 999px;
432
+ font-size: 11px;
433
+ font-weight: 700;
434
+ color: #047857;
435
+ background: rgba(16, 185, 129, 0.12);
436
+ border: 1px solid rgba(16, 185, 129, 0.2);
437
+ }
438
+
439
+ .iam-cms-site-hero__live i {
440
+ width: 7px;
441
+ height: 7px;
442
+ border-radius: 999px;
443
+ background: #10b981;
444
+ }
445
+
446
+ .iam-cms-site-hero__name {
447
+ margin: 0;
448
+ font-size: clamp(22px, 3vw, 28px);
449
+ font-weight: 850;
450
+ letter-spacing: -0.03em;
451
+ }
452
+
453
+ .iam-cms-site-hero__meta {
454
+ color: var(--cms-muted);
455
+ font-size: 13px;
456
+ }
457
+
458
+ .iam-cms-site-hero__stats {
459
+ display: grid;
460
+ grid-template-columns: repeat(2, minmax(0, 1fr));
461
+ gap: 8px;
462
+ min-width: 0;
463
+ width: 100%;
464
+ }
465
+
466
+ /* Prefer card width over viewport so Theme isn't clipped in a narrow hero column */
467
+ @container cms-site-hero (min-width: 440px) {
468
+ .iam-cms-site-hero__stats {
469
+ grid-template-columns: repeat(4, minmax(0, 1fr));
470
+ }
471
+ }
472
+
473
+ .iam-cms-stat {
474
+ padding: 10px 12px;
475
+ border-radius: 12px;
476
+ background: var(--cms-bg);
477
+ border: 1px solid var(--cms-border);
478
+ min-width: 0;
479
+ overflow: hidden;
480
+ }
481
+
482
+ .iam-cms-stat__label {
483
+ font-size: 10px;
484
+ font-weight: 750;
485
+ letter-spacing: 0.08em;
486
+ text-transform: uppercase;
487
+ color: var(--cms-muted);
488
+ white-space: nowrap;
489
+ overflow: hidden;
490
+ text-overflow: ellipsis;
491
+ }
492
+
493
+ .iam-cms-stat__value {
494
+ margin-top: 6px;
495
+ font-size: 20px;
496
+ font-weight: 850;
497
+ letter-spacing: -0.03em;
498
+ white-space: nowrap;
499
+ overflow: hidden;
500
+ text-overflow: ellipsis;
501
+ }
502
+
503
+ .iam-cms-site-hero__identity {
504
+ display: flex;
505
+ align-items: center;
506
+ gap: 14px;
507
+ min-width: 0;
508
+ }
509
+
510
+ .iam-cms-site-hero__footer {
511
+ display: flex;
512
+ flex-wrap: wrap;
513
+ align-items: center;
514
+ gap: 10px 16px;
515
+ margin-top: 14px;
516
+ padding-top: 14px;
517
+ border-top: 1px solid var(--cms-border);
518
+ }
519
+
520
+ .iam-cms-site-hero__footer-link {
521
+ display: inline-flex;
522
+ align-items: center;
523
+ gap: 6px;
524
+ border: 0;
525
+ background: transparent;
526
+ color: var(--cms-muted);
527
+ font-size: 13px;
528
+ font-weight: 600;
529
+ cursor: pointer;
530
+ padding: 4px 0;
531
+ }
532
+
533
+ .iam-cms-site-hero__footer-link:hover {
534
+ color: var(--cms-text);
535
+ }
536
+
537
+ .iam-cms-import-strip--compact {
538
+ flex: 1;
539
+ min-width: 180px;
540
+ margin: 0;
541
+ padding: 0;
542
+ border: 0;
543
+ background: transparent;
544
+ gap: 8px;
545
+ }
546
+
547
+ .iam-cms-import-strip--compact .iam-cms-import-strip__drop {
548
+ min-height: 36px;
549
+ padding: 6px 12px;
550
+ font-size: 12px;
551
+ }
552
+
553
+ .iam-cms-site-hero__actions {
554
+ display: flex;
555
+ flex-wrap: wrap;
556
+ gap: 10px;
557
+ }
558
+
559
+ .iam-cms-btn {
560
+ height: 40px;
561
+ padding: 0 16px;
562
+ border-radius: 10px;
563
+ border: 1px solid var(--cms-border);
564
+ background: var(--cms-panel);
565
+ color: var(--cms-text);
566
+ font-size: 13px;
567
+ font-weight: 700;
568
+ cursor: pointer;
569
+ display: inline-flex;
570
+ align-items: center;
571
+ gap: 8px;
572
+ }
573
+
574
+ .iam-cms-btn:hover {
575
+ background: var(--cms-bg);
576
+ }
577
+
578
+ .iam-cms-btn--primary {
579
+ background: var(--cms-teal);
580
+ border-color: color-mix(in srgb, var(--cms-teal) 40%, transparent);
581
+ color: #fff;
582
+ }
583
+
584
+ .iam-cms-btn--primary:hover {
585
+ filter: brightness(1.05);
586
+ }
587
+
588
+ .iam-cms-modules {
589
+ display: grid;
590
+ grid-template-columns: repeat(2, minmax(0, 1fr));
591
+ gap: 12px;
592
+ }
593
+
594
+ @media (min-width: 720px) {
595
+ .iam-cms-modules {
596
+ grid-column: span 2;
597
+ grid-template-columns: repeat(2, minmax(0, 1fr));
598
+ }
599
+ }
600
+
601
+ .iam-cms-module {
602
+ padding: 16px;
603
+ text-align: left;
604
+ cursor: pointer;
605
+ transition: border-color 0.15s, transform 0.15s;
606
+ min-height: 148px;
607
+ display: flex;
608
+ flex-direction: column;
609
+ }
610
+
611
+ .iam-cms-module:hover {
612
+ border-color: color-mix(in srgb, var(--cms-teal) 35%, var(--cms-border));
613
+ transform: translateY(-1px);
614
+ }
615
+
616
+ .iam-cms-module.is-muted:hover {
617
+ transform: none;
618
+ }
619
+
620
+ .iam-cms-module.is-muted .iam-cms-module__sub {
621
+ color: var(--cms-muted);
622
+ }
623
+
624
+ .iam-cms-module--skeleton {
625
+ pointer-events: none;
626
+ }
627
+
628
+ .iam-cms-site-hero--setup {
629
+ min-height: 100%;
630
+ }
631
+
632
+ .iam-cms-site-picker {
633
+ display: grid;
634
+ gap: 8px;
635
+ }
636
+
637
+ .iam-cms-site-picker__btn {
638
+ display: flex;
639
+ flex-direction: column;
640
+ align-items: flex-start;
641
+ gap: 2px;
642
+ width: 100%;
643
+ padding: 10px 12px;
644
+ border-radius: 10px;
645
+ border: 1px solid var(--cms-border);
646
+ background: var(--cms-bg);
647
+ cursor: pointer;
648
+ text-align: left;
649
+ }
650
+
651
+ .iam-cms-site-picker__btn:hover {
652
+ border-color: color-mix(in srgb, var(--cms-teal) 35%, var(--cms-border));
653
+ background: var(--cms-teal-soft);
654
+ }
655
+
656
+ .iam-cms-site-picker__name {
657
+ font-size: 13px;
658
+ font-weight: 700;
659
+ color: var(--cms-text);
660
+ }
661
+
662
+ .iam-cms-site-picker__slug {
663
+ font-size: 11px;
664
+ color: var(--cms-muted);
665
+ }
666
+
667
+ .iam-cms-empty-card--inline {
668
+ margin-bottom: 12px;
669
+ }
670
+
671
+ .iam-cms-panel-skeleton {
672
+ padding-bottom: 8px;
673
+ }
674
+
675
+ .iam-cms-site-hero--skeleton {
676
+ pointer-events: none;
677
+ }
678
+
679
+ .iam-cms-module__title {
680
+ margin: 0;
681
+ font-size: 14px;
682
+ font-weight: 780;
683
+ }
684
+
685
+ .iam-cms-module__desc {
686
+ margin: 8px 0 0;
687
+ font-size: 12px;
688
+ color: var(--cms-muted);
689
+ line-height: 1.5;
690
+ }
691
+
692
+ .iam-cms-module__sub {
693
+ margin: 6px 0 0;
694
+ font-size: 12px;
695
+ color: var(--cms-text);
696
+ font-weight: 650;
697
+ line-height: 1.45;
698
+ }
699
+
700
+ .iam-cms-module__cta {
701
+ margin-top: auto;
702
+ padding-top: 12px;
703
+ display: inline-flex;
704
+ align-items: center;
705
+ gap: 4px;
706
+ font-size: 11px;
707
+ font-weight: 700;
708
+ color: var(--cms-teal);
709
+ }
710
+
711
+ .iam-cms-dashboard__grid {
712
+ display: grid;
713
+ gap: 16px;
714
+ margin-top: 16px;
715
+ }
716
+
717
+ @media (min-width: 900px) {
718
+ .iam-cms-dashboard__grid {
719
+ grid-template-columns: 1.2fr 0.8fr;
720
+ }
721
+
722
+ .iam-cms-dashboard__grid--three {
723
+ grid-template-columns: 1.1fr 0.9fr 0.9fr;
724
+ }
725
+ }
726
+
727
+ .iam-cms-panel-head {
728
+ padding: 14px 16px;
729
+ border-bottom: 1px solid var(--cms-border);
730
+ font-size: 13px;
731
+ font-weight: 780;
732
+ }
733
+
734
+ .iam-cms-activity {
735
+ list-style: none;
736
+ margin: 0;
737
+ padding: 8px 0;
738
+ }
739
+
740
+ .iam-cms-activity li {
741
+ display: flex;
742
+ align-items: flex-start;
743
+ justify-content: space-between;
744
+ gap: 12px;
745
+ padding: 10px 16px;
746
+ border-bottom: 1px solid color-mix(in srgb, var(--cms-border) 70%, transparent);
747
+ font-size: 13px;
748
+ }
749
+
750
+ .iam-cms-activity li:last-child {
751
+ border-bottom: 0;
752
+ }
753
+
754
+ .iam-cms-activity__action {
755
+ color: var(--cms-text);
756
+ font-weight: 650;
757
+ flex: 1;
758
+ min-width: 0;
759
+ }
760
+
761
+ .iam-cms-activity__meta {
762
+ display: flex;
763
+ flex-direction: column;
764
+ align-items: flex-end;
765
+ gap: 4px;
766
+ flex-shrink: 0;
767
+ }
768
+
769
+ .iam-cms-activity__tag {
770
+ font-size: 10px;
771
+ font-weight: 800;
772
+ text-transform: uppercase;
773
+ letter-spacing: 0.04em;
774
+ padding: 2px 8px;
775
+ border-radius: 999px;
776
+ background: color-mix(in srgb, var(--cms-muted) 12%, transparent);
777
+ color: var(--cms-muted);
778
+ }
779
+
780
+ .iam-cms-activity__tag.is-published {
781
+ background: color-mix(in srgb, #10b981 14%, transparent);
782
+ color: #047857;
783
+ }
784
+
785
+ .iam-cms-activity__when {
786
+ color: var(--cms-muted);
787
+ font-size: 11px;
788
+ white-space: nowrap;
789
+ }
790
+
791
+ .iam-cms-quick {
792
+ list-style: none;
793
+ margin: 0;
794
+ padding: 6px 0;
795
+ }
796
+
797
+ .iam-cms-quick li button {
798
+ width: 100%;
799
+ display: flex;
800
+ align-items: center;
801
+ justify-content: space-between;
802
+ gap: 8px;
803
+ padding: 11px 16px;
804
+ border: 0;
805
+ background: transparent;
806
+ text-align: left;
807
+ font-size: 13px;
808
+ color: var(--cms-text);
809
+ cursor: pointer;
810
+ }
811
+
812
+ .iam-cms-quick li button:hover {
813
+ background: var(--cms-bg);
814
+ }
815
+
816
+ .iam-cms-runtime {
817
+ margin-top: 16px;
818
+ padding: 12px 16px;
819
+ border-radius: 12px;
820
+ border: 1px dashed var(--cms-border);
821
+ background: color-mix(in srgb, var(--cms-bg) 80%, var(--cms-panel));
822
+ font-size: 12px;
823
+ color: var(--cms-muted);
824
+ line-height: 1.5;
825
+ }
826
+
827
+ .iam-cms-runtime code {
828
+ font-size: 11px;
829
+ color: var(--cms-text);
830
+ }
831
+
832
+ .iam-cms-loading {
833
+ padding: 48px 20px;
834
+ text-align: center;
835
+ color: var(--cms-muted);
836
+ font-size: 14px;
837
+ }
838
+
839
+ .iam-cms-skeleton {
840
+ padding: 16px;
841
+ max-width: 1200px;
842
+ margin: 0 auto;
843
+ }
844
+
845
+ .iam-cms-skeleton__hero {
846
+ display: grid;
847
+ gap: 16px;
848
+ margin-bottom: 16px;
849
+ }
850
+
851
+ @media (min-width: 900px) {
852
+ .iam-cms-skeleton__hero {
853
+ grid-template-columns: 1.4fr 1fr 1fr 1fr 1fr;
854
+ }
855
+ }
856
+
857
+ .iam-cms-skeleton__card {
858
+ border-radius: 16px;
859
+ border: 1px solid var(--cms-border);
860
+ background: var(--cms-panel);
861
+ overflow: hidden;
862
+ min-height: 140px;
863
+ }
864
+
865
+ .iam-cms-skeleton__card--wide {
866
+ min-height: 180px;
867
+ }
868
+
869
+ .iam-cms-skeleton__block {
870
+ background: linear-gradient(
871
+ 90deg,
872
+ color-mix(in srgb, var(--cms-border) 35%, var(--cms-panel)) 0%,
873
+ color-mix(in srgb, var(--cms-border) 15%, var(--cms-panel)) 50%,
874
+ color-mix(in srgb, var(--cms-border) 35%, var(--cms-panel)) 100%
875
+ );
876
+ background-size: 200% 100%;
877
+ animation: iam-cms-shimmer 1.4s ease-in-out infinite;
878
+ border-radius: 8px;
879
+ }
880
+
881
+ .iam-cms-skeleton__grid {
882
+ display: grid;
883
+ gap: 16px;
884
+ }
885
+
886
+ @media (min-width: 900px) {
887
+ .iam-cms-skeleton__grid {
888
+ grid-template-columns: 1.1fr 0.9fr 0.9fr;
889
+ }
890
+ }
891
+
892
+ @keyframes iam-cms-shimmer {
893
+ 0% { background-position: 200% 0; }
894
+ 100% { background-position: -200% 0; }
895
+ }
896
+
897
+ .iam-cms-sites-hub__body {
898
+ padding: 20px 16px 32px;
899
+ max-width: 960px;
900
+ margin: 0 auto;
901
+ width: 100%;
902
+ }
903
+
904
+ .iam-cms-sites-hub__lead {
905
+ margin: 0 0 16px;
906
+ font-size: 14px;
907
+ color: var(--cms-muted);
908
+ }
909
+
910
+ .iam-cms-empty-card {
911
+ margin: 24px auto;
912
+ max-width: 420px;
913
+ padding: 28px 24px;
914
+ text-align: center;
915
+ border-radius: 16px;
916
+ border: 1px solid var(--cms-border);
917
+ background: var(--cms-panel);
918
+ box-shadow: var(--cms-shadow);
919
+ }
920
+
921
+ .iam-cms-shell__kicker {
922
+ margin: 0 0 4px;
923
+ font-size: 11px;
924
+ font-weight: 700;
925
+ letter-spacing: 0.12em;
926
+ text-transform: uppercase;
927
+ color: var(--cms-muted);
928
+ }
929
+
930
+ /* Guided chat hero — /dashboard/cms entrance */
931
+ .iam-cms-guided-hero {
932
+ padding: 28px 16px 24px;
933
+ text-align: center;
934
+ border-bottom: 1px solid var(--cms-border);
935
+ background: linear-gradient(180deg, #fff 0%, var(--cms-bg) 100%);
936
+ }
937
+
938
+ @media (min-width: 768px) {
939
+ .iam-cms-guided-hero {
940
+ padding: 36px 24px 28px;
941
+ }
942
+ }
943
+
944
+ .iam-cms-guided-hero__copy {
945
+ max-width: 720px;
946
+ margin: 0 auto 20px;
947
+ }
948
+
949
+ .iam-cms-guided-hero__kicker {
950
+ margin: 0 0 10px;
951
+ font-size: 11px;
952
+ font-weight: 700;
953
+ letter-spacing: 0.14em;
954
+ text-transform: uppercase;
955
+ color: var(--cms-teal);
956
+ }
957
+
958
+ .iam-cms-guided-hero__title {
959
+ margin: 0;
960
+ font-size: clamp(28px, 4vw, 42px);
961
+ font-weight: 850;
962
+ letter-spacing: -0.03em;
963
+ line-height: 1.08;
964
+ color: var(--cms-text);
965
+ }
966
+
967
+ .iam-cms-guided-hero__sub {
968
+ margin: 10px 0 0;
969
+ font-size: 15px;
970
+ color: var(--cms-muted);
971
+ }
972
+
973
+ .iam-cms-guided-hero__compose {
974
+ max-width: 760px;
975
+ margin: 0 auto;
976
+ padding: 14px 16px 12px;
977
+ border-radius: 18px;
978
+ border: 1px solid var(--cms-border);
979
+ background: var(--cms-panel);
980
+ box-shadow: var(--cms-shadow);
981
+ text-align: left;
982
+ }
983
+
984
+ .iam-cms-guided-hero__compose-meta {
985
+ display: flex;
986
+ flex-wrap: wrap;
987
+ gap: 8px;
988
+ margin-bottom: 10px;
989
+ }
990
+
991
+ .iam-cms-guided-hero__agent-pill,
992
+ .iam-cms-guided-hero__mode-pill {
993
+ display: inline-flex;
994
+ align-items: center;
995
+ gap: 6px;
996
+ height: 28px;
997
+ padding: 0 10px;
998
+ border-radius: 999px;
999
+ border: 1px solid var(--cms-border);
1000
+ background: var(--cms-bg);
1001
+ font-size: 11px;
1002
+ font-weight: 700;
1003
+ color: var(--cms-muted);
1004
+ }
1005
+
1006
+ .iam-cms-guided-hero__agent-pill {
1007
+ color: var(--cms-teal);
1008
+ background: var(--cms-teal-soft);
1009
+ border-color: color-mix(in srgb, var(--cms-teal) 20%, var(--cms-border));
1010
+ }
1011
+
1012
+ .iam-cms-guided-hero__compose-row {
1013
+ display: flex;
1014
+ align-items: center;
1015
+ gap: 8px;
1016
+ }
1017
+
1018
+ .iam-cms-guided-hero__input {
1019
+ flex: 1;
1020
+ min-width: 0;
1021
+ border: 0;
1022
+ background: transparent;
1023
+ font-size: 15px;
1024
+ color: var(--cms-text);
1025
+ outline: none;
1026
+ }
1027
+
1028
+ .iam-cms-guided-hero__input::placeholder {
1029
+ color: var(--cms-muted);
1030
+ }
1031
+
1032
+ .iam-cms-guided-hero__tools {
1033
+ display: flex;
1034
+ align-items: center;
1035
+ gap: 6px;
1036
+ flex-shrink: 0;
1037
+ }
1038
+
1039
+ .iam-cms-guided-hero__icon-btn {
1040
+ width: 34px;
1041
+ height: 34px;
1042
+ border-radius: 999px;
1043
+ border: 1px solid var(--cms-border);
1044
+ background: transparent;
1045
+ color: var(--cms-muted);
1046
+ display: grid;
1047
+ place-items: center;
1048
+ cursor: not-allowed;
1049
+ opacity: 0.55;
1050
+ }
1051
+
1052
+ .iam-cms-guided-hero__send {
1053
+ width: 36px;
1054
+ height: 36px;
1055
+ border-radius: 999px;
1056
+ border: 0;
1057
+ background: var(--cms-teal);
1058
+ color: #fff;
1059
+ display: grid;
1060
+ place-items: center;
1061
+ cursor: pointer;
1062
+ }
1063
+
1064
+ .iam-cms-guided-hero__send:disabled {
1065
+ opacity: 0.45;
1066
+ cursor: not-allowed;
1067
+ }
1068
+
1069
+ /* Hub page shell */
1070
+ .iam-cms-hub-page {
1071
+ overflow: hidden;
1072
+ }
1073
+
1074
+ .iam-cms-hub-page__scroll {
1075
+ flex: 1;
1076
+ min-height: 0;
1077
+ overflow: auto;
1078
+ }
1079
+
1080
+ .iam-cms-hub-page__body {
1081
+ max-width: 1200px;
1082
+ margin: 0 auto;
1083
+ padding: 0 12px 24px;
1084
+ width: 100%;
1085
+ }
1086
+
1087
+ @media (min-width: 768px) {
1088
+ .iam-cms-hub-page__body {
1089
+ padding: 0 20px 32px;
1090
+ }
1091
+ }
1092
+
1093
+ .iam-cms-hub-page__toolbar {
1094
+ display: flex;
1095
+ align-items: flex-start;
1096
+ justify-content: space-between;
1097
+ gap: 12px;
1098
+ padding: 18px 0 8px;
1099
+ }
1100
+
1101
+ .iam-cms-hub-page__heading {
1102
+ margin: 0;
1103
+ font-size: 18px;
1104
+ font-weight: 780;
1105
+ letter-spacing: -0.02em;
1106
+ }
1107
+
1108
+ .iam-cms-hub-page__site-menu {
1109
+ position: relative;
1110
+ }
1111
+
1112
+ .iam-cms-hub-page__site-menu summary {
1113
+ list-style: none;
1114
+ display: inline-flex;
1115
+ align-items: center;
1116
+ gap: 6px;
1117
+ height: 36px;
1118
+ padding: 0 12px;
1119
+ border-radius: 999px;
1120
+ border: 1px solid var(--cms-border);
1121
+ background: var(--cms-panel);
1122
+ font-size: 12px;
1123
+ font-weight: 700;
1124
+ color: var(--cms-muted);
1125
+ cursor: pointer;
1126
+ }
1127
+
1128
+ .iam-cms-hub-page__site-menu summary::-webkit-details-marker {
1129
+ display: none;
1130
+ }
1131
+
1132
+ .iam-cms-hub-page__site-menu-list {
1133
+ position: absolute;
1134
+ right: 0;
1135
+ top: calc(100% + 6px);
1136
+ z-index: 20;
1137
+ min-width: 200px;
1138
+ padding: 6px;
1139
+ border-radius: 12px;
1140
+ border: 1px solid var(--cms-border);
1141
+ background: var(--cms-panel);
1142
+ box-shadow: var(--cms-shadow);
1143
+ }
1144
+
1145
+ .iam-cms-hub-page__site-menu-list button {
1146
+ width: 100%;
1147
+ text-align: left;
1148
+ padding: 8px 10px;
1149
+ border: 0;
1150
+ border-radius: 8px;
1151
+ background: transparent;
1152
+ font-size: 13px;
1153
+ cursor: pointer;
1154
+ }
1155
+
1156
+ .iam-cms-hub-page__site-menu-list button:hover,
1157
+ .iam-cms-hub-page__site-menu-list button.is-active {
1158
+ background: var(--cms-teal-soft);
1159
+ color: var(--cms-teal);
1160
+ }
1161
+
1162
+ .iam-cms-hub-page__foot {
1163
+ flex-shrink: 0;
1164
+ padding: 16px 20px 20px;
1165
+ border-top: 1px solid var(--cms-border);
1166
+ background: var(--cms-panel);
1167
+ text-align: center;
1168
+ }
1169
+
1170
+ .iam-cms-hub-page__foot-tags {
1171
+ display: flex;
1172
+ flex-wrap: wrap;
1173
+ justify-content: center;
1174
+ gap: 10px 18px;
1175
+ font-size: 11px;
1176
+ font-weight: 700;
1177
+ letter-spacing: 0.06em;
1178
+ text-transform: uppercase;
1179
+ color: var(--cms-muted);
1180
+ }
1181
+
1182
+ .iam-cms-hub-page__foot-tagline {
1183
+ margin: 10px 0 0;
1184
+ font-size: 13px;
1185
+ color: var(--cms-muted);
1186
+ }
1187
+
1188
+ .iam-cms-dashboard__grid--two {
1189
+ grid-template-columns: 1fr;
1190
+ }
1191
+
1192
+ @media (min-width: 768px) {
1193
+ .iam-cms-dashboard__grid--two {
1194
+ grid-template-columns: 1fr 1fr;
1195
+ }
1196
+ }
1197
+
1198
+ @media (min-width: 900px) {
1199
+ .iam-cms-dashboard__grid--three {
1200
+ grid-template-columns: 1.1fr 0.9fr 0.9fr;
1201
+ }
1202
+ }
1203
+
1204
+ .iam-cms-integrations-strip {
1205
+ margin-bottom: 16px;
1206
+ padding: 14px 16px;
1207
+ border-radius: 16px;
1208
+ border: 1px solid var(--cms-border);
1209
+ background: var(--cms-panel);
1210
+ box-shadow: var(--cms-shadow);
1211
+ }
1212
+
1213
+ .iam-cms-integrations-strip__head {
1214
+ display: flex;
1215
+ align-items: center;
1216
+ justify-content: space-between;
1217
+ margin-bottom: 12px;
1218
+ }
1219
+
1220
+ .iam-cms-integrations-strip__title {
1221
+ font-size: 11px;
1222
+ font-weight: 750;
1223
+ letter-spacing: 0.08em;
1224
+ text-transform: uppercase;
1225
+ color: var(--cms-muted);
1226
+ }
1227
+
1228
+ .iam-cms-integrations-strip__manage {
1229
+ font-size: 11px;
1230
+ font-weight: 700;
1231
+ color: var(--cms-teal);
1232
+ text-decoration: none;
1233
+ }
1234
+
1235
+ .iam-cms-integrations-strip__row {
1236
+ display: flex;
1237
+ flex-wrap: wrap;
1238
+ gap: 8px;
1239
+ align-items: center;
1240
+ }
1241
+
1242
+ .iam-cms-integrations-strip__app {
1243
+ flex: 0 0 auto;
1244
+ display: inline-flex;
1245
+ flex-direction: row;
1246
+ align-items: center;
1247
+ gap: 7px;
1248
+ padding: 5px 10px 5px 6px;
1249
+ border-radius: 8px;
1250
+ border: 1px solid var(--cms-border);
1251
+ background: var(--cms-bg);
1252
+ transition: border-color 0.12s;
1253
+ }
1254
+
1255
+ .iam-cms-integrations-strip__app:hover {
1256
+ border-color: color-mix(in srgb, var(--cms-teal) 30%, var(--cms-border));
1257
+ }
1258
+
1259
+ .iam-cms-integrations-strip__app-name {
1260
+ font-size: 12px;
1261
+ font-weight: 500;
1262
+ color: var(--cms-text);
1263
+ white-space: nowrap;
1264
+ }
1265
+
1266
+ .iam-cms-integrations-strip__skel {
1267
+ width: 100px;
1268
+ height: 30px;
1269
+ border-radius: 8px;
1270
+ background: linear-gradient(
1271
+ 90deg,
1272
+ color-mix(in srgb, var(--cms-muted) 8%, transparent) 0%,
1273
+ color-mix(in srgb, var(--cms-muted) 16%, transparent) 50%,
1274
+ color-mix(in srgb, var(--cms-muted) 8%, transparent) 100%
1275
+ );
1276
+ background-size: 200% 100%;
1277
+ animation: iam-cms-shimmer 1.25s ease-in-out infinite;
1278
+ }
1279
+
1280
+ .iam-cms-integrations-strip__empty {
1281
+ font-size: 12px;
1282
+ color: var(--cms-muted);
1283
+ display: flex;
1284
+ align-items: center;
1285
+ gap: 10px;
1286
+ flex-wrap: wrap;
1287
+ }
1288
+
1289
+ .iam-cms-integrations-strip__empty a {
1290
+ color: var(--cms-teal);
1291
+ font-weight: 700;
1292
+ text-decoration: none;
1293
+ }
1294
+
1295
+ .iam-cms-dashboard__grid--three {
1296
+ grid-template-columns: 1fr;
1297
+ }
1298
+
1299
+ .iam-cms-integrations {
1300
+ list-style: none;
1301
+ margin: 0;
1302
+ padding: 6px 0;
1303
+ }
1304
+
1305
+ .iam-cms-integrations li {
1306
+ display: flex;
1307
+ align-items: center;
1308
+ gap: 10px;
1309
+ padding: 10px 16px;
1310
+ border-bottom: 1px solid color-mix(in srgb, var(--cms-border) 70%, transparent);
1311
+ font-size: 13px;
1312
+ }
1313
+
1314
+ .iam-cms-integrations--rich li {
1315
+ gap: 12px;
1316
+ }
1317
+
1318
+ .iam-cms-integrations--rich .iam-app-icon-wrap {
1319
+ flex: 1;
1320
+ min-width: 0;
1321
+ }
1322
+
1323
+ .iam-cms-integrations li:last-child {
1324
+ border-bottom: 0;
1325
+ }
1326
+
1327
+ .iam-cms-integrations__dot {
1328
+ width: 8px;
1329
+ height: 8px;
1330
+ border-radius: 999px;
1331
+ background: #10b981;
1332
+ flex-shrink: 0;
1333
+ }
1334
+
1335
+ .iam-cms-integrations__name {
1336
+ flex: 1;
1337
+ min-width: 0;
1338
+ font-weight: 650;
1339
+ }
1340
+
1341
+ .iam-cms-integrations__status {
1342
+ font-size: 11px;
1343
+ font-weight: 700;
1344
+ color: #047857;
1345
+ }
1346
+
1347
+ .iam-cms-integrations__status.is-degraded {
1348
+ color: #b45309;
1349
+ }
1350
+
1351
+ .iam-cms-integrations__empty {
1352
+ padding: 16px;
1353
+ font-size: 13px;
1354
+ color: var(--cms-muted);
1355
+ line-height: 1.5;
1356
+ }
1357
+
1358
+ .iam-cms-integrations__foot {
1359
+ padding: 8px 16px 12px;
1360
+ border-top: 1px solid var(--cms-border);
1361
+ }
1362
+
1363
+ .iam-cms-integrations__manage {
1364
+ display: inline-flex;
1365
+ align-items: center;
1366
+ gap: 6px;
1367
+ font-size: 12px;
1368
+ font-weight: 700;
1369
+ color: var(--cms-teal);
1370
+ text-decoration: none;
1371
+ }
1372
+
1373
+ .iam-cms-hub-page__toolbar--compact {
1374
+ align-items: center;
1375
+ padding-top: 8px;
1376
+ flex-wrap: wrap;
1377
+ gap: 10px;
1378
+ }
1379
+
1380
+ .iam-cms-hub-page__toolbar--compact .iam-cms-shell__kicker {
1381
+ margin: 0;
1382
+ flex: 0 0 auto;
1383
+ }
1384
+
1385
+ .iam-cms-shell__site-switcher {
1386
+ max-width: min(260px, 42vw);
1387
+ }
1388
+
1389
+ .iam-cms-import-strip {
1390
+ display: flex;
1391
+ flex-wrap: wrap;
1392
+ align-items: center;
1393
+ gap: 10px;
1394
+ margin: 8px 0 16px;
1395
+ padding: 12px 14px;
1396
+ border-radius: 16px;
1397
+ border: 1px solid var(--cms-border);
1398
+ background: var(--cms-panel);
1399
+ box-shadow: var(--cms-shadow);
1400
+ }
1401
+
1402
+ .iam-cms-import-strip__label {
1403
+ display: inline-flex;
1404
+ align-items: center;
1405
+ gap: 8px;
1406
+ font-size: 12px;
1407
+ font-weight: 700;
1408
+ color: var(--cms-text);
1409
+ flex-shrink: 0;
1410
+ }
1411
+
1412
+ .iam-cms-import-strip__drop {
1413
+ flex: 1;
1414
+ min-width: min(100%, 280px);
1415
+ display: flex;
1416
+ align-items: center;
1417
+ justify-content: center;
1418
+ gap: 8px;
1419
+ padding: 10px 14px;
1420
+ border-radius: 12px;
1421
+ border: 1px dashed color-mix(in srgb, var(--cms-teal) 35%, var(--cms-border));
1422
+ background: var(--cms-teal-soft);
1423
+ color: var(--cms-muted);
1424
+ font-size: 12px;
1425
+ cursor: pointer;
1426
+ transition: border-color 0.12s, background 0.12s;
1427
+ }
1428
+
1429
+ .iam-cms-import-strip__drop.is-dragover,
1430
+ .iam-cms-import-strip__drop:hover {
1431
+ border-color: var(--cms-teal);
1432
+ background: color-mix(in srgb, var(--cms-teal) 8%, var(--cms-panel));
1433
+ color: var(--cms-text);
1434
+ }
1435
+
1436
+ .iam-cms-import-strip__drop.is-busy {
1437
+ opacity: 0.7;
1438
+ pointer-events: none;
1439
+ }
1440
+
1441
+ .iam-cms-import-strip__status {
1442
+ display: inline-flex;
1443
+ align-items: center;
1444
+ gap: 6px;
1445
+ max-width: min(42vw, 320px);
1446
+ font-size: 11px;
1447
+ color: var(--cms-muted);
1448
+ }
1449
+
1450
+ .iam-cms-import-strip__status.is-ok {
1451
+ color: #047857;
1452
+ }
1453
+
1454
+ .iam-cms-import-strip__status.is-error {
1455
+ color: #b91c1c;
1456
+ }
1457
+
1458
+ .iam-cms-import-strip__status span {
1459
+ overflow: hidden;
1460
+ text-overflow: ellipsis;
1461
+ white-space: nowrap;
1462
+ }
1463
+
1464
+ .iam-cms-site-hero__suite {
1465
+ margin: 0 0 4px;
1466
+ font-size: 11px;
1467
+ font-weight: 700;
1468
+ letter-spacing: 0.06em;
1469
+ text-transform: uppercase;
1470
+ color: var(--cms-muted);
1471
+ }
1472
+
1473
+ .iam-cms-site-hero__head-actions {
1474
+ display: flex;
1475
+ align-items: center;
1476
+ gap: 8px;
1477
+ flex-shrink: 0;
1478
+ }
1479
+
1480
+ .iam-cms-site-menu {
1481
+ position: relative;
1482
+ }
1483
+
1484
+ .iam-cms-site-menu__trigger {
1485
+ display: inline-flex;
1486
+ align-items: center;
1487
+ justify-content: center;
1488
+ width: 34px;
1489
+ height: 34px;
1490
+ border-radius: 10px;
1491
+ border: 1px solid var(--cms-border);
1492
+ background: var(--cms-panel);
1493
+ color: var(--cms-muted);
1494
+ cursor: pointer;
1495
+ }
1496
+
1497
+ .iam-cms-site-menu__trigger:hover {
1498
+ background: var(--cms-bg);
1499
+ color: var(--cms-text);
1500
+ }
1501
+
1502
+ .iam-cms-site-menu__list {
1503
+ position: absolute;
1504
+ right: 0;
1505
+ top: calc(100% + 6px);
1506
+ z-index: 30;
1507
+ min-width: 200px;
1508
+ padding: 6px;
1509
+ border-radius: 12px;
1510
+ border: 1px solid var(--cms-border);
1511
+ background: var(--cms-panel);
1512
+ box-shadow: var(--cms-shadow);
1513
+ }
1514
+
1515
+ .iam-cms-site-menu__list button {
1516
+ width: 100%;
1517
+ display: flex;
1518
+ align-items: center;
1519
+ gap: 8px;
1520
+ text-align: left;
1521
+ padding: 8px 10px;
1522
+ border: 0;
1523
+ border-radius: 8px;
1524
+ background: transparent;
1525
+ font-size: 13px;
1526
+ cursor: pointer;
1527
+ color: var(--cms-text);
1528
+ }
1529
+
1530
+ .iam-cms-site-menu__list button:hover,
1531
+ .iam-cms-site-menu__list button.is-active {
1532
+ background: var(--cms-teal-soft);
1533
+ color: var(--cms-teal);
1534
+ }
1535
+
1536
+ .iam-cms-site-menu__new {
1537
+ margin-top: 4px;
1538
+ border-top: 1px solid var(--cms-border) !important;
1539
+ border-radius: 0 0 8px 8px !important;
1540
+ color: var(--cms-teal) !important;
1541
+ font-weight: 700;
1542
+ }
1543
+
1544
+ .iam-cms-site-switcher {
1545
+ position: relative;
1546
+ min-width: 0;
1547
+ max-width: min(320px, 100%);
1548
+ }
1549
+
1550
+ .iam-cms-site-switcher__trigger {
1551
+ display: flex;
1552
+ align-items: center;
1553
+ justify-content: space-between;
1554
+ gap: 10px;
1555
+ width: 100%;
1556
+ min-width: 0;
1557
+ padding: 8px 12px;
1558
+ border-radius: 12px;
1559
+ border: 1px solid var(--cms-border);
1560
+ background: var(--cms-panel);
1561
+ color: var(--cms-text);
1562
+ cursor: pointer;
1563
+ text-align: left;
1564
+ box-shadow: 0 1px 0 rgba(26, 26, 26, 0.03);
1565
+ }
1566
+
1567
+ .iam-cms-site-switcher__trigger.size-sm {
1568
+ padding: 6px 10px;
1569
+ border-radius: 10px;
1570
+ }
1571
+
1572
+ .iam-cms-site-switcher__trigger:hover:not(:disabled),
1573
+ .iam-cms-site-switcher.is-open .iam-cms-site-switcher__trigger {
1574
+ border-color: color-mix(in srgb, var(--cms-teal) 40%, var(--cms-border));
1575
+ background: color-mix(in srgb, var(--cms-teal-soft) 55%, var(--cms-panel));
1576
+ }
1577
+
1578
+ .iam-cms-site-switcher__trigger:disabled {
1579
+ opacity: 0.65;
1580
+ cursor: not-allowed;
1581
+ }
1582
+
1583
+ .iam-cms-site-switcher__copy {
1584
+ display: flex;
1585
+ flex-direction: column;
1586
+ gap: 1px;
1587
+ min-width: 0;
1588
+ flex: 1;
1589
+ }
1590
+
1591
+ .iam-cms-site-switcher__eyebrow {
1592
+ font-size: 10px;
1593
+ font-weight: 700;
1594
+ letter-spacing: 0.06em;
1595
+ text-transform: uppercase;
1596
+ color: var(--cms-muted);
1597
+ }
1598
+
1599
+ .iam-cms-site-switcher__label {
1600
+ font-size: 13px;
1601
+ font-weight: 750;
1602
+ white-space: nowrap;
1603
+ overflow: hidden;
1604
+ text-overflow: ellipsis;
1605
+ }
1606
+
1607
+ .iam-cms-site-switcher__hint {
1608
+ font-size: 11px;
1609
+ color: var(--cms-muted);
1610
+ white-space: nowrap;
1611
+ overflow: hidden;
1612
+ text-overflow: ellipsis;
1613
+ }
1614
+
1615
+ .iam-cms-site-switcher__menu {
1616
+ position: absolute;
1617
+ right: 0;
1618
+ left: 0;
1619
+ top: calc(100% + 6px);
1620
+ z-index: 40;
1621
+ max-height: min(360px, 50vh);
1622
+ overflow: auto;
1623
+ padding: 6px;
1624
+ border-radius: 12px;
1625
+ border: 1px solid var(--cms-border);
1626
+ background: var(--cms-panel);
1627
+ box-shadow: var(--cms-shadow);
1628
+ }
1629
+
1630
+ .iam-cms-site-switcher__option {
1631
+ width: 100%;
1632
+ display: flex;
1633
+ align-items: center;
1634
+ justify-content: space-between;
1635
+ gap: 10px;
1636
+ padding: 9px 10px;
1637
+ border: 0;
1638
+ border-radius: 8px;
1639
+ background: transparent;
1640
+ color: var(--cms-text);
1641
+ cursor: pointer;
1642
+ text-align: left;
1643
+ }
1644
+
1645
+ .iam-cms-site-switcher__option:hover,
1646
+ .iam-cms-site-switcher__option.is-active {
1647
+ background: var(--cms-teal-soft);
1648
+ color: var(--cms-teal);
1649
+ }
1650
+
1651
+ .iam-cms-site-switcher__option-copy {
1652
+ display: flex;
1653
+ flex-direction: column;
1654
+ gap: 1px;
1655
+ min-width: 0;
1656
+ }
1657
+
1658
+ .iam-cms-site-switcher__option-name {
1659
+ font-size: 13px;
1660
+ font-weight: 650;
1661
+ white-space: nowrap;
1662
+ overflow: hidden;
1663
+ text-overflow: ellipsis;
1664
+ }
1665
+
1666
+ .iam-cms-site-switcher__option-hint {
1667
+ font-size: 11px;
1668
+ color: var(--cms-muted);
1669
+ white-space: nowrap;
1670
+ overflow: hidden;
1671
+ text-overflow: ellipsis;
1672
+ }
1673
+
1674
+ .iam-cms-site-switcher__option--new {
1675
+ margin-top: 4px;
1676
+ border-top: 1px solid var(--cms-border);
1677
+ border-radius: 0 0 8px 8px;
1678
+ color: var(--cms-teal);
1679
+ font-weight: 700;
1680
+ font-size: 13px;
1681
+ }
1682
+
1683
+ .iam-cms-hub-page__toolbar .iam-cms-site-switcher {
1684
+ flex: 1;
1685
+ max-width: 280px;
1686
+ }
1687
+
1688
+ .iam-cms-runtime {
1689
+ margin-top: 12px;
1690
+ font-size: 11px;
1691
+ }
1692
+
1693
+ .iam-cms-integrations__manage:hover {
1694
+ text-decoration: underline;
1695
+ }
1696
+
1697
+ /* Template gallery sidebar */
1698
+ .iam-tpl-sidebar { width: 200px; flex-shrink: 0; border-right: 1px solid var(--cms-border); background: var(--cms-panel); display: flex; flex-direction: column; overflow-y: auto; }
1699
+ .iam-tpl-sidebar__section { padding: 14px 0 8px; }
1700
+ .iam-tpl-sidebar__label { padding: 0 14px 6px; font-size: 10px; font-weight: 700; color: var(--cms-muted); letter-spacing: .06em; text-transform: uppercase; }
1701
+ .iam-tpl-sidebar__item { display: flex; align-items: center; justify-content: space-between; width: 100%; border: 0; background: transparent; padding: 6px 14px; cursor: pointer; color: var(--cms-text); font-size: 12px; transition: background .1s; text-align: left; }
1702
+ .iam-tpl-sidebar__item:hover { background: var(--cms-bg); }
1703
+ .iam-tpl-sidebar__item.is-active { background: var(--cms-teal-soft); color: var(--cms-teal); font-weight: 700; }
1704
+ .iam-tpl-sidebar__count { font-size: 10px; color: var(--cms-muted); background: var(--cms-bg); padding: 1px 6px; border-radius: 10px; border: 1px solid var(--cms-border); }
1705
+
1706
+ /* Template gallery main */
1707
+ .iam-tpl-main { flex: 1; display: flex; flex-direction: column; min-width: 0; }
1708
+ .iam-tpl-toolbar { height: 44px; background: var(--cms-panel); border-bottom: 1px solid var(--cms-border); display: flex; align-items: center; gap: 10px; padding: 0 16px; flex-shrink: 0; }
1709
+ .iam-tpl-search { display: flex; align-items: center; gap: 6px; background: var(--cms-bg); border: 1px solid var(--cms-border); border-radius: 6px; padding: 0 10px; height: 30px; }
1710
+ .iam-tpl-search input { border: none; background: transparent; font-size: 12px; color: var(--cms-text); outline: none; width: 180px; }
1711
+ .iam-tpl-chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; border-radius: 14px; border: 1px solid var(--cms-teal); background: var(--cms-teal-soft); color: var(--cms-teal); font-size: 11px; cursor: pointer; }
1712
+ .iam-tpl-chip:hover { background: color-mix(in srgb, var(--cms-teal) 16%, transparent); }
1713
+
1714
+ /* Template cards */
1715
+ .iam-tpl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 14px; padding: 16px; }
1716
+ .iam-tpl-card { background: var(--cms-panel); border: 1px solid var(--cms-border); border-radius: 10px; overflow: hidden; cursor: pointer; transition: border-color .12s; position: relative; }
1717
+ .iam-tpl-card:hover { border-color: var(--cms-teal); }
1718
+ .iam-tpl-preview { height: 120px; overflow: hidden; position: relative; }
1719
+ .iam-tpl-preview img,
1720
+ .iam-tpl-preview iframe { width: 100%; height: 100%; object-fit: cover; border: 0; display: block; pointer-events: none; }
1721
+ .iam-tpl-body { padding: 10px 12px; }
1722
+ .iam-tpl-name { font-size: 12px; font-weight: 700; margin-bottom: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
1723
+ .iam-tpl-chips { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 8px; min-height: 18px; }
1724
+ .iam-tpl-tag { font-size: 9px; padding: 2px 5px; border-radius: 3px; border: 1px solid var(--cms-border); color: var(--cms-muted); background: var(--cms-bg); }
1725
+ .iam-tpl-tag.is-build { border-color: color-mix(in srgb, var(--cms-teal) 30%, var(--cms-border)); color: var(--cms-teal); background: var(--cms-teal-soft); }
1726
+ .iam-tpl-actions { display: flex; gap: 6px; }
1727
+ .iam-tpl-actions button { flex: 1; padding: 5px 0; border-radius: 5px; font-size: 10px; cursor: pointer; border: 1px solid var(--cms-border); background: var(--cms-bg); color: var(--cms-text); }
1728
+ .iam-tpl-actions button.use { background: var(--cms-teal); border-color: var(--cms-teal); color: #fff; font-weight: 700; }
1729
+ .iam-tpl-fav { position: absolute; top: 7px; right: 7px; width: 24px; height: 24px; border-radius: 50%; background: rgba(255,255,255,.9); border: 1px solid rgba(0,0,0,.1); display: flex; align-items: center; justify-content: center; cursor: pointer; opacity: 0; transition: opacity .1s; z-index: 2; }
1730
+ .iam-tpl-card:hover .iam-tpl-fav, .iam-tpl-fav.is-faved { opacity: 1; }
1731
+
1732
+ /* Drop zone */
1733
+ .iam-tpl-dropzone { border: 2px dashed var(--cms-border); border-radius: 10px; background: var(--cms-bg); padding: 20px; text-align: center; cursor: pointer; margin: 0 16px 12px; transition: border-color .15s, background .15s; }
1734
+ .iam-tpl-dropzone:hover, .iam-tpl-dropzone.is-dragover { border-color: var(--cms-teal); background: var(--cms-teal-soft); }
1735
+ .iam-tpl-dropzone__title { font-size: 13px; font-weight: 700; margin-bottom: 4px; }
1736
+ .iam-tpl-dropzone__sub { font-size: 11px; color: var(--cms-muted); }
1737
+
1738
+ .iam-tpl-gallery { background: var(--cms-bg); color: var(--cms-text); }
1739
+ .iam-cms-shell__body .iam-tpl-gallery { min-height: 0; }