@plurnk/plurnk 0.2.0 → 0.4.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/cli.d.ts.map +1 -1
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/dispatcher.d.ts.map +1 -1
- package/dist/dispatcher.js +150 -24
- package/dist/dispatcher.js.map +1 -1
- package/dist/subcommands.d.ts +21 -0
- package/dist/subcommands.d.ts.map +1 -0
- package/dist/subcommands.js +110 -0
- package/dist/subcommands.js.map +1 -0
- package/dist/telemetry.d.ts +45 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +196 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +8 -0
- package/dist/tui.js.map +1 -1
- package/package.json +2 -1
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAchD,UAAU,aAAa;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAEpD,eAAO,MAAM,WAAW,GAAI,OAAO,YAAY,KAAG,MAWjD,CAAC;AAMF,eAAO,MAAM,mBAAmB,GAAI,OAAO,YAAY,KAAG,OAKL,CAAC;AAEtD,eAAO,MAAM,eAAe,GAAI,WAAW,OAAO,KAAG,MAOpD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,QAAQ,MAAM,EAAE,SAAS,aAAa,EAAE,MAAM;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,KAAG,OAAO,CAAC,MAAM,CA4D5K,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// body lands on stdout (§5.4). Suitable for piping to grep / awk / head / jq.
|
|
5
5
|
import { extractSendBody } from "./render.js";
|
|
6
6
|
import { reviewProposal } from "./proposal.js";
|
|
7
|
+
import { report, clientProposalNoTtyReview } from "./telemetry.js";
|
|
7
8
|
export const formatPlain = (entry) => {
|
|
8
9
|
// Render what the wire says — no synthesis. Bare pathname when scheme
|
|
9
10
|
// is null; full URI when scheme is present.
|
|
@@ -50,6 +51,12 @@ export const runCli = async (rpc, prompt, session, opts) => {
|
|
|
50
51
|
if (out.length > 0)
|
|
51
52
|
process.stdout.write(`${out}\n`);
|
|
52
53
|
});
|
|
54
|
+
// telemetry/event — parse errors, engine rail signals, scheme/provider
|
|
55
|
+
// failures. Routed through the unified renderer per SPEC.md §8.
|
|
56
|
+
rpc.onNotification("telemetry/event", (params) => {
|
|
57
|
+
const p = params;
|
|
58
|
+
report(p.event);
|
|
59
|
+
});
|
|
53
60
|
// Proposal lifecycle (plurnk-service #42): pause-and-review for side-effecting
|
|
54
61
|
// ops. Three paths:
|
|
55
62
|
// - --yolo: auto-accept locally without prompting (server still sends the notification).
|
|
@@ -63,6 +70,7 @@ export const runCli = async (rpc, prompt, session, opts) => {
|
|
|
63
70
|
return;
|
|
64
71
|
}
|
|
65
72
|
if (process.stdin.isTTY !== true) {
|
|
73
|
+
report(clientProposalNoTtyReview(p.logEntryId));
|
|
66
74
|
await rpc.call("loop.resolve", {
|
|
67
75
|
logEntryId: p.logEntryId,
|
|
68
76
|
decision: "reject",
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wEAAwE;AACxE,yEAAyE;AACzE,8EAA8E;AAI9E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/dispatcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,cAAc,GAAU,KAAK,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAIxF,CAAC;AAIF,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,IAKrE,CAAC;AAiLF,eAAO,MAAM,IAAI,GAAU,MAAM,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CAoHvD,CAAC"}
|
package/dist/dispatcher.js
CHANGED
|
@@ -7,6 +7,8 @@ import { isAbsolute, resolve } from "node:path";
|
|
|
7
7
|
import Rpc from "./rpc.js";
|
|
8
8
|
import { runCli } from "./cli.js";
|
|
9
9
|
import { runTui } from "./tui.js";
|
|
10
|
+
import { runModels, runSessionList, runSessionRuns, runLogRead } from "./subcommands.js";
|
|
11
|
+
import { TelemetryError, report, clientConnectionRefused, clientFlagInvalid, clientFlagMissingDependency, clientIoPersonaReadFailed, clientRuntimeError, clientSubcommandMissingArgument, clientSubcommandSessionNotFound, clientSubcommandSessionAmbiguous, clientSubcommandUnknownVerb, } from "./telemetry.js";
|
|
10
12
|
// Read all of stdin to EOF. Called when stdin is piped (not a TTY) — never
|
|
11
13
|
// blocks an interactive session because we gate on isTTY upstream.
|
|
12
14
|
const readStdin = async () => {
|
|
@@ -32,16 +34,22 @@ export const resolveProjectRoot = (raw) => {
|
|
|
32
34
|
if (raw.length === 0)
|
|
33
35
|
return null;
|
|
34
36
|
if (!isAbsolute(raw))
|
|
35
|
-
throw new
|
|
37
|
+
throw new TelemetryError(clientFlagInvalid("--project-root", raw, "must be an absolute path"));
|
|
36
38
|
return raw;
|
|
37
39
|
};
|
|
38
40
|
const USAGE = `usage: plurnk [--json] [--session <name>] [--run <name>] [--model <alias>] [prompt...]
|
|
39
41
|
<piped stdin> | plurnk [options] [prompt...]
|
|
42
|
+
plurnk models [--json]
|
|
43
|
+
plurnk session list [--json]
|
|
44
|
+
plurnk session runs <name> [--json]
|
|
45
|
+
plurnk log read --session <name> [--run <name>]
|
|
46
|
+
[--loop <id>] [--turn <id>] [--since <id>] [--limit <n>] [--json]
|
|
40
47
|
|
|
41
48
|
Connects to the plurnk-service daemon. Run a single prompt one-shot
|
|
42
49
|
(positional args, piped stdin, or both — positionals come first, stdin
|
|
43
50
|
is appended after a blank line). With no positionals and a TTY stdin,
|
|
44
|
-
enters the interactive REPL.
|
|
51
|
+
enters the interactive REPL. Read-only subcommands (models / session list /
|
|
52
|
+
log read) inspect daemon state without running a loop.
|
|
45
53
|
|
|
46
54
|
env:
|
|
47
55
|
PLURNK_URL daemon WebSocket URL (default ws://127.0.0.1:3044)
|
|
@@ -79,9 +87,21 @@ options:
|
|
|
79
87
|
passed on every loop.run. Overrides PLURNK_PERSONA.
|
|
80
88
|
--yolo auto-accept every proposal locally without prompting.
|
|
81
89
|
Overrides PLURNK_YOLO.
|
|
90
|
+
--loop <id> (log read) filter to a single loop id
|
|
91
|
+
--turn <id> (log read) filter to a single turn id
|
|
92
|
+
--since <id> (log read) return entries with id > <id>
|
|
93
|
+
--limit <n> (log read) max entries to return (default 100)
|
|
94
|
+
|
|
95
|
+
subcommands:
|
|
96
|
+
models list configured model aliases (providers.list)
|
|
97
|
+
session list list sessions on the daemon (session.list)
|
|
98
|
+
session runs <name> list runs in the named session (session.runs)
|
|
99
|
+
log read --session ... read log entries from the named session's run
|
|
82
100
|
`;
|
|
83
|
-
|
|
84
|
-
|
|
101
|
+
// Render a telemetry event to stderr and exit. Single egress point so every
|
|
102
|
+
// fatal client signal uses the unified shape from telemetry.ts.
|
|
103
|
+
const dieWith = (code, event) => {
|
|
104
|
+
report(event);
|
|
85
105
|
process.exit(code);
|
|
86
106
|
};
|
|
87
107
|
// Resolve the session by name (via session.list filter) or create a fresh one.
|
|
@@ -94,16 +114,89 @@ const attachOrCreateSession = async (rpc, opts) => {
|
|
|
94
114
|
const { sessions } = await rpc.call("session.list");
|
|
95
115
|
const matches = sessions.filter((s) => s.name === opts.sessionName);
|
|
96
116
|
if (matches.length === 0) {
|
|
97
|
-
|
|
117
|
+
const ev = clientSubcommandSessionNotFound(opts.sessionName);
|
|
118
|
+
ev.hints = ["run without --session to create a fresh session"];
|
|
119
|
+
throw new TelemetryError(ev);
|
|
98
120
|
}
|
|
99
121
|
if (matches.length > 1) {
|
|
100
|
-
throw new
|
|
122
|
+
throw new TelemetryError(clientSubcommandSessionAmbiguous(opts.sessionName, matches.length));
|
|
101
123
|
}
|
|
102
124
|
const attachParams = { id: matches[0].id };
|
|
103
125
|
if (opts.runName !== undefined)
|
|
104
126
|
attachParams.runName = opts.runName;
|
|
105
127
|
return await rpc.call("session.attach", attachParams);
|
|
106
128
|
};
|
|
129
|
+
// Parse a string-valued integer flag, throwing if non-numeric. Used for
|
|
130
|
+
// log.read filter flags (--loop / --turn / --since / --limit) since
|
|
131
|
+
// parseArgs stores their raw string values regardless of intent.
|
|
132
|
+
const parseIntFlag = (raw, name) => {
|
|
133
|
+
if (raw === undefined)
|
|
134
|
+
return undefined;
|
|
135
|
+
const n = Number(raw);
|
|
136
|
+
if (!Number.isInteger(n) || n < 0)
|
|
137
|
+
throw new TelemetryError(clientFlagInvalid(name, raw, "must be a non-negative integer"));
|
|
138
|
+
return n;
|
|
139
|
+
};
|
|
140
|
+
// Dispatch a positional-driven subcommand. Caller has already connected the
|
|
141
|
+
// Rpc. Returns the exit code the dispatcher should propagate.
|
|
142
|
+
const runSubcommand = async (rpc, positionals, opts) => {
|
|
143
|
+
const verb = positionals[0];
|
|
144
|
+
const sub = positionals[1];
|
|
145
|
+
if (verb === "models") {
|
|
146
|
+
if (positionals.length > 1) {
|
|
147
|
+
throw new TelemetryError(clientSubcommandUnknownVerb(`models ${positionals.slice(1).join(" ")}`));
|
|
148
|
+
}
|
|
149
|
+
return await runModels(rpc, { json: opts.json });
|
|
150
|
+
}
|
|
151
|
+
if (verb === "session") {
|
|
152
|
+
if (sub === "list") {
|
|
153
|
+
if (positionals.length > 2) {
|
|
154
|
+
throw new TelemetryError(clientSubcommandUnknownVerb(`session list ${positionals.slice(2).join(" ")}`));
|
|
155
|
+
}
|
|
156
|
+
return await runSessionList(rpc, { json: opts.json });
|
|
157
|
+
}
|
|
158
|
+
if (sub === "runs") {
|
|
159
|
+
const name = positionals[2];
|
|
160
|
+
if (name === undefined) {
|
|
161
|
+
throw new TelemetryError(clientSubcommandMissingArgument("plurnk session runs", "<name>"));
|
|
162
|
+
}
|
|
163
|
+
if (positionals.length > 3) {
|
|
164
|
+
throw new TelemetryError(clientSubcommandUnknownVerb(`session runs ${positionals.slice(3).join(" ")}`));
|
|
165
|
+
}
|
|
166
|
+
return await runSessionRuns(rpc, name, { json: opts.json });
|
|
167
|
+
}
|
|
168
|
+
throw new TelemetryError(clientSubcommandUnknownVerb(`session ${sub ?? "(missing)"}`, ["list", "runs"]));
|
|
169
|
+
}
|
|
170
|
+
if (verb === "log") {
|
|
171
|
+
if (sub !== "read") {
|
|
172
|
+
throw new TelemetryError(clientSubcommandUnknownVerb(`log ${sub ?? "(missing)"}`, ["read"]));
|
|
173
|
+
}
|
|
174
|
+
if (opts.sessionName === undefined) {
|
|
175
|
+
throw new TelemetryError(clientFlagMissingDependency("plurnk log read", "--session (or PLURNK_SESSION)"));
|
|
176
|
+
}
|
|
177
|
+
// log.read requires an attached session — same resolution as the loop flows.
|
|
178
|
+
await attachOrCreateSession(rpc, {
|
|
179
|
+
sessionName: opts.sessionName,
|
|
180
|
+
runName: opts.runName,
|
|
181
|
+
projectRoot: opts.projectRoot,
|
|
182
|
+
});
|
|
183
|
+
const filters = {};
|
|
184
|
+
const loopId = parseIntFlag(opts.values.loop, "--loop");
|
|
185
|
+
const turnId = parseIntFlag(opts.values.turn, "--turn");
|
|
186
|
+
const sinceId = parseIntFlag(opts.values.since, "--since");
|
|
187
|
+
const limit = parseIntFlag(opts.values.limit, "--limit");
|
|
188
|
+
if (loopId !== undefined)
|
|
189
|
+
filters.loopId = loopId;
|
|
190
|
+
if (turnId !== undefined)
|
|
191
|
+
filters.turnId = turnId;
|
|
192
|
+
if (sinceId !== undefined)
|
|
193
|
+
filters.sinceId = sinceId;
|
|
194
|
+
if (limit !== undefined)
|
|
195
|
+
filters.limit = limit;
|
|
196
|
+
return await runLogRead(rpc, { json: opts.json, filters });
|
|
197
|
+
}
|
|
198
|
+
throw new TelemetryError(clientSubcommandUnknownVerb(verb ?? "(missing)"));
|
|
199
|
+
};
|
|
107
200
|
export const main = async (argv) => {
|
|
108
201
|
try {
|
|
109
202
|
process.loadEnvFile(".env");
|
|
@@ -121,22 +214,34 @@ export const main = async (argv) => {
|
|
|
121
214
|
"project-root": { type: "string" },
|
|
122
215
|
persona: { type: "string" },
|
|
123
216
|
yolo: { type: "boolean" },
|
|
217
|
+
// log read filters
|
|
218
|
+
loop: { type: "string" },
|
|
219
|
+
turn: { type: "string" },
|
|
220
|
+
since: { type: "string" },
|
|
221
|
+
limit: { type: "string" },
|
|
124
222
|
},
|
|
125
223
|
});
|
|
126
224
|
if (values.help) {
|
|
127
225
|
process.stdout.write(USAGE);
|
|
128
226
|
process.exit(0);
|
|
129
227
|
}
|
|
130
|
-
//
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
const
|
|
134
|
-
const
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (
|
|
139
|
-
|
|
228
|
+
// Subcommand routing happens BEFORE prompt assembly: if positionals[0] is
|
|
229
|
+
// a known read-only subcommand (models / session / log), we skip stdin
|
|
230
|
+
// reading and prompt construction entirely.
|
|
231
|
+
const SUBCOMMANDS = ["models", "session", "log"];
|
|
232
|
+
const subcommand = positionals[0];
|
|
233
|
+
const isSubcommand = subcommand !== undefined && SUBCOMMANDS.includes(subcommand);
|
|
234
|
+
// Assemble the prompt only if we're NOT running a subcommand.
|
|
235
|
+
let prompt = "";
|
|
236
|
+
if (!isSubcommand) {
|
|
237
|
+
const positionalPrompt = positionals.join(" ");
|
|
238
|
+
const stdinPrompt = process.stdin.isTTY === true ? "" : (await readStdin()).trim();
|
|
239
|
+
prompt = positionalPrompt.length > 0 && stdinPrompt.length > 0
|
|
240
|
+
? `${positionalPrompt}\n\n${stdinPrompt}`
|
|
241
|
+
: positionalPrompt || stdinPrompt;
|
|
242
|
+
if (values.json === true && prompt.length === 0) {
|
|
243
|
+
dieWith(64, clientFlagMissingDependency("--json", "a prompt (CLI mode only)"));
|
|
244
|
+
}
|
|
140
245
|
}
|
|
141
246
|
// CLI flag overrides env; env overrides nothing.
|
|
142
247
|
const sessionName = values.session ?? process.env.PLURNK_SESSION;
|
|
@@ -144,7 +249,7 @@ export const main = async (argv) => {
|
|
|
144
249
|
const modelAlias = values.model ?? process.env.PLURNK_MODEL;
|
|
145
250
|
const yolo = values.yolo === true || ["1", "true", "yes", "on"].includes((process.env.PLURNK_YOLO ?? "").toLowerCase());
|
|
146
251
|
if (runName !== undefined && sessionName === undefined) {
|
|
147
|
-
|
|
252
|
+
dieWith(64, clientFlagMissingDependency("--run (or PLURNK_RUN)", "--session (or PLURNK_SESSION)"));
|
|
148
253
|
}
|
|
149
254
|
const projectRootRaw = values["project-root"] ?? process.env.PLURNK_PROJECT_ROOT;
|
|
150
255
|
const projectRoot = (() => {
|
|
@@ -152,7 +257,9 @@ export const main = async (argv) => {
|
|
|
152
257
|
return resolveProjectRoot(projectRootRaw);
|
|
153
258
|
}
|
|
154
259
|
catch (cause) {
|
|
155
|
-
|
|
260
|
+
if (cause instanceof TelemetryError)
|
|
261
|
+
return dieWith(cause.exitCode, cause.event);
|
|
262
|
+
return dieWith(64, clientRuntimeError(cause));
|
|
156
263
|
}
|
|
157
264
|
})();
|
|
158
265
|
const persona = await (async () => {
|
|
@@ -160,7 +267,8 @@ export const main = async (argv) => {
|
|
|
160
267
|
return await resolvePersona(values.persona ?? process.env.PLURNK_PERSONA);
|
|
161
268
|
}
|
|
162
269
|
catch (cause) {
|
|
163
|
-
|
|
270
|
+
const personaPath = values.persona ?? process.env.PLURNK_PERSONA ?? "(unknown)";
|
|
271
|
+
return dieWith(1, clientIoPersonaReadFailed(personaPath, cause));
|
|
164
272
|
}
|
|
165
273
|
})();
|
|
166
274
|
const url = process.env.PLURNK_URL ?? "ws://127.0.0.1:3044";
|
|
@@ -169,25 +277,43 @@ export const main = async (argv) => {
|
|
|
169
277
|
await rpc.connect();
|
|
170
278
|
}
|
|
171
279
|
catch (cause) {
|
|
172
|
-
|
|
280
|
+
dieWith(1, clientConnectionRefused(url, cause));
|
|
173
281
|
}
|
|
174
282
|
try {
|
|
283
|
+
const json = values.json === true;
|
|
284
|
+
if (isSubcommand) {
|
|
285
|
+
const exitCode = await runSubcommand(rpc, positionals, {
|
|
286
|
+
json, sessionName, runName, projectRoot, values,
|
|
287
|
+
});
|
|
288
|
+
process.exit(exitCode);
|
|
289
|
+
}
|
|
175
290
|
const session = await attachOrCreateSession(rpc, { sessionName, runName, projectRoot });
|
|
176
291
|
if (prompt.length === 0) {
|
|
177
292
|
await runTui(rpc, session, { modelAlias, persona, yolo });
|
|
178
293
|
process.exit(0);
|
|
179
294
|
}
|
|
180
|
-
const exitCode = await runCli(rpc, prompt, session, { json
|
|
295
|
+
const exitCode = await runCli(rpc, prompt, session, { json, modelAlias, persona, yolo });
|
|
181
296
|
process.exit(exitCode);
|
|
182
297
|
}
|
|
183
298
|
catch (cause) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
299
|
+
if (cause instanceof TelemetryError) {
|
|
300
|
+
report(cause.event);
|
|
301
|
+
await rpc.close();
|
|
302
|
+
process.exit(cause.exitCode);
|
|
187
303
|
}
|
|
304
|
+
// RPC errors arrive as Error("rpc error N: msg") from rpc.ts; the
|
|
305
|
+
// method that failed is unknown at this catch boundary, so we tag it
|
|
306
|
+
// with the synthetic "rpc.call" — daemon already supplied the
|
|
307
|
+
// specific code/message via cause.message, which is what users care
|
|
308
|
+
// about.
|
|
309
|
+
report(clientRuntimeError(cause));
|
|
310
|
+
await rpc.close();
|
|
188
311
|
process.exit(1);
|
|
189
312
|
}
|
|
190
313
|
finally {
|
|
314
|
+
// Idempotent close — the catch paths already closed; this finally
|
|
315
|
+
// covers the success paths where we returned via process.exit() but
|
|
316
|
+
// the await on the runX call already completed.
|
|
191
317
|
await rpc.close();
|
|
192
318
|
}
|
|
193
319
|
};
|
package/dist/dispatcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type Rpc from "./rpc.ts";
|
|
2
|
+
export declare const runModels: (rpc: Rpc, opts: {
|
|
3
|
+
json: boolean;
|
|
4
|
+
}) => Promise<number>;
|
|
5
|
+
export declare const runSessionList: (rpc: Rpc, opts: {
|
|
6
|
+
json: boolean;
|
|
7
|
+
}) => Promise<number>;
|
|
8
|
+
export declare const runSessionRuns: (rpc: Rpc, sessionName: string, opts: {
|
|
9
|
+
json: boolean;
|
|
10
|
+
}) => Promise<number>;
|
|
11
|
+
export interface LogReadFilters {
|
|
12
|
+
loopId?: number;
|
|
13
|
+
turnId?: number;
|
|
14
|
+
sinceId?: number;
|
|
15
|
+
limit?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare const runLogRead: (rpc: Rpc, opts: {
|
|
18
|
+
json: boolean;
|
|
19
|
+
filters: LogReadFilters;
|
|
20
|
+
}) => Promise<number>;
|
|
21
|
+
//# sourceMappingURL=subcommands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subcommands.d.ts","sourceRoot":"","sources":["../src/subcommands.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAyBhC,eAAO,MAAM,SAAS,GAAU,KAAK,GAAG,EAAE,MAAM;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,KAAG,OAAO,CAAC,MAAM,CAkBjF,CAAC;AAmBF,eAAO,MAAM,cAAc,GAAU,KAAK,GAAG,EAAE,MAAM;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,KAAG,OAAO,CAAC,MAAM,CAkBtF,CAAC;AAWF,eAAO,MAAM,cAAc,GACvB,KAAK,GAAG,EACR,aAAa,MAAM,EACnB,MAAM;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,KACxB,OAAO,CAAC,MAAM,CAyBhB,CAAC;AAYF,MAAM,WAAW,cAAc;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,UAAU,GACnB,KAAK,GAAG,EACR,MAAM;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,KACjD,OAAO,CAAC,MAAM,CAmBhB,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// Read-only subcommands: `plurnk models`, `plurnk session list`, `plurnk log read`.
|
|
2
|
+
// Each is a thin wrapper around a daemon RPC plus a small renderer; output
|
|
3
|
+
// goes to stdout (the product), trace/errors to stderr — same posture as CLI
|
|
4
|
+
// mode per SPEC.md §2.1.
|
|
5
|
+
import { formatPlain } from "./cli.js";
|
|
6
|
+
import { report, clientSubcommandSessionNotFound, clientSubcommandSessionAmbiguous } from "./telemetry.js";
|
|
7
|
+
// ─── Shared rendering helpers ─────────────────────────────────────────
|
|
8
|
+
// Simple column-aligned table. Renders header + rows; no header borders.
|
|
9
|
+
const renderTable = (headers, rows) => {
|
|
10
|
+
const widths = headers.map((h, i) => Math.max(h.length, ...rows.map((r) => (r[i] ?? "").length)));
|
|
11
|
+
const fmt = (cells) => cells.map((c, i) => c.padEnd(widths[i] ?? 0)).join(" ").trimEnd();
|
|
12
|
+
return [fmt(headers), ...rows.map(fmt)].join("\n");
|
|
13
|
+
};
|
|
14
|
+
export const runModels = async (rpc, opts) => {
|
|
15
|
+
const { aliases } = await rpc.call("providers.list");
|
|
16
|
+
if (opts.json) {
|
|
17
|
+
process.stdout.write(`${JSON.stringify(aliases)}\n`);
|
|
18
|
+
return 0;
|
|
19
|
+
}
|
|
20
|
+
if (aliases.length === 0) {
|
|
21
|
+
process.stdout.write("(no model aliases configured; set PLURNK_MODEL_<alias>=<provider>/<model> on the daemon)\n");
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
const rows = aliases.map((a) => [
|
|
25
|
+
a.alias,
|
|
26
|
+
a.provider,
|
|
27
|
+
a.model,
|
|
28
|
+
a.active ? "*" : "",
|
|
29
|
+
]);
|
|
30
|
+
process.stdout.write(`${renderTable(["alias", "provider", "model", "active"], rows)}\n`);
|
|
31
|
+
return 0;
|
|
32
|
+
};
|
|
33
|
+
const formatCost = (picoUsd) => {
|
|
34
|
+
if (picoUsd === 0)
|
|
35
|
+
return "0";
|
|
36
|
+
const usd = picoUsd / 1e12;
|
|
37
|
+
if (usd < 0.01)
|
|
38
|
+
return `$${(usd * 100).toFixed(4)}¢`;
|
|
39
|
+
return `$${usd.toFixed(4)}`;
|
|
40
|
+
};
|
|
41
|
+
export const runSessionList = async (rpc, opts) => {
|
|
42
|
+
const { sessions } = await rpc.call("session.list");
|
|
43
|
+
if (opts.json) {
|
|
44
|
+
process.stdout.write(`${JSON.stringify(sessions)}\n`);
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
if (sessions.length === 0) {
|
|
48
|
+
process.stdout.write("(no sessions; run `plurnk` to create one)\n");
|
|
49
|
+
return 0;
|
|
50
|
+
}
|
|
51
|
+
const rows = sessions.map((s) => [
|
|
52
|
+
s.name,
|
|
53
|
+
s.project_root ?? "(headless)",
|
|
54
|
+
s.created_at,
|
|
55
|
+
formatCost(s.cost_pico),
|
|
56
|
+
]);
|
|
57
|
+
process.stdout.write(`${renderTable(["name", "project_root", "created", "cost"], rows)}\n`);
|
|
58
|
+
return 0;
|
|
59
|
+
};
|
|
60
|
+
export const runSessionRuns = async (rpc, sessionName, opts) => {
|
|
61
|
+
// Look up the session id by name without attaching — session.runs accepts
|
|
62
|
+
// an explicit id, so we don't need to spend an attach on a read-only call.
|
|
63
|
+
const { sessions } = await rpc.call("session.list");
|
|
64
|
+
const matches = sessions.filter((s) => s.name === sessionName);
|
|
65
|
+
if (matches.length === 0) {
|
|
66
|
+
report(clientSubcommandSessionNotFound(sessionName));
|
|
67
|
+
return 1;
|
|
68
|
+
}
|
|
69
|
+
if (matches.length > 1) {
|
|
70
|
+
report(clientSubcommandSessionAmbiguous(sessionName, matches.length));
|
|
71
|
+
return 1;
|
|
72
|
+
}
|
|
73
|
+
const { runs } = await rpc.call("session.runs", { id: matches[0].id });
|
|
74
|
+
if (opts.json) {
|
|
75
|
+
process.stdout.write(`${JSON.stringify(runs)}\n`);
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
78
|
+
if (runs.length === 0) {
|
|
79
|
+
process.stdout.write(`(session ${JSON.stringify(sessionName)} has no runs)\n`);
|
|
80
|
+
return 0;
|
|
81
|
+
}
|
|
82
|
+
const rows = runs.map((r) => [r.name, r.created_at, formatCost(r.cost_pico)]);
|
|
83
|
+
process.stdout.write(`${renderTable(["name", "created", "cost"], rows)}\n`);
|
|
84
|
+
return 0;
|
|
85
|
+
};
|
|
86
|
+
export const runLogRead = async (rpc, opts) => {
|
|
87
|
+
const params = {};
|
|
88
|
+
if (opts.filters.loopId !== undefined)
|
|
89
|
+
params.loopId = opts.filters.loopId;
|
|
90
|
+
if (opts.filters.turnId !== undefined)
|
|
91
|
+
params.turnId = opts.filters.turnId;
|
|
92
|
+
if (opts.filters.sinceId !== undefined)
|
|
93
|
+
params.sinceId = opts.filters.sinceId;
|
|
94
|
+
if (opts.filters.limit !== undefined)
|
|
95
|
+
params.limit = opts.filters.limit;
|
|
96
|
+
const { entries } = await rpc.call("log.read", params);
|
|
97
|
+
if (opts.json) {
|
|
98
|
+
process.stdout.write(`${JSON.stringify(entries)}\n`);
|
|
99
|
+
return 0;
|
|
100
|
+
}
|
|
101
|
+
if (entries.length === 0) {
|
|
102
|
+
process.stdout.write("(no entries match)\n");
|
|
103
|
+
return 0;
|
|
104
|
+
}
|
|
105
|
+
for (const entry of entries) {
|
|
106
|
+
process.stdout.write(`${formatPlain(entry)}\n`);
|
|
107
|
+
}
|
|
108
|
+
return 0;
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=subcommands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subcommands.js","sourceRoot":"","sources":["../src/subcommands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface ContentOffset {
|
|
2
|
+
type: "content-offset";
|
|
3
|
+
line: number;
|
|
4
|
+
column: number;
|
|
5
|
+
}
|
|
6
|
+
export interface LogCoordinate {
|
|
7
|
+
type: "log-coordinate";
|
|
8
|
+
coordinate: string;
|
|
9
|
+
op?: string;
|
|
10
|
+
}
|
|
11
|
+
export type Position = ContentOffset | LogCoordinate;
|
|
12
|
+
export interface TelemetryEvent {
|
|
13
|
+
source: string;
|
|
14
|
+
kind: string;
|
|
15
|
+
message?: string | null;
|
|
16
|
+
position?: Position | null;
|
|
17
|
+
hints?: string[];
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
export declare class TelemetryError extends Error {
|
|
21
|
+
readonly event: TelemetryEvent;
|
|
22
|
+
readonly exitCode: number;
|
|
23
|
+
constructor(event: TelemetryEvent, exitCode?: number);
|
|
24
|
+
}
|
|
25
|
+
export declare const renderTelemetryEvent: (event: TelemetryEvent) => string;
|
|
26
|
+
export declare const report: (event: TelemetryEvent) => void;
|
|
27
|
+
export declare const clientConnectionRefused: (url: string, cause: unknown) => TelemetryEvent;
|
|
28
|
+
export declare const clientRuntimeError: (cause: unknown) => TelemetryEvent;
|
|
29
|
+
export declare const clientConnectionClosed: (cause: unknown) => TelemetryEvent;
|
|
30
|
+
export declare const clientFlagInvalid: (flag: string, value: string, reason: string) => TelemetryEvent;
|
|
31
|
+
export declare const clientFlagMissingDependency: (flag: string, requires: string) => TelemetryEvent;
|
|
32
|
+
export declare const clientSubcommandSessionNotFound: (name: string) => TelemetryEvent;
|
|
33
|
+
export declare const clientSubcommandSessionAmbiguous: (name: string, count: number) => TelemetryEvent;
|
|
34
|
+
export declare const clientSubcommandUnknownVerb: (path: string, available?: string[]) => TelemetryEvent;
|
|
35
|
+
export declare const clientSubcommandMissingArgument: (path: string, argument: string) => TelemetryEvent;
|
|
36
|
+
export declare const clientProposalNoTtyReview: (logEntryId: number) => TelemetryEvent;
|
|
37
|
+
export declare const clientIoPersonaReadFailed: (path: string, cause: unknown) => TelemetryEvent;
|
|
38
|
+
export declare const clientRpcError: (method: string, cause: unknown) => TelemetryEvent;
|
|
39
|
+
export declare const colors: {
|
|
40
|
+
RESET: string;
|
|
41
|
+
DIM: string;
|
|
42
|
+
RED: string;
|
|
43
|
+
YELLOW: string;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,aAAa,CAAC;AAUrD,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAIjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAUD,qBAAa,cAAe,SAAQ,KAAK;IACrC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,cAAc,EAAE,QAAQ,GAAE,MAAW;CAM3D;AAsDD,eAAO,MAAM,oBAAoB,GAAI,OAAO,cAAc,KAAG,MAO5D,CAAC;AAKF,eAAO,MAAM,MAAM,GAAI,OAAO,cAAc,KAAG,IAE9C,CAAC;AAKF,eAAO,MAAM,uBAAuB,GAAI,KAAK,MAAM,EAAE,OAAO,OAAO,KAAG,cASpE,CAAC;AAIH,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,cAIlD,CAAC;AAGH,eAAO,MAAM,sBAAsB,GAAI,OAAO,OAAO,KAAG,cAItD,CAAC;AAGH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,cAM9E,CAAC;AAGH,eAAO,MAAM,2BAA2B,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,cAM3E,CAAC;AAGH,eAAO,MAAM,+BAA+B,GAAI,MAAM,MAAM,KAAG,cAK7D,CAAC;AAGH,eAAO,MAAM,gCAAgC,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,cAM7E,CAAC;AAGH,eAAO,MAAM,2BAA2B,GAAI,MAAM,MAAM,EAAE,YAAY,MAAM,EAAE,KAAG,cAQ/E,CAAC;AAGH,eAAO,MAAM,+BAA+B,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,cAM/E,CAAC;AAGH,eAAO,MAAM,yBAAyB,GAAI,YAAY,MAAM,KAAG,cAK7D,CAAC;AAGH,eAAO,MAAM,yBAAyB,GAAI,MAAM,MAAM,EAAE,OAAO,OAAO,KAAG,cAKvE,CAAC;AAGH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,OAAO,OAAO,KAAG,cAK9D,CAAC;AAIH,eAAO,MAAM,MAAM;;;;;CAA8B,CAAC"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
// Unified error/telemetry shape across the plurnk stack.
|
|
2
|
+
//
|
|
3
|
+
// The grammar 0.17.0 TelemetryEvent schema (`source / kind / message? /
|
|
4
|
+
// position? / additional kind-specific fields`) is the vocabulary every
|
|
5
|
+
// producer in the ecosystem emits into — `grammar`, `engine:rail`,
|
|
6
|
+
// `scheme:*`, `provider:*` from the daemon side; `client:*` from us.
|
|
7
|
+
// This module owns the shape, the renderer, and the client-side emission
|
|
8
|
+
// helpers; everything user-facing routes through `report(event)`.
|
|
9
|
+
//
|
|
10
|
+
// Per SPEC.md §8.
|
|
11
|
+
import process from "node:process";
|
|
12
|
+
// Thrown across boundaries to carry a structured event through normal
|
|
13
|
+
// async error propagation. The global catch in main() unwraps these and
|
|
14
|
+
// renders the carried event verbatim; non-TelemetryError throws collapse
|
|
15
|
+
// to a generic `client:runtime:error` event.
|
|
16
|
+
//
|
|
17
|
+
// `exitCode` is the process exit code the global catch should propagate.
|
|
18
|
+
// Defaults to 64 (usage error) since most TelemetryError throws are flag/
|
|
19
|
+
// argument / subcommand validation. Runtime failures pass 1 explicitly.
|
|
20
|
+
export class TelemetryError extends Error {
|
|
21
|
+
event;
|
|
22
|
+
exitCode;
|
|
23
|
+
constructor(event, exitCode = 64) {
|
|
24
|
+
super(event.message ?? `${event.source}:${event.kind}`);
|
|
25
|
+
this.event = event;
|
|
26
|
+
this.exitCode = exitCode;
|
|
27
|
+
this.name = "TelemetryError";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// ─── Rendering ────────────────────────────────────────────────────────
|
|
31
|
+
const useColor = process.env.NO_COLOR !== "1" && process.env.NO_COLOR !== "true";
|
|
32
|
+
const code = (n) => useColor ? `\x1b[${n}m` : "";
|
|
33
|
+
const RESET = code("0");
|
|
34
|
+
const DIM = code("2");
|
|
35
|
+
const RED = code("31");
|
|
36
|
+
const YELLOW = code("33");
|
|
37
|
+
const TELEMETRY_GLYPH = "📡";
|
|
38
|
+
// Format a Position inline as a compact suffix on the headline. ContentOffset
|
|
39
|
+
// becomes `L<line> col<column>`; LogCoordinate becomes `<coordinate>` (with op
|
|
40
|
+
// in parens when present).
|
|
41
|
+
const formatPosition = (pos) => {
|
|
42
|
+
if (pos === null || pos === undefined)
|
|
43
|
+
return "";
|
|
44
|
+
if (pos.type === "content-offset")
|
|
45
|
+
return `L${pos.line} col${pos.column}`;
|
|
46
|
+
if (pos.type === "log-coordinate")
|
|
47
|
+
return pos.op !== undefined ? `${pos.coordinate} (${pos.op})` : pos.coordinate;
|
|
48
|
+
return "";
|
|
49
|
+
};
|
|
50
|
+
// Format the headline: `<glyph> <source>:<kind> <position?> <message?>`. The
|
|
51
|
+
// caller is responsible for trailing newlines.
|
|
52
|
+
const renderHeadline = (event) => {
|
|
53
|
+
const discriminator = `${event.source}:${event.kind}`;
|
|
54
|
+
const position = formatPosition(event.position);
|
|
55
|
+
const message = typeof event.message === "string" && event.message.length > 0
|
|
56
|
+
? `"${event.message}"`
|
|
57
|
+
: "";
|
|
58
|
+
const parts = [TELEMETRY_GLYPH, discriminator];
|
|
59
|
+
if (position.length > 0)
|
|
60
|
+
parts.push(position);
|
|
61
|
+
if (message.length > 0)
|
|
62
|
+
parts.push(`${DIM}${message}${RESET}`);
|
|
63
|
+
return ` ${parts.join(" ")}`;
|
|
64
|
+
};
|
|
65
|
+
// Some kinds carry a rendered snippet (grammar:parse_error has `snippet`
|
|
66
|
+
// with `N:\t`-prefixed offending content). Render it as an indented block.
|
|
67
|
+
const renderSnippet = (event) => {
|
|
68
|
+
const snippet = typeof event.snippet === "string" ? event.snippet : "";
|
|
69
|
+
if (snippet.length === 0)
|
|
70
|
+
return "";
|
|
71
|
+
return snippet.split("\n").map((line) => ` ${line}`).join("\n");
|
|
72
|
+
};
|
|
73
|
+
// Render hints as indented continuation lines after the headline.
|
|
74
|
+
const renderHints = (event) => {
|
|
75
|
+
if (!Array.isArray(event.hints) || event.hints.length === 0)
|
|
76
|
+
return "";
|
|
77
|
+
return event.hints.map((hint) => ` ${DIM}${hint}${RESET}`).join("\n");
|
|
78
|
+
};
|
|
79
|
+
// Full rendering: headline + optional snippet block + optional hints block.
|
|
80
|
+
// Used by `report` and by any other surface (TUI waterfall) that wants the
|
|
81
|
+
// same vocabulary.
|
|
82
|
+
export const renderTelemetryEvent = (event) => {
|
|
83
|
+
const parts = [renderHeadline(event)];
|
|
84
|
+
const snippet = renderSnippet(event);
|
|
85
|
+
if (snippet.length > 0)
|
|
86
|
+
parts.push(snippet);
|
|
87
|
+
const hints = renderHints(event);
|
|
88
|
+
if (hints.length > 0)
|
|
89
|
+
parts.push(hints);
|
|
90
|
+
return parts.join("\n");
|
|
91
|
+
};
|
|
92
|
+
// Write a rendered event to stderr. Single point of egress so the channel
|
|
93
|
+
// posture (stderr in CLI mode; same in TUI to keep the waterfall on stdout
|
|
94
|
+
// stream) stays consistent across emission sites.
|
|
95
|
+
export const report = (event) => {
|
|
96
|
+
process.stderr.write(`${renderTelemetryEvent(event)}\n`);
|
|
97
|
+
};
|
|
98
|
+
// ─── Client-side emitters ────────────────────────────────────────────
|
|
99
|
+
// `client:connection:refused` — WebSocket connection couldn't be established.
|
|
100
|
+
export const clientConnectionRefused = (url, cause) => ({
|
|
101
|
+
source: "client:connection",
|
|
102
|
+
kind: "refused",
|
|
103
|
+
message: cause instanceof Error ? cause.message : String(cause),
|
|
104
|
+
url,
|
|
105
|
+
hints: [
|
|
106
|
+
"Is the daemon running?",
|
|
107
|
+
"Start it from plurnk-service with: node bin/plurnk-service.js start",
|
|
108
|
+
],
|
|
109
|
+
});
|
|
110
|
+
// `client:runtime:error` — generic catch-all for thrown errors we don't have
|
|
111
|
+
// a more specific shape for. Used as a fallback in the global catch.
|
|
112
|
+
export const clientRuntimeError = (cause) => ({
|
|
113
|
+
source: "client:runtime",
|
|
114
|
+
kind: "error",
|
|
115
|
+
message: cause instanceof Error ? cause.message : String(cause),
|
|
116
|
+
});
|
|
117
|
+
// `client:connection:closed` — connection dropped while a call was in flight.
|
|
118
|
+
export const clientConnectionClosed = (cause) => ({
|
|
119
|
+
source: "client:connection",
|
|
120
|
+
kind: "closed",
|
|
121
|
+
message: cause instanceof Error ? cause.message : String(cause),
|
|
122
|
+
});
|
|
123
|
+
// `client:flag:invalid` — flag value didn't parse or violated a contract.
|
|
124
|
+
export const clientFlagInvalid = (flag, value, reason) => ({
|
|
125
|
+
source: "client:flag",
|
|
126
|
+
kind: "invalid",
|
|
127
|
+
message: reason,
|
|
128
|
+
flag,
|
|
129
|
+
value,
|
|
130
|
+
});
|
|
131
|
+
// `client:flag:missing_dependency` — flag X requires flag Y also be set.
|
|
132
|
+
export const clientFlagMissingDependency = (flag, requires) => ({
|
|
133
|
+
source: "client:flag",
|
|
134
|
+
kind: "missing_dependency",
|
|
135
|
+
message: `${flag} requires ${requires}`,
|
|
136
|
+
flag,
|
|
137
|
+
requires,
|
|
138
|
+
});
|
|
139
|
+
// `client:subcommand:session_not_found` — name resolution failed.
|
|
140
|
+
export const clientSubcommandSessionNotFound = (name) => ({
|
|
141
|
+
source: "client:subcommand",
|
|
142
|
+
kind: "session_not_found",
|
|
143
|
+
message: `no session named ${JSON.stringify(name)}`,
|
|
144
|
+
name,
|
|
145
|
+
});
|
|
146
|
+
// `client:subcommand:session_ambiguous` — multiple sessions match.
|
|
147
|
+
export const clientSubcommandSessionAmbiguous = (name, count) => ({
|
|
148
|
+
source: "client:subcommand",
|
|
149
|
+
kind: "session_ambiguous",
|
|
150
|
+
message: `${count} sessions named ${JSON.stringify(name)}; pick a unique name`,
|
|
151
|
+
name,
|
|
152
|
+
count,
|
|
153
|
+
});
|
|
154
|
+
// `client:subcommand:unknown_verb` — unrecognized subcommand verb.
|
|
155
|
+
export const clientSubcommandUnknownVerb = (path, available) => ({
|
|
156
|
+
source: "client:subcommand",
|
|
157
|
+
kind: "unknown_verb",
|
|
158
|
+
message: available !== undefined && available.length > 0
|
|
159
|
+
? `unknown subcommand '${path}'. Available: ${available.join(", ")}`
|
|
160
|
+
: `unknown subcommand '${path}'`,
|
|
161
|
+
path,
|
|
162
|
+
available,
|
|
163
|
+
});
|
|
164
|
+
// `client:subcommand:missing_argument` — required positional or flag absent.
|
|
165
|
+
export const clientSubcommandMissingArgument = (path, argument) => ({
|
|
166
|
+
source: "client:subcommand",
|
|
167
|
+
kind: "missing_argument",
|
|
168
|
+
message: `${path}: missing ${argument}`,
|
|
169
|
+
path,
|
|
170
|
+
argument,
|
|
171
|
+
});
|
|
172
|
+
// `client:proposal:no_tty_review` — fail-closed in CLI without --yolo.
|
|
173
|
+
export const clientProposalNoTtyReview = (logEntryId) => ({
|
|
174
|
+
source: "client:proposal",
|
|
175
|
+
kind: "no_tty_review",
|
|
176
|
+
message: "no TTY for review, no --yolo — rejecting proposal",
|
|
177
|
+
logEntryId,
|
|
178
|
+
});
|
|
179
|
+
// `client:io:persona_read_failed` — couldn't read the --persona file.
|
|
180
|
+
export const clientIoPersonaReadFailed = (path, cause) => ({
|
|
181
|
+
source: "client:io",
|
|
182
|
+
kind: "persona_read_failed",
|
|
183
|
+
message: cause instanceof Error ? cause.message : String(cause),
|
|
184
|
+
path,
|
|
185
|
+
});
|
|
186
|
+
// `client:rpc:error` — RPC call rejected with a daemon-supplied error.
|
|
187
|
+
export const clientRpcError = (method, cause) => ({
|
|
188
|
+
source: "client:rpc",
|
|
189
|
+
kind: "error",
|
|
190
|
+
message: cause instanceof Error ? cause.message : String(cause),
|
|
191
|
+
method,
|
|
192
|
+
});
|
|
193
|
+
// Color helpers exported for callers that want a colored marker without
|
|
194
|
+
// reimplementing the NO_COLOR check (e.g. the TUI's existing waterfall).
|
|
195
|
+
export const colors = { RESET, DIM, RED, YELLOW };
|
|
196
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/tui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAehC,UAAU,aAAa;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAEpD,eAAO,MAAM,MAAM,GAAU,KAAK,GAAG,EAAE,SAAS,aAAa,EAAE,MAAM;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,KAAG,OAAO,CAAC,IAAI,CA2G3I,CAAC"}
|
package/dist/tui.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import readline from "node:readline";
|
|
4
4
|
import { renderLogEntry, renderSummary } from "./render.js";
|
|
5
5
|
import { reviewProposal } from "./proposal.js";
|
|
6
|
+
import { renderTelemetryEvent } from "./telemetry.js";
|
|
6
7
|
export const runTui = async (rpc, session, opts) => {
|
|
7
8
|
// Subscribe to log/entry notifications — render each as a waterfall line.
|
|
8
9
|
// `\r\x1b[2K` wipes any readline-redrawn prompt sitting on the current line
|
|
@@ -11,6 +12,13 @@ export const runTui = async (rpc, session, opts) => {
|
|
|
11
12
|
const p = params;
|
|
12
13
|
process.stdout.write(`\r\x1b[2K${renderLogEntry(p.entry)}\n`);
|
|
13
14
|
});
|
|
15
|
+
// telemetry/event — interleaved with the trace waterfall. Same line-wipe
|
|
16
|
+
// dance as log/entry so the rendered event doesn't collide with the
|
|
17
|
+
// readline prompt.
|
|
18
|
+
rpc.onNotification("telemetry/event", (params) => {
|
|
19
|
+
const p = params;
|
|
20
|
+
process.stdout.write(`\r\x1b[2K${renderTelemetryEvent(p.event)}\n`);
|
|
21
|
+
});
|
|
14
22
|
process.stdout.write(`\x1b[2mplurnk v0.1.0 · ctrl-c to quit · session: ${session.name}\x1b[0m\n\n`);
|
|
15
23
|
const rl = readline.createInterface({
|
|
16
24
|
input: process.stdin,
|
package/dist/tui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,iBAAiB;AAEjB,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Plurnk client app — CLI/TUI consuming plurnk-service. Type prompts at a terminal, drive real model loops through the protocol.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"test:unit": "node --test 'src/**/*.test.ts'",
|
|
24
24
|
"test:intg": "node --test --env-file-if-exists=.env 'test/intg/**/*.test.ts'",
|
|
25
25
|
"test": "npm run test:lint && npm run test:unit",
|
|
26
|
+
"test:all": "npm run test:lint && npm run test:unit && npm run test:intg",
|
|
26
27
|
"build:dist": "tsc -p tsconfig.build.json",
|
|
27
28
|
"build": "npm run build:dist",
|
|
28
29
|
"prepare": "npm run build"
|