@revisium/orchestrator 0.1.0-alpha.8 → 0.1.0

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.
Files changed (127) hide show
  1. package/README.md +150 -130
  2. package/control-plane/default-playbook/catalog/pipelines.json +280 -11
  3. package/control-plane/default-playbook/package.json +1 -1
  4. package/control-plane/default-playbook/prompts/developer.md +1 -0
  5. package/control-plane/default-playbook/prompts/triager.md +3 -0
  6. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js +3 -0
  7. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js.map +1 -1
  8. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js +6 -0
  9. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js.map +1 -1
  10. package/dist/api/graphql-api/pr/model/pr-readiness.model.js +30 -0
  11. package/dist/api/graphql-api/pr/model/pr-readiness.model.js.map +1 -1
  12. package/dist/api/graphql-api/runs/inputs/create-run.input.js +6 -0
  13. package/dist/api/graphql-api/runs/inputs/create-run.input.js.map +1 -1
  14. package/dist/api/graphql-api/runs/model/run.model.js +6 -0
  15. package/dist/api/graphql-api/runs/model/run.model.js.map +1 -1
  16. package/dist/api/graphql-api/share/model/issue-ref.model.js +53 -0
  17. package/dist/api/graphql-api/share/model/issue-ref.model.js.map +1 -0
  18. package/dist/cli/commands/lifecycle.js +113 -8
  19. package/dist/cli/commands/lifecycle.js.map +1 -1
  20. package/dist/cli/commands/mcp.js +8 -1
  21. package/dist/cli/commands/mcp.js.map +1 -1
  22. package/dist/cli/commands/process-tree.js +42 -0
  23. package/dist/cli/commands/process-tree.js.map +1 -1
  24. package/dist/cli/commands/rogue-reaper.js +63 -0
  25. package/dist/cli/commands/rogue-reaper.js.map +1 -0
  26. package/dist/config.js +9 -0
  27. package/dist/config.js.map +1 -1
  28. package/dist/control-plane/bootstrap.js +14 -1
  29. package/dist/control-plane/bootstrap.js.map +1 -1
  30. package/dist/control-plane/client-transport.js +1 -1
  31. package/dist/control-plane/client-transport.js.map +1 -1
  32. package/dist/control-plane/default-playbook-policy.js +593 -0
  33. package/dist/control-plane/default-playbook-policy.js.map +1 -0
  34. package/dist/control-plane/seed-default-playbook.js +77 -8
  35. package/dist/control-plane/seed-default-playbook.js.map +1 -1
  36. package/dist/e2e/kit/agents.js +15 -21
  37. package/dist/e2e/kit/agents.js.map +1 -1
  38. package/dist/e2e/kit/assertions.js +18 -13
  39. package/dist/e2e/kit/assertions.js.map +1 -1
  40. package/dist/e2e/kit/fake-integrator.js +11 -2
  41. package/dist/e2e/kit/fake-integrator.js.map +1 -1
  42. package/dist/e2e/kit/gh-emulator.js +2 -1
  43. package/dist/e2e/kit/gh-emulator.js.map +1 -1
  44. package/dist/e2e/kit/git-target-repo.js +1 -1
  45. package/dist/engine/dbos.service.js +3 -0
  46. package/dist/engine/dbos.service.js.map +1 -1
  47. package/dist/features/pr/queries/impl/get-pr-readiness.query.js.map +1 -1
  48. package/dist/features/runs/commands/impl/create-run.command.js.map +1 -1
  49. package/dist/features/runs/queries/handlers/runs-query.handlers.js +1 -0
  50. package/dist/features/runs/queries/handlers/runs-query.handlers.js.map +1 -1
  51. package/dist/host/daemon.js +14 -1
  52. package/dist/host/daemon.js.map +1 -1
  53. package/dist/host/host-runtime.js +20 -2
  54. package/dist/host/host-runtime.js.map +1 -1
  55. package/dist/mcp/mcp-capabilities.js +16 -1
  56. package/dist/mcp/mcp-capabilities.js.map +1 -1
  57. package/dist/mcp/mcp-facade.service.js +325 -12
  58. package/dist/mcp/mcp-facade.service.js.map +1 -1
  59. package/dist/mcp/mcp-tools.js +58 -12
  60. package/dist/mcp/mcp-tools.js.map +1 -1
  61. package/dist/observability/activity-signal.js +107 -0
  62. package/dist/observability/activity-signal.js.map +1 -0
  63. package/dist/observability/index.js +1 -0
  64. package/dist/observability/index.js.map +1 -1
  65. package/dist/pipeline/data-driven-task.workflow.js +549 -44
  66. package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
  67. package/dist/pipeline/pipeline.service.js +195 -101
  68. package/dist/pipeline/pipeline.service.js.map +1 -1
  69. package/dist/pipeline/route-contract.js +4 -3
  70. package/dist/pipeline/route-contract.js.map +1 -1
  71. package/dist/pipeline-core/interpret.js +2 -0
  72. package/dist/pipeline-core/interpret.js.map +1 -1
  73. package/dist/pipeline-core/kit/builders.js +2 -0
  74. package/dist/pipeline-core/kit/builders.js.map +1 -1
  75. package/dist/pipeline-core/kit/fixtures.js +72 -21
  76. package/dist/pipeline-core/kit/fixtures.js.map +1 -1
  77. package/dist/pipeline-core/types.js +2 -0
  78. package/dist/pipeline-core/types.js.map +1 -1
  79. package/dist/pipeline-core/validate-dataflow.js +32 -0
  80. package/dist/pipeline-core/validate-dataflow.js.map +1 -1
  81. package/dist/playbook/import-mapper.js +8 -1
  82. package/dist/playbook/import-mapper.js.map +1 -1
  83. package/dist/poller/pr-readiness-core.js +299 -28
  84. package/dist/poller/pr-readiness-core.js.map +1 -1
  85. package/dist/revisium/playbooks.service.js +17 -2
  86. package/dist/revisium/playbooks.service.js.map +1 -1
  87. package/dist/revisium/run.service.js +1 -0
  88. package/dist/revisium/run.service.js.map +1 -1
  89. package/dist/run/append-event.js +8 -5
  90. package/dist/run/append-event.js.map +1 -1
  91. package/dist/run/create-run.js +5 -1
  92. package/dist/run/create-run.js.map +1 -1
  93. package/dist/run/inspect-run.js +30 -4
  94. package/dist/run/inspect-run.js.map +1 -1
  95. package/dist/run/issue-ref.js +88 -0
  96. package/dist/run/issue-ref.js.map +1 -0
  97. package/dist/runners/claude-code.service.js +2 -2
  98. package/dist/runners/claude-code.service.js.map +1 -1
  99. package/dist/runners/codex.service.js +2 -2
  100. package/dist/runners/codex.service.js.map +1 -1
  101. package/dist/runners/integrator-branch-naming.js +33 -13
  102. package/dist/runners/integrator-branch-naming.js.map +1 -1
  103. package/dist/runners/integrator.js +285 -72
  104. package/dist/runners/integrator.js.map +1 -1
  105. package/dist/runners/worktree.service.js +2 -2
  106. package/dist/runners/worktree.service.js.map +1 -1
  107. package/dist/task-control-plane/pr-readiness.service.js +15 -13
  108. package/dist/task-control-plane/pr-readiness.service.js.map +1 -1
  109. package/dist/task-control-plane/run-watch.service.js +512 -0
  110. package/dist/task-control-plane/run-watch.service.js.map +1 -0
  111. package/dist/task-control-plane/task-control-plane-api.service.js +277 -25
  112. package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
  113. package/dist/worker/artifact-store.js +21 -3
  114. package/dist/worker/artifact-store.js.map +1 -1
  115. package/dist/worker/build-context.js +19 -3
  116. package/dist/worker/build-context.js.map +1 -1
  117. package/dist/worker/claude-code-runner.js +76 -15
  118. package/dist/worker/claude-code-runner.js.map +1 -1
  119. package/dist/worker/codex-runner.js +40 -13
  120. package/dist/worker/codex-runner.js.map +1 -1
  121. package/dist/worker/process-executor.js +149 -20
  122. package/dist/worker/process-executor.js.map +1 -1
  123. package/dist/worker/runner-common.js +29 -0
  124. package/dist/worker/runner-common.js.map +1 -1
  125. package/dist/worker/runner.js +16 -1
  126. package/dist/worker/runner.js.map +1 -1
  127. package/package.json +1 -1
@@ -8,6 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import { Field, ID, Int, ObjectType } from '@nestjs/graphql';
11
+ import { IssueRefModel } from '../../share/model/issue-ref.model.js';
11
12
  let RunModel = class RunModel {
12
13
  id;
13
14
  title;
@@ -16,6 +17,7 @@ let RunModel = class RunModel {
16
17
  description;
17
18
  scope;
18
19
  repos;
20
+ issueRef;
19
21
  createdAt;
20
22
  };
21
23
  __decorate([
@@ -46,6 +48,10 @@ __decorate([
46
48
  Field(() => [String]),
47
49
  __metadata("design:type", Array)
48
50
  ], RunModel.prototype, "repos", void 0);
51
+ __decorate([
52
+ Field(() => IssueRefModel, { nullable: true }),
53
+ __metadata("design:type", IssueRefModel)
54
+ ], RunModel.prototype, "issueRef", void 0);
49
55
  __decorate([
50
56
  Field(() => Date),
51
57
  __metadata("design:type", Date)
@@ -1 +1 @@
1
- {"version":3,"file":"run.model.js","sourceRoot":"","sources":["../../../../../src/api/graphql-api/runs/model/run.model.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGtD,IAAM,QAAQ,GAAd,MAAM,QAAQ;IAEnB,EAAE,CAAU;IAGZ,KAAK,CAAU;IAGf,MAAM,CAAU;IAGhB,QAAQ,CAAU;IAGlB,WAAW,CAAU;IAGrB,KAAK,CAAU;IAGf,KAAK,CAAY;IAGjB,SAAS,CAAQ;CAClB,CAAA;AAtBC;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;;oCACJ;AAGZ;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;uCACL;AAGf;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;wCACJ;AAGhB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;;0CACC;AAGlB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACnB;AAGrB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uCACzB;AAGf;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;;uCACL;AAGjB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;8BACN,IAAI;2CAAC;AAvBN,QAAQ;IADpB,UAAU,EAAE;GACA,QAAQ,CAwBpB"}
1
+ {"version":3,"file":"run.model.js","sourceRoot":"","sources":["../../../../../src/api/graphql-api/runs/model/run.model.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAG9D,IAAM,QAAQ,GAAd,MAAM,QAAQ;IAEnB,EAAE,CAAU;IAGZ,KAAK,CAAU;IAGf,MAAM,CAAU;IAGhB,QAAQ,CAAU;IAGlB,WAAW,CAAU;IAGrB,KAAK,CAAU;IAGf,KAAK,CAAY;IAGjB,QAAQ,CAAiB;IAGzB,SAAS,CAAQ;CAClB,CAAA;AAzBC;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;;oCACJ;AAGZ;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;uCACL;AAGf;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;wCACJ;AAGhB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;;0CACC;AAGlB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACnB;AAGrB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uCACzB;AAGf;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;;uCACL;AAGjB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACpC,aAAa;0CAAC;AAGzB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;8BACN,IAAI;2CAAC;AA1BN,QAAQ;IADpB,UAAU,EAAE;GACA,QAAQ,CA2BpB"}
@@ -0,0 +1,53 @@
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
+ import { Field, InputType, Int, ObjectType } from '@nestjs/graphql';
11
+ let IssueRefInput = class IssueRefInput {
12
+ repo;
13
+ number;
14
+ url;
15
+ };
16
+ __decorate([
17
+ Field(() => String),
18
+ __metadata("design:type", String)
19
+ ], IssueRefInput.prototype, "repo", void 0);
20
+ __decorate([
21
+ Field(() => Int),
22
+ __metadata("design:type", Number)
23
+ ], IssueRefInput.prototype, "number", void 0);
24
+ __decorate([
25
+ Field(() => String),
26
+ __metadata("design:type", String)
27
+ ], IssueRefInput.prototype, "url", void 0);
28
+ IssueRefInput = __decorate([
29
+ InputType()
30
+ ], IssueRefInput);
31
+ export { IssueRefInput };
32
+ let IssueRefModel = class IssueRefModel {
33
+ repo;
34
+ number;
35
+ url;
36
+ };
37
+ __decorate([
38
+ Field(() => String),
39
+ __metadata("design:type", String)
40
+ ], IssueRefModel.prototype, "repo", void 0);
41
+ __decorate([
42
+ Field(() => Int),
43
+ __metadata("design:type", Number)
44
+ ], IssueRefModel.prototype, "number", void 0);
45
+ __decorate([
46
+ Field(() => String),
47
+ __metadata("design:type", String)
48
+ ], IssueRefModel.prototype, "url", void 0);
49
+ IssueRefModel = __decorate([
50
+ ObjectType()
51
+ ], IssueRefModel);
52
+ export { IssueRefModel };
53
+ //# sourceMappingURL=issue-ref.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-ref.model.js","sourceRoot":"","sources":["../../../../../src/api/graphql-api/share/model/issue-ref.model.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7D,IAAM,aAAa,GAAnB,MAAM,aAAa;IAExB,IAAI,CAAU;IAGd,MAAM,CAAU;IAGhB,GAAG,CAAU;CACd,CAAA;AAPC;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;2CACN;AAGd;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;;6CACD;AAGhB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;0CACP;AARF,aAAa;IADzB,SAAS,EAAE;GACC,aAAa,CASzB;;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAa;IAExB,IAAI,CAAU;IAGd,MAAM,CAAU;IAGhB,GAAG,CAAU;CACd,CAAA;AAPC;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;2CACN;AAGd;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;;6CACD;AAGhB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;0CACP;AARF,aAAa;IADzB,UAAU,EAAE;GACA,aAAa,CASzB"}
@@ -4,13 +4,14 @@ import { execFileSync } from 'node:child_process';
4
4
  import { baseUrl, getConfig, isAlive, isHealthy, readRuntime, removeRuntime, } from '../config.js';
5
5
  import { killTree, tailLines, waitForExit } from './revisium-helpers.js';
6
6
  import { buildDoctorReport } from './doctor-report.js';
7
- import { isPidWithin } from './process-tree.js';
7
+ import { isPidWithin, listProcesses, parentPid, processStartTime } from './process-tree.js';
8
+ import { classifyRevoProcess, evictByTermination, selectReapTargets, } from './rogue-reaper.js';
8
9
  import { classifyQueuePollerRogues } from '../../host/queue-poller-census.js';
9
10
  import { dbosExecutorId } from '../../host/dbos-identity.js';
10
11
  import { resolveDbosDbName } from '../../engine/ensure-postgres.js';
11
12
  import { ensureHost, expectedGraphqlPort, isGraphqlHealthy } from '../../host/ensure-host.js';
12
13
  import { runHostDaemon } from '../../host/daemon.js';
13
- import { hostCodeVersion, isHostRunning, readHostRuntime, removeHostRuntime, } from '../../host/host-runtime.js';
14
+ import { allTrackedHostPids, hostCodeVersion, isHostRunning, readHostRuntime, removeHostRuntime, } from '../../host/host-runtime.js';
14
15
  // Resolve lsof to a FIXED absolute path — never via $PATH (S4036: a writable PATH entry could shadow
15
16
  // the binary). null if lsof isn't installed, in which case port-owner detection/reaping degrade to no-op.
16
17
  const LSOF_PATH = ['/usr/sbin/lsof', '/usr/bin/lsof', '/bin/lsof'].find((p) => existsSync(p)) ?? null;
@@ -85,6 +86,11 @@ async function stopStack(options) {
85
86
  const standalone = readRuntime();
86
87
  const ports = profilePortList(host, standalone);
87
88
  let stopped = false;
89
+ // `--all`: evict rogue queue CONNECTIONS while the standalone Postgres is still up (slice 140) —
90
+ // must happen BEFORE we stop the standalone below, or there is no DB to evict against.
91
+ if (options.all && standalone && isAlive(standalone.pid)) {
92
+ await evictQueuePollers(getConfig().profile, standalone.pgPort);
93
+ }
88
94
  // Host first (it owns DBOS); then the standalone daemon underneath it.
89
95
  if (host && isAlive(host.pid)) {
90
96
  await stopProcess(host.pid);
@@ -107,8 +113,16 @@ async function stopStack(options) {
107
113
  reaped += 1;
108
114
  }
109
115
  }
116
+ // `--all`: also reap untracked rogue daemon/mcp PROCESSES machine-wide (durable stop — a killed
117
+ // connection alone reconnects), protecting every profile's tracked tree.
118
+ const reapedProcs = options.all ? await reapRogueProcesses() : 0;
119
+ const parts = [];
110
120
  if (reaped > 0)
111
- console.log(`stopped (reaped ${reaped} orphan process${reaped === 1 ? '' : 'es'})`);
121
+ parts.push(`${reaped} orphan port owner${reaped === 1 ? '' : 's'}`);
122
+ if (reapedProcs > 0)
123
+ parts.push(`${reapedProcs} rogue process${reapedProcs === 1 ? '' : 'es'}`);
124
+ if (parts.length > 0)
125
+ console.log(`stopped (reaped ${parts.join(', ')})`);
112
126
  else
113
127
  console.log(stopped ? 'stopped' : 'not running');
114
128
  }
@@ -172,6 +186,79 @@ async function censusQueuePollers(profile, pgPort) {
172
186
  await client.end().catch(() => undefined);
173
187
  }
174
188
  }
189
+ /**
190
+ * EVICT rogue queue connections (slice 140 Phase 2): `pg_terminate_backend` every foreign DBOS poller
191
+ * on this profile's `dbos` DB, in a TOCTOU loop (a rogue can dequeue a fresh row between census and
192
+ * kill). Profile-scoped by `datname` → never touches another profile. Needs BOTH `pg_read_all_stats`
193
+ * (to SEE foreign backends) and `pg_signal_backend` (to terminate); lacking either is reported, never
194
+ * silently treated as "no rogues".
195
+ */
196
+ async function evictQueuePollers(profile, pgPort) {
197
+ const idle = { converged: false, rounds: 0, terminated: 0, unavailable: true, cannotEvict: false };
198
+ const client = new pg.Client(`postgresql://revisium:password@localhost:${pgPort}/postgres`);
199
+ try {
200
+ await client.connect();
201
+ const cap = await client.query(`SELECT (current_setting('is_superuser') = 'on' OR pg_has_role(current_user, 'pg_read_all_stats', 'MEMBER')) AS can_see,
202
+ (current_setting('is_superuser') = 'on' OR pg_has_role(current_user, 'pg_signal_backend', 'MEMBER')) AS can_signal`);
203
+ if (cap.rows[0]?.['can_see'] !== true)
204
+ return idle;
205
+ if (cap.rows[0]?.['can_signal'] !== true) {
206
+ return { converged: false, rounds: 0, terminated: 0, unavailable: false, cannotEvict: true };
207
+ }
208
+ const owner = dbosExecutorId(profile);
209
+ const dbosDb = resolveDbosDbName();
210
+ const census = async () => {
211
+ const res = await client.query(`SELECT pid, application_name AS app FROM pg_stat_activity WHERE datname = $1 AND application_name LIKE 'dbos_transact_%'`, [dbosDb]);
212
+ return classifyQueuePollerRogues(res.rows.map((r) => ({ pid: Number(r['pid']), applicationName: String(r['app']) })), owner).map((r) => r.pid);
213
+ };
214
+ const terminate = async (pid) => {
215
+ await client.query('SELECT pg_terminate_backend($1)', [pid]);
216
+ };
217
+ const outcome = await evictByTermination(census, terminate);
218
+ return { ...outcome, unavailable: false, cannotEvict: false };
219
+ }
220
+ catch {
221
+ return idle; // census/terminate threw → not converged, never "clean"
222
+ }
223
+ finally {
224
+ await client.end().catch(() => undefined);
225
+ }
226
+ }
227
+ /**
228
+ * Durable stop: SIGTERM→SIGKILL the rogue revo daemon/mcp PROCESS (its DBOS pool would otherwise
229
+ * reconnect after `evictQueuePollers`). Protects the tracked daemon tree of EVERY profile — so a reap
230
+ * on one profile can never kill a sibling profile's live daemon. pid+start-time identity: re-check the
231
+ * start time before SIGKILL so a recycled pid (the rogue already exited) is never wrongly killed.
232
+ */
233
+ async function reapRogueProcesses() {
234
+ const protectedPids = new Set(allTrackedHostPids());
235
+ const candidates = [];
236
+ for (const { pid, command } of listProcesses()) {
237
+ if (pid === process.pid)
238
+ continue; // never reap the running CLI itself
239
+ const kind = classifyRevoProcess(command);
240
+ // Only reap a `__daemon` (always a full DBOS host → an untracked one is a genuine rogue). A modern
241
+ // `revo mcp` is a THIN bridge holding no DBOS connection — reaping it is pure collateral (drops a
242
+ // live MCP client), so it is left alone; its polling, if any legacy host, is handled by the
243
+ // connection eviction. (Reviewer-flagged: don't disrupt healthy bridges.)
244
+ if (kind === 'daemon')
245
+ candidates.push({ pid, command, startTime: processStartTime(pid), kind });
246
+ }
247
+ const targets = selectReapTargets(candidates, protectedPids, parentPid);
248
+ if (targets.length === 0)
249
+ return 0;
250
+ for (const t of targets)
251
+ killTree(t.pid, 'SIGTERM');
252
+ if (!(await waitForExit(targets[targets.length - 1].pid, 8_000))) {
253
+ await new Promise((resolve) => setTimeout(resolve, 1_000));
254
+ }
255
+ for (const t of targets) {
256
+ // SIGKILL only if STILL the same process (start-time unchanged) — defeats pid reuse.
257
+ if (isAlive(t.pid) && processStartTime(t.pid) === t.startTime)
258
+ killTree(t.pid, 'SIGKILL');
259
+ }
260
+ return targets.length;
261
+ }
175
262
  /** `revo doctor` — diagnose the stack as a pure client: process/port/profile/stale-file health. */
176
263
  async function doctorStack(options) {
177
264
  applyProfileEnv(options);
@@ -238,13 +325,29 @@ async function doctorStack(options) {
238
325
  });
239
326
  console.log(`Profile: ${profile}`);
240
327
  console.log(`Data dir: ${dataDir}`);
241
- if (report.ok) {
328
+ if (report.ok)
242
329
  console.log('OK — stack is healthy.');
243
- return;
330
+ else {
331
+ for (const issue of report.issues)
332
+ console.log(`✗ ${issue}`);
333
+ process.exitCode = 1;
334
+ }
335
+ // `--fix`: actively evict the rogues `doctor` reports — terminate their queue connections, then
336
+ // reap the untracked process (durable, cross-profile-safe). slice 140 Phase 2.
337
+ if (options.fix) {
338
+ console.log('— fix: evicting rogue queue pollers —');
339
+ if (standalone && standaloneAlive) {
340
+ const e = await evictQueuePollers(profile, standalone.pgPort);
341
+ if (e.unavailable)
342
+ console.log(' connection eviction unavailable (DB unreachable / missing pg_read_all_stats)');
343
+ else if (e.cannotEvict)
344
+ console.log(' cannot terminate: role lacks pg_signal_backend');
345
+ else
346
+ console.log(` terminated ${e.terminated} rogue connection(s) — ${e.converged ? 'converged' : 'NOT converged (reconnecting; process reap follows)'}`);
347
+ }
348
+ const reaped = await reapRogueProcesses();
349
+ console.log(` reaped ${reaped} untracked revo process${reaped === 1 ? '' : 'es'}`);
244
350
  }
245
- for (const issue of report.issues)
246
- console.log(`✗ ${issue}`);
247
- process.exitCode = 1;
248
351
  }
249
352
  /** Resolve which logs to read: `host`, `standalone`, or both (default). Profile-scoped paths. */
250
353
  function resolveLogTargets(target) {
@@ -326,6 +429,7 @@ export function registerLifecycle(program) {
326
429
  .command('stop')
327
430
  .description('Stop the Revo stack (host daemon first, then standalone)')
328
431
  .option('--profile <name>', 'Runtime profile (default|dev)')
432
+ .option('--all', 'Also evict rogue queue pollers + reap untracked revo processes machine-wide')
329
433
  .action((options) => stopStack(options));
330
434
  program
331
435
  .command('status')
@@ -341,6 +445,7 @@ export function registerLifecycle(program) {
341
445
  .command('doctor')
342
446
  .description('Diagnose the Revo stack (process/port/profile health)')
343
447
  .option('--profile <name>', 'Runtime profile (default|dev)')
448
+ .option('--fix', 'Evict rogue queue pollers (terminate connections + reap untracked processes)')
344
449
  .action((options) => doctorStack(options));
345
450
  program
346
451
  .command('logs [target]')
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/cli/commands/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/cli/commands/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,13 @@ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprot
6
6
  import { readPackageVersion } from '../../package-info.js';
7
7
  import { ensureHost } from '../../host/ensure-host.js';
8
8
  import { readHostRuntime } from '../../host/host-runtime.js';
9
+ /**
10
+ * Explicit inner-hop (bridge→daemon) request timeout. Matches the SDK's DEFAULT_REQUEST_TIMEOUT_MSEC
11
+ * but pins it intentionally: the daemon's longest tool (wait_for_any_gate / watch_runs) holds a single
12
+ * request ≤45s, comfortably under this — so a bounded long-poll resolves over the bridge, while a hung
13
+ * daemon call still fails fast instead of waiting forever.
14
+ */
15
+ const INNER_HOP_TIMEOUT_MS = 60_000;
9
16
  /**
10
17
  * `revo mcp` — a thin stdio↔daemon MCP bridge (ADR 0006). It ensures the host daemon is up, then
11
18
  * proxies tool list/call from the stdio client (Claude Code) to the daemon's in-process MCP server
@@ -26,7 +33,7 @@ async function runMcpBridge() {
26
33
  // Downstream stdio server (faces Claude Code) — forwards tools to the daemon's MCP server.
27
34
  const server = new Server({ name: 'revo', version }, { capabilities: { tools: {} } });
28
35
  server.setRequestHandler(ListToolsRequestSchema, () => upstream.listTools());
29
- server.setRequestHandler(CallToolRequestSchema, (request) => upstream.callTool(request.params));
36
+ server.setRequestHandler(CallToolRequestSchema, (request) => upstream.callTool(request.params, undefined, { timeout: INNER_HOP_TIMEOUT_MS }));
30
37
  const transport = new StdioServerTransport();
31
38
  const closed = new Promise((resolve) => {
32
39
  transport.onclose = () => resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,28 @@ import { existsSync } from 'node:fs';
10
10
  // Resolve ps to a FIXED absolute path — never via $PATH (S4036: a writable PATH entry could shadow
11
11
  // the binary). null if ps is unavailable, in which case ancestry checks degrade to "not within".
12
12
  const PS_PATH = ['/bin/ps', '/usr/bin/ps'].find((p) => existsSync(p)) ?? null;
13
+ /** All processes as `{pid, command}` via `ps -ax` (full command line). Empty if ps is unavailable. */
14
+ export function listProcesses() {
15
+ if (PS_PATH === null)
16
+ return [];
17
+ try {
18
+ const out = execFileSync(PS_PATH, ['-axww', '-o', 'pid=,command='], {
19
+ encoding: 'utf8',
20
+ stdio: ['ignore', 'pipe', 'ignore'],
21
+ maxBuffer: 8 * 1024 * 1024,
22
+ });
23
+ const procs = [];
24
+ for (const line of out.split('\n')) {
25
+ const m = line.match(/^\s*(\d+)\s+(.*)$/);
26
+ if (m)
27
+ procs.push({ pid: Number(m[1]), command: m[2] });
28
+ }
29
+ return procs;
30
+ }
31
+ catch {
32
+ return [];
33
+ }
34
+ }
13
35
  /** Parent pid of `pid` via ps, or null (no such process / ps unavailable). Best-effort. */
14
36
  export function parentPid(pid) {
15
37
  if (PS_PATH === null)
@@ -26,6 +48,26 @@ export function parentPid(pid) {
26
48
  return null; // process gone / ps error
27
49
  }
28
50
  }
51
+ /**
52
+ * Process start time as an opaque stable string (`ps -o lstart=`, portable on macOS + Linux — avoids
53
+ * brittle `/proc/<pid>/stat` parsing). Returns null if the process is gone / ps unavailable. Paired
54
+ * with the pid it forms a reuse-proof identity: a recycled pid gets a different start time, so the
55
+ * rogue reaper re-checks it before SIGKILL and never kills an innocent process that inherited the pid.
56
+ */
57
+ export function processStartTime(pid) {
58
+ if (PS_PATH === null)
59
+ return null;
60
+ try {
61
+ const out = execFileSync(PS_PATH, ['-o', 'lstart=', '-p', String(pid)], {
62
+ encoding: 'utf8',
63
+ stdio: ['ignore', 'pipe', 'ignore'],
64
+ }).trim();
65
+ return out.length > 0 ? out : null;
66
+ }
67
+ catch {
68
+ return null; // process gone / ps error
69
+ }
70
+ }
29
71
  /**
30
72
  * True if `pid` is one of `ancestors`, or descends from one — walking the parent chain via `getParent`.
31
73
  * `getParent` is injectable so the traversal is unit-testable without real processes; production passes
@@ -1 +1 @@
1
- {"version":3,"file":"process-tree.js","sourceRoot":"","sources":["../../../src/cli/commands/process-tree.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,mGAAmG;AACnG,iGAAiG;AACjG,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAE9E,2FAA2F;AAC3F,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;YACpE,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,0BAA0B;IACzC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,GAAW,EACX,SAA8B,EAC9B,YAA0C,SAAS,EACnD,OAAO,GAAG,EAAE;IAEZ,IAAI,OAAO,GAAkB,GAAG,CAAC;IACjC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAClE,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,OAAO,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,0DAA0D;QAC1F,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,2DAA2D;AAC3E,CAAC"}
1
+ {"version":3,"file":"process-tree.js","sourceRoot":"","sources":["../../../src/cli/commands/process-tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Rogue-reaper (slice 140 Phase 2, pure core). `revo doctor --fix` / `revo stop --all` actively EVICT
3
+ * a legacy/duplicate daemon that polls the `dev-tasks` queue but the advisory lock can't coordinate and
4
+ * the port-based stop can't see (it's an outbound poller with no inbound listener). Two mechanisms:
5
+ *
6
+ * 1. Connection eviction — `pg_terminate_backend` the rogue's DBOS connection (the immediate stop),
7
+ * looped to defeat the census→kill TOCTOU (a rogue can dequeue a fresh row in that window).
8
+ * 2. Process reap — SIGTERM→SIGKILL the rogue PROCESS (the durable stop; its pool would otherwise
9
+ * reconnect). This is what the manual `pkill -f "revo mcp"` did, made safe + permanent.
10
+ *
11
+ * This module holds the PURE, unit-tested decisions; the pg/ps/kill IO lives in lifecycle.ts.
12
+ */
13
+ import { isPidWithin } from './process-tree.js';
14
+ /**
15
+ * Classify a process command line as a revo daemon / mcp-bridge, or null if unrelated.
16
+ *
17
+ * Keys on (revo entry token) + (subcommand token). The npm-GLOBAL install runs as
18
+ * `node …/bin/revo __daemon` — argv[1] is the bin SYMLINK (`bin/revo`, no `.js`); the package's own
19
+ * `bin/revo.js` does `import '../dist/cli/index.js'` (no re-exec); dev runs as
20
+ * `node --import tsx …/src/cli/index.ts __daemon`; a compiled run as `…/dist/cli/index.js`. Matching
21
+ * only `dist/cli/index.js` (or only `bin/revo.js`) MISSES the real installed daemon and the reap
22
+ * no-ops against the very process it must kill. The subcommand must be a whole word so an unrelated
23
+ * command merely containing "mcp" (e.g. `node /opt/mcp-server.js`) is not matched.
24
+ */
25
+ export function classifyRevoProcess(command) {
26
+ const hasEntry = /\/bin\/revo(?:\.js)?(?:\s|$)/.test(command) || /\/cli\/index\.(?:ts|js)(?:\s|$)/.test(command);
27
+ if (!hasEntry)
28
+ return null;
29
+ if (/(?:^|\s)__daemon(?:\s|$)/.test(command))
30
+ return 'daemon';
31
+ if (/(?:^|\s)mcp(?:\s|$)/.test(command))
32
+ return 'mcp';
33
+ return null;
34
+ }
35
+ /**
36
+ * The reap targets: revo daemon/mcp processes NOT within any PROTECTED tree (every profile's tracked
37
+ * daemon pid-tree). A process inside a tracked tree is the live stack — never reaped. `getParent` is
38
+ * injected so the ancestry walk is unit-testable without real processes.
39
+ */
40
+ export function selectReapTargets(procs, protectedPids, getParent) {
41
+ return procs.filter((proc) => !isPidWithin(proc.pid, protectedPids, getParent));
42
+ }
43
+ /**
44
+ * Connection-eviction TOCTOU loop. `census()` returns the current rogue backend pids (it THROWS if the
45
+ * roster can't be read — privilege/DB error — which must propagate as "not converged", never as empty);
46
+ * `terminate(pid)` kills one backend. Re-census after each round because a rogue can transition a fresh
47
+ * ENQUEUED row to its own PENDING between the census and the kill. Bounded by `maxRounds`.
48
+ */
49
+ export async function evictByTermination(census, terminate, maxRounds = 5) {
50
+ let terminated = 0;
51
+ for (let round = 1; round <= maxRounds; round += 1) {
52
+ const rogues = await census();
53
+ if (rogues.length === 0)
54
+ return { converged: true, rounds: round, terminated };
55
+ for (const pid of rogues) {
56
+ await terminate(pid);
57
+ terminated += 1;
58
+ }
59
+ }
60
+ const remaining = await census();
61
+ return { converged: remaining.length === 0, rounds: maxRounds, terminated };
62
+ }
63
+ //# sourceMappingURL=rogue-reaper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rogue-reaper.js","sourceRoot":"","sources":["../../../src/cli/commands/rogue-reaper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,QAAQ,GACZ,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClG,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9D,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,IAAI,CAAC;AACd,CAAC;AAID;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA8B,EAC9B,aAAkC,EAClC,SAAyC;IAEzC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAClF,CAAC;AAID;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA+B,EAC/B,SAAyC,EACzC,SAAS,GAAG,CAAC;IAEb,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC/E,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;YACrB,UAAU,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,MAAM,EAAE,CAAC;IACjC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E,CAAC"}
package/dist/config.js CHANGED
@@ -46,6 +46,15 @@ export function resolveProfileName(env = process.env) {
46
46
  throw new Error(`Unknown REVO_PROFILE '${raw}'. Known profiles: ${Object.keys(PROFILES).join(', ')}. ` +
47
47
  'Set REVO_DATA_DIR/REVO_PORT/REVO_PG_PORT/REVO_DBOS_DB explicitly for a custom layout.');
48
48
  }
49
+ /**
50
+ * Band-default data dir for a SPECIFIC profile (config-file base + the profile's suffix). Deliberately
51
+ * ignores `REVO_DATA_DIR` — that env var overrides only the ACTIVE profile, so for enumerating SIBLING
52
+ * profiles' tracked daemons (the cross-profile-safe reap, slice 140 Phase 2) we must use band defaults.
53
+ * Returns the band-default dir for every profile; a custom REVO_DATA_DIR layout is not enumerable here.
54
+ */
55
+ export function profileDataDir(profile) {
56
+ return expandHome(`${loadConfig().dataDir}${PROFILES[profile].suffix}`);
57
+ }
49
58
  /**
50
59
  * Layer profile + env into the data dir and ports: the profile sets the band, then an explicit
51
60
  * REVO_* env var overrides that single knob. Pure (no fs) so the precedence is unit-testable.
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -83,11 +83,24 @@ export async function bootstrapControlPlane(httpPort, client = new RevisiumClien
83
83
  * Installed playbooks read from a FRESH client at HEAD — the presence signal for the default-playbook
84
84
  * seed when it runs before the daemon's service layer exists. A fresh client resolves the current head
85
85
  * each call, so it reflects bootstrap/earlier commits made in the same boot (unlike a cached scope).
86
+ * Carries both `version` and `catalogHash` so the seed can use the content fingerprint (B1) and fall
87
+ * back to version compare for legacy rows that predate the hash signal.
86
88
  */
87
89
  export async function listInstalledPlaybooks(httpPort, client = new RevisiumClient({ baseUrl: baseUrl(httpPort) })) {
88
90
  const { org, project, branch } = getConfig();
89
91
  const head = await client.revision({ org, project, branch, revision: 'head' });
90
92
  const rows = await head.getRows('playbooks', { first: 1000 });
91
- return (rows.edges ?? []).flatMap((edge) => (edge.node ? [{ id: edge.node.id }] : []));
93
+ return (rows.edges ?? []).flatMap((edge) => {
94
+ if (!edge.node)
95
+ return [];
96
+ const data = edge.node.data;
97
+ const version = data?.version;
98
+ const catalogHash = data?.catalog_hash;
99
+ return [{
100
+ id: edge.node.id,
101
+ version: typeof version === 'string' && version ? version : undefined,
102
+ catalogHash: typeof catalogHash === 'string' && catalogHash ? catalogHash : undefined,
103
+ }];
104
+ });
92
105
  }
93
106
  //# sourceMappingURL=bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/control-plane/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAKrE;;;GAGG;AACH,SAAS,eAAe,CAAC,GAAY;IACnC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,GAAiD,CAAC;QAC5D,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;IAC5D,CAAC;IACD,OAAO,8BAA8B,CAAC,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAgB,EAChB,SAAyB,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IAE3E,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAoB,CAAC;IAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/C,wDAAwD;IACxD,IAAI,aAAa,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,CAAC;QACrC,aAAa,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,uEAAuE;IACvE,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;IACpD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QAChE,MAAM,YAAY,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,kGAAkG;IAClG,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,MAAM,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACxE,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACpC,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YACrC,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACxD,WAAW,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,8BAA8B,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB,EAChB,SAAyB,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IAE3E,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/control-plane/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -174,6 +174,6 @@ export function createClientTransport(mode) {
174
174
  }), `${table}/${rowId}`);
175
175
  return toTransportRow(extractMutationRow({ data: resultData }));
176
176
  }
177
- return { mode, assertReady, listRows, getRow, createRow, updateRow, patchRow };
177
+ return { mode, assertReady, listRows, getRow, createRow, updateRow, patchRow, invalidate: () => resolveScope.invalidate() };
178
178
  }
179
179
  //# sourceMappingURL=client-transport.js.map