@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
package/src/mcp/authority.js
CHANGED
|
@@ -1,142 +1,65 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import { cloudflareBundlesAsServerCatalog, getCloudflareMcpBundle } from './cloudflare-bundles.js';
|
|
4
5
|
|
|
5
6
|
export const MCP_AUTHORITY_SCHEMA = 'agentsam.mcp.authority.v1';
|
|
6
7
|
export const SERVER_CATALOG_CACHE_SCHEMA = 'agentsam.mcp.server-catalog.v1';
|
|
7
8
|
export const DEFAULT_SERVER_CATALOG_URL = 'https://mcp.inneranimalmedia.com/api/mcp/servers';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
|
-
* Seed MCP server catalog
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* Captures live server authority, authentication requirements, and live health metrics
|
|
14
|
-
* for offline and instantaneous CLI resolution.
|
|
11
|
+
* Seed MCP *server* catalog.
|
|
12
|
+
* Cloudflare portal rows come from cloudflare-bundles.js (not client-adapters).
|
|
13
|
+
* Health metrics are unknown until probed — do not fabricate latency.
|
|
15
14
|
*/
|
|
16
|
-
|
|
15
|
+
const IAM_SEED_SERVERS = Object.freeze([
|
|
17
16
|
{
|
|
18
17
|
name: 'inneranimalmedia',
|
|
19
18
|
display_name: 'InnerAnimalMedia Main MCP',
|
|
20
19
|
url: 'https://mcp.inneranimalmedia.com/mcp',
|
|
21
20
|
authUrl: 'https://mcp.inneranimalmedia.com/auth/connect',
|
|
22
21
|
auth_type: 'bearer',
|
|
23
|
-
protocol: '
|
|
22
|
+
protocol: 'streamable_http',
|
|
24
23
|
defaultClients: ['cursor', 'claude'],
|
|
25
|
-
health_status: '
|
|
26
|
-
avg_latency_ms:
|
|
27
|
-
error_rate:
|
|
28
|
-
description: 'Inner Animal Media canonical MCP server
|
|
24
|
+
health_status: 'unknown',
|
|
25
|
+
avg_latency_ms: null,
|
|
26
|
+
error_rate: null,
|
|
27
|
+
description: 'Inner Animal Media canonical MCP server',
|
|
28
|
+
provider: 'inneranimalmedia',
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
name: 'agent_sam_bridge',
|
|
32
32
|
display_name: 'Agent Sam Bridge MCP',
|
|
33
33
|
url: 'https://mcp.inneranimalmedia.com/mcp',
|
|
34
34
|
auth_type: 'bearer',
|
|
35
|
-
protocol: '
|
|
36
|
-
defaultClients: ['cursor'],
|
|
37
|
-
health_status: 'healthy',
|
|
38
|
-
avg_latency_ms: 432,
|
|
39
|
-
error_rate: 0,
|
|
40
|
-
description: 'Agent Sam Bridge MCP',
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
name: 'cloudflare-api',
|
|
44
|
-
display_name: 'Cloudflare API',
|
|
45
|
-
url: 'https://mcp.cloudflare.com/mcp',
|
|
46
|
-
auth_type: 'bearer',
|
|
47
|
-
protocol: 'sse',
|
|
48
|
-
defaultClients: ['cursor'],
|
|
49
|
-
health_status: 'degraded',
|
|
50
|
-
avg_latency_ms: 9,
|
|
51
|
-
error_rate: 0,
|
|
52
|
-
description: 'Cloudflare API (Codex registered)',
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
name: 'cloudflare-docs',
|
|
56
|
-
display_name: 'Cloudflare Docs',
|
|
57
|
-
url: 'https://docs.mcp.cloudflare.com/mcp',
|
|
58
|
-
auth_type: 'none',
|
|
59
|
-
protocol: 'sse',
|
|
60
|
-
defaultClients: ['cursor'],
|
|
61
|
-
health_status: 'degraded',
|
|
62
|
-
avg_latency_ms: 10,
|
|
63
|
-
error_rate: 0,
|
|
64
|
-
description: 'Cloudflare documentation reference tools',
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
name: 'cloudflare-bindings',
|
|
68
|
-
display_name: 'Cloudflare Bindings',
|
|
69
|
-
url: 'https://bindings.mcp.cloudflare.com/mcp',
|
|
70
|
-
auth_type: 'user_oauth_cloudflare',
|
|
71
|
-
protocol: 'sse',
|
|
72
|
-
defaultClients: ['cursor'],
|
|
73
|
-
health_status: 'degraded',
|
|
74
|
-
avg_latency_ms: 8,
|
|
75
|
-
error_rate: 0,
|
|
76
|
-
description: 'Cloudflare Workers storage, AI, and compute bindings',
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
name: 'cloudflare-builds',
|
|
80
|
-
display_name: 'Cloudflare Builds',
|
|
81
|
-
url: 'https://builds.mcp.cloudflare.com/mcp',
|
|
82
|
-
auth_type: 'bearer',
|
|
83
|
-
protocol: 'sse',
|
|
35
|
+
protocol: 'streamable_http',
|
|
84
36
|
defaultClients: ['cursor'],
|
|
85
|
-
health_status: '
|
|
86
|
-
avg_latency_ms:
|
|
87
|
-
error_rate:
|
|
88
|
-
description: '
|
|
89
|
-
|
|
90
|
-
{
|
|
91
|
-
name: 'cloudflare-observability',
|
|
92
|
-
display_name: 'Cloudflare Observability',
|
|
93
|
-
url: 'https://observability.mcp.cloudflare.com/mcp',
|
|
94
|
-
auth_type: 'bearer',
|
|
95
|
-
protocol: 'sse',
|
|
96
|
-
defaultClients: ['cursor'],
|
|
97
|
-
health_status: 'degraded',
|
|
98
|
-
avg_latency_ms: 10,
|
|
99
|
-
error_rate: 0,
|
|
100
|
-
description: 'Cloudflare logs and analytics tools',
|
|
37
|
+
health_status: 'unknown',
|
|
38
|
+
avg_latency_ms: null,
|
|
39
|
+
error_rate: null,
|
|
40
|
+
description: 'Agent Sam Bridge MCP (same IAM endpoint; bridge-scoped tools)',
|
|
41
|
+
provider: 'inneranimalmedia',
|
|
101
42
|
},
|
|
102
43
|
{
|
|
103
44
|
name: 'github-official',
|
|
104
45
|
display_name: 'GitHub (official)',
|
|
105
46
|
url: 'https://api.githubcopilot.com/mcp/',
|
|
106
47
|
auth_type: 'user_oauth_github',
|
|
107
|
-
protocol: '
|
|
108
|
-
defaultClients: ['cursor'],
|
|
109
|
-
health_status: 'degraded',
|
|
110
|
-
avg_latency_ms: 338,
|
|
111
|
-
error_rate: 0,
|
|
112
|
-
description: 'Official GitHub Copilot MCP server',
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
name: 'gmail-official',
|
|
116
|
-
display_name: 'Gmail (official Google MCP)',
|
|
117
|
-
url: 'https://gmailmcp.googleapis.com/mcp/v1',
|
|
118
|
-
auth_type: 'user_oauth_gmail',
|
|
119
|
-
protocol: 'sse',
|
|
120
|
-
defaultClients: ['cursor'],
|
|
121
|
-
health_status: 'degraded',
|
|
122
|
-
avg_latency_ms: 662,
|
|
123
|
-
error_rate: 0,
|
|
124
|
-
description: 'Official Google Gmail MCP server',
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
name: 'cf_builds',
|
|
128
|
-
display_name: 'Cloudflare Builds System',
|
|
129
|
-
url: 'internal',
|
|
130
|
-
auth_type: 'bearer',
|
|
131
|
-
protocol: 'sse',
|
|
48
|
+
protocol: 'streamable_http',
|
|
132
49
|
defaultClients: ['cursor'],
|
|
133
50
|
health_status: 'unknown',
|
|
134
51
|
avg_latency_ms: null,
|
|
135
|
-
error_rate:
|
|
136
|
-
description: '
|
|
52
|
+
error_rate: null,
|
|
53
|
+
description: 'Official GitHub Copilot MCP server',
|
|
54
|
+
provider: 'github',
|
|
137
55
|
},
|
|
138
56
|
]);
|
|
139
57
|
|
|
58
|
+
export const SEED_MCP_SERVER_CATALOG = Object.freeze([
|
|
59
|
+
...IAM_SEED_SERVERS,
|
|
60
|
+
...cloudflareBundlesAsServerCatalog(),
|
|
61
|
+
]);
|
|
62
|
+
|
|
140
63
|
/**
|
|
141
64
|
* Backward compatibility dictionary mapping server_key/name to preset definition.
|
|
142
65
|
*/
|
|
@@ -220,7 +143,7 @@ export async function fetchMcpServerCatalog(options = {}) {
|
|
|
220
143
|
return cached.servers;
|
|
221
144
|
}
|
|
222
145
|
|
|
223
|
-
return SEED_MCP_SERVER_CATALOG;
|
|
146
|
+
return [...SEED_MCP_SERVER_CATALOG];
|
|
224
147
|
}
|
|
225
148
|
|
|
226
149
|
export function listKnownServers(options = {}) {
|
|
@@ -228,13 +151,35 @@ export function listKnownServers(options = {}) {
|
|
|
228
151
|
if (cached?.servers?.length) {
|
|
229
152
|
return cached.servers;
|
|
230
153
|
}
|
|
231
|
-
return SEED_MCP_SERVER_CATALOG;
|
|
154
|
+
return [...SEED_MCP_SERVER_CATALOG];
|
|
232
155
|
}
|
|
233
156
|
|
|
234
157
|
export function resolveServerPreset(name, options = {}) {
|
|
235
158
|
const cleanName = clean(name).toLowerCase();
|
|
236
159
|
if (!cleanName) return null;
|
|
237
160
|
|
|
161
|
+
const bundle = getCloudflareMcpBundle(cleanName);
|
|
162
|
+
if (bundle) {
|
|
163
|
+
return {
|
|
164
|
+
name: bundle.name,
|
|
165
|
+
display_name: bundle.display_name,
|
|
166
|
+
url: bundle.url,
|
|
167
|
+
authUrl: null,
|
|
168
|
+
auth_type: bundle.auth_type,
|
|
169
|
+
protocol: bundle.protocol,
|
|
170
|
+
defaultClients: ['cursor'],
|
|
171
|
+
health_status: 'unknown',
|
|
172
|
+
avg_latency_ms: null,
|
|
173
|
+
error_rate: null,
|
|
174
|
+
description: bundle.description,
|
|
175
|
+
feature_packs: bundle.feature_packs,
|
|
176
|
+
capability_ids: bundle.capability_ids,
|
|
177
|
+
portal_manage_scopes: bundle.portal_manage_scopes,
|
|
178
|
+
provider: 'cloudflare',
|
|
179
|
+
kind: 'mcp_portal_bundle',
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
238
183
|
const catalog = listKnownServers(options);
|
|
239
184
|
const found = catalog.find((s) => (s.name || s.server_key || '').toLowerCase() === cleanName);
|
|
240
185
|
if (found) {
|
|
@@ -244,12 +189,17 @@ export function resolveServerPreset(name, options = {}) {
|
|
|
244
189
|
url: found.url,
|
|
245
190
|
authUrl: found.authUrl || (found.name === 'inneranimalmedia' ? 'https://mcp.inneranimalmedia.com/auth/connect' : null),
|
|
246
191
|
auth_type: found.auth_type || 'bearer',
|
|
247
|
-
protocol: found.protocol || '
|
|
192
|
+
protocol: found.protocol || 'streamable_http',
|
|
248
193
|
defaultClients: found.defaultClients || ['cursor'],
|
|
249
194
|
health_status: found.health_status || 'unknown',
|
|
250
195
|
avg_latency_ms: found.avg_latency_ms ?? null,
|
|
251
|
-
error_rate: found.error_rate ??
|
|
196
|
+
error_rate: found.error_rate ?? null,
|
|
252
197
|
description: found.description || found.display_name || '',
|
|
198
|
+
feature_packs: found.feature_packs || [],
|
|
199
|
+
capability_ids: found.capability_ids || [],
|
|
200
|
+
portal_manage_scopes: found.portal_manage_scopes || [],
|
|
201
|
+
provider: found.provider || null,
|
|
202
|
+
kind: found.kind || null,
|
|
253
203
|
};
|
|
254
204
|
}
|
|
255
205
|
|
|
@@ -300,7 +250,7 @@ export function writeMcpServer(name, serverConfig, options = {}) {
|
|
|
300
250
|
schema_version: MCP_AUTHORITY_SCHEMA,
|
|
301
251
|
name: clean(name).toLowerCase(),
|
|
302
252
|
url: clean(serverConfig.url),
|
|
303
|
-
protocol: clean(serverConfig.protocol) || '
|
|
253
|
+
protocol: clean(serverConfig.protocol) || 'streamable_http',
|
|
304
254
|
auth: serverConfig.auth || null,
|
|
305
255
|
clients: Array.isArray(serverConfig.clients) ? [...new Set(serverConfig.clients.map(clean).filter(Boolean))] : ['cursor'],
|
|
306
256
|
metadata: serverConfig.metadata || {},
|
|
@@ -1,17 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP *client* adapters — hosts that consume MCP servers (Cursor, Claude, …).
|
|
3
|
+
*
|
|
4
|
+
* Cloudflare MCP portal hostnames are offerable *server* connections
|
|
5
|
+
* (see SEED_OFFERABLE_MCP_SERVER_CONNECTIONS / cloudflare-bundles.js) — not
|
|
6
|
+
* OAuth client registry rows.
|
|
7
|
+
*/
|
|
1
8
|
import fs from 'node:fs';
|
|
2
|
-
import os from 'node:os';
|
|
3
9
|
import path from 'node:path';
|
|
4
10
|
import { getMcpDir, homeDirectory } from './authority.js';
|
|
11
|
+
import { listCloudflareMcpBundles } from './cloudflare-bundles.js';
|
|
5
12
|
|
|
6
13
|
export const DEFAULT_CLIENT_REGISTRY_URL = 'https://mcp.inneranimalmedia.com/api/mcp/clients';
|
|
7
14
|
export const CLIENT_REGISTRY_CACHE_SCHEMA = 'agentsam.mcp.client-registry.v1';
|
|
8
15
|
|
|
9
16
|
/**
|
|
10
|
-
*
|
|
11
|
-
* `
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
* Offerable MCP server connections (including every CF portal hostname).
|
|
18
|
+
* These are what `agentsam mcp add` / Studio connection pickers should list.
|
|
19
|
+
*/
|
|
20
|
+
export const SEED_OFFERABLE_MCP_SERVER_CONNECTIONS = Object.freeze([
|
|
21
|
+
{
|
|
22
|
+
connection_key: 'inneranimalmedia',
|
|
23
|
+
display_name: 'Inner Animal Media MCP',
|
|
24
|
+
url: 'https://mcp.inneranimalmedia.com/mcp',
|
|
25
|
+
kind: 'mcp_server',
|
|
26
|
+
provider: 'inneranimalmedia',
|
|
27
|
+
},
|
|
28
|
+
...listCloudflareMcpBundles().map((b) => ({
|
|
29
|
+
connection_key: b.name,
|
|
30
|
+
display_name: b.display_name,
|
|
31
|
+
url: b.url,
|
|
32
|
+
kind: 'mcp_server',
|
|
33
|
+
provider: 'cloudflare',
|
|
34
|
+
host: new URL(b.url).hostname,
|
|
35
|
+
feature_packs: b.feature_packs,
|
|
36
|
+
portal_manage_scopes: b.portal_manage_scopes,
|
|
37
|
+
notes: b.description,
|
|
38
|
+
})),
|
|
39
|
+
]);
|
|
40
|
+
|
|
41
|
+
export function listOfferableMcpServerConnections() {
|
|
42
|
+
return [...SEED_OFFERABLE_MCP_SERVER_CONNECTIONS];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Seed for OAuth/external *client* registry only (who connects TO an MCP server).
|
|
47
|
+
* Do not put Cloudflare portal hostnames here — those belong in the server catalog.
|
|
15
48
|
*/
|
|
16
49
|
export const SEED_EXTERNAL_CLIENT_REGISTRY = Object.freeze([
|
|
17
50
|
{
|
|
@@ -32,105 +65,6 @@ export const SEED_EXTERNAL_CLIENT_REGISTRY = Object.freeze([
|
|
|
32
65
|
is_active: 1,
|
|
33
66
|
notes: 'OpenAI ChatGPT connector_platform_oauth + per-connector redirect',
|
|
34
67
|
},
|
|
35
|
-
{
|
|
36
|
-
client_key: 'cf_docs_mcp',
|
|
37
|
-
display_name: 'Cloudflare Docs',
|
|
38
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
39
|
-
redirect_host_patterns: ['docs.mcp.cloudflare.com'],
|
|
40
|
-
sort_order: 10,
|
|
41
|
-
is_active: 1,
|
|
42
|
-
notes: 'https://docs.mcp.cloudflare.com/mcp — CF docs reference',
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
client_key: 'cf_bindings_mcp',
|
|
46
|
-
display_name: 'Cloudflare Workers Bindings',
|
|
47
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
48
|
-
redirect_host_patterns: ['bindings.mcp.cloudflare.com'],
|
|
49
|
-
sort_order: 11,
|
|
50
|
-
is_active: 1,
|
|
51
|
-
notes: 'https://bindings.mcp.cloudflare.com/mcp — Workers storage, AI, compute',
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
client_key: 'cf_builds_mcp',
|
|
55
|
-
display_name: 'Cloudflare Workers Builds',
|
|
56
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
57
|
-
redirect_host_patterns: ['builds.mcp.cloudflare.com'],
|
|
58
|
-
sort_order: 12,
|
|
59
|
-
is_active: 1,
|
|
60
|
-
notes: 'https://builds.mcp.cloudflare.com/mcp — CI/CD insights',
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
client_key: 'cf_observability_mcp',
|
|
64
|
-
display_name: 'Cloudflare Observability',
|
|
65
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
66
|
-
redirect_host_patterns: ['observability.mcp.cloudflare.com'],
|
|
67
|
-
sort_order: 13,
|
|
68
|
-
is_active: 1,
|
|
69
|
-
notes: 'https://observability.mcp.cloudflare.com/mcp — logs and analytics',
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
client_key: 'cf_browser_mcp',
|
|
73
|
-
display_name: 'Cloudflare Browser Rendering',
|
|
74
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
75
|
-
redirect_host_patterns: ['browser.mcp.cloudflare.com'],
|
|
76
|
-
sort_order: 14,
|
|
77
|
-
is_active: 1,
|
|
78
|
-
notes: 'https://browser.mcp.cloudflare.com/mcp — fetch pages, markdown, screenshots',
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
client_key: 'cf_logs_mcp',
|
|
82
|
-
display_name: 'Cloudflare Logpush',
|
|
83
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
84
|
-
redirect_host_patterns: ['logs.mcp.cloudflare.com'],
|
|
85
|
-
sort_order: 15,
|
|
86
|
-
is_active: 1,
|
|
87
|
-
notes: 'https://logs.mcp.cloudflare.com/mcp — Logpush job health',
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
client_key: 'cf_ai_gateway_mcp',
|
|
91
|
-
display_name: 'Cloudflare AI Gateway',
|
|
92
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
93
|
-
redirect_host_patterns: ['ai-gateway.mcp.cloudflare.com'],
|
|
94
|
-
sort_order: 16,
|
|
95
|
-
is_active: 1,
|
|
96
|
-
notes: 'https://ai-gateway.mcp.cloudflare.com/mcp — AI request logs',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
client_key: 'cf_audit_logs_mcp',
|
|
100
|
-
display_name: 'Cloudflare Audit Logs',
|
|
101
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
102
|
-
redirect_host_patterns: ['auditlogs.mcp.cloudflare.com'],
|
|
103
|
-
sort_order: 17,
|
|
104
|
-
is_active: 1,
|
|
105
|
-
notes: 'https://auditlogs.mcp.cloudflare.com/mcp — audit log reports',
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
client_key: 'cf_dns_analytics_mcp',
|
|
109
|
-
display_name: 'Cloudflare DNS Analytics',
|
|
110
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
111
|
-
redirect_host_patterns: ['dns-analytics.mcp.cloudflare.com'],
|
|
112
|
-
sort_order: 18,
|
|
113
|
-
is_active: 1,
|
|
114
|
-
notes: 'https://dns-analytics.mcp.cloudflare.com/mcp — DNS performance',
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
client_key: 'cf_graphql_mcp',
|
|
118
|
-
display_name: 'Cloudflare GraphQL',
|
|
119
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
120
|
-
redirect_host_patterns: ['graphql.mcp.cloudflare.com'],
|
|
121
|
-
sort_order: 19,
|
|
122
|
-
is_active: 1,
|
|
123
|
-
notes: 'https://graphql.mcp.cloudflare.com/mcp — analytics via GraphQL',
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
client_key: 'cf_codemode_mcp',
|
|
127
|
-
display_name: 'Cloudflare Code Mode',
|
|
128
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
129
|
-
redirect_host_patterns: ['mcp.cloudflare.com'],
|
|
130
|
-
sort_order: 20,
|
|
131
|
-
is_active: 1,
|
|
132
|
-
notes: 'https://mcp.cloudflare.com/mcp — full CF API in 2 tools, ~1000 tokens',
|
|
133
|
-
},
|
|
134
68
|
{
|
|
135
69
|
client_key: 'claude',
|
|
136
70
|
display_name: 'Claude.ai',
|
|
@@ -140,15 +74,6 @@ export const SEED_EXTERNAL_CLIENT_REGISTRY = Object.freeze([
|
|
|
140
74
|
is_active: 1,
|
|
141
75
|
notes: 'Anthropic Claude.ai MCP auth_callback',
|
|
142
76
|
},
|
|
143
|
-
{
|
|
144
|
-
client_key: 'cf_containers_mcp',
|
|
145
|
-
display_name: 'Cloudflare Container Sandbox',
|
|
146
|
-
oauth_client_id: 'iam_mcp_inneranimalmedia',
|
|
147
|
-
redirect_host_patterns: ['containers.mcp.cloudflare.com'],
|
|
148
|
-
sort_order: 21,
|
|
149
|
-
is_active: 1,
|
|
150
|
-
notes: 'https://containers.mcp.cloudflare.com/mcp — ephemeral ~10min sandboxed containers',
|
|
151
|
-
},
|
|
152
77
|
{
|
|
153
78
|
client_key: 'cursor',
|
|
154
79
|
display_name: 'Cursor',
|
|
@@ -156,13 +81,11 @@ export const SEED_EXTERNAL_CLIENT_REGISTRY = Object.freeze([
|
|
|
156
81
|
redirect_host_patterns: ['mcp.inneranimalmedia.com', 'cursor.com', 'www.cursor.com'],
|
|
157
82
|
sort_order: 30,
|
|
158
83
|
is_active: 1,
|
|
159
|
-
notes: 'Cursor desktop (cursor://, localhost
|
|
84
|
+
notes: 'Cursor desktop (cursor://, localhost) + Cursor Agents',
|
|
160
85
|
},
|
|
161
86
|
]);
|
|
162
87
|
|
|
163
|
-
/**
|
|
164
|
-
* Dynamic list of all recognized active client keys.
|
|
165
|
-
*/
|
|
88
|
+
/** Active client keys from seed (IDE hosts only). */
|
|
166
89
|
export const SUPPORTED_CLIENTS = Object.freeze(
|
|
167
90
|
SEED_EXTERNAL_CLIENT_REGISTRY.filter((c) => Number(c.is_active) !== 0).map((c) => c.client_key),
|
|
168
91
|
);
|
|
@@ -222,8 +145,14 @@ export async function fetchExternalClientRegistry(options = {}) {
|
|
|
222
145
|
if (res.ok) {
|
|
223
146
|
const body = await res.json();
|
|
224
147
|
if (body?.ok && Array.isArray(body.clients)) {
|
|
225
|
-
|
|
226
|
-
|
|
148
|
+
// Never treat MCP portal hostnames as clients even if a stale API row says so.
|
|
149
|
+
const clients = body.clients.filter((c) => {
|
|
150
|
+
if (Number(c.is_active) === 0) return false;
|
|
151
|
+
const key = String(c.client_key || '').toLowerCase();
|
|
152
|
+
return !key.startsWith('cf_') && !key.includes('mcp.cloudflare');
|
|
153
|
+
});
|
|
154
|
+
writeCachedClientRegistry(clients, options);
|
|
155
|
+
return clients;
|
|
227
156
|
}
|
|
228
157
|
}
|
|
229
158
|
} catch {
|
|
@@ -241,7 +170,10 @@ export async function fetchExternalClientRegistry(options = {}) {
|
|
|
241
170
|
export function listRegisteredClients(options = {}) {
|
|
242
171
|
const cached = loadCachedClientRegistry(options);
|
|
243
172
|
if (cached?.clients?.length) {
|
|
244
|
-
return cached.clients
|
|
173
|
+
return cached.clients.filter((c) => {
|
|
174
|
+
const key = String(c.client_key || '').toLowerCase();
|
|
175
|
+
return !key.startsWith('cf_');
|
|
176
|
+
});
|
|
245
177
|
}
|
|
246
178
|
return SEED_EXTERNAL_CLIENT_REGISTRY.filter((c) => Number(c.is_active) !== 0);
|
|
247
179
|
}
|
|
@@ -276,12 +208,10 @@ export function getClientConfigPath(clientName, options = {}) {
|
|
|
276
208
|
return path.join(getMcpDir(options), 'clients', 'chatgpt-connector.json');
|
|
277
209
|
}
|
|
278
210
|
|
|
279
|
-
// AgentSam apps/ family and standalone binary adapter
|
|
280
211
|
if (client === 'agentsam') {
|
|
281
212
|
return path.join(home, '.agentsam', 'mcp.json');
|
|
282
213
|
}
|
|
283
214
|
|
|
284
|
-
// Any other active client in registry: adapter configuration JSON
|
|
285
215
|
if (isClientRegistered(client, options)) {
|
|
286
216
|
return path.join(getMcpDir(options), 'clients', `${client}.json`);
|
|
287
217
|
}
|
|
@@ -293,29 +223,25 @@ export function detectInstalledClients(options = {}) {
|
|
|
293
223
|
const detected = [];
|
|
294
224
|
const home = homeDirectory(options);
|
|
295
225
|
|
|
296
|
-
// Check Cursor
|
|
297
226
|
const cursorDir = path.join(home, '.cursor');
|
|
298
|
-
if (fs.existsSync(cursorDir))
|
|
299
|
-
detected.push('cursor');
|
|
300
|
-
}
|
|
227
|
+
if (fs.existsSync(cursorDir)) detected.push('cursor');
|
|
301
228
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
229
|
+
try {
|
|
230
|
+
const claudeConfig = getClientConfigPath('claude', options);
|
|
231
|
+
if (fs.existsSync(path.dirname(claudeConfig))) detected.push('claude');
|
|
232
|
+
} catch {
|
|
233
|
+
// ignore
|
|
306
234
|
}
|
|
307
235
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
236
|
+
try {
|
|
237
|
+
const chatgptConfig = getClientConfigPath('chatgpt', options);
|
|
238
|
+
if (fs.existsSync(chatgptConfig)) detected.push('chatgpt');
|
|
239
|
+
} catch {
|
|
240
|
+
// ignore
|
|
312
241
|
}
|
|
313
242
|
|
|
314
|
-
// Check AgentSam family adapter target (~/.agentsam)
|
|
315
243
|
const agentsamDir = path.join(home, '.agentsam');
|
|
316
|
-
if (fs.existsSync(agentsamDir))
|
|
317
|
-
detected.push('agentsam');
|
|
318
|
-
}
|
|
244
|
+
if (fs.existsSync(agentsamDir)) detected.push('agentsam');
|
|
319
245
|
|
|
320
246
|
return detected;
|
|
321
247
|
}
|
|
@@ -338,13 +264,12 @@ export function syncServerToClient(clientName, serverName, serverConfig, options
|
|
|
338
264
|
const configPath = getClientConfigPath(clientName, options);
|
|
339
265
|
const client = clean(clientName).toLowerCase();
|
|
340
266
|
|
|
341
|
-
// ChatGPT connector payload export
|
|
342
267
|
if (client === 'chatgpt') {
|
|
343
268
|
const chatgptPayload = {
|
|
344
269
|
schema: 'agentsam.mcp.client-adapter.chatgpt.v1',
|
|
345
270
|
name: serverName,
|
|
346
271
|
server_url: serverConfig.url,
|
|
347
|
-
protocol: serverConfig.protocol || '
|
|
272
|
+
protocol: serverConfig.protocol || 'streamable_http',
|
|
348
273
|
auth: serverConfig.auth || { type: 'none' },
|
|
349
274
|
description: serverConfig.metadata?.description || `MCP Server connection for ${serverName}`,
|
|
350
275
|
instructions: 'Use in ChatGPT Custom GPTs or ChatGPT Developer Mode Action Connectors.',
|
|
@@ -354,7 +279,6 @@ export function syncServerToClient(clientName, serverName, serverConfig, options
|
|
|
354
279
|
return { client, configPath, synced: true };
|
|
355
280
|
}
|
|
356
281
|
|
|
357
|
-
// Default Cursor / Claude mcpServers schema
|
|
358
282
|
const existing = readJsonSafe(configPath) || { mcpServers: {} };
|
|
359
283
|
if (!existing.mcpServers || typeof existing.mcpServers !== 'object') {
|
|
360
284
|
existing.mcpServers = {};
|
|
@@ -362,10 +286,10 @@ export function syncServerToClient(clientName, serverName, serverConfig, options
|
|
|
362
286
|
|
|
363
287
|
const headers = {};
|
|
364
288
|
if (serverConfig.auth?.token) {
|
|
365
|
-
headers
|
|
289
|
+
headers.Authorization = `Bearer ${serverConfig.auth.token}`;
|
|
366
290
|
}
|
|
367
291
|
if (client === 'cursor') {
|
|
368
|
-
headers
|
|
292
|
+
headers.Accept = 'application/json, text/event-stream';
|
|
369
293
|
}
|
|
370
294
|
|
|
371
295
|
existing.mcpServers[serverName] = {
|