@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,394 @@
|
|
|
1
|
+
# ADDENDUM — Local Studio is a real application (2026-09-27)
|
|
2
|
+
|
|
3
|
+
**Status:** Non-negotiable product/engineering contract. Supersedes any scaffold, demo, remote-redirect, or “UI-first” shortcut that conflicts.
|
|
4
|
+
**Applies to:** `apps/local-studio`, `packages/agentsam-desktop-shell`, `packages/agentsam-*` Studio UI packages, `agentsamd`.
|
|
5
|
+
**Related:** [`LOCAL-STUDIO-GRADUATION-2026-09-26.md`](./LOCAL-STUDIO-GRADUATION-2026-09-26.md) · Fuel/web zero-local handoff remains a separate track.
|
|
6
|
+
|
|
7
|
+
**Governing principle (verbatim):**
|
|
8
|
+
|
|
9
|
+
> Build correctly from the start. Half-measures cost double.
|
|
10
|
+
> Do not optimize for appearing finished. Optimize for each completed slice being production architecture that we can keep.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Part A — Architecture correction (Tauri is real; the product UI must be bundled)
|
|
15
|
+
|
|
16
|
+
### What is actually wrong
|
|
17
|
+
|
|
18
|
+
The `.app`, Rust process, WebView, keychain, sidecars, and Tauri IPC are **real**. That is not the disputed part.
|
|
19
|
+
|
|
20
|
+
The bug is: **we built native capabilities, then stopped rendering a desktop client that consumes them.**
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
CURRENT (wrong product shape)
|
|
24
|
+
|
|
25
|
+
AgentSam Local Studio.app
|
|
26
|
+
├── Tauri / Rust ✅ real native application
|
|
27
|
+
│ ├── keychain / updater / OS
|
|
28
|
+
│ ├── agentsamd supervision
|
|
29
|
+
│ └── Tauri IPC commands
|
|
30
|
+
├── bundled desktop-boot.html ✅ local launcher only
|
|
31
|
+
└── "Open Studio UI"
|
|
32
|
+
└── navigates WebView to
|
|
33
|
+
https://agentsam.inneranimalmedia.com/agentsam
|
|
34
|
+
└── hosted web application
|
|
35
|
+
❌ not the bundled desktop UI
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Effective architecture today:
|
|
39
|
+
|
|
40
|
+
`native runtime → tiny local bootstrap → hosted Studio`
|
|
41
|
+
|
|
42
|
+
Required architecture:
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
TARGET
|
|
46
|
+
|
|
47
|
+
AgentSam Local Studio.app
|
|
48
|
+
├── Tauri / Rust
|
|
49
|
+
│ └── native desktop integration (keychain, windows, updater, OAuth handoff, dialogs)
|
|
50
|
+
├── bundled Studio React client
|
|
51
|
+
│ ├── /agentsam
|
|
52
|
+
│ ├── /database
|
|
53
|
+
│ ├── /terminal
|
|
54
|
+
│ ├── /files / Library
|
|
55
|
+
│ ├── /sites (CMS)
|
|
56
|
+
│ ├── /cad
|
|
57
|
+
│ ├── /projects
|
|
58
|
+
│ └── /settings
|
|
59
|
+
└── agentsamd
|
|
60
|
+
├── SQLite
|
|
61
|
+
├── PTY / terminal
|
|
62
|
+
├── filesystem / workspace
|
|
63
|
+
├── Git
|
|
64
|
+
├── MCP / tools
|
|
65
|
+
├── local models / jobs
|
|
66
|
+
└── machine runtime APIs
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Cloud services are **dependencies of the installed application**, not replacements for it.
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
Local Studio UI (bundled)
|
|
73
|
+
│
|
|
74
|
+
┌──────────┼───────────┐
|
|
75
|
+
▼ ▼ ▼
|
|
76
|
+
agentsamd Tauri cloud APIs
|
|
77
|
+
local IPC optional
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### IPC nuance (do not overstate)
|
|
81
|
+
|
|
82
|
+
Saying “`invoke` dies because the page became remote” is slightly too absolute.
|
|
83
|
+
|
|
84
|
+
- Product truth: after navigating to the hosted Studio, the **primary UI is no longer the bundled desktop client**.
|
|
85
|
+
- Technical nuance: Tauri **can** grant capabilities to remote origins so a hosted page could call `local_sqlite_bridge`, etc.
|
|
86
|
+
- **We refuse that architecture.** Granting a remotely deployed webpage privileged access to SQLite, PTY, filesystem, and agentsamd is the wrong trust boundary for Local Studio.
|
|
87
|
+
|
|
88
|
+
### Nitro SSR ≠ justification for redirect
|
|
89
|
+
|
|
90
|
+
Server-rendered Studio works like: request → Nitro HTML → hydrateRoot(document).
|
|
91
|
+
|
|
92
|
+
Tauri `frontendDist` is static files — there is no Nitro server behind it. Copying hydrate-only client chunks into the `.app` produces a blank window. That is a **build-target problem**, not a reason to make Local Studio remote.
|
|
93
|
+
|
|
94
|
+
**Do not** solve this by bundling Node + Nitro SSR into the `.app` solely to reuse the web entry. Prefer:
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
// web entry
|
|
98
|
+
hydrateRoot(document, <Studio runtime={cloudRuntime} />);
|
|
99
|
+
|
|
100
|
+
// desktop entry
|
|
101
|
+
createRoot(document.getElementById("root")!).render(
|
|
102
|
+
<Studio runtime={desktopRuntime} />
|
|
103
|
+
);
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Shared UI, not two products
|
|
107
|
+
|
|
108
|
+
Do **not** create duplicated `local-studio-cloud` / `local-studio-desktop` apps that fork screens.
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
packages/
|
|
112
|
+
studio-ui/ (or existing feature packages)
|
|
113
|
+
studio-runtime/ contracts + RuntimeHost
|
|
114
|
+
|
|
115
|
+
apps/
|
|
116
|
+
local-studio/
|
|
117
|
+
desktop-entry → DesktopRuntimeHost → Tauri + agentsamd
|
|
118
|
+
studio-web/ (or current Nitro app)
|
|
119
|
+
server-entry → CloudRuntimeHost → authenticated APIs
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Screens call:
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
const runtime = useRuntime();
|
|
126
|
+
await runtime.database.query(...);
|
|
127
|
+
await runtime.terminal.create(...);
|
|
128
|
+
await runtime.files.read(...);
|
|
129
|
+
await runtime.content.importAsset(...);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Not scattered `invoke("local_sqlite_bridge")` inside random React components.
|
|
133
|
+
|
|
134
|
+
### Preferred desktop runtime split
|
|
135
|
+
|
|
136
|
+
| Layer | Owns |
|
|
137
|
+
| --- | --- |
|
|
138
|
+
| **Tauri** | Windowing, keychain, updater, OAuth handoff, native dialogs, app lifecycle, OS integration |
|
|
139
|
+
| **agentsamd** | Terminal/PTY, filesystem/workspaces, Git, SQLite, MCP/tools, jobs, local models — reusable outside Tauri |
|
|
140
|
+
| **Cloud APIs** | Optional authenticated services when the feature truly needs them |
|
|
141
|
+
|
|
142
|
+
Later the same UI can target: `local agentsamd | remote agentsamd | cloud runtime` via one protocol.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Part B — Real application contract (mockups are specs, not permission to fake)
|
|
147
|
+
|
|
148
|
+
This overrides any earlier scaffold / demo / placeholder / remote-redirect interpretation.
|
|
149
|
+
|
|
150
|
+
**A screen is not implemented because its layout exists.**
|
|
151
|
+
A feature is implemented only when its intended user workflow works end-to-end against the real runtime.
|
|
152
|
+
|
|
153
|
+
### Non-negotiable rules
|
|
154
|
+
|
|
155
|
+
1. **Every mocked primary surface must become functional** — or be withheld from production navigation. No clickable UI that leads to empty canvases, fake datasets, placeholder editors, dead controls, decorative metrics, or simulated success.
|
|
156
|
+
|
|
157
|
+
2. **The installed application owns a real bundled application UI.** No main product action may escape via `location.href = https://agentsam.inneranimalmedia.com/...` (or equivalent) merely to obtain the real UI.
|
|
158
|
+
|
|
159
|
+
3. **Mockups define intended capability, not merely styling.** Database → real workbench. CAD → real workspace/runtime. Sites → real site data/ops. Projects → real workspaces. Settings “Runtime: Local Studio - Mac” → detected state.
|
|
160
|
+
|
|
161
|
+
4. **No mock data may silently survive into production paths.** Seed/demo only inside explicitly identified fixtures.
|
|
162
|
+
|
|
163
|
+
5. **Every control terminates in a real contract:**
|
|
164
|
+
|
|
165
|
+
```text
|
|
166
|
+
UI → domain/runtime contract → real implementation
|
|
167
|
+
(agentsamd | Tauri | SQLite | FS | Git | PTY | MCP | cloud API | remote runtime)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
6. **Tauri and agentsamd have separate responsibilities** (see Part A). Do not scatter machine logic across React because `invoke()` is convenient.
|
|
171
|
+
|
|
172
|
+
7. **Desktop UI and web UI may share implementation; desktop is not a redirected web session.** Solve Nitro/SSR via a desktop entry/build target.
|
|
173
|
+
|
|
174
|
+
8. **Routes are capabilities, not milestones.** `/database` existing ≠ done.
|
|
175
|
+
|
|
176
|
+
9. **Blank or skeletal surfaces fail acceptance.** Keep unfinished routes development-only / out of release nav.
|
|
177
|
+
|
|
178
|
+
10. **Database means an actual database workbench** — provider-aware, schema/table/query/CRUD, real errors, persisted connection context. Not mocked JSON.
|
|
179
|
+
|
|
180
|
+
11. **Terminal means an actual terminal** — real PTY/session, stdout/stderr/input, lifecycle/reconnect. Not canned echoes or a remote page.
|
|
181
|
+
|
|
182
|
+
12. **Sites/CMS means actual content ownership and publishing** — reusable across customers; not hard-coded to AgentSam SDK, Fuel, or one brand.
|
|
183
|
+
|
|
184
|
+
13. **Account/Settings read and mutate actual state** — appearance, runtime identity, project context, health checks, update channel.
|
|
185
|
+
|
|
186
|
+
14. **Offline/local-first claims must be testable.** Shell + local files + local DB + supported agentsamd ops must work without needing `agentsam.inneranimalmedia.com` to *render* the primary UI. Cloud-required features may report offline.
|
|
187
|
+
|
|
188
|
+
15. **Do not implement temporary architecture we already know must be removed.** Partial scope OK. Fake completion not OK.
|
|
189
|
+
|
|
190
|
+
16. **“Done” requires evidence** — boot from installed `.app`; no product-critical redirect; real runtime detected; core CRUD/workflow; persist across relaunch; failure + offline tested where relevant; no mock source in production; screenshot/video or automated receipt.
|
|
191
|
+
|
|
192
|
+
### Definition of Done
|
|
193
|
+
|
|
194
|
+
```text
|
|
195
|
+
mock exists ≠ implemented
|
|
196
|
+
route exists ≠ implemented
|
|
197
|
+
component renders ≠ implemented
|
|
198
|
+
API stub exists ≠ implemented
|
|
199
|
+
fake data looks OK ≠ implemented
|
|
200
|
+
|
|
201
|
+
real user action
|
|
202
|
+
→ real runtime/provider
|
|
203
|
+
→ real state change/result
|
|
204
|
+
→ persisted/recoverable state
|
|
205
|
+
= implemented
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Visual parity and functional parity are **both** required. Incremental shipping is OK (Database before CAD); calling empty shells “done” is not.
|
|
209
|
+
|
|
210
|
+
### Navigation status (required)
|
|
211
|
+
|
|
212
|
+
Every primary nav item must be explicitly one of:
|
|
213
|
+
|
|
214
|
+
| Status | Meaning |
|
|
215
|
+
| --- | --- |
|
|
216
|
+
| **REAL** | Acceptance matrix passed |
|
|
217
|
+
| **IN DEVELOPMENT** | Wired but incomplete; may show in dev builds |
|
|
218
|
+
| **NOT SHIPPED** | Hidden from production nav |
|
|
219
|
+
|
|
220
|
+
There is no fourth category: “looks finished but doesn’t do anything.”
|
|
221
|
+
|
|
222
|
+
Surfaces currently represented (must eventually be REAL or withheld): AgentSam/chat, Library, Sites/CMS, CAD, Database, Projects, Settings (Account, Agents, Customize, Brand & Design, Git & PRs, Codebase, Browser & Network, Themes, Storage, Keys & Secrets, Plan & Usage, Notifications, Docs), terminal/runtime controls.
|
|
223
|
+
|
|
224
|
+
Themes cards (AgentSam Graphite, Fuel N Free, Shinshu, …) must become discovered/installed theme projections — not permanent hard-coded gallery fakes. Healthy badges and Local account must derive from real checks/identity.
|
|
225
|
+
|
|
226
|
+
### Library vs Sites → Media
|
|
227
|
+
|
|
228
|
+
| Surface | Meaning |
|
|
229
|
+
| --- | --- |
|
|
230
|
+
| **Library** | Global/user/project resources (files, docs, imports, conversation resources, reusable assets) |
|
|
231
|
+
| **Sites → Media** | Assets belonging to a site’s content model (images, video, logos, product/theme media, variants) |
|
|
232
|
+
|
|
233
|
+
Share storage/runtime primitives underneath. Do **not** build two unrelated media-management systems. Theme editors pick from Media Library — they do not invent a second upload store. Do **not** put the media uploader under `/settings/themes`.
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Part C — Content Studio / Media slice (post `0ac693c` / `49fdf16`)
|
|
238
|
+
|
|
239
|
+
### What landed (foundation — not finished UX)
|
|
240
|
+
|
|
241
|
+
On `agentsam-sdk` `main` through `49fdf16`:
|
|
242
|
+
|
|
243
|
+
- `packages/agentsam-content-studio` — `MediaDropzone.tsx`, wiring in `ContentLibrary` / `ContentStudio`
|
|
244
|
+
- `apps/local-studio/frontend` — `ContentStudioPage` upload→optimize path, `agentsam-sdk-brand` dependency, ambient types unblocker
|
|
245
|
+
- `apps/local-studio/frontend/src/routes/api/content.optimize.ts` — **web/Nitro host** optimize route (sharp server-side)
|
|
246
|
+
- Removed `examples/local-studio-demo` + workspace entry
|
|
247
|
+
|
|
248
|
+
Verified claim from that pass: package typechecks; processors (sharp/etc.) correctly stay server/runtime-side, not in the browser component.
|
|
249
|
+
|
|
250
|
+
### Not complete until product UX + desktop runtime
|
|
251
|
+
|
|
252
|
+
A package component + API route + green typecheck ≠ finished feature.
|
|
253
|
+
|
|
254
|
+
#### 1. Canonical Local Studio destination
|
|
255
|
+
|
|
256
|
+
```text
|
|
257
|
+
Local Studio → Sites → selected site/project → Media / Content Library → real ContentStudio
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Existing Sites hierarchy (Content / Media / Structure / Settings) is correct. **“Open media library” must open the real ContentStudio / ContentLibrary** (with MediaDropzone), not a stub and not Themes.
|
|
261
|
+
|
|
262
|
+
#### 2. Required media UX states
|
|
263
|
+
|
|
264
|
+
Visible lifecycle for uploads: `uploading | registered | processing | ready | failed`.
|
|
265
|
+
|
|
266
|
+
For images, user can see **Original** and **optimized variant**, plus real metadata when available (filename, type, dimensions, sizes, variants, created time, storage/provider, processing state). Do not optimize invisibly.
|
|
267
|
+
|
|
268
|
+
#### 3. `/api/content/optimize` is web-host only — not universal
|
|
269
|
+
|
|
270
|
+
```text
|
|
271
|
+
WRONG as universal architecture:
|
|
272
|
+
ContentStudioPage → POST /api/content/optimize → Nitro → sharp
|
|
273
|
+
(especially if that silently means agentsam.inneranimalmedia.com)
|
|
274
|
+
|
|
275
|
+
RIGHT:
|
|
276
|
+
ContentStudio UI → ContentRuntime → host-specific implementation
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
```text
|
|
280
|
+
ContentStudio UI
|
|
281
|
+
│
|
|
282
|
+
ContentRuntime
|
|
283
|
+
│
|
|
284
|
+
┌──────────────┼───────────────┐
|
|
285
|
+
▼ ▼ ▼
|
|
286
|
+
DesktopRuntime WebRuntime CustomerRuntime
|
|
287
|
+
│ │ │
|
|
288
|
+
agentsamd /api route host adapter
|
|
289
|
+
local fs sharp/etc. configured
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Desktop must **not** require the hosted Studio for local import/optimize. Do not bundle Nitro solely to keep this helper. Contract is SSOT; sharp is one web implementation.
|
|
293
|
+
|
|
294
|
+
#### 4. Orchestration belongs in the runtime, not the page
|
|
295
|
+
|
|
296
|
+
Prefer:
|
|
297
|
+
|
|
298
|
+
```ts
|
|
299
|
+
runtime.content.importAsset(...)
|
|
300
|
+
// events: asset.created | processing | variant.created | ready | failed
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
over page-owned:
|
|
304
|
+
|
|
305
|
+
```text
|
|
306
|
+
createAsset(rawBytes) → POST optimize → addVariant()
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
Otherwise every host (Local Studio, Fuel, IAM CMS, customer N) duplicates the pipeline and kills portability.
|
|
310
|
+
|
|
311
|
+
#### 5. Persisted means persisted
|
|
312
|
+
|
|
313
|
+
Reactive event bus = live UX notification, **not** SSOT.
|
|
314
|
+
|
|
315
|
+
Acceptance: upload → appears → quit app → relaunch → asset + variants still present. Metadata store + byte store as configured by runtime (e.g. SQLite + local content storage).
|
|
316
|
+
|
|
317
|
+
#### 6. `agentsam-sdk-brand` typing
|
|
318
|
+
|
|
319
|
+
Ambient `agentsam-sdk-brand.d.ts` in the consumer is an **unblocker only**. Canonical types must eventually ship from the package (or shared contracts). Record the gap; do not treat per-consumer `.d.ts` as permanent ownership.
|
|
320
|
+
|
|
321
|
+
#### 7. TanStack `routeTree.gen.ts`
|
|
322
|
+
|
|
323
|
+
Do **not** hand-patch the generated file. Do **regenerate** via normal `npm run dev` / build before calling the route “done.” “It fixes itself someday” is not acceptance.
|
|
324
|
+
|
|
325
|
+
#### 8. FnF migration
|
|
326
|
+
|
|
327
|
+
Keep Fuel & Free Time migration **separate** until Local Studio acceptance for this slice passes. Then migrate FnF onto the same Content Studio package/runtime — do not recreate.
|
|
328
|
+
|
|
329
|
+
### Minimum acceptance test (this media feature)
|
|
330
|
+
|
|
331
|
+
1. Launch **AgentSam Local Studio.app**
|
|
332
|
+
2. Sites → choose site → Media
|
|
333
|
+
3. Drop a real PNG/JPEG
|
|
334
|
+
4. UI shows the real asset immediately
|
|
335
|
+
5. Original bytes persisted
|
|
336
|
+
6. Processing runs (local for desktop; web route only for web host)
|
|
337
|
+
7. Optimized variant generated
|
|
338
|
+
8. UI shows completion + variant info
|
|
339
|
+
9. Quit completely
|
|
340
|
+
10. Relaunch → same site Media → original + variant still present
|
|
341
|
+
11. Disconnect internet → local asset workflow still works (desktop)
|
|
342
|
+
12. Force optimization failure → real failure UI
|
|
343
|
+
13. No request to `agentsam.inneranimalmedia.com` required for the local operation
|
|
344
|
+
14. Clean checkout: generate routes, typecheck, build pass
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## Part D — Cursor / next-agent implementation order
|
|
349
|
+
|
|
350
|
+
Treat current Content Studio work as **runtime/component foundation**, not completed UX.
|
|
351
|
+
|
|
352
|
+
1. Wire real ContentStudio into **Sites → selected site → Media / Open media library**.
|
|
353
|
+
2. Visible processing / variant / error state in that surface.
|
|
354
|
+
3. Move upload/optimization orchestration behind reusable **ContentRuntime** (`importAsset` + events).
|
|
355
|
+
4. Keep `/api/content/optimize` as **WebRuntime** only.
|
|
356
|
+
5. Provide **DesktopRuntime** implementation (agentsamd / local) without hosted site.
|
|
357
|
+
6. Verify durable persistence across relaunch.
|
|
358
|
+
7. Regenerate TanStack route tree; run real build/typecheck.
|
|
359
|
+
8. Remaster `packages/agentsam-desktop-shell/scripts/desktop-boot.html` as a real machine home UI — and stop making “Open Studio UI” (remote) the primary product path; desktop entry + bundled client is the path.
|
|
360
|
+
9. Keep FnF migration after Local Studio acceptance.
|
|
361
|
+
10. Do not add more UI placeholders while these core paths remain disconnected.
|
|
362
|
+
|
|
363
|
+
### Explicit anti-pattern for this slice
|
|
364
|
+
|
|
365
|
+
Wiring desktop UI **directly** to `/api/content/optimize` (or the hosted origin) recreates the Tauri failure mode: beautiful local chrome whose important work secretly depends on the hosted web runtime.
|
|
366
|
+
|
|
367
|
+
**Right outcome:**
|
|
368
|
+
|
|
369
|
+
```text
|
|
370
|
+
same Content Studio UI
|
|
371
|
+
same Content runtime contract
|
|
372
|
+
|
|
373
|
+
desktop → local execution
|
|
374
|
+
web → server execution
|
|
375
|
+
FnF → configured host execution
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
## Part E — Evidence / open items at authoring time
|
|
381
|
+
|
|
382
|
+
| Item | State |
|
|
383
|
+
| --- | --- |
|
|
384
|
+
| MediaDropzone + content.optimize (web) | Landed on `main` (`0ac693c`…`49fdf16`) — foundation |
|
|
385
|
+
| Sites → Media mounts real ContentStudio | **Open** — instruct next Cursor pass |
|
|
386
|
+
| DesktopRuntime optimize (no Nitro) | **Open** |
|
|
387
|
+
| Desktop SPA / createRoot entry (no remote redirect) | **Open** — build-target + graduation plan |
|
|
388
|
+
| routeTree.gen.ts regenerated in CI/dev | **Open** until proven |
|
|
389
|
+
| agentsam-brand package `.d.ts` | **Gap** — ambient consumer unblocker only |
|
|
390
|
+
| Boot shell remaster | **Open** — source: `packages/agentsam-desktop-shell/scripts/desktop-boot.html` |
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
*End of addendum. If this file conflicts with scaffold notes or “open cloud Studio until SPA ships” copy in boot UI / sync scripts, this file wins.*
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Machine-first apps TUI
|
|
3
|
+
overview: "Fully plan Batches A–D of the Universal ingest stack in agentsam-sdk: Machine Intelligence docs + decision primitives, world-state/`inspect`, calculated maturity + verify, ingest feeding world-state, and a Clack TUI `agentsam apps` catalog to select/preview/scaffold/deploy packaged prebuilds of past work."
|
|
4
|
+
todos:
|
|
5
|
+
- id: batch-a-docs-primitives
|
|
6
|
+
content: "Batch A: MACHINE_INTELLIGENCE.md + predicate/choice/score + confidence policy + decision receipts"
|
|
7
|
+
status: pending
|
|
8
|
+
- id: batch-b-world-maturity-verify
|
|
9
|
+
content: "Batch B: world-state envelope for inspect; expand app discovery; calculated maturity; strengthen verify-*"
|
|
10
|
+
status: pending
|
|
11
|
+
- id: batch-d1-clack-apps
|
|
12
|
+
content: "Batch D1: agentsam apps Clack TUI catalog — select app → Preview/Info/Doctor/Scaffold/Deploy (maturity-gated)"
|
|
13
|
+
status: pending
|
|
14
|
+
- id: batch-c-ingest
|
|
15
|
+
content: "Batch C: universal ingest (paste/path/stdin) feeding world-state with sensitive redaction"
|
|
16
|
+
status: pending
|
|
17
|
+
- id: batch-d2-distribute-mini
|
|
18
|
+
content: "Batch D2–D3: agentsam app add / npm distribute curated apps; mini kept tiny in docs/help"
|
|
19
|
+
status: pending
|
|
20
|
+
isProject: false
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Machine-first AgentSam + Apps Clack Catalog
|
|
24
|
+
|
|
25
|
+
**Home:** [`/Users/samprimeaux/agentsam-sdk`](/Users/samprimeaux/agentsam-sdk) · supersedes pending todos in [UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md](./UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md)
|
|
26
|
+
|
|
27
|
+
**Locked product intent:** Apps become a Clack/TUI selectable catalog of packaged previews/prebuilds of past work. Selecting an app leads to Preview (primary), then Scaffold/Add, then Deploy when maturity allows. Machine Intelligence + world-state make that catalog honest (calculated maturity, not hand badges).
|
|
28
|
+
|
|
29
|
+
## Intent (unchanged except Apps UX)
|
|
30
|
+
|
|
31
|
+
Audit and strengthen in place. No repo redesign for package purity. Proof = real `apps/*` + harvested sites. Mini stays the tiny lane.
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
MINI — tiny local artifact (agentsam mini)
|
|
35
|
+
APP — Clack catalog → preview / scaffold / npm distribute
|
|
36
|
+
WORLD — arbitrary path → world-state → progressive normalize
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Maturity ladder (calculated, observable):
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
harvested → scaffolded → wired → verified → releasable → production
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Architecture
|
|
46
|
+
|
|
47
|
+
```mermaid
|
|
48
|
+
flowchart TB
|
|
49
|
+
appsDir[apps_star] --> discover[discover_manifests]
|
|
50
|
+
discover --> catalog[Clack_apps_menu]
|
|
51
|
+
catalog --> preview[Preview_local]
|
|
52
|
+
catalog --> scaffold[Scaffold_or_app_add]
|
|
53
|
+
catalog --> deploy[Deploy_if_releasable]
|
|
54
|
+
pathIn[Path_paste_stdin] --> ingest[detect_extract_catalog]
|
|
55
|
+
ingest --> world[WORLD_STATE]
|
|
56
|
+
discover --> world
|
|
57
|
+
scan[repository_snapshot_merkle_brand] --> world
|
|
58
|
+
world --> maturity[Calculated_maturity]
|
|
59
|
+
maturity --> catalog
|
|
60
|
+
world --> primitives[predicate_choice_score]
|
|
61
|
+
primitives --> policy[confidence_policy]
|
|
62
|
+
policy --> next[next_actions]
|
|
63
|
+
verify[verify_package_boundaries_app] --> maturity
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Current baselines to leverage (do not rebuild)
|
|
67
|
+
|
|
68
|
+
| Piece | Path | Use |
|
|
69
|
+
|-------|------|-----|
|
|
70
|
+
| CLI router (`app`/`apps` alias) | [`src/cli.js`](/Users/samprimeaux/agentsam-sdk/src/cli.js) | Route bare `apps` → TUI |
|
|
71
|
+
| App commands today | [`src/commands/app.js`](/Users/samprimeaux/agentsam-sdk/src/commands/app.js) | Extend discovery + actions; today only `agentsam.app.json` (4 product apps) |
|
|
72
|
+
| Clack already | `@clack/prompts` in help/models/providers/scaffold | Same patterns for apps menu |
|
|
73
|
+
| Inspect | [`src/commands/product.js`](/Users/samprimeaux/agentsam-sdk/src/commands/product.js) → [`repository-snapshot.js`](/Users/samprimeaux/agentsam-sdk/src/capabilities/repository-snapshot.js) | Expand into world-state envelope |
|
|
74
|
+
| Progression / next | [`src/progression/engine.js`](/Users/samprimeaux/agentsam-sdk/src/progression/engine.js) | Feed maturity next-actions |
|
|
75
|
+
| Brand Intelligence | [`docs/BRAND_INTELLIGENCE.md`](/Users/samprimeaux/agentsam-sdk/docs/BRAND_INTELLIGENCE.md) + `packages/agentsam-brand` | Consumer of world-state + primitives |
|
|
76
|
+
| Verify | `scripts/verify-package.mjs`, `verify-source-boundaries.mjs` | Strengthen; wire into maturity |
|
|
77
|
+
| Theme apps | `.agentsam/app.json` on 7 harvested sites | Include in catalog (today invisible to `listAppManifests`) |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Batch A — Machine Intelligence foundation
|
|
82
|
+
|
|
83
|
+
### A1. Docs
|
|
84
|
+
- Add [`docs/MACHINE_INTELLIGENCE.md`](/Users/samprimeaux/agentsam-sdk/docs/MACHINE_INTELLIGENCE.md): ladder, MINI/APP/WORLD, confidence ≠ risk, receipts, LLM as one handler.
|
|
85
|
+
- Cross-link Brand Intelligence + Repository Intelligence + this Apps catalog.
|
|
86
|
+
- Demote mini as architectural poster in help copy (Batch D completes that).
|
|
87
|
+
|
|
88
|
+
### A2. Decision primitives (AgentSam-owned)
|
|
89
|
+
- New module under `src/intelligence/` (or `packages/agentsam-intelligence` if boundary requires): `predicate`, `choice`, `score`, `distribution`.
|
|
90
|
+
- Confidence policy: abstention, hierarchical degrade, confidence ≠ risk.
|
|
91
|
+
- Decision receipts: `{input_hash, primitive, result, confidence, risk?, next}`.
|
|
92
|
+
- Protocol schemas under `protocol/` mirroring brand capability style.
|
|
93
|
+
- First consumer path: classify app maturity gate OR brand scan route — one real path with a receipt, not a demo.
|
|
94
|
+
|
|
95
|
+
**Acceptance A:** Doc lands; ≥1 classification path emits a decision receipt without a model.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Batch B — World-state + every app observable
|
|
100
|
+
|
|
101
|
+
### B1. World-state envelope
|
|
102
|
+
Converge into one JSON envelope (new capability `world.state` or extend `repository.snapshot` with a stable `world` view):
|
|
103
|
+
|
|
104
|
+
- files / hashes / MIME (snapshot + merkle)
|
|
105
|
+
- AST / routes / APIs (existing intelligence slices)
|
|
106
|
+
- brand packet (when present)
|
|
107
|
+
- app manifest + provenance
|
|
108
|
+
- verify receipts
|
|
109
|
+
- maturity + next_actions
|
|
110
|
+
|
|
111
|
+
`agentsam inspect [path]` returns this envelope for arbitrary paths **and** every `apps/*`.
|
|
112
|
+
|
|
113
|
+
### B2. Discovery + maturity engine
|
|
114
|
+
Extend [`listAppManifests`](/Users/samprimeaux/agentsam-sdk/src/commands/app.js):
|
|
115
|
+
|
|
116
|
+
1. Prefer `agentsam.app.json` (product apps).
|
|
117
|
+
2. Fall back to `.agentsam/app.json` (theme-refinery / harvested).
|
|
118
|
+
3. Still list dirs under `apps/` that lack manifests as `harvested` with low maturity (observable, not hidden).
|
|
119
|
+
|
|
120
|
+
Calculated maturity gates (facts, not labels):
|
|
121
|
+
|
|
122
|
+
| Stage | Gate examples |
|
|
123
|
+
|-------|----------------|
|
|
124
|
+
| harvested | dir exists; optional gallery/canonical paths |
|
|
125
|
+
| scaffolded | package.json / wrangler / preview root present |
|
|
126
|
+
| wired | bin + commands.preview/doctor resolve |
|
|
127
|
+
| verified | doctor + app contract / boundary checks pass |
|
|
128
|
+
| releasable | verify receipts green; no donor junk in publish set; secrets marked |
|
|
129
|
+
| production | deploy receipt / remote binding evidence |
|
|
130
|
+
|
|
131
|
+
### B3. Strengthen verify-\*
|
|
132
|
+
- `verify-package` / `verify-source-boundaries`: keep; add app-level contract checks invoked by `agentsam app doctor` and maturity.
|
|
133
|
+
- Imperfect apps stay listed; failures become receipts on the catalog row.
|
|
134
|
+
|
|
135
|
+
**Acceptance B:** `agentsam inspect apps/cad-creator` and `agentsam inspect apps/church-site` both emit world-state; `agentsam app list --json` shows maturity for every `apps/*`.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Batch C — Universal ingest → world-state
|
|
140
|
+
|
|
141
|
+
- Paste / path / stdin → detect → extract → sensitive candidates (confidence ≠ risk; redact before preview/model) → catalog → world-state.
|
|
142
|
+
- Safe localhost gallery / Brand Packet = projections of world-state.
|
|
143
|
+
- Fixtures = harvested sites + real app slices (not mini, not toy repos).
|
|
144
|
+
- Wire into existing ZIP ingest only as one path (`scripts/ingest-app-zips.py`); CLI front door is `agentsam inspect` / shell paste, not a separate product brand.
|
|
145
|
+
|
|
146
|
+
**Acceptance C:** Ingest a harvested site fixture → world-state row appears in apps discovery or inspect output with sensitive fields redacted.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Batch D — Apps Clack catalog + distribute + mini clarity
|
|
151
|
+
|
|
152
|
+
### D1. Clack TUI is the primary `agentsam apps` UX (locked)
|
|
153
|
+
|
|
154
|
+
When TTY and no subcommand (or `--interactive`):
|
|
155
|
+
|
|
156
|
+
```text
|
|
157
|
+
agentsam apps
|
|
158
|
+
→ Clack select: catalog of apps
|
|
159
|
+
label: name · id · maturity · kind(product|theme|incoming)
|
|
160
|
+
→ Clack select: action
|
|
161
|
+
Preview | Info | Doctor | Scaffold / Add | Deploy
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Action rules (locked):**
|
|
165
|
+
|
|
166
|
+
| Action | When enabled | Behavior |
|
|
167
|
+
|--------|--------------|----------|
|
|
168
|
+
| **Preview** | maturity ≥ scaffolded and preview command/bin exists | Existing `runAppBin(..., preview)` / theme gallery preview — local packaged prebuild |
|
|
169
|
+
| **Info** | always | Manifest + world-state summary |
|
|
170
|
+
| **Doctor** | wired+ | Existing doctor bin / calculated checks |
|
|
171
|
+
| **Scaffold / Add** | scaffolded+ | `agentsam app scaffold <id> <dir>` or new `agentsam app add <id>` into cwd/target; ships runtime/scaffold only |
|
|
172
|
+
| **Deploy** | maturity ≥ releasable | Delegate to existing app wrangler / `agentsam deploy` path; refuse with next_actions if below gate |
|
|
173
|
+
|
|
174
|
+
Non-TTY / scripted: keep `agentsam app list|info|doctor|preview|scaffold` and add:
|
|
175
|
+
|
|
176
|
+
- `agentsam app add <id> [dir]`
|
|
177
|
+
- `agentsam app list --json` (maturity fields)
|
|
178
|
+
- `agentsam apps` with args still routes to same command tree
|
|
179
|
+
|
|
180
|
+
Implementation touchpoints:
|
|
181
|
+
|
|
182
|
+
- Expand [`src/commands/app.js`](/Users/samprimeaux/agentsam-sdk/src/commands/app.js) with `runAppsInteractive()` using `@clack/prompts` `select` / `confirm` (same style as [`src/ui/cli/help.js`](/Users/samprimeaux/agentsam-sdk/src/ui/cli/help.js)).
|
|
183
|
+
- [`src/cli.js`](/Users/samprimeaux/agentsam-sdk/src/cli.js): bare `apps` with empty argv → interactive; `app list` stays non-interactive default for scripts.
|
|
184
|
+
|
|
185
|
+
### D2. npm distribute
|
|
186
|
+
- Curate publishable set for product apps (cad / cms / studio / ecommerce) toward `@inneranimalmedia/<app>` or documented `agentsam app add` from registry.
|
|
187
|
+
- Exclude donor/reference junk per existing RELEASES / local-studio donor notes.
|
|
188
|
+
- Catalog marks `distributable: true` only when releasable gates pass.
|
|
189
|
+
|
|
190
|
+
### D3. Mini lane
|
|
191
|
+
- Keep `agentsam mini` working; docs/help state it is the tiny utility lane, not the proof of architecture.
|
|
192
|
+
- Apps catalog is the poster for packaged past work.
|
|
193
|
+
|
|
194
|
+
**Acceptance D:** On a TTY, `agentsam apps` opens Clack menu listing product + harvested apps with maturity; selecting Preview boots a local prebuild; Deploy is offered only for releasable apps; `agentsam mini` still works; docs state MINI/APP/WORLD.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Explicit non-goals
|
|
199
|
+
|
|
200
|
+
- Repo redesign for package purity
|
|
201
|
+
- New toy apps as proof
|
|
202
|
+
- Hiding imperfect apps from the catalog
|
|
203
|
+
- TypeSafe/Jev vocabulary
|
|
204
|
+
- Auto-fetch remotes / execute imported HTML
|
|
205
|
+
- Jumping every path to LLM
|
|
206
|
+
- Replacing `agentsam shell` interactive UI work (already planned separately)
|
|
207
|
+
|
|
208
|
+
## Execution order
|
|
209
|
+
|
|
210
|
+
1. **Batch A** (docs + primitives) — unblocks vocabulary
|
|
211
|
+
2. **Batch B** (world-state + maturity + verify + discovery) — unblocks honest catalog
|
|
212
|
+
3. **Batch D1** (Clack `agentsam apps` menu) — ship usable select/preview as soon as maturity stubs exist; refine gates as B hardens
|
|
213
|
+
4. **Batch C** (ingest → world-state) — feeds catalog/inspect
|
|
214
|
+
5. **Batch D2–D3** (npm distribute + mini framing)
|
|
215
|
+
|
|
216
|
+
Suggested first PR slice after plan approval: A1+A2 + B2 discovery expansion + D1 Clack menu with stub maturity (wired from manifest presence), then deepen world-state/verify.
|
|
217
|
+
|
|
218
|
+
## Validation (each batch)
|
|
219
|
+
|
|
220
|
+
- `node --check` on touched JS
|
|
221
|
+
- Existing `test/cli/*.test.mjs` + new tests for maturity calculation and interactive path (mock Clack or non-TTY `--json`)
|
|
222
|
+
- `npm run verify:package` / `verify:boundaries` before any distribute claim
|
|
223
|
+
- Manual TTY: `agentsam apps` → select `local-studio` → Preview
|
|
224
|
+
|
|
225
|
+
## Optional hygiene (non-blocking)
|
|
226
|
+
|
|
227
|
+
Review leftover `/Users/samprimeaux/agent-worktrees/*` clones (stale SDK @ 892 behind, etc.) when convenient.
|