@inneranimalmedia/agentsam-sdk 2.6.5 → 2.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTSAM.md +29 -0
- package/apps/README.md +5 -0
- package/apps/cad-creator/README.md +4 -4
- package/apps/cad-creator/shared/cad/package.json +1 -1
- package/apps/client-cms-editor/AGENTS.md +12 -7
- package/apps/client-cms-editor/README.md +76 -48
- package/apps/client-cms-editor/agentsam.app.json +26 -9
- package/apps/client-cms-editor/backend/package.json +20 -3
- package/apps/client-cms-editor/backend/src/api/client.ts +134 -101
- package/apps/client-cms-editor/backend/src/index.ts +1 -1
- package/apps/client-cms-editor/backend/src/model.ts +11 -115
- package/apps/client-cms-editor/backend/src/preview/bridge.ts +1 -1
- package/apps/client-cms-editor/backend/tsconfig.json +6 -1
- package/apps/client-cms-editor/bin/agentsam-cms.js +262 -0
- package/apps/client-cms-editor/bin/agentsam-cms.mjs +2 -228
- package/apps/client-cms-editor/frontend/package.json +16 -7
- package/apps/client-cms-editor/frontend/src/AgentSamDrawer.tsx +9 -41
- package/apps/client-cms-editor/frontend/src/CmsAgentSurface.tsx +19 -174
- package/apps/client-cms-editor/frontend/src/adapters/heuristic.ts +29 -0
- package/apps/client-cms-editor/frontend/src/adapters/http.ts +628 -0
- package/apps/client-cms-editor/frontend/src/adapters/memory.ts +510 -0
- package/apps/client-cms-editor/frontend/src/editor/CmsEditor.tsx +213 -0
- package/apps/client-cms-editor/frontend/src/editor/CmsEditorProvider.tsx +20 -0
- package/apps/client-cms-editor/frontend/src/editor/canvas/PreviewCanvas.tsx +53 -0
- package/apps/client-cms-editor/frontend/src/{CmsEditor.tsx → editor/legacy/CmsEditorPrototype.tsx} +52 -23
- package/apps/client-cms-editor/frontend/src/editor/useCmsEditorController.ts +218 -0
- package/apps/client-cms-editor/frontend/src/index.ts +19 -5
- package/apps/client-cms-editor/frontend/src/lib/agent-host.ts +24 -0
- package/apps/client-cms-editor/frontend/src/main.tsx +82 -8
- package/apps/client-cms-editor/frontend/src/mount.tsx +92 -30
- package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +1 -1
- package/apps/client-cms-editor/frontend/src/styles/cmsShell.css +8 -8
- package/apps/client-cms-editor/frontend/src/styles/studio.css +55 -3
- package/apps/client-cms-editor/frontend/tsconfig.json +12 -1
- package/apps/client-cms-editor/frontend/vite.config.ts +12 -0
- package/apps/client-cms-editor/package-lock.json +973 -134
- package/apps/client-cms-editor/package.json +118 -6
- package/apps/client-cms-editor/reference/harvest/HARVEST_RECEIPT.json +201 -0
- package/apps/client-cms-editor/reference/harvest/PROVENANCE_HISTORY.txt +10 -0
- package/apps/client-cms-editor/reference/harvest/README.md +8 -0
- package/apps/client-cms-editor/reference/harvest/plans/ARCHIVE-INTAKE.md +135 -0
- package/apps/client-cms-editor/reference/harvest/plans/CHATGPT-IDENTITY-HARVEST.md +83 -0
- package/apps/client-cms-editor/reference/harvest/plans/CMS-EDITOR-HARVEST.md +166 -0
- package/apps/client-cms-editor/reference/harvest/plans/HARVEST-INDEX.md +196 -0
- package/apps/client-cms-editor/reference/harvest/plans/INNERANIMALS-CONTENT-001.md +137 -0
- package/apps/client-cms-editor/reference/harvest/plans/NO-IMPLICIT-SIDE-EFFECTS.md +87 -0
- package/apps/client-cms-editor/reference/harvest/plans/STOREFRONT-SURFACE-MAP.md +140 -0
- package/apps/client-cms-editor/reference/harvest/plans/THEME-INNERANIMALS-HARVEST.md +137 -0
- package/apps/client-cms-editor/reference/harvest/plans/TOOLING-LAB.md +63 -0
- package/apps/client-cms-editor/reference/harvest/plans/harvest-manifest.json +97 -0
- package/apps/client-cms-editor/reference/harvest/plans/local-cms-harvest-schema.sql +328 -0
- package/apps/client-cms-editor/shared/cms/package.json +17 -7
- package/apps/client-cms-editor/shared/cms/src/adapter.ts +204 -0
- package/apps/client-cms-editor/shared/cms/src/agent-context.ts +7 -5
- package/apps/client-cms-editor/shared/cms/src/editor-types.ts +32 -0
- package/apps/client-cms-editor/shared/cms/src/host.ts +82 -0
- package/apps/client-cms-editor/shared/cms/src/index.ts +4 -0
- package/apps/client-cms-editor/shared/cms/src/map.ts +115 -0
- package/apps/client-cms-editor/shared/cms/src/starter-pack.ts +158 -0
- package/contracts/source-types.v1.json +353 -0
- package/docs/CMS_CONTEXTUAL_COMPOSER.md +1 -1
- package/docs/PRODUCT_LIFECYCLE.md +566 -0
- package/docs/THEME_REFINERY.md +2 -2
- package/docs/architecture/AGENTSAM_RUNTIME_PROTOCOL.md +40 -20
- package/docs/content-studio/REVISION_GATE_2026-09-27.md +1 -1
- package/docs/plans/LOCAL_STUDIO_DESKTOP_RELEASE_2026-09-29.md +150 -0
- package/migrations/d1/0017_identity_native_oauth.sql +21 -0
- package/native/agentsam-machine/Cargo.lock +426 -0
- package/native/agentsam-machine/Cargo.toml +9 -0
- package/native/agentsam-machine/cli/Cargo.toml +14 -0
- package/native/agentsam-machine/cli/src/main.rs +77 -0
- package/native/agentsam-machine/core/Cargo.toml +15 -0
- package/native/agentsam-machine/core/src/assets.rs +790 -0
- package/native/agentsam-machine/core/src/bound.rs +298 -0
- package/native/agentsam-machine/core/src/enrich.rs +706 -0
- package/native/agentsam-machine/core/src/frontend.rs +442 -0
- package/native/agentsam-machine/core/src/lib.rs +1086 -0
- package/native/agentsam-machine/core/src/liquid.rs +528 -0
- package/native/agentsam-machine/core/src/source_types.rs +78 -0
- package/package.json +51 -21
- package/packages/agentsam-brand/README.md +1 -1
- package/packages/agentsam-brand/package.json +4 -4
- package/packages/agentsam-brand/src/index.js +1 -1
- package/packages/agentsam-contracts/package.json +13 -3
- package/packages/agentsam-contracts/src/tools.ts +22 -0
- package/packages/agentsam-errors/package.json +13 -3
- package/packages/agentsam-knowledge/package.json +18 -4
- package/packages/agentsam-knowledge/src/autorag/index.js +10 -3
- package/packages/agentsam-knowledge/src/backends/index.js +33 -1
- package/packages/agentsam-knowledge/test/autorag.test.mjs +60 -1
- package/packages/agentsam-nav/package.json +24 -6
- package/packages/agentsam-queue-control/README.md +1 -1
- package/packages/agentsam-queue-control/package.json +7 -2
- package/packages/agentsam-rapid-rust/src/main.rs +1 -1
- package/packages/agentsam-repository/package.json +13 -3
- package/packages/agentsam-repository/src/source-types.js +8 -0
- package/packages/agentsam-vault/package.json +14 -4
- package/packages/agentsam-workbench/package.json +15 -4
- package/packages/agentsam-workbench/src/agent/ToolPermissionRequest.tsx +94 -0
- package/packages/agentsam-workbench/src/agent/index.ts +2 -0
- package/packages/agentsam-workbench/src/agent/tool-permission.css +134 -0
- package/packages/connectors/cloudflare/package.json +13 -3
- package/packages/connectors/cloudflare/src/api-client.js +3 -2
- package/packages/connectors/cloudflare/src/families/vectorize.js +127 -0
- package/packages/connectors/cloudflare/src/index.js +1 -0
- package/packages/heuristic-theme/README.md +2 -2
- package/packages/heuristic-theme/package.json +8 -3
- package/packages/heuristic-theme/src/registry.js +2 -2
- package/packages/heuristic-theme/src/theme.js +1 -1
- package/packages/heuristic-theme/test/theme.test.mjs +1 -1
- package/packages/identity/.agentsam/features/oauth-login-portal/agentsam.feature.json +1 -1
- package/packages/identity/.agentsam/features/oauth-login-portal/providers.json +27 -7
- package/packages/identity/README.md +2 -2
- package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +18 -15
- package/packages/identity/migrations/apply-portable.js +109 -0
- package/packages/identity/migrations/sqlite/004_identity_oauth_consent_catalog.sql +1 -1
- package/packages/identity/migrations/sqlite/005_identity_company_native.sql +52 -0
- package/packages/identity/package.json +27 -6
- package/packages/identity/schema/agentsam.identity/manifest.json +101 -0
- package/packages/identity/scripts/local-identity-bridge.mjs +13 -7
- package/packages/identity/scripts/preview-auth-portal.mjs +6 -6
- package/packages/identity/src/adapters/cloudflare-d1/index.js +8 -401
- package/packages/identity/src/adapters/iam-compat/index.js +540 -0
- package/packages/identity/src/adapters/portable-d1/index.js +18 -0
- package/packages/identity/src/adapters/portable-store.js +479 -0
- package/packages/identity/src/adapters/sqlite/index.js +13 -312
- package/packages/identity/src/contracts/auth-config.js +0 -1
- package/packages/identity/src/contracts/identity-store.js +56 -5
- package/packages/identity/src/contracts/provider.js +1 -0
- package/packages/identity/src/contracts/sign-in-options.js +104 -0
- package/packages/identity/src/core/constants.js +1 -1
- package/packages/identity/src/core/session-policy.js +31 -0
- package/packages/identity/src/frontend/auth-portal/pages/login.html +6 -6
- package/packages/identity/src/frontend/auth-portal/pages/reset.html +5 -5
- package/packages/identity/src/frontend/auth-portal/pages/signup.html +5 -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 +6 -37
- package/packages/identity/src/index.js +28 -1
- package/packages/identity/src/migrations/README.md +23 -23
- package/packages/identity/src/oauth/README.md +1 -1
- package/packages/identity/src/oauth/credentials.js +10 -11
- package/packages/identity/src/oauth/google-desktop-exchange.js +195 -27
- package/packages/identity/src/oauth/iam-platform.js +21 -9
- package/packages/identity/src/oauth/native-handoff.js +136 -0
- package/packages/identity/src/providers/chatgpt/headers.js +65 -0
- package/packages/identity/src/providers/chatgpt/index.js +86 -0
- package/packages/identity/src/providers/chatgpt/mapper.js +43 -0
- package/packages/identity/src/providers/chatgpt/paths.js +45 -0
- package/packages/identity/src/providers/github/oauth.js +1 -2
- package/packages/identity/src/providers/github/profile.js +16 -2
- package/packages/identity/src/providers/index.js +11 -3
- package/packages/identity/src/server/identity-service.js +2 -1
- package/packages/identity/src/server/worker-router.js +71 -18
- package/packages/identity/tests/chatgpt-provider.test.mjs +75 -0
- package/packages/identity/tests/google-desktop-identity-login.test.mjs +210 -0
- package/packages/identity/tests/identity-init-scaffold.test.mjs +15 -4
- package/packages/identity/tests/lane1-identity-store-parity.test.mjs +527 -0
- package/packages/identity/tests/lane1-packed-consumer.test.mjs +175 -0
- package/packages/identity/tests/native-oauth-handoff.test.mjs +292 -0
- package/packages/identity/tests/oauth-credentials.test.mjs +4 -4
- package/packages/identity/tests/preview-auth-portal.test.mjs +4 -2
- package/packages/identity/tests/session-routes-policy.test.mjs +13 -1
- package/packages/identity/tests/worker-runtime-boundary.test.mjs +11 -0
- package/packages/providers/completeful/package.json +7 -2
- package/packages/theme-church-site/package.json +17 -6
- package/packages/theme-church-site/src/harvest.json +4 -2
- package/packages/theme-church-site/src/index.js +7 -3
- package/packages/theme-church-site/test/theme.test.mjs +4 -2
- package/packages/theme-companions-site/package.json +17 -6
- package/packages/theme-companions-site/src/harvest.json +4 -2
- package/packages/theme-companions-site/src/index.js +7 -3
- package/packages/theme-companions-site/test/theme.test.mjs +4 -2
- package/packages/theme-floors-site/package.json +17 -6
- package/packages/theme-floors-site/src/harvest.json +4 -2
- package/packages/theme-floors-site/src/index.js +7 -3
- package/packages/theme-floors-site/test/theme.test.mjs +4 -2
- package/packages/theme-fuelnfree-site/package.json +17 -6
- package/packages/theme-fuelnfree-site/src/harvest.json +4 -2
- package/packages/theme-fuelnfree-site/src/index.js +7 -3
- package/packages/theme-fuelnfree-site/test/theme.test.mjs +4 -2
- package/packages/theme-handyman-site/package.json +17 -6
- package/packages/theme-handyman-site/src/harvest.json +4 -2
- package/packages/theme-handyman-site/src/index.js +7 -3
- package/packages/theme-handyman-site/test/theme.test.mjs +4 -2
- package/packages/theme-insurance-site/package.json +17 -6
- package/packages/theme-insurance-site/src/harvest.json +4 -2
- package/packages/theme-insurance-site/src/index.js +7 -3
- package/packages/theme-insurance-site/test/theme.test.mjs +4 -2
- package/packages/theme-scenes/README.md +1 -1
- package/packages/theme-scenes/package.json +4 -3
- package/packages/theme-scenes/src/registry.js +187 -0
- package/packages/theme-shinshu-site/package.json +17 -6
- package/packages/theme-shinshu-site/src/harvest.json +4 -2
- package/packages/theme-shinshu-site/src/index.js +7 -3
- package/packages/theme-shinshu-site/test/theme.test.mjs +4 -2
- package/packages/work-graph/package.json +14 -4
- package/protocol/FILEMETA_V1.md +2 -2
- package/protocol/capabilities/manifest.json +1 -1
- package/protocol/database/agentsam.schema-pack.v1.schema.json +72 -0
- package/protocol/presets/catalog.json +2 -2
- package/protocol/theme-refinery/lineage-registry.json +105 -0
- package/protocol/theme-refinery/product-metadata.schema.json +21 -1
- package/skills/grok-auth/SKILL.md +110 -0
- package/skills/grok-auth/agentsam.skill.json +25 -0
- package/skills/grok-auth/references/grok-identity.md +64 -0
- package/skills/grok-auth/references/per-user-data.md +49 -0
- package/skills/grok-auth/references/prewired-and-env.md +54 -0
- package/skills/grok-auth/references/session-ui.md +133 -0
- package/skills/grok-auth/references/sign-in-methods.md +55 -0
- package/skills/grok-auth/references/wiring.md +71 -0
- package/skills/grok-building-games/SKILL.md +213 -0
- package/skills/grok-building-games/agentsam.skill.json +25 -0
- package/skills/grok-building-games/references/3d-libs.md +64 -0
- package/skills/grok-building-games/references/ai-pathfinding.md +122 -0
- package/skills/grok-building-games/references/audio.md +129 -0
- package/skills/grok-building-games/references/babylon.md +202 -0
- package/skills/grok-building-games/references/collision-physics.md +122 -0
- package/skills/grok-building-games/references/ecs-architecture.md +111 -0
- package/skills/grok-building-games/references/game-feel-juice.md +110 -0
- package/skills/grok-building-games/references/genres/board-card-chess.md +89 -0
- package/skills/grok-building-games/references/genres/endless-runner.md +83 -0
- package/skills/grok-building-games/references/genres/fps.md +105 -0
- package/skills/grok-building-games/references/genres/platformer-2d.md +97 -0
- package/skills/grok-building-games/references/genres/puzzle-match3-tetris.md +131 -0
- package/skills/grok-building-games/references/genres/racing-kart.md +106 -0
- package/skills/grok-building-games/references/genres/topdown-twin-stick.md +97 -0
- package/skills/grok-building-games/references/genres/tower-defense.md +84 -0
- package/skills/grok-building-games/references/genres/voxel-minecraft.md +89 -0
- package/skills/grok-building-games/references/input.md +139 -0
- package/skills/grok-building-games/references/phaser.md +277 -0
- package/skills/grok-building-games/references/procedural-generation.md +141 -0
- package/skills/grok-building-games/references/save-persistence.md +108 -0
- package/skills/grok-building-games/references/threejs-foundational.md +148 -0
- package/skills/grok-controls/SKILL.md +274 -0
- package/skills/grok-controls/agentsam.skill.json +25 -0
- package/skills/grok-design-ui/SKILL.md +122 -0
- package/skills/grok-design-ui/agentsam.skill.json +25 -0
- package/skills/grok-design-ui/references/animations.md +379 -0
- package/skills/grok-design-ui/references/performance.md +88 -0
- package/skills/grok-design-ui/references/refined-ui.md +384 -0
- package/skills/grok-design-ui/references/surfaces.md +247 -0
- package/skills/grok-design-ui/references/typography.md +123 -0
- package/skills/grok-game-animation-frames/SKILL.md +84 -0
- package/skills/grok-game-animation-frames/agentsam.skill.json +25 -0
- package/skills/grok-game-asset-core/SKILL.md +69 -0
- package/skills/grok-game-asset-core/agentsam.skill.json +25 -0
- package/skills/grok-game-character-consistency/SKILL.md +69 -0
- package/skills/grok-game-character-consistency/agentsam.skill.json +25 -0
- package/skills/grok-game-tilesets/SKILL.md +65 -0
- package/skills/grok-game-tilesets/agentsam.skill.json +25 -0
- package/skills/grok-game-ui-icons/SKILL.md +56 -0
- package/skills/grok-game-ui-icons/agentsam.skill.json +25 -0
- package/skills/grok-generate2dmap/LICENSE +21 -0
- package/skills/grok-generate2dmap/SKILL.md +120 -0
- package/skills/grok-generate2dmap/SOURCE.md +6 -0
- package/skills/grok-generate2dmap/agentsam.skill.json +25 -0
- package/skills/grok-generate2dmap/references/deliverables.md +101 -0
- package/skills/grok-generate2dmap/references/layered-map-contract.md +209 -0
- package/skills/grok-generate2dmap/references/map-strategies.md +341 -0
- package/skills/grok-generate2dmap/references/object-production-gate.md +24 -0
- package/skills/grok-generate2dmap/references/pipeline.md +149 -0
- package/skills/grok-generate2dmap/references/prop-pack-contract.md +174 -0
- package/skills/grok-generate2dmap/references/side-scroll-stages.md +29 -0
- package/skills/grok-generate2dmap/scripts/compose_layered_preview.py +157 -0
- package/skills/grok-generate2dmap/scripts/extract_prop_pack.py +369 -0
- package/skills/grok-generate2dsprite/LICENSE +21 -0
- package/skills/grok-generate2dsprite/SKILL.md +313 -0
- package/skills/grok-generate2dsprite/SOURCE.md +6 -0
- package/skills/grok-generate2dsprite/agentsam.skill.json +25 -0
- package/skills/grok-generate2dsprite/references/modes.md +124 -0
- package/skills/grok-generate2dsprite/references/prompt-rules.md +315 -0
- package/skills/grok-generate2dsprite/scripts/generate2dsprite.py +1031 -0
- package/skills/grok-generate2dsprite/scripts/make_layout_guide.py +109 -0
- package/skills/grok-imagine/SKILL.md +201 -0
- package/skills/grok-imagine/agentsam.skill.json +25 -0
- package/skills/grok-multiplayer-p2p/SKILL.md +111 -0
- package/skills/grok-multiplayer-p2p/agentsam.skill.json +25 -0
- package/skills/grok-multiplayer-p2p/references/react-binding.md +144 -0
- package/skills/grok-multiplayer-p2p/references/signaling-relay.md +269 -0
- package/skills/grok-neon/SKILL.md +157 -0
- package/skills/grok-neon/agentsam.skill.json +25 -0
- package/skills/grok-og/SKILL.md +102 -0
- package/skills/grok-og/agentsam.skill.json +25 -0
- package/skills/grok-og/references/brand-pass.md +53 -0
- package/skills/grok-og/references/custom-card.md +107 -0
- package/skills/grok-og/references/favicon-and-icons.md +48 -0
- package/skills/grok-og/references/og-type-contract.md +18 -0
- package/skills/grok-og/references/placeholder-card.md +21 -0
- package/skills/grok-og/references/x-banner.md +41 -0
- package/skills/grok-threejs/SKILL.md +67 -0
- package/skills/grok-threejs/agentsam.skill.json +25 -0
- package/skills/grok-threejs/references/llms-full.txt +2780 -0
- package/skills/grok-video2dsprite/LICENSE +21 -0
- package/skills/grok-video2dsprite/SKILL.md +236 -0
- package/skills/grok-video2dsprite/SOURCE.md +6 -0
- package/skills/grok-video2dsprite/agentsam.skill.json +25 -0
- package/skills/grok-video2dsprite/references/pipeline.md +90 -0
- package/skills/grok-video2dsprite/references/prompt-rules.md +63 -0
- package/skills/grok-video2dsprite/scripts/video2dsprite.py +490 -0
- package/skills/grok-xai-api/SKILL.md +152 -0
- package/skills/grok-xai-api/agentsam.skill.json +25 -0
- package/src/cli/command-catalog.js +46 -4
- package/src/cli/dispatch.js +1 -0
- package/src/cli.js +10 -0
- package/src/cloudflare/runtime-status.js +2 -1
- package/src/commands/autorag.js +67 -13
- package/src/commands/cheat-sheet.js +29 -4
- package/src/commands/codebaseindex.js +45 -2
- package/src/commands/knowledge.js +59 -2
- package/src/commands/machine-binary.js +103 -0
- package/src/commands/machine.js +137 -0
- package/src/commands/security.js +67 -4
- package/src/commands/setup.js +33 -16
- package/src/commands/status.js +8 -1
- package/src/features/resolve.js +1 -0
- package/src/knowledge/engine.js +21 -2
- package/src/knowledge/runtime-discovery.js +127 -0
- package/src/lib/identity-scaffold.js +53 -13
- package/src/lib/setup/recipes.js +1 -1
- package/src/models/discovery.js +40 -22
- package/src/models/inventory-core.d.ts +105 -0
- package/src/models/inventory-core.js +54 -6
- package/src/security/logs.js +3 -0
- package/src/ui/cli/help.js +41 -0
- package/test/apps-scaffold-contract.test.mjs +3 -2
- package/test/cli/api-key-env-whoami.test.mjs +2 -2
- package/test/cli/catalog-authority.test.mjs +64 -0
- package/test/cli/machine-command.test.mjs +34 -0
- package/test/fixtures/project-authority/customer-app/.agentsam/app.json +5 -0
- package/test/fixtures/project-authority/customer-app/apps/my-product/index.ts +1 -0
- package/test/fixtures/project-authority/customer-app/wrangler.toml +17 -0
- package/test/integration/autorag-project-authority.integration.test.mjs +51 -0
- package/test/integration/autorag-runtime-discovery.test.mjs +107 -0
- package/test/integration/cms-app-scaffold.test.mjs +37 -31
- package/test/integration/cms-site-tenancy-contract.test.mjs +28 -17
- package/test/integration/codebaseindex-ingest.test.mjs +41 -0
- package/test/integration/database-hosted-honesty.test.mjs +49 -0
- package/test/integration/desktop-keychain-boundary.test.mjs +45 -0
- package/test/integration/hosted-work-host-authority.test.mjs +47 -0
- package/test/integration/inventory-eligibility.test.mjs +59 -0
- package/test/integration/local-provider-bridge.test.mjs +65 -0
- package/test/integration/local-studio-settings-production.test.mjs +40 -0
- package/test/integration/lockfile-sync.test.mjs +26 -0
- package/test/integration/provider-env-cli.test.mjs +13 -3
- package/test/integration/runtime-status.integration.test.mjs +16 -1
- package/test/integration/theme-package-registry.test.mjs +31 -0
- package/test/repository-snapshot-view.test.mjs +2 -2
- package/test/security.test.mjs +14 -0
- package/test/terminal-machine-identity.test.mjs +2 -2
- package/apps/client-cms-editor/backend/src/demo-bootstrap.ts +0 -145
- package/packages/agentsam-nav/dist/Nav.d.ts +0 -43
- package/packages/agentsam-nav/dist/NavCollapsible.d.ts +0 -10
- package/packages/agentsam-nav/dist/NavContent.d.ts +0 -2
- package/packages/agentsam-nav/dist/NavFooter.d.ts +0 -2
- package/packages/agentsam-nav/dist/NavGroup.d.ts +0 -3
- package/packages/agentsam-nav/dist/NavHeader.d.ts +0 -2
- package/packages/agentsam-nav/dist/NavMenu.d.ts +0 -22
- package/packages/agentsam-nav/dist/NavProvider.d.ts +0 -35
- package/packages/agentsam-nav/dist/NavTrigger.d.ts +0 -2
- package/packages/agentsam-nav/dist/Surfaces.d.ts +0 -41
- package/packages/agentsam-nav/dist/browser.d.ts +0 -11
- package/packages/agentsam-nav/dist/browser.global.js +0 -132
- package/packages/agentsam-nav/dist/browser.js +0 -613
- package/packages/agentsam-nav/dist/contracts.d.ts +0 -76
- package/packages/agentsam-nav/dist/index.d.ts +0 -11
- package/packages/agentsam-nav/dist/index.js +0 -614
- package/packages/agentsam-nav/dist/legacy.css +0 -83
- package/packages/agentsam-nav/dist/shell.css +0 -113
- package/packages/agentsam-nav/dist/theme.css +0 -113
- package/packages/agentsam-nav/dist/utils.d.ts +0 -1
- package/packages/agentsam-repository/src/goap.js.bak-20260922011251 +0 -670
|
@@ -1,32 +1,35 @@
|
|
|
1
|
-
# Identity schema mapping — portable ↔ Cloudflare D1
|
|
1
|
+
# Identity schema mapping — portable ↔ Cloudflare D1 (IAM compat)
|
|
2
2
|
|
|
3
3
|
Portable SQLite (`packages/identity/migrations/sqlite/`) is the product schema.
|
|
4
|
-
The
|
|
4
|
+
The IAM-compat adapter maps existing hosted table names without requiring a big-bang rename.
|
|
5
5
|
|
|
6
|
-
| Portable (SQLite) | Hosted D1 (
|
|
6
|
+
| Portable (SQLite / portable D1) | Hosted D1 (IAM compat) | Notes |
|
|
7
7
|
|---|---|---|
|
|
8
|
-
| `identity_users` / account plane | **`accounts`** | **Account SSOT** — row of record |
|
|
9
|
-
|
|
|
10
|
-
| `
|
|
11
|
-
| `
|
|
12
|
-
| `
|
|
13
|
-
| `
|
|
14
|
-
| `
|
|
8
|
+
| `identity_users` / account plane | **`accounts`** + `auth_users` | **Account SSOT** — row of record |
|
|
9
|
+
| `identity_external_accounts` | `account_identities` | IdP linkage only |
|
|
10
|
+
| `identity_sessions` (+ `type`) | `auth_sessions` (+ `type`) | browser / desktop |
|
|
11
|
+
| `identity_auth_events` | `auth_event_log` | Same semantics |
|
|
12
|
+
| `identity_oauth_transactions` (+ native cols) | `identity_oauth_states` | Requires `app_id NOT NULL`; native cols optional |
|
|
13
|
+
| `identity_native_handoffs` | `identity_native_handoffs` | Single-use desktop pickup |
|
|
14
|
+
| `identity_companies` | `company` | Branding / host resolution |
|
|
15
|
+
| `identity_provider_connections` | `identity_provider_connections` (or connector tables) | `credential_ref` only — never raw secrets |
|
|
15
16
|
| `identity_app_registry` | cache of `agentsam.app.json` | Disk manifests remain SSOT |
|
|
16
17
|
| `identity_route_registry` | projection cache | Disk manifests remain SSOT |
|
|
17
18
|
| `identity_oauth_clients` … | optional `identity.oauth-server` pack | Only if product is an AS |
|
|
18
19
|
|
|
20
|
+
Password recovery is **not** a portable core table. It uses `createPasswordResetService` with an injected `{get,put,delete}` store. Optional `identity.recovery` pack may exist later.
|
|
21
|
+
|
|
19
22
|
## Schema version
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
`PRAGMA`/meta row. Missing `app_id` on OAuth transactions is an
|
|
23
|
-
`IdentitySchemaError('IDENTITY_SCHEMA_MIGRATION_REQUIRED')`, not a soft
|
|
24
|
-
downgrade.
|
|
24
|
+
Portable adapters read `identity_schema_meta.schema_version`. Lane 1 requires version **2** (after `005_identity_company_native.sql`). Missing `app_id` on OAuth transactions is an `IdentitySchemaError`, not a soft downgrade.
|
|
25
25
|
|
|
26
26
|
## Packs
|
|
27
27
|
|
|
28
28
|
| Pack | Apply when |
|
|
29
29
|
|---|---|
|
|
30
|
-
| `identity.core` | Always (local + hosted) |
|
|
30
|
+
| `identity.core` | Always (local + hosted portable) |
|
|
31
31
|
| `identity.oauth-client` | Signing into external IdPs |
|
|
32
32
|
| `identity.oauth-server` | Product issues its own codes/tokens |
|
|
33
|
+
|
|
34
|
+
Family manifest: `packages/identity/schema/agentsam.identity/manifest.json`
|
|
35
|
+
Generic contract: `protocol/database/agentsam.schema-pack.v1.schema.json`
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
|
|
5
|
+
const HERE = path.dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
|
|
7
|
+
/** Package-owned portable SQL SSOT (resolves inside installed npm package). */
|
|
8
|
+
export const PORTABLE_IDENTITY_MIGRATIONS_DIR = path.resolve(HERE, 'sqlite');
|
|
9
|
+
|
|
10
|
+
/** @deprecated Prefer PORTABLE_IDENTITY_MIGRATIONS_DIR */
|
|
11
|
+
export const SQLITE_MIGRATIONS_DIR = PORTABLE_IDENTITY_MIGRATIONS_DIR;
|
|
12
|
+
|
|
13
|
+
export const IDENTITY_SCHEMA_PACK_MANIFEST_PATH = path.resolve(
|
|
14
|
+
HERE,
|
|
15
|
+
'../schema/agentsam.identity/manifest.json',
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Resolve the agentsam.identity pack-family manifest from the installed package.
|
|
20
|
+
* @returns {{ manifest: object, manifestPath: string, sqlDir: string }}
|
|
21
|
+
*/
|
|
22
|
+
export function resolveIdentitySchemaPack() {
|
|
23
|
+
const manifestPath = IDENTITY_SCHEMA_PACK_MANIFEST_PATH;
|
|
24
|
+
const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
|
|
25
|
+
return {
|
|
26
|
+
manifest,
|
|
27
|
+
manifestPath,
|
|
28
|
+
sqlDir: PORTABLE_IDENTITY_MIGRATIONS_DIR,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function listPortableMigrationFiles(opts = {}) {
|
|
33
|
+
const files = [
|
|
34
|
+
'001_identity_core.sql',
|
|
35
|
+
'002_identity_oauth_client.sql',
|
|
36
|
+
'005_identity_company_native.sql',
|
|
37
|
+
];
|
|
38
|
+
if (opts.includeOAuthServer) {
|
|
39
|
+
files.push('003_identity_oauth_server.sql');
|
|
40
|
+
files.push('004_identity_oauth_consent_catalog.sql');
|
|
41
|
+
}
|
|
42
|
+
return files;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function isIgnorableMigrationError(err) {
|
|
46
|
+
const msg = String(err?.message || err || '').toLowerCase();
|
|
47
|
+
return (
|
|
48
|
+
msg.includes('duplicate column')
|
|
49
|
+
|| msg.includes('already exists')
|
|
50
|
+
|| msg.includes('duplicate column name')
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async function runSql(db, sql) {
|
|
55
|
+
if (typeof db.exec === 'function') {
|
|
56
|
+
try {
|
|
57
|
+
db.exec(sql);
|
|
58
|
+
return;
|
|
59
|
+
} catch (err) {
|
|
60
|
+
// Multi-statement exec may fail mid-file on duplicate ALTER; fall through to statements.
|
|
61
|
+
if (!isIgnorableMigrationError(err) && !/alter table/i.test(sql)) throw err;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const stripped = sql.replace(/\/\*[\s\S]*?\*\//g, '');
|
|
65
|
+
const statements = stripped
|
|
66
|
+
.split(';')
|
|
67
|
+
.map((s) => s.replace(/--[^\n]*/g, '').trim())
|
|
68
|
+
.filter(Boolean);
|
|
69
|
+
for (const statement of statements) {
|
|
70
|
+
try {
|
|
71
|
+
if (typeof db.exec === 'function' && !db.prepare) {
|
|
72
|
+
db.exec(statement);
|
|
73
|
+
} else {
|
|
74
|
+
await db.prepare(statement).run();
|
|
75
|
+
}
|
|
76
|
+
} catch (err) {
|
|
77
|
+
if (isIgnorableMigrationError(err)) continue;
|
|
78
|
+
throw err;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Apply portable agentsam.identity SQL pack to a SQLite or D1-shaped target.
|
|
85
|
+
* Same SQL sources for both; executor differs by driver API.
|
|
86
|
+
*
|
|
87
|
+
* @param {{ prepare?: Function, exec?: Function }} target
|
|
88
|
+
* @param {{ includeOAuthServer?: boolean }} [opts]
|
|
89
|
+
*/
|
|
90
|
+
export async function applyPortableIdentityMigrations(target, opts = {}) {
|
|
91
|
+
if (!target || (typeof target.exec !== 'function' && typeof target.prepare !== 'function')) {
|
|
92
|
+
throw new Error('applyPortableIdentityMigrations_requires_db_target');
|
|
93
|
+
}
|
|
94
|
+
const files = listPortableMigrationFiles(opts);
|
|
95
|
+
for (const file of files) {
|
|
96
|
+
const sqlPath = path.join(PORTABLE_IDENTITY_MIGRATIONS_DIR, file);
|
|
97
|
+
const sql = fs.readFileSync(sqlPath, 'utf8');
|
|
98
|
+
await runSql(target, sql);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Stable compatibility alias — same portable pack, same sources.
|
|
104
|
+
* @param {{ prepare?: Function, exec?: Function }} db
|
|
105
|
+
* @param {{ includeOAuthServer?: boolean }} [opts]
|
|
106
|
+
*/
|
|
107
|
+
export async function applySqliteIdentityMigrations(db, opts = {}) {
|
|
108
|
+
return applyPortableIdentityMigrations(db, opts);
|
|
109
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
-- identity.oauth-server consent catalog.
|
|
2
|
-
-- Issuer branding remains owned by
|
|
2
|
+
-- Issuer branding remains owned by portable identity_companies (identity.core).
|
|
3
3
|
|
|
4
4
|
INSERT OR IGNORE INTO identity_schema_meta (key, value)
|
|
5
5
|
VALUES ('pack_oauth_consent_catalog', '1');
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
-- identity.core extension — company / brand + native handoff parity
|
|
2
|
+
-- Portable identity_* names only. Does not create IAM `company` / `accounts`.
|
|
3
|
+
-- Does NOT include password-reset tables — recovery remains storage-agnostic
|
|
4
|
+
-- (createPasswordResetService + injected {get,put,delete} store).
|
|
5
|
+
-- Upgrades schema_version 1 → 2. Safe to re-run (IF NOT EXISTS / ignorable ALTERs).
|
|
6
|
+
|
|
7
|
+
INSERT OR REPLACE INTO identity_schema_meta (key, value)
|
|
8
|
+
VALUES ('schema_version', '2');
|
|
9
|
+
|
|
10
|
+
INSERT OR IGNORE INTO identity_schema_meta (key, value)
|
|
11
|
+
VALUES ('pack_company_native', '1');
|
|
12
|
+
|
|
13
|
+
CREATE TABLE IF NOT EXISTS identity_companies (
|
|
14
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
15
|
+
slug TEXT NOT NULL,
|
|
16
|
+
name TEXT NOT NULL,
|
|
17
|
+
legal_name TEXT,
|
|
18
|
+
logo_url TEXT,
|
|
19
|
+
favicon_url TEXT,
|
|
20
|
+
primary_color TEXT,
|
|
21
|
+
auth_bg_color TEXT,
|
|
22
|
+
support_email TEXT,
|
|
23
|
+
website_url TEXT,
|
|
24
|
+
tagline TEXT,
|
|
25
|
+
meta_json TEXT,
|
|
26
|
+
created_at INTEGER NOT NULL,
|
|
27
|
+
updated_at INTEGER NOT NULL
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_identity_companies_slug
|
|
31
|
+
ON identity_companies(slug);
|
|
32
|
+
|
|
33
|
+
CREATE TABLE IF NOT EXISTS identity_native_handoffs (
|
|
34
|
+
handoff_hash TEXT PRIMARY KEY NOT NULL,
|
|
35
|
+
session_id TEXT NOT NULL,
|
|
36
|
+
challenge TEXT NOT NULL,
|
|
37
|
+
expires_at INTEGER NOT NULL,
|
|
38
|
+
created_at INTEGER NOT NULL,
|
|
39
|
+
consumed_at INTEGER,
|
|
40
|
+
FOREIGN KEY (session_id) REFERENCES identity_sessions(id)
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
CREATE INDEX IF NOT EXISTS idx_identity_native_handoffs_expires
|
|
44
|
+
ON identity_native_handoffs(expires_at);
|
|
45
|
+
|
|
46
|
+
-- Session type for browser vs desktop/native (default keeps existing rows as browser).
|
|
47
|
+
ALTER TABLE identity_sessions ADD COLUMN type TEXT NOT NULL DEFAULT 'browser';
|
|
48
|
+
|
|
49
|
+
-- Native OAuth transaction fields (optional on browser transactions).
|
|
50
|
+
ALTER TABLE identity_oauth_transactions ADD COLUMN client_type TEXT;
|
|
51
|
+
ALTER TABLE identity_oauth_transactions ADD COLUMN native_challenge TEXT;
|
|
52
|
+
ALTER TABLE identity_oauth_transactions ADD COLUMN native_redirect TEXT;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "@inneranimalmedia/agentsam-
|
|
3
|
-
"version": "2.6.
|
|
4
|
-
"private": true,
|
|
2
|
+
"name": "@inneranimalmedia/agentsam-identity",
|
|
3
|
+
"version": "2.6.7",
|
|
5
4
|
"type": "module",
|
|
6
|
-
"description": "Identity module for @inneranimalmedia/agentsam-sdk (workspace
|
|
5
|
+
"description": "Identity module for @inneranimalmedia/agentsam-sdk (workspace — publish via root SDK)",
|
|
7
6
|
"agentsam": {
|
|
8
7
|
"system": "identity",
|
|
9
8
|
"kind": "library",
|
|
@@ -27,10 +26,17 @@
|
|
|
27
26
|
"./contracts/provider": "./src/contracts/provider.js",
|
|
28
27
|
"./contracts/external-identity": "./src/contracts/external-identity.js",
|
|
29
28
|
"./contracts/auth-config": "./src/contracts/auth-config.js",
|
|
29
|
+
"./contracts/identity-store": "./src/contracts/identity-store.js",
|
|
30
30
|
"./oauth/callback": "./src/oauth/callback.js",
|
|
31
31
|
"./frontend/auth-portal/*": "./src/frontend/auth-portal/*",
|
|
32
32
|
"./providers/cloudflare": "./src/providers/cloudflare/index.js",
|
|
33
|
-
"./
|
|
33
|
+
"./providers/chatgpt": "./src/providers/chatgpt/index.js",
|
|
34
|
+
"./contracts/sign-in-options": "./src/contracts/sign-in-options.js",
|
|
35
|
+
"./oauth/consent-view": "./src/oauth/consent-view.js",
|
|
36
|
+
"./adapters/sqlite": "./src/adapters/sqlite/index.js",
|
|
37
|
+
"./adapters/portable-d1": "./src/adapters/portable-d1/index.js",
|
|
38
|
+
"./adapters/iam-compat": "./src/adapters/iam-compat/index.js",
|
|
39
|
+
"./adapters/cloudflare-d1": "./src/adapters/cloudflare-d1/index.js"
|
|
34
40
|
},
|
|
35
41
|
"scripts": {
|
|
36
42
|
"test": "node --test tests/*.test.mjs",
|
|
@@ -38,5 +44,20 @@
|
|
|
38
44
|
},
|
|
39
45
|
"engines": {
|
|
40
46
|
"node": ">=20"
|
|
41
|
-
}
|
|
47
|
+
},
|
|
48
|
+
"publishConfig": {
|
|
49
|
+
"access": "public"
|
|
50
|
+
},
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "git+https://github.com/SamPrimeaux/agentsam-sdk.git",
|
|
54
|
+
"directory": "packages/identity"
|
|
55
|
+
},
|
|
56
|
+
"files": [
|
|
57
|
+
"src",
|
|
58
|
+
"backend",
|
|
59
|
+
"migrations",
|
|
60
|
+
"schema",
|
|
61
|
+
"scripts"
|
|
62
|
+
]
|
|
42
63
|
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../protocol/database/agentsam.schema-pack.v1.schema.json",
|
|
3
|
+
"schema": "agentsam.schema-pack.v1",
|
|
4
|
+
"id": "agentsam.identity",
|
|
5
|
+
"version": "2.0.0",
|
|
6
|
+
"pack_family": "agentsam.identity",
|
|
7
|
+
"components": [
|
|
8
|
+
"identity.core",
|
|
9
|
+
"identity.oauth-client",
|
|
10
|
+
"identity.oauth-server"
|
|
11
|
+
],
|
|
12
|
+
"component_dependencies": {
|
|
13
|
+
"identity.core": [],
|
|
14
|
+
"identity.oauth-client": ["identity.core"],
|
|
15
|
+
"identity.oauth-server": ["identity.core"]
|
|
16
|
+
},
|
|
17
|
+
"adapters": [
|
|
18
|
+
"sqlite",
|
|
19
|
+
"portable-d1",
|
|
20
|
+
"iam-compat"
|
|
21
|
+
],
|
|
22
|
+
"sql": {
|
|
23
|
+
"portable_dir": "migrations/sqlite",
|
|
24
|
+
"files": {
|
|
25
|
+
"identity.core": [
|
|
26
|
+
"001_identity_core.sql",
|
|
27
|
+
"005_identity_company_native.sql"
|
|
28
|
+
],
|
|
29
|
+
"identity.oauth-client": [
|
|
30
|
+
"002_identity_oauth_client.sql"
|
|
31
|
+
],
|
|
32
|
+
"identity.oauth-server": [
|
|
33
|
+
"003_identity_oauth_server.sql",
|
|
34
|
+
"004_identity_oauth_consent_catalog.sql"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
"apply_order_fresh": [
|
|
38
|
+
"001_identity_core.sql",
|
|
39
|
+
"002_identity_oauth_client.sql",
|
|
40
|
+
"005_identity_company_native.sql"
|
|
41
|
+
],
|
|
42
|
+
"apply_order_upgrade_v1_to_v2": [
|
|
43
|
+
"005_identity_company_native.sql"
|
|
44
|
+
],
|
|
45
|
+
"optional_after_core": [
|
|
46
|
+
"003_identity_oauth_server.sql",
|
|
47
|
+
"004_identity_oauth_consent_catalog.sql"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"tables": {
|
|
51
|
+
"identity.core": [
|
|
52
|
+
"identity_schema_meta",
|
|
53
|
+
"identity_users",
|
|
54
|
+
"identity_external_accounts",
|
|
55
|
+
"identity_sessions",
|
|
56
|
+
"identity_auth_events",
|
|
57
|
+
"identity_app_registry",
|
|
58
|
+
"identity_route_registry",
|
|
59
|
+
"identity_companies",
|
|
60
|
+
"identity_native_handoffs"
|
|
61
|
+
],
|
|
62
|
+
"identity.oauth-client": [
|
|
63
|
+
"identity_oauth_transactions",
|
|
64
|
+
"identity_provider_connections"
|
|
65
|
+
],
|
|
66
|
+
"identity.oauth-server": [
|
|
67
|
+
"identity_oauth_clients",
|
|
68
|
+
"identity_oauth_authorization_codes",
|
|
69
|
+
"identity_oauth_access_tokens",
|
|
70
|
+
"identity_oauth_refresh_tokens",
|
|
71
|
+
"identity_oauth_resources",
|
|
72
|
+
"identity_oauth_scopes",
|
|
73
|
+
"identity_oauth_resource_scopes"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"table_patterns": ["identity_*"],
|
|
77
|
+
"seed_policy": "none",
|
|
78
|
+
"compatibility": {
|
|
79
|
+
"iam-compat": {
|
|
80
|
+
"owns_portable_schema": false,
|
|
81
|
+
"maps_onto": [
|
|
82
|
+
"accounts",
|
|
83
|
+
"auth_users",
|
|
84
|
+
"account_identities",
|
|
85
|
+
"auth_sessions",
|
|
86
|
+
"auth_event_log",
|
|
87
|
+
"identity_oauth_states",
|
|
88
|
+
"identity_native_handoffs",
|
|
89
|
+
"company"
|
|
90
|
+
],
|
|
91
|
+
"stable_alias": "createCloudflareD1Adapter"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"recovery": {
|
|
95
|
+
"authority": "createPasswordResetService",
|
|
96
|
+
"storage": "injected {get,put,delete} — not IdentityStore / not identity.core SQL",
|
|
97
|
+
"optional_future_pack": "identity.recovery"
|
|
98
|
+
},
|
|
99
|
+
"owner": "@inneranimalmedia/agentsam-sdk/identity",
|
|
100
|
+
"notes": "Pack family for portable IdentityStore. Component IDs remain the contract units. Portable SQL SSOT is migrations/sqlite/. IAM production tables are NOT this pack — use the iam-compat adapter against hosted schema. Secrets are credential_ref / vault references, never raw tokens in rows. Password recovery stays storage-agnostic."
|
|
101
|
+
}
|
|
@@ -59,14 +59,20 @@ function sanitizeUser(user) {
|
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
function cliArg(name) {
|
|
63
|
+
const i = process.argv.indexOf(name);
|
|
64
|
+
return i > 1 ? process.argv[i + 1] : undefined;
|
|
65
|
+
}
|
|
66
|
+
|
|
62
67
|
const request = await readStdin();
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
)
|
|
66
|
-
|
|
67
|
-
process.
|
|
68
|
-
|
|
69
|
-
);
|
|
68
|
+
const dbArg = cliArg('--db');
|
|
69
|
+
const manifestArg = cliArg('--manifest');
|
|
70
|
+
if (!dbArg || !manifestArg) {
|
|
71
|
+
process.stderr.write('usage: local-identity-bridge.mjs --db <sqlite path> --manifest <agentsam.app.json>\n');
|
|
72
|
+
process.exit(2);
|
|
73
|
+
}
|
|
74
|
+
const dbPath = path.resolve(dbArg);
|
|
75
|
+
const manifestPath = path.resolve(manifestArg);
|
|
70
76
|
|
|
71
77
|
fs.mkdirSync(path.dirname(dbPath), { recursive: true, mode: 0o700 });
|
|
72
78
|
const nativeDb = new DatabaseSync(dbPath);
|
|
@@ -119,15 +119,15 @@ function hubHtml(baseUrl) {
|
|
|
119
119
|
const PREVIEW_COMPANY = {
|
|
120
120
|
id: 'co_default',
|
|
121
121
|
slug: 'default',
|
|
122
|
-
name: '
|
|
123
|
-
legalName: '
|
|
124
|
-
logoUrl: '/shared/
|
|
122
|
+
name: 'Preview App',
|
|
123
|
+
legalName: 'Preview App',
|
|
124
|
+
logoUrl: '/shared/app-icon.png',
|
|
125
125
|
faviconUrl: null,
|
|
126
126
|
primaryColor: '#007AFF',
|
|
127
127
|
authBgColor: '#050508',
|
|
128
|
-
supportEmail: 'support@
|
|
129
|
-
websiteUrl: 'https://
|
|
130
|
-
tagline: '
|
|
128
|
+
supportEmail: 'support@example.com',
|
|
129
|
+
websiteUrl: 'https://example.com',
|
|
130
|
+
tagline: 'Welcome',
|
|
131
131
|
meta: {
|
|
132
132
|
privacyUrl: '/privacy',
|
|
133
133
|
termsUrl: '/terms',
|