@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,237 @@
|
|
|
1
|
+
-- AgentSam CMS / Rust / machine product registry graduation.
|
|
2
|
+
-- Idempotent: stable product slugs + unique relationship edges.
|
|
3
|
+
-- Database: inneranimalmedia-business
|
|
4
|
+
|
|
5
|
+
INSERT INTO agentsam_products (
|
|
6
|
+
slug, name, kind, status, description,
|
|
7
|
+
repository_id, canonical_path, package_name, version, tags, metadata, updated_at
|
|
8
|
+
) VALUES (
|
|
9
|
+
'cms',
|
|
10
|
+
'InnerAnimalMedia CMS',
|
|
11
|
+
'product',
|
|
12
|
+
'wired',
|
|
13
|
+
'Independent CMS product identity; portable editor/runtime surfaces inherit AgentSam capabilities.',
|
|
14
|
+
'github:samprimeaux/inneranimalmedia',
|
|
15
|
+
'src/core/agentsam/cms',
|
|
16
|
+
NULL,
|
|
17
|
+
NULL,
|
|
18
|
+
'["cms","product","installable"]',
|
|
19
|
+
'{"origin":"registry.cms-rust-machine-20260928","installable":true,"app_id":"client-cms-editor","install":{"command":"agentsam app scaffold client-cms-editor","paths":["/install/cms"]},"run_targets":["local","cloudflare","tauri"],"persistence":["sqlite","d1","localStorage_cache"],"cli_commands":[],"capabilities":["cms.editor","cms.pages","cms.sections","cms.components","cms.media"]}',
|
|
20
|
+
unixepoch()
|
|
21
|
+
)
|
|
22
|
+
ON CONFLICT(slug) DO UPDATE SET
|
|
23
|
+
name=excluded.name,
|
|
24
|
+
kind=excluded.kind,
|
|
25
|
+
status=excluded.status,
|
|
26
|
+
description=excluded.description,
|
|
27
|
+
repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
|
|
28
|
+
canonical_path=excluded.canonical_path,
|
|
29
|
+
package_name=excluded.package_name,
|
|
30
|
+
version=excluded.version,
|
|
31
|
+
tags=excluded.tags,
|
|
32
|
+
metadata=excluded.metadata,
|
|
33
|
+
updated_at=excluded.updated_at;
|
|
34
|
+
|
|
35
|
+
INSERT INTO agentsam_products (
|
|
36
|
+
slug, name, kind, status, description,
|
|
37
|
+
repository_id, canonical_path, package_name, version, tags, metadata, updated_at
|
|
38
|
+
) VALUES (
|
|
39
|
+
'client-cms-editor',
|
|
40
|
+
'AgentSam CMS Editor',
|
|
41
|
+
'app',
|
|
42
|
+
'scaffolded',
|
|
43
|
+
'Canonical reusable CMS editor app; donor-quality remaster is in progress behind adapter boundaries.',
|
|
44
|
+
'github:samprimeaux/agentsam-sdk',
|
|
45
|
+
'apps/client-cms-editor',
|
|
46
|
+
'@inneranimalmedia/client-cms-editor',
|
|
47
|
+
'0.1.0',
|
|
48
|
+
'["cms","app","editor","installable"]',
|
|
49
|
+
'{"origin":"registry.cms-rust-machine-20260928","installable":true,"app_id":"client-cms-editor","product_id":"cms","legacy_slug":"iam-client-cms-editor","install":{"command":"agentsam app scaffold client-cms-editor","paths":["/install/cms","/install/client-cms-editor"]},"run_targets":["local","cloudflare","tauri"],"persistence":["sqlite","d1","localStorage_cache"],"cli_commands":[],"capabilities":["cms.editor","cms.pages","cms.sections","cms.components","cms.media"]}',
|
|
50
|
+
unixepoch()
|
|
51
|
+
)
|
|
52
|
+
ON CONFLICT(slug) DO UPDATE SET
|
|
53
|
+
name=excluded.name,
|
|
54
|
+
kind=excluded.kind,
|
|
55
|
+
status=excluded.status,
|
|
56
|
+
description=excluded.description,
|
|
57
|
+
repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
|
|
58
|
+
canonical_path=excluded.canonical_path,
|
|
59
|
+
package_name=excluded.package_name,
|
|
60
|
+
version=excluded.version,
|
|
61
|
+
tags=excluded.tags,
|
|
62
|
+
metadata=excluded.metadata,
|
|
63
|
+
updated_at=excluded.updated_at;
|
|
64
|
+
|
|
65
|
+
INSERT INTO agentsam_products (
|
|
66
|
+
slug, name, kind, status, description,
|
|
67
|
+
repository_id, canonical_path, package_name, version, tags, metadata, updated_at
|
|
68
|
+
) VALUES (
|
|
69
|
+
'theme-inneranimals-site',
|
|
70
|
+
'Inner Animals Site Theme',
|
|
71
|
+
'theme',
|
|
72
|
+
'prototype',
|
|
73
|
+
'Harvested Inner Animals storefront/theme candidate awaiting canonical reusable theme graduation.',
|
|
74
|
+
NULL,
|
|
75
|
+
NULL,
|
|
76
|
+
NULL,
|
|
77
|
+
NULL,
|
|
78
|
+
'["cms","theme","harvest","candidate"]',
|
|
79
|
+
'{"origin":"registry.cms-rust-machine-20260928","installable":false,"candidate":true,"source":"harvest","capabilities":["cms.theme"]}',
|
|
80
|
+
unixepoch()
|
|
81
|
+
)
|
|
82
|
+
ON CONFLICT(slug) DO UPDATE SET
|
|
83
|
+
name=excluded.name,
|
|
84
|
+
kind=excluded.kind,
|
|
85
|
+
status=excluded.status,
|
|
86
|
+
description=excluded.description,
|
|
87
|
+
repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
|
|
88
|
+
canonical_path=excluded.canonical_path,
|
|
89
|
+
package_name=excluded.package_name,
|
|
90
|
+
version=excluded.version,
|
|
91
|
+
tags=excluded.tags,
|
|
92
|
+
metadata=excluded.metadata,
|
|
93
|
+
updated_at=excluded.updated_at;
|
|
94
|
+
|
|
95
|
+
INSERT INTO agentsam_products (
|
|
96
|
+
slug, name, kind, status, description,
|
|
97
|
+
repository_id, canonical_path, package_name, version, tags, metadata, updated_at
|
|
98
|
+
) VALUES (
|
|
99
|
+
'asrust',
|
|
100
|
+
'AgentSam Rust/Wasm Edge Lab',
|
|
101
|
+
'service',
|
|
102
|
+
'wired',
|
|
103
|
+
'Live Rust/Wasm Worker capability lab at asrust.inneranimalmedia.com.',
|
|
104
|
+
NULL,
|
|
105
|
+
NULL,
|
|
106
|
+
NULL,
|
|
107
|
+
NULL,
|
|
108
|
+
'["rust","wasm","cloudflare","service"]',
|
|
109
|
+
'{"origin":"registry.cms-rust-machine-20260928","runtime":"rust-wasm","deployment":{"provider":"cloudflare","url":"https://asrust.inneranimalmedia.com","state":"live"},"run_targets":["cloudflare"],"cli_commands":[],"capabilities":["rust.wasm.worker"]}',
|
|
110
|
+
unixepoch()
|
|
111
|
+
)
|
|
112
|
+
ON CONFLICT(slug) DO UPDATE SET
|
|
113
|
+
name=excluded.name,
|
|
114
|
+
kind=excluded.kind,
|
|
115
|
+
status=excluded.status,
|
|
116
|
+
description=excluded.description,
|
|
117
|
+
repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
|
|
118
|
+
canonical_path=excluded.canonical_path,
|
|
119
|
+
package_name=excluded.package_name,
|
|
120
|
+
version=excluded.version,
|
|
121
|
+
tags=excluded.tags,
|
|
122
|
+
metadata=excluded.metadata,
|
|
123
|
+
updated_at=excluded.updated_at;
|
|
124
|
+
|
|
125
|
+
INSERT INTO agentsam_products (
|
|
126
|
+
slug, name, kind, status, description,
|
|
127
|
+
repository_id, canonical_path, package_name, version, tags, metadata, updated_at
|
|
128
|
+
) VALUES (
|
|
129
|
+
'agentsam-machine',
|
|
130
|
+
'AgentSam Machine',
|
|
131
|
+
'service',
|
|
132
|
+
'prototype',
|
|
133
|
+
'Deterministic native inspect/catalog engine; native core is present while top-level agentsam machine dispatch remains pending.',
|
|
134
|
+
'github:samprimeaux/agentsam-sdk',
|
|
135
|
+
'native/agentsam-machine',
|
|
136
|
+
NULL,
|
|
137
|
+
'0.1.0',
|
|
138
|
+
'["rust","native","machine","inspect"]',
|
|
139
|
+
'{"origin":"registry.cms-rust-machine-20260928","installable":false,"runtime":"native-rust","run_targets":["local","tauri"],"cli_commands":[],"capabilities":["machine.inspect"],"dispatch":"pending"}',
|
|
140
|
+
unixepoch()
|
|
141
|
+
)
|
|
142
|
+
ON CONFLICT(slug) DO UPDATE SET
|
|
143
|
+
name=excluded.name,
|
|
144
|
+
kind=excluded.kind,
|
|
145
|
+
status=excluded.status,
|
|
146
|
+
description=excluded.description,
|
|
147
|
+
repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
|
|
148
|
+
canonical_path=excluded.canonical_path,
|
|
149
|
+
package_name=excluded.package_name,
|
|
150
|
+
version=excluded.version,
|
|
151
|
+
tags=excluded.tags,
|
|
152
|
+
metadata=excluded.metadata,
|
|
153
|
+
updated_at=excluded.updated_at;
|
|
154
|
+
|
|
155
|
+
INSERT INTO agentsam_products (
|
|
156
|
+
slug, name, kind, status, description,
|
|
157
|
+
repository_id, canonical_path, package_name, version, tags, metadata, updated_at
|
|
158
|
+
) VALUES (
|
|
159
|
+
'agentsam-rapid-rust',
|
|
160
|
+
'AgentSam Rapid Rust',
|
|
161
|
+
'sdk-package',
|
|
162
|
+
'prototype',
|
|
163
|
+
'Rust/Wasm Worker scaffolding and local proof tooling shipped inside the AgentSam SDK.',
|
|
164
|
+
'github:samprimeaux/agentsam-sdk',
|
|
165
|
+
'packages/agentsam-rapid-rust',
|
|
166
|
+
'@inneranimalmedia/agentsam-sdk',
|
|
167
|
+
'0.1.0',
|
|
168
|
+
'["rust","wasm","sdk","cli","installable"]',
|
|
169
|
+
'{"origin":"registry.cms-rust-machine-20260928","installable":true,"bundled_in":"@inneranimalmedia/agentsam-sdk","run_targets":["local","cloudflare"],"persistence":[],"cli_commands":["agentsam rust","agentsam wasm"],"capabilities":["rust.scaffold","rust.check","rust.build","rust.dev","rust.deploy"]}',
|
|
170
|
+
unixepoch()
|
|
171
|
+
)
|
|
172
|
+
ON CONFLICT(slug) DO UPDATE SET
|
|
173
|
+
name=excluded.name,
|
|
174
|
+
kind=excluded.kind,
|
|
175
|
+
status=excluded.status,
|
|
176
|
+
description=excluded.description,
|
|
177
|
+
repository_id=COALESCE(excluded.repository_id,agentsam_products.repository_id),
|
|
178
|
+
canonical_path=excluded.canonical_path,
|
|
179
|
+
package_name=excluded.package_name,
|
|
180
|
+
version=excluded.version,
|
|
181
|
+
tags=excluded.tags,
|
|
182
|
+
metadata=excluded.metadata,
|
|
183
|
+
updated_at=excluded.updated_at;
|
|
184
|
+
|
|
185
|
+
-- CMS product is packaged as the canonical editor app.
|
|
186
|
+
INSERT INTO asset_relationships (
|
|
187
|
+
source_type, source_id, target_type, target_id, relationship_type, metadata
|
|
188
|
+
)
|
|
189
|
+
SELECT 'agentsam_product', cms.id, 'agentsam_product', editor.id, 'packaged_as',
|
|
190
|
+
'{"origin":"registry.cms-rust-machine-20260928","role":"editor_app"}'
|
|
191
|
+
FROM agentsam_products cms, agentsam_products editor
|
|
192
|
+
WHERE cms.slug='cms' AND editor.slug='client-cms-editor'
|
|
193
|
+
ON CONFLICT(source_type,source_id,target_type,target_id,relationship_type)
|
|
194
|
+
DO UPDATE SET metadata=excluded.metadata;
|
|
195
|
+
|
|
196
|
+
-- Preserve the existing legacy product identity as an alias, not a second canonical editor.
|
|
197
|
+
INSERT INTO asset_relationships (
|
|
198
|
+
source_type, source_id, target_type, target_id, relationship_type, metadata
|
|
199
|
+
)
|
|
200
|
+
SELECT 'agentsam_product', legacy.id, 'agentsam_product', editor.id, 'aliased_as',
|
|
201
|
+
'{"origin":"registry.cms-rust-machine-20260928","legacy_slug":"iam-client-cms-editor"}'
|
|
202
|
+
FROM agentsam_products legacy, agentsam_products editor
|
|
203
|
+
WHERE legacy.slug='iam-client-cms-editor' AND editor.slug='client-cms-editor'
|
|
204
|
+
ON CONFLICT(source_type,source_id,target_type,target_id,relationship_type)
|
|
205
|
+
DO UPDATE SET metadata=excluded.metadata;
|
|
206
|
+
|
|
207
|
+
-- Harvested theme candidate belongs to the CMS product family.
|
|
208
|
+
INSERT INTO asset_relationships (
|
|
209
|
+
source_type, source_id, target_type, target_id, relationship_type, metadata
|
|
210
|
+
)
|
|
211
|
+
SELECT 'agentsam_product', theme.id, 'agentsam_product', cms.id, 'depends_on',
|
|
212
|
+
'{"origin":"registry.cms-rust-machine-20260928","role":"cms_theme"}'
|
|
213
|
+
FROM agentsam_products theme, agentsam_products cms
|
|
214
|
+
WHERE theme.slug='theme-inneranimals-site' AND cms.slug='cms'
|
|
215
|
+
ON CONFLICT(source_type,source_id,target_type,target_id,relationship_type)
|
|
216
|
+
DO UPDATE SET metadata=excluded.metadata;
|
|
217
|
+
|
|
218
|
+
-- Rapid Rust exposes the commands that are already mainline and tested.
|
|
219
|
+
INSERT INTO asset_relationships (
|
|
220
|
+
source_type, source_id, target_type, target_id, relationship_type, metadata
|
|
221
|
+
)
|
|
222
|
+
SELECT 'agentsam_product', p.id, 'cli_command', 'agentsam:rust', 'exposes_command',
|
|
223
|
+
'{"origin":"registry.cms-rust-machine-20260928","command":"agentsam rust"}'
|
|
224
|
+
FROM agentsam_products p
|
|
225
|
+
WHERE p.slug='agentsam-rapid-rust'
|
|
226
|
+
ON CONFLICT(source_type,source_id,target_type,target_id,relationship_type)
|
|
227
|
+
DO UPDATE SET metadata=excluded.metadata;
|
|
228
|
+
|
|
229
|
+
INSERT INTO asset_relationships (
|
|
230
|
+
source_type, source_id, target_type, target_id, relationship_type, metadata
|
|
231
|
+
)
|
|
232
|
+
SELECT 'agentsam_product', p.id, 'cli_command', 'agentsam:wasm', 'exposes_command',
|
|
233
|
+
'{"origin":"registry.cms-rust-machine-20260928","command":"agentsam wasm"}'
|
|
234
|
+
FROM agentsam_products p
|
|
235
|
+
WHERE p.slug='agentsam-rapid-rust'
|
|
236
|
+
ON CONFLICT(source_type,source_id,target_type,target_id,relationship_type)
|
|
237
|
+
DO UPDATE SET metadata=excluded.metadata;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "agentsam.registry.receipt.v1",
|
|
3
|
+
"database": "inneranimalmedia-business",
|
|
4
|
+
"applied_at": "2026-09-28",
|
|
5
|
+
"validated": true,
|
|
6
|
+
"products": {
|
|
7
|
+
"cms": "wired",
|
|
8
|
+
"client-cms-editor": "scaffolded",
|
|
9
|
+
"theme-inneranimals-site": "prototype",
|
|
10
|
+
"asrust": "wired",
|
|
11
|
+
"agentsam-machine": "prototype",
|
|
12
|
+
"agentsam-rapid-rust": "prototype"
|
|
13
|
+
},
|
|
14
|
+
"relationships": [
|
|
15
|
+
["cms", "packaged_as", "client-cms-editor"],
|
|
16
|
+
["iam-client-cms-editor", "aliased_as", "client-cms-editor"],
|
|
17
|
+
["theme-inneranimals-site", "depends_on", "cms"],
|
|
18
|
+
["agentsam-rapid-rust", "exposes_command", "agentsam:rust"],
|
|
19
|
+
["agentsam-rapid-rust", "exposes_command", "agentsam:wasm"]
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
SELECT slug,kind,status,canonical_path,package_name,
|
|
2
|
+
json_extract(metadata,'$.app_id') AS app_id,
|
|
3
|
+
json_extract(metadata,'$.legacy_slug') AS legacy_slug,
|
|
4
|
+
json_extract(metadata,'$.dispatch') AS dispatch
|
|
5
|
+
FROM agentsam_products
|
|
6
|
+
WHERE slug IN (
|
|
7
|
+
'cms',
|
|
8
|
+
'client-cms-editor',
|
|
9
|
+
'theme-inneranimals-site',
|
|
10
|
+
'asrust',
|
|
11
|
+
'agentsam-machine',
|
|
12
|
+
'agentsam-rapid-rust'
|
|
13
|
+
)
|
|
14
|
+
ORDER BY slug;
|
|
15
|
+
|
|
16
|
+
SELECT p.slug AS source_slug,
|
|
17
|
+
ar.relationship_type,
|
|
18
|
+
CASE WHEN ar.target_type='agentsam_product' THEN tp.slug ELSE ar.target_id END AS target,
|
|
19
|
+
ar.target_type
|
|
20
|
+
FROM asset_relationships ar
|
|
21
|
+
JOIN agentsam_products p
|
|
22
|
+
ON ar.source_type='agentsam_product' AND ar.source_id=p.id
|
|
23
|
+
LEFT JOIN agentsam_products tp
|
|
24
|
+
ON ar.target_type='agentsam_product' AND ar.target_id=tp.id
|
|
25
|
+
WHERE p.slug IN ('cms','iam-client-cms-editor','theme-inneranimals-site','agentsam-rapid-rust')
|
|
26
|
+
AND ar.relationship_type IN ('packaged_as','aliased_as','depends_on','exposes_command')
|
|
27
|
+
ORDER BY source_slug, ar.relationship_type, target;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Build/install/smoke-test AgentSam Rapid Rust native CLI.
|
|
3
|
+
|
|
4
|
+
Nothing here deploys a Worker. --bootstrap only installs local Rust/Wasm build
|
|
5
|
+
prerequisites. --smoke scaffolds disposable projects and cargo-checks them.
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
import argparse, json, os, shutil, subprocess, sys, tempfile
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
ROOT = Path(__file__).resolve().parents[1]
|
|
12
|
+
MANIFEST = ROOT / "packages" / "agentsam-rapid-rust" / "Cargo.toml"
|
|
13
|
+
BINARY = ROOT / "packages" / "agentsam-rapid-rust" / "target" / "release" / "agentsam-rapid-rust"
|
|
14
|
+
WORKER_BUILD_VERSION = "0.8.7"
|
|
15
|
+
TEMPLATES = ("api", "shared-core", "crypto-auth", "data-processor")
|
|
16
|
+
|
|
17
|
+
def run(cmd, *, cwd=ROOT, check=True):
|
|
18
|
+
print("→", " ".join(map(str, cmd)))
|
|
19
|
+
return subprocess.run(list(map(str, cmd)), cwd=cwd, check=check)
|
|
20
|
+
|
|
21
|
+
def have(cmd):
|
|
22
|
+
return shutil.which(cmd) is not None
|
|
23
|
+
|
|
24
|
+
def bootstrap():
|
|
25
|
+
if not have("rustup") or not have("cargo"):
|
|
26
|
+
raise RuntimeError("Rust/rustup/cargo are required")
|
|
27
|
+
installed = subprocess.check_output(["rustup", "target", "list", "--installed"], text=True)
|
|
28
|
+
if "wasm32-unknown-unknown" not in installed.splitlines():
|
|
29
|
+
run(["rustup", "target", "add", "wasm32-unknown-unknown"])
|
|
30
|
+
if not have("worker-build"):
|
|
31
|
+
run(["cargo", "install", "worker-build", "--version", WORKER_BUILD_VERSION, "--locked"])
|
|
32
|
+
|
|
33
|
+
def build():
|
|
34
|
+
run(["cargo", "fmt", "--manifest-path", MANIFEST, "--", "--check"])
|
|
35
|
+
run(["cargo", "test", "--manifest-path", MANIFEST])
|
|
36
|
+
run(["cargo", "build", "--release", "--manifest-path", MANIFEST])
|
|
37
|
+
|
|
38
|
+
def install(dest: Path):
|
|
39
|
+
if not BINARY.exists():
|
|
40
|
+
build()
|
|
41
|
+
dest.mkdir(parents=True, exist_ok=True)
|
|
42
|
+
target = dest / "agentsam-rapid-rust-native"
|
|
43
|
+
tmp = dest / ".agentsam-rapid-rust-native.tmp"
|
|
44
|
+
shutil.copy2(BINARY, tmp)
|
|
45
|
+
tmp.chmod(0o755)
|
|
46
|
+
os.replace(tmp, target)
|
|
47
|
+
print("installed:", target)
|
|
48
|
+
return target
|
|
49
|
+
|
|
50
|
+
def smoke(binary: Path):
|
|
51
|
+
bootstrap()
|
|
52
|
+
with tempfile.TemporaryDirectory(prefix="agentsam-rapid-rust-") as td:
|
|
53
|
+
root = Path(td)
|
|
54
|
+
for template in TEMPLATES:
|
|
55
|
+
name = "fixture-" + template
|
|
56
|
+
run([binary, "new", name, "--template", template, "--out", root])
|
|
57
|
+
project = root / name
|
|
58
|
+
run([binary, "check", "--cwd", project])
|
|
59
|
+
|
|
60
|
+
def main():
|
|
61
|
+
ap=argparse.ArgumentParser(description=__doc__)
|
|
62
|
+
ap.add_argument("--bootstrap", action="store_true")
|
|
63
|
+
ap.add_argument("--build", action="store_true")
|
|
64
|
+
ap.add_argument("--install", action="store_true")
|
|
65
|
+
ap.add_argument("--install-dir", type=Path, default=Path.home()/".agentsam"/"bin")
|
|
66
|
+
ap.add_argument("--smoke", action="store_true")
|
|
67
|
+
ap.add_argument("--json", action="store_true")
|
|
68
|
+
args=ap.parse_args()
|
|
69
|
+
if not any((args.bootstrap,args.build,args.install,args.smoke)):
|
|
70
|
+
args.build=True
|
|
71
|
+
if args.bootstrap: bootstrap()
|
|
72
|
+
if args.build or args.install or args.smoke: build()
|
|
73
|
+
installed=None
|
|
74
|
+
if args.install: installed=install(args.install_dir.expanduser())
|
|
75
|
+
if args.smoke: smoke(installed or BINARY)
|
|
76
|
+
result={"ok":True,"binary":str(BINARY),"installed":str(installed) if installed else None,"smoke":args.smoke}
|
|
77
|
+
if args.json: print(json.dumps(result,indent=2))
|
|
78
|
+
return 0
|
|
79
|
+
|
|
80
|
+
if __name__ == '__main__':
|
|
81
|
+
try: raise SystemExit(main())
|
|
82
|
+
except (RuntimeError, subprocess.CalledProcessError) as exc:
|
|
83
|
+
print("ERROR:", exc, file=sys.stderr); raise SystemExit(2)
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: auth
|
|
3
|
+
description: >
|
|
4
|
+
Add user accounts and sign-in to this TanStack Start app. Use when the app
|
|
5
|
+
needs authentication, sign-in, user accounts, protected routes, or per-user
|
|
6
|
+
data. Triggers on "auth", "login", "log in", "sign in", "sign up", "account",
|
|
7
|
+
"users", "authentication", "protected", "who is logged in", "current user",
|
|
8
|
+
"per-user".
|
|
9
|
+
metadata:
|
|
10
|
+
short-description: "Auth via the Grok broker (Google, X) or local email/password — no other methods supported"
|
|
11
|
+
user-invocable: false
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Auth
|
|
15
|
+
|
|
16
|
+
This app runs its **own** [Better Auth](https://better-auth.com) at
|
|
17
|
+
`/api/auth/*`, federating to the shared **Grok auth broker** (`auth.grok.me`)
|
|
18
|
+
via the `genericOAuth` plugin. This template wires **Google** and **X**.
|
|
19
|
+
|
|
20
|
+
**Supported sign-in methods — use ONLY these three; nothing else is supported:
|
|
21
|
+
Google, X, and email/password.** No other social/OAuth provider (GitHub, Apple,
|
|
22
|
+
Discord, …), no magic links, passkeys, OTP, phone/SMS, or anonymous sign-in. Do
|
|
23
|
+
not add entries to `GROK_PROVIDERS`. Method detail and the email/password switch
|
|
24
|
+
(edit **only** `src/lib/auth/email-password.ts`): `references/sign-in-methods.md`.
|
|
25
|
+
**Exception — gate viewers are signed in already; NEVER render login/re-auth
|
|
26
|
+
buttons for them. Connector / app-data apps: ONLY gate "Continue with Grok",
|
|
27
|
+
no Google/X buttons**: `references/grok-identity.md`.
|
|
28
|
+
|
|
29
|
+
**Sign-in is OFF by default** — the template ships `.grok/app-env.json` with
|
|
30
|
+
`{"VITE_AUTH_ENABLED": "false"}`, so only add accounts when the ask calls for
|
|
31
|
+
them (AGENTS.md §0.5). Switching it on is "Turning sign-in on" below.
|
|
32
|
+
|
|
33
|
+
**Once on, sign-in is REAL — including in the sandbox live preview.** Do **NOT**
|
|
34
|
+
scaffold demo/mock/hardcoded users. Preview: popup + baked preview client;
|
|
35
|
+
deployed: per-app client + `DATABASE_URL` + zero-click gate sign-in
|
|
36
|
+
(`references/prewired-and-env.md`).
|
|
37
|
+
|
|
38
|
+
**While OFF** (`VITE_AUTH_ENABLED=false`) a **dev user** is returned so a
|
|
39
|
+
non-auth app renders without a signed-in visitor — dev and preview only.
|
|
40
|
+
Deployed, the flag is the platform's (always `"true"`), so `requireUserId`
|
|
41
|
+
rejects every visitor — auth-off apps use neither it nor `authMiddleware`.
|
|
42
|
+
|
|
43
|
+
Everything is **preinstalled and pre-wired in `src/lib/auth/`** — do not
|
|
44
|
+
`npm install` anything; `better-auth` is the only auth package (never
|
|
45
|
+
`@neondatabase/*`, `@stackframe/*`, or `@clerk/*`). **Do not edit or rewrite any
|
|
46
|
+
file under `src/lib/auth/`** — `server.ts` least of all — except
|
|
47
|
+
`email-password.ts` for its one flag. Per-file map:
|
|
48
|
+
`references/prewired-and-env.md`.
|
|
49
|
+
|
|
50
|
+
**`/auth/popup` is already handled by the template Vite plugin**
|
|
51
|
+
(`vite.config.ts` → `popup.server.ts`): it never paints the React app. **Do NOT
|
|
52
|
+
create `src/routes/auth/popup.tsx`** (or any React page / client OAuth at that
|
|
53
|
+
path) — that shows the full app inside the popup, the common failure mode.
|
|
54
|
+
|
|
55
|
+
**Never write a `.env` / `.env.local` / `.env.example`** in this sandbox: live
|
|
56
|
+
preview needs **zero** env configuration and a deployed app gets its vars
|
|
57
|
+
injected by the platform. The knobs that exist are in
|
|
58
|
+
`references/prewired-and-env.md` — never expose a non-`VITE_` var to the client.
|
|
59
|
+
|
|
60
|
+
`migrations/auth/0001_auth.sql` is the Better Auth schema — **do not edit**. It
|
|
61
|
+
sits outside the globbed `migrations/` directory (neither applier descends), so
|
|
62
|
+
it is not applied to apps without sign-in; "Turning sign-in on" copies it up.
|
|
63
|
+
|
|
64
|
+
## Turning sign-in on
|
|
65
|
+
|
|
66
|
+
Do all of this — the routes alone render the disabled branch:
|
|
67
|
+
|
|
68
|
+
1. **Flag:** delete the `VITE_AUTH_ENABLED` key from `.grok/app-env.json` and
|
|
69
|
+
**restart the dev server**. Vite reads env at startup, so HMR will not pick
|
|
70
|
+
it up. `npm run dev`, `npm run build` and `npm run preview` all read that
|
|
71
|
+
file through `scripts/with-app-env.mjs`, so preview and the built output flip
|
|
72
|
+
together — never start Vite directly.
|
|
73
|
+
2. **Schema:** `cp migrations/auth/0001_auth.sql migrations/0001_auth.sql`, then
|
|
74
|
+
restart so it applies. It is tracked by basename in `_migrations`, so a
|
|
75
|
+
database that already has it will not re-run it.
|
|
76
|
+
3. **Routes:** add `src/routes/api/auth/$.ts` + `src/routes/login.tsx` — copy
|
|
77
|
+
both from `references/wiring.md` (the catch-all API route is what makes
|
|
78
|
+
`/api/auth/*` and the broker callback work).
|
|
79
|
+
4. **Sign out:** a login with no way out is not done — render `<UserButton />`
|
|
80
|
+
from `@/lib/auth/gates` (wires `signOut()`; hides sign-out for gate sessions).
|
|
81
|
+
5. **Existing data:** wrap the app's server functions in `authMiddleware` (an
|
|
82
|
+
auth-off app must not have been using it — see the `neon` skill). Rows from
|
|
83
|
+
before sign-in existed are **development data**: drop and recreate them
|
|
84
|
+
unless the user says otherwise — don't hand them to whoever signs in first.
|
|
85
|
+
|
|
86
|
+
## Building on it once it's on
|
|
87
|
+
|
|
88
|
+
- **Sign in / out:** `signIn(providerId)` and `signOut()` from
|
|
89
|
+
`@/lib/auth/client`; `GROK_PROVIDERS` renders the buttons. The popup,
|
|
90
|
+
bearer-token hand-off, and request attachment are internal — leave them alone.
|
|
91
|
+
Prefer `<UserButton />` (it handles the pending and failure states); `signOut()`
|
|
92
|
+
rejects when deployed if the server never confirms — catch it. Never
|
|
93
|
+
`authClient.signOut()`: it leaves the preview bearer token attached to every
|
|
94
|
+
later request, so the visitor stays signed in.
|
|
95
|
+
- **Reading the user:** `useCurrentUser()` is display-only (`null` means
|
|
96
|
+
*loading OR signed out*, so never redirect on it alone); guard on
|
|
97
|
+
`useCurrentUserState()`'s `isPending` instead. Gates (`SignedIn`, `SignedOut`,
|
|
98
|
+
`SignInGate`, `RedirectToSignIn`, `UserButton`) live in `@/lib/auth/gates`.
|
|
99
|
+
CTA hard rules, skeleton, and cookie-SSR zero-flash: `references/session-ui.md`.
|
|
100
|
+
- **Per-user data (mandatory):** every server function that touches per-user data
|
|
101
|
+
must use the prewired `authMiddleware` and scope every read **and** write to
|
|
102
|
+
`context.userId` — a Postgres driver has full DB access, so nothing else limits
|
|
103
|
+
the query. Keep `user_id` columns `TEXT`; never trust a client-supplied user id;
|
|
104
|
+
signed out, the middleware throws `UnauthorizedError` (401). Code and
|
|
105
|
+
disabled-mode semantics: `references/per-user-data.md`.
|
|
106
|
+
- **Security model:** headless broker, `__Host-` cookies + `trustedOrigins`, and
|
|
107
|
+
Fetch-Metadata sibling isolation are already wired — never weaken them to make
|
|
108
|
+
an error go away (`references/sign-in-methods.md` covers the model and the
|
|
109
|
+
"Invalid origin" fix).
|
|
110
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "agentsam.skill.v1",
|
|
3
|
+
"id": "grok-auth",
|
|
4
|
+
"name": "Grok \u00b7 auth",
|
|
5
|
+
"description": "Auth via the Grok broker (Google, X) or local email/password \u2014 no other methods supported",
|
|
6
|
+
"icon": "skill",
|
|
7
|
+
"slash": {
|
|
8
|
+
"suggested": "/grok-auth"
|
|
9
|
+
},
|
|
10
|
+
"instructions": {
|
|
11
|
+
"source": "local_file",
|
|
12
|
+
"ref": "SKILL.md"
|
|
13
|
+
},
|
|
14
|
+
"execution": {
|
|
15
|
+
"mode": "turn",
|
|
16
|
+
"tools": [],
|
|
17
|
+
"operations": [],
|
|
18
|
+
"capabilities": []
|
|
19
|
+
},
|
|
20
|
+
"provenance": {
|
|
21
|
+
"source": "apps/local-studio/.grok/skills",
|
|
22
|
+
"vendor": "grok",
|
|
23
|
+
"status": "imported"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Sign in with Grok (deployed apps — zero clicks)
|
|
2
|
+
|
|
3
|
+
Behind the edge gate, every proxied request from a signed-in Grok viewer
|
|
4
|
+
carries an unforgeable `x-grok-identity` JWT (EdDSA, minted per request; the
|
|
5
|
+
gate strips any client-supplied copy). The pre-wired `gateIdentitySessions`
|
|
6
|
+
plugin (`src/lib/auth/gate-session.server.ts`) verifies it against the gate's
|
|
7
|
+
JWKS (`/__gate/identity-key`, via `src/lib/auth/gate-identity.server.ts`) and,
|
|
8
|
+
when the app has no session yet, materializes the Better Auth session for that
|
|
9
|
+
viewer automatically — no sign-in button, no redirect, no broker round-trip.
|
|
10
|
+
`useSession` / `useCurrentUser` simply return the Grok user.
|
|
11
|
+
|
|
12
|
+
The broker OAuth flow is the **fallback** for anonymous/public viewers and for
|
|
13
|
+
contexts without the gate. The live preview gets the same zero-click identity
|
|
14
|
+
from the in-VM preview proxy at `http://127.0.0.1:6014` (preview tokens carry
|
|
15
|
+
audience `preview`); the popup mechanism remains the fallback there.
|
|
16
|
+
|
|
17
|
+
## Never render sign-in or re-auth UI to a gate viewer
|
|
18
|
+
|
|
19
|
+
A gate-authenticated viewer is **already signed in**, and the gate refreshes
|
|
20
|
+
connector tokens on every proxied request — **the platform has no re-auth
|
|
21
|
+
concept**. Never render "Re-auth with Grok", "Sign in again", "Refresh
|
|
22
|
+
session", or a standing "Continue with Grok" button: sign-in UI may appear
|
|
23
|
+
only in the `app-data` skill's `login` error state, after a connector call
|
|
24
|
+
actually returned `loginRequired: true`.
|
|
25
|
+
|
|
26
|
+
The live preview gets the same zero-click session, so a sign-in button visible
|
|
27
|
+
to the owner in the preview indicates a bug (a CTA rendered while the session
|
|
28
|
+
check was still pending, or rendered in reaction to a data error) — fix it,
|
|
29
|
+
don't restyle it. For any fallback sign-in surface use `<SignInGate>` from
|
|
30
|
+
`@/lib/auth/gates`: it renders sign-in UI only after the session check resolved
|
|
31
|
+
to no user, never during loading and never from a data error.
|
|
32
|
+
|
|
33
|
+
Sign-out is also a no-op for a gate session — the next request re-materializes
|
|
34
|
+
it from `x-grok-identity`, an instant sign-back-in loop. `<UserButton />`
|
|
35
|
+
already hides its sign-out control for gate sessions; never build a custom
|
|
36
|
+
sign-out (or any sign-out route/handler) for gate viewers.
|
|
37
|
+
|
|
38
|
+
## Files (pre-wired — do not edit)
|
|
39
|
+
|
|
40
|
+
| File | Role |
|
|
41
|
+
|---|---|
|
|
42
|
+
| `gate-identity.server.ts` | Verifies the gate's `x-grok-identity` viewer JWT (EdDSA vs the gate JWKS; fail-closed). Server-only. |
|
|
43
|
+
| `gate-session.server.ts` | Better Auth plugin that turns a verified gate identity into the app session with zero clicks. Already registered in `server.ts`. |
|
|
44
|
+
|
|
45
|
+
## Env (deployer-injected)
|
|
46
|
+
|
|
47
|
+
| Var | Scope | Meaning |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| `GROK_PROJECT_ID` | server | deployed apps: enables "Sign in with Grok" (`x-grok-identity` audience check `app:<project_id>`) |
|
|
50
|
+
| `GROK_GATE_ORIGIN` | server | gate public origin override (JWKS + issuer pin); unset → preview mode (no `GROK_PROJECT_ID`) defaults to the in-VM proxy `http://127.0.0.1:6014` (audience `preview`), deployed mode derives it from the inbound host |
|
|
51
|
+
|
|
52
|
+
Deployed behavior: gate-authenticated viewers are signed in automatically from
|
|
53
|
+
`x-grok-identity`; the deployer also injects a per-app broker client +
|
|
54
|
+
`DATABASE_URL`, so the fallback sign-in persists identities in Postgres.
|
|
55
|
+
|
|
56
|
+
## Connector / app-data apps: gate sign-in only
|
|
57
|
+
|
|
58
|
+
When the `app-data` skill applies, the login page offers ONLY "Continue with
|
|
59
|
+
Grok" via the gate sign-in — the zero-click `x-grok-identity` session above, or
|
|
60
|
+
the gate-built `loginUrl` returned by a connector call. Do not wire Google/X
|
|
61
|
+
buttons for these apps: a broker login can mint an identity that is not the
|
|
62
|
+
gate viewer the connector data belongs to. The three-method rule applies to
|
|
63
|
+
apps without connector data. Still no new `GROK_PROVIDERS` entries, still never
|
|
64
|
+
edit `src/lib/auth/`.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Per-user data (server-side — mandatory)
|
|
2
|
+
|
|
3
|
+
Pair auth with the DB (see the `neon` skill). A regular Postgres driver has full
|
|
4
|
+
DB access, so **every** server function that touches per-user data must verify
|
|
5
|
+
the caller and scope rows to them. Use the prewired **`authMiddleware`**: it
|
|
6
|
+
resolves the same-origin session to a verified `context.userId` (and rejects
|
|
7
|
+
scripted cross-site/sibling requests) — no token threading:
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { createServerFn } from "@tanstack/react-start";
|
|
11
|
+
import { getSql } from "@/lib/db";
|
|
12
|
+
import { authMiddleware } from "@/lib/auth/middleware";
|
|
13
|
+
|
|
14
|
+
export const listTodos = createServerFn({ method: "GET" })
|
|
15
|
+
.middleware([authMiddleware])
|
|
16
|
+
.handler(async ({ context }) => {
|
|
17
|
+
const sql = await getSql();
|
|
18
|
+
// Type the row shape — a server fn's return must be provably serializable.
|
|
19
|
+
return sql<{ id: number; title: string; done: boolean }>`select id, title, done from todos where user_id = ${context.userId} order by id desc`;
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// Inputs go through `.validator()` (the current API); the client passes `{ data }`:
|
|
23
|
+
export const addTodo = createServerFn({ method: "POST" })
|
|
24
|
+
.validator((title: string) => title.trim())
|
|
25
|
+
.middleware([authMiddleware])
|
|
26
|
+
.handler(async ({ context, data: title }) => {
|
|
27
|
+
if (!title) return;
|
|
28
|
+
const sql = await getSql();
|
|
29
|
+
await sql`insert into todos (user_id, title) values (${context.userId}, ${title})`;
|
|
30
|
+
});
|
|
31
|
+
// mutations must scope writes too: `... where id = ${id} and user_id = ${context.userId}`
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Call these from **client code** (effects, event handlers, React Query) — that's
|
|
35
|
+
where `Sec-Fetch-Site: same-origin` holds:
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
useEffect(() => { listTodos().then(setTodos).catch(() => setTodos([])); }, []);
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Semantics: signed out → the middleware throws `UnauthorizedError` (message
|
|
42
|
+
`"Unauthorized"`, `status` 401 — match it to send the visitor to sign-in), in the
|
|
43
|
+
live preview too (real auth). With auth disabled (`VITE_AUTH_ENABLED=false`) it
|
|
44
|
+
resolves the dev user (`"dev-user"`) in dev and preview only — the deployed flag
|
|
45
|
+
comes from the deployer (today always `"true"`), so deployed it rejects every
|
|
46
|
+
visitor — which is why an app without sign-in must not use the middleware at all
|
|
47
|
+
(see the `neon` skill). Keep `user_id` columns
|
|
48
|
+
`TEXT` (Better Auth uses text ids; the disabled dev user is `'dev-user'`). Never
|
|
49
|
+
trust a client-supplied user id — only the middleware / `requireUserId()` result.
|