deepclause-sdk 0.1.3 → 0.2.2

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 (92) hide show
  1. package/README.md +45 -6
  2. package/dist/cli/config.d.ts +2 -2
  3. package/dist/cli/repl.d.ts +36 -0
  4. package/dist/cli/repl.d.ts.map +1 -1
  5. package/dist/cli/repl.js +414 -14
  6. package/dist/cli/repl.js.map +1 -1
  7. package/dist/index.d.ts +2 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +3 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/prolog-src/deepclause_mi.pl +547 -2
  12. package/dist/repl/backend.d.ts +9 -0
  13. package/dist/repl/backend.d.ts.map +1 -1
  14. package/dist/repl/backend.js +44 -0
  15. package/dist/repl/backend.js.map +1 -1
  16. package/dist/repl/harness-tools.d.ts +36 -0
  17. package/dist/repl/harness-tools.d.ts.map +1 -1
  18. package/dist/repl/harness-tools.js +173 -0
  19. package/dist/repl/harness-tools.js.map +1 -1
  20. package/dist/repl/history.d.ts +29 -0
  21. package/dist/repl/history.d.ts.map +1 -1
  22. package/dist/repl/history.js +71 -0
  23. package/dist/repl/history.js.map +1 -1
  24. package/dist/repl/index.d.ts +6 -0
  25. package/dist/repl/index.d.ts.map +1 -1
  26. package/dist/repl/index.js +9 -1
  27. package/dist/repl/index.js.map +1 -1
  28. package/dist/repl/picker.d.ts +3 -0
  29. package/dist/repl/picker.d.ts.map +1 -1
  30. package/dist/repl/picker.js +132 -0
  31. package/dist/repl/picker.js.map +1 -1
  32. package/dist/repl/process-backend.d.ts +31 -0
  33. package/dist/repl/process-backend.d.ts.map +1 -0
  34. package/dist/repl/process-backend.js +10 -0
  35. package/dist/repl/process-backend.js.map +1 -0
  36. package/dist/repl/process-executor.d.ts +67 -0
  37. package/dist/repl/process-executor.d.ts.map +1 -0
  38. package/dist/repl/process-executor.js +371 -0
  39. package/dist/repl/process-executor.js.map +1 -0
  40. package/dist/repl/process-worker.d.ts +10 -0
  41. package/dist/repl/process-worker.d.ts.map +1 -0
  42. package/dist/repl/process-worker.js +210 -0
  43. package/dist/repl/process-worker.js.map +1 -0
  44. package/dist/repl/processes.d.ts +282 -0
  45. package/dist/repl/processes.d.ts.map +1 -0
  46. package/dist/repl/processes.js +557 -0
  47. package/dist/repl/processes.js.map +1 -0
  48. package/dist/repl/render.d.ts.map +1 -1
  49. package/dist/repl/render.js +19 -5
  50. package/dist/repl/render.js.map +1 -1
  51. package/dist/repl/session.d.ts +142 -3
  52. package/dist/repl/session.d.ts.map +1 -1
  53. package/dist/repl/session.js +435 -4
  54. package/dist/repl/session.js.map +1 -1
  55. package/dist/repl/tui/autocomplete.d.ts.map +1 -1
  56. package/dist/repl/tui/autocomplete.js +7 -0
  57. package/dist/repl/tui/autocomplete.js.map +1 -1
  58. package/dist/repl/tui/harness-view.d.ts +102 -0
  59. package/dist/repl/tui/harness-view.d.ts.map +1 -0
  60. package/dist/repl/tui/harness-view.js +323 -0
  61. package/dist/repl/tui/harness-view.js.map +1 -0
  62. package/dist/repl/tui/renderer.d.ts.map +1 -1
  63. package/dist/repl/tui/renderer.js +6 -1
  64. package/dist/repl/tui/renderer.js.map +1 -1
  65. package/dist/repl/tui/services-panel.d.ts +35 -0
  66. package/dist/repl/tui/services-panel.d.ts.map +1 -0
  67. package/dist/repl/tui/services-panel.js +108 -0
  68. package/dist/repl/tui/services-panel.js.map +1 -0
  69. package/dist/repl/tui/status-bar.d.ts +2 -0
  70. package/dist/repl/tui/status-bar.d.ts.map +1 -1
  71. package/dist/repl/tui/status-bar.js +2 -0
  72. package/dist/repl/tui/status-bar.js.map +1 -1
  73. package/dist/repl/tui/tool-pane.d.ts.map +1 -1
  74. package/dist/repl/tui/tool-pane.js +6 -2
  75. package/dist/repl/tui/tool-pane.js.map +1 -1
  76. package/dist/repl/worker-host.d.ts +80 -0
  77. package/dist/repl/worker-host.d.ts.map +1 -0
  78. package/dist/repl/worker-host.js +305 -0
  79. package/dist/repl/worker-host.js.map +1 -0
  80. package/dist/repl/worker-protocol.d.ts +123 -0
  81. package/dist/repl/worker-protocol.d.ts.map +1 -0
  82. package/dist/repl/worker-protocol.js +9 -0
  83. package/dist/repl/worker-protocol.js.map +1 -0
  84. package/dist/runner.d.ts +24 -0
  85. package/dist/runner.d.ts.map +1 -1
  86. package/dist/runner.js +58 -0
  87. package/dist/runner.js.map +1 -1
  88. package/dist/system/assets/docs/AGENT_PROMPT.md +247 -0
  89. package/dist/system/assets/docs/DML_AUTHORING.md +21 -0
  90. package/dist/system/assets/docs/DML_REFERENCE.md +199 -0
  91. package/package.json +7 -6
  92. package/src/prolog-src/deepclause_mi.pl +547 -2
@@ -0,0 +1,557 @@
1
+ /**
2
+ * Session-scoped processes for the REPL (L1 core).
3
+ *
4
+ * This module is the host bookkeeping and the L1↔L2 seam from
5
+ * `docs/DML_REPL_PROCESSES_SPEC.md` §2. It owns process identity, mailboxes,
6
+ * links, monitors, naming, limits, and lifecycle events. It does **not** drive
7
+ * Prolog; a `ProcessBody` is an opaque async function, and the DML layer supplies
8
+ * bodies that step a runner frame.
9
+ *
10
+ * Keeping the bodies opaque is what makes L2 a mode switch: a worker-backed host
11
+ * implements the same interface with RPC bodies and node-qualified pids, and
12
+ * nothing above this module changes.
13
+ *
14
+ * Invariants enforced here (spec §6.2):
15
+ * - pids are node-qualified (`node: 'main'` in v1);
16
+ * - messages are copied (value semantics), never shared by reference;
17
+ * - process info and events are plain data;
18
+ * - there is no UI dependency.
19
+ */
20
+ export function pidKey(pid) {
21
+ return `${pid.node}:${pid.session}:${pid.id}`;
22
+ }
23
+ /** Quote a string as a Prolog atom when it is not a plain lowercase atom. */
24
+ export function prologAtom(text) {
25
+ return /^[a-z][A-Za-z0-9_]*$/.test(text) ? text : `'${text.replace(/'/g, "''")}'`;
26
+ }
27
+ /** The canonical Prolog term for a pid: `proc(Node,Session,Id)`. */
28
+ export function pidTermText(pid) {
29
+ return `proc(${prologAtom(pid.node)},${prologAtom(pid.session)},${prologAtom(pid.id)})`;
30
+ }
31
+ /** Parse `proc(Node,Session,Id)` back to a pid, or undefined. */
32
+ export function parsePidTerm(text) {
33
+ const match = /^proc\(([^,]+),([^,]+),([^)]+)\)$/.exec(text.trim());
34
+ if (!match)
35
+ return undefined;
36
+ const unquote = (part) => {
37
+ const trimmed = part.trim();
38
+ const quoted = /^'(.*)'$/s.exec(trimmed);
39
+ return quoted ? quoted[1].replace(/''/g, "'") : trimmed;
40
+ };
41
+ return { node: unquote(match[1]), session: unquote(match[2]), id: unquote(match[3]) };
42
+ }
43
+ /** Thrown by `ProcessContext.exit` to terminate the current process. */
44
+ export class ProcessExit extends Error {
45
+ reason;
46
+ constructor(reason) {
47
+ super(typeof reason === 'string' ? reason : 'process exited');
48
+ this.reason = reason;
49
+ this.name = 'ProcessExit';
50
+ }
51
+ }
52
+ /** Raised when sending to a process that is gone. */
53
+ export class NoProcError extends Error {
54
+ pid;
55
+ code = 'noproc';
56
+ constructor(pid) {
57
+ super(`no process: ${pidKey(pid)}`);
58
+ this.pid = pid;
59
+ this.name = 'NoProcError';
60
+ }
61
+ }
62
+ /** Raised when a mailbox is full (spec §13.3). */
63
+ export class MailboxFullError extends Error {
64
+ pid;
65
+ code = 'mailbox_full';
66
+ constructor(pid) {
67
+ super(`mailbox full: ${pidKey(pid)}`);
68
+ this.pid = pid;
69
+ this.name = 'MailboxFullError';
70
+ }
71
+ }
72
+ function emptyUsage() {
73
+ return { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
74
+ }
75
+ function addUsage(a, b) {
76
+ return {
77
+ inputTokens: a.inputTokens + b.inputTokens,
78
+ outputTokens: a.outputTokens + b.outputTokens,
79
+ totalTokens: a.totalTokens + b.totalTokens,
80
+ cacheReadTokens: (a.cacheReadTokens ?? 0) + (b.cacheReadTokens ?? 0) || undefined,
81
+ cacheWriteTokens: (a.cacheWriteTokens ?? 0) + (b.cacheWriteTokens ?? 0) || undefined,
82
+ reasoningTokens: (a.reasoningTokens ?? 0) + (b.reasoningTokens ?? 0) || undefined,
83
+ };
84
+ }
85
+ /** Default label for a goal: the predicate's functor, or the first token. */
86
+ export function labelForGoal(goal) {
87
+ const match = /^\s*([a-z_][A-Za-z0-9_]*)/.exec(goal);
88
+ return match ? match[1] : 'process';
89
+ }
90
+ /**
91
+ * Copy a message so processes never share mutable terms (spec §4.2 / invariant A).
92
+ *
93
+ * `structuredClone` is the right tool for plain data. Values it cannot clone
94
+ * (functions, symbols) are rejected, which is the intended behavior: such a value
95
+ * could not cross an L2 worker boundary either.
96
+ */
97
+ export function copyMessage(value) {
98
+ if (value === null || typeof value !== 'object')
99
+ return value;
100
+ try {
101
+ return structuredClone(value);
102
+ }
103
+ catch {
104
+ throw new Error('message is not portable between processes (must be plain data)');
105
+ }
106
+ }
107
+ /**
108
+ * The L1 process host: a process table, mailboxes, links, monitors, and naming,
109
+ * all in one JS realm.
110
+ *
111
+ * The DML runner drives process progress; this host owns identity and messaging.
112
+ */
113
+ export class LocalProcessHost {
114
+ sessionId;
115
+ node;
116
+ resolveBody;
117
+ resolveSnapshot;
118
+ onEvent;
119
+ onHostMessage;
120
+ maxProcesses;
121
+ maxMailbox;
122
+ maxTerminalRecords;
123
+ now;
124
+ records = new Map();
125
+ names = new Map();
126
+ watchersByRef = new Map();
127
+ replyInboxes = new Map();
128
+ counter = 0;
129
+ refCounter = 0;
130
+ shutdownRequested = false;
131
+ /** Synthetic pid representing the host itself, for `call`/`request` replies. */
132
+ hostPid;
133
+ constructor(options) {
134
+ this.sessionId = options.sessionId;
135
+ this.node = options.node ?? 'main';
136
+ this.resolveBody = options.resolveBody;
137
+ this.resolveSnapshot = options.resolveSnapshot;
138
+ this.onEvent = options.onEvent;
139
+ this.onHostMessage = options.onHostMessage;
140
+ this.maxProcesses = options.maxProcesses ?? 16;
141
+ this.maxMailbox = options.maxMailbox ?? 1000;
142
+ this.maxTerminalRecords = options.maxTerminalRecords ?? 50;
143
+ this.now = options.now ?? Date.now;
144
+ this.hostPid = { node: this.node, session: this.sessionId, id: 'host' };
145
+ }
146
+ // ---- spawning -----------------------------------------------------------
147
+ spawn(goal, options = {}, body) {
148
+ if (this.shutdownRequested)
149
+ throw new Error('process host is shut down');
150
+ // The limit bounds *live* processes, not cumulative spawns: a finished
151
+ // process must not consume a slot forever (a session that spawned 16 things
152
+ // could otherwise never fan out again).
153
+ if (this.liveCount() >= this.maxProcesses) {
154
+ throw new Error(`process limit reached (${this.maxProcesses} running); stop a process first`);
155
+ }
156
+ this.reapTerminalRecords();
157
+ const resolved = body ?? this.resolveBody?.(goal);
158
+ if (!resolved)
159
+ throw new Error(`no body registered for goal: ${goal}`);
160
+ // Stamp the harness snapshot this process will run. Every path (main, a
161
+ // process spawning a child, a worker spawning on the main's behalf) goes
162
+ // through here, so a stale snapshot cannot slip in.
163
+ if (!options.snapshot) {
164
+ const snapshot = this.resolveSnapshot?.();
165
+ if (snapshot)
166
+ options = { ...options, snapshot };
167
+ }
168
+ const pid = { node: this.node, session: this.sessionId, id: `p${++this.counter}` };
169
+ const record = {
170
+ pid,
171
+ name: options.name ?? labelForGoal(goal),
172
+ goal,
173
+ options,
174
+ body: resolved,
175
+ state: 'runnable',
176
+ priority: options.priority ?? 'background',
177
+ mailbox: [],
178
+ waiters: [],
179
+ links: new Set(),
180
+ watching: new Set(),
181
+ watchedBy: new Map(),
182
+ usage: emptyUsage(),
183
+ startedAt: this.now(),
184
+ restarts: 0,
185
+ controller: new AbortController(),
186
+ terminal: false,
187
+ terminalWaiters: [],
188
+ };
189
+ this.records.set(pidKey(pid), record);
190
+ if (options.parent)
191
+ this.link(options.parent, pid);
192
+ if (options.link)
193
+ this.link(options.link, pid);
194
+ this.emit({ type: 'started', pid, name: record.name, state: 'runnable' });
195
+ // Start on the next microtask so `spawn` behaves as fire-and-forget.
196
+ void Promise.resolve().then(() => this.run(record));
197
+ return pid;
198
+ }
199
+ async run(record) {
200
+ if (record.terminal)
201
+ return;
202
+ record.state = 'running';
203
+ this.emit({ type: 'state', pid: record.pid, name: record.name, state: 'running' });
204
+ try {
205
+ const result = await record.body(this.contextFor(record));
206
+ this.finish(record, 'done', 'normal', result);
207
+ }
208
+ catch (error) {
209
+ if (error instanceof ProcessExit) {
210
+ this.finish(record, 'killed', error.reason);
211
+ }
212
+ else {
213
+ const message = error instanceof Error ? error.message : String(error);
214
+ this.finish(record, 'crashed', { error: message }, undefined, message);
215
+ }
216
+ }
217
+ }
218
+ finish(record, state, reason, result, error) {
219
+ if (record.terminal)
220
+ return;
221
+ record.terminal = true;
222
+ record.state = state;
223
+ record.finishedAt = this.now();
224
+ record.result = result;
225
+ record.error = error;
226
+ record.exitReason = reason;
227
+ // Wake anyone blocked on receive.
228
+ for (const waiter of record.waiters.splice(0)) {
229
+ if (waiter.timer)
230
+ clearTimeout(waiter.timer);
231
+ waiter.resolve({ ok: false, reason: 'stopped' });
232
+ }
233
+ this.names.forEach((pid, name) => {
234
+ if (pidKey(pid) === pidKey(record.pid))
235
+ this.names.delete(name);
236
+ });
237
+ // Monitors.
238
+ for (const watch of record.watchedBy.values()) {
239
+ this.watchersByRef.delete(watch.ref);
240
+ const watcher = this.records.get(watch.watcher);
241
+ watcher?.watching.delete(watch.ref);
242
+ watch.resolve(reason);
243
+ }
244
+ record.watchedBy.clear();
245
+ for (const waiter of record.terminalWaiters.splice(0))
246
+ waiter();
247
+ if (state === 'done' && result !== undefined) {
248
+ this.emit({ type: 'answer', pid: record.pid, name: record.name, answer: result });
249
+ }
250
+ this.emit({
251
+ type: 'exited',
252
+ pid: record.pid,
253
+ name: record.name,
254
+ state,
255
+ reason,
256
+ error,
257
+ });
258
+ // Links: an abnormal exit propagates as a stop to linked processes.
259
+ if (state !== 'done' || reason !== 'normal') {
260
+ for (const linkKey of record.links) {
261
+ const linked = this.records.get(linkKey);
262
+ if (linked && !linked.terminal)
263
+ this.stop(linked.pid, reason);
264
+ }
265
+ }
266
+ }
267
+ // ---- context ------------------------------------------------------------
268
+ contextFor(record) {
269
+ const host = this;
270
+ return {
271
+ pid: record.pid,
272
+ goal: record.goal,
273
+ options: record.options,
274
+ signal: record.controller.signal,
275
+ receive(timeoutMs) {
276
+ return host.receive(record.pid, timeoutMs);
277
+ },
278
+ send(to, message) {
279
+ host.send(to, message);
280
+ },
281
+ spawn(goal, options) {
282
+ return host.spawn(goal, { ...options, parent: record.pid });
283
+ },
284
+ exit(reason) {
285
+ throw new ProcessExit(reason);
286
+ },
287
+ info() {
288
+ return host.info(record.pid);
289
+ },
290
+ setActivity(activity) {
291
+ record.currentActivity = activity;
292
+ host.emit({ type: 'activity', pid: record.pid, name: record.name, activity });
293
+ },
294
+ emit(event) {
295
+ host.emit({ ...event, pid: record.pid, name: record.name });
296
+ },
297
+ recordUsage(usage) {
298
+ record.usage = addUsage(record.usage, usage);
299
+ },
300
+ };
301
+ }
302
+ // ---- messaging ----------------------------------------------------------
303
+ send(to, message) {
304
+ const pid = typeof to === 'string' ? (this.names.get(to) ?? this.pidByLabel(to)) : to;
305
+ if (!pid)
306
+ throw new NoProcError(typeof to === 'string' ? { node: this.node, session: this.sessionId, id: to } : to);
307
+ // The host is a synthetic endpoint for request/reply.
308
+ if (pidKey(pid) === pidKey(this.hostPid)) {
309
+ const copied = copyMessage(message);
310
+ this.onHostMessage?.(copied);
311
+ const ref = typeof copied === 'object' && copied !== null && 'ref' in copied
312
+ ? String(copied.ref)
313
+ : undefined;
314
+ const kind = typeof copied === 'object' && copied !== null && 'kind' in copied
315
+ ? String(copied.kind)
316
+ : undefined;
317
+ if (kind === 'reply' && ref) {
318
+ const resolver = this.replyInboxes.get(ref);
319
+ if (resolver) {
320
+ this.replyInboxes.delete(ref);
321
+ resolver(copied.value);
322
+ }
323
+ return;
324
+ }
325
+ return;
326
+ }
327
+ const record = this.records.get(pidKey(pid));
328
+ if (!record || record.terminal)
329
+ throw new NoProcError(pid);
330
+ if (record.mailbox.length >= this.maxMailbox)
331
+ throw new MailboxFullError(pid);
332
+ const copied = copyMessage(message);
333
+ const waiter = record.waiters.shift();
334
+ if (waiter) {
335
+ if (waiter.timer)
336
+ clearTimeout(waiter.timer);
337
+ waiter.resolve({ ok: true, message: copied });
338
+ }
339
+ else {
340
+ record.mailbox.push(copied);
341
+ }
342
+ }
343
+ /**
344
+ * Pop the oldest message, or wait. `timeoutMs` of 0 or undefined waits forever
345
+ * (spec §4.4); the DML layer chooses a default.
346
+ */
347
+ receive(pid, timeoutMs) {
348
+ const record = this.records.get(pidKey(pid));
349
+ if (!record || record.terminal)
350
+ return Promise.resolve({ ok: false, reason: 'stopped' });
351
+ if (record.mailbox.length > 0) {
352
+ return Promise.resolve({ ok: true, message: record.mailbox.shift() });
353
+ }
354
+ return new Promise((resolve) => {
355
+ const waiter = { resolve: (result) => resolve(result) };
356
+ if (timeoutMs && timeoutMs > 0) {
357
+ waiter.timer = setTimeout(() => {
358
+ const index = record.waiters.indexOf(waiter);
359
+ if (index !== -1)
360
+ record.waiters.splice(index, 1);
361
+ resolve({ ok: false, reason: 'timeout' });
362
+ }, timeoutMs);
363
+ }
364
+ record.waiters.push(waiter);
365
+ });
366
+ }
367
+ /**
368
+ * Put a message back at the front of the mailbox (selective receive).
369
+ */
370
+ requeue(pid, message) {
371
+ const record = this.records.get(pidKey(pid));
372
+ if (!record || record.terminal)
373
+ return;
374
+ record.mailbox.unshift(copyMessage(message));
375
+ }
376
+ /**
377
+ * Send `{kind:'request', from, ref, value: message}` and await a
378
+ * `{kind:'reply', ref, value}` from the target (the `library(service)`
379
+ * protocol).
380
+ */
381
+ call(to, message, timeoutMs = 300_000) {
382
+ const ref = `r${++this.refCounter}`;
383
+ return new Promise((resolve, reject) => {
384
+ const timer = setTimeout(() => {
385
+ this.replyInboxes.delete(ref);
386
+ reject(new Error(`call timed out after ${timeoutMs} ms`));
387
+ }, timeoutMs);
388
+ this.replyInboxes.set(ref, (value) => {
389
+ clearTimeout(timer);
390
+ resolve(value);
391
+ });
392
+ try {
393
+ this.send(to, { kind: 'request', from: this.hostPid, ref, value: copyMessage(message) });
394
+ }
395
+ catch (error) {
396
+ clearTimeout(timer);
397
+ this.replyInboxes.delete(ref);
398
+ reject(error);
399
+ }
400
+ });
401
+ }
402
+ // ---- links and monitors -------------------------------------------------
403
+ link(a, b) {
404
+ const ra = this.records.get(pidKey(a));
405
+ const rb = this.records.get(pidKey(b));
406
+ if (!ra || !rb)
407
+ throw new NoProcError(ra ? b : a);
408
+ ra.links.add(pidKey(b));
409
+ rb.links.add(pidKey(a));
410
+ }
411
+ unlink(a, b) {
412
+ this.records.get(pidKey(a))?.links.delete(pidKey(b));
413
+ this.records.get(pidKey(b))?.links.delete(pidKey(a));
414
+ }
415
+ monitor(pid) {
416
+ const record = this.records.get(pidKey(pid));
417
+ if (!record || record.terminal) {
418
+ return { ref: `m${++this.refCounter}`, down: Promise.resolve(record?.exitReason ?? 'noproc') };
419
+ }
420
+ const ref = `m${++this.refCounter}`;
421
+ const down = new Promise((resolve) => {
422
+ record.watchedBy.set(ref, { ref, watcher: pidKey(this.hostPid), resolve });
423
+ this.watchersByRef.set(ref, { watcher: pidKey(this.hostPid), resolve });
424
+ });
425
+ return { ref, down };
426
+ }
427
+ // ---- lifecycle ----------------------------------------------------------
428
+ /** Stop a process. Idempotent. `reason: 'kill'` is untrappable (same as any stop in v1). */
429
+ stop(pid, reason = 'shutdown') {
430
+ const record = this.records.get(pidKey(pid));
431
+ if (!record || record.terminal)
432
+ return;
433
+ record.controller.abort(reason);
434
+ const state = reason === 'normal' ? 'done' : 'killed';
435
+ this.finish(record, state, reason);
436
+ }
437
+ async shutdown() {
438
+ this.shutdownRequested = true;
439
+ const records = [...this.records.values()];
440
+ for (const record of records)
441
+ this.stop(record.pid, 'shutdown');
442
+ for (const resolver of this.replyInboxes.values())
443
+ resolver(undefined);
444
+ this.replyInboxes.clear();
445
+ }
446
+ // ---- naming -------------------------------------------------------------
447
+ register(name, pid) {
448
+ if (this.names.has(name))
449
+ throw new Error(`name already registered: ${name}`);
450
+ if (!this.records.has(pidKey(pid)))
451
+ throw new NoProcError(pid);
452
+ this.names.set(name, pid);
453
+ }
454
+ whereis(name) {
455
+ const pid = this.names.get(name) ?? this.pidByLabel(name);
456
+ if (!pid)
457
+ return undefined;
458
+ const record = this.records.get(pidKey(pid));
459
+ if (!record || record.terminal) {
460
+ this.names.delete(name);
461
+ return undefined;
462
+ }
463
+ return pid;
464
+ }
465
+ /** Resolve a process label (the goal functor) to a live pid. */
466
+ pidByLabel(name) {
467
+ for (const record of this.records.values()) {
468
+ if (!record.terminal && record.name === name)
469
+ return record.pid;
470
+ }
471
+ return undefined;
472
+ }
473
+ // ---- inspection ---------------------------------------------------------
474
+ info(pid) {
475
+ const record = this.records.get(pidKey(pid));
476
+ return record ? this.toInfo(record) : undefined;
477
+ }
478
+ /** The harness source a process is running (its spawn-time snapshot). */
479
+ codeOf(pid) {
480
+ return this.records.get(pidKey(pid))?.options.snapshot?.text;
481
+ }
482
+ processes() {
483
+ const order = {
484
+ running: 0,
485
+ runnable: 1,
486
+ waiting: 2,
487
+ input: 3,
488
+ done: 4,
489
+ crashed: 5,
490
+ killed: 6,
491
+ };
492
+ return [...this.records.values()]
493
+ .sort((a, b) => order[a.state] - order[b.state] || a.startedAt - b.startedAt)
494
+ .map((record) => this.toInfo(record));
495
+ }
496
+ get size() {
497
+ return this.records.size;
498
+ }
499
+ /** Processes that have not reached a terminal state. */
500
+ liveCount() {
501
+ let live = 0;
502
+ for (const record of this.records.values())
503
+ if (!record.terminal)
504
+ live += 1;
505
+ return live;
506
+ }
507
+ /** Drop the oldest terminal records beyond `maxTerminalRecords`. */
508
+ reapTerminalRecords() {
509
+ const terminal = [...this.records.entries()].filter(([, record]) => record.terminal);
510
+ const excess = terminal.length - this.maxTerminalRecords;
511
+ for (let index = 0; index < excess; index += 1) {
512
+ this.records.delete(terminal[index][0]);
513
+ }
514
+ }
515
+ /** Resolve when `pid` reaches a terminal state (already terminal resolves now). */
516
+ wait(pid) {
517
+ const record = this.records.get(pidKey(pid));
518
+ if (!record)
519
+ return Promise.resolve(undefined);
520
+ if (record.terminal)
521
+ return Promise.resolve(this.toInfo(record));
522
+ return new Promise((resolve) => {
523
+ record.terminalWaiters.push(() => resolve(this.toInfo(record)));
524
+ });
525
+ }
526
+ toInfo(record) {
527
+ return {
528
+ pid: record.pid,
529
+ name: record.name,
530
+ goal: record.goal,
531
+ state: record.state,
532
+ priority: record.priority,
533
+ mailboxDepth: record.mailbox.length,
534
+ links: [...record.links].map((key) => this.pidFromKey(key)).filter((pid) => Boolean(pid)),
535
+ monitors: [...record.watching].map((ref) => this.watchersByRef.get(ref)?.watcher).filter(Boolean).map((key) => this.pidFromKey(key)).filter((pid) => Boolean(pid)),
536
+ usage: record.usage,
537
+ startedAt: record.startedAt,
538
+ finishedAt: record.finishedAt,
539
+ restarts: record.restarts,
540
+ currentActivity: record.currentActivity,
541
+ parent: record.options.parent,
542
+ codeVersion: record.options.codeVersion,
543
+ harnessVersion: record.options.snapshot?.version,
544
+ result: record.result,
545
+ error: record.error,
546
+ exitReason: record.exitReason,
547
+ };
548
+ }
549
+ pidFromKey(key) {
550
+ const record = this.records.get(key);
551
+ return record?.pid;
552
+ }
553
+ emit(event) {
554
+ this.onEvent?.({ ...event, at: this.now() });
555
+ }
556
+ }
557
+ //# sourceMappingURL=processes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processes.js","sourceRoot":"","sources":["../../src/repl/processes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/repl/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/repl/render.ts"],"names":[],"mappings":"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"}
@@ -831,14 +831,28 @@ export class ReplRenderer {
831
831
  if (!this.atLineStart) {
832
832
  this.sink('\n');
833
833
  }
834
- const prefix = this.frameLabel(event);
835
- if (prefix)
836
- this.sink(prefix);
837
834
  this.lastStreamFrame = key;
835
+ this.atLineStart = true;
836
+ }
837
+ const prefix = this.frameLabel(event);
838
+ // A provider delta often ends one line and starts the next, so a chunk can
839
+ // contain newlines. Re-apply the frame prefix at the start of every line, or
840
+ // the text after an embedded newline loses the tree indentation (`reasoning`
841
+ // inside an `execute` was the visible case).
842
+ const parts = chunk.split('\n');
843
+ for (let index = 0; index < parts.length; index += 1) {
844
+ if (index > 0) {
845
+ this.sink('\n');
846
+ this.atLineStart = true;
847
+ }
848
+ const part = parts[index];
849
+ if (part === '')
850
+ continue;
851
+ if (this.atLineStart && prefix)
852
+ this.sink(prefix);
853
+ this.sink(part);
838
854
  this.atLineStart = false;
839
855
  }
840
- this.sink(chunk);
841
- this.atLineStart = chunk.endsWith('\n');
842
856
  }
843
857
  /** Close an open streamed-text region before writing a line. */
844
858
  flushStream() {