@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
|
@@ -6,10 +6,24 @@
|
|
|
6
6
|
* Product routing does not live here.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
/** auth_sessions.type values written by this package. */
|
|
10
|
+
export const SESSION_TYPES = Object.freeze({
|
|
11
|
+
BROWSER: 'browser',
|
|
12
|
+
DESKTOP: 'desktop',
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
/** Lifetime of the one-time code a native OAuth callback hands to the app. */
|
|
16
|
+
export const NATIVE_HANDOFF_TTL_SECONDS = 120;
|
|
17
|
+
|
|
9
18
|
export const SESSION_POLICY = Object.freeze({
|
|
10
19
|
browser: Object.freeze({
|
|
11
20
|
ttlSeconds: 30 * 24 * 60 * 60,
|
|
12
21
|
}),
|
|
22
|
+
/** Native app bearer session (OS keychain) — minted via the native OAuth handoff. */
|
|
23
|
+
desktop: Object.freeze({
|
|
24
|
+
ttlSeconds: 30 * 24 * 60 * 60,
|
|
25
|
+
renewWindowSeconds: 7 * 24 * 60 * 60,
|
|
26
|
+
}),
|
|
13
27
|
/** Temporary execution authority — not the user's Local Studio login. */
|
|
14
28
|
agent: Object.freeze({
|
|
15
29
|
minTtlSeconds: 60,
|
|
@@ -18,6 +32,23 @@ export const SESSION_POLICY = Object.freeze({
|
|
|
18
32
|
}),
|
|
19
33
|
});
|
|
20
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Desktop sessions are durable/revocable AgentSam sessions, not provider tokens.
|
|
37
|
+
* Renew only near expiry so normal app launches remain read-mostly.
|
|
38
|
+
*/
|
|
39
|
+
export function shouldRenewDesktopSession(session, nowSeconds) {
|
|
40
|
+
const now = Number.isFinite(Number(nowSeconds))
|
|
41
|
+
? Math.floor(Number(nowSeconds))
|
|
42
|
+
: Math.floor(Date.now() / 1000);
|
|
43
|
+
const expiresAt = Number(session?.expires_at);
|
|
44
|
+
return (
|
|
45
|
+
session?.type === SESSION_TYPES.DESKTOP
|
|
46
|
+
&& Number.isFinite(expiresAt)
|
|
47
|
+
&& expiresAt > now
|
|
48
|
+
&& expiresAt - now <= SESSION_POLICY.desktop.renewWindowSeconds
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
21
52
|
/**
|
|
22
53
|
* Clamp a requested agent/runtime grant TTL into policy bounds.
|
|
23
54
|
* @param {number|null|undefined} requestedSeconds
|
|
@@ -26,7 +26,8 @@ The CLI can now scaffold the reusable identity app surfaces directly with `agent
|
|
|
26
26
|
- `POST /api/auth/login`
|
|
27
27
|
- `POST /api/auth/signup` — create account (email/password); portal form must call this, not login
|
|
28
28
|
- `GET /api/company` — public branding SSOT (loaded by `shared/company-branding.js`)
|
|
29
|
-
- OAuth: `/api/oauth/google/start`, `/api/oauth/github/start`
|
|
29
|
+
- OAuth: `/api/oauth/google/start`, `/api/oauth/github/start`, `/api/oauth/cloudflare/start`
|
|
30
|
+
- Desktop PKCE broker: `POST /api/oauth/google/desktop-exchange` (`GOOGLE_DESKTOP_CLIENT_ID`)
|
|
30
31
|
- GCP: per-client when demanded — scaffold only until requested
|
|
31
32
|
|
|
32
33
|
Sensitive finalize stays server-side (`oauth/callback` → Identity Service).
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<head>
|
|
5
5
|
<meta charset="UTF-8">
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<title>Sign in
|
|
7
|
+
<title>Sign in</title>
|
|
8
8
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap"
|
|
9
9
|
rel="stylesheet">
|
|
10
10
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
|
|
@@ -360,12 +360,12 @@
|
|
|
360
360
|
<div class="login-card">
|
|
361
361
|
<img
|
|
362
362
|
class="auth-logo"
|
|
363
|
-
src="
|
|
364
|
-
alt="
|
|
363
|
+
src="/shared/app-icon.png"
|
|
364
|
+
alt="Sign in"
|
|
365
365
|
/>
|
|
366
366
|
|
|
367
|
-
<h1 data-company-tagline>
|
|
368
|
-
<p class="subtitle" data-company-subtitle="signin">Sign in
|
|
367
|
+
<h1 data-company-tagline>Welcome</h1>
|
|
368
|
+
<p class="subtitle" data-company-subtitle="signin">Sign in</p>
|
|
369
369
|
<p id="registeredMsg" class="subtitle" style="color: #10B981; display: none; margin-top: -16px; margin-bottom: 16px;">Account created. Sign in below.</p>
|
|
370
370
|
<p id="resetMsg" class="subtitle" style="color: #10B981; display: none; margin-top: -16px; margin-bottom: 16px;">Password updated. Sign in with your new password.</p>
|
|
371
371
|
<p id="oauthErrorMsg" class="subtitle" style="color: #FF3B30; display: none; margin-top: -16px; margin-bottom: 16px;"></p>
|
|
@@ -451,7 +451,7 @@
|
|
|
451
451
|
</div>
|
|
452
452
|
|
|
453
453
|
<footer class="auth-min-footer" aria-label="Legal">
|
|
454
|
-
<span data-company-name>
|
|
454
|
+
<span data-company-name>App</span>
|
|
455
455
|
<span class="auth-min-footer-sep" aria-hidden="true">|</span>
|
|
456
456
|
<a href="/privacy">Privacy</a>
|
|
457
457
|
<span class="auth-min-footer-sep" aria-hidden="true">|</span>
|
|
@@ -824,6 +824,7 @@
|
|
|
824
824
|
});
|
|
825
825
|
})();
|
|
826
826
|
</script>
|
|
827
|
+
<script src="/shared/desktop-identity-bridge.js" defer></script>
|
|
827
828
|
<script src="/shared/company-branding.js" defer></script>
|
|
828
829
|
</body>
|
|
829
830
|
</html>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<head>
|
|
5
5
|
<meta charset="UTF-8">
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<title>Reset password
|
|
7
|
+
<title>Reset password</title>
|
|
8
8
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap"
|
|
9
9
|
rel="stylesheet">
|
|
10
10
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
|
|
@@ -280,8 +280,8 @@
|
|
|
280
280
|
<div class="login-card">
|
|
281
281
|
<img
|
|
282
282
|
class="auth-logo"
|
|
283
|
-
src="
|
|
284
|
-
alt="
|
|
283
|
+
src="/shared/app-icon.png"
|
|
284
|
+
alt="Sign in"
|
|
285
285
|
style="width:120px;height:120px;object-fit:contain;display:block;margin:0 auto 20px;"
|
|
286
286
|
/>
|
|
287
287
|
|
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
<p class="subtitle">We'll send you a secure verification code.</p>
|
|
291
291
|
|
|
292
292
|
<div class="email-note">
|
|
293
|
-
You'll receive an email from <strong data-company-support-email>
|
|
293
|
+
You'll receive an email from <strong data-company-support-email>support@example.com</strong>.<br>
|
|
294
294
|
Check your inbox and spam folder.
|
|
295
295
|
</div>
|
|
296
296
|
|
|
@@ -365,7 +365,7 @@
|
|
|
365
365
|
</div>
|
|
366
366
|
|
|
367
367
|
<footer class="auth-min-footer" aria-label="Legal">
|
|
368
|
-
<span data-company-name>
|
|
368
|
+
<span data-company-name>App</span>
|
|
369
369
|
<span class="auth-min-footer-sep" aria-hidden="true">|</span>
|
|
370
370
|
<a href="/privacy">Privacy</a>
|
|
371
371
|
<span class="auth-min-footer-sep" aria-hidden="true">|</span>
|
|
@@ -579,6 +579,7 @@
|
|
|
579
579
|
}
|
|
580
580
|
})();
|
|
581
581
|
</script>
|
|
582
|
+
<script src="/shared/desktop-identity-bridge.js" defer></script>
|
|
582
583
|
<script src="/shared/company-branding.js" defer></script>
|
|
583
584
|
</body>
|
|
584
585
|
</html>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<head>
|
|
5
5
|
<meta charset="UTF-8">
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<title>Sign up
|
|
7
|
+
<title>Sign up</title>
|
|
8
8
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap"
|
|
9
9
|
rel="stylesheet">
|
|
10
10
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
|
|
@@ -398,12 +398,12 @@
|
|
|
398
398
|
<div class="login-card">
|
|
399
399
|
<img
|
|
400
400
|
class="auth-logo"
|
|
401
|
-
src="
|
|
402
|
-
alt="
|
|
401
|
+
src="/shared/app-icon.png"
|
|
402
|
+
alt="Sign in"
|
|
403
403
|
/>
|
|
404
404
|
|
|
405
405
|
<h1>Create account</h1>
|
|
406
|
-
<p class="subtitle" data-company-subtitle="signup">
|
|
406
|
+
<p class="subtitle" data-company-subtitle="signup">Create an account</p>
|
|
407
407
|
<p id="registeredMsg" class="subtitle" style="color: #10B981; display: none; margin-top: -16px; margin-bottom: 16px;">Account created. Sign in below.</p>
|
|
408
408
|
<p id="oauthErrorMsg" class="subtitle" style="color: #FF3B30; display: none; margin-top: -16px; margin-bottom: 16px;"></p>
|
|
409
409
|
<p id="cfConnectNotice" class="subtitle" style="color: #fdba74; display: none; margin-top: -12px; margin-bottom: 12px; font-size: 12px; line-height: 1.45; text-align: center; max-width: 320px;">Sign in with Google, GitHub, or Supabase first, then connect Cloudflare from Integrations.</p>
|
|
@@ -485,7 +485,7 @@
|
|
|
485
485
|
</div>
|
|
486
486
|
|
|
487
487
|
<footer class="auth-min-footer" aria-label="Legal">
|
|
488
|
-
<span data-company-name>
|
|
488
|
+
<span data-company-name>App</span>
|
|
489
489
|
<span class="auth-min-footer-sep" aria-hidden="true">|</span>
|
|
490
490
|
<a href="/privacy">Privacy</a>
|
|
491
491
|
<span class="auth-min-footer-sep" aria-hidden="true">|</span>
|
|
@@ -835,6 +835,7 @@
|
|
|
835
835
|
});
|
|
836
836
|
})();
|
|
837
837
|
</script>
|
|
838
|
+
<script src="/shared/desktop-identity-bridge.js" defer></script>
|
|
838
839
|
<script src="/shared/company-branding.js" defer></script>
|
|
839
840
|
</body>
|
|
840
841
|
</html>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auth portal branding from D1 `company` via GET /api/company.
|
|
3
|
-
* Static HTML keeps
|
|
3
|
+
* Static HTML keeps neutral portable defaults as fallback when host branding is unavailable.
|
|
4
4
|
*/
|
|
5
5
|
(function () {
|
|
6
6
|
var SUBTITLE_PREFIX = {
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
(function () {
|
|
2
|
+
function getInvoke() {
|
|
3
|
+
try {
|
|
4
|
+
return window.__TAURI__?.core?.invoke
|
|
5
|
+
|| window.parent?.__TAURI__?.core?.invoke
|
|
6
|
+
|| null;
|
|
7
|
+
} catch {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
var invoke = getInvoke();
|
|
13
|
+
if (!invoke) return;
|
|
14
|
+
|
|
15
|
+
var originalFetch = window.fetch.bind(window);
|
|
16
|
+
|
|
17
|
+
async function callIdentity(payload) {
|
|
18
|
+
var raw = await invoke('identity_bridge', {
|
|
19
|
+
requestJson: JSON.stringify(payload || {}),
|
|
20
|
+
});
|
|
21
|
+
var body = typeof raw === 'string' ? JSON.parse(raw) : raw;
|
|
22
|
+
if (!body || body.ok === false) {
|
|
23
|
+
throw new Error(body?.error || 'identity_request_failed');
|
|
24
|
+
}
|
|
25
|
+
return body;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
function jsonResponse(body, status) {
|
|
30
|
+
return new Response(JSON.stringify(body), {
|
|
31
|
+
status: status || 200,
|
|
32
|
+
headers: { 'content-type': 'application/json' },
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function parseBody(init) {
|
|
37
|
+
if (!init?.body) return {};
|
|
38
|
+
try {
|
|
39
|
+
return typeof init.body === 'string' ? JSON.parse(init.body) : {};
|
|
40
|
+
} catch {
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function notifyAuthenticated(body) {
|
|
46
|
+
try {
|
|
47
|
+
window.parent?.postMessage({
|
|
48
|
+
type: 'agentsam:desktop-identity',
|
|
49
|
+
authenticated: true,
|
|
50
|
+
user: body?.user || null,
|
|
51
|
+
}, '*');
|
|
52
|
+
} catch {}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
window.fetch = async function packagedIdentityFetch(input, init) {
|
|
56
|
+
var url;
|
|
57
|
+
try {
|
|
58
|
+
url = new URL(typeof input === 'string' ? input : input.url, window.location.href);
|
|
59
|
+
} catch {
|
|
60
|
+
return originalFetch(input, init);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (url.pathname === '/api/company') {
|
|
64
|
+
return jsonResponse({
|
|
65
|
+
name: 'App',
|
|
66
|
+
tagline: 'Welcome',
|
|
67
|
+
logoUrl: '/shared/app-icon.png',
|
|
68
|
+
authBgColor: '#050508',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (url.pathname === '/api/auth/login') {
|
|
73
|
+
try {
|
|
74
|
+
var loginBody = parseBody(init);
|
|
75
|
+
var login = await callIdentity({
|
|
76
|
+
op: 'login',
|
|
77
|
+
email: loginBody.email,
|
|
78
|
+
password: loginBody.password,
|
|
79
|
+
next: loginBody.next || '/agentsam',
|
|
80
|
+
});
|
|
81
|
+
notifyAuthenticated(login);
|
|
82
|
+
return jsonResponse({ ok: true, user: login.user, redirect: '/agentsam' });
|
|
83
|
+
} catch (error) {
|
|
84
|
+
return jsonResponse({ ok: false, error: error?.message || String(error) }, 401);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (url.pathname === '/api/auth/signup') {
|
|
89
|
+
try {
|
|
90
|
+
var signupBody = parseBody(init);
|
|
91
|
+
var signup = await callIdentity({
|
|
92
|
+
op: 'signup',
|
|
93
|
+
email: signupBody.email,
|
|
94
|
+
password: signupBody.password,
|
|
95
|
+
displayName: signupBody.name || signupBody.displayName || signupBody.display_name,
|
|
96
|
+
next: signupBody.next || '/agentsam',
|
|
97
|
+
});
|
|
98
|
+
notifyAuthenticated(signup);
|
|
99
|
+
return jsonResponse({ ok: true, user: signup.user, redirect: '/agentsam' });
|
|
100
|
+
} catch (error) {
|
|
101
|
+
return jsonResponse({ ok: false, error: error?.message || String(error) }, 400);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (url.pathname === '/api/auth/password-reset/request') {
|
|
106
|
+
try {
|
|
107
|
+
var requestBody = parseBody(init);
|
|
108
|
+
var requested = await callIdentity({
|
|
109
|
+
op: 'reset_request',
|
|
110
|
+
email: requestBody.email,
|
|
111
|
+
});
|
|
112
|
+
return jsonResponse(requested);
|
|
113
|
+
} catch (error) {
|
|
114
|
+
return jsonResponse({ ok: false, error: error?.message || String(error) }, 400);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (url.pathname === '/api/auth/password-reset/confirm') {
|
|
119
|
+
try {
|
|
120
|
+
var resetBody = parseBody(init);
|
|
121
|
+
var reset = await callIdentity({
|
|
122
|
+
op: 'reset_confirm',
|
|
123
|
+
email: resetBody.email,
|
|
124
|
+
code: resetBody.code,
|
|
125
|
+
password: resetBody.password,
|
|
126
|
+
confirm_password: resetBody.confirm_password || resetBody.confirmPassword || resetBody.confirm,
|
|
127
|
+
});
|
|
128
|
+
return jsonResponse(reset);
|
|
129
|
+
} catch (error) {
|
|
130
|
+
return jsonResponse({ ok: false, error: error?.message || String(error) }, 400);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (url.pathname === '/api/auth/logout') {
|
|
135
|
+
try {
|
|
136
|
+
await callIdentity({ op: 'logout' });
|
|
137
|
+
} catch {}
|
|
138
|
+
return jsonResponse({ ok: true });
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return originalFetch(input, init);
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
function localizeAuthLinks() {
|
|
145
|
+
var map = {
|
|
146
|
+
'/auth/login': './login.html',
|
|
147
|
+
'/auth/signup': './signup.html',
|
|
148
|
+
'/auth/reset': './reset.html',
|
|
149
|
+
};
|
|
150
|
+
document.querySelectorAll('a[href]').forEach(function (link) {
|
|
151
|
+
var href = link.getAttribute('href');
|
|
152
|
+
if (!href) return;
|
|
153
|
+
var base = href.split('?')[0];
|
|
154
|
+
if (map[base]) {
|
|
155
|
+
var query = href.indexOf('?') >= 0 ? href.slice(href.indexOf('?')) : '';
|
|
156
|
+
link.setAttribute('href', map[base] + query);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// Provider OAuth belongs to installed provider adapters. Do not render
|
|
161
|
+
// decorative/dead login buttons in the packaged native surface.
|
|
162
|
+
['googleSignIn', 'githubSignIn', 'cloudflareSignIn'].forEach(function (id) {
|
|
163
|
+
var link = document.getElementById(id);
|
|
164
|
+
if (link) link.style.display = 'none';
|
|
165
|
+
});
|
|
166
|
+
var backupToggle = document.getElementById('backupCodeToggle');
|
|
167
|
+
if (backupToggle) {
|
|
168
|
+
var backupPrompt = backupToggle.closest('p');
|
|
169
|
+
if (backupPrompt) backupPrompt.style.display = 'none';
|
|
170
|
+
else backupToggle.style.display = 'none';
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
window.addEventListener('DOMContentLoaded', localizeAuthLinks);
|
|
175
|
+
window.__AGENTSAM_DESKTOP_IDENTITY__ = true;
|
|
176
|
+
})();
|
|
@@ -21,7 +21,21 @@ import {
|
|
|
21
21
|
GcpProvider,
|
|
22
22
|
EmailProvider,
|
|
23
23
|
CloudflareProvider,
|
|
24
|
+
ChatGptProvider,
|
|
24
25
|
} from './providers/index.js';
|
|
26
|
+
import {
|
|
27
|
+
STOCK_SIGN_IN_OPTIONS,
|
|
28
|
+
CMS_STOCK_SIGN_IN_IDS,
|
|
29
|
+
listStockSignInOptions,
|
|
30
|
+
getStockSignInOption,
|
|
31
|
+
} from './contracts/sign-in-options.js';
|
|
32
|
+
import {
|
|
33
|
+
createChatGptCmsAuthHost,
|
|
34
|
+
normalizeChatGptIdentity,
|
|
35
|
+
readChatGptUserFromHeaders,
|
|
36
|
+
chatGPTSignInPath,
|
|
37
|
+
chatGPTSignOutPath,
|
|
38
|
+
} from './providers/chatgpt/index.js';
|
|
25
39
|
|
|
26
40
|
export {
|
|
27
41
|
IdentityContractVersion,
|
|
@@ -40,6 +54,16 @@ export {
|
|
|
40
54
|
GcpProvider,
|
|
41
55
|
EmailProvider,
|
|
42
56
|
CloudflareProvider,
|
|
57
|
+
ChatGptProvider,
|
|
58
|
+
STOCK_SIGN_IN_OPTIONS,
|
|
59
|
+
CMS_STOCK_SIGN_IN_IDS,
|
|
60
|
+
listStockSignInOptions,
|
|
61
|
+
getStockSignInOption,
|
|
62
|
+
createChatGptCmsAuthHost,
|
|
63
|
+
normalizeChatGptIdentity,
|
|
64
|
+
readChatGptUserFromHeaders,
|
|
65
|
+
chatGPTSignInPath,
|
|
66
|
+
chatGPTSignOutPath,
|
|
43
67
|
};
|
|
44
68
|
|
|
45
69
|
export * from './core/index.js';
|
|
@@ -66,17 +90,36 @@ export {
|
|
|
66
90
|
} from './server/post-auth.js';
|
|
67
91
|
export { verifyAppAuthContract, verifyAppPackage } from './app/verify-app.js';
|
|
68
92
|
export { DEFAULT_COMPANY_ID, DEFAULT_COMPANY_SLUG, normalizeCompanyRow } from './contracts/company.js';
|
|
93
|
+
export {
|
|
94
|
+
buildOAuthConsentView,
|
|
95
|
+
normalizeOAuthConsentCompany,
|
|
96
|
+
normalizeOAuthConsentResource,
|
|
97
|
+
normalizeOAuthConsentClient,
|
|
98
|
+
normalizeOAuthConsentScope,
|
|
99
|
+
} from './oauth/consent-view.js';
|
|
69
100
|
export * from './contracts/auth-config.js';
|
|
70
101
|
export { createPasswordResetService } from './recovery/password-reset.js';
|
|
71
102
|
export {
|
|
72
103
|
finalizeInboundOAuth,
|
|
73
104
|
registerFinalizeInboundOAuth,
|
|
74
105
|
} from './oauth/callback.js';
|
|
75
|
-
export {
|
|
106
|
+
export {
|
|
107
|
+
resolveOAuthCredentialLane,
|
|
108
|
+
resolveIamPlatformCredentials,
|
|
109
|
+
requireIamPlatformCredentials,
|
|
110
|
+
} from './oauth/credentials.js';
|
|
111
|
+
export {
|
|
112
|
+
handleGoogleDesktopExchangeRequest,
|
|
113
|
+
resolveGoogleExchangeSecret,
|
|
114
|
+
} from './oauth/google-desktop-exchange.js';
|
|
115
|
+
export { createCloudflareD1Adapter, createIamCompatIdentityAdapter } from './adapters/cloudflare-d1/index.js';
|
|
76
116
|
export {
|
|
77
117
|
createSqliteIdentityAdapter,
|
|
78
118
|
applySqliteIdentityMigrations,
|
|
119
|
+
applyPortableIdentityMigrations,
|
|
120
|
+
resolveIdentitySchemaPack,
|
|
79
121
|
} from './adapters/sqlite/index.js';
|
|
122
|
+
export { createPortableD1IdentityAdapter } from './adapters/portable-d1/index.js';
|
|
80
123
|
export { createIdentityService } from './server/identity-service.js';
|
|
81
124
|
export { handleIdentityWorkerRequest } from './server/worker-router.js';
|
|
82
125
|
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
-- AgentSam Identity — customer D1 core (portable, boring, growable)
|
|
2
2
|
-- Timestamps: INTEGER unixepoch seconds (AGENTS.md §2)
|
|
3
|
+
--
|
|
4
|
+
-- SSOT: `accounts` is the account row of record.
|
|
5
|
+
-- `auth_users` is the login principal (1:1 with accounts.id in this portable scaffold).
|
|
6
|
+
-- `account_identities` is IdP linkage only (provider + subject → accounts.id) — never the account SSOT.
|
|
7
|
+
|
|
8
|
+
CREATE TABLE IF NOT EXISTS accounts (
|
|
9
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
10
|
+
email TEXT NOT NULL COLLATE NOCASE,
|
|
11
|
+
display_name TEXT,
|
|
12
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
13
|
+
created_at INTEGER NOT NULL,
|
|
14
|
+
updated_at INTEGER NOT NULL
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_accounts_email ON accounts(email);
|
|
3
18
|
|
|
4
19
|
CREATE TABLE IF NOT EXISTS auth_users (
|
|
5
20
|
id TEXT PRIMARY KEY NOT NULL,
|
|
@@ -9,7 +24,8 @@ CREATE TABLE IF NOT EXISTS auth_users (
|
|
|
9
24
|
salt TEXT,
|
|
10
25
|
status TEXT NOT NULL DEFAULT 'active',
|
|
11
26
|
created_at INTEGER NOT NULL,
|
|
12
|
-
updated_at INTEGER NOT NULL
|
|
27
|
+
updated_at INTEGER NOT NULL,
|
|
28
|
+
FOREIGN KEY (id) REFERENCES accounts(id)
|
|
13
29
|
);
|
|
14
30
|
|
|
15
31
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_auth_users_email ON auth_users(email);
|
|
@@ -31,6 +47,7 @@ CREATE TABLE IF NOT EXISTS auth_sessions (
|
|
|
31
47
|
CREATE INDEX IF NOT EXISTS idx_auth_sessions_user_expires
|
|
32
48
|
ON auth_sessions(user_id, expires_at);
|
|
33
49
|
|
|
50
|
+
-- IdP linkage only — points at accounts (SSOT), not a substitute for accounts.
|
|
34
51
|
CREATE TABLE IF NOT EXISTS account_identities (
|
|
35
52
|
id TEXT PRIMARY KEY NOT NULL,
|
|
36
53
|
account_id TEXT NOT NULL,
|
|
@@ -39,7 +56,7 @@ CREATE TABLE IF NOT EXISTS account_identities (
|
|
|
39
56
|
email TEXT,
|
|
40
57
|
created_at INTEGER NOT NULL,
|
|
41
58
|
updated_at INTEGER NOT NULL,
|
|
42
|
-
FOREIGN KEY (account_id) REFERENCES
|
|
59
|
+
FOREIGN KEY (account_id) REFERENCES accounts(id)
|
|
43
60
|
);
|
|
44
61
|
|
|
45
62
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_account_identities_provider_subject
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- Additive upgrade: accounts as SSOT for scaffolds that already applied an older 0001.
|
|
2
|
+
-- Safe to re-run. New scaffolds get accounts from 0001_identity_core.sql directly.
|
|
3
|
+
--
|
|
4
|
+
-- account_identities remains IdP linkage only (provider + subject → accounts.id).
|
|
5
|
+
|
|
6
|
+
CREATE TABLE IF NOT EXISTS accounts (
|
|
7
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
8
|
+
email TEXT NOT NULL COLLATE NOCASE,
|
|
9
|
+
display_name TEXT,
|
|
10
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
11
|
+
created_at INTEGER NOT NULL,
|
|
12
|
+
updated_at INTEGER NOT NULL
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_accounts_email ON accounts(email);
|
|
16
|
+
|
|
17
|
+
-- Backfill from auth_users (1:1 portable scaffold).
|
|
18
|
+
INSERT OR IGNORE INTO accounts (id, email, display_name, status, created_at, updated_at)
|
|
19
|
+
SELECT id, email, display_name, COALESCE(status, 'active'), created_at, updated_at
|
|
20
|
+
FROM auth_users;
|
|
@@ -1,28 +1,31 @@
|
|
|
1
|
-
# Identity
|
|
1
|
+
# Identity migrations under `src/migrations/` — IAM-compat scaffold / history
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**This tree is NOT the portable customer D1 authority.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
| Path | Authority |
|
|
6
|
+
|---|---|
|
|
7
|
+
| `packages/identity/migrations/sqlite/` | **Portable** `identity_*` SQL SSOT (`agentsam.identity` pack) |
|
|
8
|
+
| `packages/identity/src/migrations/` | **IAM-shaped** scaffold / history (accounts, auth_users, company, …) |
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
# local
|
|
9
|
-
wrangler d1 execute <database_name> --local --file=migrations/0001_identity_core.sql
|
|
10
|
+
## When to use which
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
| Audience | Adapter | Schema |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| New customer clean D1 / local SQLite | `createSqliteIdentityAdapter` / `createPortableD1IdentityAdapter` | Portable pack via `applyPortableIdentityMigrations` |
|
|
15
|
+
| Existing InnerAnimalMedia / Local Studio hosted DB | `createIamCompatIdentityAdapter` (`createCloudflareD1Adapter` alias) | Live IAM tables — do not rename for portability |
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
## Tables
|
|
17
|
+
## IAM-shaped tables in this directory
|
|
18
18
|
|
|
19
19
|
| Table | Purpose |
|
|
20
20
|
|-------|---------|
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
| `
|
|
24
|
-
| `
|
|
25
|
-
| `
|
|
26
|
-
| `
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
| `accounts` | Account SSOT on hosted IAM |
|
|
22
|
+
| `auth_users` | Login principal |
|
|
23
|
+
| `auth_sessions` | Browser/desktop sessions |
|
|
24
|
+
| `account_identities` | IdP linkage |
|
|
25
|
+
| `oauth_states` | Historical PKCE/state (note: missing `app_id` vs portable invariant) |
|
|
26
|
+
| `password_reset_tokens` | Historical SQL reset tokens — runtime recovery uses KV/`createPasswordResetService` |
|
|
27
|
+
| `company` | Hosted branding table |
|
|
28
|
+
|
|
29
|
+
New generic scaffolds must be generated from the **portable** `agentsam.identity` pack, not by copying this tree as “portable D1.”
|
|
30
|
+
|
|
31
|
+
Preserve these files for IAM-compat fixtures and historical feature resources. Do not delete until Lane 1 parity is proven and call sites no longer need them.
|
|
@@ -3,15 +3,17 @@
|
|
|
3
3
|
| Lane | Env vars | When |
|
|
4
4
|
|------|----------|------|
|
|
5
5
|
| **IAM platform (default)** | `IAM_CLIENT_ID` + `IAM_CLIENT_SECRET` | Minted at install/build for every customer worker |
|
|
6
|
-
| Developer Google | `GOOGLE_CLIENT_ID` + `GOOGLE_CLIENT_SECRET` | Takes `/api/oauth/google/start` when set |
|
|
6
|
+
| Developer Google (web) | `GOOGLE_CLIENT_ID` + `GOOGLE_CLIENT_SECRET` | Takes `/api/oauth/google/start` when set |
|
|
7
|
+
| Google Desktop / CLI | `GOOGLE_DESKTOP_CLIENT_ID` | Public Authorization Code + PKCE with loopback redirect; no desktop secret |
|
|
7
8
|
| Developer GitHub | `GITHUB_CLIENT_ID` + `GITHUB_CLIENT_SECRET` | Takes `/api/oauth/github/start` when set |
|
|
9
|
+
| Cloudflare sign-in | `CLOUDFLARE_OAUTH_CLIENT_ID` (+ optional secret) | Takes `/api/oauth/cloudflare/start` when set |
|
|
8
10
|
|
|
9
11
|
Optional: `IAM_ORIGIN` (default `https://inneranimalmedia.com`).
|
|
10
12
|
|
|
11
13
|
## Secrets law
|
|
12
14
|
|
|
13
|
-
- `IAM_CLIENT_ID` / `GOOGLE_CLIENT_ID` / `GITHUB_CLIENT_ID` — plaintext Wrangler vars (public by OAuth design).
|
|
14
|
-
- `*_CLIENT_SECRET` — **Wrangler secrets only** — never plaintext in `wrangler.toml`.
|
|
15
|
+
- `IAM_CLIENT_ID` / `GOOGLE_CLIENT_ID` / `GOOGLE_DESKTOP_CLIENT_ID` / `GITHUB_CLIENT_ID` / `CLOUDFLARE_OAUTH_CLIENT_ID` — plaintext Wrangler vars (public by OAuth design).
|
|
16
|
+
- `*_CLIENT_SECRET` — **Wrangler secrets only** — never plaintext in `wrangler.toml`. Desktop clients normally have **no** secret.
|
|
15
17
|
|
|
16
18
|
```bash
|
|
17
19
|
npx wrangler secret put IAM_CLIENT_SECRET
|
|
@@ -24,8 +26,10 @@ These routes live in the **customer** worker (`handleIdentityWorkerRequest`):
|
|
|
24
26
|
1. `/api/oauth/inneranimalmedia/start` → redirects to IAM AS (requires minted `IAM_CLIENT_*`)
|
|
25
27
|
- Legacy alias: `/api/oauth/iam/start`
|
|
26
28
|
2. `/api/oauth/google/start` → BYOK Google if `GOOGLE_*` set, else platform lane if minted, else 503
|
|
27
|
-
3. `/api/oauth/
|
|
28
|
-
4.
|
|
29
|
+
3. `/api/oauth/google/desktop-exchange` → CLI/desktop PKCE broker (`GOOGLE_DESKTOP_CLIENT_ID`; loopback only)
|
|
30
|
+
4. `/api/oauth/github/start` → same for GitHub
|
|
31
|
+
5. `/api/oauth/cloudflare/start` → Cloudflare sign-in when `CLOUDFLARE_OAUTH_CLIENT_ID` set
|
|
32
|
+
6. Callback: `/api/oauth/inneranimalmedia/callback` (platform lane) or `/api/oauth/{google|github|cloudflare}/callback` (BYOK)
|
|
29
33
|
- Legacy alias: `/api/oauth/iam/callback`
|
|
30
34
|
|
|
31
35
|
Register platform redirect URI on the IAM client:
|
|
@@ -49,6 +53,7 @@ OIDC scopes: `openid profile email` (not a bespoke `identity:*` namespace).
|
|
|
49
53
|
## Code
|
|
50
54
|
|
|
51
55
|
- `credentials.js` — lane resolution
|
|
56
|
+
- `google-desktop-exchange.js` — desktop PKCE token broker
|
|
52
57
|
- `providers/iam/` — IAM AS client (`getIamAuthUrl`, `exchangeIamCode`, `fetchIamProfile`)
|
|
53
58
|
- `iam-platform.js` — customer-worker start/callback wiring (uses `providers/iam/`)
|
|
54
59
|
- `pkce.js` — shared PKCE helpers
|