@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,566 @@
|
|
|
1
|
+
# AgentSam product lifecycle — infra at a glance
|
|
2
|
+
|
|
3
|
+
**Status:** standing engineering law (2026-09-30)
|
|
4
|
+
**Repo tip when audited:** Lane 0d CI trust branch (from `7684a4e5`)
|
|
5
|
+
**Companion:** [apps/README.md](../apps/README.md) (product app ownership boundary)
|
|
6
|
+
|
|
7
|
+
This document is the glanceable SSOT for **implement → prove → extract → rebrand → repack → install**.
|
|
8
|
+
Do not invent a new product architecture. Close the graduation loop around the machinery that already exists.
|
|
9
|
+
|
|
10
|
+
The global agent/runtime law is [`AGENTSAM.md`](../AGENTSAM.md). This lifecycle document applies that law to product authoring, extraction, resale, and graduation.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 0. AgentSam system model + global product conduct
|
|
15
|
+
|
|
16
|
+
AgentSam is two cooperating layers, not a choice between “old agents” and “LLMs”:
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
OLD-SCHOOL / DETERMINISTIC AGENTSAM (SAM)
|
|
20
|
+
discover → classify → validate → route → execute → verify → receipt
|
|
21
|
+
│
|
|
22
|
+
▼
|
|
23
|
+
LLM AGENTSAM
|
|
24
|
+
interpret → reason across valid options → compose/transform → explain
|
|
25
|
+
│
|
|
26
|
+
▼
|
|
27
|
+
trusted action
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**SAM establishes machine truth. LLMs augment judgment and language.**
|
|
31
|
+
|
|
32
|
+
The deterministic layer owns repository/project discovery, Git/Merkle evidence, manifests, AST/indexes, capability doctors, providers/runtime bindings, schemas/migrations, typed operations, authorization constraints, execution, and verification receipts. The LLM layer consumes that evidence to understand intent, resolve ambiguity, plan, compose, transform, and explain. It must not replace deterministic discovery with guesses or turn hidden reasoning/transcripts into system authority.
|
|
33
|
+
|
|
34
|
+
### Global repurposability contract
|
|
35
|
+
|
|
36
|
+
Every product/capability/pipeline promoted through this SDK must satisfy these rules:
|
|
37
|
+
|
|
38
|
+
1. **Build once; repurpose by data/config/brand.** Customer differences belong in manifests, company/brand rows, themes, provider grants, schemas/data, and content rather than bespoke source forks.
|
|
39
|
+
2. **Zero operator bleed.** A clean install for user123 must not inherit developer usernames, device names, absolute paths, domains, account/database IDs, repositories, credentials, or another customer's content/resources.
|
|
40
|
+
3. **One authority per concern.** Extend the existing Identity, Database, Settings, theme, registry, runtime, and connector authorities instead of creating parallel “temporary” implementations.
|
|
41
|
+
4. **Support means implemented now.** A provider/backend/datastore/runtime marked supported must have a working contract + adapter + verification path. Placeholder/follow-up implementations are not production support.
|
|
42
|
+
5. **Customer evidence beats SDK assumptions.** In an unrelated repository, AgentSam describes and uses that repository's actual manifests, Wrangler bindings, selected providers, storage, and runtime capabilities.
|
|
43
|
+
6. **Principal-scoped resources only.** Missing authorization never falls back to platform-owner infrastructure or metrics.
|
|
44
|
+
7. **Portable from the artifact.** Advertised commands/products must work from the actual packed/published artifact outside this monorepo; repo-local `file:` escapes do not count.
|
|
45
|
+
8. **Machine-provable readiness.** “Ready,” “healthy,” “graduated,” and “supported” are receipt-backed states, not copy. Failure must be explicit and capability-specific.
|
|
46
|
+
9. **Deterministic first where reliable.** Do not spend model context/tokens to rediscover facts Git, Merkle, AST, schemas, manifests, or capability probes can answer exactly.
|
|
47
|
+
10. **LLM augmentation stays valuable.** Use models where they materially help interpretation, planning, transformation, or explanation; feed them compact verified evidence and keep execution/authorization in trusted machinery.
|
|
48
|
+
|
|
49
|
+
These are release/architecture requirements, not style preferences. Cursor/Codex/Claude-compatible instruction shims must ultimately defer to `AGENTSAM.md`.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 1. Repo roles (keep this layout)
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
agentsam-sdk/
|
|
57
|
+
│
|
|
58
|
+
├── apps/ PRODUCT / PREBUILD AUTHORING (source of truth for runnable products)
|
|
59
|
+
├── packages/ REUSABLE CAPABILITIES (Identity, vault, settings, database-editor, …)
|
|
60
|
+
├── native/ DETERMINISTIC ENGINES (agentsam-machine, …)
|
|
61
|
+
├── bin/ PUBLIC COMMAND ENTRYPOINTS
|
|
62
|
+
├── src/ CLI / ORCHESTRATION GLUE
|
|
63
|
+
├── registry/ GENERATED indexes + receipts (derived state — not a second hand list)
|
|
64
|
+
├── migrations/ PORTABLE schema packs
|
|
65
|
+
├── contracts/ MACHINE-READABLE contracts
|
|
66
|
+
├── scripts/ BUILD / PROVE / RELEASE tooling
|
|
67
|
+
└── docs/ LAW + RECEIPTS
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Law from `apps/README.md` (unchanged):**
|
|
71
|
+
|
|
72
|
+
> `apps/` is the development/authoring source of truth for runnable AgentSam product surfaces.
|
|
73
|
+
> **Product apps are independently extractable.**
|
|
74
|
+
|
|
75
|
+
`packages/` is not a mistake when an app depends on it.
|
|
76
|
+
**Escape hatch that is a mistake:** `file:../../../packages/foo` that only resolves inside this monorepo.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 2. What lives where
|
|
81
|
+
|
|
82
|
+
### `apps/` — products, seeds, runtimes
|
|
83
|
+
|
|
84
|
+
| Path | Class | Notes |
|
|
85
|
+
|---|---|---|
|
|
86
|
+
| `local-studio/` | Major prebuilt product | Most capable; least independently extractable today |
|
|
87
|
+
| `client-cms-editor/` | Major prebuilt product | Package-ready; scaffold semantics inconsistent |
|
|
88
|
+
| `cad-creator/` | Major prebuilt product | **Reference graduation path** (strict product proof PASS) |
|
|
89
|
+
| `ecommerce-cms-agentsam/` | Prebuilt, not graduated | Real product tree; fails product-app + npm proof |
|
|
90
|
+
| `*-site/` | Site/theme seeds | Donor lane for theme packages |
|
|
91
|
+
| `agentsam-go-worker/`, `agentsamd/` | Runtime / daemon | Not storefront products |
|
|
92
|
+
| `project-control/`, `theme-gallery-preview/` | Support / preview | |
|
|
93
|
+
| `frontend/` | Public-site seed lane | Not a full product workspace |
|
|
94
|
+
| `_incoming/` | Import drop zone | |
|
|
95
|
+
|
|
96
|
+
Scale signal: apps authoring dominates packages (~3k vs ~0.8k source files excluding dependency trees). Apps are not demos.
|
|
97
|
+
|
|
98
|
+
### `packages/` — capabilities (selected)
|
|
99
|
+
|
|
100
|
+
Identity · vault · settings · database-editor · desktop-shell · work · workbench · nav · shell-kit · contracts · runtime-protocol · content/CMS helpers · repository · knowledge · rapid-rust · brand · heuristic-theme · `theme-*` · …
|
|
101
|
+
|
|
102
|
+
### App catalog vs package-presented app
|
|
103
|
+
|
|
104
|
+
`agentsam app list` currently sees:
|
|
105
|
+
|
|
106
|
+
| App id | Manifest location | Class |
|
|
107
|
+
|---|---|---|
|
|
108
|
+
| `local-studio` | `apps/local-studio/` | **standalone product** |
|
|
109
|
+
| `client-cms-editor` | `apps/client-cms-editor/` | **standalone product** |
|
|
110
|
+
| `cad-creator` | `apps/cad-creator/` | **standalone product** |
|
|
111
|
+
| `ecommerce-cms-agentsam` | `apps/ecommerce-cms-agentsam/` | **standalone product** (not graduated) |
|
|
112
|
+
| `database-editor` | `packages/agentsam-database-editor/` | **embeddable capability with app surface** |
|
|
113
|
+
|
|
114
|
+
Registry must eventually distinguish those two classes. One catalog, two product-classes — not two conflicting authorities.
|
|
115
|
+
|
|
116
|
+
Architecture test today only names: `local-studio`, `cad-creator`, `client-cms-editor`.
|
|
117
|
+
If a manifest claims a graduated prebuilt app, **either** the same product law applies **or** the manifest explicitly marks non-graduated.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 3. Prebuild state (audit snapshot)
|
|
122
|
+
|
|
123
|
+
| Product | Source | Local | Cloud | Packaging / extract |
|
|
124
|
+
|---|---|---|---|---|
|
|
125
|
+
| CAD Creator | `apps/cad-creator` | Ready | Scaffold | Closest to gold path |
|
|
126
|
+
| CMS Editor | `apps/client-cms-editor` | Ready | Adapter-ready | npm pack OK; scaffold ≠ full extract |
|
|
127
|
+
| Local Studio | `apps/local-studio` | Ready | Ready/live | Most capable; 20 escaping `file:` deps |
|
|
128
|
+
| Ecommerce + CMS | `apps/ecommerce-cms-agentsam` | Ready-ish | Not started | Real tree; not graduated |
|
|
129
|
+
| Database Editor | `packages/agentsam-database-editor` | Embeddable | Hosted/native adapters | Capability-as-app |
|
|
130
|
+
|
|
131
|
+
### Strict product proof (`scripts/prove-agentsam-product.mjs`)
|
|
132
|
+
|
|
133
|
+
| Product | App | npm/package | World | Overall |
|
|
134
|
+
|---|---|---|---|---|
|
|
135
|
+
| CAD Creator | PASS | PASS | PASS | **PASS** |
|
|
136
|
+
| CMS Editor | FAIL scaffold contract | PASS | PASS | FAIL |
|
|
137
|
+
| Ecommerce CMS | FAIL scaffold contract | FAIL | PASS | FAIL |
|
|
138
|
+
| Local Studio | FAIL scaffold | FAIL | PASS | FAIL |
|
|
139
|
+
|
|
140
|
+
CAD is the packaging/graduation reference — not necessarily the product-architecture template for every app.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 4. Intended closed loop (non-negotiable direction)
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
apps/<product>
|
|
148
|
+
│
|
|
149
|
+
▼
|
|
150
|
+
agentsam app validate
|
|
151
|
+
│
|
|
152
|
+
▼
|
|
153
|
+
agentsam machine inspect
|
|
154
|
+
│
|
|
155
|
+
▼
|
|
156
|
+
agentsam app prove ← promote scripts/prove-agentsam-product.mjs to first-class CLI/CI
|
|
157
|
+
│
|
|
158
|
+
├── isolated scaffold (complete product extract)
|
|
159
|
+
├── npm pack + install from tarball outside monorepo
|
|
160
|
+
├── migrations (SQLite + D1 packs)
|
|
161
|
+
├── package boundaries (no escaping file: deps)
|
|
162
|
+
├── personal-data leak scan
|
|
163
|
+
├── browser trust / execution boundaries
|
|
164
|
+
├── native/runtime capability check (advertised bins must ship)
|
|
165
|
+
└── build / doctor / smoke
|
|
166
|
+
│
|
|
167
|
+
▼
|
|
168
|
+
PORTABILITY RECEIPT → registry (derived)
|
|
169
|
+
│
|
|
170
|
+
▼
|
|
171
|
+
agentsam init / installable picker
|
|
172
|
+
│
|
|
173
|
+
▼
|
|
174
|
+
USER123 INSTANCE (their brand, their D1/SQLite, their OAuth — zero Sam bleed)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Hard rule:** `runtime.source_scaffold = ready` (or equivalent) may only be written when a current prove receipt is green.
|
|
178
|
+
|
|
179
|
+
That rule alone kills the Local Studio contradiction: manifest says scaffold ready, `agentsam app scaffold local-studio` → `unknown command: scaffold`.
|
|
180
|
+
|
|
181
|
+
### Core commands (compose existing tools — do not invent a parallel stack)
|
|
182
|
+
|
|
183
|
+
```text
|
|
184
|
+
agentsam app validate <product>
|
|
185
|
+
agentsam machine inspect <product-root>
|
|
186
|
+
agentsam app prove <product> # mini | app | world + pack/install
|
|
187
|
+
agentsam app graduate <product> # only if prove receipt PASS
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
CAD already proves the destination. Local Studio / CMS / Ecommerce are the failing cases that harden the machine.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 5. Vocabulary — stop conflating “scaffold”
|
|
195
|
+
|
|
196
|
+
| Command intent | Meaning |
|
|
197
|
+
|---|---|
|
|
198
|
+
| `agentsam app scaffold <product>` | **Instantiate the complete proven product** (full `frontend/` + `backend/` + `shared/` extract) |
|
|
199
|
+
| `agentsam scaffold <preset>` | Generate a **smaller starter** from a feature/preset |
|
|
200
|
+
| `agentsam-cms create --starter …` | Create a **CMS content/theme project** |
|
|
201
|
+
|
|
202
|
+
Same underlying generators allowed. **Contracts must not share one word for two outcomes.** Product-proof expects meaning #1.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 6. Single product authority
|
|
207
|
+
|
|
208
|
+
**Today (too many hands):**
|
|
209
|
+
|
|
210
|
+
- `agentsam.app.json` manifests
|
|
211
|
+
- `src/lib/init-options.js` hardcoded scaffold list
|
|
212
|
+
- presets registry
|
|
213
|
+
- `registry/.../installable-products.json` cache (incomplete: cms / client-cms-editor / rapid-rust only)
|
|
214
|
+
|
|
215
|
+
**Target:**
|
|
216
|
+
|
|
217
|
+
```text
|
|
218
|
+
agentsam.app.json
|
|
219
|
+
│
|
|
220
|
+
▼
|
|
221
|
+
generated product registry (derived only)
|
|
222
|
+
│
|
|
223
|
+
├── agentsam app list
|
|
224
|
+
├── agentsam init
|
|
225
|
+
├── Local Studio product picker
|
|
226
|
+
├── docs / catalog
|
|
227
|
+
└── product prove / graduate gates
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Hand-maintained parallel lists are release bugs waiting to happen.
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 7. Bottlenecks (priority)
|
|
235
|
+
|
|
236
|
+
| # | Bottleneck | Evidence | Impact |
|
|
237
|
+
|---|---|---|---|
|
|
238
|
+
| 1 | Prebuild independence not enforced | Local Studio: ~20 `file:` deps leaving app root | Blocks resale / extract |
|
|
239
|
+
| 2 | Manifest readiness can lie | `source_scaffold=ready` but scaffold command missing | Metadata untrusted |
|
|
240
|
+
| 3 | Multiple product registries | manifests + presets + wizard list + installable cache | Picker/docs drift |
|
|
241
|
+
| 4 | “Scaffold” means two things | CMS starter vs full product extract | Proof vs UX disagree |
|
|
242
|
+
| 5 | Product proof optional | CAD PASS; others FAIL while we keep shipping features | Enforcement unused |
|
|
243
|
+
| 6 | Machine not on every app | Local Studio UTF-8 panic in `agentsam-machine` frontend.rs | Deterministic path unhardened |
|
|
244
|
+
| 7 | Machine not in npm pack | CLI advertises `agentsam machine`; tarball omits `native/agentsam-machine` | Works in monorepo only |
|
|
245
|
+
| 8 | Ecommerce outside architecture test | Real manifest; law names only three apps | Major product escapes law |
|
|
246
|
+
| 9 | Local Studio integration monolith | Root packages + CMS sibling internals | Hard to extract |
|
|
247
|
+
| 10 | Site seeds ↔ theme packages unproven | `apps/*-site` ∥ `packages/theme-*` | Customer template drift |
|
|
248
|
+
| 11 | Doctor shallower than prove | Ecommerce doctor “healthy” while prove fails | Healthy ≠ portable |
|
|
249
|
+
| 12 | Package vs app class fuzzy | database-editor under `packages/` | Need product-class in catalog |
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## 8. Existing tooling (use it; don’t rebuild it)
|
|
254
|
+
|
|
255
|
+
| Tool | Role |
|
|
256
|
+
|---|---|
|
|
257
|
+
| `agentsam app validate` | Graduation gate: private vs npm claims, bins, files allowlist, escaping deps |
|
|
258
|
+
| `agentsam product proof` / prove script | Isolated scaffold + npm pack + world inspect + JSON receipt |
|
|
259
|
+
| `agentsam inspect` | Deterministic repo/world scan (prefer clean-room after extract for portability) |
|
|
260
|
+
| `agentsam machine inspect` | Native perception + evidence under `.agentsam/machine/runs/` — must pass every `agentsam.app.json` |
|
|
261
|
+
| `agentsam app doctor` | Local health — **not** a substitute for prove |
|
|
262
|
+
| Brand / theme / starter packs | Rebrand & customer-template pipeline (compose with Machine) |
|
|
263
|
+
| Portable migrations | Identity / product schema packs for SQLite + D1 |
|
|
264
|
+
|
|
265
|
+
**Release gate (add):** every CLI command advertised by the packed SDK must work from the **actual npm tarball** outside this repository.
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## 9. Site → theme → customer app pipeline
|
|
270
|
+
|
|
271
|
+
```text
|
|
272
|
+
apps/<customer>-site (donor)
|
|
273
|
+
↓
|
|
274
|
+
agentsam machine inspect
|
|
275
|
+
↓
|
|
276
|
+
extract brand / content / layout
|
|
277
|
+
↓
|
|
278
|
+
packages/theme-<customer>-site
|
|
279
|
+
↓
|
|
280
|
+
starter pack
|
|
281
|
+
↓
|
|
282
|
+
new apps/<product> or customer instance
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Declare and prove the relationship so `apps/church-site` and `packages/theme-church-site` cannot silently drift.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## 10. Work sequencing (standing)
|
|
290
|
+
|
|
291
|
+
```text
|
|
292
|
+
DONE Branch closure + Identity branding (#81 @ c6a1519c+)
|
|
293
|
+
DONE PRODUCT_LIFECYCLE.md SSOT
|
|
294
|
+
DONE 0c PROJECT AUTHORITY / TOOL INTEGRITY (#83 @ a6dee86d)
|
|
295
|
+
DONE 0d CI TRUST / DEPENDENCY CLOSURE (#85 @ 821d0d3e) ← GHA green
|
|
296
|
+
DONE 1 IDENTITY PORTABILITY (#86 @ 99044cfc) ← GHA green
|
|
297
|
+
│
|
|
298
|
+
▼
|
|
299
|
+
2 DESKTOP TRANSPORT / PACKAGING ← NEXT
|
|
300
|
+
│
|
|
301
|
+
▼
|
|
302
|
+
3 DATABASE STUDIO (user-scoped resources)
|
|
303
|
+
│
|
|
304
|
+
▼
|
|
305
|
+
4 SETTINGS HOST
|
|
306
|
+
│
|
|
307
|
+
▼
|
|
308
|
+
PREBUILD GRADUATION
|
|
309
|
+
Local Studio / CMS / Ecommerce / CAD
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
Identity / Desktop / Database / Settings work **must not** deepen monorepo-only `file:` coupling or lie in manifests.
|
|
313
|
+
Lane **0d** made install/verify gates enforceable from a clean checkout; do not reopen dependency-graph or bootstrap debt in later lanes.
|
|
314
|
+
|
|
315
|
+
| Lane | Focus | Graduation constraint |
|
|
316
|
+
|---|---|---|
|
|
317
|
+
| **0c** Project authority — **DONE** | Describe **this** repo’s architecture from evidence | #83 / `a6dee86d`: customer fixture + FNF regression + packed-npm proof green |
|
|
318
|
+
| **0d** CI trust / dependency closure — **DONE** | Make the repo's own gates executable and meaningful from a clean checkout | #85 / `821d0d3e`: clean Install + complete lock graph + `npm run verify` + GHA green |
|
|
319
|
+
| **1** Identity portable contract — **DONE** | SQLite + portable D1 + IAM compat | #86 / `99044cfc`: pack + three adapters + packed-npm proof; GHA [36781550250](https://github.com/SamPrimeaux/agentsam-sdk/actions/runs/36781550250) green |
|
|
320
|
+
| **2** Desktop transport | Authenticated `/api` bridge + packaging | Desktop uses session transport — not Sam’s D1 credentials |
|
|
321
|
+
| **3** Database Studio | Bound vs OAuth vs local; user-scoped | Empty state guides **user123** — never platform owner fallback |
|
|
322
|
+
| **4** Settings host | Real host, not fixtures | Settings remains published capability; no permanent repo-local `file:` |
|
|
323
|
+
|
|
324
|
+
**Standing truth Lane 0c made true and future lanes must preserve:**
|
|
325
|
+
|
|
326
|
+
> Running AgentSam in an unrelated customer repository describes and uses **that** repository’s actual architecture, not assumptions inherited from the AgentSam SDK monorepo.
|
|
327
|
+
|
|
328
|
+
**Resale test (standing):**
|
|
329
|
+
|
|
330
|
+
```text
|
|
331
|
+
git clone / npm install SDK
|
|
332
|
+
→ agentsam app scaffold <product> # or graduate install path
|
|
333
|
+
→ change brand / companySlug / data
|
|
334
|
+
→ run
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
…must become boringly reliable. CAD already shows it is possible.
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## 10b. Lane 0c — Project authority + machinery integrity
|
|
342
|
+
|
|
343
|
+
Merkle / repository discovery is **not** the rewrite target (FNF: ~900 files, ~46.6 MB, ~0.66s, correct Git root/revision).
|
|
344
|
+
Failure is **after** discovery: AutoRAG / status / scopes treat the customer project like a blank SDK clone.
|
|
345
|
+
|
|
346
|
+
### Authority stack → PROJECT CONTEXT RECEIPT
|
|
347
|
+
|
|
348
|
+
```text
|
|
349
|
+
CURRENT REPOSITORY
|
|
350
|
+
│
|
|
351
|
+
├── Git root / revision ← Merkle already correct
|
|
352
|
+
├── nearest .agentsam/app.json
|
|
353
|
+
├── agentsam.app.json
|
|
354
|
+
├── wrangler.toml / wrangler.jsonc
|
|
355
|
+
├── .agentsam/knowledge.json ← AgentSam policy (optional)
|
|
356
|
+
├── existing knowledge / generation evidence
|
|
357
|
+
└── authenticated provider capabilities
|
|
358
|
+
│
|
|
359
|
+
▼
|
|
360
|
+
PROJECT CONTEXT RECEIPT
|
|
361
|
+
│
|
|
362
|
+
├── observed (bindings, indexes, apps present)
|
|
363
|
+
├── explicitly selected (knowledge policy choices)
|
|
364
|
+
├── locally executable (runs in this CLI/Desktop process)
|
|
365
|
+
├── remotely executable (Worker / hosted binding)
|
|
366
|
+
└── missing / conflicting (drift between policy and wrangler)
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
Truthful example shape (FNF-class):
|
|
370
|
+
|
|
371
|
+
```json
|
|
372
|
+
{
|
|
373
|
+
"vectorize": {
|
|
374
|
+
"configured": true,
|
|
375
|
+
"binding": "FNF_VECTORIZE",
|
|
376
|
+
"index": "fnf-agentsam-bge-m3-1024",
|
|
377
|
+
"source": "wrangler.toml"
|
|
378
|
+
},
|
|
379
|
+
"workers_ai": {
|
|
380
|
+
"configured": true,
|
|
381
|
+
"binding": "AGENTSAM_WAI",
|
|
382
|
+
"local_execution": false,
|
|
383
|
+
"worker_execution": true
|
|
384
|
+
},
|
|
385
|
+
"autorag": {
|
|
386
|
+
"policy_configured": false,
|
|
387
|
+
"suggested_backend": "cloudflare_vectorize"
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
Do **not** collapse “no `.agentsam/knowledge.json`” into “this project has no AI/vector resources.”
|
|
393
|
+
Offer adoption of **observed** wrangler resources instead.
|
|
394
|
+
|
|
395
|
+
### `knowledge.json` vs wrangler
|
|
396
|
+
|
|
397
|
+
| File | Owns |
|
|
398
|
+
|---|---|
|
|
399
|
+
| `.agentsam/knowledge.json` | **WHAT** AgentSam wants (scope includes, embedding model, backend **binding** name) |
|
|
400
|
+
| `wrangler.toml` / `wrangler.jsonc` | **WHAT RESOURCE** that binding maps to (`index_name`, account, …) |
|
|
401
|
+
|
|
402
|
+
Do not repeat `index_name` in ten places. If both specify it, **doctor detects drift**.
|
|
403
|
+
|
|
404
|
+
### `cloudflare_vectorize` = one backend, two transports
|
|
405
|
+
|
|
406
|
+
| Transport | How |
|
|
407
|
+
|---|---|
|
|
408
|
+
| Cloudflare Worker | `env.<BINDING>.query` / `.upsert` |
|
|
409
|
+
| Local CLI / Desktop | User Cloudflare OAuth → Vectorize HTTP API |
|
|
410
|
+
|
|
411
|
+
Same logical backend id. Matches the Desktop service-vs-OAuth split used elsewhere.
|
|
412
|
+
|
|
413
|
+
### Gaps Lane 0c closes (verified)
|
|
414
|
+
|
|
415
|
+
| Current behavior | Why wrong |
|
|
416
|
+
|---|---|
|
|
417
|
+
| `repository_intelligence` requires root `packages/agentsam-repository` | Customer repos must not vendor SDK internals to own CLI capability |
|
|
418
|
+
| AutoRAG only reads `.agentsam/knowledge.json` | Ignores wrangler / manifest / binding evidence |
|
|
419
|
+
| Default code scope = `packages` + `src` | Omits real product under `apps/` (FNF) |
|
|
420
|
+
| `cloudflare_vectorize` advertised `supported: true` while adapter incomplete | Label ≠ backend |
|
|
421
|
+
| codebaseindex: Vectorize “recorded… follow-up slice” | Not a completed backend |
|
|
422
|
+
| Workers AI `operational:false` despite Worker binding | Must separate local vs worker execution |
|
|
423
|
+
| Machine panics on Local Studio `\u{a0}` | Every `agentsam.app.json` must survive `machine inspect` |
|
|
424
|
+
|
|
425
|
+
### Acceptance tests — DONE in #83 / `a6dee86d`
|
|
426
|
+
|
|
427
|
+
1. **Customer fixture** with `apps/my-product/`, wrangler `[ai]` + `[[vectorize]]`, `.agentsam/app.json` → correct resource discovery (no FNF-specific code in SDK).
|
|
428
|
+
2. **`agentsam autorag setup`** in that fixture proposes the **existing** Vectorize binding — not unrelated OpenAI/Gemini/local defaults.
|
|
429
|
+
3. **`agentsam machine inspect`** passes on **every** `agentsam.app.json` product (incl. Local Studio + arbitrary valid Unicode).
|
|
430
|
+
4. **Packed npm SDK clean-room proof** compiles/runs Machine outside the monorepo.
|
|
431
|
+
|
|
432
|
+
FNF regression on merged main now resolves canonical repo identity, current local generation, local SQLite, Workers AI, Vectorize, D1, and R2 with no resource conflicts. Preserve that behavior in later lanes.
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
## 10c. Lane 0d — CI trust + dependency closure
|
|
437
|
+
|
|
438
|
+
Lane 0c is complete, but the repository baseline is still knowingly red. Do **not** start a large Identity change while CI cannot distinguish a new regression from existing install/verify debt.
|
|
439
|
+
|
|
440
|
+
Verified at `a6dee86d`:
|
|
441
|
+
|
|
442
|
+
- PR #83's GitHub Actions dependency-health artifact is incomplete because the root lock graph is missing **54 transitive Radix edges under `packages/agentsam-nav`**.
|
|
443
|
+
- From a truly clean checkout with no `node_modules`, the current CI wrapper `node src/security/cli.mjs run --json -- npm ci` can import the Merkle/TypeScript stack before dependencies are installed and fail before `npm ci` runs.
|
|
444
|
+
- A plain `npm ci` succeeds; once dependencies exist, the security wrapper runs and exposes the real dependency-health findings.
|
|
445
|
+
- Existing verify debt remains: stale CMS/scaffold expectations and source-boundary violations already present on pre-0c main.
|
|
446
|
+
|
|
447
|
+
### Lane 0d rules
|
|
448
|
+
|
|
449
|
+
This was a **baseline-repair sprint**, not a dependency-upgrade free-for-all.
|
|
450
|
+
|
|
451
|
+
Proven on the Lane 0d branch:
|
|
452
|
+
|
|
453
|
+
- Security `run` defers Merkle/TypeScript scan imports until after the child install command.
|
|
454
|
+
- Workspace lock graph repaired so `agentsam-nav` Radix edges resolve; `npm --prefix packages/agentsam-nav run build` passes after clean `npm ci`.
|
|
455
|
+
- Bounded upgrades: vitest `^4.1.11`, sharp `^0.35.5`, esbuild override `0.28.1`; no `npm audit fix --force`.
|
|
456
|
+
- Stale CMS scaffold/tenancy tests updated to current implementation authority (`adapter-ready`, lean sqlite scaffold, live `(apps)/cms.tsx`).
|
|
457
|
+
- Source-boundary debt closed by moving `machine-binary` beside the machine command and relocating flat root tests under `test/integration/`.
|
|
458
|
+
|
|
459
|
+
### Done when
|
|
460
|
+
|
|
461
|
+
1. Fresh checkout / no `node_modules` can execute the CI Install step successfully. **PASS**
|
|
462
|
+
2. Dependency-health receipt is complete and has no unexplained lock-graph gaps. **PASS** (`security run` surfaces child `npm ci` failures before Merkle/TS import)
|
|
463
|
+
3. `npm run verify` is green from that install. **PASS** (CMS dist ensure + repo `bin` on PATH for env loader)
|
|
464
|
+
4. Remaining app/runtime jobs in `.github/workflows/ci.yml` run rather than being skipped behind Install/Verify failure. **PASS** (Go Cloudflare dry-run optional branch only when `CLOUDFLARE_ACCOUNT_ID` is set)
|
|
465
|
+
5. GitHub Actions is green on the Lane 0d PR. **PASS** — run [36775673676](https://github.com/SamPrimeaux/agentsam-sdk/actions/runs/36775673676) @ `821d0d3e`
|
|
466
|
+
6. No product behavior, provider support, or portability contract is weakened merely to satisfy CI. **PASS**
|
|
467
|
+
|
|
468
|
+
`security run` control law (0d): child command executes with bootstrap-safe imports only; on nonzero child exit, emit `command-failed` receipt and **do not** import the Merkle/TypeScript security stack.
|
|
469
|
+
|
|
470
|
+
Only then proceed to Lane 1 Identity portability.
|
|
471
|
+
|
|
472
|
+
### Standing runtime law (record only — do not implement in 0d / Lane 1)
|
|
473
|
+
|
|
474
|
+
`agentsam.runtime.v1` is the stable contract. Language is an implementation detail behind capabilities.
|
|
475
|
+
|
|
476
|
+
| Concern | Rule |
|
|
477
|
+
|---|---|
|
|
478
|
+
| INSTANCE | Which machine (Mac / VM / sandbox) |
|
|
479
|
+
| ADAPTER | What executes (`agentsamd` / ExecOS / `cloudflare_sandbox` / future) |
|
|
480
|
+
| TRANSPORT | How reached (localhost / CF Tunnel / VPC / service binding) |
|
|
481
|
+
| AUTH | Why this caller may use it |
|
|
482
|
+
|
|
483
|
+
Local Studio same-machine path: Tauri → loopback → `agentsamd`. No VPC, Tunnel, Worker, or Durable Object required for local PTY. Remote reachability is optional per enrolled `terminal_connection` (machine-scoped transport, never one tunnel per PTY). PTY/session/process lifetime belongs on the execution host — do not make a Durable Object the PTY authority. ExecOS remains supported; do not delete or replace it in these lanes.
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## 10d. Lane 1 — Identity portability — **DONE**
|
|
488
|
+
|
|
489
|
+
Branch: `lane-1-identity-portability` from clean main `a5d58c0a347eaee4be2ca2fd1717acb0ae304643`.
|
|
490
|
+
Merged: PR [#86](https://github.com/SamPrimeaux/agentsam-sdk/pull/86) @ `99044cfcb14930f7bdcb6f1769aa20ed8abf8430` (merge commit `1b075a53`).
|
|
491
|
+
CI: [36781550250](https://github.com/SamPrimeaux/agentsam-sdk/actions/runs/36781550250) **PASS** (verify, 4m22s) on PR HEAD `99044cfc`.
|
|
492
|
+
|
|
493
|
+
**Product law:** IdentityStore behavior + schema-pack ownership are product authority. SQLite, D1, and IAM are adapters. Do not make Cloudflare/IAM table names the portable contract. Do not create a second Desktop OAuth authority. Do not rename/rebuild production IAM schema merely to match portable names.
|
|
494
|
+
|
|
495
|
+
### Done when (acceptance — proven)
|
|
496
|
+
|
|
497
|
+
- [x] Formal `agentsam.identity` pack manifest exists (`packages/identity/schema/agentsam.identity/manifest.json`)
|
|
498
|
+
- [x] Generic `agentsam.schema-pack.v1` JSON Schema lives under `protocol/database/` (not Identity-owned)
|
|
499
|
+
- [x] Portable SQL has one SSOT: `packages/identity/migrations/sqlite/`
|
|
500
|
+
- [x] Clean SQLite uses portable `identity_*` schema
|
|
501
|
+
- [x] Clean portable D1 uses the same portable `identity_*` schema
|
|
502
|
+
- [x] IAM compat maps the same IdentityStore behavior onto existing hosted schema
|
|
503
|
+
- [x] `createCloudflareD1Adapter` remains a stable IAM-compat alias
|
|
504
|
+
- [x] Company / native / provider-connection behavior is contracted (not adapter-only magic)
|
|
505
|
+
- [x] Password recovery stays storage-agnostic (`createPasswordResetService` + injected store) — proven against all three adapters; **no** mandatory `identity_password_reset_tokens` in core
|
|
506
|
+
- [x] Generic customer D1 scaffold emits portable pack SQL (not IAM-shaped `accounts`/`oauth_states` masquerading as portable)
|
|
507
|
+
- [x] Required root package exports exist (sqlite / portable-d1 / iam-compat / cloudflare-d1 / identity-store)
|
|
508
|
+
- [x] Fresh install path: `001 → 002 → 005` (+ optional oauth-server) → `schema_version=2`
|
|
509
|
+
- [x] Upgrade path: existing `schema_version=1` → apply `005` → `schema_version=2` with prior rows still usable
|
|
510
|
+
- [x] npm-packed external user123 proof passes (no monorepo escape / operator bleed)
|
|
511
|
+
- [x] Existing IAM + Local Studio OAuth regression passes (native-oauth-handoff + identity package suite)
|
|
512
|
+
- [x] `npm run verify` passes
|
|
513
|
+
- [x] GitHub Actions on final PR HEAD is green — run [36781550250](https://github.com/SamPrimeaux/agentsam-sdk/actions/runs/36781550250) @ `99044cfc`
|
|
514
|
+
- [x] This lifecycle section records exact CI evidence; Lane 1 → **DONE**
|
|
515
|
+
|
|
516
|
+
### LANE 2 WORKBENCH LAW (record only — do not implement until Lane 2 starts)
|
|
517
|
+
|
|
518
|
+
- Installed Tauri auto-starts/attaches `agentsamd`
|
|
519
|
+
- No normal raw pairing-token prompt
|
|
520
|
+
- Cmd+J opens real bottom workbench: Problems | Output | Terminal | Ports | Debug
|
|
521
|
+
- Terminal means real PTY on selected execution host
|
|
522
|
+
- Scratch/virtual shell can exist only as explicit Demo/Tutorial
|
|
523
|
+
- Trails are work/chat sessions, not Worker observability
|
|
524
|
+
- Worker logs come from real observability/tail authority
|
|
525
|
+
|
|
526
|
+
### LANE 3 DATABASE STUDIO LAW (record only — do not implement in Lane 1)
|
|
527
|
+
|
|
528
|
+
- Database Studio is GUI over the same future DataSourceRegistry, schema-pack, doctor and inspect machinery as `agentsam db`
|
|
529
|
+
- SQLite is one source, not universal database authority
|
|
530
|
+
- Production rows are evidence, never shippable seed material
|
|
531
|
+
- `.sqlite` is binary and must never be treated as a text document
|
|
532
|
+
- No platform-owner datastore fallback
|
|
533
|
+
- Do **not** build DataSourceRegistry in Lane 1 — `agentsam.schema-pack.v1` is enough for Identity
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
## 11. Definition of “graduated”
|
|
538
|
+
|
|
539
|
+
A product may claim `source_scaffold = ready` / graduate / appear as a first-class installable only when a current receipt says:
|
|
540
|
+
|
|
541
|
+
- [ ] manifest validate PASS
|
|
542
|
+
- [ ] app architecture law PASS (or explicit non-graduated class)
|
|
543
|
+
- [ ] machine inspect PASS (incl. UTF-8 / parse)
|
|
544
|
+
- [ ] no personal leakage PASS
|
|
545
|
+
- [ ] no escaping `file:` deps PASS
|
|
546
|
+
- [ ] SQLite + D1 schema packs PASS (as claimed)
|
|
547
|
+
- [ ] scaffold isolation PASS (complete product extract)
|
|
548
|
+
- [ ] npm tarball install PASS
|
|
549
|
+
- [ ] doctor from clean install PASS
|
|
550
|
+
- [ ] frontend + backend build PASS
|
|
551
|
+
- [ ] Cloudflare dry-run PASS (if claimed)
|
|
552
|
+
- [ ] desktop parity PASS or N/A
|
|
553
|
+
|
|
554
|
+
Until then: develop in `apps/`, but **do not** advertise extract/install readiness.
|
|
555
|
+
|
|
556
|
+
---
|
|
557
|
+
|
|
558
|
+
## 12. Related docs
|
|
559
|
+
|
|
560
|
+
- [apps/README.md](../apps/README.md) — product app ownership boundary
|
|
561
|
+
- Branch closure trail (IAM): `inneranimalmedia/docs/platform/BRANCH_DISPOSITION_20260930.md`
|
|
562
|
+
- Work plan: Cursor `identity_portability_status` — **Lane 1 Identity DONE** (#86 @ `99044cfc` / main `1b075a53`); next is Lane 2 Desktop transport
|
|
563
|
+
- Lane 0c project authority merged in #83 at `a6dee86d`; preserve its customer-repo/runtime discovery contract in every later lane
|
|
564
|
+
- Lane 0d closes clean-checkout CI trust; do not reopen ExecOS/terminal implementation during Identity
|
|
565
|
+
- Runtime protocol note: ExecOS remains supported working machinery; `execos_legacy` is a compatibility identifier, not an approved retirement decision
|
|
566
|
+
- Schema-pack protocol: `protocol/database/agentsam.schema-pack.v1.schema.json` (generic); Identity owns `packages/identity/schema/agentsam.identity/manifest.json` only
|