@inneranimalmedia/agentsam-sdk 2.6.5 → 2.6.8
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 +29 -0
- package/README.md +37 -0
- 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 +12 -7
- package/apps/client-cms-editor/README.md +76 -48
- package/apps/client-cms-editor/agentsam.app.json +26 -9
- package/apps/client-cms-editor/backend/package.json +20 -3
- package/apps/client-cms-editor/backend/src/api/client.ts +134 -101
- package/apps/client-cms-editor/backend/src/index.ts +1 -1
- package/apps/client-cms-editor/backend/src/model.ts +11 -115
- package/apps/client-cms-editor/backend/src/preview/bridge.ts +1 -1
- package/apps/client-cms-editor/backend/tsconfig.json +6 -1
- package/apps/client-cms-editor/bin/agentsam-cms.js +262 -0
- package/apps/client-cms-editor/bin/agentsam-cms.mjs +2 -228
- package/apps/client-cms-editor/frontend/package.json +16 -7
- package/apps/client-cms-editor/frontend/src/AgentSamDrawer.tsx +9 -41
- package/apps/client-cms-editor/frontend/src/CmsAgentSurface.tsx +19 -174
- 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/{CmsEditor.tsx → editor/legacy/CmsEditorPrototype.tsx} +52 -23
- package/apps/client-cms-editor/frontend/src/editor/useCmsEditorController.ts +218 -0
- package/apps/client-cms-editor/frontend/src/index.ts +19 -5
- package/apps/client-cms-editor/frontend/src/lib/agent-host.ts +24 -0
- package/apps/client-cms-editor/frontend/src/main.tsx +82 -8
- package/apps/client-cms-editor/frontend/src/mount.tsx +92 -30
- package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +1 -1
- package/apps/client-cms-editor/frontend/src/styles/cmsShell.css +8 -8
- package/apps/client-cms-editor/frontend/src/styles/studio.css +55 -3
- package/apps/client-cms-editor/frontend/tsconfig.json +12 -1
- package/apps/client-cms-editor/frontend/vite.config.ts +12 -0
- package/apps/client-cms-editor/package-lock.json +973 -134
- package/apps/client-cms-editor/package.json +118 -6
- 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 +17 -7
- package/apps/client-cms-editor/shared/cms/src/adapter.ts +204 -0
- package/apps/client-cms-editor/shared/cms/src/agent-context.ts +7 -5
- package/apps/client-cms-editor/shared/cms/src/editor-types.ts +32 -0
- package/apps/client-cms-editor/shared/cms/src/host.ts +82 -0
- package/apps/client-cms-editor/shared/cms/src/index.ts +4 -0
- package/apps/client-cms-editor/shared/cms/src/map.ts +115 -0
- package/apps/client-cms-editor/shared/cms/src/starter-pack.ts +158 -0
- package/contracts/source-types.v1.json +353 -0
- package/docs/CMS_CONTEXTUAL_COMPOSER.md +1 -1
- package/docs/PRODUCT_LIFECYCLE.md +566 -0
- package/docs/REPO_FILE_MAP.txt +132 -0
- package/docs/THEME_REFINERY.md +2 -2
- package/docs/architecture/AGENTSAM_RUNTIME_PROTOCOL.md +40 -20
- package/docs/content-studio/REVISION_GATE_2026-09-27.md +1 -1
- package/docs/plans/LOCAL_STUDIO_DESKTOP_RELEASE_2026-09-29.md +150 -0
- package/migrations/d1/0017_identity_native_oauth.sql +21 -0
- package/migrations/d1/0018_goap_control_plane_remaster.sql +40 -0
- package/migrations/d1/0019_agentsam_agent_run_plan_todo.sql +14 -0
- package/migrations/d1/README_PORTABLE_CONTROL_PLANE.md +20 -9
- package/migrations/runtime/0002_goap_blackboard_v1.sql +15 -0
- package/migrations/runtime/0004_agent_run_plan_linkage.sql +8 -0
- package/native/agentsam-machine/Cargo.lock +426 -0
- package/native/agentsam-machine/Cargo.toml +9 -0
- package/native/agentsam-machine/cli/Cargo.toml +21 -0
- package/native/agentsam-machine/cli/README.md +21 -0
- package/native/agentsam-machine/cli/src/main.rs +77 -0
- package/native/agentsam-machine/core/Cargo.toml +22 -0
- package/native/agentsam-machine/core/README.md +14 -0
- package/native/agentsam-machine/core/build.rs +33 -0
- package/native/agentsam-machine/core/contracts/source-types.v1.json +353 -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 +1092 -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 +64 -24
- package/packages/agentsam-brand/README.md +1 -1
- package/packages/agentsam-brand/package.json +4 -4
- package/packages/agentsam-brand/src/index.js +1 -1
- package/packages/agentsam-contracts/package.json +13 -3
- package/packages/agentsam-contracts/src/tools.ts +22 -0
- package/packages/agentsam-errors/package.json +13 -3
- package/packages/agentsam-errors/src/index.js +1 -0
- package/packages/agentsam-errors/src/tool.js +56 -0
- package/packages/agentsam-errors/test/tool.test.mjs +58 -0
- package/packages/agentsam-goap/README.md +52 -0
- package/packages/agentsam-goap/package.json +37 -0
- package/packages/agentsam-goap/src/adapters/d1-sqlite.js +570 -0
- package/packages/agentsam-goap/src/adapters/memory.js +199 -0
- package/packages/agentsam-goap/src/contracts.js +226 -0
- package/packages/agentsam-goap/src/control-plane.js +112 -0
- package/packages/agentsam-goap/src/errors.js +157 -0
- package/packages/agentsam-goap/src/index.js +5 -0
- package/packages/agentsam-goap/src/world.js +202 -0
- package/packages/agentsam-goap/test/goap-control-plane.test.mjs +245 -0
- package/packages/agentsam-goap/test/world.test.mjs +79 -0
- package/packages/agentsam-knowledge/package.json +18 -4
- package/packages/agentsam-knowledge/src/autorag/index.js +10 -3
- package/packages/agentsam-knowledge/src/backends/index.js +33 -1
- package/packages/agentsam-knowledge/test/autorag.test.mjs +60 -1
- package/packages/agentsam-nav/dist/browser.global.js +21 -18
- package/packages/agentsam-nav/dist/browser.js +6807 -130
- package/packages/agentsam-nav/dist/index.js +6799 -122
- package/packages/agentsam-nav/package.json +24 -6
- package/packages/agentsam-queue-control/README.md +1 -1
- package/packages/agentsam-queue-control/package.json +7 -2
- package/packages/agentsam-rapid-rust/src/main.rs +1 -1
- package/packages/agentsam-repository/package.json +13 -3
- package/packages/agentsam-repository/src/goap.js +13 -14
- package/packages/agentsam-repository/src/source-types.js +8 -0
- package/packages/agentsam-repository/src/tickets.js +15 -22
- package/packages/agentsam-repository/test/goap-tickets-workspace-state.test.mjs +19 -8
- package/packages/agentsam-vault/package.json +14 -4
- package/packages/agentsam-workbench/package.json +15 -4
- package/packages/agentsam-workbench/src/agent/ToolPermissionRequest.tsx +94 -0
- package/packages/agentsam-workbench/src/agent/index.ts +2 -0
- package/packages/agentsam-workbench/src/agent/tool-permission.css +134 -0
- package/packages/connectors/cloudflare/package.json +15 -3
- package/packages/connectors/cloudflare/src/api-client.js +3 -2
- package/packages/connectors/cloudflare/src/families/vectorize.js +127 -0
- package/packages/connectors/cloudflare/src/index.js +1 -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 +27 -7
- package/packages/identity/README.md +2 -2
- package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +18 -15
- package/packages/identity/migrations/apply-portable.js +109 -0
- package/packages/identity/migrations/sqlite/004_identity_oauth_consent_catalog.sql +1 -1
- package/packages/identity/migrations/sqlite/005_identity_company_native.sql +52 -0
- package/packages/identity/package.json +27 -6
- package/packages/identity/schema/agentsam.identity/manifest.json +101 -0
- package/packages/identity/scripts/local-identity-bridge.mjs +13 -7
- package/packages/identity/scripts/preview-auth-portal.mjs +6 -6
- package/packages/identity/src/adapters/cloudflare-d1/index.js +8 -401
- 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 -312
- package/packages/identity/src/contracts/auth-config.js +0 -1
- package/packages/identity/src/contracts/identity-store.js +56 -5
- package/packages/identity/src/contracts/provider.js +1 -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/pages/login.html +6 -6
- package/packages/identity/src/frontend/auth-portal/pages/reset.html +5 -5
- package/packages/identity/src/frontend/auth-portal/pages/signup.html +5 -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 +6 -37
- package/packages/identity/src/index.js +28 -1
- package/packages/identity/src/migrations/README.md +23 -23
- package/packages/identity/src/oauth/README.md +1 -1
- package/packages/identity/src/oauth/credentials.js +10 -11
- package/packages/identity/src/oauth/google-desktop-exchange.js +195 -27
- 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/github/oauth.js +1 -2
- package/packages/identity/src/providers/github/profile.js +16 -2
- package/packages/identity/src/providers/index.js +11 -3
- package/packages/identity/src/server/identity-service.js +2 -1
- package/packages/identity/src/server/worker-router.js +71 -18
- 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 +15 -4
- 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/oauth-credentials.test.mjs +4 -4
- package/packages/identity/tests/preview-auth-portal.test.mjs +4 -2
- 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/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 +1 -1
- package/packages/theme-scenes/package.json +4 -3
- package/packages/theme-scenes/src/registry.js +187 -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/protocol/FILEMETA_V1.md +2 -2
- 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/theme-refinery/lineage-registry.json +105 -0
- package/protocol/theme-refinery/product-metadata.schema.json +21 -1
- package/python/agentsam_sdk/repository/intelligence/discovery.py +27 -2
- package/python/agentsam_sdk/repository/intelligence/git.py +4 -0
- package/python/tests/test_repository_intelligence.py +30 -0
- package/src/cli/command-catalog.js +48 -5
- package/src/cli/dispatch.js +1 -0
- package/src/cli.js +20 -1
- package/src/cloudflare/runtime-status.js +2 -1
- package/src/commands/autorag.js +67 -13
- package/src/commands/cheat-sheet.js +29 -4
- package/src/commands/codebaseindex.js +45 -2
- package/src/commands/goap-world.js +134 -0
- package/src/commands/goap.js +11 -4
- package/src/commands/knowledge.js +59 -2
- package/src/commands/machine-binary.js +109 -0
- package/src/commands/machine-runtime.js +266 -0
- package/src/commands/machine.js +208 -0
- package/src/commands/package.js +530 -0
- package/src/commands/plan-ledger.js +370 -0
- package/src/commands/plan.js +183 -0
- package/src/commands/security.js +67 -4
- package/src/commands/setup.js +33 -16
- package/src/commands/skill.js +78 -17
- package/src/commands/status.js +8 -1
- package/src/features/resolve.js +1 -0
- package/src/knowledge/engine.js +21 -2
- package/src/knowledge/runtime-discovery.js +127 -0
- package/src/knowledge/source.js +1 -1
- package/src/lib/identity-scaffold.js +53 -13
- package/src/lib/setup/recipes.js +1 -1
- package/src/lib/slash-commands.js +1 -1
- package/src/local/runtime-store.js +24 -2
- package/src/local/sqlite.js +17 -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/sam/operations/package-audit.js +41 -0
- package/src/sam/seed.js +2 -0
- package/src/security/logs.js +3 -0
- package/src/ui/cli/help.js +41 -0
- package/apps/client-cms-editor/backend/src/demo-bootstrap.ts +0 -145
- package/test/account-session.test.mjs +0 -101
- package/test/agent-capabilities.test.mjs +0 -67
- package/test/app-authority-context.test.mjs +0 -32
- package/test/app-building-skills.test.mjs +0 -61
- package/test/apps-scaffold-contract.test.mjs +0 -114
- package/test/blender-cad.test.mjs +0 -146
- package/test/cad-docker.test.mjs +0 -96
- package/test/capabilities.test.mjs +0 -133
- package/test/cli/api-key-env-whoami.test.mjs +0 -129
- package/test/cli/codebaseindex-plan-ux.test.mjs +0 -37
- package/test/cli/eval-live.test.mjs +0 -219
- package/test/cli/go.test.mjs +0 -128
- package/test/cli/local-vault-and-provider-setup.test.mjs +0 -268
- package/test/cli/mcp-client.test.mjs +0 -256
- package/test/cli/preferences-runtime.test.mjs +0 -11
- package/test/cli/runtime-persist.test.mjs +0 -56
- package/test/cli/runtime-ui.test.mjs +0 -141
- package/test/cli/rust-command.test.mjs +0 -21
- package/test/cli/skill-npm-and-env.test.mjs +0 -52
- package/test/cli/status-actions.test.mjs +0 -88
- package/test/cli/wireframes-go-registry.test.mjs +0 -139
- package/test/cli-preferences.test.mjs +0 -46
- package/test/cloudflare-connector.test.mjs +0 -93
- package/test/cloudflare-runtime.test.mjs +0 -82
- package/test/context.test.mjs +0 -159
- package/test/credentials-audit.test.mjs +0 -113
- package/test/deploy-health-scan.test.mjs +0 -95
- package/test/deploy-receipt.test.mjs +0 -91
- package/test/dockerize.test.mjs +0 -93
- package/test/error-diagnostics.test.mjs +0 -124
- package/test/eval-context.test.mjs +0 -37
- package/test/execution-approvals.test.mjs +0 -27
- package/test/fixtures/cad/courtyard-house.json +0 -208
- package/test/fixtures/knowledge-rpc-worker.mjs +0 -16
- package/test/gcloud-auth.test.mjs +0 -111
- package/test/go/build-source-identity.test.mjs +0 -31
- package/test/go/cloudflare-probe.test.mjs +0 -317
- package/test/go/distribution.test.mjs +0 -28
- package/test/google-cloud-connection.test.mjs +0 -83
- package/test/google-cloud-inventory.test.mjs +0 -64
- package/test/indexing-provider.test.mjs +0 -29
- package/test/init-options.test.mjs +0 -35
- package/test/integration/ai-access-onboarding.test.mjs +0 -47
- package/test/integration/app-command.test.mjs +0 -85
- package/test/integration/cad-discovery.test.mjs +0 -158
- package/test/integration/cad-docker-executor.test.mjs +0 -249
- package/test/integration/cad-execution.test.mjs +0 -184
- package/test/integration/cad-project-app.test.mjs +0 -31
- package/test/integration/cad-project-d1.test.mjs +0 -25
- package/test/integration/cad-project-native.test.mjs +0 -24
- package/test/integration/cad-project-workflow.test.mjs +0 -9
- package/test/integration/cad-project.test.mjs +0 -85
- package/test/integration/cli-help.test.mjs +0 -41
- package/test/integration/cms-app-scaffold.test.mjs +0 -71
- package/test/integration/cms-site-tenancy-contract.test.mjs +0 -257
- package/test/integration/codebaseindex-ingest.test.mjs +0 -214
- package/test/integration/core-client.integration.test.mjs +0 -55
- package/test/integration/error-runtime-rpc.test.mjs +0 -71
- package/test/integration/features-resolve.test.mjs +0 -147
- package/test/integration/icon-registry.test.mjs +0 -67
- package/test/integration/ingest-discover-models.test.mjs +0 -30
- package/test/integration/inspect-path-cli.test.mjs +0 -46
- package/test/integration/install-script.test.mjs +0 -110
- package/test/integration/inventory-core.test.mjs +0 -53
- package/test/integration/inventory-evidence.test.mjs +0 -125
- package/test/integration/knowledge-rpc.test.mjs +0 -112
- package/test/integration/local-fs.test.mjs +0 -113
- package/test/integration/merkle-cli.test.mjs +0 -61
- package/test/integration/merkle-persistence-identity.test.mjs +0 -48
- package/test/integration/plugins-cloudflare.integration.test.mjs +0 -28
- package/test/integration/provider-env-cli.test.mjs +0 -50
- package/test/integration/provider-factory.test.mjs +0 -197
- package/test/integration/repository-company-graph.test.mjs +0 -90
- package/test/integration/runtime-migrations.test.mjs +0 -87
- package/test/integration/runtime-status.integration.test.mjs +0 -212
- package/test/integration/sam-activity-recovery.test.mjs +0 -147
- package/test/integration/sam-decision.test.mjs +0 -584
- package/test/integration/sam-kernel.test.mjs +0 -99
- package/test/integration/sam-planning-astar.test.mjs +0 -279
- package/test/integration/scaffold-cloudflare.test.mjs +0 -46
- package/test/integration/skill-runtime.test.mjs +0 -240
- package/test/integration/storage-architecture.test.mjs +0 -154
- package/test/integration/store-discovery.test.mjs +0 -44
- package/test/integration/studio-fs-pty-e2e.test.mjs +0 -294
- package/test/integration/terminal-exec.integration.test.mjs +0 -86
- package/test/integration/tool-runtime.test.mjs +0 -124
- package/test/integration/tool-schema.test.mjs +0 -59
- package/test/jr-dev-skill.test.mjs +0 -26
- package/test/knowledge-context-pack.test.mjs +0 -19
- package/test/knowledge-postgres.test.mjs +0 -40
- package/test/knowledge-service.test.mjs +0 -110
- package/test/knowledge.test.mjs +0 -206
- package/test/live/terminal-transport.live.test.mjs +0 -24
- package/test/local-sessions.test.mjs +0 -57
- package/test/local-studio-deploy.test.mjs +0 -83
- package/test/loopback-oauth.test.mjs +0 -53
- package/test/merkle-render.test.mjs +0 -31
- package/test/mini.test.mjs +0 -140
- package/test/model-catalog.test.mjs +0 -70
- package/test/models.test.mjs +0 -309
- package/test/npm10-lock.test.mjs +0 -29
- package/test/ollama.test.mjs +0 -137
- package/test/open-url.test.mjs +0 -64
- package/test/openai-responses.test.mjs +0 -155
- package/test/portable-context.test.mjs +0 -94
- package/test/project-config.test.mjs +0 -81
- package/test/project-rules.test.mjs +0 -44
- package/test/provider-credentials.test.mjs +0 -106
- package/test/rehydrate.test.mjs +0 -25
- package/test/release-hygiene.test.mjs +0 -42
- package/test/repository-snapshot-view.test.mjs +0 -112
- package/test/responses-runner.test.mjs +0 -465
- package/test/runtime-activity.test.mjs +0 -98
- package/test/sdk-worker-contract.test.mjs +0 -72
- package/test/security.test.mjs +0 -252
- package/test/setup-planner.test.mjs +0 -74
- package/test/setup-runtime.test.mjs +0 -51
- package/test/shell.test.mjs +0 -281
- package/test/skills.test.mjs +0 -22
- package/test/smoke.mjs +0 -122
- package/test/telemetry.test.mjs +0 -79
- package/test/terminal/local-pty.mock.test.mjs +0 -153
- package/test/terminal-machine-identity.test.mjs +0 -88
- package/test/theme-portability.test.mjs +0 -14
- package/test/tools-search.test.mjs +0 -73
- package/test/unit/website-assets-bindings.test.mjs +0 -60
- package/test/whoami-resume.test.mjs +0 -157
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
PRAGMA foreign_keys = ON;
|
|
2
|
+
|
|
3
|
+
-- Account -> site ownership only. No tenant_id or workspace_id.
|
|
4
|
+
|
|
5
|
+
CREATE TABLE IF NOT EXISTS cms_sites (
|
|
6
|
+
account_id TEXT NOT NULL,
|
|
7
|
+
id TEXT NOT NULL,
|
|
8
|
+
slug TEXT NOT NULL,
|
|
9
|
+
name TEXT NOT NULL,
|
|
10
|
+
domain TEXT,
|
|
11
|
+
status TEXT NOT NULL DEFAULT 'harvest',
|
|
12
|
+
source_repo TEXT,
|
|
13
|
+
source_ref TEXT,
|
|
14
|
+
created_at TEXT NOT NULL,
|
|
15
|
+
updated_at TEXT NOT NULL,
|
|
16
|
+
PRIMARY KEY (account_id, id),
|
|
17
|
+
UNIQUE (account_id, slug)
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
CREATE TABLE IF NOT EXISTS cms_brand_profiles (
|
|
21
|
+
account_id TEXT NOT NULL,
|
|
22
|
+
id TEXT NOT NULL,
|
|
23
|
+
site_id TEXT NOT NULL,
|
|
24
|
+
profile_key TEXT NOT NULL,
|
|
25
|
+
name TEXT NOT NULL,
|
|
26
|
+
role TEXT NOT NULL,
|
|
27
|
+
source_file TEXT,
|
|
28
|
+
status TEXT NOT NULL DEFAULT 'candidate',
|
|
29
|
+
PRIMARY KEY (account_id, id),
|
|
30
|
+
UNIQUE (account_id, site_id, profile_key),
|
|
31
|
+
FOREIGN KEY (account_id, site_id) REFERENCES cms_sites(account_id, id) ON DELETE CASCADE
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
CREATE TABLE IF NOT EXISTS cms_brand_tokens (
|
|
35
|
+
account_id TEXT NOT NULL,
|
|
36
|
+
id TEXT NOT NULL,
|
|
37
|
+
site_id TEXT NOT NULL,
|
|
38
|
+
profile_id TEXT NOT NULL,
|
|
39
|
+
token_key TEXT NOT NULL,
|
|
40
|
+
category TEXT NOT NULL,
|
|
41
|
+
value_text TEXT NOT NULL,
|
|
42
|
+
confidence REAL NOT NULL DEFAULT 1.0,
|
|
43
|
+
status TEXT NOT NULL DEFAULT 'observed',
|
|
44
|
+
source_file TEXT,
|
|
45
|
+
source_line INTEGER,
|
|
46
|
+
PRIMARY KEY (account_id, id),
|
|
47
|
+
FOREIGN KEY (account_id, site_id) REFERENCES cms_sites(account_id, id) ON DELETE CASCADE,
|
|
48
|
+
FOREIGN KEY (account_id, profile_id) REFERENCES cms_brand_profiles(account_id, id) ON DELETE CASCADE
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
CREATE TABLE IF NOT EXISTS cms_routes (
|
|
52
|
+
account_id TEXT NOT NULL,
|
|
53
|
+
id TEXT NOT NULL,
|
|
54
|
+
site_id TEXT NOT NULL,
|
|
55
|
+
path TEXT NOT NULL,
|
|
56
|
+
route_kind TEXT NOT NULL,
|
|
57
|
+
title TEXT,
|
|
58
|
+
source_file TEXT,
|
|
59
|
+
source_symbol TEXT,
|
|
60
|
+
status TEXT NOT NULL DEFAULT 'candidate',
|
|
61
|
+
PRIMARY KEY (account_id, id),
|
|
62
|
+
UNIQUE (account_id, site_id, path),
|
|
63
|
+
FOREIGN KEY (account_id, site_id) REFERENCES cms_sites(account_id, id) ON DELETE CASCADE
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
CREATE TABLE IF NOT EXISTS cms_layouts (
|
|
67
|
+
account_id TEXT NOT NULL,
|
|
68
|
+
id TEXT NOT NULL,
|
|
69
|
+
site_id TEXT NOT NULL,
|
|
70
|
+
route_id TEXT,
|
|
71
|
+
layout_key TEXT NOT NULL,
|
|
72
|
+
name TEXT NOT NULL,
|
|
73
|
+
source_file TEXT,
|
|
74
|
+
source_symbol TEXT,
|
|
75
|
+
status TEXT NOT NULL DEFAULT 'candidate',
|
|
76
|
+
structure_json TEXT NOT NULL DEFAULT '{}',
|
|
77
|
+
PRIMARY KEY (account_id, id),
|
|
78
|
+
UNIQUE (account_id, site_id, layout_key),
|
|
79
|
+
FOREIGN KEY (account_id, site_id) REFERENCES cms_sites(account_id, id) ON DELETE CASCADE,
|
|
80
|
+
FOREIGN KEY (account_id, route_id) REFERENCES cms_routes(account_id, id) ON DELETE CASCADE
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
CREATE TABLE IF NOT EXISTS cms_sections (
|
|
84
|
+
account_id TEXT NOT NULL,
|
|
85
|
+
id TEXT NOT NULL,
|
|
86
|
+
site_id TEXT NOT NULL,
|
|
87
|
+
route_id TEXT,
|
|
88
|
+
layout_id TEXT,
|
|
89
|
+
section_key TEXT NOT NULL,
|
|
90
|
+
name TEXT NOT NULL,
|
|
91
|
+
section_type TEXT NOT NULL,
|
|
92
|
+
zone TEXT,
|
|
93
|
+
position INTEGER NOT NULL DEFAULT 0,
|
|
94
|
+
authority TEXT NOT NULL DEFAULT 'harvest',
|
|
95
|
+
status TEXT NOT NULL DEFAULT 'candidate',
|
|
96
|
+
source_file TEXT,
|
|
97
|
+
source_line INTEGER,
|
|
98
|
+
source_symbol TEXT,
|
|
99
|
+
props_json TEXT NOT NULL DEFAULT '{}',
|
|
100
|
+
PRIMARY KEY (account_id, id),
|
|
101
|
+
FOREIGN KEY (account_id, site_id) REFERENCES cms_sites(account_id, id) ON DELETE CASCADE
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
CREATE TABLE IF NOT EXISTS cms_navigation (
|
|
105
|
+
account_id TEXT NOT NULL,
|
|
106
|
+
id TEXT NOT NULL,
|
|
107
|
+
site_id TEXT NOT NULL,
|
|
108
|
+
nav_key TEXT NOT NULL,
|
|
109
|
+
name TEXT NOT NULL,
|
|
110
|
+
location TEXT NOT NULL,
|
|
111
|
+
source_file TEXT,
|
|
112
|
+
source_symbol TEXT,
|
|
113
|
+
status TEXT NOT NULL DEFAULT 'candidate',
|
|
114
|
+
PRIMARY KEY (account_id, id),
|
|
115
|
+
UNIQUE (account_id, site_id, nav_key),
|
|
116
|
+
FOREIGN KEY (account_id, site_id) REFERENCES cms_sites(account_id, id) ON DELETE CASCADE
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
CREATE TABLE IF NOT EXISTS cms_navigation_items (
|
|
120
|
+
account_id TEXT NOT NULL,
|
|
121
|
+
id TEXT NOT NULL,
|
|
122
|
+
site_id TEXT NOT NULL,
|
|
123
|
+
navigation_id TEXT NOT NULL,
|
|
124
|
+
position INTEGER NOT NULL,
|
|
125
|
+
label TEXT NOT NULL,
|
|
126
|
+
href TEXT NOT NULL,
|
|
127
|
+
item_kind TEXT NOT NULL DEFAULT 'internal',
|
|
128
|
+
source_file TEXT,
|
|
129
|
+
source_line INTEGER,
|
|
130
|
+
status TEXT NOT NULL DEFAULT 'candidate',
|
|
131
|
+
PRIMARY KEY (account_id, id),
|
|
132
|
+
FOREIGN KEY (account_id, navigation_id) REFERENCES cms_navigation(account_id, id) ON DELETE CASCADE
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
CREATE TABLE IF NOT EXISTS cms_content_items (
|
|
136
|
+
account_id TEXT NOT NULL,
|
|
137
|
+
id TEXT NOT NULL,
|
|
138
|
+
site_id TEXT NOT NULL,
|
|
139
|
+
collection_key TEXT NOT NULL,
|
|
140
|
+
item_key TEXT NOT NULL,
|
|
141
|
+
item_type TEXT NOT NULL,
|
|
142
|
+
title TEXT,
|
|
143
|
+
slug TEXT,
|
|
144
|
+
authority TEXT NOT NULL DEFAULT 'sample',
|
|
145
|
+
status TEXT NOT NULL DEFAULT 'sample',
|
|
146
|
+
source_file TEXT,
|
|
147
|
+
source_line INTEGER,
|
|
148
|
+
data_json TEXT NOT NULL DEFAULT '{}',
|
|
149
|
+
PRIMARY KEY (account_id, id),
|
|
150
|
+
UNIQUE (account_id, site_id, collection_key, item_key),
|
|
151
|
+
FOREIGN KEY (account_id, site_id) REFERENCES cms_sites(account_id, id) ON DELETE CASCADE
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
CREATE TABLE IF NOT EXISTS cms_assets (
|
|
155
|
+
account_id TEXT NOT NULL,
|
|
156
|
+
id TEXT NOT NULL,
|
|
157
|
+
site_id TEXT NOT NULL,
|
|
158
|
+
asset_key TEXT NOT NULL,
|
|
159
|
+
asset_kind TEXT NOT NULL,
|
|
160
|
+
uri TEXT,
|
|
161
|
+
local_path TEXT,
|
|
162
|
+
authority TEXT NOT NULL DEFAULT 'reference',
|
|
163
|
+
status TEXT NOT NULL DEFAULT 'candidate',
|
|
164
|
+
source_file TEXT,
|
|
165
|
+
source_line INTEGER,
|
|
166
|
+
PRIMARY KEY (account_id, id),
|
|
167
|
+
FOREIGN KEY (account_id, site_id) REFERENCES cms_sites(account_id, id) ON DELETE CASCADE
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
CREATE TABLE IF NOT EXISTS cms_drafts (
|
|
171
|
+
account_id TEXT NOT NULL,
|
|
172
|
+
id TEXT NOT NULL,
|
|
173
|
+
site_id TEXT NOT NULL,
|
|
174
|
+
route_id TEXT,
|
|
175
|
+
name TEXT NOT NULL,
|
|
176
|
+
status TEXT NOT NULL DEFAULT 'working',
|
|
177
|
+
snapshot_json TEXT NOT NULL DEFAULT '{}',
|
|
178
|
+
created_at TEXT NOT NULL,
|
|
179
|
+
updated_at TEXT NOT NULL,
|
|
180
|
+
PRIMARY KEY (account_id, id),
|
|
181
|
+
FOREIGN KEY (account_id, site_id) REFERENCES cms_sites(account_id, id) ON DELETE CASCADE
|
|
182
|
+
);
|
|
183
|
+
|
|
184
|
+
CREATE TABLE IF NOT EXISTS cms_change_sets (
|
|
185
|
+
account_id TEXT NOT NULL,
|
|
186
|
+
id TEXT NOT NULL,
|
|
187
|
+
site_id TEXT NOT NULL,
|
|
188
|
+
draft_id TEXT NOT NULL,
|
|
189
|
+
sequence INTEGER NOT NULL,
|
|
190
|
+
source_kind TEXT NOT NULL DEFAULT 'human',
|
|
191
|
+
patch_json TEXT NOT NULL,
|
|
192
|
+
status TEXT NOT NULL DEFAULT 'accepted',
|
|
193
|
+
created_at TEXT NOT NULL,
|
|
194
|
+
PRIMARY KEY (account_id, id),
|
|
195
|
+
UNIQUE (account_id, draft_id, sequence),
|
|
196
|
+
FOREIGN KEY (account_id, draft_id) REFERENCES cms_drafts(account_id, id) ON DELETE CASCADE
|
|
197
|
+
);
|
|
198
|
+
|
|
199
|
+
CREATE TABLE IF NOT EXISTS cms_publications (
|
|
200
|
+
account_id TEXT NOT NULL,
|
|
201
|
+
id TEXT NOT NULL,
|
|
202
|
+
site_id TEXT NOT NULL,
|
|
203
|
+
revision INTEGER NOT NULL,
|
|
204
|
+
snapshot_json TEXT NOT NULL,
|
|
205
|
+
status TEXT NOT NULL DEFAULT 'published',
|
|
206
|
+
created_at TEXT NOT NULL,
|
|
207
|
+
published_at TEXT,
|
|
208
|
+
PRIMARY KEY (account_id, id),
|
|
209
|
+
UNIQUE (account_id, site_id, revision),
|
|
210
|
+
FOREIGN KEY (account_id, site_id) REFERENCES cms_sites(account_id, id) ON DELETE CASCADE
|
|
211
|
+
);
|
|
212
|
+
|
|
213
|
+
CREATE TABLE IF NOT EXISTS harvest_runs (
|
|
214
|
+
id TEXT PRIMARY KEY,
|
|
215
|
+
account_id TEXT NOT NULL,
|
|
216
|
+
site_id TEXT NOT NULL,
|
|
217
|
+
source_repo TEXT NOT NULL,
|
|
218
|
+
source_ref TEXT NOT NULL,
|
|
219
|
+
source_commit TEXT NOT NULL,
|
|
220
|
+
created_at TEXT NOT NULL
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
CREATE TABLE IF NOT EXISTS harvest_sources (
|
|
224
|
+
id TEXT PRIMARY KEY,
|
|
225
|
+
run_id TEXT NOT NULL,
|
|
226
|
+
lane TEXT NOT NULL,
|
|
227
|
+
path TEXT NOT NULL,
|
|
228
|
+
sha256 TEXT NOT NULL,
|
|
229
|
+
bytes INTEGER NOT NULL,
|
|
230
|
+
source_commit TEXT NOT NULL,
|
|
231
|
+
FOREIGN KEY (run_id) REFERENCES harvest_runs(id) ON DELETE CASCADE
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
CREATE TABLE IF NOT EXISTS harvest_findings (
|
|
235
|
+
id TEXT PRIMARY KEY,
|
|
236
|
+
run_id TEXT NOT NULL,
|
|
237
|
+
account_id TEXT NOT NULL,
|
|
238
|
+
site_id TEXT NOT NULL,
|
|
239
|
+
category TEXT NOT NULL,
|
|
240
|
+
severity TEXT NOT NULL,
|
|
241
|
+
signal TEXT NOT NULL,
|
|
242
|
+
message TEXT NOT NULL,
|
|
243
|
+
source_file TEXT,
|
|
244
|
+
source_line INTEGER,
|
|
245
|
+
status TEXT NOT NULL DEFAULT 'review',
|
|
246
|
+
FOREIGN KEY (run_id) REFERENCES harvest_runs(id) ON DELETE CASCADE
|
|
247
|
+
);
|
|
248
|
+
|
|
249
|
+
CREATE TABLE IF NOT EXISTS harvest_candidates (
|
|
250
|
+
id TEXT PRIMARY KEY,
|
|
251
|
+
run_id TEXT NOT NULL,
|
|
252
|
+
account_id TEXT NOT NULL,
|
|
253
|
+
site_id TEXT NOT NULL,
|
|
254
|
+
candidate_kind TEXT NOT NULL,
|
|
255
|
+
candidate_key TEXT NOT NULL,
|
|
256
|
+
value_text TEXT,
|
|
257
|
+
confidence REAL NOT NULL DEFAULT 0.5,
|
|
258
|
+
source_file TEXT,
|
|
259
|
+
source_line INTEGER,
|
|
260
|
+
status TEXT NOT NULL DEFAULT 'review',
|
|
261
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
262
|
+
FOREIGN KEY (run_id) REFERENCES harvest_runs(id) ON DELETE CASCADE
|
|
263
|
+
);
|
|
264
|
+
|
|
265
|
+
CREATE TABLE IF NOT EXISTS tooling_probe_runs (
|
|
266
|
+
id TEXT PRIMARY KEY,
|
|
267
|
+
account_id TEXT NOT NULL,
|
|
268
|
+
site_id TEXT NOT NULL,
|
|
269
|
+
profile TEXT NOT NULL,
|
|
270
|
+
sdk_root TEXT,
|
|
271
|
+
fixture_root TEXT,
|
|
272
|
+
started_at TEXT NOT NULL,
|
|
273
|
+
finished_at TEXT,
|
|
274
|
+
ok INTEGER
|
|
275
|
+
);
|
|
276
|
+
|
|
277
|
+
CREATE TABLE IF NOT EXISTS tooling_probe_steps (
|
|
278
|
+
id TEXT PRIMARY KEY,
|
|
279
|
+
probe_run_id TEXT NOT NULL,
|
|
280
|
+
step_key TEXT NOT NULL,
|
|
281
|
+
category TEXT NOT NULL,
|
|
282
|
+
command_json TEXT NOT NULL,
|
|
283
|
+
cwd TEXT NOT NULL,
|
|
284
|
+
mutability TEXT NOT NULL,
|
|
285
|
+
network_mode TEXT NOT NULL,
|
|
286
|
+
started_at TEXT NOT NULL,
|
|
287
|
+
finished_at TEXT,
|
|
288
|
+
exit_code INTEGER,
|
|
289
|
+
ok INTEGER,
|
|
290
|
+
stdout_text TEXT,
|
|
291
|
+
stderr_text TEXT,
|
|
292
|
+
FOREIGN KEY (probe_run_id) REFERENCES tooling_probe_runs(id) ON DELETE CASCADE
|
|
293
|
+
);
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
-- Historical archive/theme intake provenance.
|
|
297
|
+
CREATE TABLE IF NOT EXISTS archive_ingests (
|
|
298
|
+
id TEXT PRIMARY KEY,
|
|
299
|
+
account_id TEXT NOT NULL,
|
|
300
|
+
site_id TEXT NOT NULL,
|
|
301
|
+
source_path TEXT NOT NULL,
|
|
302
|
+
source_kind TEXT NOT NULL,
|
|
303
|
+
source_sha256 TEXT,
|
|
304
|
+
quarantine_path TEXT NOT NULL,
|
|
305
|
+
classification TEXT NOT NULL,
|
|
306
|
+
created_at TEXT NOT NULL,
|
|
307
|
+
manifest_json TEXT NOT NULL
|
|
308
|
+
);
|
|
309
|
+
|
|
310
|
+
CREATE TABLE IF NOT EXISTS archive_files (
|
|
311
|
+
id TEXT PRIMARY KEY,
|
|
312
|
+
ingest_id TEXT NOT NULL,
|
|
313
|
+
relative_path TEXT NOT NULL,
|
|
314
|
+
bytes INTEGER NOT NULL,
|
|
315
|
+
sha256 TEXT NOT NULL,
|
|
316
|
+
category TEXT NOT NULL,
|
|
317
|
+
FOREIGN KEY (ingest_id) REFERENCES archive_ingests(id) ON DELETE CASCADE
|
|
318
|
+
);
|
|
319
|
+
|
|
320
|
+
CREATE TABLE IF NOT EXISTS archive_outputs (
|
|
321
|
+
id TEXT PRIMARY KEY,
|
|
322
|
+
ingest_id TEXT NOT NULL,
|
|
323
|
+
output_kind TEXT NOT NULL,
|
|
324
|
+
path TEXT NOT NULL,
|
|
325
|
+
bytes INTEGER NOT NULL,
|
|
326
|
+
sha256 TEXT NOT NULL,
|
|
327
|
+
FOREIGN KEY (ingest_id) REFERENCES archive_ingests(id) ON DELETE CASCADE
|
|
328
|
+
);
|
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inneranimalmedia/agentsam-cms-shared",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
3
|
+
"version": "2.6.7",
|
|
4
|
+
"description": "Internal CMS shared contracts (bundled into @inneranimalmedia/client-cms-editor — not published separately).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": "./src/index.ts",
|
|
8
8
|
"./publication": "./src/publication.ts",
|
|
9
9
|
"./bindings": "./src/cloudflare-bindings.ts",
|
|
10
|
-
"./context": "./src/agent-context.ts"
|
|
10
|
+
"./context": "./src/agent-context.ts",
|
|
11
|
+
"./adapter": "./src/adapter.ts",
|
|
12
|
+
"./host": "./src/host.ts"
|
|
11
13
|
},
|
|
12
14
|
"scripts": {
|
|
13
15
|
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
14
16
|
},
|
|
15
|
-
"dependencies": {
|
|
16
|
-
"@inneranimalmedia/agentsam-contracts": "file:../../../../packages/agentsam-contracts"
|
|
17
|
-
},
|
|
18
17
|
"devDependencies": {
|
|
19
18
|
"typescript": "^5.9.3"
|
|
20
|
-
}
|
|
19
|
+
},
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "git+https://github.com/SamPrimeaux/agentsam-sdk.git",
|
|
26
|
+
"directory": "apps/client-cms-editor/shared/cms"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"src"
|
|
30
|
+
]
|
|
21
31
|
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portable CMS persistence/transport contract.
|
|
3
|
+
*
|
|
4
|
+
* The editor depends on this interface — not on any host's private CMS routes
|
|
5
|
+
* or invented Worker binding product sources. Hosts implement adapters:
|
|
6
|
+
* - SQLite (desktop / offline authority)
|
|
7
|
+
* - Cloudflare D1 + R2 (cloud authority via OAuth-proven resources)
|
|
8
|
+
* - custom HTTP backend
|
|
9
|
+
* - embedding application backends (one consumer implementation each)
|
|
10
|
+
*
|
|
11
|
+
* localStorage is never an adapter. It may cache UI chrome only.
|
|
12
|
+
*
|
|
13
|
+
* Required methods are authoring CRUD. Adapters that cannot support a method
|
|
14
|
+
* must throw a typed capability error — never silently drop editor actions.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import type {
|
|
18
|
+
CmsEditorBlock,
|
|
19
|
+
CmsEditorPage,
|
|
20
|
+
CmsEditorSection,
|
|
21
|
+
CmsEditorSite,
|
|
22
|
+
CmsSiteCreateInput,
|
|
23
|
+
CmsSiteRecord,
|
|
24
|
+
CmsSiteUpdatePatch,
|
|
25
|
+
} from './editor-types';
|
|
26
|
+
import type { CmsPublicationSnapshot } from './publication';
|
|
27
|
+
|
|
28
|
+
export type { CmsPublicationSnapshot } from './publication';
|
|
29
|
+
|
|
30
|
+
export type CmsRevision = {
|
|
31
|
+
id: string;
|
|
32
|
+
pageId: string;
|
|
33
|
+
kind: 'draft' | 'publication';
|
|
34
|
+
createdAt: string;
|
|
35
|
+
label?: string;
|
|
36
|
+
snapshot?: unknown;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export type CmsAsset = {
|
|
40
|
+
id: string;
|
|
41
|
+
name: string;
|
|
42
|
+
mimeType?: string;
|
|
43
|
+
size?: number;
|
|
44
|
+
url?: string;
|
|
45
|
+
key?: string;
|
|
46
|
+
createdAt?: string;
|
|
47
|
+
metadata?: Record<string, unknown>;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export type CmsCapabilityErrorCode =
|
|
51
|
+
| 'cms_capability_unsupported'
|
|
52
|
+
| 'cms_adapter_not_configured'
|
|
53
|
+
| 'cms_source_not_found'
|
|
54
|
+
| 'cms_permission_denied';
|
|
55
|
+
|
|
56
|
+
export class CmsCapabilityError extends Error {
|
|
57
|
+
readonly code: CmsCapabilityErrorCode;
|
|
58
|
+
readonly capability: string;
|
|
59
|
+
|
|
60
|
+
constructor(capability: string, message?: string, code: CmsCapabilityErrorCode = 'cms_capability_unsupported') {
|
|
61
|
+
super(message || `CMS adapter does not support ${capability}`);
|
|
62
|
+
this.name = 'CmsCapabilityError';
|
|
63
|
+
this.code = code;
|
|
64
|
+
this.capability = capability;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Required content-authoring contract for a real CMS editor.
|
|
70
|
+
* Optional methods must not be used as a way to dilute CRUD.
|
|
71
|
+
*/
|
|
72
|
+
export type CmsEditorAdapter = {
|
|
73
|
+
// Site lifecycle
|
|
74
|
+
listSites(): Promise<CmsSiteRecord[]>;
|
|
75
|
+
getSite(siteId: string): Promise<CmsSiteRecord>;
|
|
76
|
+
createSite(input: CmsSiteCreateInput): Promise<CmsSiteRecord>;
|
|
77
|
+
updateSite(siteId: string, patch: CmsSiteUpdatePatch): Promise<CmsSiteRecord>;
|
|
78
|
+
deleteSite(siteId: string): Promise<void>;
|
|
79
|
+
/** Hydrated aggregate (site metadata + page tree). */
|
|
80
|
+
loadSite(siteId: string): Promise<CmsEditorSite>;
|
|
81
|
+
|
|
82
|
+
// Pages
|
|
83
|
+
listPages(siteId: string): Promise<CmsEditorPage[]>;
|
|
84
|
+
getPage(pageId: string): Promise<CmsEditorPage>;
|
|
85
|
+
createPage(
|
|
86
|
+
siteId: string,
|
|
87
|
+
input: Partial<CmsEditorPage> & { title: string; slug: string },
|
|
88
|
+
): Promise<CmsEditorPage>;
|
|
89
|
+
updatePage(pageId: string, patch: Partial<CmsEditorPage>): Promise<CmsEditorPage>;
|
|
90
|
+
deletePage(pageId: string): Promise<void>;
|
|
91
|
+
|
|
92
|
+
// Sections
|
|
93
|
+
listSections(pageId: string): Promise<CmsEditorSection[]>;
|
|
94
|
+
getSection(sectionId: string): Promise<CmsEditorSection>;
|
|
95
|
+
createSection(
|
|
96
|
+
pageId: string,
|
|
97
|
+
input: Partial<CmsEditorSection> & { name: string },
|
|
98
|
+
): Promise<CmsEditorSection>;
|
|
99
|
+
updateSection(
|
|
100
|
+
sectionId: string,
|
|
101
|
+
patch: Partial<CmsEditorSection>,
|
|
102
|
+
): Promise<CmsEditorSection>;
|
|
103
|
+
deleteSection(sectionId: string): Promise<void>;
|
|
104
|
+
reorderSections(pageId: string, sectionIds: string[]): Promise<void>;
|
|
105
|
+
setSectionVisibility(sectionId: string, visible: boolean): Promise<void>;
|
|
106
|
+
|
|
107
|
+
// Blocks
|
|
108
|
+
listBlocks(sectionId: string): Promise<CmsEditorBlock[]>;
|
|
109
|
+
getBlock(blockId: string): Promise<CmsEditorBlock>;
|
|
110
|
+
createBlock(
|
|
111
|
+
sectionId: string,
|
|
112
|
+
input: Partial<CmsEditorBlock> & { type: string },
|
|
113
|
+
): Promise<CmsEditorBlock>;
|
|
114
|
+
updateBlock(
|
|
115
|
+
blockId: string,
|
|
116
|
+
patch: Partial<CmsEditorBlock>,
|
|
117
|
+
): Promise<CmsEditorBlock>;
|
|
118
|
+
deleteBlock(blockId: string): Promise<void>;
|
|
119
|
+
reorderBlocks?(sectionId: string, blockIds: string[]): Promise<void>;
|
|
120
|
+
|
|
121
|
+
// Draft / revisions
|
|
122
|
+
saveDraft(pageId: string, payload: unknown): Promise<CmsRevision>;
|
|
123
|
+
getRevision(revisionId: string): Promise<CmsRevision>;
|
|
124
|
+
listRevisions(pageId: string): Promise<CmsRevision[]>;
|
|
125
|
+
restoreRevision(pageId: string, revisionId: string): Promise<CmsEditorPage>;
|
|
126
|
+
|
|
127
|
+
// Publication
|
|
128
|
+
previewDraft(pageId: string): Promise<{ previewUrl?: string; snapshot: unknown }>;
|
|
129
|
+
publish(pageId: string, options?: { revisionId?: string }): Promise<CmsPublicationSnapshot>;
|
|
130
|
+
getPublishedRevision(pageId: string): Promise<CmsPublicationSnapshot | null>;
|
|
131
|
+
|
|
132
|
+
// Assets
|
|
133
|
+
listAssets(siteId: string): Promise<CmsAsset[]>;
|
|
134
|
+
getAsset(assetId: string): Promise<CmsAsset>;
|
|
135
|
+
uploadAsset(
|
|
136
|
+
siteId: string,
|
|
137
|
+
file: Blob,
|
|
138
|
+
meta?: { name?: string; metadata?: Record<string, unknown> },
|
|
139
|
+
): Promise<CmsAsset>;
|
|
140
|
+
updateAsset(
|
|
141
|
+
assetId: string,
|
|
142
|
+
patch: Partial<Pick<CmsAsset, 'name' | 'metadata' | 'url' | 'key'>>,
|
|
143
|
+
): Promise<CmsAsset>;
|
|
144
|
+
deleteAsset(assetId: string): Promise<void>;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
/** Capability ids used when reporting honest unsupported operations. */
|
|
148
|
+
export const CMS_ADAPTER_CAPABILITIES = Object.freeze([
|
|
149
|
+
'listSites',
|
|
150
|
+
'getSite',
|
|
151
|
+
'createSite',
|
|
152
|
+
'updateSite',
|
|
153
|
+
'deleteSite',
|
|
154
|
+
'loadSite',
|
|
155
|
+
'listPages',
|
|
156
|
+
'getPage',
|
|
157
|
+
'createPage',
|
|
158
|
+
'updatePage',
|
|
159
|
+
'deletePage',
|
|
160
|
+
'listSections',
|
|
161
|
+
'getSection',
|
|
162
|
+
'createSection',
|
|
163
|
+
'updateSection',
|
|
164
|
+
'deleteSection',
|
|
165
|
+
'reorderSections',
|
|
166
|
+
'setSectionVisibility',
|
|
167
|
+
'listBlocks',
|
|
168
|
+
'getBlock',
|
|
169
|
+
'createBlock',
|
|
170
|
+
'updateBlock',
|
|
171
|
+
'deleteBlock',
|
|
172
|
+
'reorderBlocks',
|
|
173
|
+
'saveDraft',
|
|
174
|
+
'getRevision',
|
|
175
|
+
'listRevisions',
|
|
176
|
+
'restoreRevision',
|
|
177
|
+
'previewDraft',
|
|
178
|
+
'publish',
|
|
179
|
+
'getPublishedRevision',
|
|
180
|
+
'listAssets',
|
|
181
|
+
'getAsset',
|
|
182
|
+
'uploadAsset',
|
|
183
|
+
'updateAsset',
|
|
184
|
+
'deleteAsset',
|
|
185
|
+
] as const);
|
|
186
|
+
|
|
187
|
+
export type CmsAdapterCapability = (typeof CMS_ADAPTER_CAPABILITIES)[number];
|
|
188
|
+
|
|
189
|
+
export type CmsAdapterKind = 'sqlite' | 'd1_r2' | 'http' | 'custom';
|
|
190
|
+
|
|
191
|
+
export type CmsAdapterDescriptor = {
|
|
192
|
+
kind: CmsAdapterKind;
|
|
193
|
+
label: string;
|
|
194
|
+
/** Provenance of the backing store — never invented product resources. */
|
|
195
|
+
provenance: {
|
|
196
|
+
kind: 'native_runtime' | 'oauth_discovery' | 'user_configured' | 'http_endpoint';
|
|
197
|
+
runtimeId?: string;
|
|
198
|
+
connectionId?: string;
|
|
199
|
+
resourceId?: string;
|
|
200
|
+
endpoint?: string;
|
|
201
|
+
};
|
|
202
|
+
/** Explicit list of supported capabilities; omit only when fully implementing CmsEditorAdapter. */
|
|
203
|
+
capabilities?: CmsAdapterCapability[];
|
|
204
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CmsAgentContext, CmsAgentContextProvider, CmsHostPrincipal } from './host';
|
|
2
2
|
|
|
3
3
|
export type CmsAgentContextInput = {
|
|
4
|
-
principal:
|
|
4
|
+
principal: CmsHostPrincipal;
|
|
5
5
|
projectId: string;
|
|
6
6
|
route?: string;
|
|
7
7
|
pageId?: string | null;
|
|
@@ -10,11 +10,11 @@ export type CmsAgentContextInput = {
|
|
|
10
10
|
publicationRevision?: number | null;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
export function createCmsAgentContext(input: CmsAgentContextInput):
|
|
13
|
+
export function createCmsAgentContext(input: CmsAgentContextInput): CmsAgentContext {
|
|
14
14
|
return {
|
|
15
15
|
surface: 'cms',
|
|
16
16
|
accountId: input.principal.accountId,
|
|
17
|
-
|
|
17
|
+
subjectId: input.principal.subjectId,
|
|
18
18
|
projectId: input.projectId,
|
|
19
19
|
metadata: {
|
|
20
20
|
route: input.route ?? null,
|
|
@@ -26,7 +26,9 @@ export function createCmsAgentContext(input: CmsAgentContextInput): AgentContext
|
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
export function createCmsAgentContextProvider(
|
|
29
|
+
export function createCmsAgentContextProvider(
|
|
30
|
+
getInput: () => CmsAgentContextInput | Promise<CmsAgentContextInput>,
|
|
31
|
+
): CmsAgentContextProvider {
|
|
30
32
|
return {
|
|
31
33
|
async getContext() {
|
|
32
34
|
return createCmsAgentContext(await getInput());
|
|
@@ -35,6 +35,17 @@ export type CmsEditorPage = {
|
|
|
35
35
|
metaDescription: string;
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
+
export type CmsEditorSiteTheme = {
|
|
39
|
+
cssVars: Record<string, string>;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export type CmsEditorSiteSchemas = {
|
|
43
|
+
protocol_version: number;
|
|
44
|
+
sections: unknown[];
|
|
45
|
+
blocks: unknown[];
|
|
46
|
+
fields?: unknown[];
|
|
47
|
+
};
|
|
48
|
+
|
|
38
49
|
export type CmsEditorSite = {
|
|
39
50
|
id: string;
|
|
40
51
|
name: string;
|
|
@@ -43,8 +54,29 @@ export type CmsEditorSite = {
|
|
|
43
54
|
edited: string;
|
|
44
55
|
color: string;
|
|
45
56
|
pages: CmsEditorPage[];
|
|
57
|
+
/** Site-level theme authority (starter pack + editor). */
|
|
58
|
+
theme?: CmsEditorSiteTheme;
|
|
59
|
+
/** Site-level schema registry (starter pack + editor). */
|
|
60
|
+
schemas?: CmsEditorSiteSchemas;
|
|
46
61
|
};
|
|
47
62
|
|
|
63
|
+
/** Site metadata without hydrated page trees (aggregate reads use loadSite). */
|
|
64
|
+
export type CmsSiteRecord = Omit<CmsEditorSite, 'pages'>;
|
|
65
|
+
|
|
66
|
+
export type CmsSiteCreateInput = {
|
|
67
|
+
id?: string;
|
|
68
|
+
name: string;
|
|
69
|
+
domain?: string;
|
|
70
|
+
initials?: string;
|
|
71
|
+
color?: string;
|
|
72
|
+
theme?: CmsEditorSiteTheme;
|
|
73
|
+
schemas?: CmsEditorSiteSchemas;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export type CmsSiteUpdatePatch = Partial<
|
|
77
|
+
Pick<CmsEditorSite, 'name' | 'initials' | 'domain' | 'edited' | 'color' | 'theme' | 'schemas'>
|
|
78
|
+
>;
|
|
79
|
+
|
|
48
80
|
export type CmsEditorSelection = {
|
|
49
81
|
kind: CmsEditorTargetKind;
|
|
50
82
|
pageId: string | null;
|