@sensigo/realm-cli 0.38.0 → 0.39.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.
- package/dist/agent/run-attach.d.ts.map +1 -1
- package/dist/agent/run-attach.js +33 -10
- package/dist/agent/run-attach.js.map +1 -1
- package/dist/commands/abandon.d.ts.map +1 -1
- package/dist/commands/abandon.js +8 -1
- package/dist/commands/abandon.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +21 -9
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/export.d.ts +5 -2
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +1 -1
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/gc.d.ts +1 -1
- package/dist/commands/gc.d.ts.map +1 -1
- package/dist/commands/gc.js +29 -4
- package/dist/commands/gc.js.map +1 -1
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +44 -1
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/listen.d.ts.map +1 -1
- package/dist/commands/listen.js +9 -5
- package/dist/commands/listen.js.map +1 -1
- package/dist/commands/run-migrate.d.ts +83 -0
- package/dist/commands/run-migrate.d.ts.map +1 -0
- package/dist/commands/run-migrate.js +303 -0
- package/dist/commands/run-migrate.js.map +1 -0
- package/dist/commands-registry.d.ts.map +1 -1
- package/dist/commands-registry.js +4 -0
- package/dist/commands-registry.js.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
// run-migrate.ts — `realm run migrate --stamp-seals` (issue #367, part 3).
|
|
2
|
+
//
|
|
3
|
+
// The vehicle the shipped `gc --heal` note promises operators. It walks every terminal run and
|
|
4
|
+
// gives each one the seal arm it has always meant, WITHOUT touching the retention clock — which is
|
|
5
|
+
// the whole reason it exists rather than letting `--heal` rewrite the same population and reset
|
|
6
|
+
// `updated_at` on all of it.
|
|
7
|
+
//
|
|
8
|
+
// The sweep is TWO-ARMED, and that is load-bearing. An unstamped-only filter would leave the
|
|
9
|
+
// `incoherent` bucket with no population at all: the records it exists to surface are precisely
|
|
10
|
+
// the STAMPED ones whose arm disagrees with their own prose or markers, and the store boundary
|
|
11
|
+
// deliberately abstains on the abandon-marker case, so nothing else in the system can see them.
|
|
12
|
+
//
|
|
13
|
+
// It writes only through `RunStore.stampSeal`. It never rewrites a record it cannot classify, and
|
|
14
|
+
// never auto-corrects one it finds incoherent — an operator adjudicates those.
|
|
15
|
+
import { Command } from 'commander';
|
|
16
|
+
import { classifyLegacySeal, armToPhase } from '@sensigo/realm';
|
|
17
|
+
function emptyBuckets() {
|
|
18
|
+
return {
|
|
19
|
+
stamped: [],
|
|
20
|
+
already_stamped: [],
|
|
21
|
+
unclassifiable: [],
|
|
22
|
+
incoherent: [],
|
|
23
|
+
skipped_conflict: [],
|
|
24
|
+
failed: [],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Why a record could not be classified — phrased for an operator, and deliberately phrased to
|
|
29
|
+
* avoid the terminal-writer census's own token: a printed diagnostic must never look like source
|
|
30
|
+
* code that writes a seal.
|
|
31
|
+
*/
|
|
32
|
+
function whyUnclassifiable(run) {
|
|
33
|
+
if (run.terminal_reason === undefined) {
|
|
34
|
+
return 'no terminal reason recorded and no marker to read';
|
|
35
|
+
}
|
|
36
|
+
return `terminal reason "${run.terminal_reason.slice(0, 80)}" matches no known seal shape`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The exit taxonomy, aligned with the house rule every other sweep command follows (`gc`'s own,
|
|
40
|
+
* gc.ts): **exit 1 means THIS COMMAND failed to do its job.** A write that errored is that. A
|
|
41
|
+
* record nobody can classify is not — the command did exactly what it should, and said so loudly.
|
|
42
|
+
*
|
|
43
|
+
* That distinction matters more here than usual, because residue is CHRONIC: an unclassifiable
|
|
44
|
+
* record stays unclassifiable, so a nonzero exit on residue would make every scheduled run of this
|
|
45
|
+
* command fail forever, and the first thing an operator does with a chronic alarm is silence it.
|
|
46
|
+
*
|
|
47
|
+
* Automation that genuinely wants to gate on residue opts in with `--detailed-exitcode`, which
|
|
48
|
+
* turns the two outcomes into a three-way: 0 clean · 1 the command failed · 2 succeeded, residue
|
|
49
|
+
* remains. Same shape as `grep`, `git diff --exit-code` and Terraform's `-detailed-exitcode` — a
|
|
50
|
+
* machine-readable answer that needs no prose parsing, and that naive pipelines never inherit.
|
|
51
|
+
*/
|
|
52
|
+
export function migrateExitCode(buckets, options = {}) {
|
|
53
|
+
if (buckets.failed.length > 0)
|
|
54
|
+
return 1;
|
|
55
|
+
if (options.detailed === true &&
|
|
56
|
+
(buckets.unclassifiable.length > 0 || buckets.incoherent.length > 0)) {
|
|
57
|
+
return 2;
|
|
58
|
+
}
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The sweep. Pure over its injected store, so the acceptance suite drives it directly.
|
|
63
|
+
*
|
|
64
|
+
* `not_terminal` refusals from `stampSeal` are STATED-UNREACHABLE here rather than bucketed: this
|
|
65
|
+
* loop only offers terminal records, and any terminal→live flip bumps `version`, so the CAS
|
|
66
|
+
* refuses first and the record lands in `skipped_conflict`.
|
|
67
|
+
*/
|
|
68
|
+
export async function migrateStampSeals(runStore, options = {}) {
|
|
69
|
+
if (runStore.stampSeal === undefined) {
|
|
70
|
+
throw new Error('This store does not implement stampSeal, so `realm run migrate --stamp-seals` cannot ' +
|
|
71
|
+
'write to it. Records stay readable and correct without migrating — the read path ' +
|
|
72
|
+
'recovers a legacy arm wherever one is recoverable, and the rest still derive correctly from ' +
|
|
73
|
+
'the legacy ladder. To materialise the arms, use the tooling that owns ' +
|
|
74
|
+
'this store.');
|
|
75
|
+
}
|
|
76
|
+
const buckets = emptyBuckets();
|
|
77
|
+
const all = await runStore.list();
|
|
78
|
+
for (const run of all) {
|
|
79
|
+
if (!run.terminal_state)
|
|
80
|
+
continue;
|
|
81
|
+
// ARM 2 — already stamped: audit the arm against the record's own evidence.
|
|
82
|
+
if (run.sealed_by !== undefined) {
|
|
83
|
+
// A ruled record is done. An operator looked at it and said what it is, which outranks
|
|
84
|
+
// anything the classifier can infer from prose — and re-examining it every sweep is exactly
|
|
85
|
+
// the loop the ruling was made to end.
|
|
86
|
+
if (run.sealed_by.adjudicated !== undefined) {
|
|
87
|
+
buckets.already_stamped.push({ id: run.id, verified: true, ruled: true });
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
// The FULL markers-first classifier, deliberately: the store boundary's comparator abstains
|
|
91
|
+
// on abandon-marker records, and those are exactly the stale arms nothing else observes.
|
|
92
|
+
const classified = classifyLegacySeal(run);
|
|
93
|
+
// PHASE level, not arm level. The classifier can only ever recover `complete` from a
|
|
94
|
+
// completed run's prose, so comparing arms would report every `gate_resolution_complete` and
|
|
95
|
+
// `guard_pass_complete` stamp as a disagreement.
|
|
96
|
+
if (classified === undefined) {
|
|
97
|
+
// Abstained: nothing to compare against. The arm stands, unverified.
|
|
98
|
+
buckets.already_stamped.push({ id: run.id, verified: false });
|
|
99
|
+
}
|
|
100
|
+
else if (armToPhase(classified) === armToPhase(run.sealed_by.arm)) {
|
|
101
|
+
buckets.already_stamped.push({ id: run.id, verified: true });
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
buckets.incoherent.push({
|
|
105
|
+
id: run.id,
|
|
106
|
+
arm: run.sealed_by.arm,
|
|
107
|
+
classified,
|
|
108
|
+
arm_phase: armToPhase(run.sealed_by.arm),
|
|
109
|
+
classified_phase: armToPhase(classified),
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
// ARM 1 — unstamped: classify, then stamp.
|
|
115
|
+
const arm = classifyLegacySeal(run);
|
|
116
|
+
if (arm === undefined) {
|
|
117
|
+
buckets.unclassifiable.push({ id: run.id, why: whyUnclassifiable(run) });
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const phaseBefore = run.run_phase;
|
|
121
|
+
const phaseAfter = armToPhase(arm);
|
|
122
|
+
if (options.force !== true) {
|
|
123
|
+
buckets.stamped.push({ id: run.id, arm, phase_before: phaseBefore, phase_after: phaseAfter });
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
// `classified: true` marks this stamp as CLASSIFIER-minted, forever distinguishable from a
|
|
128
|
+
// writer's own assertion. `step` is never fabricated.
|
|
129
|
+
const result = await runStore.stampSeal(run.id, { arm, classified: true }, run.version);
|
|
130
|
+
if (result.stamped) {
|
|
131
|
+
buckets.stamped.push({
|
|
132
|
+
id: run.id,
|
|
133
|
+
arm,
|
|
134
|
+
phase_before: phaseBefore,
|
|
135
|
+
phase_after: result.run.run_phase,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// The record gained an arm between the sweep's read and this write; nothing to verify.
|
|
140
|
+
buckets.already_stamped.push({ id: run.id, verified: false });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
const code = err.code;
|
|
145
|
+
if (code === 'STATE_SNAPSHOT_MISMATCH') {
|
|
146
|
+
buckets.skipped_conflict.push(run.id);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
buckets.failed.push({
|
|
150
|
+
id: run.id,
|
|
151
|
+
error: err instanceof Error ? err.message : String(err),
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return buckets;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* `armToPhase` is total over `SEAL_ARMS`, and returns JS `undefined` for anything else — so an arm
|
|
160
|
+
* written by a NEWER binary interpolated straight into a report line as "phase undefined", which
|
|
161
|
+
* reads like a bug in this command rather than a record it cannot interpret.
|
|
162
|
+
*/
|
|
163
|
+
function phaseLabel(phase) {
|
|
164
|
+
return phase === undefined
|
|
165
|
+
? 'phase unknown to this binary (written by a newer version?)'
|
|
166
|
+
: `phase ${phase}`;
|
|
167
|
+
}
|
|
168
|
+
/** The ordering instruction, live since the vehicle exists. */
|
|
169
|
+
export const ORDERING_LINE = 'Run `realm run migrate --stamp-seals` BEFORE `realm run gc --heal` after upgrading across ' +
|
|
170
|
+
'#367 if retention clocks matter: heal rewrites the same records and resets updated_at, which ' +
|
|
171
|
+
'this command deliberately preserves.';
|
|
172
|
+
/** Renders the report. Returned as lines so the output cells can read it without capturing stdout. */
|
|
173
|
+
export function renderMigrateReport(buckets, options = {}) {
|
|
174
|
+
const force = options.force === true;
|
|
175
|
+
const lines = [];
|
|
176
|
+
const nothing = buckets.stamped.length === 0 &&
|
|
177
|
+
buckets.already_stamped.length === 0 &&
|
|
178
|
+
buckets.unclassifiable.length === 0 &&
|
|
179
|
+
buckets.incoherent.length === 0 &&
|
|
180
|
+
buckets.skipped_conflict.length === 0 &&
|
|
181
|
+
buckets.failed.length === 0;
|
|
182
|
+
// "every terminal run already carries its seal arm" is a UNIVERSAL claim, and four different
|
|
183
|
+
// buckets can each falsify it: a record nobody could classify, one whose write failed, one whose
|
|
184
|
+
// arm contradicts itself, and one a concurrent writer moved. It may only be appended when all
|
|
185
|
+
// four are empty. It shipped appended unconditionally, printed directly above the very records
|
|
186
|
+
// that disprove it.
|
|
187
|
+
const everyRunArmed = buckets.unclassifiable.length === 0 &&
|
|
188
|
+
buckets.incoherent.length === 0 &&
|
|
189
|
+
buckets.failed.length === 0 &&
|
|
190
|
+
buckets.skipped_conflict.length === 0;
|
|
191
|
+
if (nothing) {
|
|
192
|
+
lines.push('No terminal runs found to migrate.');
|
|
193
|
+
}
|
|
194
|
+
else if (buckets.stamped.length > 0) {
|
|
195
|
+
lines.push(force
|
|
196
|
+
? `Stamped ${buckets.stamped.length} run(s) with their seal arm.`
|
|
197
|
+
: `${buckets.stamped.length} run(s) WOULD be stamped:`);
|
|
198
|
+
for (const e of buckets.stamped) {
|
|
199
|
+
const phase = e.phase_before === e.phase_after ? e.phase_after : `${e.phase_before} → ${e.phase_after}`;
|
|
200
|
+
lines.push(` • ${e.id}: ${e.arm} (phase ${phase})`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
else if (force) {
|
|
204
|
+
lines.push(everyRunArmed
|
|
205
|
+
? 'Nothing to stamp — every terminal run already carries its seal arm.'
|
|
206
|
+
: 'Nothing was stamped.');
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
lines.push(everyRunArmed
|
|
210
|
+
? 'Nothing would be stamped — every terminal run already carries its seal arm.'
|
|
211
|
+
: 'Nothing would be stamped.');
|
|
212
|
+
}
|
|
213
|
+
if (buckets.already_stamped.length > 0) {
|
|
214
|
+
// "Coherent" is a finding, and the audit cannot make it when the classifier abstains — a
|
|
215
|
+
// record whose own evidence places it nowhere has an arm that stands UNVERIFIED, not one that
|
|
216
|
+
// has been checked and agreed with.
|
|
217
|
+
// Three disjoint groups, and the arithmetic is pinned by a cell: X + R + U = N.
|
|
218
|
+
const ruled = buckets.already_stamped.filter((e) => e.ruled === true).length;
|
|
219
|
+
const checked = buckets.already_stamped.filter((e) => e.verified && e.ruled !== true).length;
|
|
220
|
+
const unverified = buckets.already_stamped.filter((e) => !e.verified).length;
|
|
221
|
+
if (ruled === 0 && unverified === 0) {
|
|
222
|
+
lines.push(`${buckets.already_stamped.length} run(s) already stamped, and their arms agree with the record.`);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
// "Their arms agree with the record" would be FALSE for a ruled record whose prose still
|
|
226
|
+
// disagrees — the ruling stands over that disagreement rather than resolving it. So any
|
|
227
|
+
// ruled record forces the split form, and the ruled segment always shows when there is one.
|
|
228
|
+
const segments = [];
|
|
229
|
+
if (checked > 0)
|
|
230
|
+
segments.push(`${checked} checked against the record`);
|
|
231
|
+
if (ruled > 0)
|
|
232
|
+
segments.push(`${ruled} ruled by an operator — the ruling stands`);
|
|
233
|
+
if (unverified > 0) {
|
|
234
|
+
segments.push(`${unverified} unverifiable — nothing in the record to check the arm against`);
|
|
235
|
+
}
|
|
236
|
+
lines.push(`${buckets.already_stamped.length} run(s) already stamped (${segments.join(', ')}).`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
if (buckets.unclassifiable.length > 0) {
|
|
240
|
+
lines.push(`${buckets.unclassifiable.length} run(s) could NOT be classified and were left untouched:`);
|
|
241
|
+
for (const e of buckets.unclassifiable)
|
|
242
|
+
lines.push(` • ${e.id}: ${e.why}`);
|
|
243
|
+
}
|
|
244
|
+
if (buckets.incoherent.length > 0) {
|
|
245
|
+
lines.push(`${buckets.incoherent.length} run(s) carry an arm that disagrees with their own record — ` +
|
|
246
|
+
`adjudicate these yourself; nothing was rewritten:`);
|
|
247
|
+
for (const e of buckets.incoherent) {
|
|
248
|
+
lines.push(` • ${e.id}: recorded arm '${e.arm}' (${phaseLabel(e.arm_phase)}), but the record's own ` +
|
|
249
|
+
`markers/prose read as '${e.classified}' (${phaseLabel(e.classified_phase)})`);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (buckets.skipped_conflict.length > 0) {
|
|
253
|
+
lines.push(`${buckets.skipped_conflict.length} run(s) skipped — a concurrent writer moved them; ` +
|
|
254
|
+
`their own next write path owns them.`);
|
|
255
|
+
for (const id of buckets.skipped_conflict)
|
|
256
|
+
lines.push(` • ${id} (skipped — concurrent write)`);
|
|
257
|
+
}
|
|
258
|
+
if (buckets.failed.length > 0) {
|
|
259
|
+
lines.push(`${buckets.failed.length} run(s) FAILED to stamp and still have no seal arm:`);
|
|
260
|
+
for (const f of buckets.failed)
|
|
261
|
+
lines.push(` ✗ ${f.id}: ${f.error}`);
|
|
262
|
+
}
|
|
263
|
+
// Only offer the next step when there IS one: on a corpus of nothing but unclassifiable records,
|
|
264
|
+
// `--force` stamps exactly nothing, and inviting the operator to run it is a wasted round trip.
|
|
265
|
+
if (!force && buckets.stamped.length > 0)
|
|
266
|
+
lines.push('Re-run with --force to actually stamp.');
|
|
267
|
+
// RESIDUE = terminal runs that will still have no recorded arm when this run ends. A failed
|
|
268
|
+
// write leaves the record armless just as surely as an unclassifiable one does — omitting it
|
|
269
|
+
// printed "Residue: 0" directly above a record that had failed to stamp. In a dry run nothing is
|
|
270
|
+
// written, so the would-be-stamped records still count.
|
|
271
|
+
const residue = buckets.unclassifiable.length + buckets.failed.length + (force ? 0 : buckets.stamped.length);
|
|
272
|
+
const skipped = buckets.skipped_conflict.length > 0
|
|
273
|
+
? ` (+${buckets.skipped_conflict.length} skipped — arm state unknown until their own writer settles)`
|
|
274
|
+
: '';
|
|
275
|
+
lines.push(`Residue: ${residue} terminal run(s) still without a recorded seal arm.${skipped}`);
|
|
276
|
+
lines.push(ORDERING_LINE);
|
|
277
|
+
return lines;
|
|
278
|
+
}
|
|
279
|
+
export const runMigrateCommand = new Command('migrate')
|
|
280
|
+
.description('Materialise recorded seal arms on legacy terminal runs (issue #367)')
|
|
281
|
+
.requiredOption('--stamp-seals', 'Stamp each terminal run with the seal arm it has always meant')
|
|
282
|
+
.option('--force', 'Actually write the stamps (without this, the sweep is a dry run)')
|
|
283
|
+
.option('--detailed-exitcode', 'Three-way exit for automation: 0 clean, 1 the command failed, 2 succeeded but residue ' +
|
|
284
|
+
'remains (the shape grep, `git diff --exit-code` and Terraform use). Opt-in, so a naive ' +
|
|
285
|
+
'pipeline never inherits a chronic alarm from records that can never be classified.')
|
|
286
|
+
.action(async (opts) => {
|
|
287
|
+
const { JsonFileStore } = await import('@sensigo/realm');
|
|
288
|
+
const runStore = new JsonFileStore();
|
|
289
|
+
try {
|
|
290
|
+
const buckets = await migrateStampSeals(runStore, { force: opts.force ?? false });
|
|
291
|
+
for (const line of renderMigrateReport(buckets, { force: opts.force ?? false })) {
|
|
292
|
+
console.log(line);
|
|
293
|
+
}
|
|
294
|
+
process.exitCode = migrateExitCode(buckets, { detailed: opts.detailedExitcode ?? false });
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
// The batch never started, or stopped before writing — say so, rather than emitting a bare
|
|
298
|
+
// errno an operator has to guess the scope of.
|
|
299
|
+
console.error(`migrate ABORTED before writing anything: ${err instanceof Error ? err.message : String(err)}`);
|
|
300
|
+
process.exit(1);
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
//# sourceMappingURL=run-migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-migrate.js","sourceRoot":"","sources":["../../src/commands/run-migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands-registry.d.ts","sourceRoot":"","sources":["../src/commands-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands-registry.d.ts","sourceRoot":"","sources":["../src/commands-registry.ts"],"names":[],"mappings":"AAkCA,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,+BAQ5B,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,WAAW,+BAiBvB,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,+BAM5B,CAAC"}
|
|
@@ -25,6 +25,9 @@ import { listCommand } from './commands/list.js';
|
|
|
25
25
|
import { mcpCommand } from './commands/mcp.js';
|
|
26
26
|
import { serveCommand } from './commands/serve.js';
|
|
27
27
|
import { migrateCommand } from './commands/migrate.js';
|
|
28
|
+
// issue #367 (part 3): the run-scoped sibling of `realm workflow migrate` — different group, no
|
|
29
|
+
// collision.
|
|
30
|
+
import { runMigrateCommand } from './commands/run-migrate.js';
|
|
28
31
|
import { agentCommand } from './commands/agent.js';
|
|
29
32
|
import { webhookCommand } from './commands/webhook.js';
|
|
30
33
|
import { listenCommand } from './commands/listen.js';
|
|
@@ -55,6 +58,7 @@ export const runCommands = [
|
|
|
55
58
|
reconcileCommand,
|
|
56
59
|
attemptsCommand,
|
|
57
60
|
drainCommand,
|
|
61
|
+
runMigrateCommand,
|
|
58
62
|
];
|
|
59
63
|
/** Top-level commands not nested under a subgroup. */
|
|
60
64
|
export const topLevelCommands = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands-registry.js","sourceRoot":"","sources":["../src/commands-registry.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,+EAA+E;AAC/E,6CAA6C;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW;IACX,eAAe;IACf,eAAe;IACf,YAAY;IACZ,UAAU;IACV,WAAW;IACX,cAAc;CACf,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,WAAW;IACX,cAAc;IACd,aAAa;IACb,WAAW;IACX,aAAa;IACb,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,YAAY;IACZ,SAAS;IACT,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,YAAY;
|
|
1
|
+
{"version":3,"file":"commands-registry.js","sourceRoot":"","sources":["../src/commands-registry.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,+EAA+E;AAC/E,6CAA6C;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,gGAAgG;AAChG,aAAa;AACb,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW;IACX,eAAe;IACf,eAAe;IACf,YAAY;IACZ,UAAU;IACV,WAAW;IACX,cAAc;CACf,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,WAAW;IACX,cAAc;IACd,aAAa;IACb,WAAW;IACX,aAAa;IACb,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,YAAY;IACZ,SAAS;IACT,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,iBAAiB;CAClB,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,aAAa;CACd,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import 'dotenv/config';
|
|
|
4
4
|
import { Command } from 'commander';
|
|
5
5
|
import { workflowCommands, runCommands, topLevelCommands } from './commands-registry.js';
|
|
6
6
|
const program = new Command();
|
|
7
|
-
program.name('realm').description('Realm workflow engine CLI').version('0.
|
|
7
|
+
program.name('realm').description('Realm workflow engine CLI').version('0.39.0');
|
|
8
8
|
// realm workflow — operations on workflow definitions
|
|
9
9
|
const workflowCmd = new Command('workflow').description('Manage workflow definitions');
|
|
10
10
|
for (const cmd of workflowCommands)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sensigo/realm-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -63,9 +63,9 @@
|
|
|
63
63
|
"vitest": "^4.1.0"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@sensigo/realm": "^0.
|
|
67
|
-
"@sensigo/realm-mcp": "^0.
|
|
68
|
-
"@sensigo/realm-testing": "^0.
|
|
66
|
+
"@sensigo/realm": "^0.39.0",
|
|
67
|
+
"@sensigo/realm-mcp": "^0.39.0",
|
|
68
|
+
"@sensigo/realm-testing": "^0.39.0",
|
|
69
69
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
70
70
|
"chalk": "^5.0.0",
|
|
71
71
|
"commander": "^15.0.0",
|