@openrig/cli 0.3.2 → 0.3.3-rc.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/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +8 -8
- package/daemon/dist/adapters/cmux-transport.d.ts.map +1 -1
- package/daemon/dist/adapters/cmux-transport.js +51 -9
- package/daemon/dist/adapters/cmux-transport.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +32 -4
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/tmux.d.ts +32 -1
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +75 -2
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/db/migrations/042_rig_archive.d.ts +16 -0
- package/daemon/dist/db/migrations/042_rig_archive.d.ts.map +1 -0
- package/daemon/dist/db/migrations/042_rig_archive.js +21 -0
- package/daemon/dist/db/migrations/042_rig_archive.js.map +1 -0
- package/daemon/dist/domain/ps-projection.d.ts +6 -1
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +10 -1
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/rig-expansion-service.d.ts +1 -1
- package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
- package/daemon/dist/domain/rig-expansion-service.js +12 -10
- package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +28 -2
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +40 -3
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts +176 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +305 -37
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts +19 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +30 -12
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts +1 -0
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +4 -1
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +15 -0
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +8 -3
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/topology-converge.d.ts +97 -0
- package/daemon/dist/domain/topology-converge.d.ts.map +1 -0
- package/daemon/dist/domain/topology-converge.js +70 -0
- package/daemon/dist/domain/topology-converge.js.map +1 -0
- package/daemon/dist/domain/types.d.ts +6 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/whoami-service.d.ts +8 -0
- package/daemon/dist/domain/whoami-service.d.ts.map +1 -1
- package/daemon/dist/domain/whoami-service.js +1 -0
- package/daemon/dist/domain/whoami-service.js.map +1 -1
- package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-runtime.js +9 -1
- package/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.d.ts +19 -0
- package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.js +26 -0
- package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
- package/daemon/dist/routes/ps.js +4 -1
- package/daemon/dist/routes/ps.js.map +1 -1
- package/daemon/dist/routes/rigs.d.ts.map +1 -1
- package/daemon/dist/routes/rigs.js +124 -2
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +2 -1
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/getting-started.md +69 -0
- package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +78 -9
- package/dist/commands/add.d.ts +4 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +115 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/archive.d.ts +10 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +68 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/bootstrap.js +2 -2
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/discover.js +2 -2
- package/dist/commands/discover.js.map +1 -1
- package/dist/commands/down.d.ts +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +91 -3
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +22 -3
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +11 -0
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/setup.d.ts +7 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +28 -1
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +35 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/unarchive.d.ts +10 -0
- package/dist/commands/unarchive.d.ts.map +1 -0
- package/dist/commands/unarchive.js +53 -0
- package/dist/commands/unarchive.js.map +1 -0
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +50 -0
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +4 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +2 -3
- package/dist/commands/workflow.js.map +1 -1
- package/dist/commands/workspace.d.ts.map +1 -1
- package/dist/commands/workspace.js +2 -3
- package/dist/commands/workspace.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts +23 -0
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +24 -0
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +29 -0
- package/dist/mcp-server.js.map +1 -1
- package/dist/release-surface/affected-skills.d.ts +49 -0
- package/dist/release-surface/affected-skills.d.ts.map +1 -0
- package/dist/release-surface/affected-skills.js +153 -0
- package/dist/release-surface/affected-skills.js.map +1 -0
- package/dist/release-surface/extract-surface.d.ts +23 -0
- package/dist/release-surface/extract-surface.d.ts.map +1 -0
- package/dist/release-surface/extract-surface.js +193 -0
- package/dist/release-surface/extract-surface.js.map +1 -0
- package/dist/release-surface/generate.d.ts +2 -0
- package/dist/release-surface/generate.d.ts.map +1 -0
- package/dist/release-surface/generate.js +51 -0
- package/dist/release-surface/generate.js.map +1 -0
- package/dist/release-surface/surface-diff.d.ts +40 -0
- package/dist/release-surface/surface-diff.d.ts.map +1 -0
- package/dist/release-surface/surface-diff.js +212 -0
- package/dist/release-surface/surface-diff.js.map +1 -0
- package/package.json +1 -1
- package/ui/dist/assets/{index-GjTxfi9S.js → index-CrJgCmkX.js} +146 -141
- package/ui/dist/index.html +1 -1
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
// OPR.0.3.3.13.1 - CLI surface diff (Component 1 of slice 13).
|
|
2
|
+
//
|
|
3
|
+
// Given two git refs, reads `packages/cli/src/commands/*.ts` at each ref via
|
|
4
|
+
// `git show`, extracts the Commander surface (extract-surface.ts), diffs them,
|
|
5
|
+
// and emits a deterministic `release-surface-diff.yaml`. Fully offline and
|
|
6
|
+
// deterministic: the only inputs are the two refs + the repo's git object store;
|
|
7
|
+
// no network, no agent/LLM involvement (the deterministic half of slice 13's
|
|
8
|
+
// "deterministic for enumeration, agent for voice" split).
|
|
9
|
+
import { execFileSync } from "node:child_process";
|
|
10
|
+
import { stringify } from "yaml";
|
|
11
|
+
import { extractSurfaceFromSources, FLAG_SEP } from "./extract-surface.js";
|
|
12
|
+
const COMMANDS_DIR = "packages/cli/src/commands";
|
|
13
|
+
/** Honest 3-part error matching the repo's CLI error shape (queue.ts:88-111). */
|
|
14
|
+
export class SurfaceParserError extends Error {
|
|
15
|
+
fact;
|
|
16
|
+
consequence;
|
|
17
|
+
action;
|
|
18
|
+
constructor(parts) {
|
|
19
|
+
super(parts.fact);
|
|
20
|
+
this.name = "SurfaceParserError";
|
|
21
|
+
this.fact = parts.fact;
|
|
22
|
+
this.consequence = parts.consequence;
|
|
23
|
+
this.action = parts.action;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function git(repoRoot, args) {
|
|
27
|
+
return execFileSync("git", args, {
|
|
28
|
+
cwd: repoRoot,
|
|
29
|
+
encoding: "utf8",
|
|
30
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function firstToken(path) {
|
|
34
|
+
return path.split(" ")[0] ?? "";
|
|
35
|
+
}
|
|
36
|
+
function splitFlagEntry(entry) {
|
|
37
|
+
const i = entry.indexOf(FLAG_SEP);
|
|
38
|
+
return { command: entry.slice(0, i), flag: entry.slice(i + FLAG_SEP.length) };
|
|
39
|
+
}
|
|
40
|
+
export function resolveRepoRoot(cwd) {
|
|
41
|
+
try {
|
|
42
|
+
return git(cwd, ["rev-parse", "--show-toplevel"]).trim();
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
throw new SurfaceParserError({
|
|
46
|
+
fact: `Not inside a git repository (cwd: ${cwd}).`,
|
|
47
|
+
consequence: "The surface parser reads CLI sources at two git refs; without a repo it cannot run.",
|
|
48
|
+
action: "Run from inside the openrig git repository, or pass an explicit repoRoot.",
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function listCommandTree(repoRoot, ref) {
|
|
53
|
+
let out;
|
|
54
|
+
try {
|
|
55
|
+
out = git(repoRoot, ["ls-tree", ref, `${COMMANDS_DIR}/`]);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
throw new SurfaceParserError({
|
|
59
|
+
fact: `Could not list ${COMMANDS_DIR}/ at ref "${ref}": ${String(err.message).split("\n")[0]}`,
|
|
60
|
+
consequence: "The CLI surface for that ref could not be read, so no release-surface diff was produced.",
|
|
61
|
+
action: `Verify the ref exists (git rev-parse "${ref}") and that ${COMMANDS_DIR}/ is present at that ref.`,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const entries = [];
|
|
65
|
+
for (const line of out.split("\n")) {
|
|
66
|
+
// "<mode> blob <sha>\t<path>"
|
|
67
|
+
const m = line.match(/^\S+\s+blob\s+(\S+)\t(.+)$/);
|
|
68
|
+
if (!m)
|
|
69
|
+
continue;
|
|
70
|
+
const path = m[2];
|
|
71
|
+
if (path.endsWith(".ts") && !path.endsWith(".test.ts") && !path.endsWith("/index.ts")) {
|
|
72
|
+
entries.push({ sha: m[1], path });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (entries.length === 0) {
|
|
76
|
+
throw new SurfaceParserError({
|
|
77
|
+
fact: `No Commander command files found under ${COMMANDS_DIR}/ at ref "${ref}".`,
|
|
78
|
+
consequence: "An empty command layout would make the diff misreport the entire surface as removed or added.",
|
|
79
|
+
action: `Confirm ${COMMANDS_DIR}/ exists at "${ref}" and holds the CLI command registrations.`,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
entries.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
|
|
83
|
+
return entries;
|
|
84
|
+
}
|
|
85
|
+
// One `git cat-file --batch` reads every blob for a ref (vs one `git show` per
|
|
86
|
+
// file). Keeps the parser fast enough to run repeatedly (and the determinism
|
|
87
|
+
// test under timeout). Byte-accurate: cat-file emits `<oid> blob <size>\n` then
|
|
88
|
+
// exactly <size> content bytes then `\n`, per requested oid, in request order.
|
|
89
|
+
function readBlobs(repoRoot, entries) {
|
|
90
|
+
const input = entries.map((e) => e.sha).join("\n") + "\n";
|
|
91
|
+
const buf = execFileSync("git", ["cat-file", "--batch"], {
|
|
92
|
+
cwd: repoRoot,
|
|
93
|
+
input,
|
|
94
|
+
maxBuffer: 128 * 1024 * 1024,
|
|
95
|
+
});
|
|
96
|
+
const result = new Map();
|
|
97
|
+
let pos = 0;
|
|
98
|
+
for (const entry of entries) {
|
|
99
|
+
const nl = buf.indexOf(0x0a, pos);
|
|
100
|
+
const header = buf.toString("utf8", pos, nl);
|
|
101
|
+
const size = Number.parseInt(header.split(" ")[2] ?? "", 10);
|
|
102
|
+
if (!Number.isFinite(size)) {
|
|
103
|
+
throw new SurfaceParserError({
|
|
104
|
+
fact: `git cat-file returned an unreadable record for blob ${entry.sha} ("${header}").`,
|
|
105
|
+
consequence: "The command source could not be read, so the surface diff would be wrong.",
|
|
106
|
+
action: `Verify the repository object store is intact (git fsck) and the ref is valid.`,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
const contentStart = nl + 1;
|
|
110
|
+
result.set(entry.sha, buf.toString("utf8", contentStart, contentStart + size));
|
|
111
|
+
pos = contentStart + size + 1; // skip content + trailing newline
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
function readSurfaceAtRef(repoRoot, ref) {
|
|
116
|
+
const entries = listCommandTree(repoRoot, ref);
|
|
117
|
+
const blobs = readBlobs(repoRoot, entries);
|
|
118
|
+
const sources = entries.map((e) => ({ name: e.path, text: blobs.get(e.sha) ?? "" }));
|
|
119
|
+
return extractSurfaceFromSources(sources);
|
|
120
|
+
}
|
|
121
|
+
/** Pure diff of two extracted surfaces into the slice-13 YAML shape. */
|
|
122
|
+
export function computeDiff(from, to, releaseFrom, releaseTo) {
|
|
123
|
+
const addedCmdPaths = [...to.commands].filter((c) => !from.commands.has(c));
|
|
124
|
+
const removedCmdPaths = [...from.commands].filter((c) => !to.commands.has(c));
|
|
125
|
+
const addedFlagEntries = [...to.flags].filter((f) => !from.flags.has(f));
|
|
126
|
+
const removedFlagEntries = [...from.flags].filter((f) => !to.flags.has(f));
|
|
127
|
+
const addedCmdSet = new Set(addedCmdPaths);
|
|
128
|
+
// A top-level command is brand-new when its single-token path was added.
|
|
129
|
+
const newTopCommands = new Set(addedCmdPaths.filter((p) => !p.includes(" ")));
|
|
130
|
+
// added_commands: each brand-new top-level command + its added sub-paths.
|
|
131
|
+
const added_commands = [...newTopCommands].sort().map((name) => ({
|
|
132
|
+
name,
|
|
133
|
+
subcommands: addedCmdPaths
|
|
134
|
+
.filter((p) => p !== name && firstToken(p) === name)
|
|
135
|
+
.map((p) => p.split(" ").slice(1).join(" "))
|
|
136
|
+
.sort(),
|
|
137
|
+
}));
|
|
138
|
+
// added_flags: PRE-EXISTING commands that gained flags (keyed by full command
|
|
139
|
+
// path) and/or new subcommands (keyed by their existing top-level command).
|
|
140
|
+
const flagsByCommand = new Map();
|
|
141
|
+
for (const entry of addedFlagEntries) {
|
|
142
|
+
const { command, flag } = splitFlagEntry(entry);
|
|
143
|
+
if (newTopCommands.has(firstToken(command)))
|
|
144
|
+
continue; // new command -> flags implied by added_commands
|
|
145
|
+
if (addedCmdSet.has(command))
|
|
146
|
+
continue; // brand-new subcommand -> flags implied by its listing
|
|
147
|
+
if (!flagsByCommand.has(command))
|
|
148
|
+
flagsByCommand.set(command, new Set());
|
|
149
|
+
flagsByCommand.get(command).add(flag);
|
|
150
|
+
}
|
|
151
|
+
const subsByTop = new Map();
|
|
152
|
+
for (const p of addedCmdPaths) {
|
|
153
|
+
if (!p.includes(" "))
|
|
154
|
+
continue; // brand-new top-level command (added_commands)
|
|
155
|
+
const top = firstToken(p);
|
|
156
|
+
if (newTopCommands.has(top))
|
|
157
|
+
continue; // subtree of a brand-new top-level command
|
|
158
|
+
if (!subsByTop.has(top))
|
|
159
|
+
subsByTop.set(top, new Set());
|
|
160
|
+
subsByTop.get(top).add(p.split(" ").slice(1).join(" "));
|
|
161
|
+
}
|
|
162
|
+
const changedCommands = new Set([...flagsByCommand.keys(), ...subsByTop.keys()]);
|
|
163
|
+
const added_flags = [...changedCommands].sort().map((command) => {
|
|
164
|
+
const entry = { command };
|
|
165
|
+
const fl = flagsByCommand.get(command);
|
|
166
|
+
if (fl && fl.size > 0)
|
|
167
|
+
entry.flags = [...fl].sort();
|
|
168
|
+
const sub = subsByTop.get(command);
|
|
169
|
+
if (sub && sub.size > 0)
|
|
170
|
+
entry.subcommands = [...sub].sort();
|
|
171
|
+
return entry;
|
|
172
|
+
});
|
|
173
|
+
const removed_or_renamed = [
|
|
174
|
+
...removedCmdPaths,
|
|
175
|
+
...removedFlagEntries.map((e) => {
|
|
176
|
+
const { command, flag } = splitFlagEntry(e);
|
|
177
|
+
return `${command} ${flag}`;
|
|
178
|
+
}),
|
|
179
|
+
].sort();
|
|
180
|
+
return { release_from: releaseFrom, release_to: releaseTo, added_commands, added_flags, removed_or_renamed };
|
|
181
|
+
}
|
|
182
|
+
/** Default `--from`: the latest `v*` tag reachable before `to`. */
|
|
183
|
+
function defaultFrom(repoRoot, to) {
|
|
184
|
+
try {
|
|
185
|
+
return git(repoRoot, ["describe", "--tags", "--abbrev=0", "--match", "v*", `${to}^`]).trim();
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
try {
|
|
189
|
+
return git(repoRoot, ["describe", "--tags", "--abbrev=0", "--match", "v*"]).trim();
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
throw new SurfaceParserError({
|
|
193
|
+
fact: "No release tag could be resolved for the default --from ref.",
|
|
194
|
+
consequence: "Without a prior release ref the surface diff cannot be computed.",
|
|
195
|
+
action: "Pass an explicit --from <ref> (e.g. --from v0.3.1).",
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
export function generateSurfaceDiff(opts) {
|
|
201
|
+
const repoRoot = opts.repoRoot ?? resolveRepoRoot(opts.cwd ?? process.cwd());
|
|
202
|
+
const to = opts.to ?? "HEAD";
|
|
203
|
+
const from = opts.from ?? defaultFrom(repoRoot, to);
|
|
204
|
+
const fromSurface = readSurfaceAtRef(repoRoot, from);
|
|
205
|
+
const toSurface = readSurfaceAtRef(repoRoot, to);
|
|
206
|
+
return computeDiff(fromSurface, toSurface, from, to);
|
|
207
|
+
}
|
|
208
|
+
/** Deterministic YAML serialization (stable key + element order). */
|
|
209
|
+
export function diffToYaml(diff) {
|
|
210
|
+
return stringify(diff, { sortMapEntries: false });
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=surface-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface-diff.js","sourceRoot":"","sources":["../../src/release-surface/surface-diff.ts"],"names":[],"mappings":"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"}
|