agent-tower 0.7.2-beta.7 → 0.7.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/app.d.ts.map +1 -1
- package/dist/app.js +4 -1
- package/dist/app.js.map +1 -1
- package/dist/app.test.js +80 -1
- package/dist/app.test.js.map +1 -1
- package/dist/cli.js +4 -10
- package/dist/cli.js.map +1 -1
- package/dist/core/container.d.ts +8 -0
- package/dist/core/container.d.ts.map +1 -1
- package/dist/core/container.js +42 -0
- package/dist/core/container.js.map +1 -1
- package/dist/core/event-bus.d.ts +2 -0
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js.map +1 -1
- package/dist/executors/__tests__/image-utils.test.d.ts +2 -0
- package/dist/executors/__tests__/image-utils.test.d.ts.map +1 -0
- package/dist/executors/__tests__/image-utils.test.js +25 -0
- package/dist/executors/__tests__/image-utils.test.js.map +1 -0
- package/dist/executors/base.executor.d.ts +2 -0
- package/dist/executors/base.executor.d.ts.map +1 -1
- package/dist/executors/base.executor.js +6 -0
- package/dist/executors/base.executor.js.map +1 -1
- package/dist/executors/image-utils.d.ts.map +1 -1
- package/dist/executors/image-utils.js +10 -8
- package/dist/executors/image-utils.js.map +1 -1
- package/dist/git/git-cli.d.ts +2 -0
- package/dist/git/git-cli.d.ts.map +1 -1
- package/dist/git/git-cli.js +2 -0
- package/dist/git/git-cli.js.map +1 -1
- package/dist/git/worktree.manager.d.ts +2 -1
- package/dist/git/worktree.manager.d.ts.map +1 -1
- package/dist/git/worktree.manager.js +18 -12
- package/dist/git/worktree.manager.js.map +1 -1
- package/dist/index.js +16 -31
- package/dist/index.js.map +1 -1
- package/dist/mcp/http-client.d.ts +1 -0
- package/dist/mcp/http-client.d.ts.map +1 -1
- package/dist/mcp/http-client.js +3 -0
- package/dist/mcp/http-client.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +15 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/sessions.js +2 -2
- package/dist/mcp/tools/sessions.js.map +1 -1
- package/dist/mcp/tools/workspaces.d.ts.map +1 -1
- package/dist/mcp/tools/workspaces.js +2 -1
- package/dist/mcp/tools/workspaces.js.map +1 -1
- package/dist/middleware/access-auth.d.ts +1 -0
- package/dist/middleware/access-auth.d.ts.map +1 -1
- package/dist/middleware/access-auth.js +1 -1
- package/dist/middleware/access-auth.js.map +1 -1
- package/dist/output/__tests__/text-block-lifecycle.test.d.ts +2 -0
- package/dist/output/__tests__/text-block-lifecycle.test.d.ts.map +1 -0
- package/dist/output/__tests__/text-block-lifecycle.test.js +241 -0
- package/dist/output/__tests__/text-block-lifecycle.test.js.map +1 -0
- package/dist/output/claude-code-parser.d.ts +3 -0
- package/dist/output/claude-code-parser.d.ts.map +1 -1
- package/dist/output/claude-code-parser.js +58 -7
- package/dist/output/claude-code-parser.js.map +1 -1
- package/dist/output/codex-parser.d.ts.map +1 -1
- package/dist/output/codex-parser.js +4 -6
- package/dist/output/codex-parser.js.map +1 -1
- package/dist/output/cursor-agent-parser.d.ts.map +1 -1
- package/dist/output/cursor-agent-parser.js +4 -0
- package/dist/output/cursor-agent-parser.js.map +1 -1
- package/dist/output/gemini-parser.d.ts +18 -0
- package/dist/output/gemini-parser.d.ts.map +1 -0
- package/dist/output/gemini-parser.js +91 -0
- package/dist/output/gemini-parser.js.map +1 -0
- package/dist/output/msg-store.d.ts +6 -0
- package/dist/output/msg-store.d.ts.map +1 -1
- package/dist/output/msg-store.js +17 -0
- package/dist/output/msg-store.js.map +1 -1
- package/dist/output/text-block-tracker.d.ts +29 -0
- package/dist/output/text-block-tracker.d.ts.map +1 -0
- package/dist/output/text-block-tracker.js +149 -0
- package/dist/output/text-block-tracker.js.map +1 -0
- package/dist/output/types.d.ts +9 -0
- package/dist/output/types.d.ts.map +1 -1
- package/dist/output/types.js +0 -4
- package/dist/output/types.js.map +1 -1
- package/dist/routes/__tests__/sessions-runtime.test.js +3 -0
- package/dist/routes/__tests__/sessions-runtime.test.js.map +1 -1
- package/dist/routes/__tests__/team-run-translations.test.d.ts +2 -0
- package/dist/routes/__tests__/team-run-translations.test.d.ts.map +1 -0
- package/dist/routes/__tests__/team-run-translations.test.js +418 -0
- package/dist/routes/__tests__/team-run-translations.test.js.map +1 -0
- package/dist/routes/__tests__/translations.test.d.ts +2 -0
- package/dist/routes/__tests__/translations.test.d.ts.map +1 -0
- package/dist/routes/__tests__/translations.test.js +286 -0
- package/dist/routes/__tests__/translations.test.js.map +1 -0
- package/dist/routes/__tests__/workspaces.test.js +140 -0
- package/dist/routes/__tests__/workspaces.test.js.map +1 -1
- package/dist/routes/conversations.d.ts.map +1 -1
- package/dist/routes/conversations.js +19 -2
- package/dist/routes/conversations.js.map +1 -1
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +2 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/sessions.d.ts.map +1 -1
- package/dist/routes/sessions.js +32 -3
- package/dist/routes/sessions.js.map +1 -1
- package/dist/routes/team-runs.d.ts.map +1 -1
- package/dist/routes/team-runs.js +84 -15
- package/dist/routes/team-runs.js.map +1 -1
- package/dist/routes/translations.d.ts +4 -0
- package/dist/routes/translations.d.ts.map +1 -0
- package/dist/routes/translations.js +148 -0
- package/dist/routes/translations.js.map +1 -0
- package/dist/routes/user-input-origin.d.ts +4 -0
- package/dist/routes/user-input-origin.d.ts.map +1 -0
- package/dist/routes/user-input-origin.js +7 -0
- package/dist/routes/user-input-origin.js.map +1 -0
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/routes/workspaces.js +32 -2
- package/dist/routes/workspaces.js.map +1 -1
- package/dist/runtime/__tests__/acp-driver-lifecycle.test.js +2 -2
- package/dist/runtime/__tests__/acp-driver-lifecycle.test.js.map +1 -1
- package/dist/runtime/__tests__/acp-driver-submission.test.d.ts +2 -0
- package/dist/runtime/__tests__/acp-driver-submission.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/acp-driver-submission.test.js +88 -0
- package/dist/runtime/__tests__/acp-driver-submission.test.js.map +1 -0
- package/dist/runtime/__tests__/acp-history-reconciler.test.js +244 -0
- package/dist/runtime/__tests__/acp-history-reconciler.test.js.map +1 -1
- package/dist/runtime/__tests__/acp-projector.test.js +36 -0
- package/dist/runtime/__tests__/acp-projector.test.js.map +1 -1
- package/dist/runtime/__tests__/claude-cli-control.test.js +20 -0
- package/dist/runtime/__tests__/claude-cli-control.test.js.map +1 -1
- package/dist/runtime/__tests__/cli-driver-submission.test.d.ts +2 -0
- package/dist/runtime/__tests__/cli-driver-submission.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/cli-driver-submission.test.js +61 -0
- package/dist/runtime/__tests__/cli-driver-submission.test.js.map +1 -0
- package/dist/runtime/__tests__/codex-cli-control.test.js +25 -0
- package/dist/runtime/__tests__/codex-cli-control.test.js.map +1 -1
- package/dist/runtime/acp/acp-driver.js +38 -1
- package/dist/runtime/acp/acp-driver.js.map +1 -1
- package/dist/runtime/acp/history-reconciler.d.ts.map +1 -1
- package/dist/runtime/acp/history-reconciler.js +95 -36
- package/dist/runtime/acp/history-reconciler.js.map +1 -1
- package/dist/runtime/acp/projector.d.ts +5 -2
- package/dist/runtime/acp/projector.d.ts.map +1 -1
- package/dist/runtime/acp/projector.js +50 -23
- package/dist/runtime/acp/projector.js.map +1 -1
- package/dist/runtime/claude-cli-control.d.ts +4 -1
- package/dist/runtime/claude-cli-control.d.ts.map +1 -1
- package/dist/runtime/claude-cli-control.js +3 -1
- package/dist/runtime/claude-cli-control.js.map +1 -1
- package/dist/runtime/cli-driver.js +21 -7
- package/dist/runtime/cli-driver.js.map +1 -1
- package/dist/runtime/cli-parser.d.ts.map +1 -1
- package/dist/runtime/cli-parser.js +3 -0
- package/dist/runtime/cli-parser.js.map +1 -1
- package/dist/runtime/codex-cli-control.d.ts +4 -1
- package/dist/runtime/codex-cli-control.d.ts.map +1 -1
- package/dist/runtime/codex-cli-control.js +9 -6
- package/dist/runtime/codex-cli-control.js.map +1 -1
- package/dist/runtime/codex-cli-projector.d.ts +1 -1
- package/dist/runtime/codex-cli-projector.d.ts.map +1 -1
- package/dist/runtime/codex-cli-projector.js +4 -2
- package/dist/runtime/codex-cli-projector.js.map +1 -1
- package/dist/runtime/contracts.d.ts +15 -2
- package/dist/runtime/contracts.d.ts.map +1 -1
- package/dist/runtime/runtime-coordinator.d.ts.map +1 -1
- package/dist/runtime/runtime-coordinator.js +34 -1
- package/dist/runtime/runtime-coordinator.js.map +1 -1
- package/dist/services/__tests__/conflict-admission.test.d.ts +2 -0
- package/dist/services/__tests__/conflict-admission.test.d.ts.map +1 -0
- package/dist/services/__tests__/conflict-admission.test.js +37 -0
- package/dist/services/__tests__/conflict-admission.test.js.map +1 -0
- package/dist/services/__tests__/conflict-recovery-key.test.d.ts +2 -0
- package/dist/services/__tests__/conflict-recovery-key.test.d.ts.map +1 -0
- package/dist/services/__tests__/conflict-recovery-key.test.js +143 -0
- package/dist/services/__tests__/conflict-recovery-key.test.js.map +1 -0
- package/dist/services/__tests__/message-delivery.integration.test.d.ts +2 -0
- package/dist/services/__tests__/message-delivery.integration.test.d.ts.map +1 -0
- package/dist/services/__tests__/message-delivery.integration.test.js +1137 -0
- package/dist/services/__tests__/message-delivery.integration.test.js.map +1 -0
- package/dist/services/__tests__/review-team-user-counterexamples.test.d.ts +2 -0
- package/dist/services/__tests__/review-team-user-counterexamples.test.d.ts.map +1 -0
- package/dist/services/__tests__/review-team-user-counterexamples.test.js +200 -0
- package/dist/services/__tests__/review-team-user-counterexamples.test.js.map +1 -0
- package/dist/services/__tests__/session-manager.lifecycle.test.js +37 -0
- package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
- package/dist/services/__tests__/session-manager.team-run.test.js +19 -2
- package/dist/services/__tests__/session-manager.team-run.test.js.map +1 -1
- package/dist/services/__tests__/team-initial-delivery.integration.test.d.ts +2 -0
- package/dist/services/__tests__/team-initial-delivery.integration.test.d.ts.map +1 -0
- package/dist/services/__tests__/team-initial-delivery.integration.test.js +469 -0
- package/dist/services/__tests__/team-initial-delivery.integration.test.js.map +1 -0
- package/dist/services/__tests__/team-reconciler.service.test.js +102 -101
- package/dist/services/__tests__/team-reconciler.service.test.js.map +1 -1
- package/dist/services/__tests__/team-room-delivery.test.d.ts +2 -0
- package/dist/services/__tests__/team-room-delivery.test.d.ts.map +1 -0
- package/dist/services/__tests__/team-room-delivery.test.js +670 -0
- package/dist/services/__tests__/team-room-delivery.test.js.map +1 -0
- package/dist/services/__tests__/team-user-delivery.integration.test.d.ts +2 -0
- package/dist/services/__tests__/team-user-delivery.integration.test.d.ts.map +1 -0
- package/dist/services/__tests__/team-user-delivery.integration.test.js +622 -0
- package/dist/services/__tests__/team-user-delivery.integration.test.js.map +1 -0
- package/dist/services/__tests__/translation-client.test.d.ts +2 -0
- package/dist/services/__tests__/translation-client.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-client.test.js +240 -0
- package/dist/services/__tests__/translation-client.test.js.map +1 -0
- package/dist/services/__tests__/translation-protection.test.d.ts +2 -0
- package/dist/services/__tests__/translation-protection.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-protection.test.js +156 -0
- package/dist/services/__tests__/translation-protection.test.js.map +1 -0
- package/dist/services/__tests__/translation-queue.test.d.ts +2 -0
- package/dist/services/__tests__/translation-queue.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-queue.test.js +277 -0
- package/dist/services/__tests__/translation-queue.test.js.map +1 -0
- package/dist/services/__tests__/translation-room-admission.test.d.ts +2 -0
- package/dist/services/__tests__/translation-room-admission.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-room-admission.test.js +371 -0
- package/dist/services/__tests__/translation-room-admission.test.js.map +1 -0
- package/dist/services/__tests__/translation-session-blocks.test.d.ts +2 -0
- package/dist/services/__tests__/translation-session-blocks.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-session-blocks.test.js +367 -0
- package/dist/services/__tests__/translation-session-blocks.test.js.map +1 -0
- package/dist/services/__tests__/translation-settings.service.test.d.ts +2 -0
- package/dist/services/__tests__/translation-settings.service.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-settings.service.test.js +154 -0
- package/dist/services/__tests__/translation-settings.service.test.js.map +1 -0
- package/dist/services/__tests__/translation.service.test.d.ts +2 -0
- package/dist/services/__tests__/translation.service.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation.service.test.js +480 -0
- package/dist/services/__tests__/translation.service.test.js.map +1 -0
- package/dist/services/access-auth.service.d.ts +1 -0
- package/dist/services/access-auth.service.d.ts.map +1 -1
- package/dist/services/access-auth.service.js +8 -0
- package/dist/services/access-auth.service.js.map +1 -1
- package/dist/services/attachment-context.d.ts +7 -1
- package/dist/services/attachment-context.d.ts.map +1 -1
- package/dist/services/attachment-context.js +23 -2
- package/dist/services/attachment-context.js.map +1 -1
- package/dist/services/conflict-admission.d.ts +37 -0
- package/dist/services/conflict-admission.d.ts.map +1 -0
- package/dist/services/conflict-admission.js +97 -0
- package/dist/services/conflict-admission.js.map +1 -0
- package/dist/services/conflict-resolution-context.d.ts +33 -0
- package/dist/services/conflict-resolution-context.d.ts.map +1 -0
- package/dist/services/conflict-resolution-context.js +434 -0
- package/dist/services/conflict-resolution-context.js.map +1 -0
- package/dist/services/message-delivery.service.d.ts +195 -0
- package/dist/services/message-delivery.service.d.ts.map +1 -0
- package/dist/services/message-delivery.service.js +956 -0
- package/dist/services/message-delivery.service.js.map +1 -0
- package/dist/services/project.service.d.ts +1 -1
- package/dist/services/session-manager.d.ts +94 -74
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +91 -17
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/task.service.d.ts +26 -20
- package/dist/services/task.service.d.ts.map +1 -1
- package/dist/services/task.service.js +9 -26
- package/dist/services/task.service.js.map +1 -1
- package/dist/services/team-room-delivery.d.ts +541 -0
- package/dist/services/team-room-delivery.d.ts.map +1 -0
- package/dist/services/team-room-delivery.js +123 -0
- package/dist/services/team-room-delivery.js.map +1 -0
- package/dist/services/team-run.service.d.ts +83 -0
- package/dist/services/team-run.service.d.ts.map +1 -1
- package/dist/services/team-run.service.js +207 -18
- package/dist/services/team-run.service.js.map +1 -1
- package/dist/services/team-scheduler.service.d.ts +3 -0
- package/dist/services/team-scheduler.service.d.ts.map +1 -1
- package/dist/services/team-scheduler.service.js +65 -11
- package/dist/services/team-scheduler.service.js.map +1 -1
- package/dist/services/team-task-input.d.ts +37 -0
- package/dist/services/team-task-input.d.ts.map +1 -0
- package/dist/services/team-task-input.js +98 -0
- package/dist/services/team-task-input.js.map +1 -0
- package/dist/services/team-task-input.service.d.ts +72 -0
- package/dist/services/team-task-input.service.d.ts.map +1 -0
- package/dist/services/team-task-input.service.js +205 -0
- package/dist/services/team-task-input.service.js.map +1 -0
- package/dist/services/translation-client.d.ts +31 -0
- package/dist/services/translation-client.d.ts.map +1 -0
- package/dist/services/translation-client.js +169 -0
- package/dist/services/translation-client.js.map +1 -0
- package/dist/services/translation-errors.d.ts +14 -0
- package/dist/services/translation-errors.d.ts.map +1 -0
- package/dist/services/translation-errors.js +16 -0
- package/dist/services/translation-errors.js.map +1 -0
- package/dist/services/translation-protection.d.ts +27 -0
- package/dist/services/translation-protection.d.ts.map +1 -0
- package/dist/services/translation-protection.js +547 -0
- package/dist/services/translation-protection.js.map +1 -0
- package/dist/services/translation-queue.d.ts +49 -0
- package/dist/services/translation-queue.d.ts.map +1 -0
- package/dist/services/translation-queue.js +211 -0
- package/dist/services/translation-queue.js.map +1 -0
- package/dist/services/translation-settings.service.d.ts +152 -0
- package/dist/services/translation-settings.service.d.ts.map +1 -0
- package/dist/services/translation-settings.service.js +174 -0
- package/dist/services/translation-settings.service.js.map +1 -0
- package/dist/services/translation.service.d.ts +168 -0
- package/dist/services/translation.service.d.ts.map +1 -0
- package/dist/services/translation.service.js +861 -0
- package/dist/services/translation.service.js.map +1 -0
- package/dist/services/workspace.service.d.ts +84 -93
- package/dist/services/workspace.service.d.ts.map +1 -1
- package/dist/services/workspace.service.js +69 -5
- package/dist/services/workspace.service.js.map +1 -1
- package/dist/socket/__tests__/socket-gateway.test.js +131 -1
- package/dist/socket/__tests__/socket-gateway.test.js.map +1 -1
- package/dist/socket/socket-gateway.d.ts +6 -0
- package/dist/socket/socket-gateway.d.ts.map +1 -1
- package/dist/socket/socket-gateway.js +312 -6
- package/dist/socket/socket-gateway.js.map +1 -1
- package/dist/utils/database-runtime.test.js +82 -5
- package/dist/utils/database-runtime.test.js.map +1 -1
- package/dist/utils/database-schema.d.ts +9 -0
- package/dist/utils/database-schema.d.ts.map +1 -0
- package/dist/utils/database-schema.js +434 -0
- package/dist/utils/database-schema.js.map +1 -0
- package/dist/utils/database-schema.test.d.ts +2 -0
- package/dist/utils/database-schema.test.d.ts.map +1 -0
- package/dist/utils/database-schema.test.js +359 -0
- package/dist/utils/database-schema.test.js.map +1 -0
- package/dist/utils/database-team-foundation.test.d.ts +2 -0
- package/dist/utils/database-team-foundation.test.d.ts.map +1 -0
- package/dist/utils/database-team-foundation.test.js +467 -0
- package/dist/utils/database-team-foundation.test.js.map +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +29 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/owned-child-process.test.js +6 -3
- package/dist/utils/owned-child-process.test.js.map +1 -1
- package/dist/utils/text-preview.d.ts +4 -0
- package/dist/utils/text-preview.d.ts.map +1 -0
- package/dist/utils/text-preview.js +21 -0
- package/dist/utils/text-preview.js.map +1 -0
- package/dist/web/assets/AgentDemoPage-BfXkNCdN.js +1 -0
- package/dist/web/assets/{AgentEnvironmentSettingsPage-SnxiaHvN.js → AgentEnvironmentSettingsPage-GHjKIWpb.js} +1 -1
- package/dist/web/assets/AttachmentPreview-CLN1lnLe.js +2 -0
- package/dist/web/assets/BranchSelect-Cofp8vYf.js +1 -0
- package/dist/web/assets/BrandLogo-BUimEX-9.js +1 -0
- package/dist/web/assets/ConversationPage-R7vNaOQv.js +1 -0
- package/dist/web/assets/CreateTaskInput-CasITF8y.js +1 -0
- package/dist/web/assets/{DemoPage-BHbnnZFF.js → DemoPage-DK-ikg1_.js} +3 -3
- package/dist/web/assets/DesignSystemPage-BhjNs2vP.js +12 -0
- package/dist/web/assets/EditableTaskTitle-BJ9Rxggf.js +70 -0
- package/dist/web/assets/{ExecutionPermissionSelector-DcC4IBOF.js → ExecutionPermissionSelector-B8befbxJ.js} +1 -1
- package/dist/web/assets/GeneralSettingsPage-RMN2al8I.js +1 -0
- package/dist/web/assets/{LoadingPreviewPage-dE_jyl19.js → LoadingPreviewPage-BDlf89rJ.js} +1 -1
- package/dist/web/assets/{McpSettingsPage-CIuQ4bvy.js → McpSettingsPage-CPNxFF67.js} +1 -1
- package/dist/web/assets/{MemberAvatar-BG0VDZKf.js → MemberAvatar-YVr_erAr.js} +1 -1
- package/dist/web/assets/MobileTaskDetail-QNUHMq7u.js +3 -0
- package/dist/web/assets/NotificationSettingsPage-BEyuyu3Z.js +1 -0
- package/dist/web/assets/ProfileSettingsPage-CHe4LlRp.js +3 -0
- package/dist/web/assets/ProjectKanbanPage-Bt_01giW.js +12 -0
- package/dist/web/assets/ProjectSettingsPage-cus6Ns97.js +2 -0
- package/dist/web/assets/{ProviderSettingsPage-DLq-GBxp.js → ProviderSettingsPage-DqA_B1Ey.js} +2 -2
- package/dist/web/assets/{SettingsMasterDetail-UfyoKAum.js → SettingsMasterDetail-DjWR9Sqk.js} +1 -1
- package/dist/web/assets/TaskDetail-rEXNe2h3.js +1 -0
- package/dist/web/assets/TeamSettingsPage-DwWROtW6.js +1 -0
- package/dist/web/assets/TranslationSettingsPage-Cod9c4Ug.js +1 -0
- package/dist/web/assets/arc-DEy33vTc.js +1 -0
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-BCNj6ZWE.js → architectureDiagram-3BPJPVTR-Ky1D1LBk.js} +1 -1
- package/dist/web/assets/{at-sign-C4VhWike.js → at-sign-C48_y345.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-D1kmB9gz.js → blockDiagram-GPEHLZMM-BNgB7kNT.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-DbWKTkSe.js → c4Diagram-AAUBKEIU-4GMrPMgQ.js} +1 -1
- package/dist/web/assets/channel-DTP-syjA.js +1 -0
- package/dist/web/assets/check-BmiJ7qMY.js +1 -0
- package/dist/web/assets/chevron-down-3y5Aiolp.js +1 -0
- package/dist/web/assets/{chevron-up-DOkDFvIc.js → chevron-up-DqaYcjpq.js} +1 -1
- package/dist/web/assets/{chunk-2J33WTMH-B3TA0-LD.js → chunk-2J33WTMH-C439hRe_.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-CvPTiBSV.js → chunk-4BX2VUAB-D8GK3M3t.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-xGe9Fu9Z.js → chunk-55IACEB6-Dl4UhJ8X.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-H8pz3amK.js → chunk-727SXJPM-BSEeayBq.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-BmYYNxcL.js → chunk-AQP2D5EJ-B6chbZfT.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-BmOEsLTE.js → chunk-FMBD7UC4-DaLkiLdQ.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-C5MfA0xc.js → chunk-ND2GUHAM-DeQwZAAT.js} +1 -1
- package/dist/web/assets/{chunk-QZHKN3VN-BcrGYZ7V.js → chunk-QZHKN3VN-CLRr4YRM.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-CUKgurLa.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-CUKgurLa.js +1 -0
- package/dist/web/assets/code-block-OCS4YCEC-CnoxUpOx.js +2 -0
- package/dist/web/assets/confirm-dialog-ltNBFYCs.js +1 -0
- package/dist/web/assets/content-DPQMfMae.js +2 -0
- package/dist/web/assets/{copy-CdzVE3kf.js → copy-HRMhTkIG.js} +1 -1
- package/dist/web/assets/{cose-bilkent-S5V4N54A-CLQ-m71G.js → cose-bilkent-S5V4N54A-C1UiYzfk.js} +1 -1
- package/dist/web/assets/cssMode-DkuSsGeg.js +1 -0
- package/dist/web/assets/{dagre-BM42HDAG-CmDqxOfn.js → dagre-BM42HDAG-CTJpBgye.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-D-fSbEll.js → diagram-2AECGRRQ-Dj1_TEYp.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-HPywThAf.js → diagram-5GNKFQAL-V-KUpwqh.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-DAzLhllz.js → diagram-KO2AKTUF-CXG1ZIeX.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-DXYB9h8L.js → diagram-LMA3HP47-BZSJUwk9.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-vv4kz4Zo.js → diagram-OG6HWLK6-CCr4gq4u.js} +1 -1
- package/dist/web/assets/dialog-CuFEdqLg.js +5 -0
- package/dist/web/assets/{erDiagram-TEJ5UH35-Cu6aVKAa.js → erDiagram-TEJ5UH35-Djtyzh6z.js} +1 -1
- package/dist/web/assets/{flowDiagram-I6XJVG4X-BKDe8WSQ.js → flowDiagram-I6XJVG4X-BmSVSiXJ.js} +1 -1
- package/dist/web/assets/{freemarker2-DI2giuAo.js → freemarker2-DdptX5f1.js} +2 -2
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-DMVLzmAE.js → ganttDiagram-6RSMTGT7-r5vQX-b5.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-vogzYdKn.js → gitGraphDiagram-PVQCEYII-Zj9aloh9.js} +1 -1
- package/dist/web/assets/{globe-Rnn-nKw-.js → globe-B9I-jHBB.js} +1 -1
- package/dist/web/assets/handlebars-B34f-LAf.js +1 -0
- package/dist/web/assets/hooks-BLxb16IA.js +1 -0
- package/dist/web/assets/html-CnvOQ63o.js +1 -0
- package/dist/web/assets/htmlMode-RdxZ8Svp.js +1 -0
- package/dist/web/assets/{icon-button-CuSuXgr_.js → icon-button-CYiKa-7C.js} +1 -1
- package/dist/web/assets/index-0XPZayUU.css +1 -0
- package/dist/web/assets/index-B1oVmCie.js +1 -0
- package/dist/web/assets/index-BJObbxud.js +122 -0
- package/dist/web/assets/index-Bhvt-E6d.js +41 -0
- package/dist/web/assets/index-BtUQYU5l.js +1 -0
- package/dist/web/assets/index-CThFsQNP.js +1 -0
- package/dist/web/assets/index-DZLnTISJ.js +1 -0
- package/dist/web/assets/index-DcOU2m2F.js +1 -0
- package/dist/web/assets/{index-CMjLMilU.js → index-Dk3bRQAK.js} +1 -1
- package/dist/web/assets/{index-B88xAivn.js → index-DkRy6eNX.js} +5 -5
- package/dist/web/assets/{infoDiagram-5YYISTIA-CEfSHkNq.js → infoDiagram-5YYISTIA-BHtVaxZx.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-BXKZuWtD.js → ishikawaDiagram-YF4QCWOH-BYmwjkbC.js} +5 -5
- package/dist/web/assets/javascript-BhombDEO.js +1 -0
- package/dist/web/assets/{journeyDiagram-JHISSGLW-wsOUYlu7.js → journeyDiagram-JHISSGLW-c8BBqqRS.js} +1 -1
- package/dist/web/assets/jsonMode-BJGOUeaV.js +7 -0
- package/dist/web/assets/{kanban-definition-UN3LZRKU-DNsuvOrU.js → kanban-definition-UN3LZRKU-D4Vr-oFT.js} +1 -1
- package/dist/web/assets/{kbd-B3m64lRd.js → kbd-C88ut3t9.js} +1 -1
- package/dist/web/assets/{key-round-DpYSyeDH.js → key-round-Cjbj2qNa.js} +1 -1
- package/dist/web/assets/{layers-CxqMQVmH.js → layers-eaHAVcc3.js} +1 -1
- package/dist/web/assets/{linear-BmmCZdOQ.js → linear-opi90s0L.js} +1 -1
- package/dist/web/assets/{link-DbSpzB1w.js → link-BSGb85gq.js} +1 -1
- package/dist/web/assets/liquid-Czy1WpPz.js +1 -0
- package/dist/web/assets/{lspLanguageFeatures-WhdC7zdf.js → lspLanguageFeatures-DWu2Ubf0.js} +1 -1
- package/dist/web/assets/mdx-DhXfoSnM.js +1 -0
- package/dist/web/assets/menu--sjyisSg.js +1 -0
- package/dist/web/assets/{mermaid-NOHMQCX5-DmKVQY9m.js → mermaid-NOHMQCX5-BSNbBj78.js} +71 -71
- package/dist/web/assets/{message-square-CfNb-MTd.js → message-square-BLEJN6p7.js} +1 -1
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-0RzXjZ9G.js → mindmap-definition-RKZ34NQL-BN3ZjBh-.js} +1 -1
- package/dist/web/assets/{modal-Kpqn-nDO.js → modal-CSGOqphK.js} +1 -1
- package/dist/web/assets/{monaco-I1fXAMIt.js → monaco-BkuNyOkP.js} +3 -3
- package/dist/web/assets/{paperclip-BBrzKZQC.js → paperclip-CTNoXpUW.js} +1 -1
- package/dist/web/assets/{pencil-pzVKblxj.js → pencil-Cp70ZwtG.js} +1 -1
- package/dist/web/assets/{people-C6b3eeLq.js → people-DT78SebR.js} +1 -1
- package/dist/web/assets/{pieDiagram-4H26LBE5-Bcvzb8TW.js → pieDiagram-4H26LBE5-CfmFHpPI.js} +2 -2
- package/dist/web/assets/popover-BiVxGGgp.js +1 -0
- package/dist/web/assets/python-DIcQDjcf.js +1 -0
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-DwNhxMxj.js → quadrantDiagram-W4KKPZXB-CeaumJAa.js} +1 -1
- package/dist/web/assets/razor-DYK6Rxer.js +1 -0
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-D2wSGYn2.js → requirementDiagram-4Y6WPE33-BWWCDXCE.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-l3LLF--T.js → sankeyDiagram-5OEKKPKP-DAJut743.js} +1 -1
- package/dist/web/assets/search-DniD_AGC.js +1 -0
- package/dist/web/assets/search-field-CQLDXLeA.js +1 -0
- package/dist/web/assets/select-B5RYunTs.js +1 -0
- package/dist/web/assets/{select-DGwKE4l0.js → select-BPdJrr5M.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-BAGsbTS_.js → sequenceDiagram-3UESZ5HK-CynjRGW4.js} +1 -1
- package/dist/web/assets/{server-BIPZ9Ka-.js → server-xswxWpKD.js} +1 -1
- package/dist/web/assets/stateDiagram-AJRCARHV-amAtpx9w.js +1 -0
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-V-lSceg1.js +1 -0
- package/dist/web/assets/{textarea-Bnfq7adW.js → textarea-BVyPl9rM.js} +1 -1
- package/dist/web/assets/{timeline-definition-PNZ67QCA-Dt-DcRrG.js → timeline-definition-PNZ67QCA-DZ9W7WlP.js} +1 -1
- package/dist/web/assets/toggles-QcIz43DP.js +1 -0
- package/dist/web/assets/tooltip-CPqGK_WZ.js +1 -0
- package/dist/web/assets/{track-B_K578io.js → track-Ckye0-tt.js} +1 -1
- package/dist/web/assets/{trash-2-ALAYDudv.js → trash-2-CvUJsbtT.js} +1 -1
- package/dist/web/assets/tsMode-c5x0d47n.js +11 -0
- package/dist/web/assets/typescript-i7eYblLt.js +1 -0
- package/dist/web/assets/{upload-D7hKT2VA.js → upload-CsXAmAun.js} +1 -1
- package/dist/web/assets/{use-profiles-Ncqxdw7S.js → use-profiles-DuXaBRju.js} +1 -1
- package/dist/web/assets/{use-projects-Dwy9AfAG.js → use-projects-Ddz0knyr.js} +1 -1
- package/dist/web/assets/{use-providers-BRyZjuBG.js → use-providers-Td1-gyrN.js} +1 -1
- package/dist/web/assets/use-translation-settings-NYM0lmBx.js +1 -0
- package/dist/web/assets/use-workspaces-CdJZLmGh.js +1 -0
- package/dist/web/assets/useNormalizedLogs--RbVywYa.js +1 -0
- package/dist/web/assets/useTokenUsage-DDXf7E4p.js +1 -0
- package/dist/web/assets/{vennDiagram-CIIHVFJN-Cr55FtiY.js → vennDiagram-CIIHVFJN-CB2Ubvy9.js} +1 -1
- package/dist/web/assets/{wardley-L42UT6IY-CtwMk9MJ.js → wardley-L42UT6IY-BXOkk77I.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-BeyHmTu3.js → wardleyDiagram-YWT4CUSO-VA6ywdQQ.js} +1 -1
- package/dist/web/assets/xml-D2EGActB.js +1 -0
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-9g34Lq8E.js → xychartDiagram-2RQKCTM6-FNcvDj5G.js} +1 -1
- package/dist/web/assets/yaml-jeiIZSL4.js +1 -0
- package/dist/web/index.html +2 -2
- package/node_modules/@agent-tower/shared/dist/index.d.ts +1 -0
- package/node_modules/@agent-tower/shared/dist/index.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/index.js +1 -0
- package/node_modules/@agent-tower/shared/dist/index.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/log-adapter.d.ts +11 -0
- package/node_modules/@agent-tower/shared/dist/log-adapter.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/log-adapter.js +2 -0
- package/node_modules/@agent-tower/shared/dist/log-adapter.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/socket/events.d.ts +5 -2
- package/node_modules/@agent-tower/shared/dist/socket/events.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/socket/events.js +2 -0
- package/node_modules/@agent-tower/shared/dist/socket/events.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/translation.d.ts +306 -0
- package/node_modules/@agent-tower/shared/dist/translation.d.ts.map +1 -0
- package/node_modules/@agent-tower/shared/dist/translation.js +8 -0
- package/node_modules/@agent-tower/shared/dist/translation.js.map +1 -0
- package/node_modules/@agent-tower/shared/dist/types.d.ts +23 -0
- package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/prisma/migrations/20261016000000_add_translation_foundation/migration.sql +104 -0
- package/prisma/migrations/20261016010000_add_message_deliveries/migration.sql +158 -0
- package/prisma/migrations/20261019000000_add_room_translation_eligibility/migration.sql +3 -0
- package/prisma/migrations/20261019100000_add_team_delivery_foundation/migration.sql +217 -0
- package/prisma/schema.prisma +224 -0
- package/dist/web/assets/AgentDemoPage-CaR_Yk9_.js +0 -1
- package/dist/web/assets/BranchSelect-D-kqavDG.js +0 -1
- package/dist/web/assets/BrandLogo-CC1alVsd.js +0 -1
- package/dist/web/assets/ConversationPage-RWKLxe1j.js +0 -3
- package/dist/web/assets/CreateTaskInput-SHJ1YpRe.js +0 -1
- package/dist/web/assets/DesignSystemPage-ChCrzeKT.js +0 -12
- package/dist/web/assets/EditableTaskTitle-CGVeZUSt.js +0 -70
- package/dist/web/assets/GeneralSettingsPage-C_tkwpmF.js +0 -1
- package/dist/web/assets/MobileTaskDetail-DxE6ZDAS.js +0 -5
- package/dist/web/assets/NotificationSettingsPage-B-Ot2OMg.js +0 -1
- package/dist/web/assets/ProfileSettingsPage-Dn1lrjJr.js +0 -3
- package/dist/web/assets/ProjectKanbanPage-jcW8sA7x.js +0 -12
- package/dist/web/assets/ProjectSettingsPage-BFPty2eA.js +0 -2
- package/dist/web/assets/TaskDetail-a1jalILy.js +0 -3
- package/dist/web/assets/TeamSettingsPage-BxGc4W7K.js +0 -1
- package/dist/web/assets/arc-dhk0OSs5.js +0 -1
- package/dist/web/assets/channel-K0AG6Tl1.js +0 -1
- package/dist/web/assets/check-DYlb0A_N.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-BTJ44hwx.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-BTJ44hwx.js +0 -1
- package/dist/web/assets/code-block-OCS4YCEC-DLPrDBDy.js +0 -2
- package/dist/web/assets/confirm-dialog-BRkrtULz.js +0 -1
- package/dist/web/assets/content-DPCGELMz.js +0 -2
- package/dist/web/assets/cssMode-ChMyv9Nj.js +0 -1
- package/dist/web/assets/dialog-B_vC5R4B.js +0 -5
- package/dist/web/assets/handlebars-B9tmKQPV.js +0 -1
- package/dist/web/assets/hooks-DK4m7-FN.js +0 -1
- package/dist/web/assets/html-B_E2U0g5.js +0 -1
- package/dist/web/assets/htmlMode-DRHM_Cwq.js +0 -1
- package/dist/web/assets/index-B6Lvy5Sr.js +0 -1
- package/dist/web/assets/index-BCV57B4O.js +0 -41
- package/dist/web/assets/index-CTG-4w90.js +0 -1
- package/dist/web/assets/index-Cz73HpYH.js +0 -122
- package/dist/web/assets/index-CzvAGoau.css +0 -1
- package/dist/web/assets/index-DENY_U7o.js +0 -1
- package/dist/web/assets/index-ZO2tqdha.js +0 -1
- package/dist/web/assets/javascript-ClWqjgn3.js +0 -1
- package/dist/web/assets/jsonMode-DVAoDfae.js +0 -7
- package/dist/web/assets/liquid-CZf3xdoq.js +0 -1
- package/dist/web/assets/mdx-xzVEPP01.js +0 -1
- package/dist/web/assets/menu-0A0v_lRV.js +0 -1
- package/dist/web/assets/popover-BYz89aiY.js +0 -1
- package/dist/web/assets/python-DL05HvW4.js +0 -1
- package/dist/web/assets/razor-BCZ3_uDf.js +0 -1
- package/dist/web/assets/search-field-B5czD2Pl.js +0 -1
- package/dist/web/assets/select-yem-xN9Z.js +0 -1
- package/dist/web/assets/stateDiagram-AJRCARHV-C0BHmXYX.js +0 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Be3UCkeQ.js +0 -1
- package/dist/web/assets/toggles-DxNDJZsN.js +0 -1
- package/dist/web/assets/tooltip-CHOgkFbE.js +0 -1
- package/dist/web/assets/tsMode-kXxq-Lw7.js +0 -11
- package/dist/web/assets/typescript-E3_QcT_u.js +0 -1
- package/dist/web/assets/use-attachments-CK7y5KsN.js +0 -2
- package/dist/web/assets/use-workspaces-BBbahdwU.js +0 -1
- package/dist/web/assets/useNormalizedLogs-CRHRedwp.js +0 -1
- package/dist/web/assets/useTokenUsage-YwiF0xnT.js +0 -1
- package/dist/web/assets/xml-DxKND8qX.js +0 -1
- package/dist/web/assets/yaml-BqpCqTY6.js +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
2
3
|
import fs from 'node:fs';
|
|
3
4
|
import os from 'node:os';
|
|
4
5
|
import path from 'node:path';
|
|
@@ -24,6 +25,20 @@ let SessionManager;
|
|
|
24
25
|
let TEAM_ROOM_REPLY_REMINDER;
|
|
25
26
|
let createMcpServer;
|
|
26
27
|
let teamRunRoutes;
|
|
28
|
+
let accessAuthHook;
|
|
29
|
+
let agentCredentials;
|
|
30
|
+
const credentialByInvocation = new Map();
|
|
31
|
+
function agentHeaders(invocationId) {
|
|
32
|
+
const credential = credentialByInvocation.get(invocationId);
|
|
33
|
+
if (!credential)
|
|
34
|
+
throw new Error('Fixture credential missing');
|
|
35
|
+
return { 'x-agent-tower-invocation-id': invocationId, 'x-agent-tower-agent-credential': credential };
|
|
36
|
+
}
|
|
37
|
+
function authenticatedApp() {
|
|
38
|
+
const app = Fastify({ logger: false });
|
|
39
|
+
app.addHook('onRequest', accessAuthHook);
|
|
40
|
+
return app;
|
|
41
|
+
}
|
|
27
42
|
let workRequestSequence = 0;
|
|
28
43
|
let gitRepoSequence = 0;
|
|
29
44
|
const TEAM_RUN_MISMATCH_ERROR = 'team_run_id does not match the current TeamRun session.';
|
|
@@ -252,7 +267,7 @@ async function createRunningInvocation(options) {
|
|
|
252
267
|
status: 'COMPLETED',
|
|
253
268
|
},
|
|
254
269
|
});
|
|
255
|
-
|
|
270
|
+
const invocation = await prisma.agentInvocation.create({
|
|
256
271
|
data: {
|
|
257
272
|
teamRunId: options.teamRunId,
|
|
258
273
|
workRequestId: options.workRequestId,
|
|
@@ -263,6 +278,8 @@ async function createRunningInvocation(options) {
|
|
|
263
278
|
roomReplyReminderCount: options.roomReplyReminderCount ?? 0,
|
|
264
279
|
},
|
|
265
280
|
});
|
|
281
|
+
credentialByInvocation.set(invocation.id, agentCredentials.createAgentApiCredential({ sessionId: session.id, invocationId: invocation.id }));
|
|
282
|
+
return invocation;
|
|
266
283
|
}
|
|
267
284
|
describe('TeamReconcilerService', () => {
|
|
268
285
|
let lockService;
|
|
@@ -285,12 +302,18 @@ describe('TeamReconcilerService', () => {
|
|
|
285
302
|
TeamReconcilerService = reconcilerModule.TeamReconcilerService;
|
|
286
303
|
SessionManager = sessionManagerModule.SessionManager;
|
|
287
304
|
TEAM_ROOM_REPLY_REMINDER = reconcilerModule.TEAM_ROOM_REPLY_REMINDER;
|
|
288
|
-
|
|
305
|
+
accessAuthHook = (await import('../../middleware/access-auth.js')).accessAuthHook;
|
|
306
|
+
agentCredentials = await import('../../utils/agent-api-credential.js');
|
|
307
|
+
createMcpServer = (baseUrl, options = {}) => mcpServerModule.createMcpServer(baseUrl, {
|
|
308
|
+
...options, agentApiCredential: options.agentApiCredential ?? credentialByInvocation.get(process.env.AGENT_TOWER_INVOCATION_ID ?? ''),
|
|
309
|
+
});
|
|
289
310
|
teamRunRoutes = teamRunRoutesModule.teamRunRoutes;
|
|
290
311
|
});
|
|
291
312
|
beforeEach(async () => {
|
|
292
313
|
vi.restoreAllMocks();
|
|
293
314
|
workRequestSequence = 0;
|
|
315
|
+
credentialByInvocation.clear();
|
|
316
|
+
agentCredentials.clearAgentApiCredentials();
|
|
294
317
|
lockService = new TeamLockService();
|
|
295
318
|
scheduler = createSchedulerMock(lockService);
|
|
296
319
|
messenger = createMessengerMock();
|
|
@@ -2154,7 +2177,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2154
2177
|
memberId: members[0].id,
|
|
2155
2178
|
workspaceId: workspace.id,
|
|
2156
2179
|
});
|
|
2157
|
-
const app =
|
|
2180
|
+
const app = authenticatedApp();
|
|
2158
2181
|
try {
|
|
2159
2182
|
process.env.AGENT_TOWER_TEAM_RUN_ID = teamRun.id;
|
|
2160
2183
|
process.env.AGENT_TOWER_MEMBER_ID = members[0].id;
|
|
@@ -2312,7 +2335,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2312
2335
|
where: { id: agentMessage.id },
|
|
2313
2336
|
data: { createdAt: new Date('2026-01-01T00:00:02.000Z') },
|
|
2314
2337
|
});
|
|
2315
|
-
const app =
|
|
2338
|
+
const app = authenticatedApp();
|
|
2316
2339
|
try {
|
|
2317
2340
|
setTeamRunEnv({
|
|
2318
2341
|
AGENT_TOWER_TEAM_RUN_ID: teamRun.id,
|
|
@@ -2329,7 +2352,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2329
2352
|
const restListResponse = await app.inject({
|
|
2330
2353
|
method: 'GET',
|
|
2331
2354
|
url: `/api/team-runs/${teamRun.id}/messages`,
|
|
2332
|
-
headers:
|
|
2355
|
+
headers: agentHeaders(invocation.id),
|
|
2333
2356
|
});
|
|
2334
2357
|
expect(restListResponse.statusCode).toBe(200);
|
|
2335
2358
|
const restList = restListResponse.json();
|
|
@@ -2350,7 +2373,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2350
2373
|
const limitedRestListResponse = await app.inject({
|
|
2351
2374
|
method: 'GET',
|
|
2352
2375
|
url: `/api/team-runs/${teamRun.id}/messages?limit=1`,
|
|
2353
|
-
headers:
|
|
2376
|
+
headers: agentHeaders(invocation.id),
|
|
2354
2377
|
});
|
|
2355
2378
|
expect(limitedRestListResponse.statusCode).toBe(200);
|
|
2356
2379
|
expect(limitedRestListResponse.json().map((message) => message.id)).toEqual([
|
|
@@ -2359,7 +2382,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2359
2382
|
const restDetailResponse = await app.inject({
|
|
2360
2383
|
method: 'GET',
|
|
2361
2384
|
url: `/api/team-runs/${teamRun.id}/messages/${roomMessage.id}`,
|
|
2362
|
-
headers:
|
|
2385
|
+
headers: agentHeaders(invocation.id),
|
|
2363
2386
|
});
|
|
2364
2387
|
expect(restDetailResponse.statusCode).toBe(200);
|
|
2365
2388
|
expect(restDetailResponse.json()).toMatchObject({
|
|
@@ -2486,7 +2509,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2486
2509
|
where: { id: workspace.id },
|
|
2487
2510
|
data: { worktreePath: contextWorktreePath },
|
|
2488
2511
|
});
|
|
2489
|
-
const app =
|
|
2512
|
+
const app = authenticatedApp();
|
|
2490
2513
|
try {
|
|
2491
2514
|
delete process.env.AGENT_TOWER_TEAM_RUN_ID;
|
|
2492
2515
|
delete process.env.AGENT_TOWER_MEMBER_ID;
|
|
@@ -2503,7 +2526,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2503
2526
|
let server;
|
|
2504
2527
|
try {
|
|
2505
2528
|
process.chdir(contextWorktreePath);
|
|
2506
|
-
server = await createMcpServer(`http://127.0.0.1:${address.port}
|
|
2529
|
+
server = await createMcpServer(`http://127.0.0.1:${address.port}`, { agentApiCredential: credentialByInvocation.get(invocation.id) });
|
|
2507
2530
|
}
|
|
2508
2531
|
finally {
|
|
2509
2532
|
process.chdir(previousCwd);
|
|
@@ -2603,7 +2626,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2603
2626
|
workspaceId: workspace.id,
|
|
2604
2627
|
status: 'RUNNING',
|
|
2605
2628
|
});
|
|
2606
|
-
const app =
|
|
2629
|
+
const app = authenticatedApp();
|
|
2607
2630
|
try {
|
|
2608
2631
|
setTeamRunEnv({
|
|
2609
2632
|
AGENT_TOWER_TEAM_RUN_ID: teamRun.id,
|
|
@@ -2679,7 +2702,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2679
2702
|
workspaceId: workspace.id,
|
|
2680
2703
|
});
|
|
2681
2704
|
const routeScheduler = createRouteSchedulerMock();
|
|
2682
|
-
const app =
|
|
2705
|
+
const app = authenticatedApp();
|
|
2683
2706
|
try {
|
|
2684
2707
|
setTeamRunEnv({
|
|
2685
2708
|
AGENT_TOWER_TEAM_RUN_ID: teamRun.id,
|
|
@@ -2777,7 +2800,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2777
2800
|
memberId: observer.id,
|
|
2778
2801
|
workspaceId: workspace.id,
|
|
2779
2802
|
});
|
|
2780
|
-
const app =
|
|
2803
|
+
const app = authenticatedApp();
|
|
2781
2804
|
try {
|
|
2782
2805
|
await app.register(teamRunRoutes, { prefix: '/api' });
|
|
2783
2806
|
const privateMessageResponse = await app.inject({
|
|
@@ -2799,7 +2822,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2799
2822
|
method: 'GET',
|
|
2800
2823
|
url: `/api/team-runs/${teamRun.id}/members/${recipient.id}/work-requests`,
|
|
2801
2824
|
headers: {
|
|
2802
|
-
|
|
2825
|
+
...agentHeaders(observerInvocation.id),
|
|
2803
2826
|
},
|
|
2804
2827
|
});
|
|
2805
2828
|
expect(spoofedQueueResponse.statusCode).toBe(403);
|
|
@@ -2809,7 +2832,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2809
2832
|
method: 'GET',
|
|
2810
2833
|
url: `/api/team-runs/${teamRun.id}/members/${observer.id}/work-requests`,
|
|
2811
2834
|
headers: {
|
|
2812
|
-
|
|
2835
|
+
...agentHeaders(observerInvocation.id),
|
|
2813
2836
|
},
|
|
2814
2837
|
});
|
|
2815
2838
|
expect(ownQueueResponse.statusCode).toBe(200);
|
|
@@ -2837,14 +2860,14 @@ describe('TeamReconcilerService', () => {
|
|
|
2837
2860
|
memberId: actualSender.id,
|
|
2838
2861
|
workspaceId: workspace.id,
|
|
2839
2862
|
});
|
|
2840
|
-
const app =
|
|
2863
|
+
const app = authenticatedApp();
|
|
2841
2864
|
try {
|
|
2842
2865
|
await app.register(teamRunRoutes, { prefix: '/api' });
|
|
2843
2866
|
const forgedAgentResponse = await app.inject({
|
|
2844
2867
|
method: 'POST',
|
|
2845
2868
|
url: `/api/team-runs/${teamRun.id}/private-messages`,
|
|
2846
2869
|
headers: {
|
|
2847
|
-
|
|
2870
|
+
...agentHeaders(senderInvocation.id),
|
|
2848
2871
|
},
|
|
2849
2872
|
payload: {
|
|
2850
2873
|
content: 'Forged sender should be ignored',
|
|
@@ -2906,13 +2929,13 @@ describe('TeamReconcilerService', () => {
|
|
|
2906
2929
|
workspaceId: workspace.id,
|
|
2907
2930
|
status: 'COMPLETED',
|
|
2908
2931
|
});
|
|
2909
|
-
const app =
|
|
2932
|
+
const app = authenticatedApp();
|
|
2910
2933
|
try {
|
|
2911
2934
|
await app.register(teamRunRoutes, { prefix: '/api' });
|
|
2912
2935
|
const response = await app.inject({
|
|
2913
2936
|
method: 'POST',
|
|
2914
2937
|
url: `/api/team-runs/${teamRun.id}/private-messages`,
|
|
2915
|
-
headers:
|
|
2938
|
+
headers: agentHeaders(senderInvocation.id),
|
|
2916
2939
|
payload: {
|
|
2917
2940
|
content: 'Late terminal private result',
|
|
2918
2941
|
recipientMemberIds: [members[1].id],
|
|
@@ -2967,7 +2990,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2967
2990
|
memberId: observer.id,
|
|
2968
2991
|
workspaceId: workspace.id,
|
|
2969
2992
|
});
|
|
2970
|
-
const app =
|
|
2993
|
+
const app = authenticatedApp();
|
|
2971
2994
|
try {
|
|
2972
2995
|
await app.register(teamRunRoutes, { prefix: '/api' });
|
|
2973
2996
|
const response = await app.inject({
|
|
@@ -2999,7 +3022,7 @@ describe('TeamReconcilerService', () => {
|
|
|
2999
3022
|
method: 'GET',
|
|
3000
3023
|
url: `/api/team-runs/${teamRun.id}/messages`,
|
|
3001
3024
|
headers: {
|
|
3002
|
-
|
|
3025
|
+
...agentHeaders(senderInvocation.id),
|
|
3003
3026
|
},
|
|
3004
3027
|
});
|
|
3005
3028
|
expect(senderMessagesResponse.statusCode).toBe(200);
|
|
@@ -3008,7 +3031,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3008
3031
|
method: 'GET',
|
|
3009
3032
|
url: `/api/team-runs/${teamRun.id}/messages`,
|
|
3010
3033
|
headers: {
|
|
3011
|
-
|
|
3034
|
+
...agentHeaders(recipientInvocation.id),
|
|
3012
3035
|
},
|
|
3013
3036
|
});
|
|
3014
3037
|
expect(recipientMessagesResponse.statusCode).toBe(200);
|
|
@@ -3017,7 +3040,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3017
3040
|
method: 'GET',
|
|
3018
3041
|
url: `/api/team-runs/${teamRun.id}/messages`,
|
|
3019
3042
|
headers: {
|
|
3020
|
-
|
|
3043
|
+
...agentHeaders(observerInvocation.id),
|
|
3021
3044
|
},
|
|
3022
3045
|
});
|
|
3023
3046
|
expect(observerMessagesResponse.statusCode).toBe(200);
|
|
@@ -3026,7 +3049,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3026
3049
|
method: 'GET',
|
|
3027
3050
|
url: `/api/team-runs/${teamRun.id}/members/${observer.id}/work-requests`,
|
|
3028
3051
|
headers: {
|
|
3029
|
-
|
|
3052
|
+
...agentHeaders(observerInvocation.id),
|
|
3030
3053
|
},
|
|
3031
3054
|
});
|
|
3032
3055
|
expect(observerQueueResponse.statusCode).toBe(200);
|
|
@@ -3085,7 +3108,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3085
3108
|
memberId: observer.id,
|
|
3086
3109
|
workspaceId: workspace.id,
|
|
3087
3110
|
});
|
|
3088
|
-
const app =
|
|
3111
|
+
const app = authenticatedApp();
|
|
3089
3112
|
try {
|
|
3090
3113
|
await app.register(teamRunRoutes, { prefix: '/api' });
|
|
3091
3114
|
const response = await app.inject({
|
|
@@ -3132,7 +3155,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3132
3155
|
method: 'GET',
|
|
3133
3156
|
url: `/api/team-runs/${teamRun.id}/messages`,
|
|
3134
3157
|
headers: {
|
|
3135
|
-
|
|
3158
|
+
...agentHeaders(senderInvocation.id),
|
|
3136
3159
|
},
|
|
3137
3160
|
});
|
|
3138
3161
|
expect(senderMessagesResponse.statusCode).toBe(200);
|
|
@@ -3141,7 +3164,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3141
3164
|
method: 'GET',
|
|
3142
3165
|
url: `/api/team-runs/${teamRun.id}/messages`,
|
|
3143
3166
|
headers: {
|
|
3144
|
-
|
|
3167
|
+
...agentHeaders(recipientInvocation.id),
|
|
3145
3168
|
},
|
|
3146
3169
|
});
|
|
3147
3170
|
expect(recipientMessagesResponse.statusCode).toBe(200);
|
|
@@ -3150,7 +3173,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3150
3173
|
method: 'GET',
|
|
3151
3174
|
url: `/api/team-runs/${teamRun.id}/messages`,
|
|
3152
3175
|
headers: {
|
|
3153
|
-
|
|
3176
|
+
...agentHeaders(observerInvocation.id),
|
|
3154
3177
|
},
|
|
3155
3178
|
});
|
|
3156
3179
|
expect(observerMessagesResponse.statusCode).toBe(200);
|
|
@@ -3231,7 +3254,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3231
3254
|
where: { id: revokedInvocation.id },
|
|
3232
3255
|
data: { dispatchRevokedAt: new Date() },
|
|
3233
3256
|
});
|
|
3234
|
-
const app =
|
|
3257
|
+
const app = authenticatedApp();
|
|
3235
3258
|
try {
|
|
3236
3259
|
await app.register(teamRunRoutes, { prefix: '/api' });
|
|
3237
3260
|
await app.listen({ port: 0, host: '127.0.0.1' });
|
|
@@ -3386,7 +3409,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3386
3409
|
status: 'PENDING_APPROVAL',
|
|
3387
3410
|
instruction: 'Other pending approval',
|
|
3388
3411
|
});
|
|
3389
|
-
const app =
|
|
3412
|
+
const app = authenticatedApp();
|
|
3390
3413
|
try {
|
|
3391
3414
|
setTeamRunEnv({
|
|
3392
3415
|
AGENT_TOWER_TEAM_RUN_ID: teamRun.id,
|
|
@@ -3493,10 +3516,10 @@ describe('TeamReconcilerService', () => {
|
|
|
3493
3516
|
await app.close();
|
|
3494
3517
|
}
|
|
3495
3518
|
});
|
|
3496
|
-
it('
|
|
3519
|
+
it('rejects MCP room messages when bound TeamRun identity is partial', async () => {
|
|
3497
3520
|
const previousEnv = captureTeamRunEnv();
|
|
3498
3521
|
const { teamRun, members } = await createFixture({ memberCount: 2 });
|
|
3499
|
-
const app =
|
|
3522
|
+
const app = authenticatedApp();
|
|
3500
3523
|
try {
|
|
3501
3524
|
setTeamRunEnv({
|
|
3502
3525
|
AGENT_TOWER_TEAM_RUN_ID: teamRun.id,
|
|
@@ -3515,32 +3538,16 @@ describe('TeamReconcilerService', () => {
|
|
|
3515
3538
|
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
3516
3539
|
await server.connect(serverTransport);
|
|
3517
3540
|
await client.connect(clientTransport);
|
|
3518
|
-
let messageId;
|
|
3519
3541
|
try {
|
|
3520
|
-
const result = await client.callTool({
|
|
3521
|
-
|
|
3522
|
-
|
|
3523
|
-
|
|
3524
|
-
},
|
|
3525
|
-
});
|
|
3526
|
-
expect(result.isError, getMcpToolText(result)).not.toBe(true);
|
|
3527
|
-
const message = JSON.parse(getMcpToolText(result));
|
|
3528
|
-
messageId = message.id;
|
|
3529
|
-
expect(message).toMatchObject({
|
|
3530
|
-
senderType: 'user',
|
|
3531
|
-
senderId: null,
|
|
3532
|
-
senderInvocationId: null,
|
|
3533
|
-
});
|
|
3542
|
+
const result = await client.callTool({ name: 'post_room_message', arguments: { content: 'Partial identity cannot fall back to user' } });
|
|
3543
|
+
expect(result.isError).toBe(true);
|
|
3544
|
+
expect(getMcpToolText(result)).toContain('Current TeamRun invocation identity is required');
|
|
3545
|
+
expect(await prisma.roomMessage.count({ where: { teamRunId: teamRun.id } })).toBe(0);
|
|
3534
3546
|
}
|
|
3535
3547
|
finally {
|
|
3536
3548
|
await client.close();
|
|
3537
3549
|
await server.close();
|
|
3538
3550
|
}
|
|
3539
|
-
await expect(prisma.roomMessage.findUnique({ where: { id: messageId } })).resolves.toMatchObject({
|
|
3540
|
-
senderType: 'user',
|
|
3541
|
-
senderId: null,
|
|
3542
|
-
senderInvocationId: null,
|
|
3543
|
-
});
|
|
3544
3551
|
}
|
|
3545
3552
|
finally {
|
|
3546
3553
|
restoreTeamRunEnv(previousEnv);
|
|
@@ -3571,7 +3578,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3571
3578
|
status: 'QUEUED',
|
|
3572
3579
|
instruction: 'Manager cancellable request',
|
|
3573
3580
|
});
|
|
3574
|
-
const app =
|
|
3581
|
+
const app = authenticatedApp();
|
|
3575
3582
|
try {
|
|
3576
3583
|
await app.register(teamRunRoutes, { prefix: '/api' });
|
|
3577
3584
|
const anonymousCancel = await app.inject({
|
|
@@ -3634,7 +3641,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3634
3641
|
instruction: 'Other rejection',
|
|
3635
3642
|
});
|
|
3636
3643
|
const routeScheduler = createRouteSchedulerMock();
|
|
3637
|
-
const app =
|
|
3644
|
+
const app = authenticatedApp();
|
|
3638
3645
|
try {
|
|
3639
3646
|
await app.register(teamRunRoutes, { prefix: '/api', scheduler: routeScheduler });
|
|
3640
3647
|
const approve = await app.inject({
|
|
@@ -3693,7 +3700,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3693
3700
|
routeScheduler.stopMemberWork = vi.fn(async () => {
|
|
3694
3701
|
throw new Error('stop failed');
|
|
3695
3702
|
});
|
|
3696
|
-
const app =
|
|
3703
|
+
const app = authenticatedApp();
|
|
3697
3704
|
try {
|
|
3698
3705
|
await app.register(teamRunRoutes, { prefix: '/api', scheduler: routeScheduler });
|
|
3699
3706
|
const response = await app.inject({
|
|
@@ -3727,51 +3734,45 @@ describe('TeamReconcilerService', () => {
|
|
|
3727
3734
|
await app.close();
|
|
3728
3735
|
}
|
|
3729
3736
|
});
|
|
3730
|
-
it('
|
|
3731
|
-
const { teamRun, members } = await createFixture({
|
|
3732
|
-
memberCount: 2,
|
|
3733
|
-
teamRunMode: 'AUTO',
|
|
3734
|
-
triggerPolicies: ['USER_MESSAGES', 'MENTION_ONLY'],
|
|
3735
|
-
});
|
|
3737
|
+
it('accepts user input before publication and starts USER_MESSAGES work only after atomic publication', async () => {
|
|
3738
|
+
const { teamRun, members } = await createFixture({ memberCount: 2, teamRunMode: 'AUTO', triggerPolicies: ['USER_MESSAGES', 'MENTION_ONLY'] });
|
|
3736
3739
|
const routeScheduler = createRouteSchedulerMock();
|
|
3737
|
-
|
|
3738
|
-
routeScheduler.startNextSessions = vi.fn(async (
|
|
3739
|
-
|
|
3740
|
-
|
|
3741
|
-
});
|
|
3742
|
-
const
|
|
3740
|
+
// The controlled scheduler never creates a real Session or starts a provider.
|
|
3741
|
+
routeScheduler.startNextSessions = vi.fn(async () => []);
|
|
3742
|
+
const container = await import('../../core/container.js');
|
|
3743
|
+
const { TranslationSettingsService } = await import('../translation-settings.service.js');
|
|
3744
|
+
const { TranslationService } = await import('../translation.service.js');
|
|
3745
|
+
const { TeamTaskInputService } = await import('../team-task-input.service.js');
|
|
3746
|
+
const { MessageDeliveryService } = await import('../message-delivery.service.js');
|
|
3747
|
+
const { TeamRunService } = await import('../team-run.service.js');
|
|
3748
|
+
const settings = new TranslationSettingsService(prisma);
|
|
3749
|
+
const translation = new TranslationService(prisma, settings);
|
|
3750
|
+
const inputs = new TeamTaskInputService(prisma, translation);
|
|
3751
|
+
const delivery = new MessageDeliveryService(prisma, settings, translation, { setMessageDeliveryService: vi.fn() }, {
|
|
3752
|
+
taskInputs: inputs, teamRuns: new TeamRunService(),
|
|
3753
|
+
roomPublished: async (id) => { await routeScheduler.startNextSessions(id); },
|
|
3754
|
+
});
|
|
3755
|
+
vi.spyOn(container, 'getMessageDeliveryService').mockReturnValue(delivery);
|
|
3756
|
+
const app = authenticatedApp();
|
|
3743
3757
|
try {
|
|
3744
3758
|
await app.register(teamRunRoutes, { prefix: '/api', scheduler: routeScheduler });
|
|
3745
|
-
const response = await app.inject({
|
|
3746
|
-
|
|
3747
|
-
|
|
3748
|
-
payload: {
|
|
3749
|
-
content: '普通用户消息',
|
|
3750
|
-
senderType: 'user',
|
|
3751
|
-
},
|
|
3752
|
-
});
|
|
3753
|
-
expect(response.statusCode).toBe(201);
|
|
3754
|
-
const message = response.json();
|
|
3755
|
-
expect(message.mentions).toEqual([]);
|
|
3756
|
-
expect(message.workRequestIds).toHaveLength(1);
|
|
3759
|
+
const response = await app.inject({ method: 'POST', url: `/api/team-runs/${teamRun.id}/messages`, payload: { clientSubmissionId: randomUUID(), content: '普通用户消息' } });
|
|
3760
|
+
expect(response.statusCode, response.body).toBe(202);
|
|
3761
|
+
expect(await prisma.roomMessage.count()).toBe(0);
|
|
3757
3762
|
expect(routeScheduler.startNextSessions).not.toHaveBeenCalled();
|
|
3758
|
-
await
|
|
3759
|
-
|
|
3760
|
-
|
|
3761
|
-
|
|
3762
|
-
});
|
|
3763
|
-
|
|
3764
|
-
|
|
3765
|
-
|
|
3766
|
-
|
|
3767
|
-
},
|
|
3768
|
-
})).resolves.toBe(0);
|
|
3769
|
-
await vi.waitFor(() => {
|
|
3770
|
-
expect(routeScheduler.startNextSessions).toHaveBeenCalledWith(teamRun.id);
|
|
3771
|
-
expect(startedTeamRunIds).toEqual([teamRun.id]);
|
|
3772
|
-
});
|
|
3763
|
+
await delivery.start();
|
|
3764
|
+
await vi.waitFor(async () => { expect((await delivery.get(response.json().operationId)).state).toBe('SENT'); });
|
|
3765
|
+
const message = await prisma.roomMessage.findUniqueOrThrow({ where: { deliveryId: response.json().operationId } });
|
|
3766
|
+
expect(JSON.parse(message.mentions)).toEqual([]);
|
|
3767
|
+
const requests = await prisma.workRequest.findMany({ where: { triggerMessageId: message.id } });
|
|
3768
|
+
expect(requests).toHaveLength(1);
|
|
3769
|
+
expect(requests[0]).toMatchObject({ targetMemberId: members[0].id, instruction: '普通用户消息', status: 'QUEUED' });
|
|
3770
|
+
expect(await prisma.agentInvocation.count()).toBe(0);
|
|
3771
|
+
await vi.waitFor(() => { expect(routeScheduler.startNextSessions).toHaveBeenCalledExactlyOnceWith(teamRun.id); });
|
|
3773
3772
|
}
|
|
3774
3773
|
finally {
|
|
3774
|
+
await delivery.shutdown();
|
|
3775
|
+
await translation.shutdown();
|
|
3775
3776
|
await app.close();
|
|
3776
3777
|
}
|
|
3777
3778
|
});
|
|
@@ -3792,7 +3793,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3792
3793
|
const implementerPreset = await createMemberPreset({ name: 'Implementer', triggerPolicy: 'MENTION_ONLY' });
|
|
3793
3794
|
const reviewerPreset = await createMemberPreset({ name: 'Reviewer', triggerPolicy: 'MENTION_ONLY' });
|
|
3794
3795
|
const routeScheduler = createRouteSchedulerMock();
|
|
3795
|
-
const app =
|
|
3796
|
+
const app = authenticatedApp();
|
|
3796
3797
|
try {
|
|
3797
3798
|
await app.register(teamRunRoutes, { prefix: '/api', scheduler: routeScheduler });
|
|
3798
3799
|
const response = await app.inject({
|
|
@@ -3860,7 +3861,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3860
3861
|
});
|
|
3861
3862
|
const preset = await createMemberPreset({ name: 'Leader', triggerPolicy: 'USER_MESSAGES' });
|
|
3862
3863
|
const routeScheduler = createRouteSchedulerMock();
|
|
3863
|
-
const app =
|
|
3864
|
+
const app = authenticatedApp();
|
|
3864
3865
|
try {
|
|
3865
3866
|
await app.register(teamRunRoutes, { prefix: '/api', scheduler: routeScheduler });
|
|
3866
3867
|
const response = await app.inject({
|
|
@@ -3907,7 +3908,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3907
3908
|
const implementerPreset = await createMemberPreset({ name: 'Implementer', triggerPolicy: 'MENTION_ONLY' });
|
|
3908
3909
|
const reviewerPreset = await createMemberPreset({ name: 'Reviewer', triggerPolicy: 'MENTION_ONLY' });
|
|
3909
3910
|
const routeScheduler = createRouteSchedulerMock();
|
|
3910
|
-
const app =
|
|
3911
|
+
const app = authenticatedApp();
|
|
3911
3912
|
try {
|
|
3912
3913
|
await app.register(teamRunRoutes, { prefix: '/api', scheduler: routeScheduler });
|
|
3913
3914
|
const response = await app.inject({
|
|
@@ -3965,7 +3966,7 @@ describe('TeamReconcilerService', () => {
|
|
|
3965
3966
|
const qaPreset = await createMemberPreset({ name: 'QA', triggerPolicy: 'MENTION_ONLY' });
|
|
3966
3967
|
const qaLeadPreset = await createMemberPreset({ name: 'QA-Lead', triggerPolicy: 'MENTION_ONLY' });
|
|
3967
3968
|
const routeScheduler = createRouteSchedulerMock();
|
|
3968
|
-
const app =
|
|
3969
|
+
const app = authenticatedApp();
|
|
3969
3970
|
try {
|
|
3970
3971
|
await app.register(teamRunRoutes, { prefix: '/api', scheduler: routeScheduler });
|
|
3971
3972
|
const response = await app.inject({
|
|
@@ -4016,7 +4017,7 @@ describe('TeamReconcilerService', () => {
|
|
|
4016
4017
|
data: { aliases: stringifyJson(['reviewer']) },
|
|
4017
4018
|
});
|
|
4018
4019
|
const routeScheduler = createRouteSchedulerMock();
|
|
4019
|
-
const app =
|
|
4020
|
+
const app = authenticatedApp();
|
|
4020
4021
|
try {
|
|
4021
4022
|
await app.register(teamRunRoutes, { prefix: '/api', scheduler: routeScheduler });
|
|
4022
4023
|
const response = await app.inject({
|
|
@@ -4063,7 +4064,7 @@ describe('TeamReconcilerService', () => {
|
|
|
4063
4064
|
data: { aliases: stringifyJson(['reviewer']) },
|
|
4064
4065
|
});
|
|
4065
4066
|
const routeScheduler = createRouteSchedulerMock();
|
|
4066
|
-
const app =
|
|
4067
|
+
const app = authenticatedApp();
|
|
4067
4068
|
try {
|
|
4068
4069
|
await app.register(teamRunRoutes, { prefix: '/api', scheduler: routeScheduler });
|
|
4069
4070
|
const response = await app.inject({
|
|
@@ -4103,7 +4104,7 @@ describe('TeamReconcilerService', () => {
|
|
|
4103
4104
|
});
|
|
4104
4105
|
const preset = await createMemberPreset({ name: 'Leader', triggerPolicy: 'USER_MESSAGES' });
|
|
4105
4106
|
const routeScheduler = createRouteSchedulerMock();
|
|
4106
|
-
const app =
|
|
4107
|
+
const app = authenticatedApp();
|
|
4107
4108
|
try {
|
|
4108
4109
|
await app.register(teamRunRoutes, { prefix: '/api', scheduler: routeScheduler });
|
|
4109
4110
|
const response = await app.inject({
|
|
@@ -4168,7 +4169,7 @@ describe('TeamReconcilerService', () => {
|
|
|
4168
4169
|
return arg(failingTx);
|
|
4169
4170
|
}, ...rest);
|
|
4170
4171
|
});
|
|
4171
|
-
const app =
|
|
4172
|
+
const app = authenticatedApp();
|
|
4172
4173
|
const consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
|
|
4173
4174
|
try {
|
|
4174
4175
|
await app.register(teamRunRoutes, { prefix: '/api', scheduler: routeScheduler });
|