@inneranimalmedia/agentsam-sdk 2.6.3 → 2.6.5
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 +17 -0
- package/README.md +31 -10
- package/apps/client-cms-editor/AGENTS.md +12 -0
- package/apps/client-cms-editor/IMPORT_PROVENANCE.json +8 -0
- package/apps/client-cms-editor/README.md +72 -0
- package/apps/client-cms-editor/agentsam.app.json +57 -0
- package/apps/client-cms-editor/backend/README.md +5 -0
- package/apps/client-cms-editor/backend/package.json +22 -0
- package/apps/client-cms-editor/backend/src/api/client.ts +200 -0
- package/apps/client-cms-editor/backend/src/demo-bootstrap.ts +145 -0
- package/apps/client-cms-editor/backend/src/index.ts +6 -0
- package/apps/client-cms-editor/backend/src/model.ts +115 -0
- package/apps/client-cms-editor/backend/src/preview/bridge.ts +79 -0
- package/apps/client-cms-editor/backend/src/preview/urls.ts +55 -0
- package/apps/client-cms-editor/backend/src/routing/cms-route.js +293 -0
- package/apps/client-cms-editor/backend/src/routing/index.js +10 -0
- package/apps/client-cms-editor/backend/src/storefront.ts +52 -0
- package/apps/client-cms-editor/backend/tsconfig.json +15 -0
- package/apps/client-cms-editor/backend/worker/index.js +34 -0
- package/apps/client-cms-editor/backend/wrangler.jsonc +11 -0
- package/apps/client-cms-editor/bin/agentsam-cms.mjs +229 -0
- package/apps/client-cms-editor/frontend/index.html +12 -0
- package/apps/client-cms-editor/frontend/package.json +33 -0
- package/apps/client-cms-editor/frontend/src/AgentSamDrawer.tsx +188 -0
- package/apps/client-cms-editor/frontend/src/CmsAgentSurface.tsx +191 -0
- package/apps/client-cms-editor/frontend/src/CmsEditor.tsx +1345 -0
- package/apps/client-cms-editor/frontend/src/env.d.ts +14 -0
- package/apps/client-cms-editor/frontend/src/index.ts +8 -0
- package/apps/client-cms-editor/frontend/src/lib/content-safety.ts +63 -0
- package/apps/client-cms-editor/frontend/src/main.tsx +17 -0
- package/apps/client-cms-editor/frontend/src/mount.tsx +51 -0
- package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +214 -0
- package/apps/client-cms-editor/frontend/src/styles/cmsShell.css +1739 -0
- package/apps/client-cms-editor/frontend/src/styles/studio.css +106 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsDashboard.tsx +313 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsGuidedChatHero.tsx +121 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsHubPage.tsx +132 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsSiteSwitcher.tsx +176 -0
- package/apps/client-cms-editor/frontend/src/surfaces/index.ts +5 -0
- package/apps/client-cms-editor/frontend/src/surfaces/types.ts +48 -0
- package/apps/client-cms-editor/frontend/tsconfig.json +25 -0
- package/apps/client-cms-editor/frontend/vite.config.ts +13 -0
- package/apps/client-cms-editor/package-lock.json +3832 -0
- package/apps/client-cms-editor/package.json +23 -0
- package/apps/client-cms-editor/reference/DONOR_README.md +52 -0
- package/apps/client-cms-editor/reference/DONOR_package-lock.json +1253 -0
- package/apps/client-cms-editor/reference/DONOR_tsconfig.json +15 -0
- package/apps/client-cms-editor/shared/cms/package.json +21 -0
- package/apps/client-cms-editor/shared/cms/src/agent-context.ts +35 -0
- package/apps/client-cms-editor/shared/cms/src/cloudflare-bindings.ts +51 -0
- package/apps/client-cms-editor/shared/cms/src/editor-types.ts +58 -0
- package/apps/client-cms-editor/shared/cms/src/index.ts +5 -0
- package/apps/client-cms-editor/shared/cms/src/publication.ts +24 -0
- package/apps/client-cms-editor/shared/cms/src/routes.ts +11 -0
- package/apps/client-cms-editor/shared/cms/tsconfig.json +12 -0
- package/bin/agentsam +16 -1
- package/bin/agentsam-rapid-rust +36 -0
- package/docs/AUTH_IDENTITY_CONTRACT.md +2 -0
- package/docs/BRAND_INTELLIGENCE.md +1 -1
- package/docs/MACHINE_INTELLIGENCE.md +120 -0
- package/docs/WINDOWS_RUNTIME_INSTALL.md +30 -0
- package/docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md +188 -0
- package/docs/architecture/AGENTSAM_DISTRIBUTION_OWNERSHIP.md +176 -0
- package/docs/architecture/AGENTSAM_GO_RUNTIME.md +282 -0
- package/docs/architecture/AGENTSAM_RUNTIME_PROTOCOL.md +151 -0
- package/docs/architecture/CODEBASEINDEX_GUIDED_PATH.md +202 -0
- package/docs/architecture/FS_E2E_CLOSURE_RECEIPT.md +59 -0
- package/docs/architecture/LOCAL_FS_AUTHORITY.md +38 -0
- package/docs/architecture/LOCAL_STUDIO_CLOUDFLARE_OAUTH.md +36 -0
- package/docs/architecture/PLAN_CLI_AND_LOCAL_STUDIO_DESKTOP.md +96 -0
- package/docs/architecture/R2_SLUG_NAMESPACE.md +20 -0
- package/docs/architecture/SAM_ACTIVITY_RECOVERY_RECEIPT.md +39 -0
- package/docs/architecture/SAM_DECISION_WORK_RECEIPT.md +54 -0
- package/docs/architecture/SAM_KERNEL.md +181 -0
- package/docs/architecture/SAM_MACHINE_NORMALIZATION_PRECOMMIT_REPORT.md +208 -0
- package/docs/architecture/SLASH_SKILLS_PORTABLE.md +116 -0
- package/docs/architecture/WORK_PRODUCT_EXTRACTION.md +97 -0
- package/docs/architecture/fs-e2e-receipt.latest.json +42 -0
- package/docs/architecture/previews/codebaseindex-guided-path/CODEBASEINDEX_GUIDED_PATH.md +202 -0
- package/docs/architecture/previews/codebaseindex-guided-path/index.html +321 -0
- package/docs/brand/AGENT_SAM_ICON_GRAMMAR.md +70 -0
- package/docs/content-studio/HOST_MOUNT_CHECKLIST.md +71 -0
- package/docs/content-studio/REVISION_GATE_2026-09-27.md +501 -0
- package/docs/contracts/capability-install-planner.md +67 -0
- package/docs/contracts/environment-vocabulary.md +195 -0
- package/docs/contracts/google-cloud-oauth-setup.md +199 -0
- package/docs/local-studio/WORKMODE_DONOR_NOTES.md +1 -1
- package/docs/plans/LOCAL-STUDIO-GRADUATION-2026-09-26.md +290 -0
- package/docs/plans/LOCAL-STUDIO-REAL-APP-CONTRACT-ADDENDUM-2026-09-27.md +394 -0
- package/docs/plans/MACHINE-FIRST-APPS-TUI-2026-09-24.md +227 -0
- package/docs/plans/TOMORROW-EXTENSIVE-TODO-2026-09-26.md +221 -0
- package/docs/plans/TOMORROW-MACHINE-FIRST-BRIEFING.md +145 -0
- package/docs/plans/UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md +215 -0
- package/docs/plugins.md +2 -2
- package/docs/product/AGENTSAM_PRODUCT_EXPERIENCE_STANDARD.md +280 -0
- package/docs/product/LOCAL_STUDIO_DESKTOP_EXPERIENCE.md +139 -0
- package/docs/product/README.md +8 -0
- package/docs/rapid-rust-wasm.md +35 -0
- package/migrations/d1/0010_portable_tickets_memory.sql +140 -0
- package/migrations/d1/0011_agentsam_skill_v2.sql +185 -0
- package/migrations/d1/0011b_agentsam_skill_v2_cutover.sql +22 -0
- package/migrations/d1/0011c_agentsam_skill_v2_backfill.sql +76 -0
- package/migrations/d1/0011d_agentsam_skill_v2_retrieval_revisions.sql +50 -0
- package/migrations/d1/0012_agentsam_tools_required_seed.sql +67 -0
- package/migrations/d1/0013_identity_oauth_states.sql +15 -0
- package/migrations/d1/0014_auth_event_log.sql +20 -0
- package/migrations/d1/0015_identity_oauth_state_app_id.sql +3 -0
- package/migrations/d1/0016_cloudflare_oauth_user_oauth_tokens_ssot.sql +14 -0
- package/migrations/d1/README_PORTABLE_CONTROL_PLANE.md +16 -0
- package/migrations/sqlite/agentsam_skill_retrieval.portable.sql +42 -0
- package/package.json +88 -14
- package/packages/agentsam-brand/README.md +106 -11
- package/packages/agentsam-brand/bin/agentsam-brand.mjs +9 -0
- package/packages/agentsam-brand/package.json +39 -7
- package/packages/agentsam-brand/src/adapters/cloudflare-images.js +453 -0
- package/packages/agentsam-brand/src/adapters/cloudflare-r2.js +74 -0
- package/packages/agentsam-brand/src/adapters/d1-registry.js +26 -0
- package/packages/agentsam-brand/src/adapters/filesystem.js +59 -0
- package/packages/agentsam-brand/src/adapters/memory.js +31 -0
- package/packages/agentsam-brand/src/cli/controller.js +503 -0
- package/packages/agentsam-brand/src/cli/wizard.js +526 -0
- package/packages/agentsam-brand/src/core/capabilities.js +201 -0
- package/packages/agentsam-brand/src/core/derivatives.js +211 -0
- package/packages/agentsam-brand/src/core/errors.js +12 -0
- package/packages/agentsam-brand/src/core/ingest.js +195 -0
- package/packages/agentsam-brand/src/core/inspect.js +109 -0
- package/packages/agentsam-brand/src/core/keys.js +83 -0
- package/packages/agentsam-brand/src/core/naming.js +142 -0
- package/packages/agentsam-brand/src/core/optimize.js +316 -0
- package/packages/agentsam-brand/src/core/pack.js +305 -0
- package/packages/agentsam-brand/src/core/plan.js +276 -0
- package/packages/agentsam-brand/src/core/preview.js +159 -0
- package/packages/agentsam-brand/src/core/processors/cloudflare.js +68 -0
- package/packages/agentsam-brand/src/core/processors/contract.js +203 -0
- package/packages/agentsam-brand/src/core/processors/index.js +148 -0
- package/packages/agentsam-brand/src/core/processors/native.js +82 -0
- package/packages/agentsam-brand/src/core/processors/sharp.js +113 -0
- package/packages/agentsam-brand/src/core/processors/squoosh-binary.js +195 -0
- package/packages/agentsam-brand/src/core/promote.js +288 -0
- package/packages/agentsam-brand/src/core/receipts.js +155 -0
- package/packages/agentsam-brand/src/core/v2/compile.js +280 -0
- package/packages/agentsam-brand/src/core/v2/derivatives-semantic.js +207 -0
- package/packages/agentsam-brand/src/core/v2/ingest-graph.js +387 -0
- package/packages/agentsam-brand/src/core/v2/roles.js +180 -0
- package/packages/agentsam-brand/src/core/v2/schema.js +209 -0
- package/packages/agentsam-brand/src/core/v2/templates.js +114 -0
- package/packages/agentsam-brand/src/index.js +193 -36
- package/packages/agentsam-brand/src/presets/app-icon.json +16 -0
- package/packages/agentsam-brand/src/presets/favicon.json +17 -0
- package/packages/agentsam-brand/src/presets/hero.json +12 -0
- package/packages/agentsam-brand/src/presets/index.js +40 -0
- package/packages/agentsam-brand/src/presets/logo.json +12 -0
- package/packages/agentsam-brand/src/presets/model.json +8 -0
- package/packages/agentsam-brand/src/presets/og-image.json +10 -0
- package/packages/agentsam-brand/src/presets/product-shot.json +11 -0
- package/packages/agentsam-brand/src/presets/social-image.json +10 -0
- package/packages/agentsam-brand/src/presets/web-image.json +10 -0
- package/packages/agentsam-contracts/src/artifacts.ts +41 -0
- package/packages/agentsam-contracts/src/errors.ts +16 -0
- package/packages/agentsam-errors/src/envelope.js +53 -0
- package/packages/agentsam-errors/src/index.js +1 -0
- package/packages/agentsam-errors/src/recovery.js +301 -0
- package/packages/agentsam-knowledge/src/autorag/index.js +1 -1
- package/packages/agentsam-knowledge/src/providers/index.js +20 -6
- package/packages/agentsam-knowledge/src/providers/ollama-endpoint.js +31 -0
- package/packages/agentsam-knowledge/test/autorag.test.mjs +22 -1
- package/packages/agentsam-nav/package.json +2 -2
- package/packages/agentsam-rapid-rust/Cargo.lock +344 -0
- package/packages/agentsam-rapid-rust/Cargo.toml +18 -0
- package/packages/agentsam-rapid-rust/README.md +5 -0
- package/packages/agentsam-rapid-rust/src/main.rs +718 -0
- package/packages/agentsam-rapid-rust/templates/api/Cargo.toml.tmpl +18 -0
- package/packages/agentsam-rapid-rust/templates/api/src/lib.rs.tmpl +17 -0
- package/packages/agentsam-rapid-rust/templates/common/README.md.tmpl +22 -0
- package/packages/agentsam-rapid-rust/templates/common/package.json.tmpl +12 -0
- package/packages/agentsam-rapid-rust/templates/common/wrangler.toml.tmpl +6 -0
- package/packages/agentsam-rapid-rust/templates/crypto-auth/Cargo.toml.tmpl +21 -0
- package/packages/agentsam-rapid-rust/templates/crypto-auth/src/lib.rs.tmpl +32 -0
- package/packages/agentsam-rapid-rust/templates/data-processor/Cargo.toml.tmpl +18 -0
- package/packages/agentsam-rapid-rust/templates/data-processor/src/lib.rs.tmpl +41 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/Cargo.toml.tmpl +9 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/core/Cargo.toml.tmpl +7 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/core/src/lib.rs.tmpl +23 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/worker/Cargo.toml.tmpl +12 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/worker/src/lib.rs.tmpl +16 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/wrangler.toml.tmpl +6 -0
- package/packages/agentsam-repository/src/index.js +1 -0
- package/packages/agentsam-repository/src/merkle/semantic.js +3 -10
- package/packages/agentsam-repository/src/source-types.js +85 -0
- package/packages/agentsam-vault/README.md +96 -0
- package/packages/agentsam-vault/package.json +32 -0
- package/packages/agentsam-vault/src/contracts/credential.d.ts +78 -0
- package/packages/agentsam-vault/src/contracts/credential.js +132 -0
- package/packages/agentsam-vault/src/crypto/aes-gcm.d.ts +30 -0
- package/packages/agentsam-vault/src/crypto/aes-gcm.js +107 -0
- package/packages/agentsam-vault/src/crypto/oauth-envelope.js +150 -0
- package/packages/agentsam-vault/src/index.d.ts +9 -0
- package/packages/agentsam-vault/src/index.js +27 -0
- package/packages/agentsam-vault/src/providers/registry.js +90 -0
- package/packages/agentsam-vault/src/runtime/resolver.js +77 -0
- package/packages/agentsam-workbench/README.md +24 -0
- package/packages/agentsam-workbench/package.json +38 -0
- package/packages/agentsam-workbench/src/agent/AgentPanel.tsx +41 -0
- package/packages/agentsam-workbench/src/agent/ArtifactCard.tsx +9 -0
- package/packages/agentsam-workbench/src/agent/Composer.tsx +102 -0
- package/packages/agentsam-workbench/src/agent/ConnectedAgentPanel.tsx +194 -0
- package/packages/agentsam-workbench/src/agent/ContextualComposer.tsx +788 -0
- package/packages/agentsam-workbench/src/agent/GoalStatusStrip.tsx +38 -0
- package/packages/agentsam-workbench/src/agent/MiniAgentSam.tsx +86 -0
- package/packages/agentsam-workbench/src/agent/ModelSelect.tsx +19 -0
- package/packages/agentsam-workbench/src/agent/Thread.tsx +56 -0
- package/packages/agentsam-workbench/src/agent/ToolReceipt.tsx +11 -0
- package/packages/agentsam-workbench/src/agent/contextual-composer.css +611 -0
- package/packages/agentsam-workbench/src/agent/index.ts +10 -0
- package/packages/agentsam-workbench/src/agent/mini-agentsam.css +12 -0
- package/packages/agentsam-workbench/src/browser/BrowserFrame.tsx +37 -0
- package/packages/agentsam-workbench/src/browser/index.ts +1 -0
- package/packages/agentsam-workbench/src/index.ts +6 -0
- package/packages/agentsam-workbench/src/project-control.css +160 -0
- package/packages/agentsam-workbench/src/projects/ProjectsSurface.tsx +131 -0
- package/packages/agentsam-workbench/src/projects/index.ts +1 -0
- package/packages/agentsam-workbench/src/shell/Breadcrumb.tsx +35 -0
- package/packages/agentsam-workbench/src/shell/ResizableStage.tsx +99 -0
- package/packages/agentsam-workbench/src/shell/SidePanel.tsx +5 -0
- package/packages/agentsam-workbench/src/shell/index.ts +4 -0
- package/packages/agentsam-workbench/src/shell/surfaceRegistry.ts +29 -0
- package/packages/agentsam-workbench/src/terminal/TerminalSurface.tsx +5 -0
- package/packages/agentsam-workbench/src/terminal/index.ts +1 -0
- package/packages/agentsam-workbench/src/timeline/GanttBoard.tsx +258 -0
- package/packages/agentsam-workbench/src/timeline/index.ts +1 -0
- package/packages/agentsam-workbench/tsconfig.json +13 -0
- package/packages/connectors/cloudflare/OAUTH_STORAGE_AUDIT.md +53 -0
- package/packages/connectors/cloudflare/package.json +3 -1
- package/packages/connectors/cloudflare/src/api-client.js +279 -0
- package/packages/connectors/cloudflare/src/capabilities.js +585 -0
- package/packages/connectors/cloudflare/src/credential.js +318 -0
- package/packages/connectors/cloudflare/src/families/brand-protection.js +123 -0
- package/packages/connectors/cloudflare/src/families/keyless.js +114 -0
- package/packages/connectors/cloudflare/src/families/pages.js +151 -0
- package/packages/connectors/cloudflare/src/families/scanner.js +123 -0
- package/packages/connectors/cloudflare/src/families/snippets.js +207 -0
- package/packages/connectors/cloudflare/src/families/tag-gateway.js +46 -0
- package/packages/connectors/cloudflare/src/families/tags.js +124 -0
- package/packages/connectors/cloudflare/src/families/token-validation.js +95 -0
- package/packages/connectors/cloudflare/src/families/workflows.js +156 -0
- package/packages/connectors/cloudflare/src/index.js +102 -265
- package/packages/connectors/cloudflare/src/oauth-persist.js +336 -0
- package/packages/connectors/cloudflare/src/owner.js +42 -12
- package/packages/connectors/cloudflare/src/permission-options.js +1064 -0
- package/packages/connectors/cloudflare/src/routes.js +318 -144
- package/packages/connectors/cloudflare/src/scope-catalog.js +345 -0
- package/packages/connectors/cloudflare/src/vault.js +2 -2
- package/packages/connectors/cloudflare/tests/capabilities.test.mjs +276 -0
- package/packages/connectors/cloudflare/tests/connector.test.mjs +51 -30
- package/packages/connectors/cloudflare/tests/oauth-persist.test.mjs +125 -0
- package/packages/identity/.agentsam/features/oauth-login-portal/agentsam.feature.json +1 -1
- package/packages/identity/.agentsam/features/oauth-login-portal/providers.json +22 -2
- package/packages/identity/.agentsam/features/oauth-login-portal/resources.json +10 -4
- package/packages/identity/.agentsam/features/oauth-login-portal/routes.json +31 -2
- package/packages/identity/README.md +1 -1
- package/packages/identity/backend/README.md +1 -1
- package/packages/identity/docs/PORTABLE_IDENTITY_ARCHITECTURE.md +50 -0
- package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +32 -0
- package/packages/identity/migrations/sqlite/001_identity_core.sql +99 -0
- package/packages/identity/migrations/sqlite/002_identity_oauth_client.sql +38 -0
- package/packages/identity/migrations/sqlite/003_identity_oauth_server.sql +64 -0
- package/packages/identity/migrations/sqlite/004_identity_oauth_consent_catalog.sql +48 -0
- package/packages/identity/package.json +3 -2
- package/packages/identity/scripts/local-identity-bridge.mjs +184 -0
- package/packages/identity/scripts/preview-auth-portal.mjs +7 -7
- package/packages/identity/src/adapters/cloudflare-d1/index.js +153 -24
- package/packages/identity/src/adapters/sqlite/index.js +322 -0
- package/packages/identity/src/app/verify-app.js +95 -0
- package/packages/identity/src/contracts/auth-config.js +28 -8
- package/packages/identity/src/contracts/external-identity.js +1 -1
- package/packages/identity/src/contracts/identity-store.js +115 -0
- package/packages/identity/src/contracts/provider.js +1 -0
- package/packages/identity/src/contracts/route-ids.js +30 -0
- package/packages/identity/src/contracts/route-projection.js +218 -0
- package/packages/identity/src/contracts/routes.js +11 -0
- package/packages/identity/src/core/browser-paths.js +4 -5
- package/packages/identity/src/core/constants.js +13 -8
- package/packages/identity/src/core/session-policy.js +32 -0
- package/packages/identity/src/frontend/auth-portal/README.md +2 -1
- package/packages/identity/src/frontend/auth-portal/pages/login.html +16 -15
- package/packages/identity/src/frontend/auth-portal/pages/reset.html +9 -8
- package/packages/identity/src/frontend/auth-portal/pages/signup.html +9 -8
- package/packages/identity/src/frontend/auth-portal/preview/dashboard-stub.html +1 -1
- 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 +207 -0
- package/packages/identity/src/index.js +41 -0
- package/packages/identity/src/migrations/0001_identity_core.sql +19 -2
- package/packages/identity/src/migrations/0003_accounts_ssot.sql +20 -0
- package/packages/identity/src/migrations/README.md +5 -2
- package/packages/identity/src/oauth/README.md +19 -8
- package/packages/identity/src/oauth/consent-view.js +388 -0
- package/packages/identity/src/oauth/credentials.js +46 -19
- package/packages/identity/src/oauth/finalize-inbound.js +1 -1
- package/packages/identity/src/oauth/google-desktop-exchange.js +173 -0
- package/packages/identity/src/oauth/iam-platform.js +8 -7
- package/packages/identity/src/oauth/redirect-paths.js +27 -36
- package/packages/identity/src/providers/cloudflare/oauth.js +3 -4
- package/packages/identity/src/providers/cloudflare/profile.js +49 -14
- package/packages/identity/src/providers/iam/index.js +27 -5
- package/packages/identity/src/server/identity-service.js +61 -15
- package/packages/identity/src/server/mount-policy.js +30 -0
- package/packages/identity/src/server/post-auth.js +79 -0
- package/packages/identity/src/server/worker-router.js +208 -146
- package/packages/identity/tests/auth-config.test.mjs +3 -2
- package/packages/identity/tests/finalize-inbound-oauth.test.mjs +6 -6
- package/packages/identity/tests/iam-provider.test.mjs +1 -1
- package/packages/identity/tests/identity-init-scaffold.test.mjs +3 -0
- package/packages/identity/tests/identity-service.test.mjs +52 -5
- package/packages/identity/tests/native-session-worker.test.mjs +64 -0
- package/packages/identity/tests/oauth-consent-view.test.mjs +106 -0
- package/packages/identity/tests/oauth-credentials.test.mjs +20 -5
- package/packages/identity/tests/oauth-presets-accounts-ssot.test.mjs +58 -0
- package/packages/identity/tests/portable-identity-architecture.test.mjs +157 -0
- package/packages/identity/tests/preview-auth-portal.test.mjs +3 -3
- package/packages/identity/tests/session-routes-policy.test.mjs +21 -0
- package/packages/runtime-protocol/src/index.js +154 -0
- package/packages/theme-church-site/package.json +2 -1
- package/packages/theme-church-site/src/index.js +1 -0
- package/packages/theme-companions-site/package.json +2 -1
- package/packages/theme-companions-site/src/index.js +1 -0
- package/packages/theme-floors-site/package.json +2 -1
- package/packages/theme-floors-site/src/index.js +1 -0
- package/packages/theme-fuelnfree-site/package.json +2 -1
- package/packages/theme-fuelnfree-site/src/index.js +1 -0
- package/packages/theme-handyman-site/package.json +2 -1
- package/packages/theme-handyman-site/src/index.js +1 -0
- package/packages/theme-insurance-site/package.json +2 -1
- package/packages/theme-insurance-site/src/index.js +1 -0
- package/packages/theme-scenes/README.md +164 -0
- package/packages/theme-scenes/package.json +53 -0
- package/packages/theme-scenes/src/blocks/index.js +30 -0
- package/packages/theme-scenes/src/contracts/index.js +286 -0
- package/packages/theme-scenes/src/demos/index.js +65 -0
- package/packages/theme-scenes/src/index.js +75 -0
- package/packages/theme-scenes/src/presets/index.js +263 -0
- package/packages/theme-scenes/src/runtime/compile.js +119 -0
- package/packages/theme-scenes/src/scenes/index.js +146 -0
- package/packages/theme-scenes/src/shell/index.js +47 -0
- package/packages/theme-scenes/src/themes/index.js +129 -0
- package/packages/theme-scenes/src/visuals/index.js +41 -0
- package/packages/theme-scenes/test/theme-scenes.test.mjs +179 -0
- package/packages/theme-shinshu-site/package.json +2 -1
- package/packages/theme-shinshu-site/src/index.js +1 -0
- package/packages/work-graph/src/index.js +34 -1
- package/packages/work-graph/src/renderers/gantt-model.js +24 -0
- package/packages/work-graph/test/work-graph.test.mjs +27 -7
- package/protocol/README.md +15 -7
- package/protocol/apps/agentsam.app.v1.schema.json +133 -0
- package/protocol/apps/agentsam.host-install.v1.schema.json +36 -0
- package/protocol/assets/README.md +9 -0
- package/protocol/assets/asset-record.v1.schema.json +64 -0
- package/protocol/brand/brandpack.v1.schema.json +43 -0
- package/protocol/credentials/issue.v1.schema.json +38 -0
- package/protocol/database/connection.v1.schema.json +41 -0
- package/protocol/embeddings/embedding-profile.v1.schema.json +20 -0
- package/protocol/errors/error-envelope.schema.json +135 -1
- package/protocol/errors/recovery.v1.schema.json +50 -0
- package/protocol/runtime/agentsam.runtime.v1.schema.json +75 -0
- package/protocol/runtime/workspace-fs.v1.schema.json +71 -0
- package/protocol/sam/activity.v1.schema.json +48 -0
- package/protocol/sam/answer.v1.schema.json +35 -0
- package/protocol/sam/calibration.v1.schema.json +21 -0
- package/protocol/sam/decision-receipt.v1.schema.json +29 -0
- package/protocol/sam/evaluation.v1.schema.json +19 -0
- package/protocol/sam/operation.schema.json +66 -0
- package/protocol/sam/outcome.v1.schema.json +36 -0
- package/protocol/sam/question.v1.schema.json +26 -0
- package/protocol/sam/registry.seed.json +153 -0
- package/protocol/sam/result.schema.json +53 -0
- package/protocol/sam/state.v1.schema.json +23 -0
- package/protocol/scoring/README.md +10 -0
- package/protocol/scoring/scorecard.v1.schema.json +65 -0
- package/protocol/skills/agentsam.interaction.v1.schema.json +50 -0
- package/protocol/skills/agentsam.skill.v1.schema.json +57 -0
- package/protocol/ui/icon-registry.mjs +227 -0
- package/protocol/ui/icon.v1.schema.json +51 -0
- package/registry/cms-rust-machine-20260928/installable-products.json +31 -0
- package/registry/cms-rust-machine-20260928/manifest.json +22 -0
- package/registry/cms-rust-machine-20260928/migration.sql +237 -0
- package/registry/cms-rust-machine-20260928/receipt.json +21 -0
- package/registry/cms-rust-machine-20260928/receipt.sql +27 -0
- package/scripts/build_rapid_rust_cli.py +83 -0
- package/skills/README.md +22 -9
- package/skills/agentsam-codebaseindex/SKILL.md +225 -0
- package/skills/catalog.json +14 -0
- package/src/attachments/index.js +6 -0
- package/src/attachments/intake.js +235 -0
- package/src/capabilities/repository-snapshot.js +19 -2
- package/src/cli/command-catalog.js +138 -0
- package/src/cli/dispatch.js +48 -0
- package/src/cli.js +225 -27
- package/src/commands/account-auth.js +94 -8
- package/src/commands/api-key.js +244 -0
- package/src/commands/app.js +365 -29
- package/src/commands/billing.js +127 -0
- package/src/commands/brand.js +86 -74
- package/src/commands/cheat-sheet.js +154 -0
- package/src/commands/cloudflare-login.js +222 -0
- package/src/commands/cloudflare.js +453 -23
- package/src/commands/codebaseindex.js +693 -0
- package/src/commands/compute.js +4 -0
- package/src/commands/connections.js +11 -5
- package/src/commands/credentials.js +116 -0
- package/src/commands/env.js +152 -25
- package/src/commands/gcloud-auth.js +427 -0
- package/src/commands/go.js +366 -53
- package/src/commands/google-cloud.js +375 -0
- package/src/commands/identity-init.js +2 -2
- package/src/commands/interaction-clack.js +115 -0
- package/src/commands/mcp.js +226 -33
- package/src/commands/models.js +1 -1
- package/src/commands/ollama.js +3 -2
- package/src/commands/plugins.js +7 -2
- package/src/commands/product.js +36 -0
- package/src/commands/providers.js +62 -14
- package/src/commands/runtime-status.js +28 -9
- package/src/commands/runtime.js +313 -0
- package/src/commands/rust.js +24 -0
- package/src/commands/setup.js +279 -0
- package/src/commands/shell.js +59 -5
- package/src/commands/skill.js +248 -0
- package/src/commands/skills.js +1 -1
- package/src/commands/start-local.js +6 -2
- package/src/commands/terminal.js +171 -0
- package/src/commands/update.js +140 -0
- package/src/commands/whoami.js +392 -56
- package/src/features/resolve.js +1 -0
- package/src/go/build.js +229 -39
- package/src/go/cloudflare.js +506 -105
- package/src/go/container.js +120 -0
- package/src/go/contract.js +9 -4
- package/src/go/discover.js +149 -33
- package/src/go/index.js +15 -3
- package/src/go/native-probe-runner.mjs +119 -0
- package/src/go/{registry.js → official-registry.js} +64 -7
- package/src/go/official-release.js +10 -0
- package/src/go/receipts.js +77 -10
- package/src/go/verify.js +9 -2
- package/src/index.js +31 -0
- package/src/indexing/ingest/discover-models.js +298 -0
- package/src/indexing/ingest/inventory.js +478 -0
- package/src/indexing/ingest/job-graph.js +181 -0
- package/src/indexing/ingest/materials.js +204 -0
- package/src/indexing/ingest/style-evidence.js +181 -0
- package/src/knowledge/source.js +3 -3
- package/src/lib/account-session.js +11 -4
- package/src/lib/app-authority.js +172 -0
- package/src/lib/auth.js +94 -21
- package/src/lib/core-client.js +5 -6
- package/src/lib/credentials-audit.js +451 -0
- package/src/lib/deploy/health.js +24 -6
- package/src/lib/detect-context.js +7 -1
- package/src/lib/google-cloud-connection.js +270 -0
- package/src/lib/google-cloud-inventory.js +385 -0
- package/src/lib/google-desktop-oauth.js +372 -0
- package/src/lib/google-studio-brokered-oauth.js +158 -0
- package/src/lib/identity-scaffold.js +24 -6
- package/src/lib/init-options.js +192 -0
- package/src/lib/local-scaffold.js +48 -16
- package/src/lib/provider-command-remediation.js +308 -0
- package/src/lib/provider-credentials.js +71 -21
- package/src/lib/scaffold/index.js +8 -2
- package/src/lib/scaffold/mcp-server.js +43 -0
- package/src/lib/scaffold/templates/mcp-server/index.js +397 -0
- package/src/lib/scaffold/templates/mcp-server/presets.js +39 -0
- package/src/lib/scaffold/wizards/cms.js +93 -0
- package/src/lib/scaffold/wizards/mcp-server.js +61 -0
- package/src/lib/setup/contract.js +26 -0
- package/src/lib/setup/discover.js +116 -0
- package/src/lib/setup/execute.js +205 -0
- package/src/lib/setup/planner.js +134 -0
- package/src/lib/setup/recipes.js +235 -0
- package/src/lib/setup/runtime-persist.js +197 -0
- package/src/lib/setup/runtime.js +394 -0
- package/src/lib/slash-commands.js +3 -0
- package/src/lib/terminal/machine-identity.js +95 -0
- package/src/lib/terminal-local.js +164 -0
- package/src/lib/terminal-scopes.js +52 -0
- package/src/lib/whoami-capabilities.js +184 -0
- package/src/local-fs/capability.js +121 -0
- package/src/local-fs/freshness.js +75 -0
- package/src/local-fs/index.js +385 -0
- package/src/local-fs/paths.js +100 -0
- package/src/local-pty/server.js +326 -21
- package/src/mcp/authority.js +58 -108
- package/src/mcp/client-adapters.js +68 -144
- package/src/mcp/client.js +142 -122
- package/src/mcp/cloudflare-bundles.js +225 -0
- package/src/mcp/index.js +12 -0
- package/src/models/ai-access-onboarding.js +112 -0
- package/src/models/discovery.js +10 -2
- package/src/models/inventory-core.js +9 -1
- package/src/plugins/cloudflare.js +1 -1
- package/src/providers/ollama-chat.js +2 -1
- package/src/sam/activity/index.js +183 -0
- package/src/sam/client.js +252 -0
- package/src/sam/decision/calibration.js +109 -0
- package/src/sam/decision/confidence.js +126 -0
- package/src/sam/decision/evaluate.js +157 -0
- package/src/sam/decision/evaluators/deterministic.js +341 -0
- package/src/sam/decision/evaluators/heuristic.js +61 -0
- package/src/sam/decision/evaluators/select.js +50 -0
- package/src/sam/decision/evaluators/semantic.js +149 -0
- package/src/sam/decision/hierarchical.js +61 -0
- package/src/sam/decision/index.js +53 -0
- package/src/sam/decision/policy.js +86 -0
- package/src/sam/decision/questions.js +120 -0
- package/src/sam/decision/receipt.js +148 -0
- package/src/sam/decision/state.js +117 -0
- package/src/sam/decision/types.js +22 -0
- package/src/sam/decision/validate.js +200 -0
- package/src/sam/define.js +51 -0
- package/src/sam/index.js +65 -0
- package/src/sam/operations/brand-scan.js +62 -0
- package/src/sam/operations/cad-blender-inspect.js +36 -0
- package/src/sam/operations/codebaseindex-ingest.js +49 -0
- package/src/sam/operations/decision-evaluate.js +59 -0
- package/src/sam/operations/planning-astar.js +77 -0
- package/src/sam/operations/planning-goap.js +60 -0
- package/src/sam/operations/repository-inspect.js +72 -0
- package/src/sam/operations/security-scan.js +33 -0
- package/src/sam/operations/terminal-exec.js +29 -0
- package/src/sam/planning/astar.js +311 -0
- package/src/sam/planning/goap.js +177 -0
- package/src/sam/planning/index.js +21 -0
- package/src/sam/planning/state.js +84 -0
- package/src/sam/registry.js +48 -0
- package/src/sam/result.js +77 -0
- package/src/sam/seed.js +44 -0
- package/src/sam/types.js +116 -0
- package/src/security/inventory.js +12 -2
- package/src/security/local-vault.js +2 -0
- package/src/security/scan.js +1 -1
- package/src/skills/catalog.js +64 -0
- package/src/skills/content-resolver.js +124 -0
- package/src/skills/hosted-store.js +37 -0
- package/src/skills/index.js +29 -64
- package/src/skills/interaction.js +102 -0
- package/src/skills/local-store.js +228 -0
- package/src/skills/manifest.js +104 -0
- package/src/skills/metrics.js +31 -0
- package/src/skills/registry.js +184 -0
- package/src/skills/runtime.js +287 -0
- package/src/skills/slash.js +44 -0
- package/src/ui/cli/help.js +94 -101
- package/test/account-session.test.mjs +3 -3
- package/test/app-authority-context.test.mjs +32 -0
- package/test/cli/api-key-env-whoami.test.mjs +129 -0
- package/test/cli/codebaseindex-plan-ux.test.mjs +37 -0
- package/test/cli/go.test.mjs +62 -5
- package/test/cli/mcp-client.test.mjs +21 -10
- package/test/cli/runtime-persist.test.mjs +56 -0
- package/test/cli/rust-command.test.mjs +21 -0
- package/test/cli/skill-npm-and-env.test.mjs +52 -0
- package/test/cli/wireframes-go-registry.test.mjs +87 -2
- package/test/credentials-audit.test.mjs +113 -0
- package/test/deploy-health-scan.test.mjs +29 -1
- package/test/gcloud-auth.test.mjs +111 -0
- package/test/go/build-source-identity.test.mjs +31 -0
- package/test/go/cloudflare-probe.test.mjs +274 -10
- package/test/go/distribution.test.mjs +28 -0
- package/test/google-cloud-connection.test.mjs +83 -0
- package/test/google-cloud-inventory.test.mjs +64 -0
- package/test/init-options.test.mjs +35 -0
- package/test/integration/ai-access-onboarding.test.mjs +47 -0
- package/test/integration/app-command.test.mjs +30 -0
- package/test/integration/cad-project.test.mjs +4 -1
- package/test/integration/cli-help.test.mjs +1 -1
- package/test/integration/cms-app-scaffold.test.mjs +71 -0
- package/test/integration/cms-site-tenancy-contract.test.mjs +9 -8
- package/test/integration/codebaseindex-ingest.test.mjs +214 -0
- package/test/integration/features-resolve.test.mjs +30 -11
- package/test/integration/icon-registry.test.mjs +67 -0
- package/test/integration/ingest-discover-models.test.mjs +30 -0
- package/test/integration/inspect-path-cli.test.mjs +46 -0
- package/test/integration/install-script.test.mjs +12 -9
- package/test/integration/inventory-evidence.test.mjs +125 -0
- package/test/integration/local-fs.test.mjs +113 -0
- package/test/integration/provider-env-cli.test.mjs +2 -1
- package/test/integration/runtime-status.integration.test.mjs +2 -1
- package/test/integration/sam-activity-recovery.test.mjs +147 -0
- package/test/integration/sam-decision.test.mjs +584 -0
- package/test/integration/sam-kernel.test.mjs +99 -0
- package/test/integration/sam-planning-astar.test.mjs +279 -0
- package/test/integration/skill-runtime.test.mjs +240 -0
- package/test/integration/studio-fs-pty-e2e.test.mjs +294 -0
- package/test/knowledge.test.mjs +35 -1
- package/test/loopback-oauth.test.mjs +53 -0
- package/test/models.test.mjs +14 -7
- package/test/ollama.test.mjs +22 -0
- package/test/security.test.mjs +23 -0
- package/test/setup-planner.test.mjs +74 -0
- package/test/setup-runtime.test.mjs +51 -0
- package/test/shell.test.mjs +4 -4
- package/test/terminal/local-pty.mock.test.mjs +3 -1
- package/test/terminal-machine-identity.test.mjs +88 -0
- package/test/whoami-resume.test.mjs +27 -6
- package/packages/agentsam-brand/test/brand-scan.test.mjs +0 -106
- package/packages/work-graph/prototype/README.md +0 -32
- package/packages/work-graph/prototype/data/demo-workgraph.js +0 -47
- package/packages/work-graph/prototype/renderers/timeline-model.js +0 -21
- package/packages/work-graph/prototype/renderers/workgraph-runtime.js +0 -38
- package/packages/work-graph/prototype-gnantt.html +0 -655
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
# AgentSam Product Experience Standard
|
|
2
|
+
|
|
3
|
+
**Status:** Internal product law
|
|
4
|
+
**Applies to:** AgentSam SDK · Local Studio · packaged AgentSam apps · runtime surfaces · developer tooling
|
|
5
|
+
**Product:** `@inneranimalmedia/agentsam-sdk`
|
|
6
|
+
**Machinery:** SAM — **Systematic Autonomous Machinery**
|
|
7
|
+
|
|
8
|
+
> **Complex underneath. Effortless above.**
|
|
9
|
+
|
|
10
|
+
## Product posture
|
|
11
|
+
|
|
12
|
+
AgentSam is a professional software platform, not a prototype dashboard, chatbot wrapper, or collection of demos. The UI communicates maturity through **clarity, speed, consistency, depth, and restraint**.
|
|
13
|
+
|
|
14
|
+
A user should feel that the system is capable without being forced to look at all of the machinery that makes it capable.
|
|
15
|
+
|
|
16
|
+
## Progressive discovery
|
|
17
|
+
|
|
18
|
+
> **Reveal a capability when context makes it useful; do not advertise the entire machinery permanently.**
|
|
19
|
+
|
|
20
|
+
This applies to terminals, runtimes, languages, forwarding, LSP, databases, cloud providers, CMS, CAD, machine inspection, identity, install/setup, and AgentSam itself.
|
|
21
|
+
|
|
22
|
+
If only one healthy runtime exists, do not show a runtime picker. If a repository requires Go, surface Go when the user runs or inspects that repository. Context creates discovery.
|
|
23
|
+
|
|
24
|
+
## Local Studio is a real desktop work application
|
|
25
|
+
|
|
26
|
+
Local Studio is not a PWA pretending to be desktop software, a hosted website hidden behind a native wrapper, a bootstrap/status page users must escape before doing work, or a chatbot with tools bolted on.
|
|
27
|
+
|
|
28
|
+
Expected launch path:
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
Launch AgentSam Local Studio.app
|
|
32
|
+
↓
|
|
33
|
+
bundled Local Studio application
|
|
34
|
+
↓
|
|
35
|
+
restore last workspace/session
|
|
36
|
+
↓
|
|
37
|
+
local runtime becomes available quietly
|
|
38
|
+
↓
|
|
39
|
+
account/cloud/provider state hydrates without blocking local work
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The shipped `.app` must boot directly into the real application interface. A thin **Open Studio UI / Stay on this shell** runtime-status page is a development or recovery fallback, not a shippable default.
|
|
43
|
+
|
|
44
|
+
## Local-first contract
|
|
45
|
+
|
|
46
|
+
Local functionality remains useful without authentication or network availability: files, local projects, SQLite, PTY/terminal, agentsamd, repository inspection, local language tooling, and installed local CAD/modeling integrations.
|
|
47
|
+
|
|
48
|
+
Authentication enhances the product. It does not gate the user's computer.
|
|
49
|
+
|
|
50
|
+
## Visual identity
|
|
51
|
+
|
|
52
|
+
The default visual language is **quiet, dark, precise, desktop-native, and content-first**.
|
|
53
|
+
|
|
54
|
+
Prefer near-black neutral work surfaces, restrained borders, compact chrome, crisp typography, careful spacing, small precise active states, limited iconography, contextual panels that disappear when closed, and motion that communicates state changes.
|
|
55
|
+
|
|
56
|
+
Avoid particle effects as ordinary product chrome, glowing dashboard cards, pulsing status indicators, decorative telemetry, giant capability dashboards, nested cards without purpose, permanent status rails, and "AI is thinking" theater.
|
|
57
|
+
|
|
58
|
+
Motion should be experienced as smoothness, not watched as entertainment.
|
|
59
|
+
|
|
60
|
+
## Canonical layout modes
|
|
61
|
+
|
|
62
|
+
### Focused work
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
project/history rail | main work/chat | contextual editor/browser/details
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Code / file work
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
project/history rail | editor/work surface | file tree/workspace/context
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Full workbench
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
minimal nav | primary surface | optional contextual secondary pane
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The active task owns the screen. Secondary panes support it.
|
|
81
|
+
|
|
82
|
+
A user should move naturally among recent work, projects, Git worktrees, local folders, attached runtimes, containers, and future remote workspaces without needing to understand the transport underneath.
|
|
83
|
+
|
|
84
|
+
## The work surface defines the experience
|
|
85
|
+
|
|
86
|
+
Browsing should feel like a browser; coding like an editor; data work like a database editor; CMS work like a CMS; CAD work like CAD; terminal work like a terminal.
|
|
87
|
+
|
|
88
|
+
AgentSam intelligence is contextual infrastructure, not permanent visual chrome.
|
|
89
|
+
|
|
90
|
+
> Every capability should feel native to the surface where it is used.
|
|
91
|
+
|
|
92
|
+
## Tabs, split panes, browser, and annotation
|
|
93
|
+
|
|
94
|
+
Tabs are first-class desktop primitives. State should preserve and restore per workspace, split panes should feel like one application, and contextual panels should disappear completely when closed.
|
|
95
|
+
|
|
96
|
+
The in-app browser is a serious work primitive, not an iframe preview.
|
|
97
|
+
|
|
98
|
+
Annotation is a signature AgentSam interaction. A user should be able to select a real DOM element, code range, file, database object, CMS section, CAD object, browser region, artifact, runtime, or job and open a minimal contextual composer against that structured selection.
|
|
99
|
+
|
|
100
|
+
AgentSam should know **what was selected**, not merely where the user clicked.
|
|
101
|
+
|
|
102
|
+
## Terminal and runtime model
|
|
103
|
+
|
|
104
|
+
Do not create separate terminal architectures for each language.
|
|
105
|
+
|
|
106
|
+
```text
|
|
107
|
+
terminal_instance → where compute lives
|
|
108
|
+
terminal_connection → how AgentSam reaches it
|
|
109
|
+
terminal_session → interactive PTY
|
|
110
|
+
terminal_job → detached/background work
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Capabilities hang off the target:
|
|
114
|
+
|
|
115
|
+
```text
|
|
116
|
+
pty
|
|
117
|
+
exec
|
|
118
|
+
filesystem
|
|
119
|
+
ports
|
|
120
|
+
forwarding
|
|
121
|
+
jobs
|
|
122
|
+
lsp
|
|
123
|
+
docker
|
|
124
|
+
node
|
|
125
|
+
python
|
|
126
|
+
go
|
|
127
|
+
rust
|
|
128
|
+
freecad
|
|
129
|
+
openscad
|
|
130
|
+
blender
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
"Go service", "Rust task", "Python worker", and "Node dev server" are process profiles, not new PTY technologies.
|
|
134
|
+
|
|
135
|
+
Forwarding should be first-class but mostly invisible. If a process exposes a port, Local Studio can offer **Open preview** and resolve forwarding underneath.
|
|
136
|
+
|
|
137
|
+
## Databases
|
|
138
|
+
|
|
139
|
+
AgentSam's own `.agentsam/data/agentsam.sqlite` is application state, not a claim that Local Studio supports only one SQLite database.
|
|
140
|
+
|
|
141
|
+
User-owned SQLite is first-class: create/open arbitrary databases, attach/detach, CRUD, scoped SQL, duplicate/backup, rename/delete with confirmation, and offline operation.
|
|
142
|
+
|
|
143
|
+
## Identity and storage authority
|
|
144
|
+
|
|
145
|
+
Local Studio ships the AgentSam identity **UI and client contract** inside the app. The official connected AgentSam distribution does not create a second canonical account database on the device.
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
packaged AgentSam auth UI
|
|
149
|
+
↓
|
|
150
|
+
identity_bridge
|
|
151
|
+
↓
|
|
152
|
+
configured identity service / Worker
|
|
153
|
+
↓
|
|
154
|
+
main account database
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
The installed app receives a native bearer session from the same identity service and keeps that credential in the platform secure store. The main database remains authoritative for account, user, session, grant, billing, membership, provider-connection, and other shared/cloud state.
|
|
158
|
+
|
|
159
|
+
Device-local SQLite has a different authority:
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
main DB = account/shared/cloud truth
|
|
163
|
+
local SQLite = device/workspace/cache/offline-outbox/runtime truth
|
|
164
|
+
secure store = secret/credential truth
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Do not dual-write canonical server records into SQLite. A local cached server record must be explicitly cache/sync state and disposable. Offline mutations to server-owned resources use an idempotent outbox and are committed through the Worker when connectivity returns.
|
|
168
|
+
|
|
169
|
+
The portable identity package still supports an explicit standalone SQLite identity adapter for independent/offline products. That is a deployment choice, not the default authority of the official connected AgentSam download.
|
|
170
|
+
|
|
171
|
+
Platform secure storage is a contract, not a macOS assumption: macOS uses Keychain; Windows uses Credential Manager; Linux uses the platform secret service; iOS and Android use their native secure-storage adapters.
|
|
172
|
+
|
|
173
|
+
## External desktop escape hatches
|
|
174
|
+
|
|
175
|
+
Useful actions include Open in Cursor, default app, Terminal, iTerm2, Reveal in Finder, Open on GitHub, and Save as.
|
|
176
|
+
|
|
177
|
+
These are convenience paths. They do not replace Local Studio's own editor, PTY, browser, files, database, or runtime system.
|
|
178
|
+
|
|
179
|
+
## Donor extraction and dependency direction
|
|
180
|
+
|
|
181
|
+
InnerAnimalMedia is a donor and proving ground. It is not a runtime dependency of Local Studio.
|
|
182
|
+
|
|
183
|
+
```text
|
|
184
|
+
agentsam-sdk
|
|
185
|
+
│
|
|
186
|
+
reusable packages/contracts
|
|
187
|
+
│
|
|
188
|
+
┌─────────────┼─────────────┐
|
|
189
|
+
▼ ▼ ▼
|
|
190
|
+
Local Studio InnerAnimalMedia customer apps
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Never make Local Studio import portable runtime/UI truth from the InnerAnimalMedia repository.
|
|
194
|
+
|
|
195
|
+
Salvage proven UI, adapters, contracts, browser/editor/file behaviors, OAuth work, CMS mechanics, runtime patterns, and interaction components; remove InnerAnimalMedia-specific tenancy, branding, URLs, customer IDs, bindings, and deployment policy; land reusable ownership once in AgentSam SDK; let InnerAnimalMedia consume it through explicit adapters.
|
|
196
|
+
|
|
197
|
+
Portability test:
|
|
198
|
+
|
|
199
|
+
> Could a developer clone only `agentsam-sdk`, build/install Local Studio, and get the core experience without an `inneranimalmedia` checkout?
|
|
200
|
+
|
|
201
|
+
For portable functionality, the answer must be yes.
|
|
202
|
+
|
|
203
|
+
## Authority and registry discipline
|
|
204
|
+
|
|
205
|
+
Do not flatten product, app, package, service, feature, capability, operation, tool, runtime, and install state into one registry.
|
|
206
|
+
|
|
207
|
+
Preserve:
|
|
208
|
+
|
|
209
|
+
```text
|
|
210
|
+
APP
|
|
211
|
+
apps/*/agentsam.app.json
|
|
212
|
+
|
|
213
|
+
PACKAGE / SERVICE
|
|
214
|
+
agentsam.package.json / package metadata
|
|
215
|
+
|
|
216
|
+
FEATURE
|
|
217
|
+
agentsam.feature.json
|
|
218
|
+
|
|
219
|
+
CAPABILITY
|
|
220
|
+
protocol/capabilities/manifest.json
|
|
221
|
+
|
|
222
|
+
OPERATION
|
|
223
|
+
protocol/sam/* + defineSamOperation()
|
|
224
|
+
|
|
225
|
+
TOOL
|
|
226
|
+
platform / MCP bounded registry
|
|
227
|
+
|
|
228
|
+
RUNTIME
|
|
229
|
+
agentsam.runtime.v1 + terminal_* state
|
|
230
|
+
|
|
231
|
+
INSTALL
|
|
232
|
+
.agentsam state + receipts
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
The official platform product inventory remains `agentsam_products` and its platform relationships.
|
|
236
|
+
|
|
237
|
+
Any source-controlled `registry/products/*` layer is a **thin relationship/index seed**: product IDs, authority paths, host/mount relationships, service relationships, and platform linkage. It must not copy versions, commands, capability lists, runtime facts, or other fields already owned elsewhere.
|
|
238
|
+
|
|
239
|
+
## Product quality bar
|
|
240
|
+
|
|
241
|
+
Local Studio should feel deliberate, quiet, responsive, high-confidence, contextual, predictable, and deeply capable.
|
|
242
|
+
|
|
243
|
+
Never gimmicky, demo-first, fake, capability-theater, or overloaded with status chrome.
|
|
244
|
+
|
|
245
|
+
Infrastructure earns its value by making visible work reliable.
|
|
246
|
+
|
|
247
|
+
## Acceptance rules
|
|
248
|
+
|
|
249
|
+
1. **Real over fake** — no fake green states or pretend integrations.
|
|
250
|
+
2. **Context over dashboards** — surface capabilities where they matter.
|
|
251
|
+
3. **Local-first** — local work does not wait on account/cloud availability.
|
|
252
|
+
4. **Progressive discovery** — advanced controls appear when useful.
|
|
253
|
+
5. **One coherent product** — browser, files, editor, terminal, database, CMS, CAD, Work, and AgentSam share interaction language.
|
|
254
|
+
6. **No permanent noise** — closed panels disappear.
|
|
255
|
+
7. **Native platform behavior** — tabs/splits where appropriate, native file dialogs, OS secure storage, external-open actions, and platform-appropriate local capabilities.
|
|
256
|
+
8. **Capability truth** — UI affordances derive from real runtime/provider capability.
|
|
257
|
+
9. **Smoothness is functional** — animation reduces friction.
|
|
258
|
+
10. **AgentSam remains contextual** — intelligence supports the work instead of competing with it.
|
|
259
|
+
|
|
260
|
+
## Design test
|
|
261
|
+
|
|
262
|
+
Before adding a permanent control, panel, badge, dashboard, runtime selector, or status surface, ask:
|
|
263
|
+
|
|
264
|
+
```text
|
|
265
|
+
Does the user need this visible right now?
|
|
266
|
+
Can context reveal it later?
|
|
267
|
+
Can the system infer this safely?
|
|
268
|
+
Is it useful to the task, or merely proof that our backend exists?
|
|
269
|
+
Would a mature professional application expose this continuously?
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
If the answer points toward hiding it, hide it.
|
|
273
|
+
|
|
274
|
+
## North star
|
|
275
|
+
|
|
276
|
+
> **A serious desktop work environment where browser, files, code, terminal, data, CMS, CAD, runtimes, cloud resources, and AgentSam intelligence behave as if they were designed together from the beginning.**
|
|
277
|
+
|
|
278
|
+
AgentSam makes complex infrastructure feel simple without pretending the infrastructure is simple.
|
|
279
|
+
|
|
280
|
+
That is the brand.
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Local Studio Desktop Experience Contract
|
|
2
|
+
|
|
3
|
+
**Status:** Product acceptance contract
|
|
4
|
+
**App:** `local-studio`
|
|
5
|
+
**Desktop shell:** `packages/agentsam-desktop-shell`
|
|
6
|
+
**Canonical UI:** `apps/local-studio`
|
|
7
|
+
**Identity package:** `packages/identity`
|
|
8
|
+
|
|
9
|
+
The downloadable Local Studio app must look like Local Studio because it **is** Local Studio.
|
|
10
|
+
|
|
11
|
+
## Launch contract
|
|
12
|
+
|
|
13
|
+
Production:
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
AgentSam Local Studio.app
|
|
17
|
+
↓
|
|
18
|
+
Tauri window
|
|
19
|
+
↓
|
|
20
|
+
bundled apps/local-studio desktop SPA
|
|
21
|
+
↓
|
|
22
|
+
real AgentSam shell / workspace
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Not acceptable as a shipped default:
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
bootstrap/status shell
|
|
29
|
+
→ "Open Studio UI"
|
|
30
|
+
→ hosted website
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The packager must fail closed if the real desktop SPA is missing. It must never silently substitute a recovery page into a release artifact.
|
|
34
|
+
|
|
35
|
+
Native capability startup (`agentsamd`, filesystem bridges, database bridges) happens in the background and must not cover the work surface with a diagnostic boot screen.
|
|
36
|
+
|
|
37
|
+
## Packaged identity UI, shared account authority
|
|
38
|
+
|
|
39
|
+
Local Studio packages the real AgentSam login/signup/reset UI inside the application. Displaying that UI does not require redirecting to a website.
|
|
40
|
+
|
|
41
|
+
For the official connected AgentSam distribution, authentication writes to the configured identity service and main database:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
Local Studio / future mobile app
|
|
45
|
+
↓
|
|
46
|
+
bundled auth portal
|
|
47
|
+
↓
|
|
48
|
+
identity_bridge
|
|
49
|
+
↓
|
|
50
|
+
Worker identity API
|
|
51
|
+
↓
|
|
52
|
+
main account database
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The Worker creates/resolves the canonical user and `auth_sessions` row. Native clients request the same session as a bearer credential rather than relying on a browser cookie. The credential is stored in the platform secure store and `/api/auth/me` validates it against the main database.
|
|
56
|
+
|
|
57
|
+
There is no desktop-only account table and no duplicate canonical user/session authority.
|
|
58
|
+
|
|
59
|
+
## Three storage authorities
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
MAIN SERVICE / DB
|
|
63
|
+
accounts, users, auth sessions, OAuth grants, provider connections,
|
|
64
|
+
billing, memberships, shared/project/cloud records
|
|
65
|
+
|
|
66
|
+
LOCAL SQLITE
|
|
67
|
+
installation/device metadata, workspace state, local projects, caches,
|
|
68
|
+
runtime/job state, sync cursors, offline outbox, user-opened SQLite DBs
|
|
69
|
+
|
|
70
|
+
OS SECURE STORE
|
|
71
|
+
account session credential, device credentials, encryption keys,
|
|
72
|
+
machine-private provider secrets where policy allows
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
SQLite must not become a shadow copy of the main account database. Cached remote records are explicitly non-authoritative and disposable. Offline server-owned mutations are queued with idempotency keys and committed through the Worker.
|
|
76
|
+
|
|
77
|
+
The portable identity package may use its SQLite identity adapter only when an installation explicitly selects standalone mode.
|
|
78
|
+
|
|
79
|
+
## Platform contract
|
|
80
|
+
|
|
81
|
+
The product contract is broader than macOS:
|
|
82
|
+
|
|
83
|
+
- **macOS:** Tauri desktop, `agentsamd`, bundled JS bridge runtime, Keychain, POSIX shells.
|
|
84
|
+
- **Windows:** Tauri desktop, `agentsamd`, bundled JS bridge runtime, Credential Manager, `pwsh` → Windows PowerShell → `cmd.exe`.
|
|
85
|
+
- **Linux:** Tauri desktop, `agentsamd`, bundled JS bridge runtime, platform secret service, POSIX shells.
|
|
86
|
+
- **iOS:** same UI/service/storage contracts through mobile-native adapters; no executable Node/`agentsamd` sidecar assumption.
|
|
87
|
+
- **Android:** same UI/service/storage contracts through mobile-native adapters; no executable Node/`agentsamd` sidecar assumption.
|
|
88
|
+
|
|
89
|
+
Desktop sidecars are an implementation of local-machine capabilities, not part of the cross-platform protocol. Mobile can connect to remote/local AgentSam runtimes where appropriate while keeping account identity and device state contracts unchanged.
|
|
90
|
+
|
|
91
|
+
## Provider OAuth
|
|
92
|
+
|
|
93
|
+
Provider grants are separate from the AgentSam account session. Google, Cloudflare, GitHub, GCP, and later providers use their own consent/connection lanes. A system browser may be required for a provider's OAuth consent, but the AgentSam login UI itself remains packaged in the app.
|
|
94
|
+
|
|
95
|
+
Provider tokens never belong in callback URLs beyond the minimum standard authorization material, and confidential client secrets never belong in downloadable clients.
|
|
96
|
+
|
|
97
|
+
## Session restoration
|
|
98
|
+
|
|
99
|
+
```text
|
|
100
|
+
secure store has AgentSam session credential?
|
|
101
|
+
no → signed-out cloud/account state; local work remains available
|
|
102
|
+
yes → /api/auth/me with Bearer credential
|
|
103
|
+
valid → canonical account restored from main DB
|
|
104
|
+
invalid → clear stale credential / signed out
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Browser cookies are not required for desktop/mobile session restoration.
|
|
108
|
+
|
|
109
|
+
## Failure behavior
|
|
110
|
+
|
|
111
|
+
If a provider, remote account service, or network connection fails, Local Studio remains usable locally.
|
|
112
|
+
|
|
113
|
+
Ordinary local workflows must never be replaced by a full-screen authentication or infrastructure error.
|
|
114
|
+
|
|
115
|
+
## Release acceptance
|
|
116
|
+
|
|
117
|
+
Before shipping a desktop artifact:
|
|
118
|
+
|
|
119
|
+
- build the Local Studio desktop SPA;
|
|
120
|
+
- copy the packaged auth portal into that SPA;
|
|
121
|
+
- verify the auth portal is AgentSam/host branded rather than donor branded;
|
|
122
|
+
- sync the SPA into the Tauri desktop shell;
|
|
123
|
+
- fail the build if the real SPA is missing or hydrate-only;
|
|
124
|
+
- verify the old `Open Studio UI` / `Stay on this shell` copy is absent;
|
|
125
|
+
- verify native startup work is non-blocking;
|
|
126
|
+
- run the full identity package tests;
|
|
127
|
+
- run Local Studio auth/type/build gates;
|
|
128
|
+
- run Rust checks;
|
|
129
|
+
- verify the packaged identity runtime/migrations are present;
|
|
130
|
+
- build and mount the disk image;
|
|
131
|
+
- launch the app copied from the disk image;
|
|
132
|
+
- verify local signup/login/session restoration without a hosted redirect;
|
|
133
|
+
- verify local files, SQLite, PTY, and `agentsamd` still work signed out.
|
|
134
|
+
|
|
135
|
+
## Product rule
|
|
136
|
+
|
|
137
|
+
> **The downloadable Local Studio app is self-contained AgentSam product software.**
|
|
138
|
+
|
|
139
|
+
Company deployments, customer hosts, and external identity providers are adapters around that product. They are not its intrinsic authority.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# AgentSam Product Standards
|
|
2
|
+
|
|
3
|
+
These documents define product-facing laws above implementation-specific architecture.
|
|
4
|
+
|
|
5
|
+
- [AgentSam Product Experience Standard](./AGENTSAM_PRODUCT_EXPERIENCE_STANDARD.md) — brand posture, visual/interaction language, progressive discovery, Local Studio quality bar, runtime UX, donor extraction, and authority discipline.
|
|
6
|
+
- [Local Studio Desktop Experience Contract](./LOCAL_STUDIO_DESKTOP_EXPERIENCE.md) — launch behavior, bundled UI, desktop OAuth/Keychain behavior, handoff security, and release acceptance.
|
|
7
|
+
|
|
8
|
+
Architecture contracts remain authoritative for their own namespaces, including `docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md` and `docs/architecture/SAM_KERNEL.md`.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# AgentSam Rapid Rust / Wasm
|
|
2
|
+
|
|
3
|
+
`agentsam rust` and `agentsam-rapid-rust` provide one native Rust CLI for scaffolding and locally proving Cloudflare Rust/Wasm workers.
|
|
4
|
+
|
|
5
|
+
## Templates
|
|
6
|
+
|
|
7
|
+
- `api` — compact JSON/health Worker
|
|
8
|
+
- `shared-core` — real Cargo workspace with pure `core/` crate + Cloudflare `worker/` adapter
|
|
9
|
+
- `crypto-auth` — constant-time HMAC-SHA256 request verification
|
|
10
|
+
- `data-processor` — typed JSON batch transform
|
|
11
|
+
|
|
12
|
+
## Local-first
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
python3 scripts/build_rapid_rust_cli.py --bootstrap --build --install --smoke
|
|
16
|
+
agentsam rust doctor
|
|
17
|
+
agentsam rust new my-edge-api --template api --explain
|
|
18
|
+
cd my-edge-api
|
|
19
|
+
agentsam rust check
|
|
20
|
+
agentsam rust build
|
|
21
|
+
agentsam rust dev
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`new`, `doctor`, `check`, and `build` do not deploy. Live deployment is intentionally separate:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
agentsam rust deploy --dry-run
|
|
28
|
+
agentsam rust deploy --yes
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Rust Workers compile to `wasm32-unknown-unknown`; dependencies must be Wasm-compatible. Use a Cloudflare Container instead when the workload needs a normal Linux process model, threaded runtime, large native toolchain, or long-running heavy jobs.
|
|
32
|
+
|
|
33
|
+
## Wasm strip rule
|
|
34
|
+
|
|
35
|
+
Generated Workers use `strip = "debuginfo"`, not `strip = true`. Current wasm-bindgen catch-wrapper generation needs the externref table that full symbol stripping can remove.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
-- 0010_portable_tickets_memory.sql
|
|
2
|
+
-- Portable GOAP / ticket + memory spine for new AgentSam projects (local SQLite or D1).
|
|
3
|
+
-- Account-owned tickets — NOT Inner Animal Media's shared platform DB.
|
|
4
|
+
-- Every write path MUST populate account_id and repository_id (NULL = broken implementation).
|
|
5
|
+
|
|
6
|
+
CREATE TABLE IF NOT EXISTS agentsam_tickets (
|
|
7
|
+
id TEXT PRIMARY KEY,
|
|
8
|
+
title TEXT NOT NULL,
|
|
9
|
+
status TEXT NOT NULL
|
|
10
|
+
CHECK (status IN ('backlog', 'active', 'blocked', 'in_review', 'shipped', 'abandoned')),
|
|
11
|
+
status_reason TEXT,
|
|
12
|
+
project TEXT,
|
|
13
|
+
subsystem TEXT,
|
|
14
|
+
tags TEXT,
|
|
15
|
+
priority TEXT,
|
|
16
|
+
doc_path TEXT,
|
|
17
|
+
blocks TEXT,
|
|
18
|
+
blocked_by TEXT,
|
|
19
|
+
supersedes TEXT,
|
|
20
|
+
created_at INTEGER NOT NULL,
|
|
21
|
+
updated_at INTEGER NOT NULL,
|
|
22
|
+
closed_at INTEGER,
|
|
23
|
+
dedup_key TEXT,
|
|
24
|
+
consecutive_pass_count INTEGER,
|
|
25
|
+
last_gate_run_id INTEGER,
|
|
26
|
+
last_gate_ok_at INTEGER,
|
|
27
|
+
required_pass_count INTEGER,
|
|
28
|
+
description TEXT,
|
|
29
|
+
client_id TEXT,
|
|
30
|
+
due_at INTEGER,
|
|
31
|
+
surface TEXT NOT NULL DEFAULT 'platform',
|
|
32
|
+
start_at INTEGER,
|
|
33
|
+
estimated_minutes INTEGER,
|
|
34
|
+
percent_complete INTEGER NOT NULL DEFAULT 0,
|
|
35
|
+
owner_kind TEXT NOT NULL DEFAULT 'unassigned',
|
|
36
|
+
owner_ref TEXT,
|
|
37
|
+
parent_ticket_id TEXT,
|
|
38
|
+
agent_run_id TEXT,
|
|
39
|
+
worktree TEXT,
|
|
40
|
+
linked_commit TEXT,
|
|
41
|
+
source TEXT NOT NULL DEFAULT 'manual',
|
|
42
|
+
account_id TEXT NOT NULL,
|
|
43
|
+
repository_id TEXT NOT NULL
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
CREATE INDEX IF NOT EXISTS idx_agentsam_tickets_account_repository
|
|
47
|
+
ON agentsam_tickets(account_id, repository_id, updated_at DESC);
|
|
48
|
+
|
|
49
|
+
CREATE INDEX IF NOT EXISTS idx_agentsam_tickets_status
|
|
50
|
+
ON agentsam_tickets(account_id, status, updated_at DESC);
|
|
51
|
+
|
|
52
|
+
CREATE TABLE IF NOT EXISTS agentsam_ticket_events (
|
|
53
|
+
id TEXT PRIMARY KEY,
|
|
54
|
+
ticket_id TEXT NOT NULL REFERENCES agentsam_tickets(id) ON DELETE CASCADE,
|
|
55
|
+
event_type TEXT NOT NULL,
|
|
56
|
+
from_status TEXT,
|
|
57
|
+
to_status TEXT,
|
|
58
|
+
detail TEXT,
|
|
59
|
+
commit_sha TEXT,
|
|
60
|
+
created_at INTEGER NOT NULL,
|
|
61
|
+
actor_type TEXT,
|
|
62
|
+
actor_id TEXT,
|
|
63
|
+
media_asset_id TEXT,
|
|
64
|
+
account_id TEXT NOT NULL,
|
|
65
|
+
repository_id TEXT NOT NULL
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
CREATE INDEX IF NOT EXISTS idx_agentsam_ticket_events_ticket
|
|
69
|
+
ON agentsam_ticket_events(ticket_id, created_at);
|
|
70
|
+
|
|
71
|
+
CREATE TABLE IF NOT EXISTS agentsam_memory (
|
|
72
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
73
|
+
account_id TEXT NOT NULL,
|
|
74
|
+
repository_id TEXT NOT NULL,
|
|
75
|
+
project_id TEXT,
|
|
76
|
+
memory_key TEXT NOT NULL,
|
|
77
|
+
memory_type TEXT NOT NULL
|
|
78
|
+
CHECK (memory_type IN (
|
|
79
|
+
'fact', 'preference', 'decision', 'policy', 'state', 'procedure'
|
|
80
|
+
)),
|
|
81
|
+
title TEXT,
|
|
82
|
+
content TEXT NOT NULL,
|
|
83
|
+
summary TEXT,
|
|
84
|
+
importance INTEGER NOT NULL DEFAULT 5
|
|
85
|
+
CHECK (importance BETWEEN 1 AND 10),
|
|
86
|
+
tags TEXT NOT NULL DEFAULT '[]',
|
|
87
|
+
status TEXT NOT NULL DEFAULT 'active'
|
|
88
|
+
CHECK (status IN ('active', 'archived', 'deleted')),
|
|
89
|
+
is_pinned INTEGER NOT NULL DEFAULT 0,
|
|
90
|
+
content_hash TEXT NOT NULL,
|
|
91
|
+
source TEXT,
|
|
92
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
93
|
+
updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
94
|
+
revision INTEGER NOT NULL DEFAULT 1,
|
|
95
|
+
semantic_hash TEXT,
|
|
96
|
+
sensitivity TEXT NOT NULL DEFAULT 'normal'
|
|
97
|
+
CHECK (sensitivity IN ('normal','internal','confidential','secret')),
|
|
98
|
+
source_client TEXT,
|
|
99
|
+
source_ref TEXT,
|
|
100
|
+
supersedes_id TEXT,
|
|
101
|
+
expires_at INTEGER,
|
|
102
|
+
scope_type TEXT,
|
|
103
|
+
scope_id TEXT,
|
|
104
|
+
idempotency_key TEXT,
|
|
105
|
+
metadata_json TEXT NOT NULL DEFAULT '{}'
|
|
106
|
+
CHECK (json_valid(metadata_json)),
|
|
107
|
+
UNIQUE(account_id, memory_key)
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
CREATE INDEX IF NOT EXISTS idx_agentsam_memory_account_repo
|
|
111
|
+
ON agentsam_memory(account_id, repository_id, updated_at DESC);
|
|
112
|
+
|
|
113
|
+
CREATE TABLE IF NOT EXISTS agentsam_memory_outbox (
|
|
114
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
115
|
+
memory_id TEXT NOT NULL,
|
|
116
|
+
account_id TEXT NOT NULL,
|
|
117
|
+
repository_id TEXT NOT NULL,
|
|
118
|
+
revision INTEGER NOT NULL,
|
|
119
|
+
content_hash TEXT NOT NULL,
|
|
120
|
+
semantic_hash TEXT NOT NULL,
|
|
121
|
+
operation TEXT NOT NULL DEFAULT 'upsert'
|
|
122
|
+
CHECK (operation IN ('upsert','deactivate','delete')),
|
|
123
|
+
projection_target TEXT NOT NULL DEFAULT 'node_api_pgvector'
|
|
124
|
+
CHECK (projection_target = 'node_api_pgvector'),
|
|
125
|
+
payload_json TEXT NOT NULL DEFAULT '{}'
|
|
126
|
+
CHECK (json_valid(payload_json)),
|
|
127
|
+
status TEXT NOT NULL DEFAULT 'pending'
|
|
128
|
+
CHECK (status IN ('pending','processing','completed','failed')),
|
|
129
|
+
attempts INTEGER NOT NULL DEFAULT 0,
|
|
130
|
+
next_attempt_at INTEGER,
|
|
131
|
+
locked_at INTEGER,
|
|
132
|
+
last_error TEXT,
|
|
133
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
134
|
+
updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
135
|
+
UNIQUE(memory_id, revision, operation)
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
CREATE INDEX IF NOT EXISTS idx_agentsam_memory_outbox_pending
|
|
139
|
+
ON agentsam_memory_outbox(status, next_attempt_at)
|
|
140
|
+
WHERE status IN ('pending','failed');
|