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