agor-live 0.22.0 → 0.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/admin/add-to-branch-group.d.ts +2 -13
- package/dist/cli/commands/admin/add-to-branch-group.d.ts.map +1 -1
- package/dist/cli/commands/admin/add-to-branch-group.js +133 -33
- package/dist/cli/commands/admin/create-branch-group.d.ts +2 -13
- package/dist/cli/commands/admin/create-branch-group.d.ts.map +1 -1
- package/dist/cli/commands/admin/create-branch-group.js +132 -38
- package/dist/cli/commands/admin/create-symlink.d.ts +2 -14
- package/dist/cli/commands/admin/create-symlink.d.ts.map +1 -1
- package/dist/cli/commands/admin/create-symlink.js +138 -61
- package/dist/cli/commands/admin/delete-branch-group.d.ts +2 -13
- package/dist/cli/commands/admin/delete-branch-group.d.ts.map +1 -1
- package/dist/cli/commands/admin/delete-branch-group.js +132 -28
- package/dist/cli/commands/admin/delete-user.d.ts +2 -13
- package/dist/cli/commands/admin/delete-user.d.ts.map +1 -1
- package/dist/cli/commands/admin/delete-user.js +132 -38
- package/dist/cli/commands/admin/ensure-user.d.ts +2 -14
- package/dist/cli/commands/admin/ensure-user.d.ts.map +1 -1
- package/dist/cli/commands/admin/ensure-user.js +131 -46
- package/dist/cli/commands/admin/remove-from-branch-group.d.ts +2 -13
- package/dist/cli/commands/admin/remove-from-branch-group.d.ts.map +1 -1
- package/dist/cli/commands/admin/remove-from-branch-group.js +133 -33
- package/dist/cli/commands/admin/remove-symlink.d.ts +2 -14
- package/dist/cli/commands/admin/remove-symlink.d.ts.map +1 -1
- package/dist/cli/commands/admin/remove-symlink.js +136 -49
- package/dist/cli/commands/admin/scrub-git-remotes.d.ts +2 -2
- package/dist/cli/commands/admin/scrub-git-remotes.d.ts.map +1 -1
- package/dist/cli/commands/admin/scrub-git-remotes.js +128 -86
- package/dist/cli/commands/admin/sync-user-symlinks.d.ts +2 -14
- package/dist/cli/commands/admin/sync-user-symlinks.d.ts.map +1 -1
- package/dist/cli/commands/admin/sync-user-symlinks.js +132 -43
- package/dist/cli/commands/auth/whoami.d.ts.map +1 -1
- package/dist/cli/commands/auth/whoami.js +2 -1
- package/dist/cli/commands/branch/env/request.test.d.ts +2 -0
- package/dist/cli/commands/branch/env/request.test.d.ts.map +1 -0
- package/dist/cli/commands/branch/env/request.test.js +17723 -0
- package/dist/cli/commands/branch/env/restart.d.ts.map +1 -1
- package/dist/cli/commands/branch/env/restart.js +7 -1
- package/dist/cli/commands/branch/env/start.d.ts.map +1 -1
- package/dist/cli/commands/branch/env/start.js +7 -1
- package/dist/cli/commands/branch/env/stop.d.ts.map +1 -1
- package/dist/cli/commands/branch/env/stop.js +7 -1
- package/dist/cli/commands/daemon/status.d.ts.map +1 -1
- package/dist/cli/commands/daemon/status.js +2 -1
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +140 -2
- package/dist/cli/commands/local/add-to-branch-group.d.ts +13 -0
- package/dist/cli/commands/local/add-to-branch-group.d.ts.map +1 -0
- package/dist/cli/commands/local/add-to-branch-group.js +37 -0
- package/dist/cli/commands/local/create-branch-group.d.ts +12 -0
- package/dist/cli/commands/local/create-branch-group.d.ts.map +1 -0
- package/dist/cli/commands/local/create-branch-group.js +35 -0
- package/dist/cli/commands/local/create-symlink.d.ts +14 -0
- package/dist/cli/commands/local/create-symlink.d.ts.map +1 -0
- package/dist/cli/commands/local/create-symlink.js +45 -0
- package/dist/cli/commands/{daemon → local/daemon}/sync.d.ts +1 -1
- package/dist/cli/commands/local/daemon/sync.d.ts.map +1 -0
- package/dist/cli/commands/{daemon → local/daemon}/sync.js +7 -6
- package/dist/cli/commands/local/delete-branch-group.d.ts +12 -0
- package/dist/cli/commands/local/delete-branch-group.d.ts.map +1 -0
- package/dist/cli/commands/local/delete-branch-group.js +35 -0
- package/dist/cli/commands/local/delete-user.d.ts +12 -0
- package/dist/cli/commands/local/delete-user.d.ts.map +1 -0
- package/dist/cli/commands/local/delete-user.js +36 -0
- package/dist/cli/commands/local/ensure-user.d.ts +12 -0
- package/dist/cli/commands/local/ensure-user.d.ts.map +1 -0
- package/dist/cli/commands/local/ensure-user.js +41 -0
- package/dist/cli/commands/local/remove-from-branch-group.d.ts +13 -0
- package/dist/cli/commands/local/remove-from-branch-group.d.ts.map +1 -0
- package/dist/cli/commands/local/remove-from-branch-group.js +37 -0
- package/dist/cli/commands/local/remove-symlink.d.ts +13 -0
- package/dist/cli/commands/local/remove-symlink.d.ts.map +1 -0
- package/dist/cli/commands/local/remove-symlink.js +39 -0
- package/dist/cli/commands/local/scrub-git-remotes.d.ts +9 -0
- package/dist/cli/commands/local/scrub-git-remotes.d.ts.map +1 -0
- package/dist/cli/commands/local/scrub-git-remotes.js +23 -0
- package/dist/cli/commands/{admin → local}/sync-unix.d.ts.map +1 -1
- package/dist/cli/commands/{admin → local}/sync-unix.js +3 -3
- package/dist/cli/commands/local/sync-user-symlinks.d.ts +12 -0
- package/dist/cli/commands/local/sync-user-symlinks.d.ts.map +1 -0
- package/dist/cli/commands/local/sync-user-symlinks.js +37 -0
- package/dist/cli/commands/telemetry/index.d.ts +7 -0
- package/dist/cli/commands/telemetry/index.d.ts.map +1 -0
- package/dist/cli/commands/telemetry/index.js +40 -0
- package/dist/cli/commands/telemetry/off.d.ts +6 -0
- package/dist/cli/commands/telemetry/off.d.ts.map +1 -0
- package/dist/cli/commands/telemetry/off.js +35 -0
- package/dist/cli/commands/telemetry/on.d.ts +6 -0
- package/dist/cli/commands/telemetry/on.d.ts.map +1 -0
- package/dist/cli/commands/telemetry/on.js +37 -0
- package/dist/cli/commands/telemetry/test.d.ts +6 -0
- package/dist/cli/commands/telemetry/test.d.ts.map +1 -0
- package/dist/cli/commands/telemetry/test.js +56 -0
- package/dist/cli/commands/user/create-admin.d.ts.map +1 -1
- package/dist/cli/commands/user/create-admin.js +81 -72
- package/dist/cli/commands/user/list.d.ts.map +1 -1
- package/dist/cli/commands/user/list.js +1 -0
- package/dist/cli/commands/whoami.js +2 -1
- package/dist/cli/lib/branch-environment-action.d.ts +21 -0
- package/dist/cli/lib/branch-environment-action.d.ts.map +1 -0
- package/dist/cli/lib/branch-environment-action.js +8 -0
- package/dist/core/api/index.cjs +7 -2
- package/dist/core/api/index.d.ts +13 -4
- package/dist/core/api/index.d.ts.map +1 -1
- package/dist/core/api/index.js +7 -2
- package/dist/core/claude/index.cjs +482 -77
- package/dist/core/claude/index.js +479 -76
- package/dist/core/claude-cli/index.cjs +11 -0
- package/dist/core/claude-cli/index.js +11 -0
- package/dist/core/claude-cli/pricing.d.ts.map +1 -1
- package/dist/core/client/index.cjs +35 -7
- package/dist/core/client/index.js +32 -7
- package/dist/core/config/browser.cjs +3 -5
- package/dist/core/config/browser.js +3 -5
- package/dist/core/config/config-manager.d.ts +33 -13
- package/dist/core/config/config-manager.d.ts.map +1 -1
- package/dist/core/config/index.cjs +4259 -4527
- package/dist/core/config/index.d.ts +1 -0
- package/dist/core/config/index.d.ts.map +1 -1
- package/dist/core/config/index.js +4295 -4583
- package/dist/core/config/key-resolver.d.ts.map +1 -1
- package/dist/core/config/multitenancy.d.ts +33 -0
- package/dist/core/config/multitenancy.d.ts.map +1 -0
- package/dist/core/config/security-resolver.d.ts +1 -0
- package/dist/core/config/security-resolver.d.ts.map +1 -1
- package/dist/core/config/types.d.ts +67 -4
- package/dist/core/config/types.d.ts.map +1 -1
- package/dist/core/db/client.d.ts +34 -2
- package/dist/core/db/client.d.ts.map +1 -1
- package/dist/core/db/database-wrapper.d.ts.map +1 -1
- package/dist/core/db/first-run-bootstrap.d.ts.map +1 -1
- package/dist/core/db/index.cjs +2422 -1084
- package/dist/core/db/index.d.ts +2 -1
- package/dist/core/db/index.d.ts.map +1 -1
- package/dist/core/db/index.js +2162 -852
- package/dist/core/db/migrate.d.ts.map +1 -1
- package/dist/core/db/repositories/artifacts.d.ts +27 -2
- package/dist/core/db/repositories/artifacts.d.ts.map +1 -1
- package/dist/core/db/repositories/base.d.ts +18 -0
- package/dist/core/db/repositories/base.d.ts.map +1 -1
- package/dist/core/db/repositories/board-comments.d.ts +17 -1
- package/dist/core/db/repositories/board-comments.d.ts.map +1 -1
- package/dist/core/db/repositories/board-objects.d.ts.map +1 -1
- package/dist/core/db/repositories/boards.d.ts +28 -4
- package/dist/core/db/repositories/boards.d.ts.map +1 -1
- package/dist/core/db/repositories/branch-access.d.ts +32 -0
- package/dist/core/db/repositories/branch-access.d.ts.map +1 -1
- package/dist/core/db/repositories/branches.d.ts +41 -1
- package/dist/core/db/repositories/branches.d.ts.map +1 -1
- package/dist/core/db/repositories/cards.d.ts +15 -1
- package/dist/core/db/repositories/cards.d.ts.map +1 -1
- package/dist/core/db/repositories/gateway-channels.d.ts.map +1 -1
- package/dist/core/db/repositories/gateway-outbound-messages.d.ts +19 -0
- package/dist/core/db/repositories/gateway-outbound-messages.d.ts.map +1 -0
- package/dist/core/db/repositories/index.d.ts +2 -0
- package/dist/core/db/repositories/index.d.ts.map +1 -1
- package/dist/core/db/repositories/messages.d.ts +9 -2
- package/dist/core/db/repositories/messages.d.ts.map +1 -1
- package/dist/core/db/repositories/repos.d.ts.map +1 -1
- package/dist/core/db/repositories/schedules.d.ts +12 -1
- package/dist/core/db/repositories/schedules.d.ts.map +1 -1
- package/dist/core/db/repositories/sessions.d.ts +49 -5
- package/dist/core/db/repositories/sessions.d.ts.map +1 -1
- package/dist/core/db/repositories/tasks.d.ts +7 -2
- package/dist/core/db/repositories/tasks.d.ts.map +1 -1
- package/dist/core/db/repositories/user-api-keys.d.ts +10 -1
- package/dist/core/db/repositories/user-api-keys.d.ts.map +1 -1
- package/dist/core/db/repositories/users.d.ts +8 -8
- package/dist/core/db/repositories/users.d.ts.map +1 -1
- package/dist/core/db/schema.d.ts +1460 -38
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.postgres.d.ts +1082 -37
- package/dist/core/db/schema.postgres.d.ts.map +1 -1
- package/dist/core/db/schema.sqlite.d.ts +397 -1
- package/dist/core/db/schema.sqlite.d.ts.map +1 -1
- package/dist/core/db/tenant-context.d.ts +26 -0
- package/dist/core/db/tenant-context.d.ts.map +1 -0
- package/dist/core/db/tenant-scope.d.ts +31 -0
- package/dist/core/db/tenant-scope.d.ts.map +1 -0
- package/dist/core/db/user-utils.d.ts +2 -2
- package/dist/core/db/user-utils.d.ts.map +1 -1
- package/dist/core/drizzle/postgres/0052_gateway_outbound_messages.sql +45 -0
- package/dist/core/drizzle/postgres/0053_user_token_invalidation.sql +1 -0
- package/dist/core/drizzle/postgres/0054_app_level_multitenancy.sql +219 -0
- package/dist/core/drizzle/postgres/0055_app_level_multitenancy_rls.sql +411 -0
- package/dist/core/drizzle/postgres/0056_composite_indexes.sql +15 -0
- package/dist/core/drizzle/postgres/0057_message_timestamp_indexes.sql +3 -0
- package/dist/core/drizzle/postgres/meta/_journal.json +42 -0
- package/dist/core/drizzle/sqlite/0061_gateway_outbound_messages.sql +38 -0
- package/dist/core/drizzle/sqlite/0062_user_token_invalidation.sql +1 -0
- package/dist/core/drizzle/sqlite/0063_composite_indexes.sql +10 -0
- package/dist/core/drizzle/sqlite/0064_message_timestamp_indexes.sql +2 -0
- package/dist/core/drizzle/sqlite/meta/_journal.json +28 -0
- package/dist/core/environment/render-snapshot.cjs +1 -4
- package/dist/core/environment/render-snapshot.js +1 -4
- package/dist/core/environment/webhook.cjs +1 -4
- package/dist/core/environment/webhook.js +1 -4
- package/dist/core/gateway/connector.d.ts +10 -1
- package/dist/core/gateway/connector.d.ts.map +1 -1
- package/dist/core/gateway/connectors/slack-manifest.cjs +108 -0
- package/dist/core/gateway/connectors/slack-manifest.d.ts +85 -0
- package/dist/core/gateway/connectors/slack-manifest.d.ts.map +1 -0
- package/dist/core/gateway/connectors/slack-manifest.js +81 -0
- package/dist/core/gateway/connectors/slack.d.ts +101 -4
- package/dist/core/gateway/connectors/slack.d.ts.map +1 -1
- package/dist/core/gateway/index.cjs +495 -29
- package/dist/core/gateway/index.d.ts +4 -1
- package/dist/core/gateway/index.d.ts.map +1 -1
- package/dist/core/gateway/index.js +490 -28
- package/dist/core/gateway/system-message.d.ts.map +1 -1
- package/dist/core/git/exec.cjs +24 -0
- package/dist/core/git/exec.d.ts +6 -4
- package/dist/core/git/exec.d.ts.map +1 -1
- package/dist/core/git/exec.js +2 -0
- package/dist/core/git/index.cjs +3 -1363
- package/dist/core/git/index.d.ts +4 -614
- package/dist/core/git/index.d.ts.map +1 -1
- package/dist/core/git/index.js +1 -1304
- package/dist/core/git/pure.cjs +24 -0
- package/dist/core/git/pure.d.ts +2 -27
- package/dist/core/git/pure.d.ts.map +1 -1
- package/dist/core/git/pure.js +2 -0
- package/dist/core/index.cjs +11137 -10604
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +11673 -10630
- package/dist/core/lib/feathers-validation.cjs +6 -1
- package/dist/core/lib/feathers-validation.d.ts +1 -0
- package/dist/core/lib/feathers-validation.d.ts.map +1 -1
- package/dist/core/lib/feathers-validation.js +6 -1
- package/dist/core/local-actions/git-remotes.d.ts +7 -0
- package/dist/core/local-actions/git-remotes.d.ts.map +1 -0
- package/dist/core/local-actions/index.cjs +7941 -0
- package/dist/core/local-actions/index.d.ts +6 -0
- package/dist/core/local-actions/index.d.ts.map +1 -0
- package/dist/core/local-actions/index.js +7943 -0
- package/dist/core/local-actions/symlinks.d.ts +20 -0
- package/dist/core/local-actions/symlinks.d.ts.map +1 -0
- package/dist/core/local-actions/types.d.ts +14 -0
- package/dist/core/local-actions/types.d.ts.map +1 -0
- package/dist/core/local-actions/unix-groups.d.ts +16 -0
- package/dist/core/local-actions/unix-groups.d.ts.map +1 -0
- package/dist/core/local-actions/unix-users.d.ts +12 -0
- package/dist/core/local-actions/unix-users.d.ts.map +1 -0
- package/dist/core/mcp/index.cjs +352 -25
- package/dist/core/mcp/index.js +351 -24
- package/dist/core/models/browser.cjs +148 -25
- package/dist/core/models/browser.js +144 -25
- package/dist/core/models/claude.d.ts +2 -2
- package/dist/core/models/claude.d.ts.map +1 -1
- package/dist/core/models/codex.d.ts +205 -21
- package/dist/core/models/codex.d.ts.map +1 -1
- package/dist/core/models/index.cjs +148 -25
- package/dist/core/models/index.js +144 -25
- package/dist/core/package.json +24 -0
- package/dist/core/seed/demo-fixtures.d.ts +87 -0
- package/dist/core/seed/demo-fixtures.d.ts.map +1 -0
- package/dist/core/seed/dev-fixtures.d.ts.map +1 -1
- package/dist/core/seed/index.cjs +8410 -5504
- package/dist/core/seed/index.d.ts +1 -0
- package/dist/core/seed/index.d.ts.map +1 -1
- package/dist/core/seed/index.js +8434 -5533
- package/dist/core/sessions/index.cjs +110 -24
- package/dist/core/sessions/index.js +110 -24
- package/dist/core/telemetry/index.cjs +361 -0
- package/dist/core/telemetry/index.d.ts +5 -0
- package/dist/core/telemetry/index.d.ts.map +1 -0
- package/dist/core/telemetry/index.js +315 -0
- package/dist/core/telemetry/logger.d.ts +44 -0
- package/dist/core/telemetry/logger.d.ts.map +1 -0
- package/dist/core/telemetry/model-normalization.d.ts +3 -0
- package/dist/core/telemetry/model-normalization.d.ts.map +1 -0
- package/dist/core/telemetry/types.d.ts +47 -0
- package/dist/core/telemetry/types.d.ts.map +1 -0
- package/dist/core/telemetry/version.d.ts +9 -0
- package/dist/core/telemetry/version.d.ts.map +1 -0
- package/dist/core/templates/agor-system-prompt.md +1 -0
- package/dist/core/tools/mcp/oauth-refresh.cjs +532 -102
- package/dist/core/tools/mcp/oauth-refresh.js +530 -103
- package/dist/core/types/board.d.ts +2 -0
- package/dist/core/types/board.d.ts.map +1 -1
- package/dist/core/types/branch.d.ts +13 -0
- package/dist/core/types/branch.d.ts.map +1 -1
- package/dist/core/types/config-services.d.ts.map +1 -1
- package/dist/core/types/feathers.d.ts +6 -0
- package/dist/core/types/feathers.d.ts.map +1 -1
- package/dist/core/types/gateway.d.ts +76 -1
- package/dist/core/types/gateway.d.ts.map +1 -1
- package/dist/core/types/index.cjs +25 -0
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js +22 -0
- package/dist/core/types/schedule.d.ts +4 -3
- package/dist/core/types/schedule.d.ts.map +1 -1
- package/dist/core/types/session.d.ts +7 -1
- package/dist/core/types/session.d.ts.map +1 -1
- package/dist/core/types/tenant.d.ts +15 -0
- package/dist/core/types/tenant.d.ts.map +1 -0
- package/dist/core/types/user.d.ts +61 -0
- package/dist/core/types/user.d.ts.map +1 -1
- package/dist/core/unix/index.cjs +1056 -674
- package/dist/core/unix/index.js +1003 -623
- package/dist/core/utils/emoji-shortcodes.d.ts +13 -0
- package/dist/core/utils/emoji-shortcodes.d.ts.map +1 -0
- package/dist/core/yaml/index.cjs +8 -8
- package/dist/core/yaml/index.d.ts +1 -1
- package/dist/core/yaml/index.d.ts.map +1 -1
- package/dist/core/yaml/index.js +7 -7
- package/dist/daemon/adapters/drizzle.d.ts +26 -4
- package/dist/daemon/adapters/drizzle.d.ts.map +1 -1
- package/dist/daemon/adapters/drizzle.js +68 -7
- package/dist/daemon/auth/api-key-strategy.js +1 -1
- package/dist/daemon/auth/executor-runtime-scope.d.ts.map +1 -1
- package/dist/daemon/auth/executor-runtime-scope.js +19 -5
- package/dist/daemon/auth/launch-auth.d.ts +5 -4
- package/dist/daemon/auth/launch-auth.d.ts.map +1 -1
- package/dist/daemon/auth/launch-auth.js +123 -39
- package/dist/daemon/auth/refresh-token-service.d.ts +22 -0
- package/dist/daemon/auth/refresh-token-service.d.ts.map +1 -0
- package/dist/daemon/auth/refresh-token-service.js +133 -0
- package/dist/daemon/auth/runtime-tokens.d.ts +3 -1
- package/dist/daemon/auth/runtime-tokens.d.ts.map +1 -1
- package/dist/daemon/auth/runtime-tokens.js +17 -4
- package/dist/daemon/auth/service-jwt-strategy.d.ts +2 -1
- package/dist/daemon/auth/service-jwt-strategy.d.ts.map +1 -1
- package/dist/daemon/auth/service-jwt-strategy.js +127 -1
- package/dist/daemon/auth/token-invalidation.d.ts +11 -0
- package/dist/daemon/auth/token-invalidation.d.ts.map +1 -0
- package/dist/daemon/auth/token-invalidation.js +38 -0
- package/dist/daemon/auth/user-redaction.d.ts +12 -0
- package/dist/daemon/auth/user-redaction.d.ts.map +1 -0
- package/dist/daemon/auth/user-redaction.js +13 -0
- package/dist/daemon/declarations.d.ts +4 -4
- package/dist/daemon/declarations.d.ts.map +1 -1
- package/dist/daemon/hooks/gateway-route.d.ts.map +1 -1
- package/dist/daemon/hooks/gateway-route.js +23 -13
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +7234 -2866
- package/dist/daemon/knowledge/pgvector.d.ts +3 -3
- package/dist/daemon/knowledge/pgvector.d.ts.map +1 -1
- package/dist/daemon/knowledge/pgvector.js +24 -0
- package/dist/daemon/knowledge/units.d.ts +2 -2
- package/dist/daemon/knowledge/units.d.ts.map +1 -1
- package/dist/daemon/main.js +7234 -2866
- package/dist/daemon/mcp/server.d.ts +3 -3
- package/dist/daemon/mcp/server.d.ts.map +1 -1
- package/dist/daemon/mcp/server.js +1467 -71
- package/dist/daemon/mcp/tokens.d.ts +2 -2
- package/dist/daemon/mcp/tokens.d.ts.map +1 -1
- package/dist/daemon/mcp/tokens.js +5 -1
- package/dist/daemon/mcp/tool-registry.d.ts.map +1 -1
- package/dist/daemon/mcp/tool-registry.js +1 -0
- package/dist/daemon/mcp/tools/analytics.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/analytics.js +548 -23
- package/dist/daemon/mcp/tools/artifacts.js +510 -19
- package/dist/daemon/mcp/tools/boards.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/boards.js +517 -20
- package/dist/daemon/mcp/tools/branches.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/branches.js +574 -49
- package/dist/daemon/mcp/tools/card-types.js +508 -17
- package/dist/daemon/mcp/tools/cards.js +508 -17
- package/dist/daemon/mcp/tools/environment.js +516 -17
- package/dist/daemon/mcp/tools/gateway-channels.d.ts +4 -0
- package/dist/daemon/mcp/tools/gateway-channels.d.ts.map +1 -0
- package/dist/daemon/mcp/tools/gateway-channels.js +16035 -0
- package/dist/daemon/mcp/tools/knowledge.js +508 -17
- package/dist/daemon/mcp/tools/mcp-servers.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/mcp-servers.js +843 -17
- package/dist/daemon/mcp/tools/messages.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/messages.js +568 -31
- package/dist/daemon/mcp/tools/proxies.js +518 -19
- package/dist/daemon/mcp/tools/repos.js +508 -17
- package/dist/daemon/mcp/tools/schedules.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/schedules.js +511 -18
- package/dist/daemon/mcp/tools/search.js +508 -17
- package/dist/daemon/mcp/tools/sessions.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/sessions.js +521 -23
- package/dist/daemon/mcp/tools/tasks.js +508 -17
- package/dist/daemon/mcp/tools/users.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/users.js +527 -22
- package/dist/daemon/mcp/tools/widgets.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/widgets.js +536 -18
- package/dist/daemon/register-hooks.d.ts +3 -2
- package/dist/daemon/register-hooks.d.ts.map +1 -1
- package/dist/daemon/register-hooks.js +894 -582
- package/dist/daemon/register-routes.d.ts +3 -2
- package/dist/daemon/register-routes.d.ts.map +1 -1
- package/dist/daemon/register-routes.js +2715 -816
- package/dist/daemon/register-services.d.ts +2 -2
- package/dist/daemon/register-services.d.ts.map +1 -1
- package/dist/daemon/register-services.js +2445 -633
- package/dist/daemon/services/artifacts.d.ts +34 -6
- package/dist/daemon/services/artifacts.d.ts.map +1 -1
- package/dist/daemon/services/artifacts.js +109 -8
- package/dist/daemon/services/assistant-knowledge.d.ts +2 -2
- package/dist/daemon/services/assistant-knowledge.d.ts.map +1 -1
- package/dist/daemon/services/board-comments.d.ts +8 -5
- package/dist/daemon/services/board-comments.d.ts.map +1 -1
- package/dist/daemon/services/board-comments.js +78 -13
- package/dist/daemon/services/board-objects.d.ts +8 -5
- package/dist/daemon/services/board-objects.d.ts.map +1 -1
- package/dist/daemon/services/board-objects.js +14 -4
- package/dist/daemon/services/boards.d.ts +34 -5
- package/dist/daemon/services/boards.d.ts.map +1 -1
- package/dist/daemon/services/boards.js +116 -8
- package/dist/daemon/services/branch-owners.d.ts +3 -1
- package/dist/daemon/services/branch-owners.d.ts.map +1 -1
- package/dist/daemon/services/branch-owners.js +31 -4
- package/dist/daemon/services/branches.d.ts +31 -8
- package/dist/daemon/services/branches.d.ts.map +1 -1
- package/dist/daemon/services/branches.js +242 -35
- package/dist/daemon/services/card-types.d.ts +3 -3
- package/dist/daemon/services/card-types.d.ts.map +1 -1
- package/dist/daemon/services/card-types.js +68 -7
- package/dist/daemon/services/cards.d.ts +19 -4
- package/dist/daemon/services/cards.d.ts.map +1 -1
- package/dist/daemon/services/cards.js +92 -8
- package/dist/daemon/services/check-auth.d.ts +2 -2
- package/dist/daemon/services/check-auth.d.ts.map +1 -1
- package/dist/daemon/services/claude-cli-integration.d.ts +4 -1
- package/dist/daemon/services/claude-cli-integration.d.ts.map +1 -1
- package/dist/daemon/services/claude-cli-integration.js +117 -65
- package/dist/daemon/services/claude-models.d.ts +3 -3
- package/dist/daemon/services/claude-models.d.ts.map +1 -1
- package/dist/daemon/services/claude-models.js +383 -272
- package/dist/daemon/services/config.d.ts +12 -4
- package/dist/daemon/services/config.d.ts.map +1 -1
- package/dist/daemon/services/config.js +39 -3
- package/dist/daemon/services/copilot-models.d.ts +3 -3
- package/dist/daemon/services/copilot-models.d.ts.map +1 -1
- package/dist/daemon/services/cursor-models.d.ts +3 -3
- package/dist/daemon/services/cursor-models.d.ts.map +1 -1
- package/dist/daemon/services/files.d.ts +3 -3
- package/dist/daemon/services/files.d.ts.map +1 -1
- package/dist/daemon/services/files.js +24 -5
- package/dist/daemon/services/gateway-channels-test.d.ts +24 -0
- package/dist/daemon/services/gateway-channels-test.d.ts.map +1 -0
- package/dist/daemon/services/gateway-channels-test.js +66 -0
- package/dist/daemon/services/gateway-channels.d.ts +3 -3
- package/dist/daemon/services/gateway-channels.d.ts.map +1 -1
- package/dist/daemon/services/gateway-channels.js +68 -7
- package/dist/daemon/services/gateway.d.ts +48 -3
- package/dist/daemon/services/gateway.d.ts.map +1 -1
- package/dist/daemon/services/gateway.js +606 -60
- package/dist/daemon/services/github-app-setup.d.ts +3 -3
- package/dist/daemon/services/github-app-setup.d.ts.map +1 -1
- package/dist/daemon/services/groups.d.ts +5 -5
- package/dist/daemon/services/groups.d.ts.map +1 -1
- package/dist/daemon/services/health-monitor.d.ts +34 -2
- package/dist/daemon/services/health-monitor.d.ts.map +1 -1
- package/dist/daemon/services/health-monitor.js +145 -23
- package/dist/daemon/services/knowledge-document-edits.d.ts +3 -3
- package/dist/daemon/services/knowledge-document-edits.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-documents.d.ts +3 -3
- package/dist/daemon/services/knowledge-documents.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-documents.js +92 -7
- package/dist/daemon/services/knowledge-embedding-indexer.d.ts +7 -2
- package/dist/daemon/services/knowledge-embedding-indexer.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-embedding-indexer.js +37 -3
- package/dist/daemon/services/knowledge-graph.d.ts +3 -3
- package/dist/daemon/services/knowledge-graph.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-indexing.d.ts +3 -3
- package/dist/daemon/services/knowledge-indexing.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-namespaces.d.ts +3 -3
- package/dist/daemon/services/knowledge-namespaces.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-namespaces.js +72 -8
- package/dist/daemon/services/knowledge-reindex.d.ts +3 -3
- package/dist/daemon/services/knowledge-reindex.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-reindex.js +28 -1
- package/dist/daemon/services/knowledge-search.d.ts +3 -3
- package/dist/daemon/services/knowledge-search.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-settings.d.ts +3 -3
- package/dist/daemon/services/knowledge-settings.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-settings.js +24 -0
- package/dist/daemon/services/knowledge-versions.d.ts +3 -3
- package/dist/daemon/services/knowledge-versions.d.ts.map +1 -1
- package/dist/daemon/services/knowledge-versions.js +68 -7
- package/dist/daemon/services/leaderboard.d.ts +14 -6
- package/dist/daemon/services/leaderboard.d.ts.map +1 -1
- package/dist/daemon/services/leaderboard.js +74 -15
- package/dist/daemon/services/local-actions.d.ts +13 -0
- package/dist/daemon/services/local-actions.d.ts.map +1 -0
- package/dist/daemon/services/local-actions.js +120 -0
- package/dist/daemon/services/mcp-servers.d.ts +3 -3
- package/dist/daemon/services/mcp-servers.d.ts.map +1 -1
- package/dist/daemon/services/mcp-servers.js +68 -7
- package/dist/daemon/services/messages.d.ts +10 -6
- package/dist/daemon/services/messages.d.ts.map +1 -1
- package/dist/daemon/services/messages.js +87 -7
- package/dist/daemon/services/repos.d.ts +6 -6
- package/dist/daemon/services/repos.d.ts.map +1 -1
- package/dist/daemon/services/repos.js +131 -32
- package/dist/daemon/services/scheduler.d.ts +23 -27
- package/dist/daemon/services/scheduler.d.ts.map +1 -1
- package/dist/daemon/services/scheduler.js +55 -28
- package/dist/daemon/services/schedules.d.ts +3 -3
- package/dist/daemon/services/schedules.d.ts.map +1 -1
- package/dist/daemon/services/schedules.js +68 -7
- package/dist/daemon/services/session-env-selections.d.ts +3 -3
- package/dist/daemon/services/session-env-selections.d.ts.map +1 -1
- package/dist/daemon/services/session-mcp-servers.d.ts +3 -3
- package/dist/daemon/services/session-mcp-servers.d.ts.map +1 -1
- package/dist/daemon/services/session-token-service.d.ts.map +1 -1
- package/dist/daemon/services/session-token-service.js +3 -0
- package/dist/daemon/services/sessions.d.ts +9 -5
- package/dist/daemon/services/sessions.d.ts.map +1 -1
- package/dist/daemon/services/sessions.js +143 -10
- package/dist/daemon/services/tasks.d.ts +11 -5
- package/dist/daemon/services/tasks.d.ts.map +1 -1
- package/dist/daemon/services/tasks.js +199 -39
- package/dist/daemon/services/terminals.d.ts +21 -3
- package/dist/daemon/services/terminals.d.ts.map +1 -1
- package/dist/daemon/services/terminals.js +81 -25
- package/dist/daemon/services/thread-session-map.d.ts +3 -3
- package/dist/daemon/services/thread-session-map.d.ts.map +1 -1
- package/dist/daemon/services/thread-session-map.js +68 -7
- package/dist/daemon/services/user-avatar-sync.d.ts +21 -0
- package/dist/daemon/services/user-avatar-sync.d.ts.map +1 -0
- package/dist/daemon/services/user-avatar-sync.js +267 -0
- package/dist/daemon/services/users.d.ts +29 -9
- package/dist/daemon/services/users.d.ts.map +1 -1
- package/dist/daemon/services/users.js +383 -30
- package/dist/daemon/services/zone-trigger.d.ts.map +1 -1
- package/dist/daemon/services/zone-trigger.js +17 -4
- package/dist/daemon/setup/build-info.d.ts +1 -1
- package/dist/daemon/setup/build-info.d.ts.map +1 -1
- package/dist/daemon/setup/build-info.js +5 -1
- package/dist/daemon/setup/database.d.ts +8 -3
- package/dist/daemon/setup/database.d.ts.map +1 -1
- package/dist/daemon/setup/database.js +26 -6
- package/dist/daemon/setup/first-run-admin.d.ts +2 -2
- package/dist/daemon/setup/first-run-admin.d.ts.map +1 -1
- package/dist/daemon/setup/index.js +97 -17
- package/dist/daemon/setup/socketio.d.ts +10 -1
- package/dist/daemon/setup/socketio.d.ts.map +1 -1
- package/dist/daemon/setup/socketio.js +68 -10
- package/dist/daemon/startup.d.ts +13 -2
- package/dist/daemon/startup.d.ts.map +1 -1
- package/dist/daemon/startup.js +348 -86
- package/dist/daemon/utils/append-system-message.d.ts +2 -2
- package/dist/daemon/utils/append-system-message.d.ts.map +1 -1
- package/dist/daemon/utils/apply-session-config-defaults.d.ts.map +1 -1
- package/dist/daemon/utils/apply-session-config-defaults.js +12 -1
- package/dist/daemon/utils/authorization.d.ts +3 -1
- package/dist/daemon/utils/authorization.d.ts.map +1 -1
- package/dist/daemon/utils/authorization.js +21 -6
- package/dist/daemon/utils/branch-authorization.d.ts +30 -0
- package/dist/daemon/utils/branch-authorization.d.ts.map +1 -1
- package/dist/daemon/utils/branch-authorization.js +63 -5
- package/dist/daemon/utils/branch-inspect.d.ts +1 -0
- package/dist/daemon/utils/branch-inspect.d.ts.map +1 -1
- package/dist/daemon/utils/branch-inspect.js +11 -3
- package/dist/daemon/utils/executor-read-impersonation.d.ts +2 -2
- package/dist/daemon/utils/executor-read-impersonation.d.ts.map +1 -1
- package/dist/daemon/utils/git-impersonation.d.ts +10 -10
- package/dist/daemon/utils/git-impersonation.d.ts.map +1 -1
- package/dist/daemon/utils/git-remote-credential-scan.d.ts +3 -3
- package/dist/daemon/utils/git-remote-credential-scan.d.ts.map +1 -1
- package/dist/daemon/utils/git-remote-credential-scan.js +6 -2
- package/dist/daemon/utils/mcp-token-authorization.d.ts +18 -13
- package/dist/daemon/utils/mcp-token-authorization.d.ts.map +1 -1
- package/dist/daemon/utils/mcp-token-authorization.js +11 -5
- package/dist/daemon/utils/open-source-telemetry-config.d.ts +6 -0
- package/dist/daemon/utils/open-source-telemetry-config.d.ts.map +1 -0
- package/dist/daemon/utils/open-source-telemetry-config.js +21 -0
- package/dist/daemon/utils/open-source-telemetry-heartbeat.d.ts +7 -0
- package/dist/daemon/utils/open-source-telemetry-heartbeat.d.ts.map +1 -0
- package/dist/daemon/utils/open-source-telemetry-heartbeat.js +15 -0
- package/dist/daemon/utils/open-source-telemetry-usage.d.ts +9 -0
- package/dist/daemon/utils/open-source-telemetry-usage.d.ts.map +1 -0
- package/dist/daemon/utils/open-source-telemetry-usage.js +121 -0
- package/dist/daemon/utils/realign-repo-origin.d.ts +3 -3
- package/dist/daemon/utils/realign-repo-origin.d.ts.map +1 -1
- package/dist/daemon/utils/realign-repo-origin.js +47 -16
- package/dist/daemon/utils/realtime-publish.d.ts +2 -0
- package/dist/daemon/utils/realtime-publish.d.ts.map +1 -1
- package/dist/daemon/utils/realtime-publish.js +51 -10
- package/dist/daemon/utils/session-state-hooks.d.ts +3 -3
- package/dist/daemon/utils/session-state-hooks.d.ts.map +1 -1
- package/dist/daemon/utils/session-turn-lock.d.ts +8 -1
- package/dist/daemon/utils/session-turn-lock.d.ts.map +1 -1
- package/dist/daemon/utils/session-turn-lock.js +25 -2
- package/dist/daemon/utils/spawn-executor.d.ts +23 -1
- package/dist/daemon/utils/spawn-executor.d.ts.map +1 -1
- package/dist/daemon/utils/spawn-executor.js +34 -4
- package/dist/daemon/utils/tenant-db-scope.d.ts +20 -0
- package/dist/daemon/utils/tenant-db-scope.d.ts.map +1 -0
- package/dist/daemon/utils/tenant-db-scope.js +114 -0
- package/dist/daemon/utils/unix-group-init.d.ts +3 -3
- package/dist/daemon/utils/unix-group-init.d.ts.map +1 -1
- package/dist/daemon/utils/upload.d.ts +6 -9
- package/dist/daemon/utils/upload.d.ts.map +1 -1
- package/dist/daemon/utils/upload.js +30 -37
- package/dist/daemon/widgets/env-vars/index.d.ts +26 -1
- package/dist/daemon/widgets/env-vars/index.d.ts.map +1 -1
- package/dist/daemon/widgets/env-vars/index.js +145 -21
- package/dist/daemon/widgets/index.js +137 -21
- package/dist/executor/commands/environment.d.ts.map +1 -1
- package/dist/executor/commands/environment.js +9 -5
- package/dist/executor/commands/git.js +1 -1
- package/dist/executor/git/index.d.ts +8 -0
- package/dist/executor/git/index.d.ts.map +1 -0
- package/dist/executor/git/index.js +7 -0
- package/dist/executor/handlers/sdk/base-executor.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/base-executor.js +4 -1
- package/dist/executor/handlers/sdk/git-safe-directory.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/git-safe-directory.js +1 -1
- package/dist/executor/sdk-handlers/base/diff-enrichment.js +1 -1
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +6 -10
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/codex-tool.js +12 -15
- package/dist/executor/sdk-handlers/codex/normalizer.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/normalizer.js +11 -1
- package/dist/executor/sdk-handlers/codex/pricing/litellm-openai-model-prices.json +3663 -0
- package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.d.ts +31 -0
- package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.d.ts.map +1 -0
- package/dist/executor/sdk-handlers/codex/pricing/litellm-pricing.js +46 -0
- package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/prompt-service.js +61 -6
- package/dist/executor/sdk-handlers/codex/usage.d.ts +14 -23
- package/dist/executor/sdk-handlers/codex/usage.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/usage.js +18 -33
- package/dist/executor/services/feathers-client.js +5 -5
- package/dist/git/index.cjs +1101 -0
- package/dist/git/index.d.ts +533 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +1022 -0
- package/dist/git/package.json +21 -0
- package/dist/git/pure.cjs +185 -0
- package/dist/git/pure.d.ts +39 -0
- package/dist/git/pure.d.ts.map +1 -0
- package/dist/git/pure.js +139 -0
- package/dist/ui/assets/AgorEmojiPickerInner-DQjr8M3_.js +1 -0
- package/dist/ui/assets/App-hJtcOxHv.js +5 -0
- package/dist/ui/assets/App-hJtcOxHv.js.gz +0 -0
- package/dist/ui/assets/AppNode-BhuMpn8O.js +1 -0
- package/dist/ui/assets/AppNode-BhuMpn8O.js.gz +0 -0
- package/dist/ui/assets/ArtifactConsentModal-oMMzRn8L.js +1 -0
- package/dist/ui/assets/ArtifactConsentModal-oMMzRn8L.js.gz +0 -0
- package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js +9 -0
- package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js.gz +0 -0
- package/dist/ui/assets/ArtifactNode-BzQcrwFS.js +9 -0
- package/dist/ui/assets/ArtifactNode-BzQcrwFS.js.gz +0 -0
- package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js +19 -0
- package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js.gz +0 -0
- package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js +34 -0
- package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js.gz +0 -0
- package/dist/ui/assets/CodeEditor.inner-Cuj6RuLL.js +7 -0
- package/dist/ui/assets/CodeEditor.inner-Cuj6RuLL.js.gz +0 -0
- package/dist/ui/assets/ConversationView-9-3ma1u-.js +1 -0
- package/dist/ui/assets/ConversationView-9-3ma1u-.js.gz +0 -0
- package/dist/ui/assets/EmbeddedTerminal-Lx5I9EOJ.js +2 -0
- package/dist/ui/assets/EmbeddedTerminal-Lx5I9EOJ.js.gz +0 -0
- package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js +24 -0
- package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js.gz +0 -0
- package/dist/ui/assets/{MarketingScreenshotPage-zv5RUCuV.js → MarketingScreenshotPage-CmDPBHOl.js} +2 -2
- package/dist/ui/assets/MarketingScreenshotPage-CmDPBHOl.js.gz +0 -0
- package/dist/ui/assets/MobileApp-BpgSG_gz.js +1 -0
- package/dist/ui/assets/MobileApp-BpgSG_gz.js.gz +0 -0
- package/dist/ui/assets/SessionCanvas-B6_mtlxK.js +13 -0
- package/dist/ui/assets/SessionCanvas-B6_mtlxK.js.gz +0 -0
- package/dist/ui/assets/{SessionCanvas-mEmYGZhC.css → SessionCanvas-Bh7Yg5dZ.css} +1 -1
- package/dist/ui/assets/SessionCanvas-Bh7Yg5dZ.css.gz +0 -0
- package/dist/ui/assets/{StreamdownDemoPage-wzWaqWwr.js → StreamdownDemoPage-okKKR2QH.js} +2 -2
- package/dist/ui/assets/StreamdownDemoPage-okKKR2QH.js.gz +0 -0
- package/dist/ui/assets/TerminalModal-D9jMGZXv.js +2 -0
- package/dist/ui/assets/TerminalModal-D9jMGZXv.js.gz +0 -0
- package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js +1 -0
- package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js.gz +0 -0
- package/dist/ui/assets/ThemedSyntaxHighlighter.inner-C1FdIHn0.js +1 -0
- package/dist/ui/assets/{antd-CfbbHJOz.js → antd-DT5ackd0.js} +5 -5
- package/dist/ui/assets/{antd-CfbbHJOz.js.gz → antd-DT5ackd0.js.gz} +0 -0
- package/dist/ui/assets/architecture-U656AL7Q-DMnxkQRZ.js +1 -0
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-DwTJGGoj.js +36 -0
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-DwTJGGoj.js.gz +0 -0
- package/dist/ui/assets/{blockDiagram-VD42YOAC-BhZaEN19.js → blockDiagram-VD42YOAC-Dh1_TVW2.js} +4 -4
- package/dist/ui/assets/blockDiagram-VD42YOAC-Dh1_TVW2.js.gz +0 -0
- package/dist/ui/assets/{c4Diagram-YG6GDRKO-Dk_UH-sY.js → c4Diagram-YG6GDRKO-B1e96AcB.js} +2 -2
- package/dist/ui/assets/c4Diagram-YG6GDRKO-B1e96AcB.js.gz +0 -0
- package/dist/ui/assets/channel-Jv4dT4S5.js +1 -0
- package/dist/ui/assets/{chunk-4BX2VUAB-XprbG2TG.js → chunk-4BX2VUAB-BODpCjJx.js} +1 -1
- package/dist/ui/assets/chunk-55IACEB6-lJXvUquf.js +1 -0
- package/dist/ui/assets/{chunk-ABZYJK2D-BJcrryHK.js → chunk-ABZYJK2D-DCTXWSzV.js} +3 -3
- package/dist/ui/assets/chunk-ABZYJK2D-DCTXWSzV.js.gz +0 -0
- package/dist/ui/assets/{chunk-AGHRB4JF-DvxmfbM0.js → chunk-AGHRB4JF-CbNphBjE.js} +1 -1
- package/dist/ui/assets/chunk-AGHRB4JF-CbNphBjE.js.gz +0 -0
- package/dist/ui/assets/{chunk-ATLVNIR6-DbeJ0OrR.js → chunk-ATLVNIR6-rWg3qxof.js} +1 -1
- package/dist/ui/assets/chunk-ATLVNIR6-rWg3qxof.js.gz +0 -0
- package/dist/ui/assets/{chunk-B4BG7PRW-C53q2ggf.js → chunk-B4BG7PRW-CgtLCbpE.js} +3 -3
- package/dist/ui/assets/chunk-B4BG7PRW-CgtLCbpE.js.gz +0 -0
- package/dist/ui/assets/{chunk-CVBHYZKI-B3EBSlb3.js → chunk-CVBHYZKI-DTL6Zgr0.js} +1 -1
- package/dist/ui/assets/{chunk-DI55MBZ5-vIyNEQN-.js → chunk-DI55MBZ5-Dwvx2Kva.js} +1 -1
- package/dist/ui/assets/chunk-DI55MBZ5-Dwvx2Kva.js.gz +0 -0
- package/dist/ui/assets/chunk-EXTU4WIE-DHyaqTsP.js +1 -0
- package/dist/ui/assets/{chunk-FMBD7UC4-rddmfK-Z.js → chunk-FMBD7UC4-BogA_9CV.js} +1 -1
- package/dist/ui/assets/{chunk-HN2XXSSU-Dttqcg3b.js → chunk-HN2XXSSU-2blQO3Gb.js} +1 -1
- package/dist/ui/assets/chunk-HN2XXSSU-2blQO3Gb.js.gz +0 -0
- package/dist/ui/assets/chunk-JA3XYJ7Z-Cr1rmOui.js +11 -0
- package/dist/ui/assets/chunk-JA3XYJ7Z-Cr1rmOui.js.gz +0 -0
- package/dist/ui/assets/{chunk-JZLCHNYA-EUmx2y4H.js → chunk-JZLCHNYA-BsgZ79Fa.js} +5 -5
- package/dist/ui/assets/chunk-JZLCHNYA-BsgZ79Fa.js.gz +0 -0
- package/dist/ui/assets/{chunk-MI3HLSF2-65n9Mkyc.js → chunk-MI3HLSF2-dwYeUy5S.js} +1 -1
- package/dist/ui/assets/chunk-MI3HLSF2-dwYeUy5S.js.gz +0 -0
- package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js +2 -0
- package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js.gz +0 -0
- package/dist/ui/assets/{chunk-QN33PNHL-DsRKK6NR.js → chunk-QN33PNHL-DxdIDCAa.js} +1 -1
- package/dist/ui/assets/{chunk-QXUST7PY-BCYnMiS3.js → chunk-QXUST7PY-BCK2V0i-.js} +2 -2
- package/dist/ui/assets/chunk-QXUST7PY-BCK2V0i-.js.gz +0 -0
- package/dist/ui/assets/chunk-QZHKN3VN-CALjGrEE.js +1 -0
- package/dist/ui/assets/chunk-S3R3BYOJ-GP3zIxrB.js +2 -0
- package/dist/ui/assets/chunk-S3R3BYOJ-GP3zIxrB.js.gz +0 -0
- package/dist/ui/assets/{chunk-TZMSLE5B-BuQUQcTr.js → chunk-TZMSLE5B-dX5RaM6g.js} +1 -1
- package/dist/ui/assets/chunk-TZMSLE5B-dX5RaM6g.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-C3_RVP70.js +1 -0
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-C3_RVP70.js +1 -0
- package/dist/ui/assets/constants-GjIDNVyt.js +1 -0
- package/dist/ui/assets/{cose-bilkent-S5V4N54A-CnPB3ARO.js → cose-bilkent-S5V4N54A-Dx0BJVDl.js} +1 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-Dx0BJVDl.js.gz +0 -0
- package/dist/ui/assets/{dagre-6UL2VRFP-DhS-k_Se.js → dagre-6UL2VRFP-DiQSUxqN.js} +1 -1
- package/dist/ui/assets/dagre-6UL2VRFP-DiQSUxqN.js.gz +0 -0
- package/dist/ui/assets/{dagre-KgLoHEuy.js → dagre-Bekd9Vdj.js} +1 -1
- package/dist/ui/assets/dagre-Bekd9Vdj.js.gz +0 -0
- package/dist/ui/assets/diagram-PSM6KHXK-DtJnDQjc.js +24 -0
- package/dist/ui/assets/diagram-PSM6KHXK-DtJnDQjc.js.gz +0 -0
- package/dist/ui/assets/{diagram-QEK2KX5R-BPCitvbo.js → diagram-QEK2KX5R-CobkCRdj.js} +1 -1
- package/dist/ui/assets/diagram-QEK2KX5R-CobkCRdj.js.gz +0 -0
- package/dist/ui/assets/{diagram-S2PKOQOG-NW4uK6sx.js → diagram-S2PKOQOG-DHEZYivc.js} +1 -1
- package/dist/ui/assets/diagram-S2PKOQOG-DHEZYivc.js.gz +0 -0
- package/dist/ui/assets/editor-DQIG-JYZ.js +43 -0
- package/dist/ui/assets/editor-DQIG-JYZ.js.gz +0 -0
- package/dist/ui/assets/emoji-B0hLmSLZ.js +3 -0
- package/dist/ui/assets/emoji-B0hLmSLZ.js.gz +0 -0
- package/dist/ui/assets/{erDiagram-Q2GNP2WA-me1fboaf.js → erDiagram-Q2GNP2WA-BVNeTZPQ.js} +2 -2
- package/dist/ui/assets/erDiagram-Q2GNP2WA-BVNeTZPQ.js.gz +0 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-C73VFdyk.js +162 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-C73VFdyk.js.gz +0 -0
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-B_RosuD1.js +267 -0
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-B_RosuD1.js.gz +0 -0
- package/dist/ui/assets/{gitGraph-F6HP7TQM-CfFE_uAC.js → gitGraph-F6HP7TQM-DMFIqn4h.js} +1 -1
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-hxbgwNA1.js +65 -0
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-hxbgwNA1.js.gz +0 -0
- package/dist/ui/assets/index-DTz1Dif6.js +64 -0
- package/dist/ui/assets/index-DTz1Dif6.js.gz +0 -0
- package/dist/ui/assets/{index-DxuPq13l.css → index-qkT7Qqm2.css} +1 -1
- package/dist/ui/assets/index-qkT7Qqm2.css.gz +0 -0
- package/dist/ui/assets/{info-NVLQJR56-i_xHYg3f.js → info-NVLQJR56-DZ3K-w48.js} +1 -1
- package/dist/ui/assets/{infoDiagram-ER5ION4S-2NL93b78.js → infoDiagram-ER5ION4S-CxnBJQu6.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-CZF-2DHU.js → journeyDiagram-XKPGCS4Q-CHYNj-f8.js} +3 -3
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CHYNj-f8.js.gz +0 -0
- package/dist/ui/assets/{kanban-definition-3W4ZIXB7-CfvJIOny.js → kanban-definition-3W4ZIXB7-DQPCCsj2.js} +1 -1
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-DQPCCsj2.js.gz +0 -0
- package/dist/ui/assets/{line-DDv8kOJk.js → line-DBRjKmfa.js} +1 -1
- package/dist/ui/assets/{linear-Daef-l29.js → linear-DFao5Wyp.js} +1 -1
- package/dist/ui/assets/linear-DFao5Wyp.js.gz +0 -0
- package/dist/ui/assets/{mermaid-parser.core-CdK9QgYV.js → mermaid-parser.core-DYCfacHj.js} +2 -2
- package/dist/ui/assets/mermaid-parser.core-DYCfacHj.js.gz +0 -0
- package/dist/ui/assets/mermaid.core-C6xGFSdE.js +11 -0
- package/dist/ui/assets/mermaid.core-C6xGFSdE.js.gz +0 -0
- package/dist/ui/assets/{mindmap-definition-VGOIOE7T-Cb3QMflX.js → mindmap-definition-VGOIOE7T-L3Pw-YM7.js} +1 -1
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-L3Pw-YM7.js.gz +0 -0
- package/dist/ui/assets/{packet-BFZMPI3H-Bm2uwz4i.js → packet-BFZMPI3H-CpL6iNoa.js} +1 -1
- package/dist/ui/assets/{particles-DsJFOarW.js → particles-CT8hcJOA.js} +1 -1
- package/dist/ui/assets/particles-CT8hcJOA.js.gz +0 -0
- package/dist/ui/assets/{pie-7BOR55EZ-5i17tVnF.js → pie-7BOR55EZ-hTqChbTo.js} +1 -1
- package/dist/ui/assets/{pieDiagram-ADFJNKIX-BxIwQWvw.js → pieDiagram-ADFJNKIX-Bf4Nou75.js} +1 -1
- package/dist/ui/assets/pieDiagram-ADFJNKIX-Bf4Nou75.js.gz +0 -0
- package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-B5HPe4ga.js → quadrantDiagram-AYHSOK5B-DpjUTLB1.js} +3 -3
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DpjUTLB1.js.gz +0 -0
- package/dist/ui/assets/{radar-NHE76QYJ-BTn-tq0k.js → radar-NHE76QYJ-myy7OENC.js} +1 -1
- package/dist/ui/assets/reactflow-Cubtnk8i.js +2 -0
- package/dist/ui/assets/reactflow-Cubtnk8i.js.gz +0 -0
- package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-YfI6llkX.js → requirementDiagram-UZGBJVZJ-Bfrfh-0-.js} +1 -1
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-Bfrfh-0-.js.gz +0 -0
- package/dist/ui/assets/{sandpack-D7koO5op.js → sandpack-C58bwfIS.js} +38 -38
- package/dist/ui/assets/sandpack-C58bwfIS.js.gz +0 -0
- package/dist/ui/assets/sandpackDefaults-Bkga8XAE.js +1 -0
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-ClZAZ6va.js +10 -0
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-ClZAZ6va.js.gz +0 -0
- package/dist/ui/assets/{sequenceDiagram-WL72ISMW-DAe4Um17.js → sequenceDiagram-WL72ISMW-CNgly63p.js} +6 -6
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-CNgly63p.js.gz +0 -0
- package/dist/ui/assets/src-DAeyG22O.js +34 -0
- package/dist/ui/assets/src-DAeyG22O.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BrEAoDpE.js +1 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BrEAoDpE.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-BNL52_oN.js +1 -0
- package/dist/ui/assets/streamdown-BdAVfkeF.js +521 -0
- package/dist/ui/assets/streamdown-BdAVfkeF.js.gz +0 -0
- package/dist/ui/assets/syntax-BOfTnQiy.js +9 -0
- package/dist/ui/assets/syntax-BOfTnQiy.js.gz +0 -0
- package/dist/ui/assets/{timeline-definition-IT6M3QCI-D6P5txjT.js → timeline-definition-IT6M3QCI-CaRH3k4l.js} +16 -16
- package/dist/ui/assets/timeline-definition-IT6M3QCI-CaRH3k4l.js.gz +0 -0
- package/dist/ui/assets/{treemap-KMMF4GRG-Bitm3gy4.js → treemap-KMMF4GRG-CUaLOV_B.js} +1 -1
- package/dist/ui/assets/{useUserLocalStorage-Ckb8HsIw.js → useUserLocalStorage-C8sgXgXR.js} +1 -1
- package/dist/ui/assets/useUserLocalStorage-C8sgXgXR.js.gz +0 -0
- package/dist/ui/assets/{xychartDiagram-PRI3JC2R-CsybjUbd.js → xychartDiagram-PRI3JC2R-BlhkI9T_.js} +1 -1
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-BlhkI9T_.js.gz +0 -0
- package/dist/ui/index.html +10 -11
- package/dist/ui/index.html.gz +0 -0
- package/package.json +6 -5
- package/scripts/postinstall.js +27 -19
- package/dist/cli/commands/daemon/sync.d.ts.map +0 -1
- package/dist/ui/assets/App-DcEY8Ota.js +0 -3
- package/dist/ui/assets/App-DcEY8Ota.js.gz +0 -0
- package/dist/ui/assets/ArtifactConsentModal-CiCbK9iv.js +0 -1
- package/dist/ui/assets/ArtifactConsentModal-CiCbK9iv.js.gz +0 -0
- package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js +0 -9
- package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js.gz +0 -0
- package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js +0 -18
- package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js.gz +0 -0
- package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js +0 -34
- package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js.gz +0 -0
- package/dist/ui/assets/CodeEditor.inner-DBgsP4tn.js +0 -8
- package/dist/ui/assets/CodeEditor.inner-DBgsP4tn.js.gz +0 -0
- package/dist/ui/assets/ConversationView-CUWR0gR6.js +0 -1
- package/dist/ui/assets/ConversationView-CUWR0gR6.js.gz +0 -0
- package/dist/ui/assets/KnowledgePage-B2bzlXfn.js +0 -24
- package/dist/ui/assets/KnowledgePage-B2bzlXfn.js.gz +0 -0
- package/dist/ui/assets/MarketingScreenshotPage-zv5RUCuV.js.gz +0 -0
- package/dist/ui/assets/MobileApp-VgVnsnsN.js +0 -1
- package/dist/ui/assets/MobileApp-VgVnsnsN.js.gz +0 -0
- package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js +0 -20
- package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js.gz +0 -0
- package/dist/ui/assets/SessionCanvas-mEmYGZhC.css.gz +0 -0
- package/dist/ui/assets/StreamdownDemoPage-wzWaqWwr.js.gz +0 -0
- package/dist/ui/assets/ThemeSwitcher-Dly2y9pi.js +0 -1
- package/dist/ui/assets/ThemeSwitcher-Dly2y9pi.js.gz +0 -0
- package/dist/ui/assets/architecture-U656AL7Q-CykGFbQU.js +0 -1
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-C8HXAenz.js +0 -36
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-C8HXAenz.js.gz +0 -0
- package/dist/ui/assets/blockDiagram-VD42YOAC-BhZaEN19.js.gz +0 -0
- package/dist/ui/assets/c4Diagram-YG6GDRKO-Dk_UH-sY.js.gz +0 -0
- package/dist/ui/assets/channel-D6_nUWlW.js +0 -1
- package/dist/ui/assets/chunk-55IACEB6-ByzqIgSb.js +0 -1
- package/dist/ui/assets/chunk-ABZYJK2D-BJcrryHK.js.gz +0 -0
- package/dist/ui/assets/chunk-AGHRB4JF-DvxmfbM0.js.gz +0 -0
- package/dist/ui/assets/chunk-ATLVNIR6-DbeJ0OrR.js.gz +0 -0
- package/dist/ui/assets/chunk-B4BG7PRW-C53q2ggf.js.gz +0 -0
- package/dist/ui/assets/chunk-DI55MBZ5-vIyNEQN-.js.gz +0 -0
- package/dist/ui/assets/chunk-EXTU4WIE-B3ObkuOm.js +0 -1
- package/dist/ui/assets/chunk-HN2XXSSU-Dttqcg3b.js.gz +0 -0
- package/dist/ui/assets/chunk-JA3XYJ7Z-DbNDev3D.js +0 -11
- package/dist/ui/assets/chunk-JA3XYJ7Z-DbNDev3D.js.gz +0 -0
- package/dist/ui/assets/chunk-JZLCHNYA-EUmx2y4H.js.gz +0 -0
- package/dist/ui/assets/chunk-MI3HLSF2-65n9Mkyc.js.gz +0 -0
- package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js +0 -2
- package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js.gz +0 -0
- package/dist/ui/assets/chunk-QXUST7PY-BCYnMiS3.js.gz +0 -0
- package/dist/ui/assets/chunk-QZHKN3VN-HucAw4xW.js +0 -1
- package/dist/ui/assets/chunk-S3R3BYOJ-CWMEa9Dc.js +0 -2
- package/dist/ui/assets/chunk-S3R3BYOJ-CWMEa9Dc.js.gz +0 -0
- package/dist/ui/assets/chunk-TZMSLE5B-BuQUQcTr.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-CUT3rPTB.js +0 -1
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-CUT3rPTB.js +0 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-CnPB3ARO.js.gz +0 -0
- package/dist/ui/assets/dagre-6UL2VRFP-DhS-k_Se.js.gz +0 -0
- package/dist/ui/assets/dagre-KgLoHEuy.js.gz +0 -0
- package/dist/ui/assets/diagram-PSM6KHXK-BZg3MJmb.js +0 -24
- package/dist/ui/assets/diagram-PSM6KHXK-BZg3MJmb.js.gz +0 -0
- package/dist/ui/assets/diagram-QEK2KX5R-BPCitvbo.js.gz +0 -0
- package/dist/ui/assets/diagram-S2PKOQOG-NW4uK6sx.js.gz +0 -0
- package/dist/ui/assets/editor-CzFWIUw2.js +0 -39
- package/dist/ui/assets/editor-CzFWIUw2.js.gz +0 -0
- package/dist/ui/assets/emoji-Dkz4Zzv_.js +0 -3
- package/dist/ui/assets/emoji-Dkz4Zzv_.js.gz +0 -0
- package/dist/ui/assets/erDiagram-Q2GNP2WA-me1fboaf.js.gz +0 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-DzE8dGsh.js +0 -162
- package/dist/ui/assets/flowDiagram-NV44I4VS-DzE8dGsh.js.gz +0 -0
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-CFQD09Mi.js +0 -267
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-CFQD09Mi.js.gz +0 -0
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CaVoxU4C.js +0 -65
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CaVoxU4C.js.gz +0 -0
- package/dist/ui/assets/index-BN5_Qq7R.js +0 -324
- package/dist/ui/assets/index-BN5_Qq7R.js.gz +0 -0
- package/dist/ui/assets/index-DxuPq13l.css.gz +0 -0
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CZF-2DHU.js.gz +0 -0
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-CfvJIOny.js.gz +0 -0
- package/dist/ui/assets/katex-CamJ39w1.js +0 -257
- package/dist/ui/assets/katex-CamJ39w1.js.gz +0 -0
- package/dist/ui/assets/linear-Daef-l29.js.gz +0 -0
- package/dist/ui/assets/mermaid-parser.core-CdK9QgYV.js.gz +0 -0
- package/dist/ui/assets/mermaid.core-D6GS9mU-.js +0 -11
- package/dist/ui/assets/mermaid.core-D6GS9mU-.js.gz +0 -0
- package/dist/ui/assets/message-SqLqNYcv.js +0 -36
- package/dist/ui/assets/message-SqLqNYcv.js.gz +0 -0
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-Cb3QMflX.js.gz +0 -0
- package/dist/ui/assets/particles-DsJFOarW.js.gz +0 -0
- package/dist/ui/assets/pieDiagram-ADFJNKIX-BxIwQWvw.js.gz +0 -0
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-B5HPe4ga.js.gz +0 -0
- package/dist/ui/assets/reactflow-Bf74ngoo.js +0 -2
- package/dist/ui/assets/reactflow-Bf74ngoo.js.gz +0 -0
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-YfI6llkX.js.gz +0 -0
- package/dist/ui/assets/sandpack-D7koO5op.js.gz +0 -0
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DOk_B10B.js +0 -10
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DOk_B10B.js.gz +0 -0
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-DAe4Um17.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-CCesDu_C.js +0 -1
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-CCesDu_C.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-CMlIrsoO.js +0 -1
- package/dist/ui/assets/syntax-C-M-8jOU.js +0 -10
- package/dist/ui/assets/syntax-C-M-8jOU.js.gz +0 -0
- package/dist/ui/assets/theme-BQZdiqwv.js +0 -1
- package/dist/ui/assets/timeline-definition-IT6M3QCI-D6P5txjT.js.gz +0 -0
- package/dist/ui/assets/useUserLocalStorage-Ckb8HsIw.js.gz +0 -0
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-CsybjUbd.js.gz +0 -0
- /package/dist/cli/commands/{admin → local}/sync-unix.d.ts +0 -0
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
validateEnvVar
|
|
10
10
|
} from "@agor/core/config";
|
|
11
11
|
import {
|
|
12
|
+
and,
|
|
12
13
|
compare,
|
|
13
14
|
decryptApiKey,
|
|
14
15
|
deleteFrom,
|
|
@@ -20,15 +21,282 @@ import {
|
|
|
20
21
|
update,
|
|
21
22
|
users
|
|
22
23
|
} from "@agor/core/db";
|
|
23
|
-
import { Forbidden, NotAuthenticated } from "@agor/core/feathers";
|
|
24
|
-
import { isLikelyGitToken } from "@agor/core/git";
|
|
24
|
+
import { Forbidden as Forbidden2, NotAuthenticated } from "@agor/core/feathers";
|
|
25
|
+
import { isLikelyGitToken } from "@agor/core/git/pure";
|
|
25
26
|
import {
|
|
26
27
|
extractAgenticToolsPublicValues,
|
|
27
|
-
hasMinimumRole,
|
|
28
|
+
hasMinimumRole as hasMinimumRole2,
|
|
28
29
|
normalizeRole,
|
|
29
|
-
ROLES,
|
|
30
|
+
ROLES as ROLES2,
|
|
30
31
|
toAgenticToolsStatus
|
|
31
32
|
} from "@agor/core/types";
|
|
33
|
+
|
|
34
|
+
// src/services/user-avatar-sync.ts
|
|
35
|
+
import {
|
|
36
|
+
AppVariableRepository,
|
|
37
|
+
GatewayChannelRepository,
|
|
38
|
+
UsersRepository
|
|
39
|
+
} from "@agor/core/db";
|
|
40
|
+
import { Forbidden } from "@agor/core/feathers";
|
|
41
|
+
import { SlackConnector } from "@agor/core/gateway";
|
|
42
|
+
import { hasMinimumRole, ROLES } from "@agor/core/types";
|
|
43
|
+
var NAMESPACE = "user_avatars";
|
|
44
|
+
var SETTINGS_KEY = "settings";
|
|
45
|
+
var DEFAULT_SETTINGS = {
|
|
46
|
+
enabled: false,
|
|
47
|
+
provider: null,
|
|
48
|
+
gateway_channel_id: null
|
|
49
|
+
};
|
|
50
|
+
function isAdmin(params) {
|
|
51
|
+
return hasMinimumRole(params?.user?.role, ROLES.ADMIN);
|
|
52
|
+
}
|
|
53
|
+
function requireAdmin(params) {
|
|
54
|
+
if (params?.provider && !isAdmin(params)) {
|
|
55
|
+
throw new Forbidden("Only admins can manage user avatars");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function parseSettings(raw) {
|
|
59
|
+
if (!raw) return DEFAULT_SETTINGS;
|
|
60
|
+
try {
|
|
61
|
+
return { ...DEFAULT_SETTINGS, ...JSON.parse(raw) };
|
|
62
|
+
} catch {
|
|
63
|
+
return DEFAULT_SETTINGS;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function isUsableAvatarUrl(url) {
|
|
67
|
+
if (!url) return false;
|
|
68
|
+
try {
|
|
69
|
+
const parsed = new URL(url);
|
|
70
|
+
return parsed.protocol === "https:";
|
|
71
|
+
} catch {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
var UserAvatarSyncManager = class {
|
|
76
|
+
constructor(db, app) {
|
|
77
|
+
this.app = app;
|
|
78
|
+
this.variables = new AppVariableRepository(db);
|
|
79
|
+
this.gatewayChannels = new GatewayChannelRepository(db);
|
|
80
|
+
this.users = new UsersRepository(db);
|
|
81
|
+
}
|
|
82
|
+
variables;
|
|
83
|
+
gatewayChannels;
|
|
84
|
+
users;
|
|
85
|
+
async getSettings(params) {
|
|
86
|
+
requireAdmin(params);
|
|
87
|
+
const raw = await this.variables.getPlain(NAMESPACE, SETTINGS_KEY);
|
|
88
|
+
return parseSettings(raw);
|
|
89
|
+
}
|
|
90
|
+
async updateSettings(data, params) {
|
|
91
|
+
requireAdmin(params);
|
|
92
|
+
const current = await this.getSettings();
|
|
93
|
+
const next = {
|
|
94
|
+
...current,
|
|
95
|
+
...data,
|
|
96
|
+
provider: data.enabled === false ? null : data.provider ?? current.provider ?? "slack",
|
|
97
|
+
gateway_channel_id: data.enabled === false ? null : data.gateway_channel_id ?? current.gateway_channel_id
|
|
98
|
+
};
|
|
99
|
+
if (next.enabled && !next.gateway_channel_id) {
|
|
100
|
+
throw new Error("Select a Slack gateway channel before enabling Slack avatars");
|
|
101
|
+
}
|
|
102
|
+
await this.saveSettings(
|
|
103
|
+
next,
|
|
104
|
+
params?.user?.user_id
|
|
105
|
+
);
|
|
106
|
+
if (data.enabled === false) {
|
|
107
|
+
await this.clearSlackAvatars();
|
|
108
|
+
}
|
|
109
|
+
return next;
|
|
110
|
+
}
|
|
111
|
+
async syncAvatars(data = {}, params) {
|
|
112
|
+
requireAdmin(params);
|
|
113
|
+
const settings = await this.getSettings();
|
|
114
|
+
const gatewayChannelId = data.gateway_channel_id ?? settings.gateway_channel_id;
|
|
115
|
+
const result = data.user_id ? await this.refreshSingleUser(data.user_id, gatewayChannelId, {
|
|
116
|
+
mode: "single"
|
|
117
|
+
}) : await this.refreshAllUsers(gatewayChannelId);
|
|
118
|
+
const nextSettings = {
|
|
119
|
+
...settings,
|
|
120
|
+
enabled: true,
|
|
121
|
+
provider: "slack",
|
|
122
|
+
gateway_channel_id: gatewayChannelId ?? settings.gateway_channel_id,
|
|
123
|
+
last_sync_at: result.finished_at,
|
|
124
|
+
last_sync_result: result
|
|
125
|
+
};
|
|
126
|
+
await this.saveSettings(
|
|
127
|
+
nextSettings,
|
|
128
|
+
params?.user?.user_id
|
|
129
|
+
);
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
async refreshUserFromSettings(userId) {
|
|
133
|
+
const settings = await this.getSettings();
|
|
134
|
+
if (!settings.enabled || settings.provider !== "slack" || !settings.gateway_channel_id) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
return this.refreshSingleUser(userId, settings.gateway_channel_id, {
|
|
138
|
+
mode: "single"
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
async saveSettings(settings, updatedBy) {
|
|
142
|
+
await this.variables.set({
|
|
143
|
+
namespace: NAMESPACE,
|
|
144
|
+
key: SETTINGS_KEY,
|
|
145
|
+
value: JSON.stringify(settings),
|
|
146
|
+
content_type: "application/json",
|
|
147
|
+
updated_by: updatedBy ?? null
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
async clearSlackAvatars() {
|
|
151
|
+
const allUsers = await this.users.findAll();
|
|
152
|
+
const slackUsers = allUsers.filter((user) => user.avatar_source === "slack");
|
|
153
|
+
await Promise.all(
|
|
154
|
+
slackUsers.map(
|
|
155
|
+
(user) => this.app.service("users").patch(
|
|
156
|
+
user.user_id,
|
|
157
|
+
{
|
|
158
|
+
avatar_url: null,
|
|
159
|
+
avatar: null,
|
|
160
|
+
avatar_source: null,
|
|
161
|
+
avatar_source_id: null,
|
|
162
|
+
avatar_synced_at: null
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
skipAvatarRefresh: true,
|
|
166
|
+
user: {
|
|
167
|
+
user_id: "user-avatars-service",
|
|
168
|
+
email: "user-avatars@agor.internal",
|
|
169
|
+
role: ROLES.ADMIN,
|
|
170
|
+
_isServiceAccount: true
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
)
|
|
174
|
+
)
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
async getSlackGateway(gatewayChannelId) {
|
|
178
|
+
if (!gatewayChannelId) throw new Error("Select a Slack gateway channel first");
|
|
179
|
+
const channel = await this.gatewayChannels.findById(gatewayChannelId);
|
|
180
|
+
if (!channel) throw new Error(`Gateway channel not found: ${gatewayChannelId}`);
|
|
181
|
+
if (channel.channel_type !== "slack") throw new Error("Selected gateway channel is not Slack");
|
|
182
|
+
if (!channel.config?.bot_token || typeof channel.config.bot_token !== "string") {
|
|
183
|
+
throw new Error("Selected Slack gateway is missing a bot token");
|
|
184
|
+
}
|
|
185
|
+
return channel;
|
|
186
|
+
}
|
|
187
|
+
async refreshAllUsers(gatewayChannelId) {
|
|
188
|
+
const startedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
189
|
+
const channel = await this.getSlackGateway(gatewayChannelId);
|
|
190
|
+
const connector = new SlackConnector(channel.config);
|
|
191
|
+
const allUsers = await this.users.findAll();
|
|
192
|
+
let matched = 0;
|
|
193
|
+
let updated = 0;
|
|
194
|
+
let skipped = 0;
|
|
195
|
+
let failed = 0;
|
|
196
|
+
const failures = [];
|
|
197
|
+
for (const user of allUsers) {
|
|
198
|
+
try {
|
|
199
|
+
const one = await this.refreshUserWithConnector(user, connector);
|
|
200
|
+
matched += one.matched;
|
|
201
|
+
updated += one.updated;
|
|
202
|
+
skipped += one.skipped;
|
|
203
|
+
failed += one.failed;
|
|
204
|
+
failures.push(...one.failures);
|
|
205
|
+
} catch (error) {
|
|
206
|
+
failed += 1;
|
|
207
|
+
failures.push({
|
|
208
|
+
user_id: user.user_id,
|
|
209
|
+
email: user.email,
|
|
210
|
+
reason: error instanceof Error ? error.message : String(error)
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return {
|
|
215
|
+
ok: failed === 0,
|
|
216
|
+
mode: "bulk",
|
|
217
|
+
gateway_channel_id: channel.id,
|
|
218
|
+
started_at: startedAt,
|
|
219
|
+
finished_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
220
|
+
matched,
|
|
221
|
+
updated,
|
|
222
|
+
skipped,
|
|
223
|
+
failed,
|
|
224
|
+
failures
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
async refreshSingleUser(userId, gatewayChannelId, options) {
|
|
228
|
+
const startedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
229
|
+
const channel = await this.getSlackGateway(gatewayChannelId);
|
|
230
|
+
const connector = new SlackConnector(channel.config);
|
|
231
|
+
const user = await this.users.findById(userId);
|
|
232
|
+
if (!user) throw new Error(`User not found: ${userId}`);
|
|
233
|
+
const one = await this.refreshUserWithConnector(user, connector);
|
|
234
|
+
return {
|
|
235
|
+
ok: one.failed === 0,
|
|
236
|
+
mode: options.mode,
|
|
237
|
+
gateway_channel_id: channel.id,
|
|
238
|
+
started_at: startedAt,
|
|
239
|
+
finished_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
240
|
+
...one
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
async refreshUserWithConnector(user, connector) {
|
|
244
|
+
if (!user.email) {
|
|
245
|
+
return { matched: 0, updated: 0, skipped: 1, failed: 0, failures: [] };
|
|
246
|
+
}
|
|
247
|
+
if (user.preferences?.use_slack_avatar === false) {
|
|
248
|
+
return { matched: 0, updated: 0, skipped: 1, failed: 0, failures: [] };
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const profile = await connector.lookupUserAvatarByEmail(user.email);
|
|
252
|
+
if (!profile) {
|
|
253
|
+
return { matched: 0, updated: 0, skipped: 1, failed: 0, failures: [] };
|
|
254
|
+
}
|
|
255
|
+
if (!isUsableAvatarUrl(profile.avatarUrl)) {
|
|
256
|
+
return { matched: 1, updated: 0, skipped: 1, failed: 0, failures: [] };
|
|
257
|
+
}
|
|
258
|
+
await this.app.service("users").patch(
|
|
259
|
+
user.user_id,
|
|
260
|
+
{
|
|
261
|
+
avatar_url: profile.avatarUrl,
|
|
262
|
+
avatar_source: "slack",
|
|
263
|
+
avatar_source_id: profile.slackUserId,
|
|
264
|
+
avatar_synced_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
skipAvatarRefresh: true,
|
|
268
|
+
// users.patch has field-level/profile ownership hooks even for
|
|
269
|
+
// internal calls. Avatar sync is an admin-only service action, so
|
|
270
|
+
// carry an internal service user through the hook chain rather than
|
|
271
|
+
// bypassing the users service and losing Feathers events.
|
|
272
|
+
user: {
|
|
273
|
+
user_id: "user-avatars-service",
|
|
274
|
+
email: "user-avatars@agor.internal",
|
|
275
|
+
role: ROLES.ADMIN,
|
|
276
|
+
_isServiceAccount: true
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
);
|
|
280
|
+
return { matched: 1, updated: 1, skipped: 0, failed: 0, failures: [] };
|
|
281
|
+
} catch (error) {
|
|
282
|
+
return {
|
|
283
|
+
matched: 0,
|
|
284
|
+
updated: 0,
|
|
285
|
+
skipped: 0,
|
|
286
|
+
failed: 1,
|
|
287
|
+
failures: [
|
|
288
|
+
{
|
|
289
|
+
user_id: user.user_id,
|
|
290
|
+
email: user.email,
|
|
291
|
+
reason: error instanceof Error ? error.message : String(error)
|
|
292
|
+
}
|
|
293
|
+
]
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
// src/services/users.ts
|
|
32
300
|
function optionalNonNegativeInteger(value) {
|
|
33
301
|
if (value === void 0 || value === null || value === "") return void 0;
|
|
34
302
|
const numeric = typeof value === "number" ? value : Number(value);
|
|
@@ -40,18 +308,44 @@ function queryString(value) {
|
|
|
40
308
|
const trimmed = value.trim();
|
|
41
309
|
return trimmed.length > 0 ? trimmed : void 0;
|
|
42
310
|
}
|
|
311
|
+
function usersTableHasTenantColumn() {
|
|
312
|
+
return "tenant_id" in users;
|
|
313
|
+
}
|
|
314
|
+
function tenantPredicate(params) {
|
|
315
|
+
const tenantId = params?.tenant?.tenant_id;
|
|
316
|
+
if (!tenantId || !usersTableHasTenantColumn()) return void 0;
|
|
317
|
+
return eq(users.tenant_id, tenantId);
|
|
318
|
+
}
|
|
319
|
+
function withTenantPredicate(params, predicate) {
|
|
320
|
+
const tenant = tenantPredicate(params);
|
|
321
|
+
return tenant ? and(predicate, tenant) : predicate;
|
|
322
|
+
}
|
|
323
|
+
function tenantInsertValues(params) {
|
|
324
|
+
const tenantId = params?.tenant?.tenant_id;
|
|
325
|
+
return tenantId && usersTableHasTenantColumn() ? { tenant_id: tenantId } : {};
|
|
326
|
+
}
|
|
43
327
|
var LOCAL_AUTH_LOOKUP_PARAM = Symbol("agor.users.local-auth-lookup");
|
|
328
|
+
var AUTH_INTERNAL_USER_LOOKUP_PARAM = Symbol("agor.users.auth-internal-lookup");
|
|
44
329
|
function markLocalAuthenticationLookup(params) {
|
|
45
330
|
params[LOCAL_AUTH_LOOKUP_PARAM] = true;
|
|
46
331
|
}
|
|
332
|
+
function markAuthenticationUserLookup(params) {
|
|
333
|
+
params[AUTH_INTERNAL_USER_LOOKUP_PARAM] = true;
|
|
334
|
+
}
|
|
47
335
|
function isLocalAuthenticationLookup(params) {
|
|
48
336
|
return params?.[LOCAL_AUTH_LOOKUP_PARAM] === true;
|
|
49
337
|
}
|
|
338
|
+
function isAuthenticationUserLookup(params) {
|
|
339
|
+
return params?.[AUTH_INTERNAL_USER_LOOKUP_PARAM] === true;
|
|
340
|
+
}
|
|
341
|
+
function shouldIncludeAuthMetadata(params, includePassword = false) {
|
|
342
|
+
return includePassword || !params?.provider || isAuthenticationUserLookup(params);
|
|
343
|
+
}
|
|
50
344
|
function isServiceAccount(params) {
|
|
51
345
|
return !!params?.user?._isServiceAccount;
|
|
52
346
|
}
|
|
53
|
-
function
|
|
54
|
-
return
|
|
347
|
+
function isAdmin2(params) {
|
|
348
|
+
return hasMinimumRole2(params?.user?.role, ROLES2.ADMIN);
|
|
55
349
|
}
|
|
56
350
|
function isSelfEmailLookup(params, email) {
|
|
57
351
|
const requesterEmail = params?.user?.email;
|
|
@@ -62,10 +356,10 @@ function ensureCanExactEmailLookup(params, email) {
|
|
|
62
356
|
if (!params?.user) {
|
|
63
357
|
throw new NotAuthenticated("Authentication required");
|
|
64
358
|
}
|
|
65
|
-
if (isServiceAccount(params) ||
|
|
359
|
+
if (isServiceAccount(params) || isAdmin2(params) || isSelfEmailLookup(params, email)) {
|
|
66
360
|
return;
|
|
67
361
|
}
|
|
68
|
-
throw new
|
|
362
|
+
throw new Forbidden2("Exact email user lookup is restricted");
|
|
69
363
|
}
|
|
70
364
|
function applyAgenticToolsPatch(current, patch) {
|
|
71
365
|
const next = { ...current };
|
|
@@ -94,8 +388,18 @@ function applyAgenticToolsPatch(current, patch) {
|
|
|
94
388
|
return next;
|
|
95
389
|
}
|
|
96
390
|
var UsersService = class {
|
|
97
|
-
constructor(db) {
|
|
391
|
+
constructor(db, app) {
|
|
98
392
|
this.db = db;
|
|
393
|
+
if (app) {
|
|
394
|
+
this.avatarSync = new UserAvatarSyncManager(db, app);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
avatarSync;
|
|
398
|
+
requireAvatarSync() {
|
|
399
|
+
if (!this.avatarSync) {
|
|
400
|
+
throw new Error("User avatar sync is not available in this service context");
|
|
401
|
+
}
|
|
402
|
+
return this.avatarSync;
|
|
99
403
|
}
|
|
100
404
|
/**
|
|
101
405
|
* Find all users.
|
|
@@ -116,10 +420,10 @@ var UsersService = class {
|
|
|
116
420
|
let rows;
|
|
117
421
|
if (email) {
|
|
118
422
|
ensureCanExactEmailLookup(params, email);
|
|
119
|
-
const row = await select(this.db).from(users).where(eq(users.email, email)).one();
|
|
423
|
+
const row = await select(this.db).from(users).where(withTenantPredicate(params, eq(users.email, email))).one();
|
|
120
424
|
rows = row ? [row] : [];
|
|
121
425
|
} else {
|
|
122
|
-
rows = await select(this.db).from(users).all();
|
|
426
|
+
rows = tenantPredicate(params) ? await select(this.db).from(users).where(tenantPredicate(params)).all() : await select(this.db).from(users).all();
|
|
123
427
|
}
|
|
124
428
|
rows = rows.sort(
|
|
125
429
|
(a, b) => a.email.localeCompare(b.email) || a.user_id.localeCompare(b.user_id)
|
|
@@ -137,7 +441,10 @@ var UsersService = class {
|
|
|
137
441
|
const skip = optionalNonNegativeInteger(rawQuery.$skip) ?? optionalNonNegativeInteger(rawQuery.skip) ?? optionalNonNegativeInteger(rawQuery.offset) ?? 0;
|
|
138
442
|
const limit = optionalNonNegativeInteger(rawQuery.$limit) ?? optionalNonNegativeInteger(rawQuery.limit);
|
|
139
443
|
const pageRows = limit === void 0 ? rows.slice(skip) : rows.slice(skip, skip + Math.max(limit, 0));
|
|
140
|
-
const
|
|
444
|
+
const includeAuthMetadata = shouldIncludeAuthMetadata(params, includePassword);
|
|
445
|
+
const results = pageRows.map(
|
|
446
|
+
(row) => this.rowToUser(row, includePassword, requesterId, includeAuthMetadata)
|
|
447
|
+
);
|
|
141
448
|
return {
|
|
142
449
|
total,
|
|
143
450
|
limit: limit ?? results.length,
|
|
@@ -149,26 +456,26 @@ var UsersService = class {
|
|
|
149
456
|
* Get user by ID
|
|
150
457
|
*/
|
|
151
458
|
async get(id, params) {
|
|
152
|
-
const row = await select(this.db).from(users).where(eq(users.user_id, id)).one();
|
|
459
|
+
const row = await select(this.db).from(users).where(withTenantPredicate(params, eq(users.user_id, id))).one();
|
|
153
460
|
if (!row) {
|
|
154
461
|
throw new Error(`User not found: ${id}`);
|
|
155
462
|
}
|
|
156
463
|
const requesterId = params?.user?.user_id;
|
|
157
|
-
return this.rowToUser(row, false, requesterId);
|
|
464
|
+
return this.rowToUser(row, false, requesterId, shouldIncludeAuthMetadata(params));
|
|
158
465
|
}
|
|
159
466
|
/**
|
|
160
467
|
* Create new user
|
|
161
468
|
*/
|
|
162
|
-
async create(data,
|
|
163
|
-
const existing = await select(this.db).from(users).where(eq(users.email, data.email)).one();
|
|
469
|
+
async create(data, params) {
|
|
470
|
+
const existing = await select(this.db).from(users).where(withTenantPredicate(params, eq(users.email, data.email))).one();
|
|
164
471
|
if (existing) {
|
|
165
472
|
throw new Error(`User with email ${data.email} already exists`);
|
|
166
473
|
}
|
|
167
474
|
const hashedPassword = await hash(data.password, 10);
|
|
168
475
|
const now = /* @__PURE__ */ new Date();
|
|
169
476
|
const user_id = generateId();
|
|
170
|
-
const role = data.role ||
|
|
171
|
-
const defaultEmoji = role ===
|
|
477
|
+
const role = data.role || ROLES2.MEMBER;
|
|
478
|
+
const defaultEmoji = role === ROLES2.ADMIN ? "\u2B50" : "\u{1F464}";
|
|
172
479
|
const row = await insert(this.db, users).values({
|
|
173
480
|
user_id,
|
|
174
481
|
email: data.email,
|
|
@@ -180,11 +487,16 @@ var UsersService = class {
|
|
|
180
487
|
must_change_password: data.must_change_password ?? false,
|
|
181
488
|
created_at: now,
|
|
182
489
|
updated_at: now,
|
|
490
|
+
...tenantInsertValues(params),
|
|
183
491
|
data: {
|
|
492
|
+
avatar_url: data.avatar_url ?? data.avatar ?? void 0,
|
|
493
|
+
avatar_source: data.avatar_source ?? (data.avatar_url ?? data.avatar ? "manual" : void 0),
|
|
494
|
+
avatar_source_id: data.avatar_source_id ?? void 0,
|
|
495
|
+
avatar_synced_at: data.avatar_synced_at ?? void 0,
|
|
184
496
|
preferences: {}
|
|
185
497
|
}
|
|
186
498
|
}).returning().one();
|
|
187
|
-
return this.rowToUser(row);
|
|
499
|
+
return this.rowToUser(row, false, void 0, shouldIncludeAuthMetadata(params));
|
|
188
500
|
}
|
|
189
501
|
/**
|
|
190
502
|
* Update user
|
|
@@ -194,6 +506,7 @@ var UsersService = class {
|
|
|
194
506
|
const updates = { updated_at: now };
|
|
195
507
|
if (data.password) {
|
|
196
508
|
updates.password = await hash(data.password, 10);
|
|
509
|
+
updates.tokens_valid_after = now;
|
|
197
510
|
updates.must_change_password = data.must_change_password ?? false;
|
|
198
511
|
} else if (data.must_change_password !== void 0) {
|
|
199
512
|
updates.must_change_password = data.must_change_password;
|
|
@@ -205,9 +518,9 @@ var UsersService = class {
|
|
|
205
518
|
if (data.unix_username !== void 0) updates.unix_username = data.unix_username;
|
|
206
519
|
if (data.onboarding_completed !== void 0)
|
|
207
520
|
updates.onboarding_completed = data.onboarding_completed;
|
|
208
|
-
if (data.avatar || data.preferences || data.agentic_tools || data.env_vars || data.env_var_scopes || data.default_agentic_config) {
|
|
209
|
-
const current = await this.get(id);
|
|
210
|
-
const currentRow = await select(this.db).from(users).where(eq(users.user_id, id)).one();
|
|
521
|
+
if (data.avatar_url !== void 0 || data.avatar !== void 0 || data.avatar_source !== void 0 || data.avatar_source_id !== void 0 || data.avatar_synced_at !== void 0 || data.preferences || data.agentic_tools || data.env_vars || data.env_var_scopes || data.default_agentic_config) {
|
|
522
|
+
const current = await this.get(id, params);
|
|
523
|
+
const currentRow = await select(this.db).from(users).where(withTenantPredicate(params, eq(users.user_id, id))).one();
|
|
211
524
|
const currentData = currentRow?.data;
|
|
212
525
|
const nextAgenticTools = data.agentic_tools ? applyAgenticToolsPatch(currentData?.agentic_tools ?? {}, data.agentic_tools) : currentData?.agentic_tools ?? {};
|
|
213
526
|
const normalizedExisting = normalizeStoredEnvMap(currentData?.env_vars);
|
|
@@ -264,8 +577,18 @@ var UsersService = class {
|
|
|
264
577
|
console.log(`\u{1F527} Updated scope for env var ${key}: ${scope}`);
|
|
265
578
|
}
|
|
266
579
|
}
|
|
580
|
+
const avatarUrlTouched = data.avatar_url !== void 0 || data.avatar !== void 0;
|
|
581
|
+
const avatarCleared = data.avatar_url === null || data.avatar === null;
|
|
582
|
+
const inferredManualAvatarSource = avatarUrlTouched && !avatarCleared && data.avatar_source === void 0;
|
|
583
|
+
const avatarSourceChangedAwayFromSlack = data.avatar_source !== void 0 && data.avatar_source !== null && data.avatar_source !== "slack";
|
|
267
584
|
updates.data = {
|
|
268
|
-
|
|
585
|
+
...currentData,
|
|
586
|
+
avatar_url: avatarCleared ? void 0 : data.avatar_url ?? data.avatar ?? current.avatar_url,
|
|
587
|
+
// Deprecated legacy alias: read for back-compat, stop writing it on avatar updates.
|
|
588
|
+
avatar: void 0,
|
|
589
|
+
avatar_source: data.avatar_source === null || avatarCleared ? void 0 : data.avatar_source !== void 0 ? data.avatar_source : inferredManualAvatarSource ? "manual" : current.avatar_source,
|
|
590
|
+
avatar_source_id: data.avatar_source_id === null || avatarCleared || inferredManualAvatarSource || avatarSourceChangedAwayFromSlack && data.avatar_source_id === void 0 ? void 0 : data.avatar_source_id ?? current.avatar_source_id,
|
|
591
|
+
avatar_synced_at: data.avatar_synced_at === null || avatarCleared || inferredManualAvatarSource || avatarSourceChangedAwayFromSlack && data.avatar_synced_at === void 0 ? void 0 : data.avatar_synced_at ?? current.avatar_synced_at,
|
|
269
592
|
preferences: data.preferences ?? current.preferences,
|
|
270
593
|
agentic_tools: Object.keys(nextAgenticTools).length > 0 ? nextAgenticTools : void 0,
|
|
271
594
|
env_vars: Object.keys(nextEnvVars).length > 0 ? nextEnvVars : void 0,
|
|
@@ -277,13 +600,13 @@ var UsersService = class {
|
|
|
277
600
|
throw new Error(`User not found: ${id}`);
|
|
278
601
|
}
|
|
279
602
|
const requesterId = params?.user?.user_id;
|
|
280
|
-
return this.rowToUser(row, false, requesterId);
|
|
603
|
+
return this.rowToUser(row, false, requesterId, shouldIncludeAuthMetadata(params));
|
|
281
604
|
}
|
|
282
605
|
/**
|
|
283
606
|
* Delete user
|
|
284
607
|
*/
|
|
285
|
-
async remove(id,
|
|
286
|
-
const user = await this.get(id);
|
|
608
|
+
async remove(id, params) {
|
|
609
|
+
const user = await this.get(id, params);
|
|
287
610
|
await deleteFrom(this.db, users).where(eq(users.user_id, id)).run();
|
|
288
611
|
return user;
|
|
289
612
|
}
|
|
@@ -386,11 +709,23 @@ var UsersService = class {
|
|
|
386
709
|
}
|
|
387
710
|
const isService = !!caller._isServiceAccount;
|
|
388
711
|
if (!isService && caller.user_id !== userId) {
|
|
389
|
-
throw new
|
|
712
|
+
throw new Forbidden2("Cannot access another user's git environment");
|
|
390
713
|
}
|
|
391
714
|
}
|
|
392
715
|
return resolveUserEnvironment(userId, this.db);
|
|
393
716
|
}
|
|
717
|
+
async getAvatarSettings(_data, params) {
|
|
718
|
+
return this.requireAvatarSync().getSettings(params);
|
|
719
|
+
}
|
|
720
|
+
async updateAvatarSettings(data, params) {
|
|
721
|
+
return this.requireAvatarSync().updateSettings(data, params);
|
|
722
|
+
}
|
|
723
|
+
async syncAvatars(data = {}, params) {
|
|
724
|
+
return this.requireAvatarSync().syncAvatars(data, params);
|
|
725
|
+
}
|
|
726
|
+
async refreshAvatarFromSettings(userId) {
|
|
727
|
+
return this.requireAvatarSync().refreshUserFromSettings(userId);
|
|
728
|
+
}
|
|
394
729
|
/**
|
|
395
730
|
* Convert database row to User type
|
|
396
731
|
*
|
|
@@ -403,7 +738,7 @@ var UsersService = class {
|
|
|
403
738
|
* including admins viewing someone else's profile — public values are
|
|
404
739
|
* omitted, since base URLs can leak internal hostnames.
|
|
405
740
|
*/
|
|
406
|
-
rowToUser(row, includePassword = false, requesterId) {
|
|
741
|
+
rowToUser(row, includePassword = false, requesterId, includeAuthMetadata = true) {
|
|
407
742
|
const data = row.data;
|
|
408
743
|
const normalizedEnvVars = normalizeStoredEnvMap(data.env_vars);
|
|
409
744
|
const envVarMetadata = Object.keys(normalizedEnvVars).length > 0 ? Object.fromEntries(
|
|
@@ -419,7 +754,11 @@ var UsersService = class {
|
|
|
419
754
|
emoji: row.emoji ?? void 0,
|
|
420
755
|
role: normalizeRole(row.role ?? void 0),
|
|
421
756
|
unix_username: row.unix_username ?? void 0,
|
|
757
|
+
avatar_url: data.avatar_url ?? data.avatar,
|
|
422
758
|
avatar: data.avatar,
|
|
759
|
+
avatar_source: data.avatar_source,
|
|
760
|
+
avatar_source_id: data.avatar_source_id,
|
|
761
|
+
avatar_synced_at: data.avatar_synced_at,
|
|
423
762
|
preferences: data.preferences,
|
|
424
763
|
onboarding_completed: !!row.onboarding_completed,
|
|
425
764
|
must_change_password: !!row.must_change_password,
|
|
@@ -436,6 +775,12 @@ var UsersService = class {
|
|
|
436
775
|
// Return default agentic config
|
|
437
776
|
default_agentic_config: data.default_agentic_config
|
|
438
777
|
};
|
|
778
|
+
if (includeAuthMetadata && row.tokens_valid_after) {
|
|
779
|
+
user.tokens_valid_after = new Date(row.tokens_valid_after);
|
|
780
|
+
}
|
|
781
|
+
if (includeAuthMetadata && "tenant_id" in row) {
|
|
782
|
+
user.tenant_id = row.tenant_id;
|
|
783
|
+
}
|
|
439
784
|
if (includePassword) {
|
|
440
785
|
user.password = row.password;
|
|
441
786
|
}
|
|
@@ -468,10 +813,15 @@ var UsersServiceWithAuth = class extends UsersService {
|
|
|
468
813
|
name: row.name ?? void 0,
|
|
469
814
|
emoji: row.emoji ?? void 0,
|
|
470
815
|
role: normalizeRole(row.role ?? void 0),
|
|
816
|
+
avatar_url: data.avatar_url ?? data.avatar,
|
|
471
817
|
avatar: data.avatar,
|
|
818
|
+
avatar_source: data.avatar_source,
|
|
819
|
+
avatar_source_id: data.avatar_source_id,
|
|
820
|
+
avatar_synced_at: data.avatar_synced_at,
|
|
472
821
|
preferences: data.preferences,
|
|
473
822
|
onboarding_completed: !!row.onboarding_completed,
|
|
474
823
|
must_change_password: !!row.must_change_password,
|
|
824
|
+
tokens_valid_after: row.tokens_valid_after ? new Date(row.tokens_valid_after) : void 0,
|
|
475
825
|
created_at: row.created_at,
|
|
476
826
|
updated_at: row.updated_at ?? void 0,
|
|
477
827
|
agentic_tools: toAgenticToolsStatus(data.agentic_tools),
|
|
@@ -479,13 +829,16 @@ var UsersServiceWithAuth = class extends UsersService {
|
|
|
479
829
|
};
|
|
480
830
|
}
|
|
481
831
|
};
|
|
482
|
-
function createUsersService(db) {
|
|
483
|
-
return new UsersServiceWithAuth(db);
|
|
832
|
+
function createUsersService(db, app) {
|
|
833
|
+
return new UsersServiceWithAuth(db, app);
|
|
484
834
|
}
|
|
485
835
|
export {
|
|
836
|
+
AUTH_INTERNAL_USER_LOOKUP_PARAM,
|
|
486
837
|
LOCAL_AUTH_LOOKUP_PARAM,
|
|
487
838
|
UsersService,
|
|
488
839
|
createUsersService,
|
|
840
|
+
isAuthenticationUserLookup,
|
|
489
841
|
isLocalAuthenticationLookup,
|
|
842
|
+
markAuthenticationUserLookup,
|
|
490
843
|
markLocalAuthenticationLookup
|
|
491
844
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zone-trigger.d.ts","sourceRoot":"","sources":["../../src/services/zone-trigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"zone-trigger.d.ts","sourceRoot":"","sources":["../../src/services/zone-trigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAKrF,MAAM,WAAW,6BAA6B;IAE5C,GAAG,EAAE,GAAG,CAAC;IAET,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IACzF,IAAI,EAAE;QACJ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,eAAe,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7E,CAAC;IACF,IAAI,EAAE,IAAI,CAAC;IACX,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ;AAID;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,6BAA6B,GACnC,OAAO,CAAC,8BAA8B,CAAC,CAsFzC"}
|
|
@@ -113,6 +113,13 @@ function generateTaskId() {
|
|
|
113
113
|
return Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
114
114
|
}
|
|
115
115
|
function findExecutorPath() {
|
|
116
|
+
const configuredPath = process.env.AGOR_EXECUTOR_PATH;
|
|
117
|
+
if (configuredPath) {
|
|
118
|
+
if (!existsSync(configuredPath)) {
|
|
119
|
+
throw new Error(`Configured AGOR_EXECUTOR_PATH does not exist: ${configuredPath}`);
|
|
120
|
+
}
|
|
121
|
+
return configuredPath;
|
|
122
|
+
}
|
|
116
123
|
const dirname = typeof __dirname !== "undefined" ? __dirname : path.dirname(fileURLToPath(import.meta.url));
|
|
117
124
|
const possiblePaths = [
|
|
118
125
|
path.join(dirname, "../executor/cli.js"),
|
|
@@ -412,12 +419,16 @@ function createServiceToken(jwtSecret, expiresIn, scope = {}) {
|
|
|
412
419
|
expiresIn || "5m"
|
|
413
420
|
);
|
|
414
421
|
}
|
|
415
|
-
function
|
|
422
|
+
function serviceTokenScopeForParams(params) {
|
|
423
|
+
const tenantId = params?.tenant?.tenant_id ?? params?.tenant_id ?? params?.user?.tenant_id;
|
|
424
|
+
return tenantId ? { tenant_id: tenantId } : {};
|
|
425
|
+
}
|
|
426
|
+
function generateSessionToken(app, scope = {}) {
|
|
416
427
|
const jwtSecret = app.settings.authentication?.secret;
|
|
417
428
|
if (!jwtSecret) {
|
|
418
429
|
throw new Error("JWT secret not configured in app settings");
|
|
419
430
|
}
|
|
420
|
-
return createServiceToken(jwtSecret);
|
|
431
|
+
return createServiceToken(jwtSecret, void 0, scope);
|
|
421
432
|
}
|
|
422
433
|
|
|
423
434
|
// src/utils/branch-inspect.ts
|
|
@@ -426,7 +437,8 @@ function isBranchInspectResult(value) {
|
|
|
426
437
|
}
|
|
427
438
|
async function inspectBranchViaExecutor(app, branchId, options = {}) {
|
|
428
439
|
const sessionToken = generateSessionToken(
|
|
429
|
-
app
|
|
440
|
+
app,
|
|
441
|
+
options.serviceTokenScope
|
|
430
442
|
);
|
|
431
443
|
const result = await runExecutorCommand(
|
|
432
444
|
{
|
|
@@ -506,7 +518,8 @@ async function fireAlwaysNewZoneTrigger(input) {
|
|
|
506
518
|
const asUser = db ? await resolveExecutorReadAsUser(db, user) : void 0;
|
|
507
519
|
const { currentSha, currentRef } = await inspectBranchViaExecutor(app, branch.branch_id, {
|
|
508
520
|
asUser,
|
|
509
|
-
logPrefix: `[zone-trigger ${branch.name}]
|
|
521
|
+
logPrefix: `[zone-trigger ${branch.name}]`,
|
|
522
|
+
serviceTokenScope: serviceTokenScopeForParams(params)
|
|
510
523
|
});
|
|
511
524
|
const newSession = await app.service("sessions").create(
|
|
512
525
|
{
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Precedence (first match wins):
|
|
10
10
|
* 1. process.env.AGOR_BUILD_SHA — Docker --build-arg, CI
|
|
11
|
-
* 2. <daemon-dist>/.build-info — written by
|
|
11
|
+
* 2. <daemon-dist>/.build-info — written by daemon build script
|
|
12
12
|
* 3. git rev-parse --short HEAD — local source installs
|
|
13
13
|
* 4. 'dev' — disables the version check entirely
|
|
14
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-info.d.ts","sourceRoot":"","sources":["../../src/setup/build-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,0EAA0E;IAC1E,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;CAC7C;AAID;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"build-info.d.ts","sourceRoot":"","sources":["../../src/setup/build-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,0EAA0E;IAC1E,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;CAC7C;AAID;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAyD9D;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEhE"}
|
|
@@ -14,7 +14,11 @@ function loadBuildInfo(importMetaUrl) {
|
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
const currentDir = dirname(fileURLToPath(importMetaUrl));
|
|
17
|
-
const candidates = [
|
|
17
|
+
const candidates = [
|
|
18
|
+
join(currentDir, ".build-info"),
|
|
19
|
+
join(currentDir, "../.build-info"),
|
|
20
|
+
join(currentDir, "../../.build-info")
|
|
21
|
+
];
|
|
18
22
|
for (const path of candidates) {
|
|
19
23
|
try {
|
|
20
24
|
const raw = readFileSync(path, "utf-8");
|