@revisium/orchestrator 0.1.0-alpha.5 → 0.1.0-alpha.7
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/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/graphql-api.module.js +2 -0
- package/dist/api/graphql-api/graphql-api.module.js.map +1 -1
- 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 +2 -0
- package/dist/api/graphql-api/graphql-ws/constants.js.map +1 -1
- package/dist/api/graphql-api/graphql-ws/pubsub.module.js +5 -2
- package/dist/api/graphql-api/graphql-ws/pubsub.module.js.map +1 -1
- package/dist/api/graphql-api/registerGraphqlEnums.js +6 -1
- package/dist/api/graphql-api/registerGraphqlEnums.js.map +1 -1
- 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/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/runs-subscription.resolver.js +35 -4
- package/dist/api/graphql-api/runs/runs-subscription.resolver.js.map +1 -1
- package/dist/api/graphql-api/runs/runs.resolver.js +35 -0
- package/dist/api/graphql-api/runs/runs.resolver.js.map +1 -1
- package/dist/cli/commands/doctor-report.js +52 -0
- package/dist/cli/commands/doctor-report.js.map +1 -0
- package/dist/cli/commands/lifecycle.js +304 -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 -23
- package/dist/cli/program.js.map +1 -1
- package/dist/config.js +42 -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/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/e2e/kit/agents.js +17 -5
- package/dist/e2e/kit/agents.js.map +1 -1
- package/dist/e2e/kit/assertions.js +20 -0
- package/dist/e2e/kit/assertions.js.map +1 -1
- package/dist/e2e/kit/harness.js +12 -1
- 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.service.js +20 -0
- 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/runs/queries/handlers/runs-query.handlers.js +135 -0
- package/dist/features/runs/queries/handlers/runs-query.handlers.js.map +1 -1
- 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/index.js +4 -1
- package/dist/features/runs/queries/index.js.map +1 -1
- package/dist/features/runs/runs-api.service.js +12 -0
- package/dist/features/runs/runs-api.service.js.map +1 -1
- package/dist/host/daemon.js +86 -0
- package/dist/host/daemon.js.map +1 -0
- package/dist/host/ensure-host.js +116 -0
- package/dist/host/ensure-host.js.map +1 -0
- package/dist/host/host-runtime.js +72 -0
- package/dist/host/host-runtime.js.map +1 -0
- package/dist/host/queue-ownership.js +53 -0
- package/dist/host/queue-ownership.js.map +1 -0
- package/dist/http/graphql-host.js +8 -2
- package/dist/http/graphql-host.js.map +1 -1
- package/dist/http/graphql-host.module.js +3 -0
- package/dist/http/graphql-host.module.js.map +1 -1
- 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/data-driven-task.workflow.js +37 -75
- package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
- package/dist/pipeline/pipeline.service.js +54 -15
- package/dist/pipeline/pipeline.service.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 +15 -1
- package/dist/revisium/run.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 +12 -132
- package/dist/runners/integrator.js.map +1 -1
- package/dist/runners/runner.module.js +4 -2
- package/dist/runners/runner.module.js.map +1 -1
- 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 +24 -1
- package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
- package/dist/task-control-plane/task-control-plane.module.js +21 -1
- 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 +132 -78
- 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/result-envelope.js +91 -73
- 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 +1 -1
- 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 -451
- package/dist/cli/commands/run.js.map +0 -1
- package/dist/cli/commands/serve.js +0 -26
- package/dist/cli/commands/serve.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 +0 -21
- package/dist/mcp/mcp.module.js.map +0 -1
|
@@ -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":"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"}
|
|
@@ -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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"revisium.js","sourceRoot":"","sources":["../../../src/cli/commands/revisium.ts"],"names":[],"mappings":"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"}
|