agor-live 0.22.0 → 0.23.1
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/dist/cli/commands/admin/add-to-branch-group.d.ts +2 -13
- package/dist/cli/commands/admin/add-to-branch-group.d.ts.map +1 -1
- package/dist/cli/commands/admin/add-to-branch-group.js +133 -33
- package/dist/cli/commands/admin/create-branch-group.d.ts +2 -13
- package/dist/cli/commands/admin/create-branch-group.d.ts.map +1 -1
- package/dist/cli/commands/admin/create-branch-group.js +132 -38
- package/dist/cli/commands/admin/create-symlink.d.ts +2 -14
- package/dist/cli/commands/admin/create-symlink.d.ts.map +1 -1
- package/dist/cli/commands/admin/create-symlink.js +138 -61
- package/dist/cli/commands/admin/delete-branch-group.d.ts +2 -13
- package/dist/cli/commands/admin/delete-branch-group.d.ts.map +1 -1
- package/dist/cli/commands/admin/delete-branch-group.js +132 -28
- package/dist/cli/commands/admin/delete-user.d.ts +2 -13
- package/dist/cli/commands/admin/delete-user.d.ts.map +1 -1
- package/dist/cli/commands/admin/delete-user.js +132 -38
- package/dist/cli/commands/admin/ensure-user.d.ts +2 -14
- package/dist/cli/commands/admin/ensure-user.d.ts.map +1 -1
- package/dist/cli/commands/admin/ensure-user.js +131 -46
- package/dist/cli/commands/admin/remove-from-branch-group.d.ts +2 -13
- package/dist/cli/commands/admin/remove-from-branch-group.d.ts.map +1 -1
- package/dist/cli/commands/admin/remove-from-branch-group.js +133 -33
- package/dist/cli/commands/admin/remove-symlink.d.ts +2 -14
- package/dist/cli/commands/admin/remove-symlink.d.ts.map +1 -1
- package/dist/cli/commands/admin/remove-symlink.js +136 -49
- package/dist/cli/commands/admin/scrub-git-remotes.d.ts +2 -2
- package/dist/cli/commands/admin/scrub-git-remotes.d.ts.map +1 -1
- package/dist/cli/commands/admin/scrub-git-remotes.js +128 -86
- package/dist/cli/commands/admin/sync-user-symlinks.d.ts +2 -14
- package/dist/cli/commands/admin/sync-user-symlinks.d.ts.map +1 -1
- package/dist/cli/commands/admin/sync-user-symlinks.js +132 -43
- package/dist/cli/commands/auth/whoami.d.ts.map +1 -1
- package/dist/cli/commands/auth/whoami.js +2 -1
- package/dist/cli/commands/branch/env/request.test.d.ts +2 -0
- package/dist/cli/commands/branch/env/request.test.d.ts.map +1 -0
- package/dist/cli/commands/branch/env/request.test.js +17723 -0
- package/dist/cli/commands/branch/env/restart.d.ts.map +1 -1
- package/dist/cli/commands/branch/env/restart.js +7 -1
- package/dist/cli/commands/branch/env/start.d.ts.map +1 -1
- package/dist/cli/commands/branch/env/start.js +7 -1
- package/dist/cli/commands/branch/env/stop.d.ts.map +1 -1
- package/dist/cli/commands/branch/env/stop.js +7 -1
- package/dist/cli/commands/daemon/status.d.ts.map +1 -1
- package/dist/cli/commands/daemon/status.js +2 -1
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +140 -2
- package/dist/cli/commands/local/add-to-branch-group.d.ts +13 -0
- package/dist/cli/commands/local/add-to-branch-group.d.ts.map +1 -0
- package/dist/cli/commands/local/add-to-branch-group.js +37 -0
- package/dist/cli/commands/local/create-branch-group.d.ts +12 -0
- package/dist/cli/commands/local/create-branch-group.d.ts.map +1 -0
- package/dist/cli/commands/local/create-branch-group.js +35 -0
- package/dist/cli/commands/local/create-symlink.d.ts +14 -0
- package/dist/cli/commands/local/create-symlink.d.ts.map +1 -0
- package/dist/cli/commands/local/create-symlink.js +45 -0
- package/dist/cli/commands/{daemon → local/daemon}/sync.d.ts +1 -1
- package/dist/cli/commands/local/daemon/sync.d.ts.map +1 -0
- package/dist/cli/commands/{daemon → local/daemon}/sync.js +7 -6
- package/dist/cli/commands/local/delete-branch-group.d.ts +12 -0
- package/dist/cli/commands/local/delete-branch-group.d.ts.map +1 -0
- package/dist/cli/commands/local/delete-branch-group.js +35 -0
- package/dist/cli/commands/local/delete-user.d.ts +12 -0
- package/dist/cli/commands/local/delete-user.d.ts.map +1 -0
- package/dist/cli/commands/local/delete-user.js +36 -0
- package/dist/cli/commands/local/ensure-user.d.ts +12 -0
- package/dist/cli/commands/local/ensure-user.d.ts.map +1 -0
- package/dist/cli/commands/local/ensure-user.js +41 -0
- package/dist/cli/commands/local/remove-from-branch-group.d.ts +13 -0
- package/dist/cli/commands/local/remove-from-branch-group.d.ts.map +1 -0
- package/dist/cli/commands/local/remove-from-branch-group.js +37 -0
- package/dist/cli/commands/local/remove-symlink.d.ts +13 -0
- package/dist/cli/commands/local/remove-symlink.d.ts.map +1 -0
- package/dist/cli/commands/local/remove-symlink.js +39 -0
- package/dist/cli/commands/local/scrub-git-remotes.d.ts +9 -0
- package/dist/cli/commands/local/scrub-git-remotes.d.ts.map +1 -0
- package/dist/cli/commands/local/scrub-git-remotes.js +23 -0
- package/dist/cli/commands/{admin → local}/sync-unix.d.ts.map +1 -1
- package/dist/cli/commands/{admin → local}/sync-unix.js +3 -3
- package/dist/cli/commands/local/sync-user-symlinks.d.ts +12 -0
- package/dist/cli/commands/local/sync-user-symlinks.d.ts.map +1 -0
- package/dist/cli/commands/local/sync-user-symlinks.js +37 -0
- package/dist/cli/commands/telemetry/index.d.ts +7 -0
- package/dist/cli/commands/telemetry/index.d.ts.map +1 -0
- package/dist/cli/commands/telemetry/index.js +40 -0
- package/dist/cli/commands/telemetry/off.d.ts +6 -0
- package/dist/cli/commands/telemetry/off.d.ts.map +1 -0
- package/dist/cli/commands/telemetry/off.js +35 -0
- package/dist/cli/commands/telemetry/on.d.ts +6 -0
- package/dist/cli/commands/telemetry/on.d.ts.map +1 -0
- package/dist/cli/commands/telemetry/on.js +37 -0
- package/dist/cli/commands/telemetry/test.d.ts +6 -0
- package/dist/cli/commands/telemetry/test.d.ts.map +1 -0
- package/dist/cli/commands/telemetry/test.js +56 -0
- package/dist/cli/commands/user/create-admin.d.ts.map +1 -1
- package/dist/cli/commands/user/create-admin.js +81 -72
- package/dist/cli/commands/user/list.d.ts.map +1 -1
- package/dist/cli/commands/user/list.js +1 -0
- package/dist/cli/commands/whoami.js +2 -1
- package/dist/cli/lib/branch-environment-action.d.ts +21 -0
- package/dist/cli/lib/branch-environment-action.d.ts.map +1 -0
- package/dist/cli/lib/branch-environment-action.js +8 -0
- package/dist/core/api/index.cjs +7 -2
- package/dist/core/api/index.d.ts +13 -4
- package/dist/core/api/index.d.ts.map +1 -1
- package/dist/core/api/index.js +7 -2
- package/dist/core/claude/index.cjs +482 -77
- package/dist/core/claude/index.js +479 -76
- package/dist/core/claude-cli/index.cjs +11 -0
- package/dist/core/claude-cli/index.js +11 -0
- package/dist/core/claude-cli/pricing.d.ts.map +1 -1
- package/dist/core/client/index.cjs +35 -7
- package/dist/core/client/index.js +32 -7
- package/dist/core/config/browser.cjs +3 -5
- package/dist/core/config/browser.js +3 -5
- package/dist/core/config/config-manager.d.ts +33 -13
- package/dist/core/config/config-manager.d.ts.map +1 -1
- package/dist/core/config/index.cjs +4259 -4527
- package/dist/core/config/index.d.ts +1 -0
- package/dist/core/config/index.d.ts.map +1 -1
- package/dist/core/config/index.js +4295 -4583
- package/dist/core/config/key-resolver.d.ts.map +1 -1
- package/dist/core/config/multitenancy.d.ts +33 -0
- package/dist/core/config/multitenancy.d.ts.map +1 -0
- package/dist/core/config/security-resolver.d.ts +1 -0
- package/dist/core/config/security-resolver.d.ts.map +1 -1
- package/dist/core/config/types.d.ts +67 -4
- package/dist/core/config/types.d.ts.map +1 -1
- package/dist/core/db/client.d.ts +34 -2
- package/dist/core/db/client.d.ts.map +1 -1
- package/dist/core/db/database-wrapper.d.ts.map +1 -1
- package/dist/core/db/first-run-bootstrap.d.ts.map +1 -1
- package/dist/core/db/index.cjs +2422 -1084
- package/dist/core/db/index.d.ts +2 -1
- package/dist/core/db/index.d.ts.map +1 -1
- package/dist/core/db/index.js +2162 -852
- package/dist/core/db/migrate.d.ts.map +1 -1
- package/dist/core/db/repositories/artifacts.d.ts +27 -2
- package/dist/core/db/repositories/artifacts.d.ts.map +1 -1
- package/dist/core/db/repositories/base.d.ts +18 -0
- package/dist/core/db/repositories/base.d.ts.map +1 -1
- package/dist/core/db/repositories/board-comments.d.ts +17 -1
- package/dist/core/db/repositories/board-comments.d.ts.map +1 -1
- package/dist/core/db/repositories/board-objects.d.ts.map +1 -1
- package/dist/core/db/repositories/boards.d.ts +28 -4
- package/dist/core/db/repositories/boards.d.ts.map +1 -1
- package/dist/core/db/repositories/branch-access.d.ts +32 -0
- package/dist/core/db/repositories/branch-access.d.ts.map +1 -1
- package/dist/core/db/repositories/branches.d.ts +41 -1
- package/dist/core/db/repositories/branches.d.ts.map +1 -1
- package/dist/core/db/repositories/cards.d.ts +15 -1
- package/dist/core/db/repositories/cards.d.ts.map +1 -1
- package/dist/core/db/repositories/gateway-channels.d.ts.map +1 -1
- package/dist/core/db/repositories/gateway-outbound-messages.d.ts +19 -0
- package/dist/core/db/repositories/gateway-outbound-messages.d.ts.map +1 -0
- package/dist/core/db/repositories/index.d.ts +2 -0
- package/dist/core/db/repositories/index.d.ts.map +1 -1
- package/dist/core/db/repositories/messages.d.ts +9 -2
- package/dist/core/db/repositories/messages.d.ts.map +1 -1
- package/dist/core/db/repositories/repos.d.ts.map +1 -1
- package/dist/core/db/repositories/schedules.d.ts +12 -1
- package/dist/core/db/repositories/schedules.d.ts.map +1 -1
- package/dist/core/db/repositories/sessions.d.ts +49 -5
- package/dist/core/db/repositories/sessions.d.ts.map +1 -1
- package/dist/core/db/repositories/tasks.d.ts +7 -2
- package/dist/core/db/repositories/tasks.d.ts.map +1 -1
- package/dist/core/db/repositories/user-api-keys.d.ts +10 -1
- package/dist/core/db/repositories/user-api-keys.d.ts.map +1 -1
- package/dist/core/db/repositories/users.d.ts +8 -8
- package/dist/core/db/repositories/users.d.ts.map +1 -1
- package/dist/core/db/schema.d.ts +1460 -38
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.postgres.d.ts +1082 -37
- package/dist/core/db/schema.postgres.d.ts.map +1 -1
- package/dist/core/db/schema.sqlite.d.ts +397 -1
- package/dist/core/db/schema.sqlite.d.ts.map +1 -1
- package/dist/core/db/tenant-context.d.ts +26 -0
- package/dist/core/db/tenant-context.d.ts.map +1 -0
- package/dist/core/db/tenant-scope.d.ts +31 -0
- package/dist/core/db/tenant-scope.d.ts.map +1 -0
- package/dist/core/db/user-utils.d.ts +2 -2
- package/dist/core/db/user-utils.d.ts.map +1 -1
- package/dist/core/drizzle/postgres/0052_gateway_outbound_messages.sql +45 -0
- package/dist/core/drizzle/postgres/0053_user_token_invalidation.sql +1 -0
- package/dist/core/drizzle/postgres/0054_app_level_multitenancy.sql +219 -0
- package/dist/core/drizzle/postgres/0055_app_level_multitenancy_rls.sql +411 -0
- package/dist/core/drizzle/postgres/0056_composite_indexes.sql +15 -0
- package/dist/core/drizzle/postgres/0057_message_timestamp_indexes.sql +3 -0
- package/dist/core/drizzle/postgres/meta/_journal.json +42 -0
- package/dist/core/drizzle/sqlite/0061_gateway_outbound_messages.sql +38 -0
- package/dist/core/drizzle/sqlite/0062_user_token_invalidation.sql +1 -0
- package/dist/core/drizzle/sqlite/0063_composite_indexes.sql +10 -0
- package/dist/core/drizzle/sqlite/0064_message_timestamp_indexes.sql +2 -0
- package/dist/core/drizzle/sqlite/meta/_journal.json +28 -0
- package/dist/core/environment/render-snapshot.cjs +1 -4
- package/dist/core/environment/render-snapshot.js +1 -4
- package/dist/core/environment/webhook.cjs +1 -4
- package/dist/core/environment/webhook.js +1 -4
- package/dist/core/gateway/connector.d.ts +10 -1
- package/dist/core/gateway/connector.d.ts.map +1 -1
- package/dist/core/gateway/connectors/slack-manifest.cjs +108 -0
- package/dist/core/gateway/connectors/slack-manifest.d.ts +85 -0
- package/dist/core/gateway/connectors/slack-manifest.d.ts.map +1 -0
- package/dist/core/gateway/connectors/slack-manifest.js +81 -0
- package/dist/core/gateway/connectors/slack.d.ts +101 -4
- package/dist/core/gateway/connectors/slack.d.ts.map +1 -1
- package/dist/core/gateway/index.cjs +495 -29
- package/dist/core/gateway/index.d.ts +4 -1
- package/dist/core/gateway/index.d.ts.map +1 -1
- package/dist/core/gateway/index.js +490 -28
- package/dist/core/gateway/system-message.d.ts.map +1 -1
- package/dist/core/git/exec.cjs +24 -0
- package/dist/core/git/exec.d.ts +6 -4
- package/dist/core/git/exec.d.ts.map +1 -1
- package/dist/core/git/exec.js +2 -0
- package/dist/core/git/index.cjs +3 -1363
- package/dist/core/git/index.d.ts +4 -614
- package/dist/core/git/index.d.ts.map +1 -1
- package/dist/core/git/index.js +1 -1304
- package/dist/core/git/pure.cjs +24 -0
- package/dist/core/git/pure.d.ts +2 -27
- package/dist/core/git/pure.d.ts.map +1 -1
- package/dist/core/git/pure.js +2 -0
- package/dist/core/index.cjs +11137 -10604
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +11673 -10630
- package/dist/core/lib/feathers-validation.cjs +6 -1
- package/dist/core/lib/feathers-validation.d.ts +1 -0
- package/dist/core/lib/feathers-validation.d.ts.map +1 -1
- package/dist/core/lib/feathers-validation.js +6 -1
- package/dist/core/local-actions/git-remotes.d.ts +7 -0
- package/dist/core/local-actions/git-remotes.d.ts.map +1 -0
- package/dist/core/local-actions/index.cjs +7941 -0
- package/dist/core/local-actions/index.d.ts +6 -0
- package/dist/core/local-actions/index.d.ts.map +1 -0
- package/dist/core/local-actions/index.js +7943 -0
- package/dist/core/local-actions/symlinks.d.ts +20 -0
- package/dist/core/local-actions/symlinks.d.ts.map +1 -0
- package/dist/core/local-actions/types.d.ts +14 -0
- package/dist/core/local-actions/types.d.ts.map +1 -0
- package/dist/core/local-actions/unix-groups.d.ts +16 -0
- package/dist/core/local-actions/unix-groups.d.ts.map +1 -0
- package/dist/core/local-actions/unix-users.d.ts +12 -0
- package/dist/core/local-actions/unix-users.d.ts.map +1 -0
- package/dist/core/mcp/index.cjs +352 -25
- package/dist/core/mcp/index.js +351 -24
- package/dist/core/models/browser.cjs +148 -25
- package/dist/core/models/browser.js +144 -25
- package/dist/core/models/claude.d.ts +2 -2
- package/dist/core/models/claude.d.ts.map +1 -1
- package/dist/core/models/codex.d.ts +205 -21
- package/dist/core/models/codex.d.ts.map +1 -1
- package/dist/core/models/index.cjs +148 -25
- package/dist/core/models/index.js +144 -25
- package/dist/core/package.json +24 -0
- package/dist/core/seed/demo-fixtures.d.ts +87 -0
- package/dist/core/seed/demo-fixtures.d.ts.map +1 -0
- package/dist/core/seed/dev-fixtures.d.ts.map +1 -1
- package/dist/core/seed/index.cjs +8410 -5504
- package/dist/core/seed/index.d.ts +1 -0
- package/dist/core/seed/index.d.ts.map +1 -1
- package/dist/core/seed/index.js +8434 -5533
- package/dist/core/sessions/index.cjs +110 -24
- package/dist/core/sessions/index.js +110 -24
- package/dist/core/telemetry/index.cjs +361 -0
- package/dist/core/telemetry/index.d.ts +5 -0
- package/dist/core/telemetry/index.d.ts.map +1 -0
- package/dist/core/telemetry/index.js +315 -0
- package/dist/core/telemetry/logger.d.ts +44 -0
- package/dist/core/telemetry/logger.d.ts.map +1 -0
- package/dist/core/telemetry/model-normalization.d.ts +3 -0
- package/dist/core/telemetry/model-normalization.d.ts.map +1 -0
- package/dist/core/telemetry/types.d.ts +47 -0
- package/dist/core/telemetry/types.d.ts.map +1 -0
- package/dist/core/telemetry/version.d.ts +9 -0
- package/dist/core/telemetry/version.d.ts.map +1 -0
- package/dist/core/templates/agor-system-prompt.md +1 -0
- package/dist/core/tools/mcp/oauth-refresh.cjs +532 -102
- package/dist/core/tools/mcp/oauth-refresh.js +530 -103
- package/dist/core/types/board.d.ts +2 -0
- package/dist/core/types/board.d.ts.map +1 -1
- package/dist/core/types/branch.d.ts +13 -0
- package/dist/core/types/branch.d.ts.map +1 -1
- package/dist/core/types/config-services.d.ts.map +1 -1
- package/dist/core/types/feathers.d.ts +6 -0
- package/dist/core/types/feathers.d.ts.map +1 -1
- package/dist/core/types/gateway.d.ts +76 -1
- package/dist/core/types/gateway.d.ts.map +1 -1
- package/dist/core/types/index.cjs +25 -0
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js +22 -0
- package/dist/core/types/schedule.d.ts +4 -3
- package/dist/core/types/schedule.d.ts.map +1 -1
- package/dist/core/types/session.d.ts +7 -1
- package/dist/core/types/session.d.ts.map +1 -1
- package/dist/core/types/tenant.d.ts +15 -0
- package/dist/core/types/tenant.d.ts.map +1 -0
- package/dist/core/types/user.d.ts +61 -0
- package/dist/core/types/user.d.ts.map +1 -1
- package/dist/core/unix/index.cjs +1056 -674
- package/dist/core/unix/index.js +1003 -623
- package/dist/core/utils/emoji-shortcodes.d.ts +13 -0
- package/dist/core/utils/emoji-shortcodes.d.ts.map +1 -0
- package/dist/core/yaml/index.cjs +8 -8
- package/dist/core/yaml/index.d.ts +1 -1
- package/dist/core/yaml/index.d.ts.map +1 -1
- package/dist/core/yaml/index.js +7 -7
- package/dist/daemon/adapters/drizzle.d.ts +26 -4
- package/dist/daemon/adapters/drizzle.d.ts.map +1 -1
- package/dist/daemon/adapters/drizzle.js +68 -7
- package/dist/daemon/auth/api-key-strategy.js +1 -1
- package/dist/daemon/auth/executor-runtime-scope.d.ts.map +1 -1
- package/dist/daemon/auth/executor-runtime-scope.js +19 -5
- package/dist/daemon/auth/launch-auth.d.ts +5 -4
- package/dist/daemon/auth/launch-auth.d.ts.map +1 -1
- package/dist/daemon/auth/launch-auth.js +123 -39
- package/dist/daemon/auth/refresh-token-service.d.ts +22 -0
- package/dist/daemon/auth/refresh-token-service.d.ts.map +1 -0
- package/dist/daemon/auth/refresh-token-service.js +133 -0
- package/dist/daemon/auth/runtime-tokens.d.ts +3 -1
- package/dist/daemon/auth/runtime-tokens.d.ts.map +1 -1
- package/dist/daemon/auth/runtime-tokens.js +17 -4
- package/dist/daemon/auth/service-jwt-strategy.d.ts +2 -1
- package/dist/daemon/auth/service-jwt-strategy.d.ts.map +1 -1
- package/dist/daemon/auth/service-jwt-strategy.js +127 -1
- package/dist/daemon/auth/token-invalidation.d.ts +11 -0
- package/dist/daemon/auth/token-invalidation.d.ts.map +1 -0
- package/dist/daemon/auth/token-invalidation.js +38 -0
- package/dist/daemon/auth/user-redaction.d.ts +12 -0
- package/dist/daemon/auth/user-redaction.d.ts.map +1 -0
- package/dist/daemon/auth/user-redaction.js +13 -0
- package/dist/daemon/declarations.d.ts +4 -4
- package/dist/daemon/declarations.d.ts.map +1 -1
- package/dist/daemon/hooks/gateway-route.d.ts.map +1 -1
- package/dist/daemon/hooks/gateway-route.js +23 -13
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +7234 -2866
- package/dist/daemon/knowledge/pgvector.d.ts +3 -3
- package/dist/daemon/knowledge/pgvector.d.ts.map +1 -1
- package/dist/daemon/knowledge/pgvector.js +24 -0
- package/dist/daemon/knowledge/units.d.ts +2 -2
- package/dist/daemon/knowledge/units.d.ts.map +1 -1
- package/dist/daemon/main.js +7234 -2866
- package/dist/daemon/mcp/server.d.ts +3 -3
- package/dist/daemon/mcp/server.d.ts.map +1 -1
- package/dist/daemon/mcp/server.js +1467 -71
- package/dist/daemon/mcp/tokens.d.ts +2 -2
- package/dist/daemon/mcp/tokens.d.ts.map +1 -1
- package/dist/daemon/mcp/tokens.js +5 -1
- package/dist/daemon/mcp/tool-registry.d.ts.map +1 -1
- package/dist/daemon/mcp/tool-registry.js +1 -0
- package/dist/daemon/mcp/tools/analytics.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/analytics.js +548 -23
- package/dist/daemon/mcp/tools/artifacts.js +510 -19
- package/dist/daemon/mcp/tools/boards.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/boards.js +517 -20
- package/dist/daemon/mcp/tools/branches.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/branches.js +574 -49
- package/dist/daemon/mcp/tools/card-types.js +508 -17
- package/dist/daemon/mcp/tools/cards.js +508 -17
- package/dist/daemon/mcp/tools/environment.js +516 -17
- package/dist/daemon/mcp/tools/gateway-channels.d.ts +4 -0
- package/dist/daemon/mcp/tools/gateway-channels.d.ts.map +1 -0
- package/dist/daemon/mcp/tools/gateway-channels.js +16035 -0
- package/dist/daemon/mcp/tools/knowledge.js +508 -17
- package/dist/daemon/mcp/tools/mcp-servers.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/mcp-servers.js +843 -17
- package/dist/daemon/mcp/tools/messages.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/messages.js +568 -31
- package/dist/daemon/mcp/tools/proxies.js +518 -19
- package/dist/daemon/mcp/tools/repos.js +508 -17
- package/dist/daemon/mcp/tools/schedules.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/schedules.js +511 -18
- package/dist/daemon/mcp/tools/search.js +508 -17
- package/dist/daemon/mcp/tools/sessions.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/sessions.js +521 -23
- package/dist/daemon/mcp/tools/tasks.js +508 -17
- package/dist/daemon/mcp/tools/users.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/users.js +527 -22
- package/dist/daemon/mcp/tools/widgets.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/widgets.js +536 -18
- package/dist/daemon/register-hooks.d.ts +3 -2
- package/dist/daemon/register-hooks.d.ts.map +1 -1
- package/dist/daemon/register-hooks.js +894 -582
- package/dist/daemon/register-routes.d.ts +3 -2
- package/dist/daemon/register-routes.d.ts.map +1 -1
- package/dist/daemon/register-routes.js +2715 -816
- package/dist/daemon/register-services.d.ts +2 -2
- package/dist/daemon/register-services.d.ts.map +1 -1
- package/dist/daemon/register-services.js +2445 -633
- package/dist/daemon/services/artifacts.d.ts +34 -6
- package/dist/daemon/services/artifacts.d.ts.map +1 -1
- package/dist/daemon/services/artifacts.js +109 -8
- package/dist/daemon/services/assistant-knowledge.d.ts +2 -2
- package/dist/daemon/services/assistant-knowledge.d.ts.map +1 -1
- package/dist/daemon/services/board-comments.d.ts +8 -5
- package/dist/daemon/services/board-comments.d.ts.map +1 -1
- package/dist/daemon/services/board-comments.js +78 -13
- package/dist/daemon/services/board-objects.d.ts +8 -5
- package/dist/daemon/services/board-objects.d.ts.map +1 -1
- package/dist/daemon/services/board-objects.js +14 -4
- package/dist/daemon/services/boards.d.ts +34 -5
- package/dist/daemon/services/boards.d.ts.map +1 -1
- package/dist/daemon/services/boards.js +116 -8
- package/dist/daemon/services/branch-owners.d.ts +3 -1
- package/dist/daemon/services/branch-owners.d.ts.map +1 -1
- package/dist/daemon/services/branch-owners.js +31 -4
- package/dist/daemon/services/branches.d.ts +31 -8
- package/dist/daemon/services/branches.d.ts.map +1 -1
- package/dist/daemon/services/branches.js +242 -35
- package/dist/daemon/services/card-types.d.ts +3 -3
- package/dist/daemon/services/card-types.d.ts.map +1 -1
- package/dist/daemon/services/card-types.js +68 -7
- package/dist/daemon/services/cards.d.ts +19 -4
- package/dist/daemon/services/cards.d.ts.map +1 -1
- package/dist/daemon/services/cards.js +92 -8
- package/dist/daemon/services/check-auth.d.ts +2 -2
- package/dist/daemon/services/check-auth.d.ts.map +1 -1
- package/dist/daemon/services/claude-cli-integration.d.ts +4 -1
- package/dist/daemon/services/claude-cli-integration.d.ts.map +1 -1
- package/dist/daemon/services/claude-cli-integration.js +117 -65
- package/dist/daemon/services/claude-models.d.ts +3 -3
- package/dist/daemon/services/claude-models.d.ts.map +1 -1
- package/dist/daemon/services/claude-models.js +383 -272
- package/dist/daemon/services/config.d.ts +12 -4
- package/dist/daemon/services/config.d.ts.map +1 -1
- package/dist/daemon/services/config.js +39 -3
- package/dist/daemon/services/copilot-models.d.ts +3 -3
- package/dist/daemon/services/copilot-models.d.ts.map +1 -1
- package/dist/daemon/services/cursor-models.d.ts +3 -3
- package/dist/daemon/services/cursor-models.d.ts.map +1 -1
- package/dist/daemon/services/files.d.ts +3 -3
- package/dist/daemon/services/files.d.ts.map +1 -1
- package/dist/daemon/services/files.js +24 -5
- package/dist/daemon/services/gateway-channels-test.d.ts +24 -0
- package/dist/daemon/services/gateway-channels-test.d.ts.map +1 -0
- package/dist/daemon/services/gateway-channels-test.js +66 -0
- package/dist/daemon/services/gateway-channels.d.ts +3 -3
- package/dist/daemon/services/gateway-channels.d.ts.map +1 -1
- package/dist/daemon/services/gateway-channels.js +68 -7
- package/dist/daemon/services/gateway.d.ts +48 -3
- package/dist/daemon/services/gateway.d.ts.map +1 -1
- package/dist/daemon/services/gateway.js +606 -60
- package/dist/daemon/services/github-app-setup.d.ts +3 -3
- package/dist/daemon/services/github-app-setup.d.ts.map +1 -1
- package/dist/daemon/services/groups.d.ts +5 -5
- package/dist/daemon/services/groups.d.ts.map +1 -1
- package/dist/daemon/services/health-monitor.d.ts +34 -2
- package/dist/daemon/services/health-monitor.d.ts.map +1 -1
- package/dist/daemon/services/health-monitor.js +145 -23
- package/dist/daemon/services/knowledge-document-edits.d.ts +3 -3
- package/dist/daemon/services/knowledge-document-edits.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-documents.d.ts +3 -3
- package/dist/daemon/services/knowledge-documents.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-documents.js +92 -7
- package/dist/daemon/services/knowledge-embedding-indexer.d.ts +7 -2
- package/dist/daemon/services/knowledge-embedding-indexer.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-embedding-indexer.js +37 -3
- package/dist/daemon/services/knowledge-graph.d.ts +3 -3
- package/dist/daemon/services/knowledge-graph.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-indexing.d.ts +3 -3
- package/dist/daemon/services/knowledge-indexing.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-namespaces.d.ts +3 -3
- package/dist/daemon/services/knowledge-namespaces.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-namespaces.js +72 -8
- package/dist/daemon/services/knowledge-reindex.d.ts +3 -3
- package/dist/daemon/services/knowledge-reindex.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-reindex.js +28 -1
- package/dist/daemon/services/knowledge-search.d.ts +3 -3
- package/dist/daemon/services/knowledge-search.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-settings.d.ts +3 -3
- package/dist/daemon/services/knowledge-settings.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-settings.js +24 -0
- package/dist/daemon/services/knowledge-versions.d.ts +3 -3
- package/dist/daemon/services/knowledge-versions.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-versions.js +68 -7
- package/dist/daemon/services/leaderboard.d.ts +14 -6
- package/dist/daemon/services/leaderboard.d.ts.map +1 -1
- package/dist/daemon/services/leaderboard.js +74 -15
- package/dist/daemon/services/local-actions.d.ts +13 -0
- package/dist/daemon/services/local-actions.d.ts.map +1 -0
- package/dist/daemon/services/local-actions.js +120 -0
- package/dist/daemon/services/mcp-servers.d.ts +3 -3
- package/dist/daemon/services/mcp-servers.d.ts.map +1 -1
- package/dist/daemon/services/mcp-servers.js +68 -7
- package/dist/daemon/services/messages.d.ts +10 -6
- package/dist/daemon/services/messages.d.ts.map +1 -1
- package/dist/daemon/services/messages.js +87 -7
- package/dist/daemon/services/repos.d.ts +6 -6
- package/dist/daemon/services/repos.d.ts.map +1 -1
- package/dist/daemon/services/repos.js +131 -32
- package/dist/daemon/services/scheduler.d.ts +23 -27
- package/dist/daemon/services/scheduler.d.ts.map +1 -1
- package/dist/daemon/services/scheduler.js +55 -28
- package/dist/daemon/services/schedules.d.ts +3 -3
- package/dist/daemon/services/schedules.d.ts.map +1 -1
- package/dist/daemon/services/schedules.js +68 -7
- package/dist/daemon/services/session-env-selections.d.ts +3 -3
- package/dist/daemon/services/session-env-selections.d.ts.map +1 -1
- package/dist/daemon/services/session-mcp-servers.d.ts +3 -3
- package/dist/daemon/services/session-mcp-servers.d.ts.map +1 -1
- package/dist/daemon/services/session-token-service.d.ts.map +1 -1
- package/dist/daemon/services/session-token-service.js +3 -0
- package/dist/daemon/services/sessions.d.ts +9 -5
- package/dist/daemon/services/sessions.d.ts.map +1 -1
- package/dist/daemon/services/sessions.js +143 -10
- package/dist/daemon/services/tasks.d.ts +11 -5
- package/dist/daemon/services/tasks.d.ts.map +1 -1
- package/dist/daemon/services/tasks.js +199 -39
- package/dist/daemon/services/terminals.d.ts +21 -3
- package/dist/daemon/services/terminals.d.ts.map +1 -1
- package/dist/daemon/services/terminals.js +81 -25
- package/dist/daemon/services/thread-session-map.d.ts +3 -3
- package/dist/daemon/services/thread-session-map.d.ts.map +1 -1
- package/dist/daemon/services/thread-session-map.js +68 -7
- package/dist/daemon/services/user-avatar-sync.d.ts +21 -0
- package/dist/daemon/services/user-avatar-sync.d.ts.map +1 -0
- package/dist/daemon/services/user-avatar-sync.js +267 -0
- package/dist/daemon/services/users.d.ts +29 -9
- package/dist/daemon/services/users.d.ts.map +1 -1
- package/dist/daemon/services/users.js +383 -30
- package/dist/daemon/services/zone-trigger.d.ts.map +1 -1
- package/dist/daemon/services/zone-trigger.js +17 -4
- package/dist/daemon/setup/build-info.d.ts +1 -1
- package/dist/daemon/setup/build-info.d.ts.map +1 -1
- package/dist/daemon/setup/build-info.js +5 -1
- package/dist/daemon/setup/database.d.ts +8 -3
- package/dist/daemon/setup/database.d.ts.map +1 -1
- package/dist/daemon/setup/database.js +26 -6
- package/dist/daemon/setup/first-run-admin.d.ts +2 -2
- package/dist/daemon/setup/first-run-admin.d.ts.map +1 -1
- package/dist/daemon/setup/index.js +97 -17
- package/dist/daemon/setup/socketio.d.ts +10 -1
- package/dist/daemon/setup/socketio.d.ts.map +1 -1
- package/dist/daemon/setup/socketio.js +68 -10
- package/dist/daemon/startup.d.ts +13 -2
- package/dist/daemon/startup.d.ts.map +1 -1
- package/dist/daemon/startup.js +348 -86
- package/dist/daemon/utils/append-system-message.d.ts +2 -2
- package/dist/daemon/utils/append-system-message.d.ts.map +1 -1
- package/dist/daemon/utils/apply-session-config-defaults.d.ts.map +1 -1
- package/dist/daemon/utils/apply-session-config-defaults.js +12 -1
- package/dist/daemon/utils/authorization.d.ts +3 -1
- package/dist/daemon/utils/authorization.d.ts.map +1 -1
- package/dist/daemon/utils/authorization.js +21 -6
- package/dist/daemon/utils/branch-authorization.d.ts +30 -0
- package/dist/daemon/utils/branch-authorization.d.ts.map +1 -1
- package/dist/daemon/utils/branch-authorization.js +63 -5
- package/dist/daemon/utils/branch-inspect.d.ts +1 -0
- package/dist/daemon/utils/branch-inspect.d.ts.map +1 -1
- package/dist/daemon/utils/branch-inspect.js +11 -3
- package/dist/daemon/utils/executor-read-impersonation.d.ts +2 -2
- package/dist/daemon/utils/executor-read-impersonation.d.ts.map +1 -1
- package/dist/daemon/utils/git-impersonation.d.ts +10 -10
- package/dist/daemon/utils/git-impersonation.d.ts.map +1 -1
- package/dist/daemon/utils/git-remote-credential-scan.d.ts +3 -3
- package/dist/daemon/utils/git-remote-credential-scan.d.ts.map +1 -1
- package/dist/daemon/utils/git-remote-credential-scan.js +6 -2
- package/dist/daemon/utils/mcp-token-authorization.d.ts +18 -13
- package/dist/daemon/utils/mcp-token-authorization.d.ts.map +1 -1
- package/dist/daemon/utils/mcp-token-authorization.js +11 -5
- package/dist/daemon/utils/open-source-telemetry-config.d.ts +6 -0
- package/dist/daemon/utils/open-source-telemetry-config.d.ts.map +1 -0
- package/dist/daemon/utils/open-source-telemetry-config.js +21 -0
- package/dist/daemon/utils/open-source-telemetry-heartbeat.d.ts +7 -0
- package/dist/daemon/utils/open-source-telemetry-heartbeat.d.ts.map +1 -0
- package/dist/daemon/utils/open-source-telemetry-heartbeat.js +15 -0
- package/dist/daemon/utils/open-source-telemetry-usage.d.ts +9 -0
- package/dist/daemon/utils/open-source-telemetry-usage.d.ts.map +1 -0
- package/dist/daemon/utils/open-source-telemetry-usage.js +121 -0
- package/dist/daemon/utils/realign-repo-origin.d.ts +3 -3
- package/dist/daemon/utils/realign-repo-origin.d.ts.map +1 -1
- package/dist/daemon/utils/realign-repo-origin.js +47 -16
- package/dist/daemon/utils/realtime-publish.d.ts +2 -0
- package/dist/daemon/utils/realtime-publish.d.ts.map +1 -1
- package/dist/daemon/utils/realtime-publish.js +51 -10
- package/dist/daemon/utils/session-state-hooks.d.ts +3 -3
- package/dist/daemon/utils/session-state-hooks.d.ts.map +1 -1
- package/dist/daemon/utils/session-turn-lock.d.ts +8 -1
- package/dist/daemon/utils/session-turn-lock.d.ts.map +1 -1
- package/dist/daemon/utils/session-turn-lock.js +25 -2
- package/dist/daemon/utils/spawn-executor.d.ts +23 -1
- package/dist/daemon/utils/spawn-executor.d.ts.map +1 -1
- package/dist/daemon/utils/spawn-executor.js +34 -4
- package/dist/daemon/utils/tenant-db-scope.d.ts +20 -0
- package/dist/daemon/utils/tenant-db-scope.d.ts.map +1 -0
- package/dist/daemon/utils/tenant-db-scope.js +114 -0
- package/dist/daemon/utils/unix-group-init.d.ts +3 -3
- package/dist/daemon/utils/unix-group-init.d.ts.map +1 -1
- package/dist/daemon/utils/upload.d.ts +6 -9
- package/dist/daemon/utils/upload.d.ts.map +1 -1
- package/dist/daemon/utils/upload.js +30 -37
- package/dist/daemon/widgets/env-vars/index.d.ts +26 -1
- package/dist/daemon/widgets/env-vars/index.d.ts.map +1 -1
- package/dist/daemon/widgets/env-vars/index.js +145 -21
- package/dist/daemon/widgets/index.js +137 -21
- package/dist/executor/commands/environment.d.ts.map +1 -1
- package/dist/executor/commands/environment.js +9 -5
- package/dist/executor/commands/git.js +1 -1
- package/dist/executor/git/index.d.ts +8 -0
- package/dist/executor/git/index.d.ts.map +1 -0
- package/dist/executor/git/index.js +7 -0
- package/dist/executor/handlers/sdk/base-executor.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/base-executor.js +4 -1
- package/dist/executor/handlers/sdk/git-safe-directory.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/git-safe-directory.js +1 -1
- package/dist/executor/sdk-handlers/base/diff-enrichment.js +1 -1
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +6 -10
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/codex-tool.js +12 -15
- package/dist/executor/sdk-handlers/codex/normalizer.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/normalizer.js +11 -1
- package/dist/executor/sdk-handlers/codex/pricing/litellm-openai-model-prices.json +3663 -0
- package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.d.ts +31 -0
- package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.d.ts.map +1 -0
- package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.js +46 -0
- package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/prompt-service.js +61 -6
- package/dist/executor/sdk-handlers/codex/usage.d.ts +14 -23
- package/dist/executor/sdk-handlers/codex/usage.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/usage.js +18 -33
- package/dist/executor/services/feathers-client.js +5 -5
- package/dist/git/index.cjs +1101 -0
- package/dist/git/index.d.ts +533 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +1022 -0
- package/dist/git/package.json +21 -0
- package/dist/git/pure.cjs +185 -0
- package/dist/git/pure.d.ts +39 -0
- package/dist/git/pure.d.ts.map +1 -0
- package/dist/git/pure.js +139 -0
- package/dist/ui/assets/AgorEmojiPickerInner-DQjr8M3_.js +1 -0
- package/dist/ui/assets/App-hJtcOxHv.js +5 -0
- package/dist/ui/assets/App-hJtcOxHv.js.gz +0 -0
- package/dist/ui/assets/AppNode-BhuMpn8O.js +1 -0
- package/dist/ui/assets/AppNode-BhuMpn8O.js.gz +0 -0
- package/dist/ui/assets/ArtifactConsentModal-oMMzRn8L.js +1 -0
- package/dist/ui/assets/ArtifactConsentModal-oMMzRn8L.js.gz +0 -0
- package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js +9 -0
- package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js.gz +0 -0
- package/dist/ui/assets/ArtifactNode-BzQcrwFS.js +9 -0
- package/dist/ui/assets/ArtifactNode-BzQcrwFS.js.gz +0 -0
- package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js +19 -0
- package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js.gz +0 -0
- package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js +34 -0
- package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js.gz +0 -0
- package/dist/ui/assets/CodeEditor.inner-Cuj6RuLL.js +7 -0
- package/dist/ui/assets/CodeEditor.inner-Cuj6RuLL.js.gz +0 -0
- package/dist/ui/assets/ConversationView-9-3ma1u-.js +1 -0
- package/dist/ui/assets/ConversationView-9-3ma1u-.js.gz +0 -0
- package/dist/ui/assets/EmbeddedTerminal-Lx5I9EOJ.js +2 -0
- package/dist/ui/assets/EmbeddedTerminal-Lx5I9EOJ.js.gz +0 -0
- package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js +24 -0
- package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js.gz +0 -0
- package/dist/ui/assets/{MarketingScreenshotPage-zv5RUCuV.js → MarketingScreenshotPage-CmDPBHOl.js} +2 -2
- package/dist/ui/assets/MarketingScreenshotPage-CmDPBHOl.js.gz +0 -0
- package/dist/ui/assets/MobileApp-BpgSG_gz.js +1 -0
- package/dist/ui/assets/MobileApp-BpgSG_gz.js.gz +0 -0
- package/dist/ui/assets/SessionCanvas-B6_mtlxK.js +13 -0
- package/dist/ui/assets/SessionCanvas-B6_mtlxK.js.gz +0 -0
- package/dist/ui/assets/{SessionCanvas-mEmYGZhC.css → SessionCanvas-Bh7Yg5dZ.css} +1 -1
- package/dist/ui/assets/SessionCanvas-Bh7Yg5dZ.css.gz +0 -0
- package/dist/ui/assets/{StreamdownDemoPage-wzWaqWwr.js → StreamdownDemoPage-okKKR2QH.js} +2 -2
- package/dist/ui/assets/StreamdownDemoPage-okKKR2QH.js.gz +0 -0
- package/dist/ui/assets/TerminalModal-D9jMGZXv.js +2 -0
- package/dist/ui/assets/TerminalModal-D9jMGZXv.js.gz +0 -0
- package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js +1 -0
- package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js.gz +0 -0
- package/dist/ui/assets/ThemedSyntaxHighlighter.inner-C1FdIHn0.js +1 -0
- package/dist/ui/assets/{antd-CfbbHJOz.js → antd-DT5ackd0.js} +5 -5
- package/dist/ui/assets/{antd-CfbbHJOz.js.gz → antd-DT5ackd0.js.gz} +0 -0
- package/dist/ui/assets/architecture-U656AL7Q-DMnxkQRZ.js +1 -0
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-DwTJGGoj.js +36 -0
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-DwTJGGoj.js.gz +0 -0
- package/dist/ui/assets/{blockDiagram-VD42YOAC-BhZaEN19.js → blockDiagram-VD42YOAC-Dh1_TVW2.js} +4 -4
- package/dist/ui/assets/blockDiagram-VD42YOAC-Dh1_TVW2.js.gz +0 -0
- package/dist/ui/assets/{c4Diagram-YG6GDRKO-Dk_UH-sY.js → c4Diagram-YG6GDRKO-B1e96AcB.js} +2 -2
- package/dist/ui/assets/c4Diagram-YG6GDRKO-B1e96AcB.js.gz +0 -0
- package/dist/ui/assets/channel-Jv4dT4S5.js +1 -0
- package/dist/ui/assets/{chunk-4BX2VUAB-XprbG2TG.js → chunk-4BX2VUAB-BODpCjJx.js} +1 -1
- package/dist/ui/assets/chunk-55IACEB6-lJXvUquf.js +1 -0
- package/dist/ui/assets/{chunk-ABZYJK2D-BJcrryHK.js → chunk-ABZYJK2D-DCTXWSzV.js} +3 -3
- package/dist/ui/assets/chunk-ABZYJK2D-DCTXWSzV.js.gz +0 -0
- package/dist/ui/assets/{chunk-AGHRB4JF-DvxmfbM0.js → chunk-AGHRB4JF-CbNphBjE.js} +1 -1
- package/dist/ui/assets/chunk-AGHRB4JF-CbNphBjE.js.gz +0 -0
- package/dist/ui/assets/{chunk-ATLVNIR6-DbeJ0OrR.js → chunk-ATLVNIR6-rWg3qxof.js} +1 -1
- package/dist/ui/assets/chunk-ATLVNIR6-rWg3qxof.js.gz +0 -0
- package/dist/ui/assets/{chunk-B4BG7PRW-C53q2ggf.js → chunk-B4BG7PRW-CgtLCbpE.js} +3 -3
- package/dist/ui/assets/chunk-B4BG7PRW-CgtLCbpE.js.gz +0 -0
- package/dist/ui/assets/{chunk-CVBHYZKI-B3EBSlb3.js → chunk-CVBHYZKI-DTL6Zgr0.js} +1 -1
- package/dist/ui/assets/{chunk-DI55MBZ5-vIyNEQN-.js → chunk-DI55MBZ5-Dwvx2Kva.js} +1 -1
- package/dist/ui/assets/chunk-DI55MBZ5-Dwvx2Kva.js.gz +0 -0
- package/dist/ui/assets/chunk-EXTU4WIE-DHyaqTsP.js +1 -0
- package/dist/ui/assets/{chunk-FMBD7UC4-rddmfK-Z.js → chunk-FMBD7UC4-BogA_9CV.js} +1 -1
- package/dist/ui/assets/{chunk-HN2XXSSU-Dttqcg3b.js → chunk-HN2XXSSU-2blQO3Gb.js} +1 -1
- package/dist/ui/assets/chunk-HN2XXSSU-2blQO3Gb.js.gz +0 -0
- package/dist/ui/assets/chunk-JA3XYJ7Z-Cr1rmOui.js +11 -0
- package/dist/ui/assets/chunk-JA3XYJ7Z-Cr1rmOui.js.gz +0 -0
- package/dist/ui/assets/{chunk-JZLCHNYA-EUmx2y4H.js → chunk-JZLCHNYA-BsgZ79Fa.js} +5 -5
- package/dist/ui/assets/chunk-JZLCHNYA-BsgZ79Fa.js.gz +0 -0
- package/dist/ui/assets/{chunk-MI3HLSF2-65n9Mkyc.js → chunk-MI3HLSF2-dwYeUy5S.js} +1 -1
- package/dist/ui/assets/chunk-MI3HLSF2-dwYeUy5S.js.gz +0 -0
- package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js +2 -0
- package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js.gz +0 -0
- package/dist/ui/assets/{chunk-QN33PNHL-DsRKK6NR.js → chunk-QN33PNHL-DxdIDCAa.js} +1 -1
- package/dist/ui/assets/{chunk-QXUST7PY-BCYnMiS3.js → chunk-QXUST7PY-BCK2V0i-.js} +2 -2
- package/dist/ui/assets/chunk-QXUST7PY-BCK2V0i-.js.gz +0 -0
- package/dist/ui/assets/chunk-QZHKN3VN-CALjGrEE.js +1 -0
- package/dist/ui/assets/chunk-S3R3BYOJ-GP3zIxrB.js +2 -0
- package/dist/ui/assets/chunk-S3R3BYOJ-GP3zIxrB.js.gz +0 -0
- package/dist/ui/assets/{chunk-TZMSLE5B-BuQUQcTr.js → chunk-TZMSLE5B-dX5RaM6g.js} +1 -1
- package/dist/ui/assets/chunk-TZMSLE5B-dX5RaM6g.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-C3_RVP70.js +1 -0
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-C3_RVP70.js +1 -0
- package/dist/ui/assets/constants-GjIDNVyt.js +1 -0
- package/dist/ui/assets/{cose-bilkent-S5V4N54A-CnPB3ARO.js → cose-bilkent-S5V4N54A-Dx0BJVDl.js} +1 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-Dx0BJVDl.js.gz +0 -0
- package/dist/ui/assets/{dagre-6UL2VRFP-DhS-k_Se.js → dagre-6UL2VRFP-DiQSUxqN.js} +1 -1
- package/dist/ui/assets/dagre-6UL2VRFP-DiQSUxqN.js.gz +0 -0
- package/dist/ui/assets/{dagre-KgLoHEuy.js → dagre-Bekd9Vdj.js} +1 -1
- package/dist/ui/assets/dagre-Bekd9Vdj.js.gz +0 -0
- package/dist/ui/assets/diagram-PSM6KHXK-DtJnDQjc.js +24 -0
- package/dist/ui/assets/diagram-PSM6KHXK-DtJnDQjc.js.gz +0 -0
- package/dist/ui/assets/{diagram-QEK2KX5R-BPCitvbo.js → diagram-QEK2KX5R-CobkCRdj.js} +1 -1
- package/dist/ui/assets/diagram-QEK2KX5R-CobkCRdj.js.gz +0 -0
- package/dist/ui/assets/{diagram-S2PKOQOG-NW4uK6sx.js → diagram-S2PKOQOG-DHEZYivc.js} +1 -1
- package/dist/ui/assets/diagram-S2PKOQOG-DHEZYivc.js.gz +0 -0
- package/dist/ui/assets/editor-DQIG-JYZ.js +43 -0
- package/dist/ui/assets/editor-DQIG-JYZ.js.gz +0 -0
- package/dist/ui/assets/emoji-B0hLmSLZ.js +3 -0
- package/dist/ui/assets/emoji-B0hLmSLZ.js.gz +0 -0
- package/dist/ui/assets/{erDiagram-Q2GNP2WA-me1fboaf.js → erDiagram-Q2GNP2WA-BVNeTZPQ.js} +2 -2
- package/dist/ui/assets/erDiagram-Q2GNP2WA-BVNeTZPQ.js.gz +0 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-C73VFdyk.js +162 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-C73VFdyk.js.gz +0 -0
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-B_RosuD1.js +267 -0
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-B_RosuD1.js.gz +0 -0
- package/dist/ui/assets/{gitGraph-F6HP7TQM-CfFE_uAC.js → gitGraph-F6HP7TQM-DMFIqn4h.js} +1 -1
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-hxbgwNA1.js +65 -0
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-hxbgwNA1.js.gz +0 -0
- package/dist/ui/assets/index-DTz1Dif6.js +64 -0
- package/dist/ui/assets/index-DTz1Dif6.js.gz +0 -0
- package/dist/ui/assets/{index-DxuPq13l.css → index-qkT7Qqm2.css} +1 -1
- package/dist/ui/assets/index-qkT7Qqm2.css.gz +0 -0
- package/dist/ui/assets/{info-NVLQJR56-i_xHYg3f.js → info-NVLQJR56-DZ3K-w48.js} +1 -1
- package/dist/ui/assets/{infoDiagram-ER5ION4S-2NL93b78.js → infoDiagram-ER5ION4S-CxnBJQu6.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-CZF-2DHU.js → journeyDiagram-XKPGCS4Q-CHYNj-f8.js} +3 -3
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CHYNj-f8.js.gz +0 -0
- package/dist/ui/assets/{kanban-definition-3W4ZIXB7-CfvJIOny.js → kanban-definition-3W4ZIXB7-DQPCCsj2.js} +1 -1
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-DQPCCsj2.js.gz +0 -0
- package/dist/ui/assets/{line-DDv8kOJk.js → line-DBRjKmfa.js} +1 -1
- package/dist/ui/assets/{linear-Daef-l29.js → linear-DFao5Wyp.js} +1 -1
- package/dist/ui/assets/linear-DFao5Wyp.js.gz +0 -0
- package/dist/ui/assets/{mermaid-parser.core-CdK9QgYV.js → mermaid-parser.core-DYCfacHj.js} +2 -2
- package/dist/ui/assets/mermaid-parser.core-DYCfacHj.js.gz +0 -0
- package/dist/ui/assets/mermaid.core-C6xGFSdE.js +11 -0
- package/dist/ui/assets/mermaid.core-C6xGFSdE.js.gz +0 -0
- package/dist/ui/assets/{mindmap-definition-VGOIOE7T-Cb3QMflX.js → mindmap-definition-VGOIOE7T-L3Pw-YM7.js} +1 -1
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-L3Pw-YM7.js.gz +0 -0
- package/dist/ui/assets/{packet-BFZMPI3H-Bm2uwz4i.js → packet-BFZMPI3H-CpL6iNoa.js} +1 -1
- package/dist/ui/assets/{particles-DsJFOarW.js → particles-CT8hcJOA.js} +1 -1
- package/dist/ui/assets/particles-CT8hcJOA.js.gz +0 -0
- package/dist/ui/assets/{pie-7BOR55EZ-5i17tVnF.js → pie-7BOR55EZ-hTqChbTo.js} +1 -1
- package/dist/ui/assets/{pieDiagram-ADFJNKIX-BxIwQWvw.js → pieDiagram-ADFJNKIX-Bf4Nou75.js} +1 -1
- package/dist/ui/assets/pieDiagram-ADFJNKIX-Bf4Nou75.js.gz +0 -0
- package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-B5HPe4ga.js → quadrantDiagram-AYHSOK5B-DpjUTLB1.js} +3 -3
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DpjUTLB1.js.gz +0 -0
- package/dist/ui/assets/{radar-NHE76QYJ-BTn-tq0k.js → radar-NHE76QYJ-myy7OENC.js} +1 -1
- package/dist/ui/assets/reactflow-Cubtnk8i.js +2 -0
- package/dist/ui/assets/reactflow-Cubtnk8i.js.gz +0 -0
- package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-YfI6llkX.js → requirementDiagram-UZGBJVZJ-Bfrfh-0-.js} +1 -1
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-Bfrfh-0-.js.gz +0 -0
- package/dist/ui/assets/{sandpack-D7koO5op.js → sandpack-C58bwfIS.js} +38 -38
- package/dist/ui/assets/sandpack-C58bwfIS.js.gz +0 -0
- package/dist/ui/assets/sandpackDefaults-Bkga8XAE.js +1 -0
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-ClZAZ6va.js +10 -0
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-ClZAZ6va.js.gz +0 -0
- package/dist/ui/assets/{sequenceDiagram-WL72ISMW-DAe4Um17.js → sequenceDiagram-WL72ISMW-CNgly63p.js} +6 -6
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-CNgly63p.js.gz +0 -0
- package/dist/ui/assets/src-DAeyG22O.js +34 -0
- package/dist/ui/assets/src-DAeyG22O.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BrEAoDpE.js +1 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BrEAoDpE.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-BNL52_oN.js +1 -0
- package/dist/ui/assets/streamdown-BdAVfkeF.js +521 -0
- package/dist/ui/assets/streamdown-BdAVfkeF.js.gz +0 -0
- package/dist/ui/assets/syntax-BOfTnQiy.js +9 -0
- package/dist/ui/assets/syntax-BOfTnQiy.js.gz +0 -0
- package/dist/ui/assets/{timeline-definition-IT6M3QCI-D6P5txjT.js → timeline-definition-IT6M3QCI-CaRH3k4l.js} +16 -16
- package/dist/ui/assets/timeline-definition-IT6M3QCI-CaRH3k4l.js.gz +0 -0
- package/dist/ui/assets/{treemap-KMMF4GRG-Bitm3gy4.js → treemap-KMMF4GRG-CUaLOV_B.js} +1 -1
- package/dist/ui/assets/{useUserLocalStorage-Ckb8HsIw.js → useUserLocalStorage-C8sgXgXR.js} +1 -1
- package/dist/ui/assets/useUserLocalStorage-C8sgXgXR.js.gz +0 -0
- package/dist/ui/assets/{xychartDiagram-PRI3JC2R-CsybjUbd.js → xychartDiagram-PRI3JC2R-BlhkI9T_.js} +1 -1
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-BlhkI9T_.js.gz +0 -0
- package/dist/ui/index.html +10 -11
- package/dist/ui/index.html.gz +0 -0
- package/package.json +6 -5
- package/scripts/postinstall.js +27 -19
- package/dist/cli/commands/daemon/sync.d.ts.map +0 -1
- package/dist/ui/assets/App-DcEY8Ota.js +0 -3
- package/dist/ui/assets/App-DcEY8Ota.js.gz +0 -0
- package/dist/ui/assets/ArtifactConsentModal-CiCbK9iv.js +0 -1
- package/dist/ui/assets/ArtifactConsentModal-CiCbK9iv.js.gz +0 -0
- package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js +0 -9
- package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js.gz +0 -0
- package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js +0 -18
- package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js.gz +0 -0
- package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js +0 -34
- package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js.gz +0 -0
- package/dist/ui/assets/CodeEditor.inner-DBgsP4tn.js +0 -8
- package/dist/ui/assets/CodeEditor.inner-DBgsP4tn.js.gz +0 -0
- package/dist/ui/assets/ConversationView-CUWR0gR6.js +0 -1
- package/dist/ui/assets/ConversationView-CUWR0gR6.js.gz +0 -0
- package/dist/ui/assets/KnowledgePage-B2bzlXfn.js +0 -24
- package/dist/ui/assets/KnowledgePage-B2bzlXfn.js.gz +0 -0
- package/dist/ui/assets/MarketingScreenshotPage-zv5RUCuV.js.gz +0 -0
- package/dist/ui/assets/MobileApp-VgVnsnsN.js +0 -1
- package/dist/ui/assets/MobileApp-VgVnsnsN.js.gz +0 -0
- package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js +0 -20
- package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js.gz +0 -0
- package/dist/ui/assets/SessionCanvas-mEmYGZhC.css.gz +0 -0
- package/dist/ui/assets/StreamdownDemoPage-wzWaqWwr.js.gz +0 -0
- package/dist/ui/assets/ThemeSwitcher-Dly2y9pi.js +0 -1
- package/dist/ui/assets/ThemeSwitcher-Dly2y9pi.js.gz +0 -0
- package/dist/ui/assets/architecture-U656AL7Q-CykGFbQU.js +0 -1
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-C8HXAenz.js +0 -36
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-C8HXAenz.js.gz +0 -0
- package/dist/ui/assets/blockDiagram-VD42YOAC-BhZaEN19.js.gz +0 -0
- package/dist/ui/assets/c4Diagram-YG6GDRKO-Dk_UH-sY.js.gz +0 -0
- package/dist/ui/assets/channel-D6_nUWlW.js +0 -1
- package/dist/ui/assets/chunk-55IACEB6-ByzqIgSb.js +0 -1
- package/dist/ui/assets/chunk-ABZYJK2D-BJcrryHK.js.gz +0 -0
- package/dist/ui/assets/chunk-AGHRB4JF-DvxmfbM0.js.gz +0 -0
- package/dist/ui/assets/chunk-ATLVNIR6-DbeJ0OrR.js.gz +0 -0
- package/dist/ui/assets/chunk-B4BG7PRW-C53q2ggf.js.gz +0 -0
- package/dist/ui/assets/chunk-DI55MBZ5-vIyNEQN-.js.gz +0 -0
- package/dist/ui/assets/chunk-EXTU4WIE-B3ObkuOm.js +0 -1
- package/dist/ui/assets/chunk-HN2XXSSU-Dttqcg3b.js.gz +0 -0
- package/dist/ui/assets/chunk-JA3XYJ7Z-DbNDev3D.js +0 -11
- package/dist/ui/assets/chunk-JA3XYJ7Z-DbNDev3D.js.gz +0 -0
- package/dist/ui/assets/chunk-JZLCHNYA-EUmx2y4H.js.gz +0 -0
- package/dist/ui/assets/chunk-MI3HLSF2-65n9Mkyc.js.gz +0 -0
- package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js +0 -2
- package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js.gz +0 -0
- package/dist/ui/assets/chunk-QXUST7PY-BCYnMiS3.js.gz +0 -0
- package/dist/ui/assets/chunk-QZHKN3VN-HucAw4xW.js +0 -1
- package/dist/ui/assets/chunk-S3R3BYOJ-CWMEa9Dc.js +0 -2
- package/dist/ui/assets/chunk-S3R3BYOJ-CWMEa9Dc.js.gz +0 -0
- package/dist/ui/assets/chunk-TZMSLE5B-BuQUQcTr.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-CUT3rPTB.js +0 -1
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-CUT3rPTB.js +0 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-CnPB3ARO.js.gz +0 -0
- package/dist/ui/assets/dagre-6UL2VRFP-DhS-k_Se.js.gz +0 -0
- package/dist/ui/assets/dagre-KgLoHEuy.js.gz +0 -0
- package/dist/ui/assets/diagram-PSM6KHXK-BZg3MJmb.js +0 -24
- package/dist/ui/assets/diagram-PSM6KHXK-BZg3MJmb.js.gz +0 -0
- package/dist/ui/assets/diagram-QEK2KX5R-BPCitvbo.js.gz +0 -0
- package/dist/ui/assets/diagram-S2PKOQOG-NW4uK6sx.js.gz +0 -0
- package/dist/ui/assets/editor-CzFWIUw2.js +0 -39
- package/dist/ui/assets/editor-CzFWIUw2.js.gz +0 -0
- package/dist/ui/assets/emoji-Dkz4Zzv_.js +0 -3
- package/dist/ui/assets/emoji-Dkz4Zzv_.js.gz +0 -0
- package/dist/ui/assets/erDiagram-Q2GNP2WA-me1fboaf.js.gz +0 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-DzE8dGsh.js +0 -162
- package/dist/ui/assets/flowDiagram-NV44I4VS-DzE8dGsh.js.gz +0 -0
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-CFQD09Mi.js +0 -267
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-CFQD09Mi.js.gz +0 -0
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CaVoxU4C.js +0 -65
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CaVoxU4C.js.gz +0 -0
- package/dist/ui/assets/index-BN5_Qq7R.js +0 -324
- package/dist/ui/assets/index-BN5_Qq7R.js.gz +0 -0
- package/dist/ui/assets/index-DxuPq13l.css.gz +0 -0
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CZF-2DHU.js.gz +0 -0
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-CfvJIOny.js.gz +0 -0
- package/dist/ui/assets/katex-CamJ39w1.js +0 -257
- package/dist/ui/assets/katex-CamJ39w1.js.gz +0 -0
- package/dist/ui/assets/linear-Daef-l29.js.gz +0 -0
- package/dist/ui/assets/mermaid-parser.core-CdK9QgYV.js.gz +0 -0
- package/dist/ui/assets/mermaid.core-D6GS9mU-.js +0 -11
- package/dist/ui/assets/mermaid.core-D6GS9mU-.js.gz +0 -0
- package/dist/ui/assets/message-SqLqNYcv.js +0 -36
- package/dist/ui/assets/message-SqLqNYcv.js.gz +0 -0
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-Cb3QMflX.js.gz +0 -0
- package/dist/ui/assets/particles-DsJFOarW.js.gz +0 -0
- package/dist/ui/assets/pieDiagram-ADFJNKIX-BxIwQWvw.js.gz +0 -0
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-B5HPe4ga.js.gz +0 -0
- package/dist/ui/assets/reactflow-Bf74ngoo.js +0 -2
- package/dist/ui/assets/reactflow-Bf74ngoo.js.gz +0 -0
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-YfI6llkX.js.gz +0 -0
- package/dist/ui/assets/sandpack-D7koO5op.js.gz +0 -0
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DOk_B10B.js +0 -10
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DOk_B10B.js.gz +0 -0
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-DAe4Um17.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-CCesDu_C.js +0 -1
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-CCesDu_C.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-CMlIrsoO.js +0 -1
- package/dist/ui/assets/syntax-C-M-8jOU.js +0 -10
- package/dist/ui/assets/syntax-C-M-8jOU.js.gz +0 -0
- package/dist/ui/assets/theme-BQZdiqwv.js +0 -1
- package/dist/ui/assets/timeline-definition-IT6M3QCI-D6P5txjT.js.gz +0 -0
- package/dist/ui/assets/useUserLocalStorage-Ckb8HsIw.js.gz +0 -0
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-CsybjUbd.js.gz +0 -0
- /package/dist/cli/commands/{admin → local}/sync-unix.d.ts +0 -0
package/dist/core/mcp/index.js
CHANGED
|
@@ -10,6 +10,10 @@ import { eq as eq2 } from "drizzle-orm";
|
|
|
10
10
|
// src/db/database-wrapper.ts
|
|
11
11
|
import { sql } from "drizzle-orm";
|
|
12
12
|
|
|
13
|
+
// src/db/tenant-context.ts
|
|
14
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
15
|
+
var tenantDatabaseScope = new AsyncLocalStorage();
|
|
16
|
+
|
|
13
17
|
// src/db/encryption.ts
|
|
14
18
|
import { createCipheriv, createDecipheriv, randomBytes, scryptSync } from "crypto";
|
|
15
19
|
|
|
@@ -34,6 +38,7 @@ __export(schema_postgres_exports, {
|
|
|
34
38
|
cardTypes: () => cardTypes,
|
|
35
39
|
cards: () => cards,
|
|
36
40
|
gatewayChannels: () => gatewayChannels,
|
|
41
|
+
gatewayOutboundMessages: () => gatewayOutboundMessages,
|
|
37
42
|
groupMemberships: () => groupMemberships,
|
|
38
43
|
groups: () => groups,
|
|
39
44
|
kbDocumentUnits: () => kbDocumentUnits,
|
|
@@ -176,6 +181,7 @@ var t = {
|
|
|
176
181
|
var sessions = pgTable(
|
|
177
182
|
"sessions",
|
|
178
183
|
{
|
|
184
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
179
185
|
// Primary identity
|
|
180
186
|
session_id: varchar("session_id", { length: 36 }).primaryKey(),
|
|
181
187
|
created_at: t.timestamp("created_at").notNull(),
|
|
@@ -235,7 +241,9 @@ var sessions = pgTable(
|
|
|
235
241
|
data: t.json("data").$type().notNull()
|
|
236
242
|
},
|
|
237
243
|
(table) => ({
|
|
244
|
+
tenantIdx: index("sessions_tenant_id_idx").on(table.tenant_id),
|
|
238
245
|
statusIdx: index("sessions_status_idx").on(table.status),
|
|
246
|
+
statusReadyIdx: index("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
|
|
239
247
|
agenticToolIdx: index("sessions_agentic_tool_idx").on(table.agentic_tool),
|
|
240
248
|
boardIdx: index("sessions_board_idx").on(table.board_id),
|
|
241
249
|
branchIdx: index("sessions_branch_idx").on(table.branch_id),
|
|
@@ -247,12 +255,13 @@ var sessions = pgTable(
|
|
|
247
255
|
// Partial unique index — covering for the scheduler's dedup lookup
|
|
248
256
|
// AND serves as the DB-level guard against check-then-create races
|
|
249
257
|
// in spawnScheduledSession.
|
|
250
|
-
scheduleRunUnique: uniqueIndex("sessions_schedule_run_unique").on(table.schedule_id, table.scheduled_run_at).where(sql2`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
|
|
258
|
+
scheduleRunUnique: uniqueIndex("sessions_schedule_run_unique").on(table.tenant_id, table.schedule_id, table.scheduled_run_at).where(sql2`${table.schedule_id} IS NOT NULL AND ${table.scheduled_run_at} IS NOT NULL`)
|
|
251
259
|
})
|
|
252
260
|
);
|
|
253
261
|
var sessionRelationships = pgTable(
|
|
254
262
|
"session_relationships",
|
|
255
263
|
{
|
|
264
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
256
265
|
relationship_id: varchar("relationship_id", { length: 36 }).primaryKey(),
|
|
257
266
|
source_session_id: varchar("source_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
|
|
258
267
|
target_session_id: varchar("target_session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
|
|
@@ -270,10 +279,23 @@ var sessionRelationships = pgTable(
|
|
|
270
279
|
data: t.json("data")
|
|
271
280
|
},
|
|
272
281
|
(table) => ({
|
|
282
|
+
tenantIdx: index("session_relationships_tenant_id_idx").on(table.tenant_id),
|
|
273
283
|
sourceIdx: index("session_relationships_source_idx").on(table.source_session_id),
|
|
274
284
|
targetIdx: index("session_relationships_target_idx").on(table.target_session_id),
|
|
275
285
|
callbackIdx: index("session_relationships_callback_idx").on(table.callback_session_id),
|
|
286
|
+
// Composite indexes so the OR predicate in dispatchCompletionCallbacks
|
|
287
|
+
// (WHERE source_session_id = $1 OR target_session_id = $2) uses BitmapOr
|
|
288
|
+
// over these instead of a full tenant table scan via tenant_id_idx.
|
|
289
|
+
tenantSourceIdx: index("session_relationships_tenant_source_idx").on(
|
|
290
|
+
table.tenant_id,
|
|
291
|
+
table.source_session_id
|
|
292
|
+
),
|
|
293
|
+
tenantTargetIdx: index("session_relationships_tenant_target_idx").on(
|
|
294
|
+
table.tenant_id,
|
|
295
|
+
table.target_session_id
|
|
296
|
+
),
|
|
276
297
|
sourceTargetTypeUnique: uniqueIndex("session_relationships_source_target_type_unique").on(
|
|
298
|
+
table.tenant_id,
|
|
277
299
|
table.source_session_id,
|
|
278
300
|
table.target_session_id,
|
|
279
301
|
table.relationship_type
|
|
@@ -283,6 +305,7 @@ var sessionRelationships = pgTable(
|
|
|
283
305
|
var tasks = pgTable(
|
|
284
306
|
"tasks",
|
|
285
307
|
{
|
|
308
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
286
309
|
task_id: varchar("task_id", { length: 36 }).primaryKey(),
|
|
287
310
|
session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
|
|
288
311
|
created_at: t.timestamp("created_at").notNull(),
|
|
@@ -312,19 +335,23 @@ var tasks = pgTable(
|
|
|
312
335
|
data: t.json("data").$type().notNull()
|
|
313
336
|
},
|
|
314
337
|
(table) => ({
|
|
338
|
+
tenantIdx: index("tasks_tenant_id_idx").on(table.tenant_id),
|
|
315
339
|
sessionIdx: index("tasks_session_idx").on(table.session_id),
|
|
316
340
|
statusIdx: index("tasks_status_idx").on(table.status),
|
|
317
341
|
createdIdx: index("tasks_created_idx").on(table.created_at),
|
|
342
|
+
// Composite for "latest task for session" queries (ORDER BY created_at DESC LIMIT 1).
|
|
343
|
+
sessionCreatedIdx: index("tasks_session_created_idx").on(table.session_id, table.created_at),
|
|
318
344
|
queueIdx: index("tasks_queue_idx").on(table.session_id, table.status, table.queue_position),
|
|
319
345
|
// Partial unique index — defense-in-depth for `tasks.createPending` race
|
|
320
346
|
// serialization. Only QUEUED rows are constrained; CREATED/RUNNING/done
|
|
321
347
|
// rows have NULL queue_position and are unaffected.
|
|
322
|
-
queuedPositionUnique: uniqueIndex("tasks_queued_position_unique").on(table.session_id, table.queue_position).where(sql2`${table.status} = 'queued'`)
|
|
348
|
+
queuedPositionUnique: uniqueIndex("tasks_queued_position_unique").on(table.tenant_id, table.session_id, table.queue_position).where(sql2`${table.status} = 'queued'`)
|
|
323
349
|
})
|
|
324
350
|
);
|
|
325
351
|
var serializedSessions = pgTable(
|
|
326
352
|
"serialized_sessions",
|
|
327
353
|
{
|
|
354
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
328
355
|
id: varchar("id", { length: 36 }).primaryKey(),
|
|
329
356
|
session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
|
|
330
357
|
branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
|
|
@@ -340,6 +367,7 @@ var serializedSessions = pgTable(
|
|
|
340
367
|
// gzipped; NULL while status='processing'
|
|
341
368
|
},
|
|
342
369
|
(table) => ({
|
|
370
|
+
tenantIdx: index("serialized_sessions_tenant_id_idx").on(table.tenant_id),
|
|
343
371
|
sessionTurnIdx: index("serialized_sessions_session_turn_idx").on(
|
|
344
372
|
table.session_id,
|
|
345
373
|
table.turn_index
|
|
@@ -350,6 +378,7 @@ var serializedSessions = pgTable(
|
|
|
350
378
|
var messages = pgTable(
|
|
351
379
|
"messages",
|
|
352
380
|
{
|
|
381
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
353
382
|
// Primary identity
|
|
354
383
|
message_id: varchar("message_id", { length: 36 }).primaryKey(),
|
|
355
384
|
created_at: t.timestamp("created_at").notNull(),
|
|
@@ -389,15 +418,23 @@ var messages = pgTable(
|
|
|
389
418
|
data: t.json("data").$type().notNull()
|
|
390
419
|
},
|
|
391
420
|
(table) => ({
|
|
421
|
+
tenantIdx: index("messages_tenant_id_idx").on(table.tenant_id),
|
|
422
|
+
tenantTimestampIdx: index("messages_tenant_timestamp_idx").on(table.tenant_id, table.timestamp),
|
|
392
423
|
// Indexes for efficient lookups
|
|
393
424
|
sessionIdx: index("messages_session_id_idx").on(table.session_id),
|
|
394
425
|
taskIdx: index("messages_task_id_idx").on(table.task_id),
|
|
395
|
-
sessionIndexIdx: index("messages_session_index_idx").on(table.session_id, table.index)
|
|
426
|
+
sessionIndexIdx: index("messages_session_index_idx").on(table.session_id, table.index),
|
|
427
|
+
timestampIdx: index("messages_timestamp_idx").on(table.timestamp),
|
|
428
|
+
sessionTimestampIdx: index("messages_session_timestamp_idx").on(
|
|
429
|
+
table.session_id,
|
|
430
|
+
table.timestamp
|
|
431
|
+
)
|
|
396
432
|
})
|
|
397
433
|
);
|
|
398
434
|
var boards = pgTable(
|
|
399
435
|
"boards",
|
|
400
436
|
{
|
|
437
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
401
438
|
board_id: varchar("board_id", { length: 36 }).primaryKey(),
|
|
402
439
|
created_at: t.timestamp("created_at").notNull(),
|
|
403
440
|
updated_at: t.timestamp("updated_at"),
|
|
@@ -405,7 +442,7 @@ var boards = pgTable(
|
|
|
405
442
|
created_by: varchar("created_by", { length: 36 }).notNull(),
|
|
406
443
|
// Materialized for lookups
|
|
407
444
|
name: text("name").notNull(),
|
|
408
|
-
slug: text("slug")
|
|
445
|
+
slug: text("slug"),
|
|
409
446
|
primary_assistant_id: varchar("primary_assistant_id", { length: 36 }).references(
|
|
410
447
|
() => branches.branch_id,
|
|
411
448
|
{
|
|
@@ -420,18 +457,21 @@ var boards = pgTable(
|
|
|
420
457
|
archived_by: varchar("archived_by", { length: 36 })
|
|
421
458
|
},
|
|
422
459
|
(table) => ({
|
|
460
|
+
tenantIdx: index("boards_tenant_id_idx").on(table.tenant_id),
|
|
423
461
|
nameIdx: index("boards_name_idx").on(table.name),
|
|
424
|
-
slugIdx: index("boards_slug_idx").on(table.slug)
|
|
462
|
+
slugIdx: index("boards_slug_idx").on(table.slug),
|
|
463
|
+
slugTenantUnique: uniqueIndex("boards_tenant_slug_unique").on(table.tenant_id, table.slug)
|
|
425
464
|
})
|
|
426
465
|
);
|
|
427
466
|
var repos = pgTable(
|
|
428
467
|
"repos",
|
|
429
468
|
{
|
|
469
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
430
470
|
repo_id: varchar("repo_id", { length: 36 }).primaryKey(),
|
|
431
471
|
created_at: t.timestamp("created_at").notNull(),
|
|
432
472
|
updated_at: t.timestamp("updated_at"),
|
|
433
473
|
// Materialized for querying
|
|
434
|
-
slug: text("slug").notNull()
|
|
474
|
+
slug: text("slug").notNull(),
|
|
435
475
|
repo_type: text("repo_type", { enum: ["remote", "local"] }).notNull().default("remote"),
|
|
436
476
|
// Unix group for repo-level git access (agor_rp_<short-id>)
|
|
437
477
|
// Users who have access to ANY branch in this repo get added to this group.
|
|
@@ -442,12 +482,15 @@ var repos = pgTable(
|
|
|
442
482
|
data: t.json("data").$type().notNull()
|
|
443
483
|
},
|
|
444
484
|
(table) => ({
|
|
445
|
-
|
|
485
|
+
tenantIdx: index("repos_tenant_id_idx").on(table.tenant_id),
|
|
486
|
+
slugIdx: index("repos_slug_idx").on(table.slug),
|
|
487
|
+
slugTenantUnique: uniqueIndex("repos_tenant_slug_unique").on(table.tenant_id, table.slug)
|
|
446
488
|
})
|
|
447
489
|
);
|
|
448
490
|
var branches = pgTable(
|
|
449
491
|
"branches",
|
|
450
492
|
{
|
|
493
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
451
494
|
// Primary identity
|
|
452
495
|
branch_id: varchar("branch_id", { length: 36 }).primaryKey(),
|
|
453
496
|
repo_id: varchar("repo_id", { length: 36 }).notNull().references(() => repos.repo_id, { onDelete: "cascade" }),
|
|
@@ -522,6 +565,7 @@ var branches = pgTable(
|
|
|
522
565
|
data: t.json("data").$type().notNull()
|
|
523
566
|
},
|
|
524
567
|
(table) => ({
|
|
568
|
+
tenantIdx: index("branches_tenant_id_idx").on(table.tenant_id),
|
|
525
569
|
repoIdx: index("branches_repo_idx").on(table.repo_id),
|
|
526
570
|
nameIdx: index("branches_name_idx").on(table.name),
|
|
527
571
|
refIdx: index("branches_ref_idx").on(table.ref),
|
|
@@ -535,22 +579,26 @@ var branches = pgTable(
|
|
|
535
579
|
var branchOwners = pgTable(
|
|
536
580
|
"branch_owners",
|
|
537
581
|
{
|
|
582
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
538
583
|
branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
|
|
539
584
|
user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
|
|
540
585
|
created_at: t.timestamp("created_at").defaultNow()
|
|
541
586
|
},
|
|
542
587
|
(table) => ({
|
|
588
|
+
tenantIdx: index("branch_owners_tenant_id_idx").on(table.tenant_id),
|
|
543
589
|
pk: primaryKey({ columns: [table.branch_id, table.user_id] })
|
|
544
590
|
})
|
|
545
591
|
);
|
|
546
592
|
var boardOwners = pgTable(
|
|
547
593
|
"board_owners",
|
|
548
594
|
{
|
|
595
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
549
596
|
board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
|
|
550
597
|
user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
|
|
551
598
|
created_at: t.timestamp("created_at")
|
|
552
599
|
},
|
|
553
600
|
(table) => ({
|
|
601
|
+
tenantIdx: index("board_owners_tenant_id_idx").on(table.tenant_id),
|
|
554
602
|
pk: primaryKey({ columns: [table.board_id, table.user_id] }),
|
|
555
603
|
userIdx: index("board_owners_user_idx").on(table.user_id)
|
|
556
604
|
})
|
|
@@ -558,6 +606,7 @@ var boardOwners = pgTable(
|
|
|
558
606
|
var schedules = pgTable(
|
|
559
607
|
"schedules",
|
|
560
608
|
{
|
|
609
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
561
610
|
schedule_id: varchar("schedule_id", { length: 36 }).primaryKey(),
|
|
562
611
|
branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
|
|
563
612
|
name: text("name").notNull(),
|
|
@@ -581,6 +630,7 @@ var schedules = pgTable(
|
|
|
581
630
|
created_by: varchar("created_by", { length: 36 }).notNull().references(() => users.user_id)
|
|
582
631
|
},
|
|
583
632
|
(table) => ({
|
|
633
|
+
tenantIdx: index("schedules_tenant_id_idx").on(table.tenant_id),
|
|
584
634
|
enabledNextRunIdx: index("schedules_enabled_next_run_idx").on(table.enabled, table.next_run_at),
|
|
585
635
|
branchIdx: index("schedules_branch_idx").on(table.branch_id),
|
|
586
636
|
createdByIdx: index("schedules_created_by_idx").on(table.created_by)
|
|
@@ -589,12 +639,13 @@ var schedules = pgTable(
|
|
|
589
639
|
var users = pgTable(
|
|
590
640
|
"users",
|
|
591
641
|
{
|
|
642
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
592
643
|
// Primary identity
|
|
593
644
|
user_id: varchar("user_id", { length: 36 }).primaryKey(),
|
|
594
645
|
created_at: t.timestamp("created_at").notNull(),
|
|
595
646
|
updated_at: t.timestamp("updated_at"),
|
|
596
647
|
// Materialized for auth lookups
|
|
597
|
-
email: text("email").
|
|
648
|
+
email: text("email").notNull(),
|
|
598
649
|
password: text("password").notNull(),
|
|
599
650
|
// bcrypt hashed
|
|
600
651
|
// Basic profile (materialized for display)
|
|
@@ -610,16 +661,22 @@ var users = pgTable(
|
|
|
610
661
|
onboarding_completed: t.bool("onboarding_completed").notNull().default(false),
|
|
611
662
|
// Force password change flag (admin-settable, auto-cleared on password change)
|
|
612
663
|
must_change_password: t.bool("must_change_password").notNull().default(false),
|
|
664
|
+
// Auth invalidation marker. Password changes set this timestamp so any
|
|
665
|
+
// previously issued browser access or refresh token is rejected.
|
|
666
|
+
tokens_valid_after: t.timestamp("tokens_valid_after"),
|
|
613
667
|
// JSON blob for profile/preferences
|
|
614
668
|
data: t.json("data").$type().notNull()
|
|
615
669
|
},
|
|
616
670
|
(table) => ({
|
|
617
|
-
|
|
671
|
+
tenantIdx: index("users_tenant_id_idx").on(table.tenant_id),
|
|
672
|
+
emailIdx: index("users_email_idx").on(table.email),
|
|
673
|
+
emailTenantUnique: uniqueIndex("users_tenant_email_unique").on(table.tenant_id, table.email)
|
|
618
674
|
})
|
|
619
675
|
);
|
|
620
676
|
var groups = pgTable(
|
|
621
677
|
"groups",
|
|
622
678
|
{
|
|
679
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
623
680
|
group_id: varchar("group_id", { length: 36 }).primaryKey(),
|
|
624
681
|
name: text("name").notNull(),
|
|
625
682
|
slug: text("slug").notNull(),
|
|
@@ -632,13 +689,15 @@ var groups = pgTable(
|
|
|
632
689
|
updated_at: t.timestamp("updated_at")
|
|
633
690
|
},
|
|
634
691
|
(table) => ({
|
|
635
|
-
|
|
692
|
+
tenantIdx: index("groups_tenant_id_idx").on(table.tenant_id),
|
|
693
|
+
slugIdx: uniqueIndex("groups_tenant_slug_unique").on(table.tenant_id, table.slug),
|
|
636
694
|
archivedIdx: index("groups_archived_idx").on(table.archived)
|
|
637
695
|
})
|
|
638
696
|
);
|
|
639
697
|
var groupMemberships = pgTable(
|
|
640
698
|
"group_memberships",
|
|
641
699
|
{
|
|
700
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
642
701
|
group_id: varchar("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
|
|
643
702
|
user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
|
|
644
703
|
added_by: varchar("added_by", { length: 36 }).references(() => users.user_id, {
|
|
@@ -647,6 +706,7 @@ var groupMemberships = pgTable(
|
|
|
647
706
|
created_at: t.timestamp("created_at").notNull()
|
|
648
707
|
},
|
|
649
708
|
(table) => ({
|
|
709
|
+
tenantIdx: index("group_memberships_tenant_id_idx").on(table.tenant_id),
|
|
650
710
|
pk: primaryKey({ columns: [table.group_id, table.user_id] }),
|
|
651
711
|
userIdx: index("group_memberships_user_idx").on(table.user_id)
|
|
652
712
|
})
|
|
@@ -654,6 +714,7 @@ var groupMemberships = pgTable(
|
|
|
654
714
|
var branchGroupGrants = pgTable(
|
|
655
715
|
"branch_group_grants",
|
|
656
716
|
{
|
|
717
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
657
718
|
branch_id: varchar("branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
|
|
658
719
|
group_id: varchar("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
|
|
659
720
|
can: text("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
|
|
@@ -665,6 +726,7 @@ var branchGroupGrants = pgTable(
|
|
|
665
726
|
updated_at: t.timestamp("updated_at")
|
|
666
727
|
},
|
|
667
728
|
(table) => ({
|
|
729
|
+
tenantIdx: index("branch_group_grants_tenant_id_idx").on(table.tenant_id),
|
|
668
730
|
pk: primaryKey({ columns: [table.branch_id, table.group_id] }),
|
|
669
731
|
groupIdx: index("branch_group_grants_group_idx").on(table.group_id)
|
|
670
732
|
})
|
|
@@ -672,6 +734,7 @@ var branchGroupGrants = pgTable(
|
|
|
672
734
|
var boardGroupGrants = pgTable(
|
|
673
735
|
"board_group_grants",
|
|
674
736
|
{
|
|
737
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
675
738
|
board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
|
|
676
739
|
group_id: varchar("group_id", { length: 36 }).notNull().references(() => groups.group_id, { onDelete: "cascade" }),
|
|
677
740
|
can: text("can", { enum: [...BRANCH_PERMISSION_LEVELS] }).notNull().default("view"),
|
|
@@ -683,6 +746,7 @@ var boardGroupGrants = pgTable(
|
|
|
683
746
|
updated_at: t.timestamp("updated_at")
|
|
684
747
|
},
|
|
685
748
|
(table) => ({
|
|
749
|
+
tenantIdx: index("board_group_grants_tenant_id_idx").on(table.tenant_id),
|
|
686
750
|
pk: primaryKey({ columns: [table.board_id, table.group_id] }),
|
|
687
751
|
groupIdx: index("board_group_grants_group_idx").on(table.group_id)
|
|
688
752
|
})
|
|
@@ -690,6 +754,7 @@ var boardGroupGrants = pgTable(
|
|
|
690
754
|
var appVariables = pgTable(
|
|
691
755
|
"app_variables",
|
|
692
756
|
{
|
|
757
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
693
758
|
variable_id: varchar("variable_id", { length: 36 }).primaryKey(),
|
|
694
759
|
namespace: text("namespace").notNull(),
|
|
695
760
|
key: text("key").notNull(),
|
|
@@ -705,13 +770,19 @@ var appVariables = pgTable(
|
|
|
705
770
|
updated_at: t.timestamp("updated_at").notNull()
|
|
706
771
|
},
|
|
707
772
|
(table) => ({
|
|
708
|
-
|
|
773
|
+
tenantIdx: index("app_variables_tenant_id_idx").on(table.tenant_id),
|
|
774
|
+
namespaceKeyIdx: uniqueIndex("app_variables_tenant_namespace_key_unique").on(
|
|
775
|
+
table.tenant_id,
|
|
776
|
+
table.namespace,
|
|
777
|
+
table.key
|
|
778
|
+
),
|
|
709
779
|
namespaceIdx: index("app_variables_namespace_idx").on(table.namespace)
|
|
710
780
|
})
|
|
711
781
|
);
|
|
712
782
|
var userApiKeys = pgTable(
|
|
713
783
|
"user_api_keys",
|
|
714
784
|
{
|
|
785
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
715
786
|
id: varchar("id", { length: 36 }).primaryKey(),
|
|
716
787
|
user_id: varchar("user_id", { length: 36 }).notNull().references(() => users.user_id, { onDelete: "cascade" }),
|
|
717
788
|
name: text("name").notNull(),
|
|
@@ -723,6 +794,7 @@ var userApiKeys = pgTable(
|
|
|
723
794
|
last_used_at: t.timestamp("last_used_at")
|
|
724
795
|
},
|
|
725
796
|
(table) => ({
|
|
797
|
+
tenantIdx: index("user_api_keys_tenant_id_idx").on(table.tenant_id),
|
|
726
798
|
userIdx: index("user_api_keys_user_idx").on(table.user_id),
|
|
727
799
|
prefixIdx: index("user_api_keys_prefix_idx").on(table.prefix)
|
|
728
800
|
})
|
|
@@ -730,6 +802,7 @@ var userApiKeys = pgTable(
|
|
|
730
802
|
var mcpServers = pgTable(
|
|
731
803
|
"mcp_servers",
|
|
732
804
|
{
|
|
805
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
733
806
|
// Primary identity
|
|
734
807
|
mcp_server_id: varchar("mcp_server_id", { length: 36 }).primaryKey(),
|
|
735
808
|
created_at: t.timestamp("created_at").notNull(),
|
|
@@ -756,6 +829,7 @@ var mcpServers = pgTable(
|
|
|
756
829
|
data: t.json("data").$type().notNull()
|
|
757
830
|
},
|
|
758
831
|
(table) => ({
|
|
832
|
+
tenantIdx: index("mcp_servers_tenant_id_idx").on(table.tenant_id),
|
|
759
833
|
nameIdx: index("mcp_servers_name_idx").on(table.name),
|
|
760
834
|
scopeIdx: index("mcp_servers_scope_idx").on(table.scope),
|
|
761
835
|
ownerIdx: index("mcp_servers_owner_idx").on(table.owner_user_id),
|
|
@@ -765,6 +839,7 @@ var mcpServers = pgTable(
|
|
|
765
839
|
var cardTypes = pgTable(
|
|
766
840
|
"card_types",
|
|
767
841
|
{
|
|
842
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
768
843
|
card_type_id: varchar("card_type_id", { length: 36 }).primaryKey(),
|
|
769
844
|
name: text("name").notNull(),
|
|
770
845
|
emoji: text("emoji"),
|
|
@@ -776,12 +851,14 @@ var cardTypes = pgTable(
|
|
|
776
851
|
updated_at: t.timestamp("updated_at").notNull()
|
|
777
852
|
},
|
|
778
853
|
(table) => ({
|
|
854
|
+
tenantIdx: index("card_types_tenant_id_idx").on(table.tenant_id),
|
|
779
855
|
nameIdx: index("card_types_name_idx").on(table.name)
|
|
780
856
|
})
|
|
781
857
|
);
|
|
782
858
|
var cards = pgTable(
|
|
783
859
|
"cards",
|
|
784
860
|
{
|
|
861
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
785
862
|
card_id: varchar("card_id", { length: 36 }).primaryKey(),
|
|
786
863
|
board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
|
|
787
864
|
card_type_id: varchar("card_type_id", { length: 36 }).references(() => cardTypes.card_type_id, {
|
|
@@ -802,6 +879,7 @@ var cards = pgTable(
|
|
|
802
879
|
archived_at: t.timestamp("archived_at")
|
|
803
880
|
},
|
|
804
881
|
(table) => ({
|
|
882
|
+
tenantIdx: index("cards_tenant_id_idx").on(table.tenant_id),
|
|
805
883
|
boardIdx: index("cards_board_idx").on(table.board_id),
|
|
806
884
|
cardTypeIdx: index("cards_card_type_idx").on(table.card_type_id),
|
|
807
885
|
titleIdx: index("cards_title_idx").on(table.title),
|
|
@@ -812,6 +890,7 @@ var cards = pgTable(
|
|
|
812
890
|
var artifacts = pgTable(
|
|
813
891
|
"artifacts",
|
|
814
892
|
{
|
|
893
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
815
894
|
artifact_id: varchar("artifact_id", { length: 36 }).primaryKey(),
|
|
816
895
|
branch_id: varchar("branch_id", { length: 36 }).references(() => branches.branch_id, {
|
|
817
896
|
onDelete: "set null"
|
|
@@ -847,6 +926,7 @@ var artifacts = pgTable(
|
|
|
847
926
|
archived_at: t.timestamp("archived_at")
|
|
848
927
|
},
|
|
849
928
|
(table) => ({
|
|
929
|
+
tenantIdx: index("artifacts_tenant_id_idx").on(table.tenant_id),
|
|
850
930
|
branchIdx: index("artifacts_branch_idx").on(table.branch_id),
|
|
851
931
|
sourceSessionIdx: index("artifacts_source_session_idx").on(table.source_session_id),
|
|
852
932
|
boardIdx: index("artifacts_board_idx").on(table.board_id),
|
|
@@ -857,6 +937,7 @@ var artifacts = pgTable(
|
|
|
857
937
|
var artifactTrustGrants = pgTable(
|
|
858
938
|
"artifact_trust_grants",
|
|
859
939
|
{
|
|
940
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
860
941
|
grant_id: varchar("grant_id", { length: 36 }).primaryKey(),
|
|
861
942
|
user_id: varchar("user_id", { length: 36 }).notNull(),
|
|
862
943
|
scope_type: text("scope_type").notNull(),
|
|
@@ -867,6 +948,7 @@ var artifactTrustGrants = pgTable(
|
|
|
867
948
|
revoked_at: t.timestamp("revoked_at")
|
|
868
949
|
},
|
|
869
950
|
(table) => ({
|
|
951
|
+
tenantIdx: index("artifact_trust_grants_tenant_id_idx").on(table.tenant_id),
|
|
870
952
|
userIdx: index("artifact_trust_grants_user_idx").on(table.user_id),
|
|
871
953
|
scopeIdx: index("artifact_trust_grants_scope_idx").on(table.scope_type, table.scope_value)
|
|
872
954
|
})
|
|
@@ -874,6 +956,7 @@ var artifactTrustGrants = pgTable(
|
|
|
874
956
|
var boardObjects = pgTable(
|
|
875
957
|
"board_objects",
|
|
876
958
|
{
|
|
959
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
877
960
|
// Primary identity
|
|
878
961
|
object_id: varchar("object_id", { length: 36 }).primaryKey(),
|
|
879
962
|
board_id: varchar("board_id", { length: 36 }).notNull().references(() => boards.board_id, { onDelete: "cascade" }),
|
|
@@ -889,6 +972,7 @@ var boardObjects = pgTable(
|
|
|
889
972
|
data: t.json("data").$type().notNull()
|
|
890
973
|
},
|
|
891
974
|
(table) => ({
|
|
975
|
+
tenantIdx: index("board_objects_tenant_id_idx").on(table.tenant_id),
|
|
892
976
|
boardIdx: index("board_objects_board_idx").on(table.board_id),
|
|
893
977
|
branchIdx: index("board_objects_branch_idx").on(table.branch_id),
|
|
894
978
|
cardIdx: index("board_objects_card_idx").on(table.card_id)
|
|
@@ -897,12 +981,14 @@ var boardObjects = pgTable(
|
|
|
897
981
|
var sessionMcpServers = pgTable(
|
|
898
982
|
"session_mcp_servers",
|
|
899
983
|
{
|
|
984
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
900
985
|
session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
|
|
901
986
|
mcp_server_id: varchar("mcp_server_id", { length: 36 }).notNull().references(() => mcpServers.mcp_server_id, { onDelete: "cascade" }),
|
|
902
987
|
enabled: t.bool("enabled").notNull().default(true),
|
|
903
988
|
added_at: t.timestamp("added_at").notNull()
|
|
904
989
|
},
|
|
905
990
|
(table) => ({
|
|
991
|
+
tenantIdx: index("session_mcp_servers_tenant_id_idx").on(table.tenant_id),
|
|
906
992
|
// Composite primary key
|
|
907
993
|
pk: index("session_mcp_servers_pk").on(table.session_id, table.mcp_server_id),
|
|
908
994
|
// Indexes for queries
|
|
@@ -914,6 +1000,7 @@ var sessionMcpServers = pgTable(
|
|
|
914
1000
|
var userMcpOauthTokens = pgTable(
|
|
915
1001
|
"user_mcp_oauth_tokens",
|
|
916
1002
|
{
|
|
1003
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
917
1004
|
// NULL = shared-mode token (one per mcp_server_id)
|
|
918
1005
|
user_id: varchar("user_id", { length: 36 }).references(() => users.user_id, {
|
|
919
1006
|
onDelete: "cascade"
|
|
@@ -931,6 +1018,7 @@ var userMcpOauthTokens = pgTable(
|
|
|
931
1018
|
updated_at: t.timestamp("updated_at")
|
|
932
1019
|
},
|
|
933
1020
|
(table) => ({
|
|
1021
|
+
tenantIdx: index("user_mcp_oauth_tokens_tenant_id_idx").on(table.tenant_id),
|
|
934
1022
|
// Composite lookup indexes. Uniqueness enforced via partial unique indexes
|
|
935
1023
|
// created in the migration (one for per-user rows, one for the shared row).
|
|
936
1024
|
pk: index("user_mcp_oauth_tokens_pk").on(table.user_id, table.mcp_server_id),
|
|
@@ -941,6 +1029,7 @@ var userMcpOauthTokens = pgTable(
|
|
|
941
1029
|
var boardComments = pgTable(
|
|
942
1030
|
"board_comments",
|
|
943
1031
|
{
|
|
1032
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
944
1033
|
// Primary identity
|
|
945
1034
|
comment_id: varchar("comment_id", { length: 36 }).primaryKey(),
|
|
946
1035
|
created_at: t.timestamp("created_at").notNull(),
|
|
@@ -982,6 +1071,7 @@ var boardComments = pgTable(
|
|
|
982
1071
|
data: t.json("data").$type().notNull()
|
|
983
1072
|
},
|
|
984
1073
|
(table) => ({
|
|
1074
|
+
tenantIdx: index("board_comments_tenant_id_idx").on(table.tenant_id),
|
|
985
1075
|
boardIdx: index("board_comments_board_idx").on(table.board_id),
|
|
986
1076
|
sessionIdx: index("board_comments_session_idx").on(table.session_id),
|
|
987
1077
|
taskIdx: index("board_comments_task_idx").on(table.task_id),
|
|
@@ -996,6 +1086,7 @@ var boardComments = pgTable(
|
|
|
996
1086
|
var gatewayChannels = pgTable(
|
|
997
1087
|
"gateway_channels",
|
|
998
1088
|
{
|
|
1089
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
999
1090
|
// Primary identity
|
|
1000
1091
|
id: varchar("id", { length: 36 }).primaryKey(),
|
|
1001
1092
|
created_at: t.timestamp("created_at").notNull(),
|
|
@@ -1009,7 +1100,7 @@ var gatewayChannels = pgTable(
|
|
|
1009
1100
|
}).notNull(),
|
|
1010
1101
|
target_branch_id: varchar("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id, { onDelete: "cascade" }),
|
|
1011
1102
|
agor_user_id: varchar("agor_user_id", { length: 36 }).notNull(),
|
|
1012
|
-
channel_key: text("channel_key").notNull()
|
|
1103
|
+
channel_key: text("channel_key").notNull(),
|
|
1013
1104
|
enabled: t.bool("enabled").notNull().default(true),
|
|
1014
1105
|
last_message_at: t.timestamp("last_message_at"),
|
|
1015
1106
|
// JSON blob for platform credentials (encrypted at rest)
|
|
@@ -1018,13 +1109,19 @@ var gatewayChannels = pgTable(
|
|
|
1018
1109
|
agentic_config: t.json("agentic_config")
|
|
1019
1110
|
},
|
|
1020
1111
|
(table) => ({
|
|
1112
|
+
tenantIdx: index("gateway_channels_tenant_id_idx").on(table.tenant_id),
|
|
1021
1113
|
channelKeyIdx: index("idx_gateway_channel_key").on(table.channel_key),
|
|
1114
|
+
channelKeyTenantUnique: uniqueIndex("gateway_channels_tenant_channel_key_unique").on(
|
|
1115
|
+
table.tenant_id,
|
|
1116
|
+
table.channel_key
|
|
1117
|
+
),
|
|
1022
1118
|
enabledTypeIdx: index("idx_gateway_enabled_type").on(table.enabled, table.channel_type)
|
|
1023
1119
|
})
|
|
1024
1120
|
);
|
|
1025
1121
|
var threadSessionMap = pgTable(
|
|
1026
1122
|
"thread_session_map",
|
|
1027
1123
|
{
|
|
1124
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
1028
1125
|
// Primary identity
|
|
1029
1126
|
id: varchar("id", { length: 36 }).primaryKey(),
|
|
1030
1127
|
created_at: t.timestamp("created_at").notNull(),
|
|
@@ -1042,7 +1139,9 @@ var threadSessionMap = pgTable(
|
|
|
1042
1139
|
metadata: t.json("metadata")
|
|
1043
1140
|
},
|
|
1044
1141
|
(table) => ({
|
|
1045
|
-
|
|
1142
|
+
tenantIdx: index("thread_session_map_tenant_id_idx").on(table.tenant_id),
|
|
1143
|
+
uniqueChannelThread: uniqueIndex("uniq_thread_map_tenant_channel_thread").on(
|
|
1144
|
+
table.tenant_id,
|
|
1046
1145
|
table.channel_id,
|
|
1047
1146
|
table.thread_id
|
|
1048
1147
|
),
|
|
@@ -1051,14 +1150,82 @@ var threadSessionMap = pgTable(
|
|
|
1051
1150
|
channelStatusIdx: index("idx_thread_map_channel_status").on(table.channel_id, table.status)
|
|
1052
1151
|
})
|
|
1053
1152
|
);
|
|
1153
|
+
var gatewayOutboundMessages = pgTable(
|
|
1154
|
+
"gateway_outbound_messages",
|
|
1155
|
+
{
|
|
1156
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
1157
|
+
id: varchar("id", { length: 36 }).primaryKey(),
|
|
1158
|
+
created_at: t.timestamp("created_at").notNull(),
|
|
1159
|
+
updated_at: t.timestamp("updated_at").notNull(),
|
|
1160
|
+
gateway_channel_id: varchar("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels.id, { onDelete: "cascade" }),
|
|
1161
|
+
channel_type: text("channel_type", {
|
|
1162
|
+
enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
|
|
1163
|
+
}).notNull(),
|
|
1164
|
+
platform_channel_id: text("platform_channel_id").notNull(),
|
|
1165
|
+
platform_message_id: text("platform_message_id").notNull(),
|
|
1166
|
+
platform_thread_id: text("platform_thread_id").notNull(),
|
|
1167
|
+
platform_permalink: text("platform_permalink"),
|
|
1168
|
+
target_branch_id: varchar("target_branch_id", { length: 36 }).notNull().references(() => branches.branch_id),
|
|
1169
|
+
emitted_by_user_id: varchar("emitted_by_user_id", { length: 36 }).notNull().references(() => users.user_id),
|
|
1170
|
+
emitted_by_session_id: varchar("emitted_by_session_id", { length: 36 }).references(
|
|
1171
|
+
() => sessions.session_id,
|
|
1172
|
+
{
|
|
1173
|
+
onDelete: "set null"
|
|
1174
|
+
}
|
|
1175
|
+
),
|
|
1176
|
+
emitted_by_task_id: varchar("emitted_by_task_id", { length: 36 }).references(
|
|
1177
|
+
() => tasks.task_id,
|
|
1178
|
+
{
|
|
1179
|
+
onDelete: "set null"
|
|
1180
|
+
}
|
|
1181
|
+
),
|
|
1182
|
+
emitted_by_schedule_id: varchar("emitted_by_schedule_id", { length: 36 }).references(
|
|
1183
|
+
() => schedules.schedule_id,
|
|
1184
|
+
{
|
|
1185
|
+
onDelete: "set null"
|
|
1186
|
+
}
|
|
1187
|
+
),
|
|
1188
|
+
message_text: text("message_text").notNull(),
|
|
1189
|
+
message_preview: text("message_preview").notNull(),
|
|
1190
|
+
metadata: t.json("metadata"),
|
|
1191
|
+
consumed_by_session_id: varchar("consumed_by_session_id", { length: 36 }).references(
|
|
1192
|
+
() => sessions.session_id,
|
|
1193
|
+
{
|
|
1194
|
+
onDelete: "set null"
|
|
1195
|
+
}
|
|
1196
|
+
),
|
|
1197
|
+
consumed_at: t.timestamp("consumed_at")
|
|
1198
|
+
},
|
|
1199
|
+
(table) => ({
|
|
1200
|
+
tenantIdx: index("gateway_outbound_messages_tenant_id_idx").on(table.tenant_id),
|
|
1201
|
+
uniqueChannelThread: uniqueIndex("uniq_gateway_outbound_tenant_channel_thread").on(
|
|
1202
|
+
table.tenant_id,
|
|
1203
|
+
table.gateway_channel_id,
|
|
1204
|
+
table.platform_thread_id
|
|
1205
|
+
),
|
|
1206
|
+
emittedSessionIdx: index("idx_gateway_outbound_emitted_session").on(
|
|
1207
|
+
table.emitted_by_session_id
|
|
1208
|
+
),
|
|
1209
|
+
emittedScheduleIdx: index("idx_gateway_outbound_emitted_schedule").on(
|
|
1210
|
+
table.emitted_by_schedule_id
|
|
1211
|
+
),
|
|
1212
|
+
targetBranchCreatedIdx: index("idx_gateway_outbound_branch_created").on(
|
|
1213
|
+
table.target_branch_id,
|
|
1214
|
+
table.created_at
|
|
1215
|
+
),
|
|
1216
|
+
consumedIdx: index("idx_gateway_outbound_consumed").on(table.consumed_at)
|
|
1217
|
+
})
|
|
1218
|
+
);
|
|
1054
1219
|
var sessionEnvSelections = pgTable(
|
|
1055
1220
|
"session_env_selections",
|
|
1056
1221
|
{
|
|
1222
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
1057
1223
|
session_id: varchar("session_id", { length: 36 }).notNull().references(() => sessions.session_id, { onDelete: "cascade" }),
|
|
1058
1224
|
env_var_name: text("env_var_name").notNull(),
|
|
1059
1225
|
created_at: t.timestamp("created_at").notNull()
|
|
1060
1226
|
},
|
|
1061
1227
|
(table) => ({
|
|
1228
|
+
tenantIdx: index("session_env_selections_tenant_id_idx").on(table.tenant_id),
|
|
1062
1229
|
pk: primaryKey({ columns: [table.session_id, table.env_var_name] }),
|
|
1063
1230
|
sessionIdx: index("session_env_selections_session_idx").on(table.session_id)
|
|
1064
1231
|
})
|
|
@@ -1066,6 +1233,7 @@ var sessionEnvSelections = pgTable(
|
|
|
1066
1233
|
var kbNamespaces = pgTable(
|
|
1067
1234
|
"kb_namespaces",
|
|
1068
1235
|
{
|
|
1236
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
1069
1237
|
namespace_id: varchar("namespace_id", { length: 36 }).primaryKey(),
|
|
1070
1238
|
slug: text("slug").notNull(),
|
|
1071
1239
|
display_name: text("display_name").notNull(),
|
|
@@ -1092,7 +1260,8 @@ var kbNamespaces = pgTable(
|
|
|
1092
1260
|
archived_at: t.timestamp("archived_at")
|
|
1093
1261
|
},
|
|
1094
1262
|
(table) => ({
|
|
1095
|
-
|
|
1263
|
+
tenantIdx: index("kb_namespaces_tenant_id_idx").on(table.tenant_id),
|
|
1264
|
+
slugIdx: uniqueIndex("kb_namespaces_tenant_slug_unique").on(table.tenant_id, table.slug).where(sql2`${table.archived} = false`),
|
|
1096
1265
|
kindIdx: index("kb_namespaces_kind_idx").on(table.kind),
|
|
1097
1266
|
ownerIdx: index("kb_namespaces_owner_idx").on(table.owner_user_id),
|
|
1098
1267
|
repoIdx: index("kb_namespaces_repo_idx").on(table.repo_id),
|
|
@@ -1103,6 +1272,7 @@ var kbNamespaces = pgTable(
|
|
|
1103
1272
|
var kbNamespaceAcl = pgTable(
|
|
1104
1273
|
"kb_namespace_acl",
|
|
1105
1274
|
{
|
|
1275
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
1106
1276
|
namespace_acl_id: varchar("namespace_acl_id", { length: 36 }).primaryKey(),
|
|
1107
1277
|
namespace_id: varchar("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
|
|
1108
1278
|
subject_type: text("subject_type", { enum: ["user", "group"] }).notNull(),
|
|
@@ -1115,9 +1285,11 @@ var kbNamespaceAcl = pgTable(
|
|
|
1115
1285
|
updated_at: t.timestamp("updated_at")
|
|
1116
1286
|
},
|
|
1117
1287
|
(table) => ({
|
|
1288
|
+
tenantIdx: index("kb_namespace_acl_tenant_id_idx").on(table.tenant_id),
|
|
1118
1289
|
namespaceIdx: index("kb_namespace_acl_namespace_idx").on(table.namespace_id),
|
|
1119
1290
|
subjectIdx: index("kb_namespace_acl_subject_idx").on(table.subject_type, table.subject_id),
|
|
1120
|
-
namespaceSubjectIdx: uniqueIndex("
|
|
1291
|
+
namespaceSubjectIdx: uniqueIndex("kb_namespace_acl_tenant_namespace_subject_unique").on(
|
|
1292
|
+
table.tenant_id,
|
|
1121
1293
|
table.namespace_id,
|
|
1122
1294
|
table.subject_type,
|
|
1123
1295
|
table.subject_id
|
|
@@ -1127,6 +1299,7 @@ var kbNamespaceAcl = pgTable(
|
|
|
1127
1299
|
var kbDocuments = pgTable(
|
|
1128
1300
|
"kb_documents",
|
|
1129
1301
|
{
|
|
1302
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
1130
1303
|
document_id: varchar("document_id", { length: 36 }).primaryKey(),
|
|
1131
1304
|
namespace_id: varchar("namespace_id", { length: 36 }).notNull().references(() => kbNamespaces.namespace_id, { onDelete: "cascade" }),
|
|
1132
1305
|
path: text("path").notNull(),
|
|
@@ -1154,8 +1327,9 @@ var kbDocuments = pgTable(
|
|
|
1154
1327
|
archived_at: t.timestamp("archived_at")
|
|
1155
1328
|
},
|
|
1156
1329
|
(table) => ({
|
|
1157
|
-
|
|
1158
|
-
|
|
1330
|
+
tenantIdx: index("kb_documents_tenant_id_idx").on(table.tenant_id),
|
|
1331
|
+
namespacePathIdx: uniqueIndex("kb_documents_tenant_namespace_path_unique").on(table.tenant_id, table.namespace_id, table.path).where(sql2`${table.archived} = false`),
|
|
1332
|
+
uriIdx: uniqueIndex("kb_documents_tenant_uri_unique").on(table.tenant_id, table.uri).where(sql2`${table.archived} = false`),
|
|
1159
1333
|
namespaceIdx: index("kb_documents_namespace_idx").on(table.namespace_id),
|
|
1160
1334
|
kindIdx: index("kb_documents_kind_idx").on(table.kind),
|
|
1161
1335
|
visibilityIdx: index("kb_documents_visibility_idx").on(table.visibility),
|
|
@@ -1168,6 +1342,7 @@ var kbDocuments = pgTable(
|
|
|
1168
1342
|
var kbDocumentVersions = pgTable(
|
|
1169
1343
|
"kb_document_versions",
|
|
1170
1344
|
{
|
|
1345
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
1171
1346
|
version_id: varchar("version_id", { length: 36 }).primaryKey(),
|
|
1172
1347
|
document_id: varchar("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
|
|
1173
1348
|
version_number: integer("version_number").notNull(),
|
|
@@ -1187,7 +1362,9 @@ var kbDocumentVersions = pgTable(
|
|
|
1187
1362
|
created_at: t.timestamp("created_at").notNull()
|
|
1188
1363
|
},
|
|
1189
1364
|
(table) => ({
|
|
1190
|
-
|
|
1365
|
+
tenantIdx: index("kb_document_versions_tenant_id_idx").on(table.tenant_id),
|
|
1366
|
+
documentVersionIdx: uniqueIndex("kb_document_versions_tenant_document_version_unique").on(
|
|
1367
|
+
table.tenant_id,
|
|
1191
1368
|
table.document_id,
|
|
1192
1369
|
table.version_number
|
|
1193
1370
|
),
|
|
@@ -1199,6 +1376,7 @@ var kbDocumentVersions = pgTable(
|
|
|
1199
1376
|
var kbDocumentUnits = pgTable(
|
|
1200
1377
|
"kb_document_units",
|
|
1201
1378
|
{
|
|
1379
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
1202
1380
|
unit_id: varchar("unit_id", { length: 36 }).primaryKey(),
|
|
1203
1381
|
document_id: varchar("document_id", { length: 36 }).notNull().references(() => kbDocuments.document_id, { onDelete: "cascade" }),
|
|
1204
1382
|
version_id: varchar("version_id", { length: 36 }).notNull().references(() => kbDocumentVersions.version_id, { onDelete: "cascade" }),
|
|
@@ -1223,6 +1401,7 @@ var kbDocumentUnits = pgTable(
|
|
|
1223
1401
|
updated_at: t.timestamp("updated_at")
|
|
1224
1402
|
},
|
|
1225
1403
|
(table) => ({
|
|
1404
|
+
tenantIdx: index("kb_document_units_tenant_id_idx").on(table.tenant_id),
|
|
1226
1405
|
documentIdx: index("kb_document_units_document_idx").on(table.document_id),
|
|
1227
1406
|
versionIdx: index("kb_document_units_version_idx").on(table.version_id),
|
|
1228
1407
|
versionOrdinalIdx: index("kb_document_units_version_ordinal_idx").on(
|
|
@@ -1236,6 +1415,7 @@ var kbDocumentUnits = pgTable(
|
|
|
1236
1415
|
var kbEmbeddingSpaces = pgTable(
|
|
1237
1416
|
"kb_embedding_spaces",
|
|
1238
1417
|
{
|
|
1418
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
1239
1419
|
embedding_space_id: varchar("embedding_space_id", { length: 36 }).primaryKey(),
|
|
1240
1420
|
provider: text("provider").notNull(),
|
|
1241
1421
|
model: text("model").notNull(),
|
|
@@ -1248,7 +1428,9 @@ var kbEmbeddingSpaces = pgTable(
|
|
|
1248
1428
|
updated_at: t.timestamp("updated_at")
|
|
1249
1429
|
},
|
|
1250
1430
|
(table) => ({
|
|
1251
|
-
|
|
1431
|
+
tenantIdx: index("kb_embedding_spaces_tenant_id_idx").on(table.tenant_id),
|
|
1432
|
+
providerModelIdx: uniqueIndex("kb_embedding_spaces_tenant_provider_model_unique").on(
|
|
1433
|
+
table.tenant_id,
|
|
1252
1434
|
table.provider,
|
|
1253
1435
|
table.model,
|
|
1254
1436
|
table.dimensions,
|
|
@@ -1261,6 +1443,7 @@ var kbEmbeddingSpaces = pgTable(
|
|
|
1261
1443
|
var kbGraphNodes = pgTable(
|
|
1262
1444
|
"kb_graph_nodes",
|
|
1263
1445
|
{
|
|
1446
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
1264
1447
|
node_id: varchar("node_id", { length: 36 }).primaryKey(),
|
|
1265
1448
|
node_type: text("node_type", {
|
|
1266
1449
|
enum: [
|
|
@@ -1326,7 +1509,8 @@ var kbGraphNodes = pgTable(
|
|
|
1326
1509
|
archived_at: t.timestamp("archived_at")
|
|
1327
1510
|
},
|
|
1328
1511
|
(table) => ({
|
|
1329
|
-
|
|
1512
|
+
tenantIdx: index("kb_graph_nodes_tenant_id_idx").on(table.tenant_id),
|
|
1513
|
+
uriIdx: uniqueIndex("kb_graph_nodes_tenant_uri_unique").on(table.tenant_id, table.uri).where(sql2`${table.archived} = false`),
|
|
1330
1514
|
typeIdx: index("kb_graph_nodes_type_idx").on(table.node_type),
|
|
1331
1515
|
namespaceIdx: index("kb_graph_nodes_namespace_idx").on(table.namespace_id),
|
|
1332
1516
|
documentIdx: index("kb_graph_nodes_document_idx").on(table.document_id),
|
|
@@ -1346,6 +1530,7 @@ var kbGraphNodes = pgTable(
|
|
|
1346
1530
|
var kbGraphEdges = pgTable(
|
|
1347
1531
|
"kb_graph_edges",
|
|
1348
1532
|
{
|
|
1533
|
+
tenant_id: text("tenant_id").notNull().default("default"),
|
|
1349
1534
|
edge_id: varchar("edge_id", { length: 36 }).primaryKey(),
|
|
1350
1535
|
source_node_id: varchar("source_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
|
|
1351
1536
|
target_node_id: varchar("target_node_id", { length: 36 }).notNull().references(() => kbGraphNodes.node_id, { onDelete: "cascade" }),
|
|
@@ -1374,6 +1559,7 @@ var kbGraphEdges = pgTable(
|
|
|
1374
1559
|
archived_at: t.timestamp("archived_at")
|
|
1375
1560
|
},
|
|
1376
1561
|
(table) => ({
|
|
1562
|
+
tenantIdx: index("kb_graph_edges_tenant_id_idx").on(table.tenant_id),
|
|
1377
1563
|
sourceIdx: index("kb_graph_edges_source_idx").on(table.source_node_id),
|
|
1378
1564
|
targetIdx: index("kb_graph_edges_target_idx").on(table.target_node_id),
|
|
1379
1565
|
typeIdx: index("kb_graph_edges_type_idx").on(table.edge_type),
|
|
@@ -1385,7 +1571,7 @@ var kbGraphEdges = pgTable(
|
|
|
1385
1571
|
table.target_node_id,
|
|
1386
1572
|
table.edge_type
|
|
1387
1573
|
),
|
|
1388
|
-
sourceTargetTypeIdx: uniqueIndex("
|
|
1574
|
+
sourceTargetTypeIdx: uniqueIndex("kb_graph_edges_tenant_source_target_type_unique").on(table.tenant_id, table.source_node_id, table.target_node_id, table.edge_type).where(sql2`${table.archived} = false`),
|
|
1389
1575
|
archivedIdx: index("kb_graph_edges_archived_idx").on(table.archived)
|
|
1390
1576
|
})
|
|
1391
1577
|
);
|
|
@@ -1447,6 +1633,7 @@ __export(schema_sqlite_exports, {
|
|
|
1447
1633
|
cardTypes: () => cardTypes2,
|
|
1448
1634
|
cards: () => cards2,
|
|
1449
1635
|
gatewayChannels: () => gatewayChannels2,
|
|
1636
|
+
gatewayOutboundMessages: () => gatewayOutboundMessages2,
|
|
1450
1637
|
groupMemberships: () => groupMemberships2,
|
|
1451
1638
|
groups: () => groups2,
|
|
1452
1639
|
kbDocumentUnits: () => kbDocumentUnits2,
|
|
@@ -1553,6 +1740,7 @@ var sessions2 = sqliteTable(
|
|
|
1553
1740
|
},
|
|
1554
1741
|
(table) => ({
|
|
1555
1742
|
statusIdx: index2("sessions_status_idx").on(table.status),
|
|
1743
|
+
statusReadyIdx: index2("sessions_status_ready_idx").on(table.status, table.ready_for_prompt),
|
|
1556
1744
|
agenticToolIdx: index2("sessions_agentic_tool_idx").on(table.agentic_tool),
|
|
1557
1745
|
boardIdx: index2("sessions_board_idx").on(table.board_id),
|
|
1558
1746
|
branchIdx: index2("sessions_branch_idx").on(table.branch_id),
|
|
@@ -1592,6 +1780,9 @@ var sessionRelationships2 = sqliteTable(
|
|
|
1592
1780
|
sourceIdx: index2("session_relationships_source_idx").on(table.source_session_id),
|
|
1593
1781
|
targetIdx: index2("session_relationships_target_idx").on(table.target_session_id),
|
|
1594
1782
|
callbackIdx: index2("session_relationships_callback_idx").on(table.callback_session_id),
|
|
1783
|
+
// Note: no tenant_source/tenant_target composite indexes here — SQLite schema
|
|
1784
|
+
// has no tenant column on this table (RLS is Postgres-only). The standalone
|
|
1785
|
+
// source/target indexes above are sufficient for SQLite.
|
|
1595
1786
|
sourceTargetTypeUnique: uniqueIndex2("session_relationships_source_target_type_unique").on(
|
|
1596
1787
|
table.source_session_id,
|
|
1597
1788
|
table.target_session_id,
|
|
@@ -1711,7 +1902,12 @@ var messages2 = sqliteTable(
|
|
|
1711
1902
|
// Indexes for efficient lookups
|
|
1712
1903
|
sessionIdx: index2("messages_session_id_idx").on(table.session_id),
|
|
1713
1904
|
taskIdx: index2("messages_task_id_idx").on(table.task_id),
|
|
1714
|
-
sessionIndexIdx: index2("messages_session_index_idx").on(table.session_id, table.index)
|
|
1905
|
+
sessionIndexIdx: index2("messages_session_index_idx").on(table.session_id, table.index),
|
|
1906
|
+
timestampIdx: index2("messages_timestamp_idx").on(table.timestamp),
|
|
1907
|
+
sessionTimestampIdx: index2("messages_session_timestamp_idx").on(
|
|
1908
|
+
table.session_id,
|
|
1909
|
+
table.timestamp
|
|
1910
|
+
)
|
|
1715
1911
|
})
|
|
1716
1912
|
);
|
|
1717
1913
|
var boards2 = sqliteTable(
|
|
@@ -1937,6 +2133,9 @@ var users2 = sqliteTable(
|
|
|
1937
2133
|
onboarding_completed: t2.bool("onboarding_completed").notNull().default(false),
|
|
1938
2134
|
// Force password change flag (admin-settable, auto-cleared on password change)
|
|
1939
2135
|
must_change_password: t2.bool("must_change_password").notNull().default(false),
|
|
2136
|
+
// Auth invalidation marker. Password changes set this timestamp so any
|
|
2137
|
+
// previously issued browser access or refresh token is rejected.
|
|
2138
|
+
tokens_valid_after: t2.timestamp("tokens_valid_after"),
|
|
1940
2139
|
// JSON blob for profile/preferences
|
|
1941
2140
|
data: t2.json("data").$type().notNull()
|
|
1942
2141
|
},
|
|
@@ -2380,6 +2579,66 @@ var threadSessionMap2 = sqliteTable(
|
|
|
2380
2579
|
channelStatusIdx: index2("idx_thread_map_channel_status").on(table.channel_id, table.status)
|
|
2381
2580
|
})
|
|
2382
2581
|
);
|
|
2582
|
+
var gatewayOutboundMessages2 = sqliteTable(
|
|
2583
|
+
"gateway_outbound_messages",
|
|
2584
|
+
{
|
|
2585
|
+
id: text2("id", { length: 36 }).primaryKey(),
|
|
2586
|
+
created_at: t2.timestamp("created_at").notNull(),
|
|
2587
|
+
updated_at: t2.timestamp("updated_at").notNull(),
|
|
2588
|
+
gateway_channel_id: text2("gateway_channel_id", { length: 36 }).notNull().references(() => gatewayChannels2.id, { onDelete: "cascade" }),
|
|
2589
|
+
channel_type: text2("channel_type", {
|
|
2590
|
+
enum: ["slack", "discord", "whatsapp", "telegram", "github", "teams"]
|
|
2591
|
+
}).notNull(),
|
|
2592
|
+
platform_channel_id: text2("platform_channel_id").notNull(),
|
|
2593
|
+
platform_message_id: text2("platform_message_id").notNull(),
|
|
2594
|
+
platform_thread_id: text2("platform_thread_id").notNull(),
|
|
2595
|
+
platform_permalink: text2("platform_permalink"),
|
|
2596
|
+
target_branch_id: text2("target_branch_id", { length: 36 }).notNull().references(() => branches2.branch_id),
|
|
2597
|
+
emitted_by_user_id: text2("emitted_by_user_id", { length: 36 }).notNull().references(() => users2.user_id),
|
|
2598
|
+
emitted_by_session_id: text2("emitted_by_session_id", { length: 36 }).references(
|
|
2599
|
+
() => sessions2.session_id,
|
|
2600
|
+
{
|
|
2601
|
+
onDelete: "set null"
|
|
2602
|
+
}
|
|
2603
|
+
),
|
|
2604
|
+
emitted_by_task_id: text2("emitted_by_task_id", { length: 36 }).references(() => tasks2.task_id, {
|
|
2605
|
+
onDelete: "set null"
|
|
2606
|
+
}),
|
|
2607
|
+
emitted_by_schedule_id: text2("emitted_by_schedule_id", { length: 36 }).references(
|
|
2608
|
+
() => schedules2.schedule_id,
|
|
2609
|
+
{
|
|
2610
|
+
onDelete: "set null"
|
|
2611
|
+
}
|
|
2612
|
+
),
|
|
2613
|
+
message_text: text2("message_text").notNull(),
|
|
2614
|
+
message_preview: text2("message_preview").notNull(),
|
|
2615
|
+
metadata: t2.json("metadata"),
|
|
2616
|
+
consumed_by_session_id: text2("consumed_by_session_id", { length: 36 }).references(
|
|
2617
|
+
() => sessions2.session_id,
|
|
2618
|
+
{
|
|
2619
|
+
onDelete: "set null"
|
|
2620
|
+
}
|
|
2621
|
+
),
|
|
2622
|
+
consumed_at: t2.timestamp("consumed_at")
|
|
2623
|
+
},
|
|
2624
|
+
(table) => ({
|
|
2625
|
+
uniqueChannelThread: uniqueIndex2("uniq_gateway_outbound_channel_thread").on(
|
|
2626
|
+
table.gateway_channel_id,
|
|
2627
|
+
table.platform_thread_id
|
|
2628
|
+
),
|
|
2629
|
+
emittedSessionIdx: index2("idx_gateway_outbound_emitted_session").on(
|
|
2630
|
+
table.emitted_by_session_id
|
|
2631
|
+
),
|
|
2632
|
+
emittedScheduleIdx: index2("idx_gateway_outbound_emitted_schedule").on(
|
|
2633
|
+
table.emitted_by_schedule_id
|
|
2634
|
+
),
|
|
2635
|
+
targetBranchCreatedIdx: index2("idx_gateway_outbound_branch_created").on(
|
|
2636
|
+
table.target_branch_id,
|
|
2637
|
+
table.created_at
|
|
2638
|
+
),
|
|
2639
|
+
consumedIdx: index2("idx_gateway_outbound_consumed").on(table.consumed_at)
|
|
2640
|
+
})
|
|
2641
|
+
);
|
|
2383
2642
|
var sessionEnvSelections2 = sqliteTable(
|
|
2384
2643
|
"session_env_selections",
|
|
2385
2644
|
{
|
|
@@ -2762,7 +3021,7 @@ import { readFileSync, statSync } from "fs";
|
|
|
2762
3021
|
import fs from "fs/promises";
|
|
2763
3022
|
import os from "os";
|
|
2764
3023
|
import path from "path";
|
|
2765
|
-
import yaml from "js-yaml";
|
|
3024
|
+
import * as yaml from "js-yaml";
|
|
2766
3025
|
|
|
2767
3026
|
// src/config/analytics-defaults.ts
|
|
2768
3027
|
function getDefaultAnalyticsConfig() {
|
|
@@ -2863,6 +3122,64 @@ function resolveExecutorHeartbeatConfig(execution) {
|
|
|
2863
3122
|
};
|
|
2864
3123
|
}
|
|
2865
3124
|
|
|
3125
|
+
// src/config/multitenancy.ts
|
|
3126
|
+
var DEFAULT_STATIC_TENANT_ID = "default";
|
|
3127
|
+
var RESERVED_AUTH_CLAIMS = /* @__PURE__ */ new Set(["aud", "exp", "iat", "iss", "jti", "nbf", "sub", "type"]);
|
|
3128
|
+
function detectPostgresUrl(url) {
|
|
3129
|
+
if (!url) return false;
|
|
3130
|
+
const lower = url.toLowerCase();
|
|
3131
|
+
return lower.startsWith("postgresql://") || lower.startsWith("postgres://") || lower.startsWith("pg://");
|
|
3132
|
+
}
|
|
3133
|
+
function resolveMultiTenancyDatabaseDialect(config = {}) {
|
|
3134
|
+
if (process.env.AGOR_DB_DIALECT === "postgresql" || process.env.AGOR_DB_DIALECT === "sqlite") {
|
|
3135
|
+
return process.env.AGOR_DB_DIALECT;
|
|
3136
|
+
}
|
|
3137
|
+
if (detectPostgresUrl(process.env.DATABASE_URL)) return "postgresql";
|
|
3138
|
+
if (config.database?.dialect === "postgresql" || config.database?.dialect === "sqlite") {
|
|
3139
|
+
return config.database.dialect;
|
|
3140
|
+
}
|
|
3141
|
+
if (detectPostgresUrl(config.database?.postgresql?.url) || config.database?.postgresql?.host) {
|
|
3142
|
+
return "postgresql";
|
|
3143
|
+
}
|
|
3144
|
+
return "sqlite";
|
|
3145
|
+
}
|
|
3146
|
+
function resolveMultiTenancyConfig(config) {
|
|
3147
|
+
const raw = config.multi_tenancy ?? {};
|
|
3148
|
+
const mode = raw.mode ?? "static";
|
|
3149
|
+
return {
|
|
3150
|
+
mode,
|
|
3151
|
+
static_tenant_id: raw.static_tenant_id?.trim() || DEFAULT_STATIC_TENANT_ID,
|
|
3152
|
+
...raw.auth_claim ? { auth_claim: raw.auth_claim } : {},
|
|
3153
|
+
...raw.trusted_header ? { trusted_header: raw.trusted_header } : {}
|
|
3154
|
+
};
|
|
3155
|
+
}
|
|
3156
|
+
function assertValidMultiTenancyConfig(config) {
|
|
3157
|
+
const resolved = resolveMultiTenancyConfig(config);
|
|
3158
|
+
if (resolved.mode !== "static" && resolved.mode !== "required_from_auth") {
|
|
3159
|
+
throw new Error("Config error: multi_tenancy.mode must be one of: static, required_from_auth");
|
|
3160
|
+
}
|
|
3161
|
+
if (!resolved.static_tenant_id) {
|
|
3162
|
+
throw new Error("Config error: multi_tenancy.static_tenant_id must not be empty");
|
|
3163
|
+
}
|
|
3164
|
+
if (resolved.auth_claim && RESERVED_AUTH_CLAIMS.has(resolved.auth_claim)) {
|
|
3165
|
+
throw new Error(
|
|
3166
|
+
`Config error: multi_tenancy.auth_claim cannot be reserved JWT claim '${resolved.auth_claim}'`
|
|
3167
|
+
);
|
|
3168
|
+
}
|
|
3169
|
+
if (resolved.mode === "required_from_auth") {
|
|
3170
|
+
if (resolveMultiTenancyDatabaseDialect(config) !== "postgresql") {
|
|
3171
|
+
throw new Error(
|
|
3172
|
+
"Config error: multi_tenancy.required_from_auth requires database.dialect: postgresql"
|
|
3173
|
+
);
|
|
3174
|
+
}
|
|
3175
|
+
if (!resolved.auth_claim && !resolved.trusted_header) {
|
|
3176
|
+
throw new Error(
|
|
3177
|
+
"Config error: multi_tenancy.required_from_auth requires multi_tenancy.auth_claim or multi_tenancy.trusted_header"
|
|
3178
|
+
);
|
|
3179
|
+
}
|
|
3180
|
+
}
|
|
3181
|
+
}
|
|
3182
|
+
|
|
2866
3183
|
// src/config/config-manager.ts
|
|
2867
3184
|
var NO_FILE = -1;
|
|
2868
3185
|
var NO_FILE_KEY = { mtimeMs: NO_FILE, size: 0 };
|
|
@@ -2895,6 +3212,9 @@ function writeCachedConfig(configPath, config, key) {
|
|
|
2895
3212
|
cachedEntry = { path: configPath, config: structuredClone(config), key };
|
|
2896
3213
|
}
|
|
2897
3214
|
function parseAndValidateConfig(content) {
|
|
3215
|
+
if (content.trim() === "") {
|
|
3216
|
+
return {};
|
|
3217
|
+
}
|
|
2898
3218
|
const parsed = yaml.load(content);
|
|
2899
3219
|
const finalConfig = parsed || {};
|
|
2900
3220
|
validateConfig(finalConfig);
|
|
@@ -2924,6 +3244,7 @@ To update: agor config set execution.unix_user_mode insulated`
|
|
|
2924
3244
|
`Config error: execution.managed_envs_execution_mode must be one of: hybrid, webhook-only`
|
|
2925
3245
|
);
|
|
2926
3246
|
}
|
|
3247
|
+
assertValidMultiTenancyConfig(config);
|
|
2927
3248
|
validateOptionalHttpUrl(
|
|
2928
3249
|
config.external_launch,
|
|
2929
3250
|
"login_redirect_url",
|
|
@@ -2984,7 +3305,12 @@ function getDefaultConfig() {
|
|
|
2984
3305
|
// Default: sync passwords to Unix
|
|
2985
3306
|
executor_heartbeat: resolveExecutorHeartbeatConfig()
|
|
2986
3307
|
},
|
|
2987
|
-
analytics: getDefaultAnalyticsConfig()
|
|
3308
|
+
analytics: getDefaultAnalyticsConfig(),
|
|
3309
|
+
telemetry: {},
|
|
3310
|
+
multi_tenancy: {
|
|
3311
|
+
mode: "static",
|
|
3312
|
+
static_tenant_id: "default"
|
|
3313
|
+
}
|
|
2988
3314
|
};
|
|
2989
3315
|
}
|
|
2990
3316
|
function loadConfigSync() {
|
|
@@ -3098,6 +3424,7 @@ var userMcpOauthTokens3 = schema.userMcpOauthTokens;
|
|
|
3098
3424
|
var boardComments3 = schema.boardComments;
|
|
3099
3425
|
var gatewayChannels3 = schema.gatewayChannels;
|
|
3100
3426
|
var threadSessionMap3 = schema.threadSessionMap;
|
|
3427
|
+
var gatewayOutboundMessages3 = schema.gatewayOutboundMessages;
|
|
3101
3428
|
var userApiKeys3 = schema.userApiKeys;
|
|
3102
3429
|
var serializedSessions3 = schema.serializedSessions;
|
|
3103
3430
|
var kbNamespaces3 = schema.kbNamespaces;
|