@revisium/orchestrator 0.0.0 → 0.1.0-alpha.10
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 +202 -1
- package/control-plane/bootstrap.config.json +104 -2
- package/control-plane/default-playbook/catalog/pipelines.json +657 -0
- package/control-plane/default-playbook/catalog/roles.json +65 -0
- package/control-plane/default-playbook/package.json +5 -0
- package/control-plane/default-playbook/playbook.json +13 -0
- package/control-plane/default-playbook/prompts/analyst.md +29 -0
- package/control-plane/default-playbook/prompts/developer.md +26 -0
- package/control-plane/default-playbook/prompts/integrator.md +20 -0
- package/control-plane/default-playbook/prompts/orchestrator.md +23 -0
- package/control-plane/default-playbook/prompts/reviewer.md +28 -0
- package/control-plane/default-playbook/prompts/triager.md +51 -0
- package/control-plane/default-playbook/prompts/watcher.md +24 -0
- 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 +70 -0
- package/dist/cli/commands/doctor-report.js.map +1 -0
- package/dist/cli/commands/lifecycle.js +463 -0
- package/dist/cli/commands/lifecycle.js.map +1 -0
- package/dist/cli/commands/mcp.js +53 -8
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/process-tree.js +87 -0
- package/dist/cli/commands/process-tree.js.map +1 -0
- package/dist/cli/commands/revisium-helpers.js +2 -2
- package/dist/cli/commands/rogue-reaper.js +63 -0
- package/dist/cli/commands/rogue-reaper.js.map +1 -0
- package/dist/cli/index.js +5 -29
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/program.js +7 -23
- package/dist/cli/program.js.map +1 -1
- package/dist/config.js +79 -1
- package/dist/config.js.map +1 -1
- package/dist/control-plane/bootstrap.js +101 -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/client-transport.js +74 -41
- package/dist/control-plane/client-transport.js.map +1 -1
- package/dist/control-plane/data-access.js +13 -5
- package/dist/control-plane/data-access.js.map +1 -1
- package/dist/control-plane/definitions.js +1 -1
- package/dist/control-plane/definitions.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/json-fields.js +2 -0
- package/dist/control-plane/json-fields.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 +82 -0
- package/dist/control-plane/schema-migration.js.map +1 -0
- package/dist/control-plane/seed-default-playbook.js +141 -0
- package/dist/control-plane/seed-default-playbook.js.map +1 -0
- package/dist/control-plane/steps.js +15 -349
- package/dist/control-plane/steps.js.map +1 -1
- package/dist/control-plane/tables.js +1 -0
- package/dist/control-plane/tables.js.map +1 -1
- package/dist/e2e/kit/agents.js +148 -0
- package/dist/e2e/kit/agents.js.map +1 -0
- package/dist/e2e/kit/assertions.js +163 -0
- package/dist/e2e/kit/assertions.js.map +1 -0
- package/dist/e2e/kit/crash.js +44 -0
- package/dist/e2e/kit/crash.js.map +1 -0
- package/dist/e2e/kit/drive.js +45 -0
- package/dist/e2e/kit/drive.js.map +1 -0
- package/dist/e2e/kit/env.js +16 -0
- package/dist/e2e/kit/env.js.map +1 -0
- package/dist/e2e/kit/fake-integrator.js +57 -0
- package/dist/e2e/kit/fake-integrator.js.map +1 -0
- package/dist/e2e/kit/gh-emulator.js +213 -0
- package/dist/e2e/kit/gh-emulator.js.map +1 -0
- package/dist/e2e/kit/git-target-repo.js +115 -0
- package/dist/e2e/kit/git-target-repo.js.map +1 -0
- package/dist/e2e/kit/harness.js +72 -0
- package/dist/e2e/kit/harness.js.map +1 -0
- package/dist/e2e/kit/index.js +14 -0
- package/dist/e2e/kit/index.js.map +1 -0
- package/dist/e2e/kit/mcp.js +32 -0
- package/dist/e2e/kit/mcp.js.map +1 -0
- package/dist/e2e/kit/scenarios.js +196 -0
- package/dist/e2e/kit/scenarios.js.map +1 -0
- package/dist/e2e/recovery-crash-child.js +29 -0
- package/dist/e2e/recovery-crash-child.js.map +1 -0
- package/dist/e2e/recovery-dd-crash-child.js +43 -0
- package/dist/e2e/recovery-dd-crash-child.js.map +1 -0
- 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 +18 -4
- 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 +99 -0
- package/dist/host/daemon.js.map +1 -0
- package/dist/host/dbos-identity.js +42 -0
- package/dist/host/dbos-identity.js.map +1 -0
- package/dist/host/ensure-host.js +120 -0
- package/dist/host/ensure-host.js.map +1 -0
- package/dist/host/host-runtime.js +90 -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/host/queue-ownership.js +70 -0
- package/dist/host/queue-ownership.js.map +1 -0
- package/dist/host/queue-poller-census.js +47 -0
- package/dist/host/queue-poller-census.js.map +1 -0
- 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 +9 -1
- package/dist/mcp/mcp-capabilities.js.map +1 -1
- package/dist/mcp/mcp-facade.service.js +68 -5
- 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 +93 -7
- 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 +667 -0
- package/dist/pipeline/data-driven-task.workflow.js.map +1 -0
- package/dist/pipeline/data-driven-template.js +57 -0
- package/dist/pipeline/data-driven-template.js.map +1 -0
- package/dist/pipeline/pipeline.module.js +2 -2
- package/dist/pipeline/pipeline.module.js.map +1 -1
- package/dist/pipeline/pipeline.service.js +412 -0
- package/dist/pipeline/pipeline.service.js.map +1 -0
- package/dist/pipeline/route-contract.js +82 -0
- package/dist/pipeline/route-contract.js.map +1 -0
- package/dist/pipeline-core/index.js +16 -0
- package/dist/pipeline-core/index.js.map +1 -0
- package/dist/pipeline-core/interpret.js +353 -0
- package/dist/pipeline-core/interpret.js.map +1 -0
- package/dist/pipeline-core/kit/assertions.js +61 -0
- package/dist/pipeline-core/kit/assertions.js.map +1 -0
- package/dist/pipeline-core/kit/builders.js +138 -0
- package/dist/pipeline-core/kit/builders.js.map +1 -0
- package/dist/pipeline-core/kit/drive.js +96 -0
- package/dist/pipeline-core/kit/drive.js.map +1 -0
- package/dist/pipeline-core/kit/fixtures.js +342 -0
- package/dist/pipeline-core/kit/fixtures.js.map +1 -0
- package/dist/pipeline-core/kit/index.js +13 -0
- package/dist/pipeline-core/kit/index.js.map +1 -0
- package/dist/pipeline-core/types.js +134 -0
- package/dist/pipeline-core/types.js.map +1 -0
- 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 +212 -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 +119 -0
- package/dist/pipeline-core/validate.js.map +1 -0
- package/dist/playbook/catalog-loader.js +14 -1
- package/dist/playbook/catalog-loader.js.map +1 -1
- package/dist/playbook/import-mapper.js +14 -38
- package/dist/playbook/import-mapper.js.map +1 -1
- package/dist/playbook/manifest.js +1 -1
- package/dist/revisium/playbooks.service.js +107 -19
- package/dist/revisium/playbooks.service.js.map +1 -1
- package/dist/revisium/roles.service.js +1 -1
- package/dist/revisium/roles.service.js.map +1 -1
- package/dist/revisium/run.service.js +55 -8
- package/dist/revisium/run.service.js.map +1 -1
- package/dist/run/append-event.js +24 -1
- package/dist/run/append-event.js.map +1 -1
- package/dist/run/block-run.js +17 -0
- package/dist/run/block-run.js.map +1 -0
- package/dist/run/complete-run.js +18 -0
- package/dist/run/complete-run.js.map +1 -0
- package/dist/run/create-run.js +33 -36
- package/dist/run/create-run.js.map +1 -1
- package/dist/run/inspect-run.js +31 -30
- package/dist/run/inspect-run.js.map +1 -1
- package/dist/run/run-outputs.js +88 -0
- package/dist/run/run-outputs.js.map +1 -0
- package/dist/run/terminal-run-status.js +66 -7
- package/dist/run/terminal-run-status.js.map +1 -1
- package/dist/runners/claude-code.service.js +5 -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 +39 -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 +327 -147
- 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/run-watch.service.js +281 -0
- package/dist/task-control-plane/run-watch.service.js.map +1 -0
- package/dist/task-control-plane/task-control-plane-api.service.js +569 -23
- 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 +116 -0
- package/dist/worker/artifact-store.js.map +1 -0
- package/dist/worker/build-context.js +169 -2
- package/dist/worker/build-context.js.map +1 -1
- package/dist/worker/claude-code-runner.js +159 -68
- 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 +129 -65
- package/dist/worker/git-worktree-manager.js.map +1 -1
- package/dist/worker/process-executor.js +23 -2
- package/dist/worker/process-executor.js.map +1 -1
- package/dist/worker/result-envelope.js +115 -57
- 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 +4 -1
- package/dist/worker/runner-dispatch.js.map +1 -1
- package/dist/worker/runner.js +11 -1
- package/dist/worker/runner.js.map +1 -1
- package/dist/worker/stub-runner.js +7 -45
- package/dist/worker/stub-runner.js.map +1 -1
- package/package.json +32 -7
- package/dist/app.module.js +0 -28
- package/dist/app.module.js.map +0 -1
- package/dist/cli/commands/bootstrap.js +0 -39
- 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 -426
- package/dist/cli/commands/run.js.map +0 -1
- package/dist/cli/commands/work.js +0 -149
- package/dist/cli/commands/work.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 -78
- 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 +0 -497
- package/dist/pipeline/develop-task.workflow.js.map +0 -1
- package/dist/worker/loop.js +0 -122
- package/dist/worker/loop.js.map +0 -1
- package/dist/worker/script-runner.js +0 -28
- package/dist/worker/script-runner.js.map +0 -1
- package/dist/worker/worker-id.js +0 -18
- package/dist/worker/worker-id.js.map +0 -1
- package/dist/worker/worktree-manager.js +0 -7
- package/dist/worker/worktree-manager.js.map +0 -1
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
import { ControlPlaneError } from '../../control-plane/index.js';
|
|
2
|
-
import { withRevisiumService } from './revisium-context.js';
|
|
3
|
-
import { pollWorkflowState } from './poll-workflow-state.js';
|
|
4
|
-
/** Topics recognized as gate topics (must match AwaitHuman topics). */
|
|
5
|
-
const GATE_TOPICS = new Set(['plan', 'merge']);
|
|
6
|
-
function formatCause(error) {
|
|
7
|
-
if (error instanceof ControlPlaneError) {
|
|
8
|
-
const status = error.status === undefined ? '' : ` status=${error.status}`;
|
|
9
|
-
return `${error.code}${status}: ${error.message}`;
|
|
10
|
-
}
|
|
11
|
-
if (error instanceof Error)
|
|
12
|
-
return error.message;
|
|
13
|
-
return String(error);
|
|
14
|
-
}
|
|
15
|
-
function printHint(error) {
|
|
16
|
-
if (error.code === 'DAEMON_NOT_RUNNING') {
|
|
17
|
-
console.error('Run: ./bin/revo.js revisium start');
|
|
18
|
-
}
|
|
19
|
-
if (error.code === 'BOOTSTRAP_NOT_APPLIED') {
|
|
20
|
-
console.error('Run: ./bin/revo.js bootstrap --commit');
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* withInboxService — thin wrapper around the shared withRevisiumService helper.
|
|
25
|
-
* Opens exactly ONE Nest context per invocation and closes it in finally.
|
|
26
|
-
*/
|
|
27
|
-
async function withInboxService(fn) {
|
|
28
|
-
const { InboxService: InboxServiceClass } = await import('../../revisium/inbox.service.js');
|
|
29
|
-
return withRevisiumService(InboxServiceClass, fn);
|
|
30
|
-
}
|
|
31
|
-
function formatInboxItem(item) {
|
|
32
|
-
const lines = [
|
|
33
|
-
`id ${item.id}`,
|
|
34
|
-
`kind ${item.kind}`,
|
|
35
|
-
`status ${item.status}`,
|
|
36
|
-
`title ${item.title}`,
|
|
37
|
-
`created ${item.createdAt}`,
|
|
38
|
-
];
|
|
39
|
-
if (item.runId)
|
|
40
|
-
lines.push(`run ${item.runId}`);
|
|
41
|
-
if (item.stepId)
|
|
42
|
-
lines.push(`step ${item.stepId}`);
|
|
43
|
-
if (item.context !== null && item.context !== undefined) {
|
|
44
|
-
lines.push(`context ${JSON.stringify(item.context)}`);
|
|
45
|
-
}
|
|
46
|
-
if (item.answer !== null && item.answer !== undefined) {
|
|
47
|
-
lines.push(`answer ${JSON.stringify(item.answer)}`);
|
|
48
|
-
}
|
|
49
|
-
if (item.resolvedBy)
|
|
50
|
-
lines.push(`resolvedBy ${item.resolvedBy}`);
|
|
51
|
-
if (item.resolvedAt)
|
|
52
|
-
lines.push(`resolvedAt ${item.resolvedAt}`);
|
|
53
|
-
return lines.join('\n');
|
|
54
|
-
}
|
|
55
|
-
function formatInboxList(items) {
|
|
56
|
-
const pad = (s, w) => (s.length >= w ? s : s + ' '.repeat(w - s.length));
|
|
57
|
-
const COL = { id: 42, kind: 11, status: 10, ts: 22 };
|
|
58
|
-
const header = pad('ID', COL.id) +
|
|
59
|
-
pad('KIND', COL.kind) +
|
|
60
|
-
pad('STATUS', COL.status) +
|
|
61
|
-
'CREATED TITLE';
|
|
62
|
-
const lines = items.map((item) => {
|
|
63
|
-
const ts = item.createdAt ? item.createdAt.slice(0, 19) + 'Z' : '';
|
|
64
|
-
return (pad(item.id, COL.id) +
|
|
65
|
-
pad(item.kind, COL.kind) +
|
|
66
|
-
pad(item.status, COL.status) +
|
|
67
|
-
pad(ts, COL.ts) +
|
|
68
|
-
item.title);
|
|
69
|
-
});
|
|
70
|
-
const summary = `(${items.length} item${items.length === 1 ? '' : 's'})`;
|
|
71
|
-
return [header, ...lines, summary].join('\n');
|
|
72
|
-
}
|
|
73
|
-
async function inboxList(options) {
|
|
74
|
-
try {
|
|
75
|
-
const filter = options.status ? { status: options.status } : undefined;
|
|
76
|
-
const items = await withInboxService((svc) => svc.listInbox(filter));
|
|
77
|
-
if (options.json) {
|
|
78
|
-
process.stdout.write(JSON.stringify(items, null, 2) + '\n');
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
console.log(formatInboxList(items));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
if (error instanceof ControlPlaneError) {
|
|
86
|
-
console.error(`Error: ${formatCause(error)}`);
|
|
87
|
-
printHint(error);
|
|
88
|
-
}
|
|
89
|
-
else if (error instanceof Error) {
|
|
90
|
-
console.error(`Error: ${error.message}`);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
console.error(`Error: ${String(error)}`);
|
|
94
|
-
}
|
|
95
|
-
process.exitCode = 1;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
async function inboxShow(id) {
|
|
99
|
-
try {
|
|
100
|
-
const item = await withInboxService((svc) => svc.getInbox(id));
|
|
101
|
-
if (!item) {
|
|
102
|
-
console.error(`inbox item not found: ${id}`);
|
|
103
|
-
process.exitCode = 1;
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
console.log(formatInboxItem(item));
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
if (error instanceof ControlPlaneError) {
|
|
110
|
-
console.error(`Error: ${formatCause(error)}`);
|
|
111
|
-
printHint(error);
|
|
112
|
-
}
|
|
113
|
-
else if (error instanceof Error) {
|
|
114
|
-
console.error(`Error: ${error.message}`);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
console.error(`Error: ${String(error)}`);
|
|
118
|
-
}
|
|
119
|
-
process.exitCode = 1;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Determine if a row is a gate row (G4).
|
|
124
|
-
* Gate rows: kind==='approval' AND have a runId AND context.topic is in GATE_TOPICS.
|
|
125
|
-
* Only gate rows require --approve|--reject and DBOS signal.
|
|
126
|
-
*/
|
|
127
|
-
function isGateRow(item) {
|
|
128
|
-
if (item.kind !== 'approval')
|
|
129
|
-
return false;
|
|
130
|
-
if (!item.runId)
|
|
131
|
-
return false;
|
|
132
|
-
const ctx = item.context;
|
|
133
|
-
if (!ctx || typeof ctx !== 'object')
|
|
134
|
-
return false;
|
|
135
|
-
const topic = ctx.topic;
|
|
136
|
-
return typeof topic === 'string' && GATE_TOPICS.has(topic);
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* resolveGatePath — handle the gate-row branch of inbox resolve (G4).
|
|
140
|
-
* Extracted from resolveInboxCommand to reduce cognitive complexity (S3776).
|
|
141
|
-
*
|
|
142
|
-
* Returns true on success, false on validation error (sets process.exitCode=1).
|
|
143
|
-
*/
|
|
144
|
-
async function resolveGatePath(id, row, options, deps) {
|
|
145
|
-
const resolvedBy = options.by ?? 'cli';
|
|
146
|
-
// Exactly one of --approve/--reject must be present.
|
|
147
|
-
if (options.approve && options.reject) {
|
|
148
|
-
console.error('Error: specify exactly one of --approve or --reject');
|
|
149
|
-
process.exitCode = 1;
|
|
150
|
-
return false;
|
|
151
|
-
}
|
|
152
|
-
if (!options.approve && !options.reject) {
|
|
153
|
-
console.error('Error: specify --approve or --reject for a gate row');
|
|
154
|
-
process.exitCode = 1;
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
const decision = options.approve
|
|
158
|
-
? { decision: 'approve', resolvedBy }
|
|
159
|
-
: { decision: 'reject', resolvedBy };
|
|
160
|
-
// resolveInbox returns the STORED decision (G2) — signal WHAT IS RECORDED, not the raw flag.
|
|
161
|
-
const result = await deps.resolveInbox(id, decision, resolvedBy);
|
|
162
|
-
if (result.status === 'resolved') {
|
|
163
|
-
console.log(`note: already resolved — signaling with stored answer`);
|
|
164
|
-
}
|
|
165
|
-
// Signal the parked workflow with the STORED answer (G2, G9 canonical order: topic before payload).
|
|
166
|
-
// idempotencyKey = inbox id → DBOS.send exactly-once (re-resolve collapses by key).
|
|
167
|
-
const ctx = row.context;
|
|
168
|
-
const topic = typeof ctx.topic === 'string' ? ctx.topic : '';
|
|
169
|
-
await deps.signal(row.runId, topic, result.answer, id);
|
|
170
|
-
console.log(`resolved ${id}`);
|
|
171
|
-
console.log(`decision: ${String(result.answer?.decision ?? result.answer)}`);
|
|
172
|
-
console.log(`by: ${resolvedBy}`);
|
|
173
|
-
console.log('awaiting next gate or completion…');
|
|
174
|
-
// Poll for next-gate/terminal (same logic as run start, §3.6).
|
|
175
|
-
await deps.pollRunState(row.runId, { wait: options.wait ?? false });
|
|
176
|
-
return true;
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* resolveNonGatePath — handle the non-gate-row branch of inbox resolve.
|
|
180
|
-
* Preserved 0002 behavior: table-only resolve, no signal, no host required.
|
|
181
|
-
* Extracted from resolveInboxCommand to reduce cognitive complexity (S3776).
|
|
182
|
-
*
|
|
183
|
-
* Returns true on success, false on validation error (sets process.exitCode=1).
|
|
184
|
-
*/
|
|
185
|
-
async function resolveNonGatePath(id, options, deps) {
|
|
186
|
-
if (options.approve || options.reject) {
|
|
187
|
-
console.error('Error: --approve/--reject is only valid on a gate row (kind=approval with plan/merge topic)');
|
|
188
|
-
console.error(' for non-gate rows use --answer');
|
|
189
|
-
process.exitCode = 1;
|
|
190
|
-
return false;
|
|
191
|
-
}
|
|
192
|
-
const resolvedBy = options.by ?? 'cli';
|
|
193
|
-
// Normalize: --answer omitted → null (do NOT pass undefined; patch serializer drops it).
|
|
194
|
-
const answer = options.answer !== undefined ? options.answer : null;
|
|
195
|
-
await deps.resolveInbox(id, answer, resolvedBy);
|
|
196
|
-
console.log(`resolved inbox item ${id}`);
|
|
197
|
-
console.log(`answer: ${JSON.stringify(answer)}`);
|
|
198
|
-
console.log(`resolved by: ${resolvedBy}`);
|
|
199
|
-
return true;
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* resolveInboxCommand — testable core of `inbox resolve` (C4).
|
|
203
|
-
* All I/O goes through `deps`; callers provide fakes in tests.
|
|
204
|
-
* Returns `true` on success, `false` on validation / not-found error (sets process.exitCode=1).
|
|
205
|
-
*/
|
|
206
|
-
export async function resolveInboxCommand(id, options, deps) {
|
|
207
|
-
// (1) Read the row first — needed for both gate and non-gate paths.
|
|
208
|
-
const row = await deps.getInbox(id);
|
|
209
|
-
if (!row) {
|
|
210
|
-
console.error(`inbox item not found: ${id}`);
|
|
211
|
-
process.exitCode = 1;
|
|
212
|
-
return false;
|
|
213
|
-
}
|
|
214
|
-
if (isGateRow(row)) {
|
|
215
|
-
// ── GATE PATH (G4) ────────────────────────────────────────────────────
|
|
216
|
-
// Requires --approve|--reject. Signals the parked DBOS workflow. HOST-REQUIRING.
|
|
217
|
-
return resolveGatePath(id, row, options, deps);
|
|
218
|
-
}
|
|
219
|
-
// ── NON-GATE PATH (0002 preserved) ────────────────────────────────────
|
|
220
|
-
// question/alert/approval-without-topic: table-only resolve, no signal, no host.
|
|
221
|
-
return resolveNonGatePath(id, options, deps);
|
|
222
|
-
}
|
|
223
|
-
async function inboxResolve(id, options, app) {
|
|
224
|
-
// Guard: --approve/--reject requires the host context (needsHost enforces this, but be defensive).
|
|
225
|
-
if ((options.approve || options.reject) && !app) {
|
|
226
|
-
console.error('inbox resolve --approve|--reject requires the host context');
|
|
227
|
-
process.exitCode = 1;
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
// Lazily obtain DbosService only if we have a host context (gate path).
|
|
231
|
-
// This avoids importing the engine module on the non-gate path.
|
|
232
|
-
let dbosService = null;
|
|
233
|
-
if (app) {
|
|
234
|
-
const { DbosService: DbosServiceClass } = await import('../../engine/dbos.service.js');
|
|
235
|
-
dbosService = app.get(DbosServiceClass);
|
|
236
|
-
}
|
|
237
|
-
const deps = {
|
|
238
|
-
getInbox: (itemId) => withInboxService((svc) => svc.getInbox(itemId)),
|
|
239
|
-
resolveInbox: (itemId, answer, resolvedBy) => withInboxService((svc) => svc.resolveInbox(itemId, answer, resolvedBy)),
|
|
240
|
-
signal: (workflowId, topic, payload, idempotencyKey) => {
|
|
241
|
-
if (!dbosService)
|
|
242
|
-
throw new Error('signal requires host context');
|
|
243
|
-
return dbosService.signal(workflowId, topic, payload, idempotencyKey);
|
|
244
|
-
},
|
|
245
|
-
pollRunState: (runId, pollOpts) => withInboxService((svc) => pollWorkflowState(runId, dbosService ?? { getWorkflowStatus: async () => null }, svc, pollOpts)),
|
|
246
|
-
};
|
|
247
|
-
try {
|
|
248
|
-
await resolveInboxCommand(id, options, deps);
|
|
249
|
-
}
|
|
250
|
-
catch (error) {
|
|
251
|
-
if (error instanceof ControlPlaneError) {
|
|
252
|
-
console.error(`Error: ${formatCause(error)}`);
|
|
253
|
-
printHint(error);
|
|
254
|
-
}
|
|
255
|
-
else if (error instanceof Error) {
|
|
256
|
-
console.error(`Error: ${error.message}`);
|
|
257
|
-
}
|
|
258
|
-
else {
|
|
259
|
-
console.error(`Error: ${String(error)}`);
|
|
260
|
-
}
|
|
261
|
-
process.exitCode = 1;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
export function registerInbox(program, app) {
|
|
265
|
-
const inbox = program.command('inbox').description('Manage the human inbox');
|
|
266
|
-
inbox
|
|
267
|
-
.command('list')
|
|
268
|
-
.description('List inbox items')
|
|
269
|
-
.option('--status <s>', 'Filter by status (pending|resolved)')
|
|
270
|
-
.option('--json', 'Output as JSON', false)
|
|
271
|
-
.action(inboxList);
|
|
272
|
-
inbox
|
|
273
|
-
.command('show')
|
|
274
|
-
.description('Show an inbox item')
|
|
275
|
-
.argument('<id>', 'Inbox item ID')
|
|
276
|
-
.action(inboxShow);
|
|
277
|
-
inbox
|
|
278
|
-
.command('resolve')
|
|
279
|
-
.description('Resolve an inbox item (gate rows require --approve|--reject; non-gate rows use --answer)')
|
|
280
|
-
.argument('<id>', 'Inbox item ID')
|
|
281
|
-
.option('--answer <a>', 'Answer / decision for non-gate rows (omit for null)')
|
|
282
|
-
.option('--approve', 'Approve a gate row (plan/merge)', false)
|
|
283
|
-
.option('--reject', 'Reject a gate row (plan/merge)', false)
|
|
284
|
-
.option('--by <who>', 'Resolver identifier', 'cli')
|
|
285
|
-
.option('--wait', 'Keep a live viewer attached through step transitions until the run parks at the next gate or finishes', false)
|
|
286
|
-
.action((id, options) => inboxResolve(id, options, app));
|
|
287
|
-
}
|
|
288
|
-
//# sourceMappingURL=inbox.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/cli/commands/inbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { PlaybookError } from '../../playbook/errors.js';
|
|
2
|
-
import { withRevisiumService } from './revisium-context.js';
|
|
3
|
-
function formatInstallResult(result) {
|
|
4
|
-
const lines = [
|
|
5
|
-
`playbook: ${result.playbookId}`,
|
|
6
|
-
`name: ${result.name}`,
|
|
7
|
-
`version: ${result.version || '(unversioned)'}`,
|
|
8
|
-
`source: ${result.source}`,
|
|
9
|
-
`roles: ${result.roles}`,
|
|
10
|
-
`pipelines: ${result.pipelines}`,
|
|
11
|
-
`operations: ${result.operations.length}`,
|
|
12
|
-
];
|
|
13
|
-
if (result.dryRun) {
|
|
14
|
-
lines.push('dry-run: no rows written');
|
|
15
|
-
}
|
|
16
|
-
else if (result.committed) {
|
|
17
|
-
const revisionSuffix = result.revisionId ? ` (${result.revisionId})` : '';
|
|
18
|
-
lines.push(`committed: yes${revisionSuffix}`);
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
lines.push('committed: no', 'warning: draft was written but is not live until committed');
|
|
22
|
-
}
|
|
23
|
-
return lines.join('\n');
|
|
24
|
-
}
|
|
25
|
-
function reportPlaybookError(error) {
|
|
26
|
-
if (error instanceof PlaybookError) {
|
|
27
|
-
console.error(`Error: ${error.code}: ${error.message}`);
|
|
28
|
-
}
|
|
29
|
-
else if (error instanceof Error) {
|
|
30
|
-
console.error(`Error: ${error.message}`);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
console.error(`Error: ${String(error)}`);
|
|
34
|
-
}
|
|
35
|
-
process.exitCode = 1;
|
|
36
|
-
}
|
|
37
|
-
export async function installPlaybookCore(source, options, deps) {
|
|
38
|
-
try {
|
|
39
|
-
const result = await deps.install({
|
|
40
|
-
source,
|
|
41
|
-
commit: options.commit,
|
|
42
|
-
dryRun: options.dryRun,
|
|
43
|
-
name: options.name,
|
|
44
|
-
version: options.version,
|
|
45
|
-
});
|
|
46
|
-
if (options.json) {
|
|
47
|
-
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
console.log(formatInstallResult(result));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
reportPlaybookError(error);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
async function installPlaybook(source, options) {
|
|
58
|
-
const { PlaybooksService } = await import('../../revisium/playbooks.service.js');
|
|
59
|
-
await withRevisiumService(PlaybooksService, (service) => installPlaybookCore(source, options, service));
|
|
60
|
-
}
|
|
61
|
-
export function registerPlaybook(program) {
|
|
62
|
-
const playbook = program.command('playbook').description('Manage installed agent playbooks');
|
|
63
|
-
playbook
|
|
64
|
-
.command('install')
|
|
65
|
-
.description('Install a playbook manifest and catalogs into the control plane')
|
|
66
|
-
.argument('<source>', 'Local path or already-resolvable npm package')
|
|
67
|
-
.option('--commit', 'Commit versioned playbook changes after writing draft rows', false)
|
|
68
|
-
.option('--dry-run', 'Validate and print planned changes without writing rows', false)
|
|
69
|
-
.option('--json', 'Output as JSON', false)
|
|
70
|
-
.option('--name <id>', 'Override installed playbook row id')
|
|
71
|
-
.option('--version <version>', 'Override installed playbook version')
|
|
72
|
-
.action((source, options) => installPlaybook(source, options));
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=playbook.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"playbook.js","sourceRoot":"","sources":["../../../src/cli/commands/playbook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* poll-workflow-state.ts — shared polling helper used by `run start` and `inbox resolve`.
|
|
3
|
-
*
|
|
4
|
-
* After enqueueing or signaling a DBOS workflow, the CLI must wait for either:
|
|
5
|
-
* - a terminal DBOS status (SUCCESS / ERROR / CANCELLED / MAX_RECOVERY_ATTEMPTS_EXCEEDED), or
|
|
6
|
-
* - a parked gate (pending inbox approval row for this runId).
|
|
7
|
-
*
|
|
8
|
-
* Extracted from run.ts / inbox.ts to eliminate duplication (Sonar CPD).
|
|
9
|
-
* Used by both the run-start path (§3.6) and the gate-resolve path (§3.7).
|
|
10
|
-
*
|
|
11
|
-
* 0006: PollOpts added with wait/maxAttempts/intervalMs.
|
|
12
|
-
* - wait:false (default): return on first terminal or first pending gate (unchanged behavior).
|
|
13
|
-
* - wait:true: loop through RUNNING step transitions, exit at gate (print resolve + re-attach
|
|
14
|
-
* hint) or at terminal; generous cap (2400 × 500ms ≈ 20 min).
|
|
15
|
-
* SIGINT handling: sets an aborted flag so the loop returns normally, letting index.ts finally
|
|
16
|
-
* { app.close() } run. Never calls process.exit(0).
|
|
17
|
-
*/
|
|
18
|
-
/** DBOS terminal workflow statuses. MAX_RECOVERY_ATTEMPTS_EXCEEDED included per G10. */
|
|
19
|
-
export const TERMINAL_STATUSES = new Set([
|
|
20
|
-
'SUCCESS',
|
|
21
|
-
'ERROR',
|
|
22
|
-
'CANCELLED',
|
|
23
|
-
'MAX_RECOVERY_ATTEMPTS_EXCEEDED',
|
|
24
|
-
]);
|
|
25
|
-
/** Default cap for wait:false mode (40 × 500ms = 20s). */
|
|
26
|
-
const DEFAULT_MAX_ATTEMPTS = 40;
|
|
27
|
-
/** Default interval between poll iterations in ms. */
|
|
28
|
-
const DEFAULT_INTERVAL_MS = 500;
|
|
29
|
-
/** Cap for wait:true mode: 2400 × 500ms ≈ 20 min. */
|
|
30
|
-
const WAIT_MAX_ATTEMPTS = 2400;
|
|
31
|
-
/** Shared detach/re-attach message printed by both the SIGINT path and the gate path. */
|
|
32
|
-
const DETACH_MSG = (runId) => `detached — the durable state is preserved; resume with: revo run start ${runId} --wait`;
|
|
33
|
-
/** DBOS terminal statuses that mean the workflow FAILED (vs. SUCCESS / CANCELLED). */
|
|
34
|
-
const FAILURE_STATUSES = new Set(['ERROR', 'MAX_RECOVERY_ATTEMPTS_EXCEEDED']);
|
|
35
|
-
/**
|
|
36
|
-
* abortableSleep — sleep for intervalMs, but resolve early if the SIGINT handler
|
|
37
|
-
* calls earlyResolveRef.resolve(). Uses a single timer; no polling loop needed.
|
|
38
|
-
*/
|
|
39
|
-
function abortableSleep(intervalMs, earlyResolveRef) {
|
|
40
|
-
return new Promise((resolve) => {
|
|
41
|
-
earlyResolveRef.resolve = resolve;
|
|
42
|
-
setTimeout(resolve, intervalMs);
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* checkTerminalStatus — check if the workflow has reached a terminal DBOS status.
|
|
47
|
-
* Prints the status line and returns true if terminal so the caller can stop.
|
|
48
|
-
*
|
|
49
|
-
* 0008 #2: on a FAILURE terminal status (ERROR / MAX_RECOVERY_ATTEMPTS_EXCEEDED), read the
|
|
50
|
-
* Revisium run-row failure reason (if a reader is supplied) and surface it as a clear
|
|
51
|
-
* "run failed" line — never a silent sleep→ERROR with no explanation.
|
|
52
|
-
*/
|
|
53
|
-
async function checkTerminalStatus(runId, dbosService, readFailure) {
|
|
54
|
-
const wfStatus = await dbosService.getWorkflowStatus(runId);
|
|
55
|
-
if (!wfStatus || !TERMINAL_STATUSES.has(wfStatus.status)) {
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
console.log(`status: ${wfStatus.status}`);
|
|
59
|
-
if (FAILURE_STATUSES.has(wfStatus.status) && readFailure) {
|
|
60
|
-
try {
|
|
61
|
-
const failure = await readFailure(runId);
|
|
62
|
-
if (failure?.reason) {
|
|
63
|
-
console.log(`run failed: ${failure.reason}`);
|
|
64
|
-
}
|
|
65
|
-
else if (failure?.runStatus && failure.runStatus !== 'failed') {
|
|
66
|
-
// DBOS says failure but the run-row was never patched — surface the integrity gap.
|
|
67
|
-
console.log(`note: DBOS=${wfStatus.status} but run-row status=${failure.runStatus} (no run_failed reason recorded)`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
// A failure-reason read should never mask the terminal signal — ignore and stop anyway.
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* checkParkedGate — check if the workflow is parked at a gate (pending inbox row).
|
|
78
|
-
* Prints the parked line, resolve hint, and (in wait:true mode) the re-attach hint.
|
|
79
|
-
* Returns true if parked so the caller can stop.
|
|
80
|
-
*/
|
|
81
|
-
async function checkParkedGate(runId, inboxSvc, wait) {
|
|
82
|
-
const pending = await inboxSvc.listInbox({ runId, status: 'pending' });
|
|
83
|
-
if (pending.length === 0) {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
const gateRow = pending[0];
|
|
87
|
-
if (gateRow) {
|
|
88
|
-
const ctx = gateRow.context;
|
|
89
|
-
const topic = typeof ctx?.topic === 'string' ? ctx.topic : '?';
|
|
90
|
-
console.log(`parked: run ${runId} is waiting at the '${topic}' gate`);
|
|
91
|
-
console.log(` resolve with: revo inbox resolve ${gateRow.id} --approve|--reject`);
|
|
92
|
-
if (wait) {
|
|
93
|
-
console.log(` ${DETACH_MSG(runId)}`);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* pollWorkflowState — poll until the workflow is terminal or parked at a gate.
|
|
100
|
-
*
|
|
101
|
-
* @param runId - Workflow / run ID to observe.
|
|
102
|
-
* @param dbosService - DBOS status provider (getWorkflowStatus).
|
|
103
|
-
* @param inboxSvc - Inbox service for pending-approval detection.
|
|
104
|
-
* @param opts - Poll options (wait, maxAttempts, intervalMs).
|
|
105
|
-
*/
|
|
106
|
-
export async function pollWorkflowState(runId, dbosService, inboxSvc, opts = {}) {
|
|
107
|
-
const wait = opts.wait ?? false;
|
|
108
|
-
const intervalMs = opts.intervalMs ?? DEFAULT_INTERVAL_MS;
|
|
109
|
-
// Use a generous cap in wait:true mode so long-running steps don't time out prematurely.
|
|
110
|
-
const maxAttempts = opts.maxAttempts ?? (wait ? WAIT_MAX_ATTEMPTS : DEFAULT_MAX_ATTEMPTS);
|
|
111
|
-
// SIGINT abort: set a flag so the loop returns normally (no process.exit).
|
|
112
|
-
// Also holds a reference to the current sleep's resolve so Ctrl-C wakes it early.
|
|
113
|
-
let aborted = false;
|
|
114
|
-
const sleepRef = {};
|
|
115
|
-
const onSigint = () => {
|
|
116
|
-
aborted = true;
|
|
117
|
-
if (sleepRef.resolve) {
|
|
118
|
-
sleepRef.resolve();
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
process.once('SIGINT', onSigint);
|
|
122
|
-
try {
|
|
123
|
-
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
124
|
-
if (aborted) {
|
|
125
|
-
console.log(DETACH_MSG(runId));
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
if (await checkTerminalStatus(runId, dbosService, opts.readFailure)) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
if (await checkParkedGate(runId, inboxSvc, wait)) {
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
// Still running a step — wait and retry.
|
|
135
|
-
await abortableSleep(intervalMs, sleepRef);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
finally {
|
|
139
|
-
process.removeListener('SIGINT', onSigint);
|
|
140
|
-
}
|
|
141
|
-
// Timed out — report unknown state.
|
|
142
|
-
console.log('note: timed out waiting for settled state; check status with: revo run show');
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=poll-workflow-state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"poll-workflow-state.js","sourceRoot":"","sources":["../../../src/cli/commands/poll-workflow-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,wFAAwF;AACxF,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,SAAS;IACT,OAAO;IACP,WAAW;IACX,gCAAgC;CACjC,CAAC,CAAC;AAEH,0DAA0D;AAC1D,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,sDAAsD;AACtD,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,qDAAqD;AACrD,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,yFAAyF;AACzF,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CACnC,0EAA0E,KAAK,SAAS,CAAC;AAU3F,sFAAsF;AACtF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAC,CAAC;AAwB9E;;;GAGG;AACH,SAAS,cAAc,CAAC,UAAkB,EAAE,eAAyC;IACnF,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,eAAe,CAAC,OAAO,GAAG,OAAO,CAAC;QAClC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,mBAAmB,CAChC,KAAa,EACb,WAA+B,EAC/B,WAA8B;IAE9B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QACzD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/C,CAAC;iBAAM,IAAI,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAChE,mFAAmF;gBACnF,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,MAAM,uBAAuB,OAAO,CAAC,SAAS,kCAAkC,CAAC,CAAC;YAC3H,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wFAAwF;QAC1F,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,eAAe,CAAC,KAAa,EAAE,QAAsB,EAAE,IAAa;IACjF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,OAAO,CAAC,OAAyC,CAAC;QAC9D,MAAM,KAAK,GAAG,OAAO,GAAG,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,uBAAuB,KAAK,QAAQ,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,8CAA8C,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAC3F,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,WAA+B,EAC/B,QAAsB,EACtB,OAAiB,EAAE;IAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC;IAC1D,yFAAyF;IACzF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAE1F,2EAA2E;IAC3E,kFAAkF;IAClF,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAE9C,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEjC,IAAI,CAAC;QACH,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,IAAI,MAAM,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpE,OAAO;YACT,CAAC;YAED,IAAI,MAAM,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;gBACjD,OAAO;YACT,CAAC;YAED,yCAAyC;YACzC,MAAM,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,oCAAoC;IACpC,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;AACjG,CAAC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* withRevisiumService — create a per-invocation Revisium-only Nest standalone context,
|
|
3
|
-
* resolve the service identified by `token`, call `fn(svc)`, and always close the context.
|
|
4
|
-
*
|
|
5
|
-
* @param token - Injectable class token (e.g. RunService, InboxService).
|
|
6
|
-
* @param fn - Async callback that receives the resolved service instance.
|
|
7
|
-
* @returns Whatever `fn` returns.
|
|
8
|
-
*/
|
|
9
|
-
export async function withRevisiumService(token, fn) {
|
|
10
|
-
const { NestFactory } = await import('@nestjs/core');
|
|
11
|
-
const { RevisiumModule } = await import('../../revisium/revisium.module.js');
|
|
12
|
-
const ctx = await NestFactory.createApplicationContext(RevisiumModule, {
|
|
13
|
-
logger: false,
|
|
14
|
-
});
|
|
15
|
-
try {
|
|
16
|
-
const svc = ctx.get(token);
|
|
17
|
-
return await fn(svc);
|
|
18
|
-
}
|
|
19
|
-
finally {
|
|
20
|
-
await ctx.close();
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=revisium-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"revisium-context.js","sourceRoot":"","sources":["../../../src/cli/commands/revisium-context.ts"],"names":[],"mappings":"AAYA;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAc,EACd,EAA0B;IAE1B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,wBAAwB,CAAC,cAAc,EAAE;QACrE,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;AACH,CAAC"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import { baseUrl, getConfig, isAlive, isHealthy, readRuntime, removeRuntime, } from '../config.js';
|
|
3
|
-
import { ensureRevisium } from '../../host/ensure-revisium.js';
|
|
4
|
-
import { killTree, tailLines, waitForExit } from './revisium-helpers.js';
|
|
5
|
-
async function startRevisium(options) {
|
|
6
|
-
try {
|
|
7
|
-
const { runtime, alreadyRunning } = await ensureRevisium(options);
|
|
8
|
-
if (alreadyRunning) {
|
|
9
|
-
console.log(`already running on ${baseUrl(runtime.httpPort)}`);
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
console.log(`Revisium started (pid ${runtime.pid})`);
|
|
13
|
-
console.log(`Admin: ${baseUrl(runtime.httpPort)}/`);
|
|
14
|
-
console.log(`REST: ${baseUrl(runtime.httpPort)}/api`);
|
|
15
|
-
console.log(`GraphQL: ${baseUrl(runtime.httpPort)}/graphql`);
|
|
16
|
-
console.log(`MCP: ${baseUrl(runtime.httpPort)}/mcp`);
|
|
17
|
-
console.log(`PostgreSQL port: ${runtime.pgPort}`);
|
|
18
|
-
}
|
|
19
|
-
catch (err) {
|
|
20
|
-
console.error(err instanceof Error ? err.message : String(err));
|
|
21
|
-
process.exitCode = 1;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
async function stopRevisium() {
|
|
25
|
-
const runtime = readRuntime();
|
|
26
|
-
if (!runtime) {
|
|
27
|
-
console.log('not running');
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
if (isAlive(runtime.pid)) {
|
|
31
|
-
killTree(runtime.pid, 'SIGTERM');
|
|
32
|
-
const exited = await waitForExit(runtime.pid, 20_000);
|
|
33
|
-
if (!exited) {
|
|
34
|
-
killTree(runtime.pid, 'SIGKILL');
|
|
35
|
-
await waitForExit(runtime.pid, 5_000);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
removeRuntime();
|
|
39
|
-
console.log('stopped');
|
|
40
|
-
}
|
|
41
|
-
async function statusRevisium() {
|
|
42
|
-
const runtime = readRuntime();
|
|
43
|
-
if (!runtime || !isAlive(runtime.pid)) {
|
|
44
|
-
if (runtime)
|
|
45
|
-
removeRuntime();
|
|
46
|
-
console.log('stopped');
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
if (await isHealthy(runtime.httpPort)) {
|
|
50
|
-
console.log(`running (pid ${runtime.pid}) on ${baseUrl(runtime.httpPort)} - health OK`);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
console.log(`running (pid ${runtime.pid}) on ${baseUrl(runtime.httpPort)} but health FAILING`);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
function logsRevisium(options) {
|
|
57
|
-
const { logFile } = getConfig();
|
|
58
|
-
const lines = Number(options.lines ?? 50);
|
|
59
|
-
if (!Number.isInteger(lines) || lines <= 0) {
|
|
60
|
-
throw new Error(`Invalid line count: ${options.lines}`);
|
|
61
|
-
}
|
|
62
|
-
if (options.follow) {
|
|
63
|
-
const child = spawn('tail', ['-n', String(lines), '-f', logFile], { stdio: 'inherit' });
|
|
64
|
-
child.on('exit', (code) => {
|
|
65
|
-
process.exitCode = code ?? 0;
|
|
66
|
-
});
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
const output = tailLines(logFile, lines);
|
|
70
|
-
if (output)
|
|
71
|
-
console.log(output);
|
|
72
|
-
}
|
|
73
|
-
export function registerRevisium(program) {
|
|
74
|
-
const revisium = program.command('revisium').description('Manage local standalone Revisium');
|
|
75
|
-
revisium
|
|
76
|
-
.command('start')
|
|
77
|
-
.option('--port <n>', 'HTTP port scan base')
|
|
78
|
-
.option('--pg-port <n>', 'PostgreSQL port scan base')
|
|
79
|
-
.option('--data <dir>', 'Standalone data directory')
|
|
80
|
-
.action(startRevisium);
|
|
81
|
-
revisium.command('stop').action(stopRevisium);
|
|
82
|
-
revisium.command('status').action(statusRevisium);
|
|
83
|
-
revisium
|
|
84
|
-
.command('logs')
|
|
85
|
-
.option('-n, --lines <lines>', 'Number of log lines', '50')
|
|
86
|
-
.option('-f, --follow', 'Follow log output')
|
|
87
|
-
.action(logsRevisium);
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=revisium.js.map
|