agor-live 0.22.0 → 0.23.2
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 +518 -89
- package/dist/core/claude/index.js +515 -88
- package/dist/core/claude-cli/index.cjs +24 -0
- package/dist/core/claude-cli/index.js +24 -0
- package/dist/core/claude-cli/pricing.d.ts.map +1 -1
- package/dist/core/client/index.cjs +52 -7
- package/dist/core/client/index.js +48 -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 +2767 -1232
- 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 +2601 -1094
- 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 +54 -3
- 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 +52 -2
- 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 +9 -0
- 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 +56 -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 +7 -6
- package/dist/core/environment/render-snapshot.d.ts +2 -0
- package/dist/core/environment/render-snapshot.d.ts.map +1 -1
- package/dist/core/environment/render-snapshot.js +7 -6
- package/dist/core/environment/variable-resolver.cjs +3 -1
- package/dist/core/environment/variable-resolver.js +3 -1
- 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 +11563 -10832
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +12203 -10962
- package/dist/core/lib/feathers-validation.cjs +9 -1
- package/dist/core/lib/feathers-validation.d.ts +2 -0
- package/dist/core/lib/feathers-validation.d.ts.map +1 -1
- package/dist/core/lib/feathers-validation.js +9 -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 +8008 -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 +8010 -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 +373 -28
- package/dist/core/mcp/index.d.ts +1 -1
- package/dist/core/mcp/index.d.ts.map +1 -1
- package/dist/core/mcp/index.js +369 -27
- package/dist/core/mcp/template-patterns.d.ts +15 -0
- package/dist/core/mcp/template-patterns.d.ts.map +1 -0
- package/dist/core/mcp/template-resolver.d.ts +13 -0
- package/dist/core/mcp/template-resolver.d.ts.map +1 -1
- package/dist/core/models/browser.cjs +154 -25
- package/dist/core/models/browser.js +150 -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 +154 -25
- package/dist/core/models/index.js +150 -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 +8569 -5519
- 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 +8580 -5535
- 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/templates/handlebars-helpers.cjs +3 -1
- package/dist/core/templates/handlebars-helpers.d.ts +5 -0
- package/dist/core/templates/handlebars-helpers.d.ts.map +1 -1
- package/dist/core/templates/handlebars-helpers.js +3 -1
- package/dist/core/tools/mcp/auth-secrets.cjs +3460 -3
- package/dist/core/tools/mcp/auth-secrets.d.ts.map +1 -1
- package/dist/core/tools/mcp/auth-secrets.js +3477 -3
- package/dist/core/tools/mcp/http-headers.cjs +17 -1
- package/dist/core/tools/mcp/http-headers.d.ts.map +1 -1
- package/dist/core/tools/mcp/http-headers.js +15 -1
- package/dist/core/tools/mcp/oauth-refresh.cjs +568 -114
- package/dist/core/tools/mcp/oauth-refresh.js +566 -115
- package/dist/core/types/board.d.ts +14 -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 +90 -1
- package/dist/core/types/gateway.d.ts.map +1 -1
- package/dist/core/types/index.cjs +42 -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 +38 -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 +1123 -674
- package/dist/core/unix/index.js +1071 -624
- 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 +34 -6
- package/dist/daemon/auth/executor-session-token.d.ts +15 -0
- package/dist/daemon/auth/executor-session-token.d.ts.map +1 -0
- package/dist/daemon/auth/executor-session-token.js +17 -0
- package/dist/daemon/auth/issue-browser-tokens-hook.d.ts +24 -0
- package/dist/daemon/auth/issue-browser-tokens-hook.d.ts.map +1 -0
- package/dist/daemon/auth/issue-browser-tokens-hook.js +95 -0
- 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 +141 -3
- 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 +5 -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 +8271 -2956
- 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 +8271 -2956
- 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 +1740 -81
- 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 +598 -24
- package/dist/daemon/mcp/tools/artifacts.js +560 -20
- package/dist/daemon/mcp/tools/boards.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/boards.js +567 -21
- package/dist/daemon/mcp/tools/branches.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/branches.js +624 -50
- package/dist/daemon/mcp/tools/card-types.js +558 -18
- package/dist/daemon/mcp/tools/cards.js +558 -18
- package/dist/daemon/mcp/tools/environment.js +566 -18
- 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 +16187 -0
- package/dist/daemon/mcp/tools/knowledge.js +558 -18
- package/dist/daemon/mcp/tools/mcp-servers.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/mcp-servers.js +893 -18
- package/dist/daemon/mcp/tools/messages.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/messages.js +618 -32
- package/dist/daemon/mcp/tools/proxies.js +568 -20
- package/dist/daemon/mcp/tools/repos.js +558 -18
- package/dist/daemon/mcp/tools/schedules.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/schedules.js +561 -19
- package/dist/daemon/mcp/tools/search.js +558 -18
- package/dist/daemon/mcp/tools/sessions.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/sessions.js +571 -24
- package/dist/daemon/mcp/tools/tasks.js +558 -18
- package/dist/daemon/mcp/tools/users.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/users.js +577 -23
- package/dist/daemon/mcp/tools/widgets.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/widgets.js +759 -83
- package/dist/daemon/oauth-auth-helpers.d.ts +35 -0
- package/dist/daemon/oauth-auth-helpers.d.ts.map +1 -0
- package/dist/daemon/oauth-auth-helpers.js +14 -0
- package/dist/daemon/register-hooks.d.ts +4 -2
- package/dist/daemon/register-hooks.d.ts.map +1 -1
- package/dist/daemon/register-hooks.js +1158 -595
- 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 +3161 -812
- 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 +2782 -739
- 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 +39 -5
- package/dist/daemon/services/boards.d.ts.map +1 -1
- package/dist/daemon/services/boards.js +123 -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 +272 -36
- 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 +387 -273
- 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 +63 -3
- package/dist/daemon/services/gateway.d.ts.map +1 -1
- package/dist/daemon/services/gateway.js +640 -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 +155 -30
- 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-streams.d.ts +29 -0
- package/dist/daemon/services/session-streams.d.ts.map +1 -0
- package/dist/daemon/services/session-streams.js +84 -0
- package/dist/daemon/services/session-token-service.d.ts.map +1 -1
- package/dist/daemon/services/session-token-service.js +11 -4
- 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 +137 -25
- 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 +108 -18
- package/dist/daemon/startup.d.ts +13 -2
- package/dist/daemon/startup.d.ts.map +1 -1
- package/dist/daemon/startup.js +377 -94
- 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 +36 -7
- 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/emit-service-event.d.ts +56 -0
- package/dist/daemon/utils/emit-service-event.d.ts.map +1 -0
- package/dist/daemon/utils/emit-service-event.js +23 -0
- 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-header-secrets.d.ts +3 -5
- package/dist/daemon/utils/mcp-header-secrets.d.ts.map +1 -1
- package/dist/daemon/utils/mcp-header-secrets.js +31 -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-access-cache.d.ts +9 -0
- package/dist/daemon/utils/realtime-access-cache.d.ts.map +1 -1
- package/dist/daemon/utils/realtime-access-cache.js +24 -0
- package/dist/daemon/utils/realtime-publish.d.ts +26 -0
- package/dist/daemon/utils/realtime-publish.d.ts.map +1 -1
- package/dist/daemon/utils/realtime-publish.js +171 -12
- package/dist/daemon/utils/session-queue-tenant-scope.d.ts +24 -0
- package/dist/daemon/utils/session-queue-tenant-scope.d.ts.map +1 -0
- package/dist/daemon/utils/session-queue-tenant-scope.js +133 -0
- 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/gateway-token/index.d.ts +114 -0
- package/dist/daemon/widgets/gateway-token/index.d.ts.map +1 -0
- package/dist/daemon/widgets/gateway-token/index.js +14711 -0
- package/dist/daemon/widgets/index.d.ts.map +1 -1
- package/dist/daemon/widgets/index.js +327 -37
- package/dist/daemon/widgets/registry.d.ts +7 -0
- package/dist/daemon/widgets/registry.d.ts.map +1 -1
- package/dist/daemon/widgets/submissions.js +12 -9
- package/dist/executor/commands/environment.d.ts.map +1 -1
- package/dist/executor/commands/environment.js +9 -5
- package/dist/executor/commands/git.d.ts.map +1 -1
- package/dist/executor/commands/git.js +3 -1
- package/dist/executor/db/feathers-repositories.d.ts +19 -1
- package/dist/executor/db/feathers-repositories.d.ts.map +1 -1
- package/dist/executor/db/feathers-repositories.js +31 -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/claude.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/claude.js +1 -1
- package/dist/executor/handlers/sdk/codex.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/codex.js +1 -1
- package/dist/executor/handlers/sdk/copilot.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/copilot.js +1 -1
- package/dist/executor/handlers/sdk/cursor.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/cursor.js +1 -0
- package/dist/executor/handlers/sdk/gemini.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/gemini.js +1 -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/handlers/sdk/opencode.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/opencode.js +1 -1
- package/dist/executor/payload-types.d.ts +5 -5
- package/dist/executor/sdk-handlers/base/diff-enrichment.js +1 -1
- package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts +8 -1
- package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/base/mcp-scoping.js +58 -6
- package/dist/executor/sdk-handlers/claude/claude-tool.d.ts +2 -2
- package/dist/executor/sdk-handlers/claude/claude-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/claude-tool.js +2 -2
- package/dist/executor/sdk-handlers/claude/prompt-service.d.ts +13 -3
- package/dist/executor/sdk-handlers/claude/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/prompt-service.js +16 -3
- package/dist/executor/sdk-handlers/claude/query-builder.d.ts +2 -1
- package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/query-builder.js +2 -1
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +8 -12
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/codex-tool.js +14 -17
- 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 +3 -2
- package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/prompt-service.js +131 -12
- 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/sdk-handlers/copilot/copilot-tool.d.ts +2 -2
- package/dist/executor/sdk-handlers/copilot/copilot-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/copilot/copilot-tool.js +2 -2
- package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts +3 -2
- package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/copilot/prompt-service.js +4 -1
- package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts +2 -2
- package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/gemini/gemini-tool.js +2 -2
- package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts +3 -2
- package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/gemini/prompt-service.js +4 -1
- package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts +3 -2
- package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/opencode/opencode-tool.js +4 -1
- package/dist/executor/services/feathers-client.d.ts.map +1 -1
- package/dist/executor/services/feathers-client.js +124 -25
- 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-leeNywMc.js +1 -0
- package/dist/ui/assets/App-Dpl4Cc0U.js +4 -0
- package/dist/ui/assets/App-Dpl4Cc0U.js.gz +0 -0
- package/dist/ui/assets/AppNode-wN3UZlFK.js +1 -0
- package/dist/ui/assets/AppNode-wN3UZlFK.js.gz +0 -0
- package/dist/ui/assets/ArtifactConsentModal-DjzXcP_L.js +1 -0
- package/dist/ui/assets/ArtifactConsentModal-DjzXcP_L.js.gz +0 -0
- package/dist/ui/assets/ArtifactFullscreenPage-B3b_EZ0F.js +9 -0
- package/dist/ui/assets/ArtifactFullscreenPage-B3b_EZ0F.js.gz +0 -0
- package/dist/ui/assets/ArtifactNode-DISy2T-6.js +9 -0
- package/dist/ui/assets/ArtifactNode-DISy2T-6.js.gz +0 -0
- package/dist/ui/assets/AutocompleteTextarea-DUpsoEGr.js +19 -0
- package/dist/ui/assets/AutocompleteTextarea-DUpsoEGr.js.gz +0 -0
- package/dist/ui/assets/BoardObjectNodes-BakeGpIX.js +34 -0
- package/dist/ui/assets/BoardObjectNodes-BakeGpIX.js.gz +0 -0
- package/dist/ui/assets/CodeEditor.inner-HmSdTLW5.js +7 -0
- package/dist/ui/assets/CodeEditor.inner-HmSdTLW5.js.gz +0 -0
- package/dist/ui/assets/ConversationView-mWaA-B1f.js +1 -0
- package/dist/ui/assets/ConversationView-mWaA-B1f.js.gz +0 -0
- package/dist/ui/assets/EmbeddedTerminal-NNoyPA81.js +2 -0
- package/dist/ui/assets/EmbeddedTerminal-NNoyPA81.js.gz +0 -0
- package/dist/ui/assets/KnowledgePage-CkxVnRvz.js +24 -0
- package/dist/ui/assets/KnowledgePage-CkxVnRvz.js.gz +0 -0
- package/dist/ui/assets/{MarketingScreenshotPage-zv5RUCuV.js → MarketingScreenshotPage-B86Gs8jx.js} +2 -2
- package/dist/ui/assets/MarketingScreenshotPage-B86Gs8jx.js.gz +0 -0
- package/dist/ui/assets/MobileApp-BPs-SXvz.js +1 -0
- package/dist/ui/assets/MobileApp-BPs-SXvz.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/SessionCanvas-xVfDoEtz.js +13 -0
- package/dist/ui/assets/SessionCanvas-xVfDoEtz.js.gz +0 -0
- package/dist/ui/assets/{StreamdownDemoPage-wzWaqWwr.js → StreamdownDemoPage-CvWLzVsv.js} +2 -2
- package/dist/ui/assets/StreamdownDemoPage-CvWLzVsv.js.gz +0 -0
- package/dist/ui/assets/TerminalModal-ExOgsuOP.js +2 -0
- package/dist/ui/assets/TerminalModal-ExOgsuOP.js.gz +0 -0
- package/dist/ui/assets/ThemeSwitcher-Cgyp5ruu.js +1 -0
- package/dist/ui/assets/ThemeSwitcher-Cgyp5ruu.js.gz +0 -0
- package/dist/ui/assets/ThemedSyntaxHighlighter.inner-rpCN9S6K.js +1 -0
- package/dist/ui/assets/{antd-CfbbHJOz.js → antd-BCqimh1J.js} +5 -5
- package/dist/ui/assets/{antd-CfbbHJOz.js.gz → antd-BCqimh1J.js.gz} +0 -0
- package/dist/ui/assets/architecture-U656AL7Q-BxSQIjrE.js +1 -0
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-pDpGHSqT.js +36 -0
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-pDpGHSqT.js.gz +0 -0
- package/dist/ui/assets/{blockDiagram-VD42YOAC-BhZaEN19.js → blockDiagram-VD42YOAC-uP8JTJpK.js} +4 -4
- package/dist/ui/assets/blockDiagram-VD42YOAC-uP8JTJpK.js.gz +0 -0
- package/dist/ui/assets/{c4Diagram-YG6GDRKO-Dk_UH-sY.js → c4Diagram-YG6GDRKO-qQe72Mm7.js} +2 -2
- package/dist/ui/assets/c4Diagram-YG6GDRKO-qQe72Mm7.js.gz +0 -0
- package/dist/ui/assets/channel-CoUBs6Zn.js +1 -0
- package/dist/ui/assets/{chunk-4BX2VUAB-XprbG2TG.js → chunk-4BX2VUAB-sz-YE8Nt.js} +1 -1
- package/dist/ui/assets/chunk-4ZMWKKQ3-3oKtfWXp.js +3 -0
- package/dist/ui/assets/chunk-4ZMWKKQ3-3oKtfWXp.js.gz +0 -0
- package/dist/ui/assets/chunk-55IACEB6-BS04dgKF.js +1 -0
- package/dist/ui/assets/{chunk-ABZYJK2D-BJcrryHK.js → chunk-ABZYJK2D-t3Gkphds.js} +3 -3
- package/dist/ui/assets/chunk-ABZYJK2D-t3Gkphds.js.gz +0 -0
- package/dist/ui/assets/{chunk-AGHRB4JF-DvxmfbM0.js → chunk-AGHRB4JF-D_QmWxbY.js} +1 -1
- package/dist/ui/assets/chunk-AGHRB4JF-D_QmWxbY.js.gz +0 -0
- package/dist/ui/assets/{chunk-ATLVNIR6-DbeJ0OrR.js → chunk-ATLVNIR6-Bmg7-Ufz.js} +1 -1
- package/dist/ui/assets/chunk-ATLVNIR6-Bmg7-Ufz.js.gz +0 -0
- package/dist/ui/assets/{chunk-B4BG7PRW-C53q2ggf.js → chunk-B4BG7PRW-dnSEE1u-.js} +3 -3
- package/dist/ui/assets/chunk-B4BG7PRW-dnSEE1u-.js.gz +0 -0
- package/dist/ui/assets/{chunk-CVBHYZKI-B3EBSlb3.js → chunk-CVBHYZKI-BStaYnF0.js} +1 -1
- package/dist/ui/assets/{chunk-DI55MBZ5-vIyNEQN-.js → chunk-DI55MBZ5-28dvx6o3.js} +1 -1
- package/dist/ui/assets/chunk-DI55MBZ5-28dvx6o3.js.gz +0 -0
- package/dist/ui/assets/chunk-EXTU4WIE-X-FURkEh.js +1 -0
- package/dist/ui/assets/{chunk-FMBD7UC4-rddmfK-Z.js → chunk-FMBD7UC4-C_63gC9S.js} +1 -1
- package/dist/ui/assets/{chunk-HN2XXSSU-Dttqcg3b.js → chunk-HN2XXSSU-UFD374KI.js} +1 -1
- package/dist/ui/assets/chunk-HN2XXSSU-UFD374KI.js.gz +0 -0
- package/dist/ui/assets/chunk-JA3XYJ7Z-B60hLNeR.js +11 -0
- package/dist/ui/assets/chunk-JA3XYJ7Z-B60hLNeR.js.gz +0 -0
- package/dist/ui/assets/{chunk-JZLCHNYA-EUmx2y4H.js → chunk-JZLCHNYA-ButC6pwN.js} +5 -5
- package/dist/ui/assets/chunk-JZLCHNYA-ButC6pwN.js.gz +0 -0
- package/dist/ui/assets/{chunk-MI3HLSF2-65n9Mkyc.js → chunk-MI3HLSF2-BivYzoSV.js} +1 -1
- package/dist/ui/assets/chunk-MI3HLSF2-BivYzoSV.js.gz +0 -0
- package/dist/ui/assets/chunk-N4CR4FBY-mVWzo5wJ.js +2 -0
- package/dist/ui/assets/chunk-N4CR4FBY-mVWzo5wJ.js.gz +0 -0
- package/dist/ui/assets/{chunk-QN33PNHL-DsRKK6NR.js → chunk-QN33PNHL-tXtHZpaG.js} +1 -1
- package/dist/ui/assets/{chunk-QXUST7PY-BCYnMiS3.js → chunk-QXUST7PY-DATib_Vv.js} +2 -2
- package/dist/ui/assets/chunk-QXUST7PY-DATib_Vv.js.gz +0 -0
- package/dist/ui/assets/chunk-QZHKN3VN-y6l249e5.js +1 -0
- package/dist/ui/assets/chunk-S3R3BYOJ-BEtfmflI.js +2 -0
- package/dist/ui/assets/chunk-S3R3BYOJ-BEtfmflI.js.gz +0 -0
- package/dist/ui/assets/{chunk-TZMSLE5B-BuQUQcTr.js → chunk-TZMSLE5B-BY1ZtogK.js} +1 -1
- package/dist/ui/assets/chunk-TZMSLE5B-BY1ZtogK.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-BYvq-uPY.js +1 -0
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-BYvq-uPY.js +1 -0
- package/dist/ui/assets/constants-CYzQKfD1.js +1 -0
- package/dist/ui/assets/{cose-bilkent-S5V4N54A-CnPB3ARO.js → cose-bilkent-S5V4N54A-DPvYrqGG.js} +1 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-DPvYrqGG.js.gz +0 -0
- package/dist/ui/assets/{dagre-6UL2VRFP-DhS-k_Se.js → dagre-6UL2VRFP-D800J6qb.js} +1 -1
- package/dist/ui/assets/dagre-6UL2VRFP-D800J6qb.js.gz +0 -0
- package/dist/ui/assets/{dagre-KgLoHEuy.js → dagre-TNc4wezg.js} +1 -1
- package/dist/ui/assets/dagre-TNc4wezg.js.gz +0 -0
- package/dist/ui/assets/diagram-PSM6KHXK-CGdP9F-X.js +24 -0
- package/dist/ui/assets/diagram-PSM6KHXK-CGdP9F-X.js.gz +0 -0
- package/dist/ui/assets/{diagram-QEK2KX5R-BPCitvbo.js → diagram-QEK2KX5R-BD5lOCe5.js} +1 -1
- package/dist/ui/assets/diagram-QEK2KX5R-BD5lOCe5.js.gz +0 -0
- package/dist/ui/assets/{diagram-S2PKOQOG-NW4uK6sx.js → diagram-S2PKOQOG-cp3l22vN.js} +1 -1
- package/dist/ui/assets/diagram-S2PKOQOG-cp3l22vN.js.gz +0 -0
- package/dist/ui/assets/editor-Cr0W5BQI.js +39 -0
- package/dist/ui/assets/editor-Cr0W5BQI.js.gz +0 -0
- package/dist/ui/assets/emoji-Bv3m24sO.js +3 -0
- package/dist/ui/assets/emoji-Bv3m24sO.js.gz +0 -0
- package/dist/ui/assets/{erDiagram-Q2GNP2WA-me1fboaf.js → erDiagram-Q2GNP2WA-CQSXRgqr.js} +2 -2
- package/dist/ui/assets/erDiagram-Q2GNP2WA-CQSXRgqr.js.gz +0 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-CKcKpkph.js +162 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-CKcKpkph.js.gz +0 -0
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-DlAHzXO5.js +267 -0
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-DlAHzXO5.js.gz +0 -0
- package/dist/ui/assets/{gitGraph-F6HP7TQM-CfFE_uAC.js → gitGraph-F6HP7TQM-DeuXy4B1.js} +1 -1
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-aB-AI4Vq.js +65 -0
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-aB-AI4Vq.js.gz +0 -0
- package/dist/ui/assets/index-B-qHc0o5.js +63 -0
- package/dist/ui/assets/index-B-qHc0o5.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-B9PG7xsc.js} +1 -1
- package/dist/ui/assets/{infoDiagram-ER5ION4S-2NL93b78.js → infoDiagram-ER5ION4S-C5Wpoqim.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-CZF-2DHU.js → journeyDiagram-XKPGCS4Q-CHLziqfS.js} +3 -3
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CHLziqfS.js.gz +0 -0
- package/dist/ui/assets/{kanban-definition-3W4ZIXB7-CfvJIOny.js → kanban-definition-3W4ZIXB7-Dq7GzQE_.js} +1 -1
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-Dq7GzQE_.js.gz +0 -0
- package/dist/ui/assets/{line-DDv8kOJk.js → line-DHKNg83I.js} +1 -1
- package/dist/ui/assets/{linear-Daef-l29.js → linear-BvUfn0I8.js} +1 -1
- package/dist/ui/assets/linear-BvUfn0I8.js.gz +0 -0
- package/dist/ui/assets/{mermaid-parser.core-CdK9QgYV.js → mermaid-parser.core-C6d9tKoo.js} +2 -2
- package/dist/ui/assets/mermaid-parser.core-C6d9tKoo.js.gz +0 -0
- package/dist/ui/assets/mermaid.core-CxE5KezR.js +11 -0
- package/dist/ui/assets/mermaid.core-CxE5KezR.js.gz +0 -0
- package/dist/ui/assets/{mindmap-definition-VGOIOE7T-Cb3QMflX.js → mindmap-definition-VGOIOE7T-DmPoQ48w.js} +1 -1
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-DmPoQ48w.js.gz +0 -0
- package/dist/ui/assets/{packet-BFZMPI3H-Bm2uwz4i.js → packet-BFZMPI3H-JZEkVZxU.js} +1 -1
- package/dist/ui/assets/{particles-DsJFOarW.js → particles-CxMmUw86.js} +1 -1
- package/dist/ui/assets/particles-CxMmUw86.js.gz +0 -0
- package/dist/ui/assets/{pie-7BOR55EZ-5i17tVnF.js → pie-7BOR55EZ-_1II5pYQ.js} +1 -1
- package/dist/ui/assets/{pieDiagram-ADFJNKIX-BxIwQWvw.js → pieDiagram-ADFJNKIX-DrNkH33i.js} +1 -1
- package/dist/ui/assets/pieDiagram-ADFJNKIX-DrNkH33i.js.gz +0 -0
- package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-B5HPe4ga.js → quadrantDiagram-AYHSOK5B-DOpC-HEF.js} +3 -3
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DOpC-HEF.js.gz +0 -0
- package/dist/ui/assets/{radar-NHE76QYJ-BTn-tq0k.js → radar-NHE76QYJ-DDmqhzEZ.js} +1 -1
- package/dist/ui/assets/reactflow-D98uPOMq.js +2 -0
- package/dist/ui/assets/reactflow-D98uPOMq.js.gz +0 -0
- package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-YfI6llkX.js → requirementDiagram-UZGBJVZJ-Bzx0iEPP.js} +1 -1
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-Bzx0iEPP.js.gz +0 -0
- package/dist/ui/assets/{sandpack-D7koO5op.js → sandpack-059Z4UWP.js} +38 -38
- package/dist/ui/assets/sandpack-059Z4UWP.js.gz +0 -0
- package/dist/ui/assets/sandpackDefaults-CPMNDsw7.js +1 -0
- package/dist/ui/assets/sandpackDefaults-CPMNDsw7.js.gz +0 -0
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-Do9pvfDv.js +10 -0
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-Do9pvfDv.js.gz +0 -0
- package/dist/ui/assets/{sequenceDiagram-WL72ISMW-DAe4Um17.js → sequenceDiagram-WL72ISMW-CN8neUTA.js} +6 -6
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-CN8neUTA.js.gz +0 -0
- package/dist/ui/assets/src-DEbsv3pp.js +34 -0
- package/dist/ui/assets/src-DEbsv3pp.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BluWJi8n.js +1 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BluWJi8n.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-DeyqBMDR.js +1 -0
- package/dist/ui/assets/streamdown-BT1twtFc.js +521 -0
- package/dist/ui/assets/streamdown-BT1twtFc.js.gz +0 -0
- package/dist/ui/assets/syntax-CBu6nLfm.js +9 -0
- package/dist/ui/assets/syntax-CBu6nLfm.js.gz +0 -0
- package/dist/ui/assets/{timeline-definition-IT6M3QCI-D6P5txjT.js → timeline-definition-IT6M3QCI-WdUNkiRj.js} +16 -16
- package/dist/ui/assets/timeline-definition-IT6M3QCI-WdUNkiRj.js.gz +0 -0
- package/dist/ui/assets/{treemap-KMMF4GRG-Bitm3gy4.js → treemap-KMMF4GRG-CoriU4Jl.js} +1 -1
- package/dist/ui/assets/{useUserLocalStorage-Ckb8HsIw.js → useUserLocalStorage-GidNiOPC.js} +1 -1
- package/dist/ui/assets/useUserLocalStorage-GidNiOPC.js.gz +0 -0
- package/dist/ui/assets/{xychartDiagram-PRI3JC2R-CsybjUbd.js → xychartDiagram-PRI3JC2R-CgBAKNt2.js} +1 -1
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-CgBAKNt2.js.gz +0 -0
- package/dist/ui/index.html +11 -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/daemon/startup.js
CHANGED
|
@@ -49,9 +49,18 @@ var init_persisted_secret = __esm({
|
|
|
49
49
|
// src/startup.ts
|
|
50
50
|
import { promises as fs } from "fs";
|
|
51
51
|
import path from "path";
|
|
52
|
-
import {
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
import {
|
|
53
|
+
getAgorHome,
|
|
54
|
+
resolveExecutorHeartbeatConfig,
|
|
55
|
+
resolveMultiTenancyConfig
|
|
56
|
+
} from "@agor/core/config";
|
|
57
|
+
import {
|
|
58
|
+
MessagesRepository,
|
|
59
|
+
runWithTenantDatabaseScope as runWithTenantDatabaseScope4,
|
|
60
|
+
SessionRepository as SessionRepository3,
|
|
61
|
+
shortId as shortId6
|
|
62
|
+
} from "@agor/core/db";
|
|
63
|
+
import { isTerminalTaskStatus, SessionStatus as SessionStatus2, TaskStatus } from "@agor/core/types";
|
|
55
64
|
|
|
56
65
|
// src/services/executor-heartbeat-supervisor.ts
|
|
57
66
|
import { shortId } from "@agor/core/db";
|
|
@@ -122,7 +131,14 @@ var ExecutorHeartbeatSupervisor = class {
|
|
|
122
131
|
|
|
123
132
|
// src/services/health-monitor.ts
|
|
124
133
|
import { ENVIRONMENT } from "@agor/core/config";
|
|
125
|
-
import {
|
|
134
|
+
import {
|
|
135
|
+
BranchRepository,
|
|
136
|
+
getHiddenTenantId,
|
|
137
|
+
runWithoutTenantDatabaseScope,
|
|
138
|
+
runWithSystemDatabaseScope,
|
|
139
|
+
runWithTenantDatabaseScope,
|
|
140
|
+
shortId as shortId2
|
|
141
|
+
} from "@agor/core/db";
|
|
126
142
|
import { NotFoundError } from "@agor/core/utils/errors";
|
|
127
143
|
var DEBUG_HEALTH_MONITOR = process.env.AGOR_DEBUG_HEALTH_MONITOR === "1" || process.env.DEBUG?.includes("health-monitor");
|
|
128
144
|
function healthMonitorDebug(...args) {
|
|
@@ -130,14 +146,35 @@ function healthMonitorDebug(...args) {
|
|
|
130
146
|
console.debug(...args);
|
|
131
147
|
}
|
|
132
148
|
}
|
|
149
|
+
function tenantParamsFromBranch(branch) {
|
|
150
|
+
const tenantId = getHiddenTenantId(branch);
|
|
151
|
+
if (!tenantId) return void 0;
|
|
152
|
+
return { tenant: { tenant_id: tenantId, source: "auth_claim" } };
|
|
153
|
+
}
|
|
133
154
|
var HealthMonitor = class {
|
|
134
155
|
app;
|
|
135
156
|
intervals = /* @__PURE__ */ new Map();
|
|
157
|
+
branchParams = /* @__PURE__ */ new Map();
|
|
136
158
|
isShuttingDown = false;
|
|
137
|
-
|
|
159
|
+
defaultParams;
|
|
160
|
+
db;
|
|
161
|
+
branchRepo;
|
|
162
|
+
tenantId;
|
|
163
|
+
requireTenantParams;
|
|
164
|
+
discoverActiveEnvironmentRefs;
|
|
165
|
+
constructor(app, options = {}) {
|
|
138
166
|
this.app = app;
|
|
167
|
+
this.defaultParams = options.defaultParams;
|
|
168
|
+
this.db = options.db;
|
|
169
|
+
this.branchRepo = options.db ? new BranchRepository(options.db) : void 0;
|
|
170
|
+
this.tenantId = typeof options.tenantId === "string" && options.tenantId.trim() ? options.tenantId.trim() : void 0;
|
|
171
|
+
this.requireTenantParams = options.requireTenantParams ?? false;
|
|
172
|
+
this.discoverActiveEnvironmentRefs = options.discoverActiveEnvironmentRefs;
|
|
139
173
|
this.setupBranchListeners();
|
|
140
174
|
}
|
|
175
|
+
paramsForBranch(branch) {
|
|
176
|
+
return tenantParamsFromBranch(branch) ?? (this.requireTenantParams ? void 0 : this.defaultParams);
|
|
177
|
+
}
|
|
141
178
|
/**
|
|
142
179
|
* Set up WebSocket listeners for branch changes
|
|
143
180
|
*/
|
|
@@ -151,6 +188,7 @@ var HealthMonitor = class {
|
|
|
151
188
|
});
|
|
152
189
|
branchesService.on("removed", (branch) => {
|
|
153
190
|
this.stopMonitoring(branch.branch_id);
|
|
191
|
+
this.branchParams.delete(branch.branch_id);
|
|
154
192
|
});
|
|
155
193
|
}
|
|
156
194
|
/**
|
|
@@ -160,31 +198,43 @@ var HealthMonitor = class {
|
|
|
160
198
|
if (this.isShuttingDown) return;
|
|
161
199
|
const status = branch.environment_instance?.status;
|
|
162
200
|
if (status === "running" || status === "starting") {
|
|
201
|
+
const params = this.paramsForBranch(branch);
|
|
202
|
+
if (!params && this.requireTenantParams) {
|
|
203
|
+
console.error(
|
|
204
|
+
`\u274C Health monitoring skipped for branch ${shortId2(branch.branch_id)}: missing tenant metadata`
|
|
205
|
+
);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (params) this.branchParams.set(branch.branch_id, params);
|
|
163
209
|
if (!this.intervals.has(branch.branch_id)) {
|
|
164
210
|
healthMonitorDebug(`\u{1F3E5} Starting health monitoring for branch: ${branch.name}`);
|
|
165
|
-
this.startMonitoring(branch.branch_id);
|
|
211
|
+
this.startMonitoring(branch.branch_id, params);
|
|
166
212
|
}
|
|
167
213
|
} else {
|
|
168
214
|
if (this.intervals.has(branch.branch_id)) {
|
|
169
215
|
healthMonitorDebug(`\u{1F3E5} Stopping health monitoring for branch: ${branch.name}`);
|
|
170
216
|
this.stopMonitoring(branch.branch_id);
|
|
171
217
|
}
|
|
218
|
+
this.branchParams.delete(branch.branch_id);
|
|
172
219
|
}
|
|
173
220
|
}
|
|
174
221
|
/**
|
|
175
222
|
* Start monitoring a branch's health
|
|
176
223
|
*/
|
|
177
|
-
startMonitoring(branchId) {
|
|
224
|
+
startMonitoring(branchId, params = this.branchParams.get(branchId)) {
|
|
178
225
|
this.stopMonitoring(branchId);
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
const interval = setInterval(() => {
|
|
226
|
+
if (params) this.branchParams.set(branchId, params);
|
|
227
|
+
runWithoutTenantDatabaseScope(() => {
|
|
228
|
+
setTimeout(() => {
|
|
183
229
|
if (this.isShuttingDown) return;
|
|
184
230
|
this.checkHealth(branchId);
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
231
|
+
const interval = setInterval(() => {
|
|
232
|
+
if (this.isShuttingDown) return;
|
|
233
|
+
this.checkHealth(branchId);
|
|
234
|
+
}, ENVIRONMENT.HEALTH_CHECK_INTERVAL_MS);
|
|
235
|
+
this.intervals.set(branchId, interval);
|
|
236
|
+
}, ENVIRONMENT.STARTUP_GRACE_PERIOD_MS);
|
|
237
|
+
});
|
|
188
238
|
}
|
|
189
239
|
/**
|
|
190
240
|
* Stop monitoring a branch's health
|
|
@@ -202,13 +252,21 @@ var HealthMonitor = class {
|
|
|
202
252
|
async checkHealth(branchId) {
|
|
203
253
|
try {
|
|
204
254
|
const branchesService = this.app.service("branches");
|
|
205
|
-
const
|
|
255
|
+
const params = this.branchParams.get(branchId) ?? (this.requireTenantParams ? void 0 : this.defaultParams);
|
|
256
|
+
if (!params && this.requireTenantParams) {
|
|
257
|
+
console.error(
|
|
258
|
+
`\u274C Health check skipped for branch ${shortId2(branchId)}: missing tenant metadata`
|
|
259
|
+
);
|
|
260
|
+
this.stopMonitoring(branchId);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
const branch = await branchesService.get(branchId, params);
|
|
206
264
|
const status = branch.environment_instance?.status;
|
|
207
265
|
if (status !== "running" && status !== "starting") {
|
|
208
266
|
this.stopMonitoring(branchId);
|
|
209
267
|
return;
|
|
210
268
|
}
|
|
211
|
-
await branchesService.checkHealth(branchId);
|
|
269
|
+
await branchesService.checkHealth(branchId, params);
|
|
212
270
|
} catch (error) {
|
|
213
271
|
if (error instanceof NotFoundError) {
|
|
214
272
|
this.stopMonitoring(branchId);
|
|
@@ -230,25 +288,100 @@ var HealthMonitor = class {
|
|
|
230
288
|
*/
|
|
231
289
|
async initialize() {
|
|
232
290
|
try {
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
query: {
|
|
236
|
-
$limit: 1e3
|
|
237
|
-
},
|
|
238
|
-
paginate: false
|
|
239
|
-
});
|
|
240
|
-
const branches = Array.isArray(result) ? result : result.data;
|
|
241
|
-
const activeBranches = branches.filter(
|
|
242
|
-
(w) => w.environment_instance?.status === "running" || w.environment_instance?.status === "starting"
|
|
243
|
-
);
|
|
244
|
-
for (const branch of activeBranches) {
|
|
245
|
-
this.startMonitoring(branch.branch_id);
|
|
246
|
-
}
|
|
247
|
-
console.log(`\u{1F3E5} Health Monitor initialized (${activeBranches.length} active environment(s))`);
|
|
291
|
+
const activeBranches = this.branchRepo || this.discoverActiveEnvironmentRefs ? await this.initializeFromTenantAwareDiscovery() : await this.initializeFromDefaultParamsScan();
|
|
292
|
+
console.log(`\u{1F3E5} Health Monitor initialized (${activeBranches} active environment(s))`);
|
|
248
293
|
} catch (error) {
|
|
249
294
|
console.error("\u274C Failed to initialize Health Monitor:", error);
|
|
250
295
|
}
|
|
251
296
|
}
|
|
297
|
+
async initializeFromDefaultParamsScan() {
|
|
298
|
+
const branchesService = this.app.service("branches");
|
|
299
|
+
const result = await branchesService.find({
|
|
300
|
+
...this.defaultParams,
|
|
301
|
+
query: {
|
|
302
|
+
$limit: 1e3
|
|
303
|
+
},
|
|
304
|
+
paginate: false
|
|
305
|
+
});
|
|
306
|
+
const branches = Array.isArray(result) ? result : result.data;
|
|
307
|
+
const activeBranches = branches.filter(
|
|
308
|
+
(w) => w.environment_instance?.status === "running" || w.environment_instance?.status === "starting"
|
|
309
|
+
);
|
|
310
|
+
for (const branch of activeBranches) {
|
|
311
|
+
const params = this.paramsForBranch(branch);
|
|
312
|
+
if (!params && this.requireTenantParams) {
|
|
313
|
+
console.error(
|
|
314
|
+
`\u274C Health monitoring skipped for branch ${shortId2(branch.branch_id)}: missing tenant metadata`
|
|
315
|
+
);
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
if (params) this.branchParams.set(branch.branch_id, params);
|
|
319
|
+
this.startMonitoring(branch.branch_id, params);
|
|
320
|
+
}
|
|
321
|
+
return activeBranches.length;
|
|
322
|
+
}
|
|
323
|
+
async initializeFromTenantAwareDiscovery() {
|
|
324
|
+
const refs = await this.findActiveEnvironmentRefs();
|
|
325
|
+
const branchesService = this.app.service("branches");
|
|
326
|
+
let activeCount = 0;
|
|
327
|
+
for (const ref of refs) {
|
|
328
|
+
if (!ref.tenantId) {
|
|
329
|
+
console.error(
|
|
330
|
+
`\u274C Health monitoring skipped for branch ${shortId2(ref.branchId)}: missing tenant metadata`
|
|
331
|
+
);
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
const params = {
|
|
335
|
+
tenant: {
|
|
336
|
+
tenant_id: ref.tenantId,
|
|
337
|
+
source: this.tenantId ? "static" : "explicit"
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
try {
|
|
341
|
+
const loadAndStart = async () => {
|
|
342
|
+
const branch = await branchesService.get(ref.branchId, params);
|
|
343
|
+
const status = branch.environment_instance?.status;
|
|
344
|
+
if (status !== "running" && status !== "starting") return;
|
|
345
|
+
this.branchParams.set(branch.branch_id, tenantParamsFromBranch(branch) ?? params);
|
|
346
|
+
this.startMonitoring(branch.branch_id, this.branchParams.get(branch.branch_id));
|
|
347
|
+
activeCount += 1;
|
|
348
|
+
};
|
|
349
|
+
if (this.db) {
|
|
350
|
+
await runWithTenantDatabaseScope(this.db, ref.tenantId, loadAndStart);
|
|
351
|
+
} else {
|
|
352
|
+
await loadAndStart();
|
|
353
|
+
}
|
|
354
|
+
} catch (error) {
|
|
355
|
+
console.error(
|
|
356
|
+
`\u274C Failed to initialize health monitoring for branch ${shortId2(ref.branchId)}:`,
|
|
357
|
+
error
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return activeCount;
|
|
362
|
+
}
|
|
363
|
+
async findActiveEnvironmentRefs() {
|
|
364
|
+
const normalizeRef = (ref, tenantId) => {
|
|
365
|
+
if ("branchId" in ref) {
|
|
366
|
+
return { branchId: ref.branchId, tenantId: tenantId ?? ref.tenantId };
|
|
367
|
+
}
|
|
368
|
+
return { branchId: ref.branch_id, tenantId: tenantId ?? ref.tenant_id };
|
|
369
|
+
};
|
|
370
|
+
const findRefs = async (tenantId) => {
|
|
371
|
+
const refs = this.discoverActiveEnvironmentRefs ? await this.discoverActiveEnvironmentRefs() : await this.branchRepo.findActiveEnvironmentRefs();
|
|
372
|
+
return refs.map((ref) => normalizeRef(ref, tenantId));
|
|
373
|
+
};
|
|
374
|
+
if (this.tenantId) {
|
|
375
|
+
if (!this.db) return findRefs(this.tenantId);
|
|
376
|
+
return runWithTenantDatabaseScope(this.db, this.tenantId, () => findRefs(this.tenantId));
|
|
377
|
+
}
|
|
378
|
+
if (!this.db) return findRefs();
|
|
379
|
+
return runWithSystemDatabaseScope(
|
|
380
|
+
this.db,
|
|
381
|
+
"health monitor active environment discovery",
|
|
382
|
+
() => findRefs()
|
|
383
|
+
);
|
|
384
|
+
}
|
|
252
385
|
/**
|
|
253
386
|
* Cleanup all monitoring intervals
|
|
254
387
|
*
|
|
@@ -261,6 +394,7 @@ var HealthMonitor = class {
|
|
|
261
394
|
clearInterval(interval);
|
|
262
395
|
}
|
|
263
396
|
this.intervals.clear();
|
|
397
|
+
this.branchParams.clear();
|
|
264
398
|
console.log(`\u{1F3E5} Health Monitor cleaned up (${stoppedCount} monitor(s) stopped)`);
|
|
265
399
|
}
|
|
266
400
|
/**
|
|
@@ -287,6 +421,7 @@ import {
|
|
|
287
421
|
kbDocumentUnits,
|
|
288
422
|
kbDocumentVersions,
|
|
289
423
|
kbEmbeddingSpaces,
|
|
424
|
+
runWithTenantDatabaseScope as runWithTenantDatabaseScope2,
|
|
290
425
|
select,
|
|
291
426
|
shortId as shortId3,
|
|
292
427
|
sql as sql2,
|
|
@@ -359,6 +494,28 @@ function rowsOf(result) {
|
|
|
359
494
|
function boolValue(value) {
|
|
360
495
|
return value === true || value === "t" || value === "true" || value === 1 || value === "1";
|
|
361
496
|
}
|
|
497
|
+
async function ensureEmbeddingTenantIsolation(db) {
|
|
498
|
+
await executeRaw(
|
|
499
|
+
db,
|
|
500
|
+
sql`ALTER TABLE kb_unit_embeddings ADD COLUMN IF NOT EXISTS tenant_id text DEFAULT 'default' NOT NULL`
|
|
501
|
+
);
|
|
502
|
+
await executeRaw(
|
|
503
|
+
db,
|
|
504
|
+
sql`CREATE INDEX IF NOT EXISTS kb_unit_embeddings_tenant_id_idx ON kb_unit_embeddings USING btree (tenant_id)`
|
|
505
|
+
);
|
|
506
|
+
await executeRaw(db, sql`ALTER TABLE kb_unit_embeddings ENABLE ROW LEVEL SECURITY`);
|
|
507
|
+
await executeRaw(db, sql`ALTER TABLE kb_unit_embeddings FORCE ROW LEVEL SECURITY`);
|
|
508
|
+
await executeRaw(
|
|
509
|
+
db,
|
|
510
|
+
sql`DROP POLICY IF EXISTS tenant_isolation_kb_unit_embeddings ON kb_unit_embeddings`
|
|
511
|
+
);
|
|
512
|
+
await executeRaw(
|
|
513
|
+
db,
|
|
514
|
+
sql`CREATE POLICY tenant_isolation_kb_unit_embeddings ON kb_unit_embeddings
|
|
515
|
+
USING (tenant_id = COALESCE(NULLIF(current_setting('agor.tenant_id', true), ''), 'default'))
|
|
516
|
+
WITH CHECK (tenant_id = COALESCE(NULLIF(current_setting('agor.tenant_id', true), ''), 'default'))`
|
|
517
|
+
);
|
|
518
|
+
}
|
|
362
519
|
async function readCapability(db) {
|
|
363
520
|
if (!isPostgresDatabase(db)) {
|
|
364
521
|
return {
|
|
@@ -441,6 +598,7 @@ async function ensureKnowledgePgvectorStorage(db) {
|
|
|
441
598
|
await executeRaw(
|
|
442
599
|
db,
|
|
443
600
|
sql`CREATE TABLE IF NOT EXISTS kb_unit_embeddings (
|
|
601
|
+
tenant_id text DEFAULT 'default' NOT NULL,
|
|
444
602
|
unit_id varchar(36) NOT NULL REFERENCES public.kb_document_units(unit_id) ON DELETE cascade,
|
|
445
603
|
embedding_space_id varchar(36) NOT NULL REFERENCES public.kb_embedding_spaces(embedding_space_id) ON DELETE cascade,
|
|
446
604
|
content_sha256 text NOT NULL,
|
|
@@ -453,6 +611,7 @@ async function ensureKnowledgePgvectorStorage(db) {
|
|
|
453
611
|
);
|
|
454
612
|
capability.tableReady = true;
|
|
455
613
|
}
|
|
614
|
+
await ensureEmbeddingTenantIsolation(db);
|
|
456
615
|
if (!capability.spaceIndexReady) {
|
|
457
616
|
await executeRaw(
|
|
458
617
|
db,
|
|
@@ -551,6 +710,7 @@ function buildKnowledgeEmbeddingReuseSql(params) {
|
|
|
551
710
|
ORDER BY p.unit_id, old_u.updated_at DESC NULLS LAST, old_u.created_at DESC
|
|
552
711
|
), upserted AS (
|
|
553
712
|
INSERT INTO kb_unit_embeddings (
|
|
713
|
+
tenant_id,
|
|
554
714
|
unit_id,
|
|
555
715
|
embedding_space_id,
|
|
556
716
|
content_sha256,
|
|
@@ -560,6 +720,7 @@ function buildKnowledgeEmbeddingReuseSql(params) {
|
|
|
560
720
|
updated_at
|
|
561
721
|
)
|
|
562
722
|
SELECT
|
|
723
|
+
COALESCE(NULLIF(current_setting('agor.tenant_id', true), ''), 'default'),
|
|
563
724
|
new_unit_id,
|
|
564
725
|
${params.embeddingSpaceId},
|
|
565
726
|
content_sha256,
|
|
@@ -591,8 +752,9 @@ function buildKnowledgeEmbeddingReuseSql(params) {
|
|
|
591
752
|
candidates.previous_version_id`;
|
|
592
753
|
}
|
|
593
754
|
var KnowledgeEmbeddingIndexer = class {
|
|
594
|
-
constructor(db) {
|
|
755
|
+
constructor(db, options = {}) {
|
|
595
756
|
this.db = db;
|
|
757
|
+
this.options = options;
|
|
596
758
|
this.variables = new AppVariableRepository(db);
|
|
597
759
|
}
|
|
598
760
|
intervalHandle;
|
|
@@ -731,6 +893,12 @@ var KnowledgeEmbeddingIndexer = class {
|
|
|
731
893
|
}
|
|
732
894
|
}
|
|
733
895
|
async tick() {
|
|
896
|
+
if (this.options.tenantId) {
|
|
897
|
+
return runWithTenantDatabaseScope2(this.db, this.options.tenantId, () => this.tickInScope());
|
|
898
|
+
}
|
|
899
|
+
return this.tickInScope();
|
|
900
|
+
}
|
|
901
|
+
async tickInScope() {
|
|
734
902
|
if (this.running) return;
|
|
735
903
|
this.running = true;
|
|
736
904
|
try {
|
|
@@ -843,8 +1011,8 @@ var KnowledgeEmbeddingIndexer = class {
|
|
|
843
1011
|
const vector = embeddingToPgvector(result.embedding);
|
|
844
1012
|
await executeRaw2(
|
|
845
1013
|
this.db,
|
|
846
|
-
sql2`INSERT INTO kb_unit_embeddings (unit_id, embedding_space_id, content_sha256, embedding, token_count, created_at, updated_at)
|
|
847
|
-
VALUES (${result.id}, ${embeddingSpaceId}, ${sha256Text(content)}, ${vector}::vector, ${result.tokenCount ?? null}, now(), now())
|
|
1014
|
+
sql2`INSERT INTO kb_unit_embeddings (tenant_id, unit_id, embedding_space_id, content_sha256, embedding, token_count, created_at, updated_at)
|
|
1015
|
+
VALUES (COALESCE(NULLIF(current_setting('agor.tenant_id', true), ''), 'default'), ${result.id}, ${embeddingSpaceId}, ${sha256Text(content)}, ${vector}::vector, ${result.tokenCount ?? null}, now(), now())
|
|
848
1016
|
ON CONFLICT (unit_id, embedding_space_id) DO UPDATE SET
|
|
849
1017
|
content_sha256 = EXCLUDED.content_sha256,
|
|
850
1018
|
embedding = EXCLUDED.embedding,
|
|
@@ -873,8 +1041,11 @@ var KnowledgeEmbeddingIndexer = class {
|
|
|
873
1041
|
// src/services/scheduler.ts
|
|
874
1042
|
import {
|
|
875
1043
|
advisoryLockKeyForUuid,
|
|
876
|
-
BranchRepository,
|
|
1044
|
+
BranchRepository as BranchRepository2,
|
|
1045
|
+
getCurrentTenantId,
|
|
877
1046
|
isPostgresDatabase as isPostgresDatabase3,
|
|
1047
|
+
runWithSystemDatabaseScope as runWithSystemDatabaseScope2,
|
|
1048
|
+
runWithTenantDatabaseScope as runWithTenantDatabaseScope3,
|
|
878
1049
|
ScheduleRepository,
|
|
879
1050
|
SessionMCPServerRepository,
|
|
880
1051
|
SessionRepository,
|
|
@@ -941,9 +1112,9 @@ function renderSchedulePrompt(template, branch, schedule, scheduledRunAt) {
|
|
|
941
1112
|
}
|
|
942
1113
|
var ScheduleBusyError = class extends Error {
|
|
943
1114
|
code = "schedule_busy";
|
|
944
|
-
constructor(
|
|
1115
|
+
constructor(scheduleName) {
|
|
945
1116
|
super(
|
|
946
|
-
`
|
|
1117
|
+
`An active run from schedule "${scheduleName}" is already in progress and allow_concurrent_runs is disabled.`
|
|
947
1118
|
);
|
|
948
1119
|
this.name = "ScheduleBusyError";
|
|
949
1120
|
}
|
|
@@ -976,9 +1147,10 @@ var SchedulerService = class {
|
|
|
976
1147
|
gracePeriod: config.gracePeriod ?? 12e4,
|
|
977
1148
|
// 2 minutes
|
|
978
1149
|
debug: config.debug ?? false,
|
|
979
|
-
unixUserMode: config.unixUserMode ?? "simple"
|
|
1150
|
+
unixUserMode: config.unixUserMode ?? "simple",
|
|
1151
|
+
tenantId: typeof config.tenantId === "string" && config.tenantId.trim() ? config.tenantId.trim() : void 0
|
|
980
1152
|
};
|
|
981
|
-
this.branchRepo = new
|
|
1153
|
+
this.branchRepo = new BranchRepository2(db);
|
|
982
1154
|
this.scheduleRepo = new ScheduleRepository(db);
|
|
983
1155
|
this.sessionRepo = new SessionRepository(db);
|
|
984
1156
|
this.userRepo = new UsersRepository(db);
|
|
@@ -1033,18 +1205,25 @@ var SchedulerService = class {
|
|
|
1033
1205
|
async tick() {
|
|
1034
1206
|
const now = Date.now();
|
|
1035
1207
|
try {
|
|
1036
|
-
const
|
|
1208
|
+
const dueScheduleRefs = await this.findDueScheduleRefs(now);
|
|
1037
1209
|
if (this.config.debug) {
|
|
1038
|
-
console.log(`\u{1F504} Scheduler tick: Found ${
|
|
1210
|
+
console.log(`\u{1F504} Scheduler tick: Found ${dueScheduleRefs.length} due schedules`);
|
|
1039
1211
|
}
|
|
1040
|
-
for (const
|
|
1041
|
-
|
|
1042
|
-
await this.processSchedule(schedule, now);
|
|
1043
|
-
} catch (error) {
|
|
1212
|
+
for (const ref of dueScheduleRefs) {
|
|
1213
|
+
if (!ref.tenantId) {
|
|
1044
1214
|
console.error(
|
|
1045
|
-
`\u274C
|
|
1046
|
-
error
|
|
1215
|
+
`\u274C Skipping due schedule ${shortId4(ref.scheduleId)}: missing tenant metadata`
|
|
1047
1216
|
);
|
|
1217
|
+
continue;
|
|
1218
|
+
}
|
|
1219
|
+
try {
|
|
1220
|
+
await runWithTenantDatabaseScope3(this.db, ref.tenantId, async () => {
|
|
1221
|
+
const schedule = await this.scheduleRepo.findById(ref.scheduleId);
|
|
1222
|
+
if (!schedule) return;
|
|
1223
|
+
await this.processSchedule(schedule, now);
|
|
1224
|
+
});
|
|
1225
|
+
} catch (error) {
|
|
1226
|
+
console.error(`\u274C Failed to process schedule ${shortId4(ref.scheduleId)}:`, error);
|
|
1048
1227
|
}
|
|
1049
1228
|
}
|
|
1050
1229
|
} catch (error) {
|
|
@@ -1052,6 +1231,23 @@ var SchedulerService = class {
|
|
|
1052
1231
|
throw error;
|
|
1053
1232
|
}
|
|
1054
1233
|
}
|
|
1234
|
+
async findDueScheduleRefs(now) {
|
|
1235
|
+
const findDue = async (tenantId) => {
|
|
1236
|
+
const dueSchedules = await this.scheduleRepo.findDueRefs(now + this.config.gracePeriod);
|
|
1237
|
+
return dueSchedules.map((schedule) => ({
|
|
1238
|
+
scheduleId: schedule.schedule_id,
|
|
1239
|
+
tenantId: tenantId ?? schedule.tenant_id
|
|
1240
|
+
}));
|
|
1241
|
+
};
|
|
1242
|
+
if (this.config.tenantId) {
|
|
1243
|
+
return runWithTenantDatabaseScope3(
|
|
1244
|
+
this.db,
|
|
1245
|
+
this.config.tenantId,
|
|
1246
|
+
() => findDue(this.config.tenantId)
|
|
1247
|
+
);
|
|
1248
|
+
}
|
|
1249
|
+
return runWithSystemDatabaseScope2(this.db, "scheduler due schedule discovery", () => findDue());
|
|
1250
|
+
}
|
|
1055
1251
|
/**
|
|
1056
1252
|
* Process a single schedule.
|
|
1057
1253
|
*
|
|
@@ -1127,7 +1323,7 @@ var SchedulerService = class {
|
|
|
1127
1323
|
* @throws ScheduleNotReadyError when the schedule is disabled or its
|
|
1128
1324
|
* branch can't be loaded.
|
|
1129
1325
|
* @throws ScheduleBusyError when allow_concurrent_runs is false and
|
|
1130
|
-
*
|
|
1326
|
+
* this schedule already has an active run.
|
|
1131
1327
|
*/
|
|
1132
1328
|
async executeScheduleNow(opts) {
|
|
1133
1329
|
const { scheduleId, triggeredBy } = opts;
|
|
@@ -1222,9 +1418,9 @@ var SchedulerService = class {
|
|
|
1222
1418
|
* 1. Look up the schedule's branch (cascaded delete means it should
|
|
1223
1419
|
* always exist; we still handle null defensively).
|
|
1224
1420
|
* 2. Dedup against `sessions(schedule_id, scheduled_run_at)`.
|
|
1225
|
-
* 3. Enforce `allow_concurrent_runs` against any active session
|
|
1226
|
-
* SAME
|
|
1227
|
-
*
|
|
1421
|
+
* 3. Enforce `allow_concurrent_runs` against any active session spawned
|
|
1422
|
+
* by the SAME SCHEDULE. Different schedules on the same branch do not
|
|
1423
|
+
* block one another.
|
|
1228
1424
|
* 4. Render prompt template (Handlebars).
|
|
1229
1425
|
* 5. Look up creator's unix_username for execution context.
|
|
1230
1426
|
* 6. Create session with schedule metadata + `schedule_id` FK.
|
|
@@ -1237,13 +1433,10 @@ var SchedulerService = class {
|
|
|
1237
1433
|
* 9. Enforce retention policy (oldest sessions on this schedule_id
|
|
1238
1434
|
* are deleted).
|
|
1239
1435
|
*
|
|
1240
|
-
* NOTE (multi-daemon, deferred):
|
|
1241
|
-
*
|
|
1242
|
-
*
|
|
1243
|
-
*
|
|
1244
|
-
* coordination (lock on branch when allow_concurrent_runs=false)
|
|
1245
|
-
* will be needed once we support multi-daemon. Out of scope for V1
|
|
1246
|
-
* since multi-daemon isn't supported yet.
|
|
1436
|
+
* NOTE (multi-daemon, deferred): the per-schedule advisory lock and
|
|
1437
|
+
* partial unique index guard same-schedule races. They deliberately do
|
|
1438
|
+
* not serialize sibling schedules on the same branch, matching the
|
|
1439
|
+
* schedule-scoped meaning of `allow_concurrent_runs=false`.
|
|
1247
1440
|
*/
|
|
1248
1441
|
async spawnScheduledSession(schedule, scheduledRunAt, now, options = { source: "cron" }) {
|
|
1249
1442
|
const { source, triggeredBy } = options;
|
|
@@ -1267,19 +1460,19 @@ var SchedulerService = class {
|
|
|
1267
1460
|
return existingSession;
|
|
1268
1461
|
}
|
|
1269
1462
|
if (!schedule.allow_concurrent_runs) {
|
|
1270
|
-
const active = await this.sessionRepo.
|
|
1271
|
-
|
|
1463
|
+
const active = await this.sessionRepo.existsInScheduleWithStatuses(
|
|
1464
|
+
schedule.schedule_id,
|
|
1272
1465
|
ACTIVE_SESSION_STATUSES
|
|
1273
1466
|
);
|
|
1274
1467
|
if (active) {
|
|
1275
1468
|
if (manual) {
|
|
1276
1469
|
console.log(
|
|
1277
|
-
` \u26D4 ${schedule.name}: manual run blocked \u2014 active
|
|
1470
|
+
` \u26D4 ${schedule.name}: manual run blocked \u2014 active run from this schedule present (allow_concurrent_runs=false)`
|
|
1278
1471
|
);
|
|
1279
|
-
throw new ScheduleBusyError(
|
|
1472
|
+
throw new ScheduleBusyError(schedule.name);
|
|
1280
1473
|
}
|
|
1281
1474
|
console.log(
|
|
1282
|
-
` \u23ED\uFE0F ${schedule.name}: scheduled run skipped \u2014 active
|
|
1475
|
+
` \u23ED\uFE0F ${schedule.name}: scheduled run skipped \u2014 active run from this schedule present (allow_concurrent_runs=false)`
|
|
1283
1476
|
);
|
|
1284
1477
|
await this.updateScheduleMetadata(schedule, scheduledRunAt, null, now);
|
|
1285
1478
|
return null;
|
|
@@ -1382,6 +1575,7 @@ var SchedulerService = class {
|
|
|
1382
1575
|
}
|
|
1383
1576
|
}
|
|
1384
1577
|
const promptService = this.app.service("/sessions/:id/prompt");
|
|
1578
|
+
const tenantId = getCurrentTenantId();
|
|
1385
1579
|
await promptService.create(
|
|
1386
1580
|
{
|
|
1387
1581
|
prompt: renderedPrompt,
|
|
@@ -1392,8 +1586,9 @@ var SchedulerService = class {
|
|
|
1392
1586
|
route: { id: createdSession.session_id },
|
|
1393
1587
|
provider: void 0,
|
|
1394
1588
|
// Bypass auth for internal scheduler call
|
|
1395
|
-
user: creator
|
|
1589
|
+
user: creator,
|
|
1396
1590
|
// Pass creator user for session token generation
|
|
1591
|
+
...tenantId ? { tenant: { tenant_id: tenantId, source: "explicit" } } : {}
|
|
1397
1592
|
}
|
|
1398
1593
|
);
|
|
1399
1594
|
await this.updateScheduleMetadata(
|
|
@@ -1494,11 +1689,15 @@ async function appendSystemMessage(opts) {
|
|
|
1494
1689
|
}
|
|
1495
1690
|
|
|
1496
1691
|
// src/utils/git-remote-credential-scan.ts
|
|
1497
|
-
import {
|
|
1498
|
-
|
|
1692
|
+
import {
|
|
1693
|
+
BranchRepository as BranchRepository3,
|
|
1694
|
+
RepoRepository,
|
|
1695
|
+
shortId as shortId5
|
|
1696
|
+
} from "@agor/core/db";
|
|
1697
|
+
import { scrubGitConfigRemoteCredentials } from "@agor/core/git/exec";
|
|
1499
1698
|
async function scrubManagedGitRemoteCredentials(db) {
|
|
1500
1699
|
const repoRepo = new RepoRepository(db);
|
|
1501
|
-
const branchRepo = new
|
|
1700
|
+
const branchRepo = new BranchRepository3(db);
|
|
1502
1701
|
const repos = await repoRepo.findAll();
|
|
1503
1702
|
const repoById = new Map(repos.map((repo) => [repo.repo_id, repo]));
|
|
1504
1703
|
const remoteRepos = repos.filter((repo) => repo.repo_type === "remote");
|
|
@@ -1596,21 +1795,57 @@ async function readAndClearSentinel() {
|
|
|
1596
1795
|
return false;
|
|
1597
1796
|
}
|
|
1598
1797
|
}
|
|
1798
|
+
function startupTenantParams(config) {
|
|
1799
|
+
const multiTenancy = resolveMultiTenancyConfig(config);
|
|
1800
|
+
return {
|
|
1801
|
+
tenant: {
|
|
1802
|
+
tenant_id: multiTenancy.static_tenant_id,
|
|
1803
|
+
source: "static"
|
|
1804
|
+
}
|
|
1805
|
+
};
|
|
1806
|
+
}
|
|
1807
|
+
async function runStartupTenantDatabaseScope(ctx, work) {
|
|
1808
|
+
return runWithTenantDatabaseScope4(ctx.db, startupTenantParams(ctx.config).tenant.tenant_id, work);
|
|
1809
|
+
}
|
|
1599
1810
|
async function cleanupOrphanStatuses(ctx) {
|
|
1811
|
+
return runStartupTenantDatabaseScope(ctx, () => cleanupOrphanStatusesInTenantScope(ctx));
|
|
1812
|
+
}
|
|
1813
|
+
async function cleanupOrphanStatusesInTenantScope(ctx) {
|
|
1600
1814
|
const { app, sessionsService } = ctx;
|
|
1601
1815
|
const tasksService = app.service("tasks");
|
|
1816
|
+
const startupParams = startupTenantParams(ctx.config);
|
|
1602
1817
|
const wasGraceful = await readAndClearSentinel();
|
|
1603
|
-
const orphanedTasks = await tasksService.getOrphaned();
|
|
1818
|
+
const orphanedTasks = await tasksService.getOrphaned(startupParams);
|
|
1604
1819
|
if (orphanedTasks.length > 0) {
|
|
1605
1820
|
for (const task of orphanedTasks) {
|
|
1606
|
-
await tasksService.patch(
|
|
1607
|
-
|
|
1608
|
-
|
|
1821
|
+
await tasksService.patch(
|
|
1822
|
+
task.task_id,
|
|
1823
|
+
{
|
|
1824
|
+
status: TaskStatus.STOPPED
|
|
1825
|
+
},
|
|
1826
|
+
startupParams
|
|
1827
|
+
);
|
|
1609
1828
|
startupDebug(
|
|
1610
1829
|
`[startup] stopped orphaned task ${shortId6(task.task_id)} (was: ${task.status})`
|
|
1611
1830
|
);
|
|
1612
1831
|
}
|
|
1613
1832
|
}
|
|
1833
|
+
const queuedResult = await tasksService.find({
|
|
1834
|
+
query: { status: TaskStatus.QUEUED, $limit: 1e3 },
|
|
1835
|
+
...startupParams
|
|
1836
|
+
});
|
|
1837
|
+
const queuedTasks = queuedResult.data;
|
|
1838
|
+
if (queuedTasks.length > 0) {
|
|
1839
|
+
for (const task of queuedTasks) {
|
|
1840
|
+
await tasksService.patch(
|
|
1841
|
+
task.task_id,
|
|
1842
|
+
{
|
|
1843
|
+
status: TaskStatus.STOPPED
|
|
1844
|
+
},
|
|
1845
|
+
startupParams
|
|
1846
|
+
);
|
|
1847
|
+
}
|
|
1848
|
+
}
|
|
1614
1849
|
const orphanedSessions = [];
|
|
1615
1850
|
for (const status of [
|
|
1616
1851
|
SessionStatus2.RUNNING,
|
|
@@ -1620,7 +1855,8 @@ async function cleanupOrphanStatuses(ctx) {
|
|
|
1620
1855
|
SessionStatus2.TIMED_OUT
|
|
1621
1856
|
]) {
|
|
1622
1857
|
const result = await sessionsService.find({
|
|
1623
|
-
query: { status, $limit: 1e3 }
|
|
1858
|
+
query: { status, $limit: 1e3 },
|
|
1859
|
+
...startupParams
|
|
1624
1860
|
});
|
|
1625
1861
|
orphanedSessions.push(...result.data);
|
|
1626
1862
|
}
|
|
@@ -1632,7 +1868,7 @@ async function cleanupOrphanStatuses(ctx) {
|
|
|
1632
1868
|
status: SessionStatus2.IDLE,
|
|
1633
1869
|
ready_for_prompt: true
|
|
1634
1870
|
},
|
|
1635
|
-
|
|
1871
|
+
startupParams
|
|
1636
1872
|
);
|
|
1637
1873
|
startupDebug(
|
|
1638
1874
|
` \u2713 Marked session ${shortId6(session.session_id)} as idle (was: ${session.status})`
|
|
@@ -1645,7 +1881,7 @@ async function cleanupOrphanStatuses(ctx) {
|
|
|
1645
1881
|
let sessionsResetFromOrphanedTasks = 0;
|
|
1646
1882
|
if (sessionIdsWithOrphanedTasks.size > 0) {
|
|
1647
1883
|
for (const sessionId of sessionIdsWithOrphanedTasks) {
|
|
1648
|
-
const session = await sessionsService.get(sessionId);
|
|
1884
|
+
const session = await sessionsService.get(sessionId, startupParams);
|
|
1649
1885
|
if (session.status === SessionStatus2.RUNNING || session.status === SessionStatus2.STOPPING || session.status === SessionStatus2.AWAITING_PERMISSION || session.status === SessionStatus2.TIMED_OUT) {
|
|
1650
1886
|
await app.service("sessions").patch(
|
|
1651
1887
|
sessionId,
|
|
@@ -1653,7 +1889,7 @@ async function cleanupOrphanStatuses(ctx) {
|
|
|
1653
1889
|
status: SessionStatus2.IDLE,
|
|
1654
1890
|
ready_for_prompt: true
|
|
1655
1891
|
},
|
|
1656
|
-
|
|
1892
|
+
startupParams
|
|
1657
1893
|
);
|
|
1658
1894
|
sessionsResetFromOrphanedTasks++;
|
|
1659
1895
|
startupDebug(
|
|
@@ -1662,16 +1898,36 @@ async function cleanupOrphanStatuses(ctx) {
|
|
|
1662
1898
|
}
|
|
1663
1899
|
}
|
|
1664
1900
|
}
|
|
1665
|
-
const
|
|
1666
|
-
|
|
1901
|
+
const bootInterruptedTaskIds = /* @__PURE__ */ new Set([
|
|
1902
|
+
...orphanedTasks.map((t) => t.task_id),
|
|
1903
|
+
...queuedTasks.map((t) => t.task_id)
|
|
1904
|
+
]);
|
|
1905
|
+
const idleNotReadyResult = await sessionsService.find({
|
|
1906
|
+
query: { status: SessionStatus2.IDLE, ready_for_prompt: false, $limit: 1e3 },
|
|
1907
|
+
...startupParams
|
|
1667
1908
|
});
|
|
1668
|
-
const
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
});
|
|
1909
|
+
const stuckIdleSessions = [];
|
|
1910
|
+
for (const session of idleNotReadyResult.data) {
|
|
1911
|
+
const latestTaskId = session.tasks?.at(-1);
|
|
1912
|
+
if (!latestTaskId) {
|
|
1913
|
+
continue;
|
|
1674
1914
|
}
|
|
1915
|
+
let wasInterrupted = bootInterruptedTaskIds.has(latestTaskId);
|
|
1916
|
+
if (!wasInterrupted) {
|
|
1917
|
+
try {
|
|
1918
|
+
const latestTask = await tasksService.get(latestTaskId, startupParams);
|
|
1919
|
+
wasInterrupted = !isTerminalTaskStatus(latestTask.status);
|
|
1920
|
+
} catch {
|
|
1921
|
+
}
|
|
1922
|
+
}
|
|
1923
|
+
if (!wasInterrupted) {
|
|
1924
|
+
continue;
|
|
1925
|
+
}
|
|
1926
|
+
stuckIdleSessions.push(session);
|
|
1927
|
+
await app.service("sessions").patch(session.session_id, { ready_for_prompt: true }, startupParams);
|
|
1928
|
+
startupDebug(
|
|
1929
|
+
` \u2713 Unblocked stuck-idle session ${shortId6(session.session_id)} (ready_for_prompt was false, latest task interrupted)`
|
|
1930
|
+
);
|
|
1675
1931
|
}
|
|
1676
1932
|
const cleanupParts = [
|
|
1677
1933
|
`${orphanedTasks.length} orphaned task(s) stopped`,
|
|
@@ -1681,6 +1937,9 @@ async function cleanupOrphanStatuses(ctx) {
|
|
|
1681
1937
|
if (sessionsResetFromOrphanedTasks > 0) {
|
|
1682
1938
|
cleanupParts.push(`${sessionsResetFromOrphanedTasks} task-owned session(s) reset`);
|
|
1683
1939
|
}
|
|
1940
|
+
if (stuckIdleSessions.length > 0) {
|
|
1941
|
+
cleanupParts.push(`${stuckIdleSessions.length} stuck-idle session(s) unblocked`);
|
|
1942
|
+
}
|
|
1684
1943
|
console.log(`[startup] orphan cleanup: ${cleanupParts.join(", ")}`);
|
|
1685
1944
|
return {
|
|
1686
1945
|
wasGraceful,
|
|
@@ -1692,9 +1951,16 @@ async function cleanupOrphanStatuses(ctx) {
|
|
|
1692
1951
|
};
|
|
1693
1952
|
}
|
|
1694
1953
|
async function injectRestartNotices(ctx, cleanupResult) {
|
|
1954
|
+
return runStartupTenantDatabaseScope(
|
|
1955
|
+
ctx,
|
|
1956
|
+
() => injectRestartNoticesInTenantScope(ctx, cleanupResult)
|
|
1957
|
+
);
|
|
1958
|
+
}
|
|
1959
|
+
async function injectRestartNoticesInTenantScope(ctx, cleanupResult) {
|
|
1695
1960
|
const { app, db, sessionsService } = ctx;
|
|
1696
1961
|
const { wasGraceful, orphanedTasks, orphanedSessions, sessionIdsWithOrphanedTasks } = cleanupResult;
|
|
1697
1962
|
const tasksService = app.service("tasks");
|
|
1963
|
+
const startupParams = startupTenantParams(ctx.config);
|
|
1698
1964
|
const affectedSessionIds = /* @__PURE__ */ new Set([
|
|
1699
1965
|
...orphanedSessions.map((s) => s.session_id),
|
|
1700
1966
|
...Array.from(sessionIdsWithOrphanedTasks)
|
|
@@ -1704,7 +1970,7 @@ async function injectRestartNotices(ctx, cleanupResult) {
|
|
|
1704
1970
|
}
|
|
1705
1971
|
console.log(`\u{1F9F9} Injecting daemon restart notices for ${affectedSessionIds.size} session(s)...`);
|
|
1706
1972
|
const restartType = wasGraceful ? "daemon_restart" : "daemon_crash";
|
|
1707
|
-
const messageText = wasGraceful ? "The Agor daemon was restarted while this session was running.
|
|
1973
|
+
const messageText = wasGraceful ? "The Agor daemon was restarted while this session was running." : "The Agor daemon restarted unexpectedly while this session was running.";
|
|
1708
1974
|
const lastOrphanedTaskBySession = /* @__PURE__ */ new Map();
|
|
1709
1975
|
for (const task of orphanedTasks) {
|
|
1710
1976
|
const sid = task.session_id;
|
|
@@ -1719,10 +1985,10 @@ async function injectRestartNotices(ctx, cleanupResult) {
|
|
|
1719
1985
|
try {
|
|
1720
1986
|
let attachTask = lastOrphanedTaskBySession.get(sessionId);
|
|
1721
1987
|
if (!attachTask) {
|
|
1722
|
-
const session = await sessionsService.get(sessionId);
|
|
1988
|
+
const session = await sessionsService.get(sessionId, startupParams);
|
|
1723
1989
|
const latestTaskId = session.tasks?.at(-1);
|
|
1724
1990
|
if (latestTaskId) {
|
|
1725
|
-
attachTask = await tasksService.get(latestTaskId);
|
|
1991
|
+
attachTask = await tasksService.get(latestTaskId, startupParams);
|
|
1726
1992
|
}
|
|
1727
1993
|
}
|
|
1728
1994
|
if (!attachTask) {
|
|
@@ -1811,7 +2077,13 @@ async function startup(ctx) {
|
|
|
1811
2077
|
terminalsService
|
|
1812
2078
|
} = ctx;
|
|
1813
2079
|
const orphanCleanupResult = await cleanupOrphanStatuses(ctx);
|
|
1814
|
-
const
|
|
2080
|
+
const startupMultiTenancy = resolveMultiTenancyConfig(config);
|
|
2081
|
+
const healthMonitor = new HealthMonitor(app, {
|
|
2082
|
+
defaultParams: startupTenantParams(config),
|
|
2083
|
+
db,
|
|
2084
|
+
tenantId: startupMultiTenancy.mode === "static" ? startupMultiTenancy.static_tenant_id : void 0,
|
|
2085
|
+
requireTenantParams: startupMultiTenancy.mode !== "static"
|
|
2086
|
+
});
|
|
1815
2087
|
await ensureMasterSecret(config);
|
|
1816
2088
|
const server = await app.listen(DAEMON_PORT, DAEMON_HOST);
|
|
1817
2089
|
const displayHost = DAEMON_HOST === "0.0.0.0" ? "localhost" : DAEMON_HOST;
|
|
@@ -1823,7 +2095,10 @@ async function startup(ctx) {
|
|
|
1823
2095
|
);
|
|
1824
2096
|
runPostStartJob("health-monitor-initialize", () => healthMonitor.initialize());
|
|
1825
2097
|
runPostStartJob("daemon-restart-notices", () => injectRestartNotices(ctx, orphanCleanupResult));
|
|
1826
|
-
runPostStartJob(
|
|
2098
|
+
runPostStartJob(
|
|
2099
|
+
"git-remote-credential-scrub",
|
|
2100
|
+
() => runStartupTenantDatabaseScope(ctx, () => scrubManagedGitRemoteCredentials(db))
|
|
2101
|
+
);
|
|
1827
2102
|
runPostStartJob("host-ip-log", async () => {
|
|
1828
2103
|
const { resolveHostIpAddress } = await import("@agor/core/utils/host-ip");
|
|
1829
2104
|
const hostIp = resolveHostIpAddress(config.daemon?.host_ip_address);
|
|
@@ -1852,29 +2127,36 @@ async function startup(ctx) {
|
|
|
1852
2127
|
}
|
|
1853
2128
|
let schedulerService = null;
|
|
1854
2129
|
if (svcEnabled("scheduler")) {
|
|
2130
|
+
const multiTenancy = resolveMultiTenancyConfig(config);
|
|
1855
2131
|
schedulerService = new SchedulerService(db, app, {
|
|
1856
2132
|
tickInterval: 3e4,
|
|
1857
2133
|
// 30 seconds
|
|
1858
2134
|
gracePeriod: 12e4,
|
|
1859
2135
|
// 2 minutes
|
|
1860
2136
|
debug: process.env.NODE_ENV !== "production",
|
|
1861
|
-
unixUserMode: config.execution?.unix_user_mode ?? "simple"
|
|
2137
|
+
unixUserMode: config.execution?.unix_user_mode ?? "simple",
|
|
2138
|
+
// Static mode keeps the historical single-tenant scope. Auth-resolved
|
|
2139
|
+
// multi-tenant mode leaves this undefined so the scheduler discovers due
|
|
2140
|
+
// schedule tenant metadata at the DB boundary on each tick.
|
|
2141
|
+
tenantId: multiTenancy.mode === "static" ? multiTenancy.static_tenant_id : void 0
|
|
1862
2142
|
});
|
|
1863
|
-
schedulerService.start();
|
|
1864
2143
|
app.set("scheduler", schedulerService);
|
|
1865
|
-
|
|
2144
|
+
schedulerService.start();
|
|
2145
|
+
console.log("\u{1F504} Scheduler started (tick interval: 30s)");
|
|
1866
2146
|
}
|
|
1867
2147
|
let knowledgeEmbeddingIndexer = null;
|
|
1868
2148
|
if (svcEnabled("knowledge")) {
|
|
1869
|
-
knowledgeEmbeddingIndexer = new KnowledgeEmbeddingIndexer(db
|
|
2149
|
+
knowledgeEmbeddingIndexer = new KnowledgeEmbeddingIndexer(db, {
|
|
2150
|
+
tenantId: startupTenantParams(config).tenant.tenant_id
|
|
2151
|
+
});
|
|
1870
2152
|
knowledgeEmbeddingIndexer.start();
|
|
1871
2153
|
app.set("knowledgeEmbeddingIndexer", knowledgeEmbeddingIndexer);
|
|
1872
2154
|
console.log("\u{1F9E0} Knowledge embedding indexer started");
|
|
1873
2155
|
}
|
|
1874
2156
|
const gatewayService = safeService("gateway");
|
|
1875
2157
|
if (gatewayService) {
|
|
1876
|
-
gatewayService.refreshChannelState().then(() => {
|
|
1877
|
-
return gatewayService.startListeners();
|
|
2158
|
+
runStartupTenantDatabaseScope(ctx, () => gatewayService.refreshChannelState()).then(() => {
|
|
2159
|
+
return runStartupTenantDatabaseScope(ctx, () => gatewayService.startListeners());
|
|
1878
2160
|
}).catch((error) => {
|
|
1879
2161
|
console.error("[gateway] Failed to start listeners:", error);
|
|
1880
2162
|
});
|
|
@@ -1941,6 +2223,7 @@ async function startup(ctx) {
|
|
|
1941
2223
|
process.on("SIGINT", () => shutdown("SIGINT"));
|
|
1942
2224
|
}
|
|
1943
2225
|
export {
|
|
2226
|
+
cleanupOrphanStatuses,
|
|
1944
2227
|
runPostStartJob,
|
|
1945
2228
|
startup
|
|
1946
2229
|
};
|