@inneranimalmedia/agentsam-sdk 2.6.4 → 2.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTSAM.md +40 -0
- package/README.md +15 -9
- package/apps/README.md +5 -0
- package/apps/cad-creator/README.md +4 -4
- package/apps/cad-creator/shared/cad/package.json +1 -1
- package/apps/client-cms-editor/AGENTS.md +17 -0
- package/apps/client-cms-editor/IMPORT_PROVENANCE.json +8 -0
- package/apps/client-cms-editor/README.md +100 -0
- package/apps/client-cms-editor/agentsam.app.json +74 -0
- package/apps/client-cms-editor/backend/README.md +5 -0
- package/apps/client-cms-editor/backend/package.json +39 -0
- package/apps/client-cms-editor/backend/src/api/client.ts +233 -0
- package/apps/client-cms-editor/backend/src/index.ts +6 -0
- package/apps/client-cms-editor/backend/src/model.ts +11 -0
- package/apps/client-cms-editor/backend/src/preview/bridge.ts +79 -0
- package/apps/client-cms-editor/backend/src/preview/urls.ts +55 -0
- package/apps/client-cms-editor/backend/src/routing/cms-route.js +293 -0
- package/apps/client-cms-editor/backend/src/routing/index.js +10 -0
- package/apps/client-cms-editor/backend/src/storefront.ts +52 -0
- package/apps/client-cms-editor/backend/tsconfig.json +20 -0
- package/apps/client-cms-editor/backend/worker/index.js +34 -0
- package/apps/client-cms-editor/backend/wrangler.jsonc +11 -0
- package/apps/client-cms-editor/bin/agentsam-cms.js +262 -0
- package/apps/client-cms-editor/bin/agentsam-cms.mjs +3 -0
- package/apps/client-cms-editor/frontend/index.html +12 -0
- package/apps/client-cms-editor/frontend/package.json +42 -0
- package/apps/client-cms-editor/frontend/src/AgentSamDrawer.tsx +156 -0
- package/apps/client-cms-editor/frontend/src/CmsAgentSurface.tsx +36 -0
- package/apps/client-cms-editor/frontend/src/adapters/heuristic.ts +29 -0
- package/apps/client-cms-editor/frontend/src/adapters/http.ts +628 -0
- package/apps/client-cms-editor/frontend/src/adapters/memory.ts +510 -0
- package/apps/client-cms-editor/frontend/src/editor/CmsEditor.tsx +213 -0
- package/apps/client-cms-editor/frontend/src/editor/CmsEditorProvider.tsx +20 -0
- package/apps/client-cms-editor/frontend/src/editor/canvas/PreviewCanvas.tsx +53 -0
- package/apps/client-cms-editor/frontend/src/editor/legacy/CmsEditorPrototype.tsx +1374 -0
- package/apps/client-cms-editor/frontend/src/editor/useCmsEditorController.ts +218 -0
- package/apps/client-cms-editor/frontend/src/env.d.ts +14 -0
- package/apps/client-cms-editor/frontend/src/index.ts +22 -0
- package/apps/client-cms-editor/frontend/src/lib/agent-host.ts +24 -0
- package/apps/client-cms-editor/frontend/src/lib/content-safety.ts +63 -0
- package/apps/client-cms-editor/frontend/src/main.tsx +91 -0
- package/apps/client-cms-editor/frontend/src/mount.tsx +113 -0
- package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +214 -0
- package/apps/client-cms-editor/frontend/src/styles/cmsShell.css +1739 -0
- package/apps/client-cms-editor/frontend/src/styles/studio.css +158 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsDashboard.tsx +313 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsGuidedChatHero.tsx +121 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsHubPage.tsx +132 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsSiteSwitcher.tsx +176 -0
- package/apps/client-cms-editor/frontend/src/surfaces/index.ts +5 -0
- package/apps/client-cms-editor/frontend/src/surfaces/types.ts +48 -0
- package/apps/client-cms-editor/frontend/tsconfig.json +36 -0
- package/apps/client-cms-editor/frontend/vite.config.ts +25 -0
- package/apps/client-cms-editor/package-lock.json +4671 -0
- package/apps/client-cms-editor/package.json +135 -0
- package/apps/client-cms-editor/reference/DONOR_README.md +52 -0
- package/apps/client-cms-editor/reference/DONOR_package-lock.json +1253 -0
- package/apps/client-cms-editor/reference/DONOR_tsconfig.json +15 -0
- package/apps/client-cms-editor/reference/harvest/HARVEST_RECEIPT.json +201 -0
- package/apps/client-cms-editor/reference/harvest/PROVENANCE_HISTORY.txt +10 -0
- package/apps/client-cms-editor/reference/harvest/README.md +8 -0
- package/apps/client-cms-editor/reference/harvest/plans/ARCHIVE-INTAKE.md +135 -0
- package/apps/client-cms-editor/reference/harvest/plans/CHATGPT-IDENTITY-HARVEST.md +83 -0
- package/apps/client-cms-editor/reference/harvest/plans/CMS-EDITOR-HARVEST.md +166 -0
- package/apps/client-cms-editor/reference/harvest/plans/HARVEST-INDEX.md +196 -0
- package/apps/client-cms-editor/reference/harvest/plans/INNERANIMALS-CONTENT-001.md +137 -0
- package/apps/client-cms-editor/reference/harvest/plans/NO-IMPLICIT-SIDE-EFFECTS.md +87 -0
- package/apps/client-cms-editor/reference/harvest/plans/STOREFRONT-SURFACE-MAP.md +140 -0
- package/apps/client-cms-editor/reference/harvest/plans/THEME-INNERANIMALS-HARVEST.md +137 -0
- package/apps/client-cms-editor/reference/harvest/plans/TOOLING-LAB.md +63 -0
- package/apps/client-cms-editor/reference/harvest/plans/harvest-manifest.json +97 -0
- package/apps/client-cms-editor/reference/harvest/plans/local-cms-harvest-schema.sql +328 -0
- package/apps/client-cms-editor/shared/cms/package.json +31 -0
- package/apps/client-cms-editor/shared/cms/src/adapter.ts +204 -0
- package/apps/client-cms-editor/shared/cms/src/agent-context.ts +37 -0
- package/apps/client-cms-editor/shared/cms/src/cloudflare-bindings.ts +51 -0
- package/apps/client-cms-editor/shared/cms/src/editor-types.ts +90 -0
- package/apps/client-cms-editor/shared/cms/src/host.ts +82 -0
- package/apps/client-cms-editor/shared/cms/src/index.ts +9 -0
- package/apps/client-cms-editor/shared/cms/src/map.ts +115 -0
- package/apps/client-cms-editor/shared/cms/src/publication.ts +24 -0
- package/apps/client-cms-editor/shared/cms/src/routes.ts +11 -0
- package/apps/client-cms-editor/shared/cms/src/starter-pack.ts +158 -0
- package/apps/client-cms-editor/shared/cms/tsconfig.json +12 -0
- package/bin/agentsam-rapid-rust +36 -0
- package/contracts/source-types.v1.json +353 -0
- package/docs/AUTH_IDENTITY_CONTRACT.md +2 -0
- package/docs/CMS_CONTEXTUAL_COMPOSER.md +1 -1
- package/docs/MACHINE_INTELLIGENCE.md +120 -0
- package/docs/PRODUCT_LIFECYCLE.md +566 -0
- package/docs/THEME_REFINERY.md +2 -2
- package/docs/WINDOWS_RUNTIME_INSTALL.md +30 -0
- package/docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md +188 -0
- package/docs/architecture/AGENTSAM_RUNTIME_PROTOCOL.md +171 -0
- package/docs/architecture/LOCAL_STUDIO_CLOUDFLARE_OAUTH.md +12 -4
- package/docs/architecture/R2_SLUG_NAMESPACE.md +20 -0
- package/docs/architecture/WORK_PRODUCT_EXTRACTION.md +97 -0
- package/docs/brand/AGENT_SAM_ICON_GRAMMAR.md +70 -0
- package/docs/content-studio/HOST_MOUNT_CHECKLIST.md +71 -0
- package/docs/content-studio/REVISION_GATE_2026-09-27.md +501 -0
- package/docs/contracts/capability-install-planner.md +67 -0
- package/docs/contracts/environment-vocabulary.md +195 -0
- package/docs/contracts/google-cloud-oauth-setup.md +199 -0
- package/docs/local-studio/WORKMODE_DONOR_NOTES.md +1 -1
- package/docs/plans/LOCAL-STUDIO-GRADUATION-2026-09-26.md +290 -0
- package/docs/plans/LOCAL-STUDIO-REAL-APP-CONTRACT-ADDENDUM-2026-09-27.md +394 -0
- package/docs/plans/LOCAL_STUDIO_DESKTOP_RELEASE_2026-09-29.md +150 -0
- package/docs/plans/MACHINE-FIRST-APPS-TUI-2026-09-24.md +227 -0
- package/docs/plans/TOMORROW-EXTENSIVE-TODO-2026-09-26.md +221 -0
- package/docs/plans/TOMORROW-MACHINE-FIRST-BRIEFING.md +145 -0
- package/docs/plans/UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md +215 -0
- package/docs/plugins.md +2 -2
- package/docs/product/AGENTSAM_PRODUCT_EXPERIENCE_STANDARD.md +280 -0
- package/docs/product/LOCAL_STUDIO_DESKTOP_EXPERIENCE.md +139 -0
- package/docs/product/README.md +8 -0
- package/docs/rapid-rust-wasm.md +35 -0
- package/migrations/d1/0016_cloudflare_oauth_user_oauth_tokens_ssot.sql +14 -0
- package/migrations/d1/0017_identity_native_oauth.sql +21 -0
- package/native/agentsam-machine/Cargo.lock +426 -0
- package/native/agentsam-machine/Cargo.toml +9 -0
- package/native/agentsam-machine/cli/Cargo.toml +14 -0
- package/native/agentsam-machine/cli/src/main.rs +77 -0
- package/native/agentsam-machine/core/Cargo.toml +15 -0
- package/native/agentsam-machine/core/src/assets.rs +790 -0
- package/native/agentsam-machine/core/src/bound.rs +298 -0
- package/native/agentsam-machine/core/src/enrich.rs +706 -0
- package/native/agentsam-machine/core/src/frontend.rs +442 -0
- package/native/agentsam-machine/core/src/lib.rs +1086 -0
- package/native/agentsam-machine/core/src/liquid.rs +528 -0
- package/native/agentsam-machine/core/src/source_types.rs +78 -0
- package/package.json +110 -21
- package/packages/agentsam-brand/README.md +107 -12
- package/packages/agentsam-brand/bin/agentsam-brand.mjs +9 -0
- package/packages/agentsam-brand/package.json +41 -9
- package/packages/agentsam-brand/src/adapters/cloudflare-images.js +453 -0
- package/packages/agentsam-brand/src/adapters/cloudflare-r2.js +74 -0
- package/packages/agentsam-brand/src/adapters/d1-registry.js +26 -0
- package/packages/agentsam-brand/src/adapters/filesystem.js +59 -0
- package/packages/agentsam-brand/src/adapters/memory.js +31 -0
- package/packages/agentsam-brand/src/cli/controller.js +503 -0
- package/packages/agentsam-brand/src/cli/wizard.js +526 -0
- package/packages/agentsam-brand/src/core/capabilities.js +201 -0
- package/packages/agentsam-brand/src/core/derivatives.js +211 -0
- package/packages/agentsam-brand/src/core/errors.js +12 -0
- package/packages/agentsam-brand/src/core/ingest.js +195 -0
- package/packages/agentsam-brand/src/core/inspect.js +109 -0
- package/packages/agentsam-brand/src/core/keys.js +83 -0
- package/packages/agentsam-brand/src/core/naming.js +142 -0
- package/packages/agentsam-brand/src/core/optimize.js +316 -0
- package/packages/agentsam-brand/src/core/pack.js +305 -0
- package/packages/agentsam-brand/src/core/plan.js +276 -0
- package/packages/agentsam-brand/src/core/preview.js +159 -0
- package/packages/agentsam-brand/src/core/processors/cloudflare.js +68 -0
- package/packages/agentsam-brand/src/core/processors/contract.js +203 -0
- package/packages/agentsam-brand/src/core/processors/index.js +148 -0
- package/packages/agentsam-brand/src/core/processors/native.js +82 -0
- package/packages/agentsam-brand/src/core/processors/sharp.js +113 -0
- package/packages/agentsam-brand/src/core/processors/squoosh-binary.js +195 -0
- package/packages/agentsam-brand/src/core/promote.js +288 -0
- package/packages/agentsam-brand/src/core/receipts.js +155 -0
- package/packages/agentsam-brand/src/core/v2/compile.js +280 -0
- package/packages/agentsam-brand/src/core/v2/derivatives-semantic.js +207 -0
- package/packages/agentsam-brand/src/core/v2/ingest-graph.js +387 -0
- package/packages/agentsam-brand/src/core/v2/roles.js +180 -0
- package/packages/agentsam-brand/src/core/v2/schema.js +209 -0
- package/packages/agentsam-brand/src/core/v2/templates.js +114 -0
- package/packages/agentsam-brand/src/index.js +193 -36
- package/packages/agentsam-brand/src/presets/app-icon.json +16 -0
- package/packages/agentsam-brand/src/presets/favicon.json +17 -0
- package/packages/agentsam-brand/src/presets/hero.json +12 -0
- package/packages/agentsam-brand/src/presets/index.js +40 -0
- package/packages/agentsam-brand/src/presets/logo.json +12 -0
- package/packages/agentsam-brand/src/presets/model.json +8 -0
- package/packages/agentsam-brand/src/presets/og-image.json +10 -0
- package/packages/agentsam-brand/src/presets/product-shot.json +11 -0
- package/packages/agentsam-brand/src/presets/social-image.json +10 -0
- package/packages/agentsam-brand/src/presets/web-image.json +10 -0
- package/packages/agentsam-contracts/package.json +13 -3
- package/packages/agentsam-contracts/src/artifacts.ts +41 -0
- package/packages/agentsam-contracts/src/tools.ts +22 -0
- package/packages/agentsam-errors/package.json +13 -3
- package/packages/agentsam-knowledge/package.json +18 -4
- package/packages/agentsam-knowledge/src/autorag/index.js +11 -4
- package/packages/agentsam-knowledge/src/backends/index.js +33 -1
- package/packages/agentsam-knowledge/src/providers/index.js +6 -4
- package/packages/agentsam-knowledge/src/providers/ollama-endpoint.js +31 -0
- package/packages/agentsam-knowledge/test/autorag.test.mjs +81 -1
- package/packages/agentsam-nav/package.json +26 -8
- package/packages/agentsam-queue-control/README.md +1 -1
- package/packages/agentsam-queue-control/package.json +7 -2
- package/packages/agentsam-rapid-rust/Cargo.lock +344 -0
- package/packages/agentsam-rapid-rust/Cargo.toml +18 -0
- package/packages/agentsam-rapid-rust/README.md +5 -0
- package/packages/agentsam-rapid-rust/src/main.rs +718 -0
- package/packages/agentsam-rapid-rust/templates/api/Cargo.toml.tmpl +18 -0
- package/packages/agentsam-rapid-rust/templates/api/src/lib.rs.tmpl +17 -0
- package/packages/agentsam-rapid-rust/templates/common/README.md.tmpl +22 -0
- package/packages/agentsam-rapid-rust/templates/common/package.json.tmpl +12 -0
- package/packages/agentsam-rapid-rust/templates/common/wrangler.toml.tmpl +6 -0
- package/packages/agentsam-rapid-rust/templates/crypto-auth/Cargo.toml.tmpl +21 -0
- package/packages/agentsam-rapid-rust/templates/crypto-auth/src/lib.rs.tmpl +32 -0
- package/packages/agentsam-rapid-rust/templates/data-processor/Cargo.toml.tmpl +18 -0
- package/packages/agentsam-rapid-rust/templates/data-processor/src/lib.rs.tmpl +41 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/Cargo.toml.tmpl +9 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/core/Cargo.toml.tmpl +7 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/core/src/lib.rs.tmpl +23 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/worker/Cargo.toml.tmpl +12 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/worker/src/lib.rs.tmpl +16 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/wrangler.toml.tmpl +6 -0
- package/packages/agentsam-repository/package.json +13 -3
- package/packages/agentsam-repository/src/index.js +1 -0
- package/packages/agentsam-repository/src/merkle/semantic.js +3 -10
- package/packages/agentsam-repository/src/source-types.js +93 -0
- package/packages/agentsam-vault/README.md +96 -0
- package/packages/agentsam-vault/package.json +42 -0
- package/packages/agentsam-vault/src/contracts/credential.d.ts +78 -0
- package/packages/agentsam-vault/src/contracts/credential.js +132 -0
- package/packages/agentsam-vault/src/crypto/aes-gcm.d.ts +30 -0
- package/packages/agentsam-vault/src/crypto/aes-gcm.js +107 -0
- package/packages/agentsam-vault/src/crypto/oauth-envelope.js +150 -0
- package/packages/agentsam-vault/src/index.d.ts +9 -0
- package/packages/agentsam-vault/src/index.js +27 -0
- package/packages/agentsam-vault/src/providers/registry.js +90 -0
- package/packages/agentsam-vault/src/runtime/resolver.js +77 -0
- package/packages/agentsam-workbench/README.md +24 -0
- package/packages/agentsam-workbench/package.json +49 -0
- package/packages/agentsam-workbench/src/agent/AgentPanel.tsx +41 -0
- package/packages/agentsam-workbench/src/agent/ArtifactCard.tsx +9 -0
- package/packages/agentsam-workbench/src/agent/Composer.tsx +102 -0
- package/packages/agentsam-workbench/src/agent/ConnectedAgentPanel.tsx +194 -0
- package/packages/agentsam-workbench/src/agent/ContextualComposer.tsx +788 -0
- package/packages/agentsam-workbench/src/agent/GoalStatusStrip.tsx +38 -0
- package/packages/agentsam-workbench/src/agent/MiniAgentSam.tsx +86 -0
- package/packages/agentsam-workbench/src/agent/ModelSelect.tsx +19 -0
- package/packages/agentsam-workbench/src/agent/Thread.tsx +56 -0
- package/packages/agentsam-workbench/src/agent/ToolPermissionRequest.tsx +94 -0
- package/packages/agentsam-workbench/src/agent/ToolReceipt.tsx +11 -0
- package/packages/agentsam-workbench/src/agent/contextual-composer.css +611 -0
- package/packages/agentsam-workbench/src/agent/index.ts +12 -0
- package/packages/agentsam-workbench/src/agent/mini-agentsam.css +12 -0
- package/packages/agentsam-workbench/src/agent/tool-permission.css +134 -0
- package/packages/agentsam-workbench/src/browser/BrowserFrame.tsx +37 -0
- package/packages/agentsam-workbench/src/browser/index.ts +1 -0
- package/packages/agentsam-workbench/src/index.ts +6 -0
- package/packages/agentsam-workbench/src/project-control.css +160 -0
- package/packages/agentsam-workbench/src/projects/ProjectsSurface.tsx +131 -0
- package/packages/agentsam-workbench/src/projects/index.ts +1 -0
- package/packages/agentsam-workbench/src/shell/Breadcrumb.tsx +35 -0
- package/packages/agentsam-workbench/src/shell/ResizableStage.tsx +99 -0
- package/packages/agentsam-workbench/src/shell/SidePanel.tsx +5 -0
- package/packages/agentsam-workbench/src/shell/index.ts +4 -0
- package/packages/agentsam-workbench/src/shell/surfaceRegistry.ts +29 -0
- package/packages/agentsam-workbench/src/terminal/TerminalSurface.tsx +5 -0
- package/packages/agentsam-workbench/src/terminal/index.ts +1 -0
- package/packages/agentsam-workbench/src/timeline/GanttBoard.tsx +258 -0
- package/packages/agentsam-workbench/src/timeline/index.ts +1 -0
- package/packages/agentsam-workbench/tsconfig.json +13 -0
- package/packages/connectors/cloudflare/OAUTH_STORAGE_AUDIT.md +53 -0
- package/packages/connectors/cloudflare/package.json +16 -4
- package/packages/connectors/cloudflare/src/api-client.js +280 -0
- package/packages/connectors/cloudflare/src/capabilities.js +585 -0
- package/packages/connectors/cloudflare/src/credential.js +318 -0
- package/packages/connectors/cloudflare/src/families/brand-protection.js +123 -0
- package/packages/connectors/cloudflare/src/families/keyless.js +114 -0
- package/packages/connectors/cloudflare/src/families/pages.js +151 -0
- package/packages/connectors/cloudflare/src/families/scanner.js +123 -0
- package/packages/connectors/cloudflare/src/families/snippets.js +207 -0
- package/packages/connectors/cloudflare/src/families/tag-gateway.js +46 -0
- package/packages/connectors/cloudflare/src/families/tags.js +124 -0
- package/packages/connectors/cloudflare/src/families/token-validation.js +95 -0
- package/packages/connectors/cloudflare/src/families/vectorize.js +127 -0
- package/packages/connectors/cloudflare/src/families/workflows.js +156 -0
- package/packages/connectors/cloudflare/src/index.js +103 -265
- package/packages/connectors/cloudflare/src/oauth-persist.js +336 -0
- package/packages/connectors/cloudflare/src/owner.js +42 -12
- package/packages/connectors/cloudflare/src/permission-options.js +1064 -0
- package/packages/connectors/cloudflare/src/routes.js +309 -144
- package/packages/connectors/cloudflare/src/scope-catalog.js +345 -0
- package/packages/connectors/cloudflare/src/vault.js +2 -2
- package/packages/connectors/cloudflare/tests/capabilities.test.mjs +276 -0
- package/packages/connectors/cloudflare/tests/connector.test.mjs +26 -30
- package/packages/connectors/cloudflare/tests/oauth-persist.test.mjs +125 -0
- package/packages/heuristic-theme/README.md +2 -2
- package/packages/heuristic-theme/package.json +8 -3
- package/packages/heuristic-theme/src/registry.js +2 -2
- package/packages/heuristic-theme/src/theme.js +1 -1
- package/packages/heuristic-theme/test/theme.test.mjs +1 -1
- package/packages/identity/.agentsam/features/oauth-login-portal/agentsam.feature.json +1 -1
- package/packages/identity/.agentsam/features/oauth-login-portal/providers.json +44 -4
- package/packages/identity/.agentsam/features/oauth-login-portal/resources.json +10 -4
- package/packages/identity/.agentsam/features/oauth-login-portal/routes.json +20 -0
- package/packages/identity/README.md +2 -2
- package/packages/identity/backend/README.md +1 -1
- package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +18 -14
- package/packages/identity/migrations/apply-portable.js +109 -0
- package/packages/identity/migrations/sqlite/004_identity_oauth_consent_catalog.sql +48 -0
- package/packages/identity/migrations/sqlite/005_identity_company_native.sql +52 -0
- package/packages/identity/package.json +27 -5
- package/packages/identity/schema/agentsam.identity/manifest.json +101 -0
- package/packages/identity/scripts/local-identity-bridge.mjs +190 -0
- package/packages/identity/scripts/preview-auth-portal.mjs +8 -8
- package/packages/identity/src/adapters/cloudflare-d1/index.js +8 -372
- package/packages/identity/src/adapters/iam-compat/index.js +540 -0
- package/packages/identity/src/adapters/portable-d1/index.js +18 -0
- package/packages/identity/src/adapters/portable-store.js +479 -0
- package/packages/identity/src/adapters/sqlite/index.js +13 -309
- package/packages/identity/src/contracts/auth-config.js +27 -8
- package/packages/identity/src/contracts/external-identity.js +1 -1
- package/packages/identity/src/contracts/identity-store.js +56 -5
- package/packages/identity/src/contracts/provider.js +2 -0
- package/packages/identity/src/contracts/sign-in-options.js +104 -0
- package/packages/identity/src/core/constants.js +1 -1
- package/packages/identity/src/core/session-policy.js +31 -0
- package/packages/identity/src/frontend/auth-portal/README.md +2 -1
- package/packages/identity/src/frontend/auth-portal/pages/login.html +7 -6
- package/packages/identity/src/frontend/auth-portal/pages/reset.html +6 -5
- package/packages/identity/src/frontend/auth-portal/pages/signup.html +6 -5
- package/packages/identity/src/frontend/auth-portal/shared/company-branding.js +1 -1
- package/packages/identity/src/frontend/auth-portal/shared/desktop-identity-bridge.js +176 -0
- package/packages/identity/src/index.js +44 -1
- package/packages/identity/src/migrations/0001_identity_core.sql +19 -2
- package/packages/identity/src/migrations/0003_accounts_ssot.sql +20 -0
- package/packages/identity/src/migrations/README.md +23 -20
- package/packages/identity/src/oauth/README.md +10 -5
- package/packages/identity/src/oauth/consent-view.js +388 -0
- package/packages/identity/src/oauth/credentials.js +39 -20
- package/packages/identity/src/oauth/google-desktop-exchange.js +341 -0
- package/packages/identity/src/oauth/iam-platform.js +21 -9
- package/packages/identity/src/oauth/native-handoff.js +136 -0
- package/packages/identity/src/providers/chatgpt/headers.js +65 -0
- package/packages/identity/src/providers/chatgpt/index.js +86 -0
- package/packages/identity/src/providers/chatgpt/mapper.js +43 -0
- package/packages/identity/src/providers/chatgpt/paths.js +45 -0
- package/packages/identity/src/providers/cloudflare/oauth.js +3 -4
- package/packages/identity/src/providers/cloudflare/profile.js +49 -14
- package/packages/identity/src/providers/github/oauth.js +1 -2
- package/packages/identity/src/providers/github/profile.js +16 -2
- package/packages/identity/src/providers/iam/index.js +27 -5
- package/packages/identity/src/providers/index.js +11 -3
- package/packages/identity/src/server/identity-service.js +33 -3
- package/packages/identity/src/server/worker-router.js +171 -88
- package/packages/identity/tests/auth-config.test.mjs +3 -2
- package/packages/identity/tests/chatgpt-provider.test.mjs +75 -0
- package/packages/identity/tests/google-desktop-identity-login.test.mjs +210 -0
- package/packages/identity/tests/identity-init-scaffold.test.mjs +17 -3
- package/packages/identity/tests/identity-service.test.mjs +16 -0
- package/packages/identity/tests/lane1-identity-store-parity.test.mjs +527 -0
- package/packages/identity/tests/lane1-packed-consumer.test.mjs +175 -0
- package/packages/identity/tests/native-oauth-handoff.test.mjs +292 -0
- package/packages/identity/tests/native-session-worker.test.mjs +64 -0
- package/packages/identity/tests/oauth-consent-view.test.mjs +106 -0
- package/packages/identity/tests/oauth-credentials.test.mjs +21 -8
- package/packages/identity/tests/oauth-presets-accounts-ssot.test.mjs +58 -0
- package/packages/identity/tests/preview-auth-portal.test.mjs +5 -3
- package/packages/identity/tests/session-routes-policy.test.mjs +13 -1
- package/packages/identity/tests/worker-runtime-boundary.test.mjs +11 -0
- package/packages/providers/completeful/package.json +7 -2
- package/packages/runtime-protocol/src/index.js +154 -0
- package/packages/theme-church-site/package.json +17 -6
- package/packages/theme-church-site/src/harvest.json +4 -2
- package/packages/theme-church-site/src/index.js +7 -3
- package/packages/theme-church-site/test/theme.test.mjs +4 -2
- package/packages/theme-companions-site/package.json +17 -6
- package/packages/theme-companions-site/src/harvest.json +4 -2
- package/packages/theme-companions-site/src/index.js +7 -3
- package/packages/theme-companions-site/test/theme.test.mjs +4 -2
- package/packages/theme-floors-site/package.json +17 -6
- package/packages/theme-floors-site/src/harvest.json +4 -2
- package/packages/theme-floors-site/src/index.js +7 -3
- package/packages/theme-floors-site/test/theme.test.mjs +4 -2
- package/packages/theme-fuelnfree-site/package.json +17 -6
- package/packages/theme-fuelnfree-site/src/harvest.json +4 -2
- package/packages/theme-fuelnfree-site/src/index.js +7 -3
- package/packages/theme-fuelnfree-site/test/theme.test.mjs +4 -2
- package/packages/theme-handyman-site/package.json +17 -6
- package/packages/theme-handyman-site/src/harvest.json +4 -2
- package/packages/theme-handyman-site/src/index.js +7 -3
- package/packages/theme-handyman-site/test/theme.test.mjs +4 -2
- package/packages/theme-insurance-site/package.json +17 -6
- package/packages/theme-insurance-site/src/harvest.json +4 -2
- package/packages/theme-insurance-site/src/index.js +7 -3
- package/packages/theme-insurance-site/test/theme.test.mjs +4 -2
- package/packages/theme-scenes/README.md +164 -0
- package/packages/theme-scenes/package.json +54 -0
- package/packages/theme-scenes/src/blocks/index.js +30 -0
- package/packages/theme-scenes/src/contracts/index.js +286 -0
- package/packages/theme-scenes/src/demos/index.js +65 -0
- package/packages/theme-scenes/src/index.js +75 -0
- package/packages/theme-scenes/src/presets/index.js +263 -0
- package/packages/theme-scenes/src/registry.js +187 -0
- package/packages/theme-scenes/src/runtime/compile.js +119 -0
- package/packages/theme-scenes/src/scenes/index.js +146 -0
- package/packages/theme-scenes/src/shell/index.js +47 -0
- package/packages/theme-scenes/src/themes/index.js +129 -0
- package/packages/theme-scenes/src/visuals/index.js +41 -0
- package/packages/theme-scenes/test/theme-scenes.test.mjs +179 -0
- package/packages/theme-shinshu-site/package.json +17 -6
- package/packages/theme-shinshu-site/src/harvest.json +4 -2
- package/packages/theme-shinshu-site/src/index.js +7 -3
- package/packages/theme-shinshu-site/test/theme.test.mjs +4 -2
- package/packages/work-graph/package.json +14 -4
- package/packages/work-graph/src/index.js +34 -1
- package/packages/work-graph/src/renderers/gantt-model.js +24 -0
- package/packages/work-graph/test/work-graph.test.mjs +27 -7
- package/protocol/FILEMETA_V1.md +2 -2
- package/protocol/README.md +15 -7
- package/protocol/apps/agentsam.app.v1.schema.json +89 -7
- package/protocol/apps/agentsam.host-install.v1.schema.json +36 -0
- package/protocol/assets/README.md +9 -0
- package/protocol/assets/asset-record.v1.schema.json +64 -0
- package/protocol/capabilities/manifest.json +1 -1
- package/protocol/database/agentsam.schema-pack.v1.schema.json +72 -0
- package/protocol/presets/catalog.json +2 -2
- package/protocol/runtime/agentsam.runtime.v1.schema.json +75 -0
- package/protocol/scoring/README.md +10 -0
- package/protocol/scoring/scorecard.v1.schema.json +65 -0
- package/protocol/theme-refinery/lineage-registry.json +105 -0
- package/protocol/theme-refinery/product-metadata.schema.json +21 -1
- package/protocol/ui/icon-registry.mjs +1 -0
- package/registry/cms-rust-machine-20260928/installable-products.json +31 -0
- package/registry/cms-rust-machine-20260928/manifest.json +22 -0
- package/registry/cms-rust-machine-20260928/migration.sql +237 -0
- package/registry/cms-rust-machine-20260928/receipt.json +21 -0
- package/registry/cms-rust-machine-20260928/receipt.sql +27 -0
- package/scripts/build_rapid_rust_cli.py +83 -0
- package/skills/grok-auth/SKILL.md +110 -0
- package/skills/grok-auth/agentsam.skill.json +25 -0
- package/skills/grok-auth/references/grok-identity.md +64 -0
- package/skills/grok-auth/references/per-user-data.md +49 -0
- package/skills/grok-auth/references/prewired-and-env.md +54 -0
- package/skills/grok-auth/references/session-ui.md +133 -0
- package/skills/grok-auth/references/sign-in-methods.md +55 -0
- package/skills/grok-auth/references/wiring.md +71 -0
- package/skills/grok-building-games/SKILL.md +213 -0
- package/skills/grok-building-games/agentsam.skill.json +25 -0
- package/skills/grok-building-games/references/3d-libs.md +64 -0
- package/skills/grok-building-games/references/ai-pathfinding.md +122 -0
- package/skills/grok-building-games/references/audio.md +129 -0
- package/skills/grok-building-games/references/babylon.md +202 -0
- package/skills/grok-building-games/references/collision-physics.md +122 -0
- package/skills/grok-building-games/references/ecs-architecture.md +111 -0
- package/skills/grok-building-games/references/game-feel-juice.md +110 -0
- package/skills/grok-building-games/references/genres/board-card-chess.md +89 -0
- package/skills/grok-building-games/references/genres/endless-runner.md +83 -0
- package/skills/grok-building-games/references/genres/fps.md +105 -0
- package/skills/grok-building-games/references/genres/platformer-2d.md +97 -0
- package/skills/grok-building-games/references/genres/puzzle-match3-tetris.md +131 -0
- package/skills/grok-building-games/references/genres/racing-kart.md +106 -0
- package/skills/grok-building-games/references/genres/topdown-twin-stick.md +97 -0
- package/skills/grok-building-games/references/genres/tower-defense.md +84 -0
- package/skills/grok-building-games/references/genres/voxel-minecraft.md +89 -0
- package/skills/grok-building-games/references/input.md +139 -0
- package/skills/grok-building-games/references/phaser.md +277 -0
- package/skills/grok-building-games/references/procedural-generation.md +141 -0
- package/skills/grok-building-games/references/save-persistence.md +108 -0
- package/skills/grok-building-games/references/threejs-foundational.md +148 -0
- package/skills/grok-controls/SKILL.md +274 -0
- package/skills/grok-controls/agentsam.skill.json +25 -0
- package/skills/grok-design-ui/SKILL.md +122 -0
- package/skills/grok-design-ui/agentsam.skill.json +25 -0
- package/skills/grok-design-ui/references/animations.md +379 -0
- package/skills/grok-design-ui/references/performance.md +88 -0
- package/skills/grok-design-ui/references/refined-ui.md +384 -0
- package/skills/grok-design-ui/references/surfaces.md +247 -0
- package/skills/grok-design-ui/references/typography.md +123 -0
- package/skills/grok-game-animation-frames/SKILL.md +84 -0
- package/skills/grok-game-animation-frames/agentsam.skill.json +25 -0
- package/skills/grok-game-asset-core/SKILL.md +69 -0
- package/skills/grok-game-asset-core/agentsam.skill.json +25 -0
- package/skills/grok-game-character-consistency/SKILL.md +69 -0
- package/skills/grok-game-character-consistency/agentsam.skill.json +25 -0
- package/skills/grok-game-tilesets/SKILL.md +65 -0
- package/skills/grok-game-tilesets/agentsam.skill.json +25 -0
- package/skills/grok-game-ui-icons/SKILL.md +56 -0
- package/skills/grok-game-ui-icons/agentsam.skill.json +25 -0
- package/skills/grok-generate2dmap/LICENSE +21 -0
- package/skills/grok-generate2dmap/SKILL.md +120 -0
- package/skills/grok-generate2dmap/SOURCE.md +6 -0
- package/skills/grok-generate2dmap/agentsam.skill.json +25 -0
- package/skills/grok-generate2dmap/references/deliverables.md +101 -0
- package/skills/grok-generate2dmap/references/layered-map-contract.md +209 -0
- package/skills/grok-generate2dmap/references/map-strategies.md +341 -0
- package/skills/grok-generate2dmap/references/object-production-gate.md +24 -0
- package/skills/grok-generate2dmap/references/pipeline.md +149 -0
- package/skills/grok-generate2dmap/references/prop-pack-contract.md +174 -0
- package/skills/grok-generate2dmap/references/side-scroll-stages.md +29 -0
- package/skills/grok-generate2dmap/scripts/compose_layered_preview.py +157 -0
- package/skills/grok-generate2dmap/scripts/extract_prop_pack.py +369 -0
- package/skills/grok-generate2dsprite/LICENSE +21 -0
- package/skills/grok-generate2dsprite/SKILL.md +313 -0
- package/skills/grok-generate2dsprite/SOURCE.md +6 -0
- package/skills/grok-generate2dsprite/agentsam.skill.json +25 -0
- package/skills/grok-generate2dsprite/references/modes.md +124 -0
- package/skills/grok-generate2dsprite/references/prompt-rules.md +315 -0
- package/skills/grok-generate2dsprite/scripts/generate2dsprite.py +1031 -0
- package/skills/grok-generate2dsprite/scripts/make_layout_guide.py +109 -0
- package/skills/grok-imagine/SKILL.md +201 -0
- package/skills/grok-imagine/agentsam.skill.json +25 -0
- package/skills/grok-multiplayer-p2p/SKILL.md +111 -0
- package/skills/grok-multiplayer-p2p/agentsam.skill.json +25 -0
- package/skills/grok-multiplayer-p2p/references/react-binding.md +144 -0
- package/skills/grok-multiplayer-p2p/references/signaling-relay.md +269 -0
- package/skills/grok-neon/SKILL.md +157 -0
- package/skills/grok-neon/agentsam.skill.json +25 -0
- package/skills/grok-og/SKILL.md +102 -0
- package/skills/grok-og/agentsam.skill.json +25 -0
- package/skills/grok-og/references/brand-pass.md +53 -0
- package/skills/grok-og/references/custom-card.md +107 -0
- package/skills/grok-og/references/favicon-and-icons.md +48 -0
- package/skills/grok-og/references/og-type-contract.md +18 -0
- package/skills/grok-og/references/placeholder-card.md +21 -0
- package/skills/grok-og/references/x-banner.md +41 -0
- package/skills/grok-threejs/SKILL.md +67 -0
- package/skills/grok-threejs/agentsam.skill.json +25 -0
- package/skills/grok-threejs/references/llms-full.txt +2780 -0
- package/skills/grok-video2dsprite/LICENSE +21 -0
- package/skills/grok-video2dsprite/SKILL.md +236 -0
- package/skills/grok-video2dsprite/SOURCE.md +6 -0
- package/skills/grok-video2dsprite/agentsam.skill.json +25 -0
- package/skills/grok-video2dsprite/references/pipeline.md +90 -0
- package/skills/grok-video2dsprite/references/prompt-rules.md +63 -0
- package/skills/grok-video2dsprite/scripts/video2dsprite.py +490 -0
- package/skills/grok-xai-api/SKILL.md +152 -0
- package/skills/grok-xai-api/agentsam.skill.json +25 -0
- package/src/attachments/index.js +6 -0
- package/src/attachments/intake.js +235 -0
- package/src/capabilities/repository-snapshot.js +19 -2
- package/src/cli/command-catalog.js +53 -3
- package/src/cli/dispatch.js +1 -0
- package/src/cli.js +192 -26
- package/src/cloudflare/runtime-status.js +2 -1
- package/src/commands/account-auth.js +94 -8
- package/src/commands/app.js +307 -3
- package/src/commands/autorag.js +67 -13
- package/src/commands/billing.js +127 -0
- package/src/commands/brand.js +74 -60
- package/src/commands/cheat-sheet.js +179 -0
- package/src/commands/cloudflare-login.js +222 -0
- package/src/commands/cloudflare.js +453 -23
- package/src/commands/codebaseindex.js +51 -3
- package/src/commands/compute.js +4 -0
- package/src/commands/connections.js +11 -5
- package/src/commands/credentials.js +116 -0
- package/src/commands/gcloud-auth.js +427 -0
- package/src/commands/google-cloud.js +375 -0
- package/src/commands/identity-init.js +2 -2
- package/src/commands/knowledge.js +59 -2
- package/src/commands/machine-binary.js +103 -0
- package/src/commands/machine.js +137 -0
- package/src/commands/mcp.js +226 -33
- package/src/commands/ollama.js +3 -2
- package/src/commands/plugins.js +7 -2
- package/src/commands/product.js +36 -0
- package/src/commands/runtime-status.js +28 -9
- package/src/commands/runtime.js +313 -0
- package/src/commands/rust.js +24 -0
- package/src/commands/security.js +67 -4
- package/src/commands/setup.js +296 -0
- package/src/commands/shell.js +16 -3
- package/src/commands/start-local.js +2 -2
- package/src/commands/status.js +8 -1
- package/src/commands/terminal.js +171 -0
- package/src/commands/update.js +140 -0
- package/src/commands/whoami.js +329 -65
- package/src/features/resolve.js +2 -0
- package/src/index.js +4 -0
- package/src/indexing/ingest/inventory.js +254 -19
- package/src/indexing/ingest/materials.js +3 -9
- package/src/indexing/ingest/style-evidence.js +181 -0
- package/src/knowledge/engine.js +21 -2
- package/src/knowledge/runtime-discovery.js +127 -0
- package/src/knowledge/source.js +3 -3
- package/src/lib/account-session.js +11 -4
- package/src/lib/app-authority.js +172 -0
- package/src/lib/auth.js +94 -21
- package/src/lib/core-client.js +5 -6
- package/src/lib/credentials-audit.js +451 -0
- package/src/lib/deploy/health.js +24 -6
- package/src/lib/detect-context.js +7 -1
- package/src/lib/google-cloud-connection.js +270 -0
- package/src/lib/google-cloud-inventory.js +385 -0
- package/src/lib/google-desktop-oauth.js +372 -0
- package/src/lib/google-studio-brokered-oauth.js +158 -0
- package/src/lib/identity-scaffold.js +76 -18
- package/src/lib/init-options.js +192 -0
- package/src/lib/local-scaffold.js +48 -16
- package/src/lib/provider-command-remediation.js +308 -0
- package/src/lib/provider-credentials.js +8 -0
- package/src/lib/scaffold/index.js +8 -2
- package/src/lib/scaffold/mcp-server.js +43 -0
- package/src/lib/scaffold/templates/mcp-server/index.js +397 -0
- package/src/lib/scaffold/templates/mcp-server/presets.js +39 -0
- package/src/lib/scaffold/wizards/cms.js +93 -0
- package/src/lib/scaffold/wizards/mcp-server.js +61 -0
- package/src/lib/setup/contract.js +26 -0
- package/src/lib/setup/discover.js +116 -0
- package/src/lib/setup/execute.js +205 -0
- package/src/lib/setup/planner.js +134 -0
- package/src/lib/setup/recipes.js +235 -0
- package/src/lib/setup/runtime-persist.js +197 -0
- package/src/lib/setup/runtime.js +394 -0
- package/src/lib/slash-commands.js +2 -0
- package/src/lib/terminal/machine-identity.js +95 -0
- package/src/lib/terminal-local.js +164 -0
- package/src/lib/terminal-scopes.js +52 -0
- package/src/lib/whoami-capabilities.js +184 -0
- package/src/local-pty/server.js +34 -5
- package/src/mcp/authority.js +58 -108
- package/src/mcp/client-adapters.js +68 -144
- package/src/mcp/client.js +142 -122
- package/src/mcp/cloudflare-bundles.js +225 -0
- package/src/mcp/index.js +12 -0
- package/src/models/discovery.js +40 -22
- package/src/models/inventory-core.d.ts +105 -0
- package/src/models/inventory-core.js +54 -6
- package/src/plugins/cloudflare.js +1 -1
- package/src/providers/ollama-chat.js +2 -1
- package/src/sam/types.js +27 -2
- package/src/security/inventory.js +12 -2
- package/src/security/local-vault.js +2 -0
- package/src/security/logs.js +3 -0
- package/src/security/scan.js +1 -1
- package/src/ui/cli/help.js +41 -0
- package/test/account-session.test.mjs +3 -3
- package/test/app-authority-context.test.mjs +32 -0
- package/test/apps-scaffold-contract.test.mjs +3 -2
- package/test/cli/api-key-env-whoami.test.mjs +2 -2
- package/test/cli/catalog-authority.test.mjs +64 -0
- package/test/cli/codebaseindex-plan-ux.test.mjs +1 -1
- package/test/cli/machine-command.test.mjs +34 -0
- package/test/cli/mcp-client.test.mjs +21 -10
- package/test/cli/runtime-persist.test.mjs +56 -0
- package/test/cli/rust-command.test.mjs +21 -0
- package/test/credentials-audit.test.mjs +113 -0
- package/test/deploy-health-scan.test.mjs +29 -1
- package/test/fixtures/project-authority/customer-app/.agentsam/app.json +5 -0
- package/test/fixtures/project-authority/customer-app/apps/my-product/index.ts +1 -0
- package/test/fixtures/project-authority/customer-app/wrangler.toml +17 -0
- package/test/gcloud-auth.test.mjs +111 -0
- package/test/google-cloud-connection.test.mjs +83 -0
- package/test/google-cloud-inventory.test.mjs +64 -0
- package/test/init-options.test.mjs +35 -0
- package/test/integration/app-command.test.mjs +30 -0
- package/test/integration/autorag-project-authority.integration.test.mjs +51 -0
- package/test/integration/autorag-runtime-discovery.test.mjs +107 -0
- package/test/integration/cad-project.test.mjs +4 -1
- package/test/integration/cms-app-scaffold.test.mjs +77 -0
- package/test/integration/cms-site-tenancy-contract.test.mjs +31 -19
- package/test/integration/codebaseindex-ingest.test.mjs +89 -0
- package/test/integration/database-hosted-honesty.test.mjs +49 -0
- package/test/integration/desktop-keychain-boundary.test.mjs +45 -0
- package/test/integration/features-resolve.test.mjs +30 -11
- package/test/integration/hosted-work-host-authority.test.mjs +47 -0
- package/test/integration/inspect-path-cli.test.mjs +46 -0
- package/test/integration/inventory-eligibility.test.mjs +59 -0
- package/test/integration/inventory-evidence.test.mjs +125 -0
- package/test/integration/local-provider-bridge.test.mjs +65 -0
- package/test/integration/local-studio-settings-production.test.mjs +40 -0
- package/test/integration/lockfile-sync.test.mjs +26 -0
- package/test/integration/provider-env-cli.test.mjs +13 -3
- package/test/integration/runtime-status.integration.test.mjs +17 -1
- package/test/integration/theme-package-registry.test.mjs +31 -0
- package/test/knowledge.test.mjs +35 -1
- package/test/loopback-oauth.test.mjs +53 -0
- package/test/ollama.test.mjs +22 -0
- package/test/repository-snapshot-view.test.mjs +2 -2
- package/test/security.test.mjs +37 -0
- package/test/setup-planner.test.mjs +74 -0
- package/test/setup-runtime.test.mjs +51 -0
- package/test/terminal/local-pty.mock.test.mjs +3 -1
- package/test/terminal-machine-identity.test.mjs +88 -0
- package/test/whoami-resume.test.mjs +27 -6
- package/packages/agentsam-brand/test/brand-scan.test.mjs +0 -106
- package/packages/agentsam-nav/dist/Nav.d.ts +0 -43
- package/packages/agentsam-nav/dist/NavCollapsible.d.ts +0 -10
- package/packages/agentsam-nav/dist/NavContent.d.ts +0 -2
- package/packages/agentsam-nav/dist/NavFooter.d.ts +0 -2
- package/packages/agentsam-nav/dist/NavGroup.d.ts +0 -3
- package/packages/agentsam-nav/dist/NavHeader.d.ts +0 -2
- package/packages/agentsam-nav/dist/NavMenu.d.ts +0 -22
- package/packages/agentsam-nav/dist/NavProvider.d.ts +0 -35
- package/packages/agentsam-nav/dist/NavTrigger.d.ts +0 -2
- package/packages/agentsam-nav/dist/Surfaces.d.ts +0 -41
- package/packages/agentsam-nav/dist/browser.d.ts +0 -11
- package/packages/agentsam-nav/dist/browser.global.js +0 -132
- package/packages/agentsam-nav/dist/browser.js +0 -613
- package/packages/agentsam-nav/dist/contracts.d.ts +0 -76
- package/packages/agentsam-nav/dist/index.d.ts +0 -11
- package/packages/agentsam-nav/dist/index.js +0 -614
- package/packages/agentsam-nav/dist/legacy.css +0 -83
- package/packages/agentsam-nav/dist/shell.css +0 -113
- package/packages/agentsam-nav/dist/theme.css +0 -113
- package/packages/agentsam-nav/dist/utils.d.ts +0 -1
- package/packages/agentsam-repository/src/goap.js.bak-20260922011251 +0 -670
- package/packages/work-graph/prototype/README.md +0 -32
- package/packages/work-graph/prototype/data/demo-workgraph.js +0 -47
- package/packages/work-graph/prototype/renderers/timeline-model.js +0 -21
- package/packages/work-graph/prototype/renderers/workgraph-runtime.js +0 -38
- package/packages/work-graph/prototype-gnantt.html +0 -655
|
@@ -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,150 @@
|
|
|
1
|
+
# Local Studio desktop release graduation — 2.6.6
|
|
2
|
+
|
|
3
|
+
**Owner lane:** installed/downloadable Local Studio only
|
|
4
|
+
**Branch:** `feat/local-studio-desktop-release-20260929`
|
|
5
|
+
**Canonical UI:** `apps/local-studio`
|
|
6
|
+
**Native shell:** `packages/agentsam-desktop-shell`
|
|
7
|
+
**Do not absorb:** Agent 1's hosted Worker/CMS finishing work
|
|
8
|
+
|
|
9
|
+
## Current verified baseline
|
|
10
|
+
|
|
11
|
+
- The installed `/Applications/AgentSam Local Studio.app` is stale `2.6.5`.
|
|
12
|
+
- `apps/local-studio` is already `2.6.6` and builds a real bundled desktop SPA.
|
|
13
|
+
- `npm --prefix apps/local-studio run verify:desktop` passes.
|
|
14
|
+
- `cargo check --manifest-path packages/agentsam-desktop-shell/src-tauri/Cargo.toml` passes.
|
|
15
|
+
- The packaged `2.6.6` Tauri app launches and exposes the real Local Studio UI: navigation, Chat/Work, composer, model picker, and Send.
|
|
16
|
+
- The current `2.6.6` DMG exists, but the app is ad-hoc signed; Gatekeeper rejects it.
|
|
17
|
+
- This machine currently has no valid Apple code-signing identity and no Tauri updater private-key environment configured.
|
|
18
|
+
- `agentsam-desktop-updates` is deployed, but updater checks fail because production D1 lacks `desktop_shell_releases`.
|
|
19
|
+
- `updates.agentsam.dev` does not currently resolve.
|
|
20
|
+
- `apps/local-studio/agentsam.app.json` still advertises an npm install for a private package. That install contract is stale.
|
|
21
|
+
|
|
22
|
+
## Product law
|
|
23
|
+
|
|
24
|
+
Local Studio desktop is not a website wrapper and not an npm package masquerading as an app.
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
AgentSam Local Studio.app
|
|
28
|
+
-> bundled apps/local-studio SPA
|
|
29
|
+
-> Tauri native commands
|
|
30
|
+
-> agentsamd / SQLite / filesystem / keychain / identity adapters
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The npm release and desktop release may share a version, but they are separate artifacts:
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
@inneranimalmedia/agentsam-sdk -> npm registry
|
|
37
|
+
AgentSam Local Studio -> signed/notarized native artifact + updater/download service
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Release gate 1 — source and native parity
|
|
41
|
+
|
|
42
|
+
Required green checks:
|
|
43
|
+
|
|
44
|
+
1. `npm --prefix apps/local-studio run verify:desktop`
|
|
45
|
+
2. Local Studio typecheck/tests relevant to desktop and auth
|
|
46
|
+
3. `npm --prefix packages/identity test`
|
|
47
|
+
4. `cargo check` and `cargo test` for `agentsam-desktop-shell`
|
|
48
|
+
5. Build the shell from the current Local Studio SPA, never from a recovery/bootstrap page
|
|
49
|
+
6. Launch the packaged `.app` and confirm the Local Studio accessibility tree contains the real workspace
|
|
50
|
+
7. Exercise native startup without blocking the work surface
|
|
51
|
+
8. Exercise SQLite, local content/files, PTY/agentsamd, keychain/session restoration, and deep-link callback paths
|
|
52
|
+
|
|
53
|
+
No release may proceed if the UI only works in Chrome while the packaged WebView is blank.
|
|
54
|
+
|
|
55
|
+
## Release gate 2 — one version authority
|
|
56
|
+
|
|
57
|
+
Before release, these must agree:
|
|
58
|
+
|
|
59
|
+
- root SDK package version
|
|
60
|
+
- `apps/local-studio/package.json`
|
|
61
|
+
- `packages/agentsam-desktop-shell/manifests/local-studio.json`
|
|
62
|
+
- generated Tauri config / bundle Info.plist
|
|
63
|
+
- DMG filename
|
|
64
|
+
- updater registry row
|
|
65
|
+
|
|
66
|
+
For this graduation target, the intended version is `2.6.6`.
|
|
67
|
+
|
|
68
|
+
## Release gate 3 — updater/download backend
|
|
69
|
+
|
|
70
|
+
1. Apply `migrations/d1/0017_desktop_shell_releases.sql` to `inneranimalmedia-business`.
|
|
71
|
+
2. Re-test `agentsam-desktop-updates` updater lookup; missing table must be gone.
|
|
72
|
+
3. Keep one backend: D1 release metadata + R2 artifact bytes.
|
|
73
|
+
4. Decide the canonical public updater hostname and make it resolve. Do not leave Tauri configured to a dead hostname.
|
|
74
|
+
5. Publish immutable release artifacts under:
|
|
75
|
+
`native/release/local-studio/<target>/<arch>/<version>/<filename>`.
|
|
76
|
+
6. Registry rows must point at the exact downloadable artifact and include a valid Tauri updater signature.
|
|
77
|
+
|
|
78
|
+
## Release gate 4 — signing and notarization
|
|
79
|
+
|
|
80
|
+
A public macOS build is not complete while `codesign` reports `Signature=adhoc` or `spctl` rejects it.
|
|
81
|
+
|
|
82
|
+
Required for release channel:
|
|
83
|
+
|
|
84
|
+
- Developer ID Application signing identity
|
|
85
|
+
- hardened-runtime-compatible signing through Tauri
|
|
86
|
+
- Apple notarization
|
|
87
|
+
- stapled notarization ticket where applicable
|
|
88
|
+
- `codesign --verify --deep --strict` passes
|
|
89
|
+
- `spctl -a -vv` accepts the final app copied from the DMG
|
|
90
|
+
- Tauri updater private key available at build time and `.sig` generated
|
|
91
|
+
|
|
92
|
+
Unsigned/ad-hoc artifacts may only be used in a clearly named test lane.
|
|
93
|
+
|
|
94
|
+
## Release gate 5 — installer and CLI contract
|
|
95
|
+
|
|
96
|
+
`agentsam app install local-studio` must stop advertising `npm install @inneranimalmedia/agentsam-local-studio`.
|
|
97
|
+
|
|
98
|
+
Target behavior:
|
|
99
|
+
|
|
100
|
+
1. resolve OS + architecture;
|
|
101
|
+
2. resolve the current release artifact from the desktop release service;
|
|
102
|
+
3. present/download the native installer for that platform;
|
|
103
|
+
4. keep source/npm installation separate from native application installation;
|
|
104
|
+
5. fail visibly when no signed release exists.
|
|
105
|
+
|
|
106
|
+
The hosted `/install/studio` route must not claim to install Local Studio while it only installs the SDK CLI.
|
|
107
|
+
|
|
108
|
+
## Release gate 6 — clean-machine acceptance
|
|
109
|
+
|
|
110
|
+
For macOS 2.6.6:
|
|
111
|
+
|
|
112
|
+
1. download the release DMG through the public release URL;
|
|
113
|
+
2. mount the DMG;
|
|
114
|
+
3. copy `AgentSam Local Studio.app` to `/Applications`;
|
|
115
|
+
4. launch the copied app, not the build-tree app;
|
|
116
|
+
5. confirm real Local Studio shell renders;
|
|
117
|
+
6. confirm signed-out local usage remains available;
|
|
118
|
+
7. test AgentSam account login/session restore through the shared IAM authority;
|
|
119
|
+
8. test local filesystem/content, SQLite/database UI, terminal/PTY, and agentsamd;
|
|
120
|
+
9. restart the app and verify state/session restoration;
|
|
121
|
+
10. confirm updater check works from an older known build.
|
|
122
|
+
|
|
123
|
+
## Release gate 7 — npm SDK release
|
|
124
|
+
|
|
125
|
+
Only after desktop acceptance is green:
|
|
126
|
+
|
|
127
|
+
1. reconcile root SDK version to `2.6.6`;
|
|
128
|
+
2. run the full npm release verification gates;
|
|
129
|
+
3. `npm pack` and inspect the consumer artifact;
|
|
130
|
+
4. publish `@inneranimalmedia/agentsam-sdk@2.6.6`;
|
|
131
|
+
5. verify npm `latest` points to the intended version;
|
|
132
|
+
6. verify CLI `agentsam app install local-studio` resolves the native app release rather than a private npm package.
|
|
133
|
+
|
|
134
|
+
## Hosted/web Agent 1 handoff boundary
|
|
135
|
+
|
|
136
|
+
Agent 1 owns the hosted `agentsam.inneranimalmedia.com` completion lane: marketing/download surface, hosted `/agentsam`, CMS, and web routing. Desktop work may consume the final public download/updater hostname but must not revert to a hosted WebView as its application runtime.
|
|
137
|
+
|
|
138
|
+
## Hard stop conditions
|
|
139
|
+
|
|
140
|
+
Do not call the desktop release complete if any of these are true:
|
|
141
|
+
|
|
142
|
+
- installed app opens blank;
|
|
143
|
+
- packaged app is only a website redirect;
|
|
144
|
+
- version sources disagree;
|
|
145
|
+
- updater endpoint returns 5xx;
|
|
146
|
+
- download URL is dead;
|
|
147
|
+
- updater signature is absent;
|
|
148
|
+
- Gatekeeper rejects the release artifact;
|
|
149
|
+
- CLI advertises a private/unpublished npm package as the desktop installer;
|
|
150
|
+
- native local features require a hosted login page just to render the app.
|