@revisium/orchestrator 0.1.0-alpha.4 → 0.1.0-alpha.6
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/README.md +149 -1
- package/control-plane/bootstrap.config.json +1 -0
- package/control-plane/default-playbook/catalog/pipelines.json +289 -52
- package/control-plane/default-playbook/catalog/roles.json +9 -0
- package/control-plane/default-playbook/prompts/analyst.md +3 -1
- package/control-plane/default-playbook/prompts/reviewer.md +2 -2
- package/control-plane/default-playbook/prompts/triager.md +51 -0
- package/control-plane/default-playbook/prompts/watcher.md +2 -2
- package/dist/api/graphql-api/filters/agent-observability-exception.filter.js +24 -0
- package/dist/api/graphql-api/filters/agent-observability-exception.filter.js.map +1 -0
- package/dist/api/graphql-api/filters/graphql-validation-exception.filter.js +36 -0
- package/dist/api/graphql-api/filters/graphql-validation-exception.filter.js.map +1 -0
- package/dist/api/graphql-api/graphql-api.module.js +77 -0
- package/dist/api/graphql-api/graphql-api.module.js.map +1 -0
- package/dist/api/graphql-api/graphql-ws/agent-observability-subscription-bridge.service.js +296 -0
- package/dist/api/graphql-api/graphql-ws/agent-observability-subscription-bridge.service.js.map +1 -0
- package/dist/api/graphql-api/graphql-ws/agent-observability-subscription-mappers.js +64 -0
- package/dist/api/graphql-api/graphql-ws/agent-observability-subscription-mappers.js.map +1 -0
- package/dist/api/graphql-api/graphql-ws/constants.js +11 -0
- package/dist/api/graphql-api/graphql-ws/constants.js.map +1 -0
- package/dist/api/graphql-api/graphql-ws/pubsub.module.js +32 -0
- package/dist/api/graphql-api/graphql-ws/pubsub.module.js.map +1 -0
- package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js +101 -0
- package/dist/api/graphql-api/graphql-ws/run-progress-subscription-poller.service.js.map +1 -0
- package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js +115 -0
- package/dist/api/graphql-api/graphql-ws/subscription-bridge.service.js.map +1 -0
- package/dist/api/graphql-api/graphql-ws/subscription-mappers.js +85 -0
- package/dist/api/graphql-api/graphql-ws/subscription-mappers.js.map +1 -0
- package/dist/api/graphql-api/graphql-ws/ws.js +22 -0
- package/dist/api/graphql-api/graphql-ws/ws.js.map +1 -0
- package/dist/api/graphql-api/inbox/inbox-subscription.resolver.js +56 -0
- package/dist/api/graphql-api/inbox/inbox-subscription.resolver.js.map +1 -0
- package/dist/api/graphql-api/inbox/inbox.resolver.js +125 -0
- package/dist/api/graphql-api/inbox/inbox.resolver.js.map +1 -0
- package/dist/api/graphql-api/inbox/inputs/answer-question.input.js +33 -0
- package/dist/api/graphql-api/inbox/inputs/answer-question.input.js.map +1 -0
- package/dist/api/graphql-api/inbox/inputs/gate-decision.input.js +27 -0
- package/dist/api/graphql-api/inbox/inputs/gate-decision.input.js.map +1 -0
- package/dist/api/graphql-api/inbox/inputs/list-inbox.input.js +28 -0
- package/dist/api/graphql-api/inbox/inputs/list-inbox.input.js.map +1 -0
- package/dist/api/graphql-api/inbox/inputs/resolve-inbox-item.input.js +38 -0
- package/dist/api/graphql-api/inbox/inputs/resolve-inbox-item.input.js.map +1 -0
- package/dist/api/graphql-api/inbox/model/gate-risk.model.js +53 -0
- package/dist/api/graphql-api/inbox/model/gate-risk.model.js.map +1 -0
- package/dist/api/graphql-api/inbox/model/inbox-connection.model.js +16 -0
- package/dist/api/graphql-api/inbox/model/inbox-connection.model.js.map +1 -0
- package/dist/api/graphql-api/inbox/model/inbox-item.model.js +88 -0
- package/dist/api/graphql-api/inbox/model/inbox-item.model.js.map +1 -0
- package/dist/api/graphql-api/inbox/model/inbox-resolution.model.js +48 -0
- package/dist/api/graphql-api/inbox/model/inbox-resolution.model.js.map +1 -0
- package/dist/api/graphql-api/method/inputs/list-method.input.js +15 -0
- package/dist/api/graphql-api/method/inputs/list-method.input.js.map +1 -0
- package/dist/api/graphql-api/method/method.resolver.js +90 -0
- package/dist/api/graphql-api/method/method.resolver.js.map +1 -0
- package/dist/api/graphql-api/method/model/alternative-role-group.model.js +32 -0
- package/dist/api/graphql-api/method/model/alternative-role-group.model.js.map +1 -0
- package/dist/api/graphql-api/method/model/pipeline-connection.model.js +16 -0
- package/dist/api/graphql-api/method/model/pipeline-connection.model.js.map +1 -0
- package/dist/api/graphql-api/method/model/pipeline.model.js +69 -0
- package/dist/api/graphql-api/method/model/pipeline.model.js.map +1 -0
- package/dist/api/graphql-api/method/model/playbook-connection.model.js +16 -0
- package/dist/api/graphql-api/method/model/playbook-connection.model.js.map +1 -0
- package/dist/api/graphql-api/method/model/playbook.model.js +47 -0
- package/dist/api/graphql-api/method/model/playbook.model.js.map +1 -0
- package/dist/api/graphql-api/method/model/role-connection.model.js +16 -0
- package/dist/api/graphql-api/method/model/role-connection.model.js.map +1 -0
- package/dist/api/graphql-api/method/model/role.model.js +98 -0
- package/dist/api/graphql-api/method/model/role.model.js.map +1 -0
- package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js +52 -0
- package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js.map +1 -0
- package/dist/api/graphql-api/pr/model/pr-readiness.model.js +403 -0
- package/dist/api/graphql-api/pr/model/pr-readiness.model.js.map +1 -0
- package/dist/api/graphql-api/pr/pr.resolver.js +76 -0
- package/dist/api/graphql-api/pr/pr.resolver.js.map +1 -0
- package/dist/api/graphql-api/registerGraphqlEnums.js +9 -0
- package/dist/api/graphql-api/registerGraphqlEnums.js.map +1 -0
- package/dist/api/graphql-api/runs/inputs/create-run.input.js +63 -0
- package/dist/api/graphql-api/runs/inputs/create-run.input.js.map +1 -0
- package/dist/api/graphql-api/runs/inputs/get-agent-log.input.js +48 -0
- package/dist/api/graphql-api/runs/inputs/get-agent-log.input.js.map +1 -0
- package/dist/api/graphql-api/runs/inputs/get-run-attempts.input.js +32 -0
- package/dist/api/graphql-api/runs/inputs/get-run-attempts.input.js.map +1 -0
- package/dist/api/graphql-api/runs/inputs/get-run-events.input.js +28 -0
- package/dist/api/graphql-api/runs/inputs/get-run-events.input.js.map +1 -0
- package/dist/api/graphql-api/runs/inputs/list-runs.input.js +23 -0
- package/dist/api/graphql-api/runs/inputs/list-runs.input.js.map +1 -0
- package/dist/api/graphql-api/runs/inputs/simulate-route.input.js +43 -0
- package/dist/api/graphql-api/runs/inputs/simulate-route.input.js.map +1 -0
- package/dist/api/graphql-api/runs/model/agent-activity.model.js +367 -0
- package/dist/api/graphql-api/runs/model/agent-activity.model.js.map +1 -0
- package/dist/api/graphql-api/runs/model/create-run-result.model.js +53 -0
- package/dist/api/graphql-api/runs/model/create-run-result.model.js.map +1 -0
- package/dist/api/graphql-api/runs/model/run-attempt.model.js +114 -0
- package/dist/api/graphql-api/runs/model/run-attempt.model.js.map +1 -0
- package/dist/api/graphql-api/runs/model/run-connection.model.js +16 -0
- package/dist/api/graphql-api/runs/model/run-connection.model.js.map +1 -0
- package/dist/api/graphql-api/runs/model/run-cost.model.js +67 -0
- package/dist/api/graphql-api/runs/model/run-cost.model.js.map +1 -0
- package/dist/api/graphql-api/runs/model/run-digest.model.js +41 -0
- package/dist/api/graphql-api/runs/model/run-digest.model.js.map +1 -0
- package/dist/api/graphql-api/runs/model/run-event-connection.model.js +16 -0
- package/dist/api/graphql-api/runs/model/run-event-connection.model.js.map +1 -0
- package/dist/api/graphql-api/runs/model/run-event.model.js +58 -0
- package/dist/api/graphql-api/runs/model/run-event.model.js.map +1 -0
- package/dist/api/graphql-api/runs/model/run-progress.model.js +33 -0
- package/dist/api/graphql-api/runs/model/run-progress.model.js.map +1 -0
- package/dist/api/graphql-api/runs/model/run-workflow.model.js +287 -0
- package/dist/api/graphql-api/runs/model/run-workflow.model.js.map +1 -0
- package/dist/api/graphql-api/runs/model/run.model.js +57 -0
- package/dist/api/graphql-api/runs/model/run.model.js.map +1 -0
- package/dist/api/graphql-api/runs/model/usage.model.js +32 -0
- package/dist/api/graphql-api/runs/model/usage.model.js.map +1 -0
- package/dist/api/graphql-api/runs/run-digest.resolver.js +40 -0
- package/dist/api/graphql-api/runs/run-digest.resolver.js.map +1 -0
- package/dist/api/graphql-api/runs/run-events.resolver.js +45 -0
- package/dist/api/graphql-api/runs/run-events.resolver.js.map +1 -0
- package/dist/api/graphql-api/runs/run-progress.resolver.js +53 -0
- package/dist/api/graphql-api/runs/run-progress.resolver.js.map +1 -0
- package/dist/api/graphql-api/runs/runs-subscription.resolver.js +124 -0
- package/dist/api/graphql-api/runs/runs-subscription.resolver.js.map +1 -0
- package/dist/api/graphql-api/runs/runs.resolver.js +165 -0
- package/dist/api/graphql-api/runs/runs.resolver.js.map +1 -0
- package/dist/api/graphql-api/share/graphql-param-types.js +6 -0
- package/dist/api/graphql-api/share/graphql-param-types.js.map +1 -0
- package/dist/api/graphql-api/share/inputs/connection.input.js +27 -0
- package/dist/api/graphql-api/share/inputs/connection.input.js.map +1 -0
- package/dist/api/graphql-api/share/inputs/run-subscription.input.js +22 -0
- package/dist/api/graphql-api/share/inputs/run-subscription.input.js.map +1 -0
- package/dist/api/graphql-api/share/model/paginated.model.js +75 -0
- package/dist/api/graphql-api/share/model/paginated.model.js.map +1 -0
- package/dist/api/graphql-api/system/model/daemon-status.model.js +47 -0
- package/dist/api/graphql-api/system/model/daemon-status.model.js.map +1 -0
- package/dist/api/graphql-api/system/model/doctor-result.model.js +33 -0
- package/dist/api/graphql-api/system/model/doctor-result.model.js.map +1 -0
- package/dist/api/graphql-api/system/model/project.model.js +37 -0
- package/dist/api/graphql-api/system/model/project.model.js.map +1 -0
- package/dist/api/graphql-api/system/model/repository-context.model.js +70 -0
- package/dist/api/graphql-api/system/model/repository-context.model.js.map +1 -0
- package/dist/api/graphql-api/system/model/repository-validation.model.js +62 -0
- package/dist/api/graphql-api/system/model/repository-validation.model.js.map +1 -0
- package/dist/api/graphql-api/system/model/system-status.model.js +29 -0
- package/dist/api/graphql-api/system/model/system-status.model.js.map +1 -0
- package/dist/api/graphql-api/system/system.resolver.js +83 -0
- package/dist/api/graphql-api/system/system.resolver.js.map +1 -0
- package/dist/cli/commands/doctor-report.js +39 -0
- package/dist/cli/commands/doctor-report.js.map +1 -0
- package/dist/cli/commands/lifecycle.js +237 -0
- package/dist/cli/commands/lifecycle.js.map +1 -0
- package/dist/cli/commands/mcp.js +46 -8
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/revisium-helpers.js +2 -2
- package/dist/cli/index.js +5 -29
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/program.js +7 -21
- package/dist/cli/program.js.map +1 -1
- package/dist/config.js +57 -5
- package/dist/config.js.map +1 -1
- package/dist/control-plane/bootstrap.js +93 -0
- package/dist/control-plane/bootstrap.js.map +1 -0
- package/dist/control-plane/change-notifications.js +35 -0
- package/dist/control-plane/change-notifications.js.map +1 -0
- package/dist/control-plane/data-access.js +10 -3
- package/dist/control-plane/data-access.js.map +1 -1
- package/dist/control-plane/inbox.js +5 -31
- package/dist/control-plane/inbox.js.map +1 -1
- package/dist/control-plane/index.js +1 -1
- package/dist/control-plane/index.js.map +1 -1
- package/dist/control-plane/resolve-cwd.js +76 -8
- package/dist/control-plane/resolve-cwd.js.map +1 -1
- package/dist/control-plane/schema-migration.js +7 -11
- package/dist/control-plane/schema-migration.js.map +1 -1
- package/dist/control-plane/seed-default-playbook.js +23 -0
- package/dist/control-plane/seed-default-playbook.js.map +1 -1
- package/dist/control-plane/steps.js +15 -349
- package/dist/control-plane/steps.js.map +1 -1
- package/dist/e2e/kit/agents.js +43 -8
- package/dist/e2e/kit/agents.js.map +1 -1
- package/dist/e2e/kit/assertions.js +57 -14
- package/dist/e2e/kit/assertions.js.map +1 -1
- package/dist/e2e/kit/drive.js +0 -4
- package/dist/e2e/kit/drive.js.map +1 -1
- package/dist/e2e/kit/fake-integrator.js +16 -1
- package/dist/e2e/kit/fake-integrator.js.map +1 -1
- package/dist/e2e/kit/gh-emulator.js +173 -10
- package/dist/e2e/kit/gh-emulator.js.map +1 -1
- package/dist/e2e/kit/git-target-repo.js +35 -3
- package/dist/e2e/kit/git-target-repo.js.map +1 -1
- package/dist/e2e/kit/harness.js +16 -3
- package/dist/e2e/kit/harness.js.map +1 -1
- package/dist/e2e/kit/scenarios.js +1 -1
- package/dist/e2e/recovery-dd-crash-child.js +3 -2
- package/dist/e2e/recovery-dd-crash-child.js.map +1 -1
- package/dist/engine/dbos.module.js +2 -1
- package/dist/engine/dbos.module.js.map +1 -1
- package/dist/engine/dbos.service.js +89 -18
- package/dist/engine/dbos.service.js.map +1 -1
- package/dist/engine/ensure-postgres.js +11 -9
- package/dist/engine/ensure-postgres.js.map +1 -1
- package/dist/features/inbox/commands/handlers/inbox-command.handlers.js +80 -0
- package/dist/features/inbox/commands/handlers/inbox-command.handlers.js.map +1 -0
- package/dist/features/inbox/commands/impl/answer-question.command.js +7 -0
- package/dist/features/inbox/commands/impl/answer-question.command.js.map +1 -0
- package/dist/features/inbox/commands/impl/approve-gate.command.js +7 -0
- package/dist/features/inbox/commands/impl/approve-gate.command.js.map +1 -0
- package/dist/features/inbox/commands/impl/reject-gate.command.js +7 -0
- package/dist/features/inbox/commands/impl/reject-gate.command.js.map +1 -0
- package/dist/features/inbox/commands/impl/resolve-inbox-item.command.js +7 -0
- package/dist/features/inbox/commands/impl/resolve-inbox-item.command.js.map +1 -0
- package/dist/features/inbox/commands/index.js +8 -0
- package/dist/features/inbox/commands/index.js.map +1 -0
- package/dist/features/inbox/inbox-api.module.js +23 -0
- package/dist/features/inbox/inbox-api.module.js.map +1 -0
- package/dist/features/inbox/inbox-api.service.js +63 -0
- package/dist/features/inbox/inbox-api.service.js.map +1 -0
- package/dist/features/inbox/queries/handlers/inbox-query.handlers.js +111 -0
- package/dist/features/inbox/queries/handlers/inbox-query.handlers.js.map +1 -0
- package/dist/features/inbox/queries/impl/get-inbox-item.query.js +7 -0
- package/dist/features/inbox/queries/impl/get-inbox-item.query.js.map +1 -0
- package/dist/features/inbox/queries/impl/get-pending-decisions.query.js +7 -0
- package/dist/features/inbox/queries/impl/get-pending-decisions.query.js.map +1 -0
- package/dist/features/inbox/queries/impl/list-inbox.query.js +7 -0
- package/dist/features/inbox/queries/impl/list-inbox.query.js.map +1 -0
- package/dist/features/inbox/queries/impl/summarize-gate-risk.query.js +7 -0
- package/dist/features/inbox/queries/impl/summarize-gate-risk.query.js.map +1 -0
- package/dist/features/inbox/queries/index.js +8 -0
- package/dist/features/inbox/queries/index.js.map +1 -0
- package/dist/features/method/commands/index.js +2 -0
- package/dist/features/method/commands/index.js.map +1 -0
- package/dist/features/method/method-api.module.js +23 -0
- package/dist/features/method/method-api.module.js.map +1 -0
- package/dist/features/method/method-api.service.js +47 -0
- package/dist/features/method/method-api.service.js.map +1 -0
- package/dist/features/method/queries/handlers/method-query.handlers.js +115 -0
- package/dist/features/method/queries/handlers/method-query.handlers.js.map +1 -0
- package/dist/features/method/queries/impl/get-pipeline.query.js +7 -0
- package/dist/features/method/queries/impl/get-pipeline.query.js.map +1 -0
- package/dist/features/method/queries/impl/get-role.query.js +7 -0
- package/dist/features/method/queries/impl/get-role.query.js.map +1 -0
- package/dist/features/method/queries/impl/list-pipelines.query.js +7 -0
- package/dist/features/method/queries/impl/list-pipelines.query.js.map +1 -0
- package/dist/features/method/queries/impl/list-playbooks.query.js +7 -0
- package/dist/features/method/queries/impl/list-playbooks.query.js.map +1 -0
- package/dist/features/method/queries/impl/list-roles.query.js +7 -0
- package/dist/features/method/queries/impl/list-roles.query.js.map +1 -0
- package/dist/features/method/queries/index.js +9 -0
- package/dist/features/method/queries/index.js.map +1 -0
- package/dist/features/pr/commands/index.js +2 -0
- package/dist/features/pr/commands/index.js.map +1 -0
- package/dist/features/pr/pr-api.module.js +23 -0
- package/dist/features/pr/pr-api.module.js.map +1 -0
- package/dist/features/pr/pr-api.service.js +35 -0
- package/dist/features/pr/pr-api.service.js.map +1 -0
- package/dist/features/pr/queries/handlers/pr-query.handlers.js +48 -0
- package/dist/features/pr/queries/handlers/pr-query.handlers.js.map +1 -0
- package/dist/features/pr/queries/impl/get-pr-readiness.query.js +7 -0
- package/dist/features/pr/queries/impl/get-pr-readiness.query.js.map +1 -0
- package/dist/features/pr/queries/impl/list-pr-feedback.query.js +7 -0
- package/dist/features/pr/queries/impl/list-pr-feedback.query.js.map +1 -0
- package/dist/features/pr/queries/index.js +3 -0
- package/dist/features/pr/queries/index.js.map +1 -0
- package/dist/features/runs/commands/handlers/runs-command.handlers.js +32 -0
- package/dist/features/runs/commands/handlers/runs-command.handlers.js.map +1 -0
- package/dist/features/runs/commands/impl/create-run.command.js +7 -0
- package/dist/features/runs/commands/impl/create-run.command.js.map +1 -0
- package/dist/features/runs/commands/index.js +3 -0
- package/dist/features/runs/commands/index.js.map +1 -0
- package/dist/features/runs/queries/handlers/runs-query.handlers.js +359 -0
- package/dist/features/runs/queries/handlers/runs-query.handlers.js.map +1 -0
- package/dist/features/runs/queries/impl/get-agent-activity.query.js +7 -0
- package/dist/features/runs/queries/impl/get-agent-activity.query.js.map +1 -0
- package/dist/features/runs/queries/impl/get-agent-attempts.query.js +7 -0
- package/dist/features/runs/queries/impl/get-agent-attempts.query.js.map +1 -0
- package/dist/features/runs/queries/impl/get-agent-log.query.js +7 -0
- package/dist/features/runs/queries/impl/get-agent-log.query.js.map +1 -0
- package/dist/features/runs/queries/impl/get-run-attempts.query.js +7 -0
- package/dist/features/runs/queries/impl/get-run-attempts.query.js.map +1 -0
- package/dist/features/runs/queries/impl/get-run-digest.query.js +7 -0
- package/dist/features/runs/queries/impl/get-run-digest.query.js.map +1 -0
- package/dist/features/runs/queries/impl/get-run-events.query.js +7 -0
- package/dist/features/runs/queries/impl/get-run-events.query.js.map +1 -0
- package/dist/features/runs/queries/impl/get-run-progress.query.js +7 -0
- package/dist/features/runs/queries/impl/get-run-progress.query.js.map +1 -0
- package/dist/features/runs/queries/impl/get-run-workflow.query.js +7 -0
- package/dist/features/runs/queries/impl/get-run-workflow.query.js.map +1 -0
- package/dist/features/runs/queries/impl/get-run.query.js +7 -0
- package/dist/features/runs/queries/impl/get-run.query.js.map +1 -0
- package/dist/features/runs/queries/impl/list-runs.query.js +7 -0
- package/dist/features/runs/queries/impl/list-runs.query.js.map +1 -0
- package/dist/features/runs/queries/impl/simulate-route.query.js +7 -0
- package/dist/features/runs/queries/impl/simulate-route.query.js.map +1 -0
- package/dist/features/runs/queries/index.js +15 -0
- package/dist/features/runs/queries/index.js.map +1 -0
- package/dist/features/runs/runs-api.module.js +23 -0
- package/dist/features/runs/runs-api.module.js.map +1 -0
- package/dist/features/runs/runs-api.service.js +79 -0
- package/dist/features/runs/runs-api.service.js.map +1 -0
- package/dist/features/shared/connection.js +39 -0
- package/dist/features/shared/connection.js.map +1 -0
- package/dist/features/system/commands/index.js +2 -0
- package/dist/features/system/commands/index.js.map +1 -0
- package/dist/features/system/queries/handlers/system-query.handlers.js +96 -0
- package/dist/features/system/queries/handlers/system-query.handlers.js.map +1 -0
- package/dist/features/system/queries/impl/doctor.query.js +4 -0
- package/dist/features/system/queries/impl/doctor.query.js.map +1 -0
- package/dist/features/system/queries/impl/get-project.query.js +4 -0
- package/dist/features/system/queries/impl/get-project.query.js.map +1 -0
- package/dist/features/system/queries/impl/get-repository-context.query.js +7 -0
- package/dist/features/system/queries/impl/get-repository-context.query.js.map +1 -0
- package/dist/features/system/queries/impl/get-status.query.js +4 -0
- package/dist/features/system/queries/impl/get-status.query.js.map +1 -0
- package/dist/features/system/queries/impl/validate-repository.query.js +7 -0
- package/dist/features/system/queries/impl/validate-repository.query.js.map +1 -0
- package/dist/features/system/queries/index.js +9 -0
- package/dist/features/system/queries/index.js.map +1 -0
- package/dist/features/system/system-api.module.js +23 -0
- package/dist/features/system/system-api.module.js.map +1 -0
- package/dist/features/system/system-api.service.js +47 -0
- package/dist/features/system/system-api.service.js.map +1 -0
- package/dist/host/daemon.js +68 -0
- package/dist/host/daemon.js.map +1 -0
- package/dist/host/ensure-host.js +109 -0
- package/dist/host/ensure-host.js.map +1 -0
- package/dist/host/host-runtime.js +52 -0
- package/dist/host/host-runtime.js.map +1 -0
- package/dist/host/host.lifecycle.js +16 -3
- package/dist/host/host.lifecycle.js.map +1 -1
- package/dist/http/graphql-host.js +56 -0
- package/dist/http/graphql-host.js.map +1 -0
- package/dist/{mcp/mcp.module.js → http/graphql-host.module.js} +12 -10
- package/dist/http/graphql-host.module.js.map +1 -0
- package/dist/infrastructure/metrics/graphql/graphql-metrics.js +91 -0
- package/dist/infrastructure/metrics/graphql/graphql-metrics.js.map +1 -0
- package/dist/mcp/mcp-capabilities.js +6 -1
- package/dist/mcp/mcp-capabilities.js.map +1 -1
- package/dist/mcp/mcp-facade.service.js +24 -0
- package/dist/mcp/mcp-facade.service.js.map +1 -1
- package/dist/mcp/mcp-http.service.js +95 -0
- package/dist/mcp/mcp-http.service.js.map +1 -0
- package/dist/mcp/mcp-tools.js +58 -0
- package/dist/mcp/mcp-tools.js.map +1 -1
- package/dist/observability/agent-activity-reporter.js +185 -0
- package/dist/observability/agent-activity-reporter.js.map +1 -0
- package/dist/observability/agent-observability.service.js +1142 -0
- package/dist/observability/agent-observability.service.js.map +1 -0
- package/dist/observability/index.js +4 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/types.js +11 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/pipeline/await-human.js +8 -4
- package/dist/pipeline/await-human.js.map +1 -1
- package/dist/pipeline/data-driven-task.workflow.js +184 -73
- package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
- package/dist/pipeline/data-driven-template.js +3 -3
- package/dist/pipeline/pipeline.module.js +1 -1
- package/dist/pipeline/pipeline.module.js.map +1 -1
- package/dist/pipeline/{develop-task.workflow.js → pipeline.service.js} +97 -26
- package/dist/pipeline/pipeline.service.js.map +1 -0
- package/dist/pipeline-core/kit/fixtures.js +94 -0
- package/dist/pipeline-core/kit/fixtures.js.map +1 -1
- package/dist/pipeline-core/validate-capability.js +23 -0
- package/dist/pipeline-core/validate-capability.js.map +1 -0
- package/dist/pipeline-core/validate-conflicts.js +37 -0
- package/dist/pipeline-core/validate-conflicts.js.map +1 -0
- package/dist/pipeline-core/validate-dataflow.js +180 -0
- package/dist/pipeline-core/validate-dataflow.js.map +1 -0
- package/dist/pipeline-core/validate-diff.js +158 -0
- package/dist/pipeline-core/validate-diff.js.map +1 -0
- package/dist/pipeline-core/validate-edges.js +44 -0
- package/dist/pipeline-core/validate-edges.js.map +1 -0
- package/dist/pipeline-core/validate-graph.js +123 -0
- package/dist/pipeline-core/validate-graph.js.map +1 -0
- package/dist/pipeline-core/validate-loops.js +226 -0
- package/dist/pipeline-core/validate-loops.js.map +1 -0
- package/dist/pipeline-core/validate-parallel.js +132 -0
- package/dist/pipeline-core/validate-parallel.js.map +1 -0
- package/dist/pipeline-core/validate-sink.js +27 -0
- package/dist/pipeline-core/validate-sink.js.map +1 -0
- package/dist/pipeline-core/validate-topology.js +140 -0
- package/dist/pipeline-core/validate-topology.js.map +1 -0
- package/dist/pipeline-core/validate-verdict.js +72 -0
- package/dist/pipeline-core/validate-verdict.js.map +1 -0
- package/dist/pipeline-core/validate.js +34 -1107
- package/dist/pipeline-core/validate.js.map +1 -1
- package/dist/revisium/run.service.js +31 -8
- package/dist/revisium/run.service.js.map +1 -1
- package/dist/run/create-run.js +5 -31
- package/dist/run/create-run.js.map +1 -1
- package/dist/run/inspect-run.js +2 -29
- package/dist/run/inspect-run.js.map +1 -1
- package/dist/run/terminal-run-status.js +7 -30
- package/dist/run/terminal-run-status.js.map +1 -1
- package/dist/runners/claude-code.service.js +1 -0
- package/dist/runners/claude-code.service.js.map +1 -1
- package/dist/runners/codex.service.js +51 -0
- package/dist/runners/codex.service.js.map +1 -0
- package/dist/runners/integrator-branch-naming.js +24 -0
- package/dist/runners/integrator-branch-naming.js.map +1 -0
- package/dist/runners/integrator-git.js +84 -0
- package/dist/runners/integrator-git.js.map +1 -0
- package/dist/runners/integrator-remote.js +34 -0
- package/dist/runners/integrator-remote.js.map +1 -0
- package/dist/runners/integrator-types.js +9 -0
- package/dist/runners/integrator-types.js.map +1 -0
- package/dist/runners/integrator.js +250 -134
- package/dist/runners/integrator.js.map +1 -1
- package/dist/runners/runner.module.js +7 -3
- package/dist/runners/runner.module.js.map +1 -1
- package/dist/runners/worktree.service.js +63 -0
- package/dist/runners/worktree.service.js.map +1 -0
- package/dist/smoke/cli.js +47 -0
- package/dist/smoke/cli.js.map +1 -0
- package/dist/smoke/isolation.js +113 -0
- package/dist/smoke/isolation.js.map +1 -0
- package/dist/task-control-plane/task-control-plane-api.service.js +317 -4
- package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
- package/dist/task-control-plane/task-control-plane.module.js +22 -3
- package/dist/task-control-plane/task-control-plane.module.js.map +1 -1
- package/dist/worker/artifact-store.js +6 -1
- package/dist/worker/artifact-store.js.map +1 -1
- package/dist/worker/build-context.js +135 -1
- package/dist/worker/build-context.js.map +1 -1
- package/dist/worker/claude-code-runner.js +79 -82
- package/dist/worker/claude-code-runner.js.map +1 -1
- package/dist/worker/codex-runner.js +474 -0
- package/dist/worker/codex-runner.js.map +1 -0
- package/dist/worker/git-worktree-manager.js +148 -0
- package/dist/worker/git-worktree-manager.js.map +1 -0
- package/dist/worker/result-envelope.js +75 -63
- package/dist/worker/result-envelope.js.map +1 -1
- package/dist/worker/runner-common.js +106 -0
- package/dist/worker/runner-common.js.map +1 -0
- package/dist/worker/runner-dispatch.js +3 -1
- package/dist/worker/runner-dispatch.js.map +1 -1
- package/dist/worker/runner.js.map +1 -1
- package/dist/worker/stub-runner.js +3 -3
- package/dist/worker/stub-runner.js.map +1 -1
- package/package.json +15 -7
- package/dist/app.module.js +0 -28
- package/dist/app.module.js.map +0 -1
- package/dist/cli/commands/bootstrap.js +0 -100
- package/dist/cli/commands/bootstrap.js.map +0 -1
- package/dist/cli/commands/dev.js +0 -143
- package/dist/cli/commands/dev.js.map +0 -1
- package/dist/cli/commands/inbox.js +0 -288
- package/dist/cli/commands/inbox.js.map +0 -1
- package/dist/cli/commands/playbook.js +0 -74
- package/dist/cli/commands/playbook.js.map +0 -1
- package/dist/cli/commands/poll-workflow-state.js +0 -144
- package/dist/cli/commands/poll-workflow-state.js.map +0 -1
- package/dist/cli/commands/revisium-context.js +0 -23
- package/dist/cli/commands/revisium-context.js.map +0 -1
- package/dist/cli/commands/revisium.js +0 -89
- package/dist/cli/commands/revisium.js.map +0 -1
- package/dist/cli/commands/run.js +0 -453
- package/dist/cli/commands/run.js.map +0 -1
- package/dist/cli/live-guard.js +0 -49
- package/dist/cli/live-guard.js.map +0 -1
- package/dist/cli/needs-host.js +0 -77
- package/dist/cli/needs-host.js.map +0 -1
- package/dist/mcp/mcp-stdio.service.js +0 -48
- package/dist/mcp/mcp-stdio.service.js.map +0 -1
- package/dist/mcp/mcp.module.js.map +0 -1
- package/dist/pipeline/develop-task.workflow.js.map +0 -1
- package/dist/worker/worktree-manager.js +0 -7
- package/dist/worker/worktree-manager.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
2
|
import { mkdtempSync, realpathSync, rmSync, writeFileSync } from 'node:fs';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
|
-
import { join } from 'node:path';
|
|
4
|
+
import { dirname, isAbsolute, join } from 'node:path';
|
|
5
5
|
/** Run a real `git` command in `cwd` and return stdout. */
|
|
6
6
|
export function git(cwd, args) {
|
|
7
7
|
return execFileSync('git', args, {
|
|
@@ -24,13 +24,45 @@ function setReportedRemote(worktree, url) {
|
|
|
24
24
|
/* worktree exists here; ignore */
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
+
function safeRealpath(p) {
|
|
28
|
+
try {
|
|
29
|
+
return realpathSync(p);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return p;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolve the synthetic origin URL for a cwd. The remote is registered against the BASE checkout, but
|
|
37
|
+
* the integrator now runs in the run's linked worktree (plan 0017 — under the data dir). When the cwd
|
|
38
|
+
* isn't a registered base, resolve it to its base repo via git's common dir (`<base>/.git`) and look up
|
|
39
|
+
* the registration there. Default: a synthetic GitHub URL so owner/repo parsing works without a real remote.
|
|
40
|
+
*/
|
|
41
|
+
function resolveReportedRemote(cwd) {
|
|
42
|
+
const direct = reportedRemote.get(cwd) ?? reportedRemote.get(safeRealpath(cwd));
|
|
43
|
+
if (direct)
|
|
44
|
+
return direct;
|
|
45
|
+
try {
|
|
46
|
+
const commonDir = execFileSync('git', ['rev-parse', '--git-common-dir'], {
|
|
47
|
+
encoding: 'utf8', cwd, timeout: 60_000, stdio: ['ignore', 'pipe', 'pipe'],
|
|
48
|
+
}).trim();
|
|
49
|
+
const baseWorktree = dirname(isAbsolute(commonDir) ? commonDir : join(cwd, commonDir));
|
|
50
|
+
const mapped = reportedRemote.get(baseWorktree) ?? reportedRemote.get(safeRealpath(baseWorktree));
|
|
51
|
+
if (mapped)
|
|
52
|
+
return mapped;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
/* not a worktree / no common dir — fall through to the default */
|
|
56
|
+
}
|
|
57
|
+
return 'git@github.com:e2e/repo.git';
|
|
58
|
+
}
|
|
27
59
|
/**
|
|
28
60
|
* `ExecFn` for the integrator: real git, except `remote get-url origin` returns the URL registered
|
|
29
|
-
* for the cwd (
|
|
61
|
+
* for the cwd (or its base repo when run from a linked worktree); default: a synthetic GitHub URL.
|
|
30
62
|
*/
|
|
31
63
|
export const execGit = (args, cwd) => {
|
|
32
64
|
if (args[0] === 'remote' && args[1] === 'get-url' && args[2] === 'origin') {
|
|
33
|
-
return `${
|
|
65
|
+
return `${resolveReportedRemote(cwd)}\n`;
|
|
34
66
|
}
|
|
35
67
|
return execFileSync('git', args, {
|
|
36
68
|
encoding: 'utf8',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-target-repo.js","sourceRoot":"","sources":["../../../src/e2e/kit/git-target-repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"git-target-repo.js","sourceRoot":"","sources":["../../../src/e2e/kit/git-target-repo.ts"],"names":[],"mappings":"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"}
|
package/dist/e2e/kit/harness.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
+
import { join } from 'node:path';
|
|
2
3
|
import { HostLifecycle } from '../../host/host.lifecycle.js';
|
|
3
4
|
import { DbosService } from '../../engine/dbos.service.js';
|
|
5
|
+
import { getConfig } from '../../cli/config.js';
|
|
4
6
|
import { createClientTransport } from '../../control-plane/client-transport.js';
|
|
7
|
+
import { AgentObservabilityService } from '../../observability/agent-observability.service.js';
|
|
5
8
|
import { RolesService } from '../../revisium/roles.service.js';
|
|
6
9
|
import { RunService } from '../../revisium/run.service.js';
|
|
7
10
|
import { InboxService } from '../../revisium/inbox.service.js';
|
|
8
11
|
import { PlaybooksService } from '../../revisium/playbooks.service.js';
|
|
9
|
-
import { PipelineService } from '../../pipeline/
|
|
12
|
+
import { PipelineService } from '../../pipeline/pipeline.service.js';
|
|
13
|
+
import { WorktreeService } from '../../runners/worktree.service.js';
|
|
10
14
|
import { TaskControlPlaneApiService } from '../../task-control-plane/task-control-plane-api.service.js';
|
|
11
15
|
import { deterministicAgent } from './agents.js';
|
|
12
16
|
import { createGhEmulator } from './gh-emulator.js';
|
|
@@ -35,8 +39,17 @@ export async function createRunHarness(opts = {}) {
|
|
|
35
39
|
const agent = opts.agent
|
|
36
40
|
? opts.agent({ agentCalls, developerWrites })
|
|
37
41
|
: deterministicAgent(agentCalls, developerWrites);
|
|
38
|
-
const
|
|
39
|
-
const
|
|
42
|
+
const worktrees = new WorktreeService(runs);
|
|
43
|
+
const pipeline = new PipelineService(dbos, roles, runs, inbox, integrator, worktrees, agent);
|
|
44
|
+
const observability = new AgentObservabilityService({
|
|
45
|
+
artifactRoot: join(getConfig().dataDir, 'run-artifacts'),
|
|
46
|
+
runExists: async (id) => Boolean(await runs.getRun(id)),
|
|
47
|
+
dbos: {
|
|
48
|
+
getEvent: (workflowID, key, opts) => dbos.getEvent(workflowID, key, opts),
|
|
49
|
+
readStream: (workflowID, key) => dbos.readStream(workflowID, key),
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
const api = new TaskControlPlaneApiService(runs, inbox, roles, playbooks, pipeline, dbos, observability);
|
|
40
53
|
await lifecycle.onApplicationBootstrap();
|
|
41
54
|
return {
|
|
42
55
|
api,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../../src/e2e/kit/harness.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../../src/e2e/kit/harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ const STUB_OVERRIDE_FULL = { runnerOverrides: { 'claude-code': 'stub-agent', 're
|
|
|
14
14
|
/**
|
|
15
15
|
* Create + start a run on the SEEDED DEFAULT playbook's `feature-development` pipeline (slice 5). Both
|
|
16
16
|
* the agent and the integrator are stubbed so the run reaches the plan + merge gates without real
|
|
17
|
-
* claude/git/gh; the default `feature-development` routes
|
|
17
|
+
* claude/git/gh; the default `feature-development` routes top-level domain verdicts past both the
|
|
18
18
|
* code-review and post-integrator-watcher routers, so the deterministic agent drives it to completion.
|
|
19
19
|
*/
|
|
20
20
|
export async function startDefaultFeatureRun(h, repo = process.cwd()) {
|
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
//
|
|
13
13
|
// Uses a SINGLE scriptedAgent (not per-run routed) so the data-driven watcher node always emits the
|
|
14
14
|
// `clean` DOMAIN verdict it needs to reach the merge gate — independent of runId and process. The
|
|
15
|
-
// default
|
|
16
|
-
// crash
|
|
15
|
+
// default agent may not carry the watcher-specific `clean` verdict across process boundaries; a per-run
|
|
16
|
+
// spec map cannot cross the crash->recovery process boundary, so a constant spec is the deterministic
|
|
17
|
+
// choice here.
|
|
17
18
|
import 'reflect-metadata';
|
|
18
19
|
import { createRunHarness, givenInstalledPlaybook, createTargetRepo, DATA_DRIVEN_PIPELINE, waitForGate, scriptedAgent, } from './kit/index.js';
|
|
19
20
|
const stopAt = process.argv[2] ?? 'plan-gate';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-dd-crash-child.js","sourceRoot":"","sources":["../../src/e2e/recovery-dd-crash-child.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,EAAE;AACF,wGAAwG;AACxG,mGAAmG;AACnG,qGAAqG;AACrG,mGAAmG;AACnG,qGAAqG;AACrG,wGAAwG;AACxG,EAAE;AACF,gGAAgG;AAChG,8DAA8D;AAC9D,EAAE;AACF,oGAAoG;AACpG,kGAAkG;AAClG,
|
|
1
|
+
{"version":3,"file":"recovery-dd-crash-child.js","sourceRoot":"","sources":["../../src/e2e/recovery-dd-crash-child.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,EAAE;AACF,wGAAwG;AACxG,mGAAmG;AACnG,qGAAqG;AACrG,mGAAmG;AACnG,qGAAqG;AACrG,wGAAwG;AACxG,EAAE;AACF,gGAAgG;AAChG,8DAA8D;AAC9D,EAAE;AACF,oGAAoG;AACpG,kGAAkG;AAClG,wGAAwG;AACxG,sGAAsG;AACtG,eAAe;AACf,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,aAAa,GAEd,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;AAE9C,MAAM,aAAa,GAAc,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAEtG,MAAM,CAAC,GAAG,MAAM,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1F,MAAM,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC,CAAC,6DAA6D;AAEhG,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC,QAAQ;IACrB,KAAK,EAAE,8BAA8B;IACrC,WAAW,EAAE,oEAAoE;IACjF,KAAK,EAAE,0BAA0B;IACjC,UAAU,EAAE,yBAAyB;IACrC,UAAU,EAAE,oBAAoB;IAChC,gBAAgB,EAAE,EAAE,eAAe,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,EAAE;IACvG,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAE5B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;IAC5B,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9E,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,0GAA0G;AAC1G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -4,11 +4,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { Module } from '@nestjs/common';
|
|
7
|
+
import { Global, Module } from '@nestjs/common';
|
|
8
8
|
import { DbosService } from './dbos.service.js';
|
|
9
9
|
let EngineModule = class EngineModule {
|
|
10
10
|
};
|
|
11
11
|
EngineModule = __decorate([
|
|
12
|
+
Global(),
|
|
12
13
|
Module({
|
|
13
14
|
providers: [DbosService],
|
|
14
15
|
exports: [DbosService],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbos.module.js","sourceRoot":"","sources":["../../src/engine/dbos.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"dbos.module.js","sourceRoot":"","sources":["../../src/engine/dbos.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOzC,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,YAAY;IALxB,MAAM,EAAE;IACR,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,OAAO,EAAE,CAAC,WAAW,CAAC;KACvB,CAAC;GACW,YAAY,CAAG"}
|
|
@@ -42,6 +42,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
42
42
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
43
43
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
44
44
|
};
|
|
45
|
+
var DbosService_1;
|
|
45
46
|
import { Injectable } from '@nestjs/common';
|
|
46
47
|
import { DBOS, WorkflowQueue } from '@dbos-inc/dbos-sdk';
|
|
47
48
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
@@ -61,16 +62,22 @@ export const GATE_DEADLINE_EPOCH_MS = 4102444800000; // 2100-01-01T00:00:00Z
|
|
|
61
62
|
*/
|
|
62
63
|
export const SHUTDOWN_DRAIN_TIMEOUT_MS = 8_000;
|
|
63
64
|
let DbosService = class DbosService {
|
|
64
|
-
|
|
65
|
+
static { DbosService_1 = this; }
|
|
66
|
+
static launched = false;
|
|
67
|
+
static launchPromise = null;
|
|
68
|
+
static configured = null;
|
|
65
69
|
/** Registered WorkflowQueues — guarded map to ensure idempotent registration. */
|
|
66
|
-
queues = new Map();
|
|
70
|
+
static queues = new Map();
|
|
71
|
+
static queueOptions = new Map();
|
|
72
|
+
static steps = new Map();
|
|
73
|
+
static workflows = new Map();
|
|
67
74
|
// Registered DBOS functions — assigned in constructor before launch().
|
|
68
75
|
pingWorkflow;
|
|
69
76
|
markStep;
|
|
70
77
|
sleepStep;
|
|
71
78
|
constructor() {
|
|
72
79
|
// Register steps first (workflows may call them; all must be registered before launch).
|
|
73
|
-
this.markStep =
|
|
80
|
+
this.markStep = this.registerStep('DbosService.markStep', async function markStepImpl(workflowID, markerFile) {
|
|
74
81
|
// Idempotent marker (F12): write exactly-once per workflowID by using 'wx' (exclusive
|
|
75
82
|
// create). If the file already exists (step re-executed after a crash-before-checkpoint),
|
|
76
83
|
// writeFileSync throws with EEXIST — we catch that and skip the write, ensuring the
|
|
@@ -87,20 +94,20 @@ let DbosService = class DbosService {
|
|
|
87
94
|
}
|
|
88
95
|
const content = existsSync(markerFile) ? readFileSync(markerFile, 'utf8') : '';
|
|
89
96
|
return content.split('\n').filter((l) => l.trim() !== '').length;
|
|
90
|
-
}
|
|
91
|
-
this.sleepStep =
|
|
97
|
+
});
|
|
98
|
+
this.sleepStep = this.registerStep('DbosService.sleepStep', async function sleepStepImpl(ms) {
|
|
92
99
|
await DBOS.sleep(ms);
|
|
93
|
-
}
|
|
100
|
+
});
|
|
94
101
|
// Register the workflow (uses bound steps).
|
|
95
102
|
// Capture step references via .bind(this) so DBOS sees stable registered functions,
|
|
96
103
|
// not closures that close over `this` directly (avoids S7740 "do not assign this to self").
|
|
97
104
|
const markStepBound = this.markStep.bind(this);
|
|
98
105
|
const sleepStepBound = this.sleepStep.bind(this);
|
|
99
|
-
this.pingWorkflow =
|
|
106
|
+
this.pingWorkflow = this.registerWorkflow('DbosService.pingImpl', async function pingImpl(workflowID, sleepMs, markerFile) {
|
|
100
107
|
const markerCount = await markStepBound(workflowID, markerFile);
|
|
101
108
|
await sleepStepBound(sleepMs);
|
|
102
109
|
return { workflowID, markerCount };
|
|
103
|
-
}
|
|
110
|
+
});
|
|
104
111
|
}
|
|
105
112
|
// ── Generic engine verbs (M1 — DBOS seal, TASK 0003) ───────────────────────
|
|
106
113
|
//
|
|
@@ -118,10 +125,15 @@ let DbosService = class DbosService {
|
|
|
118
125
|
* Call in the consumer's constructor, BEFORE DBOS.launch().
|
|
119
126
|
*/
|
|
120
127
|
registerStep(name, fn) {
|
|
128
|
+
const cached = DbosService_1.steps.get(name);
|
|
129
|
+
if (cached)
|
|
130
|
+
return cached;
|
|
121
131
|
const lastDot = name.lastIndexOf('.');
|
|
122
132
|
const className = lastDot >= 0 ? name.slice(0, lastDot) : 'Pipeline';
|
|
123
133
|
const methodName = lastDot >= 0 ? name.slice(lastDot + 1) : name;
|
|
124
|
-
|
|
134
|
+
const registered = DBOS.registerStep(fn, { name: methodName, className });
|
|
135
|
+
DbosService_1.steps.set(name, registered);
|
|
136
|
+
return registered;
|
|
125
137
|
}
|
|
126
138
|
/**
|
|
127
139
|
* Register a plain async function as a DBOS workflow.
|
|
@@ -129,10 +141,15 @@ let DbosService = class DbosService {
|
|
|
129
141
|
* Call in the consumer's constructor, BEFORE DBOS.launch().
|
|
130
142
|
*/
|
|
131
143
|
registerWorkflow(name, fn) {
|
|
144
|
+
const cached = DbosService_1.workflows.get(name);
|
|
145
|
+
if (cached)
|
|
146
|
+
return cached;
|
|
132
147
|
const lastDot = name.lastIndexOf('.');
|
|
133
148
|
const className = lastDot >= 0 ? name.slice(0, lastDot) : 'Pipeline';
|
|
134
149
|
const methodName = lastDot >= 0 ? name.slice(lastDot + 1) : name;
|
|
135
|
-
|
|
150
|
+
const registered = DBOS.registerWorkflow(fn, { name: methodName, className });
|
|
151
|
+
DbosService_1.workflows.set(name, registered);
|
|
152
|
+
return registered;
|
|
136
153
|
}
|
|
137
154
|
/**
|
|
138
155
|
* Construct and register a WorkflowQueue (idempotent — Map-guarded).
|
|
@@ -140,9 +157,16 @@ let DbosService = class DbosService {
|
|
|
140
157
|
* Call before DBOS.launch().
|
|
141
158
|
*/
|
|
142
159
|
registerQueue(name, opts) {
|
|
143
|
-
|
|
144
|
-
|
|
160
|
+
const existing = DbosService_1.queueOptions.get(name);
|
|
161
|
+
if (existing) {
|
|
162
|
+
if (existing.concurrency !== opts.concurrency ||
|
|
163
|
+
existing.workerConcurrency !== opts.workerConcurrency) {
|
|
164
|
+
throw new Error(`WorkflowQueue ${name} already registered with different options.`);
|
|
165
|
+
}
|
|
166
|
+
return;
|
|
145
167
|
}
|
|
168
|
+
DbosService_1.queues.set(name, new WorkflowQueue(name, opts));
|
|
169
|
+
DbosService_1.queueOptions.set(name, { ...opts });
|
|
146
170
|
}
|
|
147
171
|
/**
|
|
148
172
|
* Enqueue a registered workflow with a stable workflowID and queue name.
|
|
@@ -181,27 +205,74 @@ let DbosService = class DbosService {
|
|
|
181
205
|
awaitDecision(topic, opts) {
|
|
182
206
|
return DBOS.recv(topic, { deadlineEpochMS: opts?.deadlineEpochMS ?? GATE_DEADLINE_EPOCH_MS });
|
|
183
207
|
}
|
|
208
|
+
setEvent(key, value) {
|
|
209
|
+
return DBOS.setEvent(key, value);
|
|
210
|
+
}
|
|
211
|
+
getEvent(workflowID, key, opts) {
|
|
212
|
+
return DBOS.getEvent(workflowID, key, opts);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Write a DBOS stream record. Valid from workflow bodies and DBOS steps; unlike setEvent,
|
|
216
|
+
* this is intentionally safe for the step-side agent observability bridge.
|
|
217
|
+
*/
|
|
218
|
+
writeStream(key, value) {
|
|
219
|
+
return DBOS.writeStream(key, value);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Close a DBOS stream. DBOS 4.19 only permits close from a workflow body, so step-side
|
|
223
|
+
* reporters must not call this after an attempt.
|
|
224
|
+
*/
|
|
225
|
+
closeStream(key) {
|
|
226
|
+
return DBOS.closeStream(key);
|
|
227
|
+
}
|
|
228
|
+
readStream(workflowID, key) {
|
|
229
|
+
return DBOS.readStream(workflowID, key);
|
|
230
|
+
}
|
|
184
231
|
// ── end generic engine verbs ────────────────────────────────────────────────
|
|
185
232
|
/**
|
|
186
233
|
* Configure DBOS with the pid-proven system database URL.
|
|
187
234
|
* Must be called before launch().
|
|
188
235
|
*/
|
|
189
236
|
setConfig(systemDatabaseUrl, options = {}) {
|
|
237
|
+
const nextConfig = { systemDatabaseUrl, logLevel: options.logLevel };
|
|
238
|
+
if (DbosService_1.configured) {
|
|
239
|
+
if (DbosService_1.configured.systemDatabaseUrl === nextConfig.systemDatabaseUrl &&
|
|
240
|
+
DbosService_1.configured.logLevel === nextConfig.logLevel) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (DbosService_1.launched) {
|
|
244
|
+
throw new Error('Cannot reconfigure DBOS after launch.');
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// Admin server is unused (cancel patches a Revisium row, not the DBOS admin API); disabling it
|
|
248
|
+
// frees port 3001 so multiple profiles/hosts coexist without an admin-bind collision (ADR 0006).
|
|
190
249
|
DBOS.setConfig({
|
|
191
250
|
name: 'agent-orchestrator',
|
|
192
251
|
systemDatabaseUrl,
|
|
252
|
+
runAdminServer: false,
|
|
193
253
|
...(options.logLevel ? { logLevel: options.logLevel } : {}),
|
|
194
254
|
});
|
|
255
|
+
DbosService_1.configured = nextConfig;
|
|
195
256
|
}
|
|
196
257
|
/**
|
|
197
258
|
* Launch DBOS (idempotent — guarded by `launched` flag).
|
|
198
259
|
* Auto-recovers in-flight workflows.
|
|
199
260
|
*/
|
|
200
261
|
async launch() {
|
|
201
|
-
if (
|
|
262
|
+
if (DbosService_1.launched)
|
|
202
263
|
return;
|
|
203
|
-
|
|
204
|
-
|
|
264
|
+
if (DbosService_1.launchPromise)
|
|
265
|
+
return DbosService_1.launchPromise;
|
|
266
|
+
DbosService_1.launchPromise = (async () => {
|
|
267
|
+
await DBOS.launch();
|
|
268
|
+
DbosService_1.launched = true;
|
|
269
|
+
})();
|
|
270
|
+
try {
|
|
271
|
+
await DbosService_1.launchPromise;
|
|
272
|
+
}
|
|
273
|
+
finally {
|
|
274
|
+
DbosService_1.launchPromise = null;
|
|
275
|
+
}
|
|
205
276
|
}
|
|
206
277
|
/**
|
|
207
278
|
* Shut down DBOS (no-op if never launched — E9).
|
|
@@ -216,10 +287,10 @@ let DbosService = class DbosService {
|
|
|
216
287
|
* @param timeoutMs - drain bound (default SHUTDOWN_DRAIN_TIMEOUT_MS); pass 0/Infinity to disable.
|
|
217
288
|
*/
|
|
218
289
|
async shutdown(timeoutMs = SHUTDOWN_DRAIN_TIMEOUT_MS) {
|
|
219
|
-
if (!
|
|
290
|
+
if (!DbosService_1.launched)
|
|
220
291
|
return;
|
|
221
292
|
// Mark not-launched up front so a timed-out drain cannot leave a re-entrant launch confused.
|
|
222
|
-
|
|
293
|
+
DbosService_1.launched = false;
|
|
223
294
|
const drain = DBOS.shutdown();
|
|
224
295
|
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
225
296
|
await drain;
|
|
@@ -288,7 +359,7 @@ let DbosService = class DbosService {
|
|
|
288
359
|
return handle.getResult();
|
|
289
360
|
}
|
|
290
361
|
};
|
|
291
|
-
DbosService = __decorate([
|
|
362
|
+
DbosService = DbosService_1 = __decorate([
|
|
292
363
|
Injectable(),
|
|
293
364
|
__metadata("design:paramtypes", [])
|
|
294
365
|
], DbosService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbos.service.js","sourceRoot":"","sources":["../../src/engine/dbos.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG
|
|
1
|
+
{"version":3,"file":"dbos.service.js","sourceRoot":"","sources":["../../src/engine/dbos.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,19 +17,20 @@
|
|
|
17
17
|
* live Postgres. The production default constructs a real `pg.Client`.
|
|
18
18
|
*/
|
|
19
19
|
import pg from 'pg';
|
|
20
|
+
import { PROFILES, resolveProfileName } from '../config.js';
|
|
20
21
|
/**
|
|
21
|
-
* DBOS system-database name.
|
|
22
|
-
*
|
|
23
|
-
*
|
|
22
|
+
* DBOS system-database name. `REVO_DBOS_DB` overrides; otherwise it falls back to the active
|
|
23
|
+
* profile's db (default `dbos`, dev `dbos_dev`) so a profiled host keeps its DBOS progress separate.
|
|
24
|
+
* Validated to a safe identifier because the name is interpolated into a non-parameterizable
|
|
25
|
+
* `CREATE DATABASE` (CREATE DATABASE cannot bind params).
|
|
24
26
|
*/
|
|
25
|
-
function resolveDbosDbName() {
|
|
26
|
-
const name = process.env['REVO_DBOS_DB'] ??
|
|
27
|
+
export function resolveDbosDbName() {
|
|
28
|
+
const name = process.env['REVO_DBOS_DB'] ?? PROFILES[resolveProfileName()].dbosDb;
|
|
27
29
|
if (!/^[a-z_][a-z0-9_]*$/i.test(name)) {
|
|
28
30
|
throw new Error(`Invalid REVO_DBOS_DB '${name}': must be a SQL identifier (/^[a-z_][a-z0-9_]*$/i)`);
|
|
29
31
|
}
|
|
30
32
|
return name;
|
|
31
33
|
}
|
|
32
|
-
const DBOS_DB_NAME = resolveDbosDbName();
|
|
33
34
|
const MAINTENANCE_DB = 'postgres';
|
|
34
35
|
/** PostgreSQL SQLSTATE for "database already exists" (duplicate_database). */
|
|
35
36
|
const PG_SQLSTATE_DUPLICATE_DATABASE = '42P04';
|
|
@@ -45,6 +46,7 @@ const DEFAULT_CREDS = {
|
|
|
45
46
|
* @param deps - Optional injectable dependencies for testing (F20).
|
|
46
47
|
*/
|
|
47
48
|
export async function ensurePostgres(pgPort, opts = {}, deps = {}) {
|
|
49
|
+
const dbosDbName = resolveDbosDbName();
|
|
48
50
|
const { user, password, adminDb } = { ...DEFAULT_CREDS, ...opts };
|
|
49
51
|
// pg.Client.connect() returns Promise<Client> while ClientLike.connect() returns
|
|
50
52
|
// Promise<void>; they are structurally compatible at the call sites used here, but
|
|
@@ -54,7 +56,7 @@ export async function ensurePostgres(pgPort, opts = {}, deps = {}) {
|
|
|
54
56
|
const client = createClient();
|
|
55
57
|
try {
|
|
56
58
|
await client.connect();
|
|
57
|
-
const result = await client.query(`SELECT count(*)::text AS count FROM pg_database WHERE datname = $1`, [
|
|
59
|
+
const result = await client.query(`SELECT count(*)::text AS count FROM pg_database WHERE datname = $1`, [dbosDbName]);
|
|
58
60
|
const exists = result.rows[0]?.count !== '0';
|
|
59
61
|
if (!exists) {
|
|
60
62
|
// CREATE DATABASE cannot be parameterized; `dbos` is a fixed literal with no injection surface.
|
|
@@ -62,7 +64,7 @@ export async function ensurePostgres(pgPort, opts = {}, deps = {}) {
|
|
|
62
64
|
// PostgreSQL raises 42P04 (duplicate_database) for the loser. Treat it as success
|
|
63
65
|
// (idempotent — the database now exists). Re-throw any other error.
|
|
64
66
|
try {
|
|
65
|
-
await client.query(`CREATE DATABASE ${
|
|
67
|
+
await client.query(`CREATE DATABASE ${dbosDbName}`);
|
|
66
68
|
}
|
|
67
69
|
catch (err) {
|
|
68
70
|
if (err.code === PG_SQLSTATE_DUPLICATE_DATABASE) {
|
|
@@ -87,6 +89,6 @@ export async function ensurePostgres(pgPort, opts = {}, deps = {}) {
|
|
|
87
89
|
* and encode to themselves, so existing behaviour is unchanged.
|
|
88
90
|
*/
|
|
89
91
|
export function dbosSystemDatabaseUrl(pgPort, user = 'revisium', password = 'password') {
|
|
90
|
-
return `postgresql://${encodeURIComponent(user)}:${encodeURIComponent(password)}@localhost:${pgPort}/${
|
|
92
|
+
return `postgresql://${encodeURIComponent(user)}:${encodeURIComponent(password)}@localhost:${pgPort}/${resolveDbosDbName()}`;
|
|
91
93
|
}
|
|
92
94
|
//# sourceMappingURL=ensure-postgres.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-postgres.js","sourceRoot":"","sources":["../../src/engine/ensure-postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ensure-postgres.js","sourceRoot":"","sources":["../../src/engine/ensure-postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC;IAClF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,qDAAqD,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,MAAM,cAAc,GAAG,UAAU,CAAC;AAElC,8EAA8E;AAC9E,MAAM,8BAA8B,GAAG,OAAO,CAAC;AAQ/C,MAAM,aAAa,GAAwB;IACzC,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,cAAc;CACxB,CAAC;AAkBF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,OAAqC,EAAE,EACvC,OAA2B,EAAE;IAE7B,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,IAAI,EAAE,CAAC;IAClE,iFAAiF;IACjF,mFAAmF;IACnF,yFAAyF;IACzF,MAAM,eAAe,GAAG,GAAe,EAAE,CACvC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAA0B,CAAC;IACjH,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,eAAe,CAAC;IAE1D,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,oEAAoE,EACpE,CAAC,UAAU,CAAC,CACb,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,GAAG,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,gGAAgG;YAChG,0FAA0F;YAC1F,kFAAkF;YAClF,oEAAoE;YACpE,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAK,GAAyB,CAAC,IAAI,KAAK,8BAA8B,EAAE,CAAC;oBACvE,6DAA6D;oBAC7D,OAAO;gBACT,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,IAAI,GAAG,UAAU,EACjB,QAAQ,GAAG,UAAU;IAErB,OAAO,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,cAAc,MAAM,IAAI,iBAAiB,EAAE,EAAE,CAAC;AAC/H,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { Inject } from '@nestjs/common';
|
|
14
|
+
import { CommandHandler } from '@nestjs/cqrs';
|
|
15
|
+
import { TaskControlPlaneApiService } from '../../../../task-control-plane/task-control-plane-api.service.js';
|
|
16
|
+
import { AnswerQuestionCommand } from '../impl/answer-question.command.js';
|
|
17
|
+
import { ApproveGateCommand } from '../impl/approve-gate.command.js';
|
|
18
|
+
import { RejectGateCommand } from '../impl/reject-gate.command.js';
|
|
19
|
+
import { ResolveInboxItemCommand } from '../impl/resolve-inbox-item.command.js';
|
|
20
|
+
let ApproveGateHandler = class ApproveGateHandler {
|
|
21
|
+
api;
|
|
22
|
+
constructor(api) {
|
|
23
|
+
this.api = api;
|
|
24
|
+
}
|
|
25
|
+
execute(command) {
|
|
26
|
+
return this.api.approveGate(command.data);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
ApproveGateHandler = __decorate([
|
|
30
|
+
CommandHandler(ApproveGateCommand),
|
|
31
|
+
__param(0, Inject(TaskControlPlaneApiService)),
|
|
32
|
+
__metadata("design:paramtypes", [TaskControlPlaneApiService])
|
|
33
|
+
], ApproveGateHandler);
|
|
34
|
+
export { ApproveGateHandler };
|
|
35
|
+
let RejectGateHandler = class RejectGateHandler {
|
|
36
|
+
api;
|
|
37
|
+
constructor(api) {
|
|
38
|
+
this.api = api;
|
|
39
|
+
}
|
|
40
|
+
execute(command) {
|
|
41
|
+
return this.api.rejectGate(command.data);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
RejectGateHandler = __decorate([
|
|
45
|
+
CommandHandler(RejectGateCommand),
|
|
46
|
+
__param(0, Inject(TaskControlPlaneApiService)),
|
|
47
|
+
__metadata("design:paramtypes", [TaskControlPlaneApiService])
|
|
48
|
+
], RejectGateHandler);
|
|
49
|
+
export { RejectGateHandler };
|
|
50
|
+
let AnswerQuestionHandler = class AnswerQuestionHandler {
|
|
51
|
+
api;
|
|
52
|
+
constructor(api) {
|
|
53
|
+
this.api = api;
|
|
54
|
+
}
|
|
55
|
+
execute(command) {
|
|
56
|
+
return this.api.answerQuestion(command.data);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
AnswerQuestionHandler = __decorate([
|
|
60
|
+
CommandHandler(AnswerQuestionCommand),
|
|
61
|
+
__param(0, Inject(TaskControlPlaneApiService)),
|
|
62
|
+
__metadata("design:paramtypes", [TaskControlPlaneApiService])
|
|
63
|
+
], AnswerQuestionHandler);
|
|
64
|
+
export { AnswerQuestionHandler };
|
|
65
|
+
let ResolveInboxItemHandler = class ResolveInboxItemHandler {
|
|
66
|
+
api;
|
|
67
|
+
constructor(api) {
|
|
68
|
+
this.api = api;
|
|
69
|
+
}
|
|
70
|
+
execute(command) {
|
|
71
|
+
return this.api.resolveInboxItem(command.data);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
ResolveInboxItemHandler = __decorate([
|
|
75
|
+
CommandHandler(ResolveInboxItemCommand),
|
|
76
|
+
__param(0, Inject(TaskControlPlaneApiService)),
|
|
77
|
+
__metadata("design:paramtypes", [TaskControlPlaneApiService])
|
|
78
|
+
], ResolveInboxItemHandler);
|
|
79
|
+
export { ResolveInboxItemHandler };
|
|
80
|
+
//# sourceMappingURL=inbox-command.handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox-command.handlers.js","sourceRoot":"","sources":["../../../../../src/features/inbox/commands/handlers/inbox-command.handlers.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAmB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGzE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACoC;IAAjE,YAAiE,GAA+B;QAA/B,QAAG,GAAH,GAAG,CAA4B;IAAG,CAAC;IAEpG,OAAO,CAAC,OAA2B;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF,CAAA;AANY,kBAAkB;IAD9B,cAAc,CAAC,kBAAkB,CAAC;IAEpB,WAAA,MAAM,CAAC,0BAA0B,CAAC,CAAA;qCAAuB,0BAA0B;GADrF,kBAAkB,CAM9B;;AAGM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACqC;IAAjE,YAAiE,GAA+B;QAA/B,QAAG,GAAH,GAAG,CAA4B;IAAG,CAAC;IAEpG,OAAO,CAAC,OAA0B;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF,CAAA;AANY,iBAAiB;IAD7B,cAAc,CAAC,iBAAiB,CAAC;IAEnB,WAAA,MAAM,CAAC,0BAA0B,CAAC,CAAA;qCAAuB,0BAA0B;GADrF,iBAAiB,CAM7B;;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACiC;IAAjE,YAAiE,GAA+B;QAA/B,QAAG,GAAH,GAAG,CAA4B;IAAG,CAAC;IAEpG,OAAO,CAAC,OAA8B;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;CACF,CAAA;AANY,qBAAqB;IADjC,cAAc,CAAC,qBAAqB,CAAC;IAEvB,WAAA,MAAM,CAAC,0BAA0B,CAAC,CAAA;qCAAuB,0BAA0B;GADrF,qBAAqB,CAMjC;;AAGM,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAC+B;IAAjE,YAAiE,GAA+B;QAA/B,QAAG,GAAH,GAAG,CAA4B;IAAG,CAAC;IAEpG,OAAO,CAAC,OAAgC;QACtC,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AANY,uBAAuB;IADnC,cAAc,CAAC,uBAAuB,CAAC;IAEzB,WAAA,MAAM,CAAC,0BAA0B,CAAC,CAAA;qCAAuB,0BAA0B;GADrF,uBAAuB,CAMnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-question.command.js","sourceRoot":"","sources":["../../../../../src/features/inbox/commands/impl/answer-question.command.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,qBAAqB;IACX;IAArB,YAAqB,IAA+B;QAA/B,SAAI,GAAJ,IAAI,CAA2B;IAAG,CAAC;CACzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approve-gate.command.js","sourceRoot":"","sources":["../../../../../src/features/inbox/commands/impl/approve-gate.command.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,kBAAkB;IACR;IAArB,YAAqB,IAA4B;QAA5B,SAAI,GAAJ,IAAI,CAAwB;IAAG,CAAC;CACtD"}
|