@inneranimalmedia/agentsam-sdk 2.6.4 → 2.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTSAM.md +11 -0
- package/README.md +15 -9
- package/apps/client-cms-editor/AGENTS.md +12 -0
- package/apps/client-cms-editor/IMPORT_PROVENANCE.json +8 -0
- package/apps/client-cms-editor/README.md +72 -0
- package/apps/client-cms-editor/agentsam.app.json +57 -0
- package/apps/client-cms-editor/backend/README.md +5 -0
- package/apps/client-cms-editor/backend/package.json +22 -0
- package/apps/client-cms-editor/backend/src/api/client.ts +200 -0
- package/apps/client-cms-editor/backend/src/demo-bootstrap.ts +145 -0
- package/apps/client-cms-editor/backend/src/index.ts +6 -0
- package/apps/client-cms-editor/backend/src/model.ts +115 -0
- package/apps/client-cms-editor/backend/src/preview/bridge.ts +79 -0
- package/apps/client-cms-editor/backend/src/preview/urls.ts +55 -0
- package/apps/client-cms-editor/backend/src/routing/cms-route.js +293 -0
- package/apps/client-cms-editor/backend/src/routing/index.js +10 -0
- package/apps/client-cms-editor/backend/src/storefront.ts +52 -0
- package/apps/client-cms-editor/backend/tsconfig.json +15 -0
- package/apps/client-cms-editor/backend/worker/index.js +34 -0
- package/apps/client-cms-editor/backend/wrangler.jsonc +11 -0
- package/apps/client-cms-editor/bin/agentsam-cms.mjs +229 -0
- package/apps/client-cms-editor/frontend/index.html +12 -0
- package/apps/client-cms-editor/frontend/package.json +33 -0
- package/apps/client-cms-editor/frontend/src/AgentSamDrawer.tsx +188 -0
- package/apps/client-cms-editor/frontend/src/CmsAgentSurface.tsx +191 -0
- package/apps/client-cms-editor/frontend/src/CmsEditor.tsx +1345 -0
- package/apps/client-cms-editor/frontend/src/env.d.ts +14 -0
- package/apps/client-cms-editor/frontend/src/index.ts +8 -0
- package/apps/client-cms-editor/frontend/src/lib/content-safety.ts +63 -0
- package/apps/client-cms-editor/frontend/src/main.tsx +17 -0
- package/apps/client-cms-editor/frontend/src/mount.tsx +51 -0
- package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +214 -0
- package/apps/client-cms-editor/frontend/src/styles/cmsShell.css +1739 -0
- package/apps/client-cms-editor/frontend/src/styles/studio.css +106 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsDashboard.tsx +313 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsGuidedChatHero.tsx +121 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsHubPage.tsx +132 -0
- package/apps/client-cms-editor/frontend/src/surfaces/CmsSiteSwitcher.tsx +176 -0
- package/apps/client-cms-editor/frontend/src/surfaces/index.ts +5 -0
- package/apps/client-cms-editor/frontend/src/surfaces/types.ts +48 -0
- package/apps/client-cms-editor/frontend/tsconfig.json +25 -0
- package/apps/client-cms-editor/frontend/vite.config.ts +13 -0
- package/apps/client-cms-editor/package-lock.json +3832 -0
- package/apps/client-cms-editor/package.json +23 -0
- package/apps/client-cms-editor/reference/DONOR_README.md +52 -0
- package/apps/client-cms-editor/reference/DONOR_package-lock.json +1253 -0
- package/apps/client-cms-editor/reference/DONOR_tsconfig.json +15 -0
- package/apps/client-cms-editor/shared/cms/package.json +21 -0
- package/apps/client-cms-editor/shared/cms/src/agent-context.ts +35 -0
- package/apps/client-cms-editor/shared/cms/src/cloudflare-bindings.ts +51 -0
- package/apps/client-cms-editor/shared/cms/src/editor-types.ts +58 -0
- package/apps/client-cms-editor/shared/cms/src/index.ts +5 -0
- package/apps/client-cms-editor/shared/cms/src/publication.ts +24 -0
- package/apps/client-cms-editor/shared/cms/src/routes.ts +11 -0
- package/apps/client-cms-editor/shared/cms/tsconfig.json +12 -0
- package/bin/agentsam-rapid-rust +36 -0
- package/docs/AUTH_IDENTITY_CONTRACT.md +2 -0
- package/docs/MACHINE_INTELLIGENCE.md +120 -0
- package/docs/WINDOWS_RUNTIME_INSTALL.md +30 -0
- package/docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md +188 -0
- package/docs/architecture/AGENTSAM_RUNTIME_PROTOCOL.md +151 -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/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/package.json +73 -14
- package/packages/agentsam-brand/README.md +106 -11
- package/packages/agentsam-brand/bin/agentsam-brand.mjs +9 -0
- package/packages/agentsam-brand/package.json +39 -7
- package/packages/agentsam-brand/src/adapters/cloudflare-images.js +453 -0
- package/packages/agentsam-brand/src/adapters/cloudflare-r2.js +74 -0
- package/packages/agentsam-brand/src/adapters/d1-registry.js +26 -0
- package/packages/agentsam-brand/src/adapters/filesystem.js +59 -0
- package/packages/agentsam-brand/src/adapters/memory.js +31 -0
- package/packages/agentsam-brand/src/cli/controller.js +503 -0
- package/packages/agentsam-brand/src/cli/wizard.js +526 -0
- package/packages/agentsam-brand/src/core/capabilities.js +201 -0
- package/packages/agentsam-brand/src/core/derivatives.js +211 -0
- package/packages/agentsam-brand/src/core/errors.js +12 -0
- package/packages/agentsam-brand/src/core/ingest.js +195 -0
- package/packages/agentsam-brand/src/core/inspect.js +109 -0
- package/packages/agentsam-brand/src/core/keys.js +83 -0
- package/packages/agentsam-brand/src/core/naming.js +142 -0
- package/packages/agentsam-brand/src/core/optimize.js +316 -0
- package/packages/agentsam-brand/src/core/pack.js +305 -0
- package/packages/agentsam-brand/src/core/plan.js +276 -0
- package/packages/agentsam-brand/src/core/preview.js +159 -0
- package/packages/agentsam-brand/src/core/processors/cloudflare.js +68 -0
- package/packages/agentsam-brand/src/core/processors/contract.js +203 -0
- package/packages/agentsam-brand/src/core/processors/index.js +148 -0
- package/packages/agentsam-brand/src/core/processors/native.js +82 -0
- package/packages/agentsam-brand/src/core/processors/sharp.js +113 -0
- package/packages/agentsam-brand/src/core/processors/squoosh-binary.js +195 -0
- package/packages/agentsam-brand/src/core/promote.js +288 -0
- package/packages/agentsam-brand/src/core/receipts.js +155 -0
- package/packages/agentsam-brand/src/core/v2/compile.js +280 -0
- package/packages/agentsam-brand/src/core/v2/derivatives-semantic.js +207 -0
- package/packages/agentsam-brand/src/core/v2/ingest-graph.js +387 -0
- package/packages/agentsam-brand/src/core/v2/roles.js +180 -0
- package/packages/agentsam-brand/src/core/v2/schema.js +209 -0
- package/packages/agentsam-brand/src/core/v2/templates.js +114 -0
- package/packages/agentsam-brand/src/index.js +193 -36
- package/packages/agentsam-brand/src/presets/app-icon.json +16 -0
- package/packages/agentsam-brand/src/presets/favicon.json +17 -0
- package/packages/agentsam-brand/src/presets/hero.json +12 -0
- package/packages/agentsam-brand/src/presets/index.js +40 -0
- package/packages/agentsam-brand/src/presets/logo.json +12 -0
- package/packages/agentsam-brand/src/presets/model.json +8 -0
- package/packages/agentsam-brand/src/presets/og-image.json +10 -0
- package/packages/agentsam-brand/src/presets/product-shot.json +11 -0
- package/packages/agentsam-brand/src/presets/social-image.json +10 -0
- package/packages/agentsam-brand/src/presets/web-image.json +10 -0
- package/packages/agentsam-contracts/src/artifacts.ts +41 -0
- package/packages/agentsam-knowledge/src/autorag/index.js +1 -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 +22 -1
- package/packages/agentsam-nav/package.json +2 -2
- package/packages/agentsam-rapid-rust/Cargo.lock +344 -0
- package/packages/agentsam-rapid-rust/Cargo.toml +18 -0
- package/packages/agentsam-rapid-rust/README.md +5 -0
- package/packages/agentsam-rapid-rust/src/main.rs +718 -0
- package/packages/agentsam-rapid-rust/templates/api/Cargo.toml.tmpl +18 -0
- package/packages/agentsam-rapid-rust/templates/api/src/lib.rs.tmpl +17 -0
- package/packages/agentsam-rapid-rust/templates/common/README.md.tmpl +22 -0
- package/packages/agentsam-rapid-rust/templates/common/package.json.tmpl +12 -0
- package/packages/agentsam-rapid-rust/templates/common/wrangler.toml.tmpl +6 -0
- package/packages/agentsam-rapid-rust/templates/crypto-auth/Cargo.toml.tmpl +21 -0
- package/packages/agentsam-rapid-rust/templates/crypto-auth/src/lib.rs.tmpl +32 -0
- package/packages/agentsam-rapid-rust/templates/data-processor/Cargo.toml.tmpl +18 -0
- package/packages/agentsam-rapid-rust/templates/data-processor/src/lib.rs.tmpl +41 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/Cargo.toml.tmpl +9 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/core/Cargo.toml.tmpl +7 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/core/src/lib.rs.tmpl +23 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/worker/Cargo.toml.tmpl +12 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/worker/src/lib.rs.tmpl +16 -0
- package/packages/agentsam-rapid-rust/templates/shared-core/wrangler.toml.tmpl +6 -0
- package/packages/agentsam-repository/src/index.js +1 -0
- package/packages/agentsam-repository/src/merkle/semantic.js +3 -10
- package/packages/agentsam-repository/src/source-types.js +85 -0
- package/packages/agentsam-vault/README.md +96 -0
- package/packages/agentsam-vault/package.json +32 -0
- package/packages/agentsam-vault/src/contracts/credential.d.ts +78 -0
- package/packages/agentsam-vault/src/contracts/credential.js +132 -0
- package/packages/agentsam-vault/src/crypto/aes-gcm.d.ts +30 -0
- package/packages/agentsam-vault/src/crypto/aes-gcm.js +107 -0
- package/packages/agentsam-vault/src/crypto/oauth-envelope.js +150 -0
- package/packages/agentsam-vault/src/index.d.ts +9 -0
- package/packages/agentsam-vault/src/index.js +27 -0
- package/packages/agentsam-vault/src/providers/registry.js +90 -0
- package/packages/agentsam-vault/src/runtime/resolver.js +77 -0
- package/packages/agentsam-workbench/README.md +24 -0
- package/packages/agentsam-workbench/package.json +38 -0
- package/packages/agentsam-workbench/src/agent/AgentPanel.tsx +41 -0
- package/packages/agentsam-workbench/src/agent/ArtifactCard.tsx +9 -0
- package/packages/agentsam-workbench/src/agent/Composer.tsx +102 -0
- package/packages/agentsam-workbench/src/agent/ConnectedAgentPanel.tsx +194 -0
- package/packages/agentsam-workbench/src/agent/ContextualComposer.tsx +788 -0
- package/packages/agentsam-workbench/src/agent/GoalStatusStrip.tsx +38 -0
- package/packages/agentsam-workbench/src/agent/MiniAgentSam.tsx +86 -0
- package/packages/agentsam-workbench/src/agent/ModelSelect.tsx +19 -0
- package/packages/agentsam-workbench/src/agent/Thread.tsx +56 -0
- package/packages/agentsam-workbench/src/agent/ToolReceipt.tsx +11 -0
- package/packages/agentsam-workbench/src/agent/contextual-composer.css +611 -0
- package/packages/agentsam-workbench/src/agent/index.ts +10 -0
- package/packages/agentsam-workbench/src/agent/mini-agentsam.css +12 -0
- package/packages/agentsam-workbench/src/browser/BrowserFrame.tsx +37 -0
- package/packages/agentsam-workbench/src/browser/index.ts +1 -0
- package/packages/agentsam-workbench/src/index.ts +6 -0
- package/packages/agentsam-workbench/src/project-control.css +160 -0
- package/packages/agentsam-workbench/src/projects/ProjectsSurface.tsx +131 -0
- package/packages/agentsam-workbench/src/projects/index.ts +1 -0
- package/packages/agentsam-workbench/src/shell/Breadcrumb.tsx +35 -0
- package/packages/agentsam-workbench/src/shell/ResizableStage.tsx +99 -0
- package/packages/agentsam-workbench/src/shell/SidePanel.tsx +5 -0
- package/packages/agentsam-workbench/src/shell/index.ts +4 -0
- package/packages/agentsam-workbench/src/shell/surfaceRegistry.ts +29 -0
- package/packages/agentsam-workbench/src/terminal/TerminalSurface.tsx +5 -0
- package/packages/agentsam-workbench/src/terminal/index.ts +1 -0
- package/packages/agentsam-workbench/src/timeline/GanttBoard.tsx +258 -0
- package/packages/agentsam-workbench/src/timeline/index.ts +1 -0
- package/packages/agentsam-workbench/tsconfig.json +13 -0
- package/packages/connectors/cloudflare/OAUTH_STORAGE_AUDIT.md +53 -0
- package/packages/connectors/cloudflare/package.json +3 -1
- package/packages/connectors/cloudflare/src/api-client.js +279 -0
- package/packages/connectors/cloudflare/src/capabilities.js +585 -0
- package/packages/connectors/cloudflare/src/credential.js +318 -0
- package/packages/connectors/cloudflare/src/families/brand-protection.js +123 -0
- package/packages/connectors/cloudflare/src/families/keyless.js +114 -0
- package/packages/connectors/cloudflare/src/families/pages.js +151 -0
- package/packages/connectors/cloudflare/src/families/scanner.js +123 -0
- package/packages/connectors/cloudflare/src/families/snippets.js +207 -0
- package/packages/connectors/cloudflare/src/families/tag-gateway.js +46 -0
- package/packages/connectors/cloudflare/src/families/tags.js +124 -0
- package/packages/connectors/cloudflare/src/families/token-validation.js +95 -0
- package/packages/connectors/cloudflare/src/families/workflows.js +156 -0
- package/packages/connectors/cloudflare/src/index.js +102 -265
- package/packages/connectors/cloudflare/src/oauth-persist.js +336 -0
- package/packages/connectors/cloudflare/src/owner.js +42 -12
- package/packages/connectors/cloudflare/src/permission-options.js +1064 -0
- package/packages/connectors/cloudflare/src/routes.js +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/identity/.agentsam/features/oauth-login-portal/providers.json +22 -2
- package/packages/identity/.agentsam/features/oauth-login-portal/resources.json +10 -4
- package/packages/identity/.agentsam/features/oauth-login-portal/routes.json +20 -0
- package/packages/identity/README.md +1 -1
- package/packages/identity/backend/README.md +1 -1
- package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +3 -2
- package/packages/identity/migrations/sqlite/004_identity_oauth_consent_catalog.sql +48 -0
- package/packages/identity/package.json +4 -3
- package/packages/identity/scripts/local-identity-bridge.mjs +184 -0
- package/packages/identity/scripts/preview-auth-portal.mjs +7 -7
- package/packages/identity/src/adapters/cloudflare-d1/index.js +31 -2
- package/packages/identity/src/adapters/sqlite/index.js +4 -1
- package/packages/identity/src/contracts/auth-config.js +28 -8
- package/packages/identity/src/contracts/external-identity.js +1 -1
- package/packages/identity/src/contracts/provider.js +1 -0
- package/packages/identity/src/frontend/auth-portal/README.md +2 -1
- package/packages/identity/src/frontend/auth-portal/pages/login.html +6 -5
- 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 +207 -0
- package/packages/identity/src/index.js +16 -0
- package/packages/identity/src/migrations/0001_identity_core.sql +19 -2
- package/packages/identity/src/migrations/0003_accounts_ssot.sql +20 -0
- package/packages/identity/src/migrations/README.md +5 -2
- package/packages/identity/src/oauth/README.md +10 -5
- package/packages/identity/src/oauth/consent-view.js +388 -0
- package/packages/identity/src/oauth/credentials.js +31 -11
- package/packages/identity/src/oauth/google-desktop-exchange.js +173 -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/iam/index.js +27 -5
- package/packages/identity/src/server/identity-service.js +31 -2
- package/packages/identity/src/server/worker-router.js +111 -81
- package/packages/identity/tests/auth-config.test.mjs +3 -2
- package/packages/identity/tests/identity-init-scaffold.test.mjs +3 -0
- package/packages/identity/tests/identity-service.test.mjs +16 -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 +17 -4
- package/packages/identity/tests/oauth-presets-accounts-ssot.test.mjs +58 -0
- package/packages/identity/tests/preview-auth-portal.test.mjs +3 -3
- package/packages/runtime-protocol/src/index.js +154 -0
- package/packages/theme-scenes/README.md +164 -0
- package/packages/theme-scenes/package.json +53 -0
- package/packages/theme-scenes/src/blocks/index.js +30 -0
- package/packages/theme-scenes/src/contracts/index.js +286 -0
- package/packages/theme-scenes/src/demos/index.js +65 -0
- package/packages/theme-scenes/src/index.js +75 -0
- package/packages/theme-scenes/src/presets/index.js +263 -0
- package/packages/theme-scenes/src/runtime/compile.js +119 -0
- package/packages/theme-scenes/src/scenes/index.js +146 -0
- package/packages/theme-scenes/src/shell/index.js +47 -0
- package/packages/theme-scenes/src/themes/index.js +129 -0
- package/packages/theme-scenes/src/visuals/index.js +41 -0
- package/packages/theme-scenes/test/theme-scenes.test.mjs +179 -0
- package/packages/work-graph/src/index.js +34 -1
- package/packages/work-graph/src/renderers/gantt-model.js +24 -0
- package/packages/work-graph/test/work-graph.test.mjs +27 -7
- package/protocol/README.md +15 -7
- package/protocol/apps/agentsam.app.v1.schema.json +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/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/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/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 +8 -0
- package/src/cli.js +182 -26
- package/src/commands/account-auth.js +94 -8
- package/src/commands/app.js +307 -3
- package/src/commands/billing.js +127 -0
- package/src/commands/brand.js +74 -60
- package/src/commands/cheat-sheet.js +154 -0
- package/src/commands/cloudflare-login.js +222 -0
- package/src/commands/cloudflare.js +453 -23
- package/src/commands/codebaseindex.js +6 -1
- 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/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/setup.js +279 -0
- package/src/commands/shell.js +16 -3
- package/src/commands/start-local.js +2 -2
- 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 +1 -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/source.js +3 -3
- package/src/lib/account-session.js +11 -4
- package/src/lib/app-authority.js +172 -0
- package/src/lib/auth.js +94 -21
- package/src/lib/core-client.js +5 -6
- package/src/lib/credentials-audit.js +451 -0
- package/src/lib/deploy/health.js +24 -6
- package/src/lib/detect-context.js +7 -1
- package/src/lib/google-cloud-connection.js +270 -0
- package/src/lib/google-cloud-inventory.js +385 -0
- package/src/lib/google-desktop-oauth.js +372 -0
- package/src/lib/google-studio-brokered-oauth.js +158 -0
- package/src/lib/identity-scaffold.js +24 -6
- package/src/lib/init-options.js +192 -0
- package/src/lib/local-scaffold.js +48 -16
- package/src/lib/provider-command-remediation.js +308 -0
- package/src/lib/provider-credentials.js +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/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/scan.js +1 -1
- package/test/account-session.test.mjs +3 -3
- package/test/app-authority-context.test.mjs +32 -0
- package/test/cli/codebaseindex-plan-ux.test.mjs +1 -1
- 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/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/cad-project.test.mjs +4 -1
- package/test/integration/cms-app-scaffold.test.mjs +71 -0
- package/test/integration/cms-site-tenancy-contract.test.mjs +3 -2
- package/test/integration/codebaseindex-ingest.test.mjs +48 -0
- package/test/integration/features-resolve.test.mjs +30 -11
- package/test/integration/inspect-path-cli.test.mjs +46 -0
- package/test/integration/inventory-evidence.test.mjs +125 -0
- package/test/integration/runtime-status.integration.test.mjs +2 -1
- package/test/knowledge.test.mjs +35 -1
- package/test/loopback-oauth.test.mjs +53 -0
- package/test/ollama.test.mjs +22 -0
- package/test/security.test.mjs +23 -0
- package/test/setup-planner.test.mjs +74 -0
- package/test/setup-runtime.test.mjs +51 -0
- package/test/terminal/local-pty.mock.test.mjs +3 -1
- package/test/terminal-machine-identity.test.mjs +88 -0
- package/test/whoami-resume.test.mjs +27 -6
- package/packages/agentsam-brand/test/brand-scan.test.mjs +0 -106
- package/packages/work-graph/prototype/README.md +0 -32
- package/packages/work-graph/prototype/data/demo-workgraph.js +0 -47
- package/packages/work-graph/prototype/renderers/timeline-model.js +0 -21
- package/packages/work-graph/prototype/renderers/workgraph-runtime.js +0 -38
- package/packages/work-graph/prototype-gnantt.html +0 -655
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Environment vocabulary
|
|
2
|
+
|
|
3
|
+
**Authority:** `agentsam-sdk`
|
|
4
|
+
**Companion:** [`docs/AUTH_IDENTITY_CONTRACT.md`](../AUTH_IDENTITY_CONTRACT.md) · `packages/identity/src/contracts/auth-config.js`
|
|
5
|
+
**Rule:** names and classification only. Never log or document secret values. Do not remove aliases until call-site audit clears them.
|
|
6
|
+
|
|
7
|
+
This document is the law for env naming across AgentSam CLI, Local Studio, Identity, and Vault. It exists so sessions stop inventing tribal aliases.
|
|
8
|
+
|
|
9
|
+
**Portable Local Studio rule:** the packaged UI is portable, while storage authority is installation policy. Official connected AgentSam builds use the configured identity service/main DB for account truth, local SQLite for device state, and the OS secure store for credentials. `IAM_*` variables are optional remote-adapter/deployment configuration and must never turn a company host into intrinsic APP identity. Explicit standalone products may choose the SQLite identity adapter.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Three lanes (do not flatten)
|
|
14
|
+
|
|
15
|
+
| Lane | Variables | Who it authenticates | Used by |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| **Account / platform** | `AGENTSAM_API_KEY` | The human (or delegated account) using AgentSam | CLI, SDK, Local Studio user work |
|
|
18
|
+
| **Machine / bridge** | `AGENTSAM_BRIDGE_KEY` | A worker, VM, ExecOS front-door, or CI host talking to AgentSam infrastructure | Workers, iam-tunnel agents, CAD/build services |
|
|
19
|
+
| **OAuth app (Identity)** | `IAM_CLIENT_ID`, `IAM_CLIENT_SECRET`, `IAM_OAUTH_ISSUER` (+ compat `IAM_ORIGIN`) | An installation as a client of an explicitly configured remote identity authority | Hosted/customer Worker or other remote-identity adapter; **not required by portable Local Studio desktop** |
|
|
20
|
+
|
|
21
|
+
Provider API keys (`OPENAI_*`, `CLOUDFLARE_API_TOKEN`, …) are a **fourth** lane: external vendor credentials managed by vault/Connections — never aliases of the three lanes above.
|
|
22
|
+
|
|
23
|
+
### Customer mental model
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
User 123 is accredited by Inner Animal Media (company/platform Identity)
|
|
27
|
+
↓
|
|
28
|
+
On User 123's machine:
|
|
29
|
+
source ~/.agentsam/load-agent-env.sh
|
|
30
|
+
→ eval "$(agentsam env shell --profile default)"
|
|
31
|
+
→ loads THEIR AGENTSAM_API_KEY + IAM_CLIENT_ID + IAM_OAUTH_ISSUER
|
|
32
|
+
from THEIR keychain/vault (never another user's home)
|
|
33
|
+
↓
|
|
34
|
+
User 123 runs `agentsam terminal enroll … --pair`
|
|
35
|
+
→ AGENTSAM_BRIDGE_KEY written for ONE terminal_connection
|
|
36
|
+
into ~/.execos/profiles/<instance_id>.env on THAT machine
|
|
37
|
+
↓
|
|
38
|
+
User 123 connects Cloudflare / GitHub / GCP / models as Provider Connections
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`AGENTSAM_API_KEY` = “what can *this account* do on AgentSam.”
|
|
42
|
+
`AGENTSAM_BRIDGE_KEY` = “what can *this enrolled machine connection* prove to ExecOS/IAM” (one `terminal_connection`; `IAM_CONNECTION_KEY` retired).
|
|
43
|
+
`IAM_CLIENT_ID` + `IAM_OAUTH_ISSUER` = platform Identity wiring so User 123’s CLI/app can talk to our issuer (plus `IAM_CLIENT_SECRET` only on server/workers).
|
|
44
|
+
|
|
45
|
+
#### `load-agent-env.sh` vs `env.d/inneranimalmedia.env`
|
|
46
|
+
|
|
47
|
+
| Path | Role |
|
|
48
|
+
| --- | --- |
|
|
49
|
+
| `source ~/.agentsam/load-agent-env.sh` | **Canonical customer path.** Resolves `--profile default` from that user’s keychain/vault. This is where account accreditation belongs. |
|
|
50
|
+
| `~/.agentsam/env.d/inneranimalmedia.env` | **Per-machine compat file** written by `agentsam env init/export` under **that user’s** `$HOME`. Not a shared template of anyone else’s secrets. User 123 never receives Sam’s `env.d` file — they get their own after *their* `api-key create` / `env init`. |
|
|
51
|
+
|
|
52
|
+
Do not copy another operator’s `~/.agentsam/env.d/*.env` between machines. Mint or export on the destination account.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## AgentSam keys vs Google Cloud service-account keys
|
|
57
|
+
|
|
58
|
+
These are **parallel authority systems**. Do not rename Google `KEY_ORIGIN` fields in place.
|
|
59
|
+
|
|
60
|
+
| Concept | Issuer | Lives in | Authenticates | Google `KEY_ORIGIN` analogy (AgentSam overlay only) |
|
|
61
|
+
| --- | --- | --- | --- | --- |
|
|
62
|
+
| `AGENTSAM_API_KEY` (`aak_*`) | Inner Animal Media / AgentSam | vault / keychain | Human/account on AgentSam platform | `USER_MANAGED` + `INNERANIMALMEDIA_PROVIDED` |
|
|
63
|
+
| `AGENTSAM_BRIDGE_KEY` | Inner Animal Media (machine mint) | Worker secret / vault | Machine↔ExecOS/Worker to AgentSam APIs | `SYSTEM_MANAGED` + `INNERANIMALMEDIA_PROVIDED` |
|
|
64
|
+
| Google user ADC / `gcloud auth` | Google user OAuth | gcloud / ADC | Human operating GCP | n/a (user session, not SA key) |
|
|
65
|
+
| GCP SA `SYSTEM_MANAGED` key | Google | Google IAM | Google runtime for that SA | stays `GOOGLE_PROVIDED` |
|
|
66
|
+
| GCP SA `USER_MANAGED` JSON key | Google (operator-downloaded) | whoever stored the JSON | That SA via private key file | stays `GOOGLE_PROVIDED` — prefer delete/rotate |
|
|
67
|
+
|
|
68
|
+
**Product UI may show a unified inventory table** with an AgentSam overlay column (`agentsam_origin_label`).
|
|
69
|
+
**Google’s API metadata must remain truthful** (`GOOGLE_PROVIDED`). We never claim Google minted an InnerAnimalMedia key.
|
|
70
|
+
|
|
71
|
+
How Local Studio Connections compose:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
Local Studio
|
|
75
|
+
├── Identity login → IAM_CLIENT_* + browser session
|
|
76
|
+
├── Account API → AGENTSAM_API_KEY
|
|
77
|
+
├── This Mac / ExecOS → AGENTSAM_BRIDGE_KEY (+ local device provider)
|
|
78
|
+
└── Google Cloud connection → user's Google OAuth + discovered projects/VMs/SAs/billing
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
`agentsam google-cloud iam service-accounts list` discovers **customer GCP** workload identities.
|
|
82
|
+
It does **not** mint `AGENTSAM_*` keys into Google IAM.
|
|
83
|
+
|
|
84
|
+
See also: [`docs/contracts/google-cloud-oauth-setup.md`](./google-cloud-oauth-setup.md) for Path A (`agentsam gcloud auth login`) vs Path B (hosted `agentsam.inneranimalmedia.com` Google OAuth).
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Classification legend
|
|
89
|
+
|
|
90
|
+
| Class | Meaning |
|
|
91
|
+
| --- | --- |
|
|
92
|
+
| `canonical` | Prefer in new code |
|
|
93
|
+
| `compatibility_alias` | Keep until zero call sites |
|
|
94
|
+
| `provider_native` | Owned by external CLI/SDK |
|
|
95
|
+
| `application_config` | Non-secret wiring |
|
|
96
|
+
| `user_credential` | Human/account delegated secret |
|
|
97
|
+
| `machine_credential` | Host/integration secret |
|
|
98
|
+
| `server_secret` | Worker/server only — never browser |
|
|
99
|
+
| `browser_safe` | Public by OAuth design |
|
|
100
|
+
| `deprecated` | Stop using |
|
|
101
|
+
| `unknown` | Needs owner decision |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Normalization table
|
|
106
|
+
|
|
107
|
+
| current name | canonical name | owner | secret? | class | migration |
|
|
108
|
+
| --- | --- | --- | --- | --- | --- |
|
|
109
|
+
| `AGENTSAM_API_KEY` | same | AgentSam account | yes | user_credential / canonical | vault + keychain via `agentsam env` |
|
|
110
|
+
| `IAM_API_KEY` | `AGENTSAM_API_KEY` | legacy | yes | compatibility_alias | rewrite call sites |
|
|
111
|
+
| `AGENTSAM_SDK_TOKEN` / `AGENTSAM_SDK_KEY` | `AGENTSAM_API_KEY` | retired docs | yes | deprecated | docs scrub only |
|
|
112
|
+
| `AGENTSAM_BRIDGE_KEY` | same | ExecOS / Worker bridge | yes | machine_credential / canonical | never alias to API key |
|
|
113
|
+
| `EXECOS_KEY` | `AGENTSAM_BRIDGE_KEY` | IAM worker envs | yes | compatibility_alias | dual-read then single |
|
|
114
|
+
| `IAM_OAUTH_ISSUER` | same | Identity protocol | no | application_config / canonical | preferred issuer |
|
|
115
|
+
| `IAM_ORIGIN` | `IAM_OAUTH_ISSUER` | Identity | no | compatibility_alias | fallback only |
|
|
116
|
+
| `IAM_CLIENT_ID` | same | Identity OAuth client | no* | browser_safe | minted at install/build |
|
|
117
|
+
| `IAM_CLIENT_SECRET` | same | Identity OAuth client | yes | server_secret | wrangler secret / vault |
|
|
118
|
+
| `CLOUDFLARE_API_TOKEN` | same | Cloudflare | yes | user/machine credential | product: OAuth Connection first |
|
|
119
|
+
| `CLOUDFLARE_ACCOUNT_ID` | same | Cloudflare | no | application_config | discover via whoami when possible |
|
|
120
|
+
| `CLOUDFLARE_OAUTH_CLIENT_ID` | same | Identity CF login | no* | browser_safe | Connections + login |
|
|
121
|
+
| `CLOUDFLARE_OAUTH_CLIENT_SECRET` | same | Identity CF login | yes | server_secret | optional for PKCE-only |
|
|
122
|
+
| `GITHUB_TOKEN` / `GH_TOKEN` | prefer `gh` keyring / GitHub App | GitHub | yes | provider_native | unset stale shell tokens |
|
|
123
|
+
| `GITHUB_CLIENT_ID` / `SECRET` | same | Identity login | mixed | OAuth app | BYOK login lane |
|
|
124
|
+
| `GOOGLE_CLIENT_ID` / `SECRET` | same | Identity login | mixed | OAuth app | BYOK login lane |
|
|
125
|
+
| `GEMINI_API_KEY` | same | Google AI | yes | user_credential | vault |
|
|
126
|
+
| `GOOGLE_API_KEY` / `GOOGLE_AI_API_KEY` / `GOOGLE_KEY` | `GEMINI_API_KEY` | drift | yes | compatibility_alias | dual-read in resolver |
|
|
127
|
+
| `OPENAI_API_KEY` | same | OpenAI | yes | user_credential | vault |
|
|
128
|
+
| `ANTHROPIC_API_KEY` | same | Anthropic | yes | user_credential | vault |
|
|
129
|
+
| `CURSOR_API_KEY` | same | Cursor | yes | user_credential | vault |
|
|
130
|
+
| `XAI_API_KEY` | same | xAI | yes | user_credential | optional |
|
|
131
|
+
| `GCP_PROJECT_ID` / `GCP_ZONE` / `GCP_VM_NAME` | same | ops / Connections | no | application_config | prefer discovery over hardcode |
|
|
132
|
+
|
|
133
|
+
\*OAuth client IDs are public-by-design; still do not log them next to secrets.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Storage expectations
|
|
138
|
+
|
|
139
|
+
| Credential | Expected storage |
|
|
140
|
+
| --- | --- |
|
|
141
|
+
| `AGENTSAM_API_KEY` | That user’s macOS Keychain / vault via `agentsam api-key create --store keychain --activate`; loaded by `source ~/.agentsam/load-agent-env.sh` |
|
|
142
|
+
| `IAM_CLIENT_ID` / `IAM_OAUTH_ISSUER` | Same account profile (`--profile default` / InnerAnimalMedia provider) — platform accreditation, not shared across users |
|
|
143
|
+
| `AGENTSAM_BRIDGE_KEY` | That machine’s `~/.execos/profiles/<instance_id>.env` via `agentsam terminal enroll … --pair` |
|
|
144
|
+
| Provider API keys | Encrypted vault + OS keychain (`agentsam providers` / `agentsam env`) |
|
|
145
|
+
| OAuth client secrets | Wrangler secrets / vault — never frontend bundles |
|
|
146
|
+
| `gcloud` user session | gcloud ADC (outside AgentSam until GCP Connection ships) |
|
|
147
|
+
| `gh` | macOS keyring (`gh auth`) |
|
|
148
|
+
| Compat plaintext | `~/.agentsam/env.d/*.env` only via `agentsam env export` — opt-in per-user fallback under **their** home |
|
|
149
|
+
|
|
150
|
+
### macOS Keychain prompt
|
|
151
|
+
|
|
152
|
+
AgentSam uses the **macOS Keychain** (Keychain Access / Security framework), not a separate “keychainos.” When a credential is stored with `--store keychain`, later reads may prompt for your Mac login password or Touch ID depending on the item’s ACL.
|
|
153
|
+
|
|
154
|
+
Useful flows:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
agentsam api-key create --name "$(hostname)" --store keychain --activate
|
|
158
|
+
agentsam providers # interactive vault/keychain setup
|
|
159
|
+
eval "$(agentsam env shell --profile default)"
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
If nothing prompts, the item may already be unlocked for this login session, or the value is still coming from process environment (ambient `export`). Prefer keychain/vault over shell exports for the customer path.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Failure → next-step protocol (product law)
|
|
167
|
+
|
|
168
|
+
When auth/capability fails, AgentSam must not stop at “denied.” Mirror gcloud’s deterministic help:
|
|
169
|
+
|
|
170
|
+
1. **What failed** (provider, operation, reason code)
|
|
171
|
+
2. **What is configured** (names only — never values)
|
|
172
|
+
3. **Exact next command** (`agentsam login`, `agentsam providers`, `gcloud auth login`, …)
|
|
173
|
+
4. **Optional browser path** — “Press Enter to open …” for OAuth/consent/scopes
|
|
174
|
+
5. **Cheatsheet link** — `agentsam cheat-sheet` / docs URL
|
|
175
|
+
|
|
176
|
+
Target CLI surface (proposal):
|
|
177
|
+
|
|
178
|
+
```text
|
|
179
|
+
agentsam top-level groups (gcloud-like)
|
|
180
|
+
agentsam cheat-sheet common flows
|
|
181
|
+
agentsam credentials audit [--json --names-only --verify --drift]
|
|
182
|
+
agentsam connections provider connections (CF / GH / GCP / local)
|
|
183
|
+
agentsam compute GCP/VM helpers (wrap gcloud safely)
|
|
184
|
+
agentsam billing cost/billing discovery (not --billing-project)
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
`--billing-project` on gcloud is **API quota/billing attribution for that CLI call**, not a cost dashboard. Cost monitoring is `gcloud billing` / Cloud Console Billing — AgentSam should wrap *that*, not overclaim `--billing-project`.
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Related audits
|
|
192
|
+
|
|
193
|
+
Local machine audits (not committed; may contain fingerprint metadata):
|
|
194
|
+
|
|
195
|
+
- `~/.agentsam/audits/AUTH-ENV-AUDIT-2026-09-25.md`
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# Google Cloud OAuth setup for AgentSam
|
|
2
|
+
|
|
3
|
+
Two different Google login paths. Do not conflate them.
|
|
4
|
+
|
|
5
|
+
## Path A — CLI operator auth
|
|
6
|
+
|
|
7
|
+
### Default: Agent Sam hosted Google (`agentsam gcloud auth login`)
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
agentsam gcloud auth login
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
**Desktop PKCE (`--desktop`):** loopback using `GOOGLE_DESKTOP_CLIENT_ID` (Console type
|
|
14
|
+
**Desktop app**, no secret). Some Google Auth Platform Desktop clients still return
|
|
15
|
+
`client_secret is missing` on token exchange even though Console shows Type=Desktop —
|
|
16
|
+
that is a Google classification quirk, not something AgentSam can invent a secret for.
|
|
17
|
+
|
|
18
|
+
**Default CLI path (recommended):** Studio Web OAuth broker — uses `GOOGLE_CLIENT_ID` +
|
|
19
|
+
Worker `GOOGLE_CLIENT_SECRET`, then hands tokens to the CLI over loopback.
|
|
20
|
+
|
|
21
|
+
Uses the **same** Authorized redirect URI as Studio login (no extra Console URI):
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
https://agentsam.inneranimalmedia.com/api/oauth/google/callback
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
CLI broker states are prefixed `cli_` so the Worker can share that path with identity login.
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
agentsam gcloud auth login # Studio Web broker (default)
|
|
31
|
+
agentsam gcloud auth login --desktop # native Desktop PKCE
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Hosted identity (`agentsam gcloud auth login --web`)
|
|
35
|
+
|
|
36
|
+
Shows the live start URL and waits for **Enter** to open the system browser:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
https://agentsam.inneranimalmedia.com/api/oauth/google/start
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Consent branding: **Continue to Agent Sam** (your `GOOGLE_CLIENT_ID`).
|
|
43
|
+
|
|
44
|
+
| Piece | Value |
|
|
45
|
+
| --- | --- |
|
|
46
|
+
| Consent UI | Your OAuth app name (Agent Sam / Local Studio) |
|
|
47
|
+
| OAuth client | Your Web client (`GOOGLE_CLIENT_ID` + Worker `GOOGLE_CLIENT_SECRET`) |
|
|
48
|
+
| Redirect | `https://agentsam.inneranimalmedia.com/api/oauth/google/callback` |
|
|
49
|
+
|
|
50
|
+
### Optional: Google Cloud SDK (`agentsam gcloud auth login --sdk`)
|
|
51
|
+
|
|
52
|
+
Wraps native **Google Cloud SDK** OAuth when you need ADC / `gcloud` CLI identity on the machine:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
agentsam gcloud auth login --sdk
|
|
56
|
+
# same engine as:
|
|
57
|
+
gcloud auth login
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
| Piece | Value |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| Consent UI | Google’s “Google Cloud SDK wants to access your Google Account” |
|
|
63
|
+
| OAuth client | Google’s public SDK client (`*.apps.googleusercontent.com`) |
|
|
64
|
+
| Redirect | `http://localhost:8085/` (Google-controlled — **not** AgentSam) |
|
|
65
|
+
| Stores | gcloud user credentials / ADC on the machine |
|
|
66
|
+
|
|
67
|
+
**You do not create a Client ID for the `--sdk` path.** Installing `gcloud` is enough.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Path B — AgentSam-hosted Google connection (web / Local Studio)
|
|
72
|
+
|
|
73
|
+
For **Identity login** and **provider Connections** in Local Studio / AgentSam web, use an OAuth client **you** own, with HTTPS redirects on the **AgentSam** host.
|
|
74
|
+
|
|
75
|
+
### Primary redirect (AgentSam)
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
https://agentsam.inneranimalmedia.com/api/oauth/google/callback
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Start / authorize:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
https://agentsam.inneranimalmedia.com/api/oauth/google/start
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Secondary (InnerAnimalMedia dashboard only)
|
|
88
|
+
|
|
89
|
+
`https://inneranimalmedia.com/api/oauth/google/callback` is the **IAM worker/app** Google login — not AgentSam Local Studio. Register it only if the dashboard product still needs Google Connect there. Do **not** point AgentSam Connections at the IAM callback.
|
|
90
|
+
|
|
91
|
+
| Product surface | Callback |
|
|
92
|
+
| --- | --- |
|
|
93
|
+
| AgentSam / Local Studio | `https://agentsam.inneranimalmedia.com/api/oauth/google/callback` |
|
|
94
|
+
| InnerAnimalMedia dashboard | `https://inneranimalmedia.com/api/oauth/google/callback` |
|
|
95
|
+
| AgentSam CLI (`agentsam login`) | Loopback `http://127.0.0.1:<port>/callback` (RFC 8252) |
|
|
96
|
+
| `agentsam gcloud auth login` | Google SDK `http://localhost:8085/` (Path A) |
|
|
97
|
+
|
|
98
|
+
Loopback remains correct for **native AgentSam CLI** login when the shell
|
|
99
|
+
has the same OAuth client the Worker uses (`IAM_CLIENT_ID=iam_agentsam_sdk_web`
|
|
100
|
+
on Local Studio Production) — RFC 8252 PKCE. Do not invent alternate client ids.
|
|
101
|
+
Hosted HTTPS redirects are for browser apps and Local Studio.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Setup checklist (Path B — your Google Cloud Console)
|
|
106
|
+
|
|
107
|
+
Project: prefer `gen-lang-client-0684066529` (InnerAnimalMedia) once billing ownership is clear.
|
|
108
|
+
|
|
109
|
+
### 1. Enable APIs
|
|
110
|
+
|
|
111
|
+
APIs & Services → Enable APIs:
|
|
112
|
+
|
|
113
|
+
- Cloud Resource Manager API
|
|
114
|
+
- IAM API
|
|
115
|
+
- Compute Engine API
|
|
116
|
+
- (optional) Vertex AI, BigQuery, Cloud Billing API — as needed for Connections discovery
|
|
117
|
+
|
|
118
|
+
### 2. Configure OAuth consent screen
|
|
119
|
+
|
|
120
|
+
APIs & Services → OAuth consent screen:
|
|
121
|
+
|
|
122
|
+
- User type: **External** (or Internal if Workspace-only)
|
|
123
|
+
- App name: `Agent Sam`
|
|
124
|
+
- Support email / developer contact: your IAM email
|
|
125
|
+
- Scopes (start minimal for login; expand for Cloud Connections):
|
|
126
|
+
- `openid`
|
|
127
|
+
- `email`
|
|
128
|
+
- `profile`
|
|
129
|
+
- For Cloud resource discovery later: add Cloud Platform scopes only when Connections needs them (`https://www.googleapis.com/auth/cloud-platform` is powerful — prefer incremental scopes)
|
|
130
|
+
|
|
131
|
+
Publishing status: **Testing** while iterating; add test users (you, Connor).
|
|
132
|
+
|
|
133
|
+
### 3. Create OAuth client
|
|
134
|
+
|
|
135
|
+
APIs & Services → Credentials → Create credentials → **OAuth client ID**:
|
|
136
|
+
|
|
137
|
+
- Application type: **Web application**
|
|
138
|
+
- Name: `Agent Sam Local Studio / Identity`
|
|
139
|
+
- Authorized JavaScript origins (if needed):
|
|
140
|
+
- `https://agentsam.inneranimalmedia.com`
|
|
141
|
+
- `https://inneranimalmedia.com` (only if IAM dashboard shares the client)
|
|
142
|
+
- Authorized redirect URIs (AgentSam-first):
|
|
143
|
+
- `https://agentsam.inneranimalmedia.com/api/oauth/google/callback` ← **required for AgentSam**
|
|
144
|
+
- `https://inneranimalmedia.com/api/oauth/google/callback` ← optional IAM dashboard only
|
|
145
|
+
|
|
146
|
+
Copy:
|
|
147
|
+
|
|
148
|
+
- Client ID → `GOOGLE_CLIENT_ID`
|
|
149
|
+
- Client secret → `GOOGLE_CLIENT_SECRET` (Wrangler **secret**, never frontend)
|
|
150
|
+
|
|
151
|
+
### 4. Install on AgentSam hosts
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# example — production worker secrets
|
|
155
|
+
npx wrangler secret put GOOGLE_CLIENT_SECRET
|
|
156
|
+
# GOOGLE_CLIENT_ID may already be a plain var in wrangler.jsonc
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Local Studio / SDK `.env` (server only):
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
GOOGLE_CLIENT_ID=....apps.googleusercontent.com
|
|
163
|
+
GOOGLE_CLIENT_SECRET=... # server-only
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### 5. Prove it
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Operator CLI (Path A) — Google Cloud SDK consent
|
|
170
|
+
agentsam gcloud auth login
|
|
171
|
+
agentsam google-cloud doctor
|
|
172
|
+
|
|
173
|
+
# Hosted Identity (Path B) — browser
|
|
174
|
+
open "https://agentsam.inneranimalmedia.com/api/oauth/google/start"
|
|
175
|
+
# or Local Studio Connections → Google
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### 6. Service accounts (workload) vs your user OAuth
|
|
179
|
+
|
|
180
|
+
| Kind | Purpose |
|
|
181
|
+
| --- | --- |
|
|
182
|
+
| Your user via `gcloud auth login` | Operator / discovery / admin on the Mac |
|
|
183
|
+
| `agent-sam-vertex@…` etc. | Workload SAs inside the GCP project |
|
|
184
|
+
| `AGENTSAM_API_KEY` / `AGENTSAM_BRIDGE_KEY` | AgentSam platform — **not** Google keys |
|
|
185
|
+
|
|
186
|
+
See also: `docs/contracts/environment-vocabulary.md` and `~/.agentsam/audits/GCP-SA-DISPOSITION-2026-09-25.md`.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## What “agentsam.inneranimalmedia.com instead of localhost” means
|
|
191
|
+
|
|
192
|
+
| Flow | Redirect host |
|
|
193
|
+
| --- | --- |
|
|
194
|
+
| `gcloud auth login` / `agentsam gcloud auth login` | Google’s `localhost` (immutable without custom client + custom token broker) |
|
|
195
|
+
| `agentsam login` (InnerAnimalMedia account) | Loopback `127.0.0.1` for CLI; authorize already on `inneranimalmedia.com` |
|
|
196
|
+
| AgentSam / Local Studio Google connect | **`https://agentsam.inneranimalmedia.com/api/oauth/google/callback`** |
|
|
197
|
+
| IAM dashboard Google connect | `https://inneranimalmedia.com/api/oauth/google/callback` (separate product) |
|
|
198
|
+
|
|
199
|
+
Building a fully custom “AgentSam Google Cloud SDK” that uses only `agentsam.inneranimalmedia.com` redirects (no gcloud client) is a larger Connections product — token relay, refresh, and API wrappers — tracked separately from wrapping `gcloud auth login`.
|
|
@@ -100,7 +100,7 @@ Worker secrets (vault + app)
|
|
|
100
100
|
openssl rand -base64 32 | npx wrangler secret put VAULT_MASTER_KEY
|
|
101
101
|
|
|
102
102
|
# optional aliases used by platform workers
|
|
103
|
-
npx wrangler secret put
|
|
103
|
+
npx wrangler secret put VAULT_MASTER_KEY # Worker AES-256-GCM master key (not a personal BYOK)
|
|
104
104
|
npx wrangler secret put BETTER_AUTH_SECRET
|
|
105
105
|
npx wrangler secret put XAI_API_KEY # server-only model calls
|
|
106
106
|
Deploy this Worker (vault API — live)
|