deepclause-sdk 0.1.2 → 0.2.1

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 (122) hide show
  1. package/README.md +45 -6
  2. package/dist/cli/config.d.ts +2 -2
  3. package/dist/cli/repl.d.ts +55 -4
  4. package/dist/cli/repl.d.ts.map +1 -1
  5. package/dist/cli/repl.js +675 -52
  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 +516 -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 +62 -5
  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 +52 -2
  49. package/dist/repl/render.d.ts.map +1 -1
  50. package/dist/repl/render.js +52 -17
  51. package/dist/repl/render.js.map +1 -1
  52. package/dist/repl/session.d.ts +135 -3
  53. package/dist/repl/session.d.ts.map +1 -1
  54. package/dist/repl/session.js +413 -4
  55. package/dist/repl/session.js.map +1 -1
  56. package/dist/repl/status.d.ts +3 -1
  57. package/dist/repl/status.d.ts.map +1 -1
  58. package/dist/repl/status.js +4 -0
  59. package/dist/repl/status.js.map +1 -1
  60. package/dist/repl/tui/autocomplete.d.ts +19 -0
  61. package/dist/repl/tui/autocomplete.d.ts.map +1 -0
  62. package/dist/repl/tui/autocomplete.js +48 -0
  63. package/dist/repl/tui/autocomplete.js.map +1 -0
  64. package/dist/repl/tui/document.d.ts +51 -0
  65. package/dist/repl/tui/document.d.ts.map +1 -0
  66. package/dist/repl/tui/document.js +160 -0
  67. package/dist/repl/tui/document.js.map +1 -0
  68. package/dist/repl/tui/harness-view.d.ts +102 -0
  69. package/dist/repl/tui/harness-view.d.ts.map +1 -0
  70. package/dist/repl/tui/harness-view.js +323 -0
  71. package/dist/repl/tui/harness-view.js.map +1 -0
  72. package/dist/repl/tui/picker.d.ts +31 -0
  73. package/dist/repl/tui/picker.d.ts.map +1 -0
  74. package/dist/repl/tui/picker.js +43 -0
  75. package/dist/repl/tui/picker.js.map +1 -0
  76. package/dist/repl/tui/renderer.d.ts +98 -0
  77. package/dist/repl/tui/renderer.d.ts.map +1 -0
  78. package/dist/repl/tui/renderer.js +289 -0
  79. package/dist/repl/tui/renderer.js.map +1 -0
  80. package/dist/repl/tui/services-panel.d.ts +35 -0
  81. package/dist/repl/tui/services-panel.d.ts.map +1 -0
  82. package/dist/repl/tui/services-panel.js +108 -0
  83. package/dist/repl/tui/services-panel.js.map +1 -0
  84. package/dist/repl/tui/status-bar.d.ts +6 -2
  85. package/dist/repl/tui/status-bar.d.ts.map +1 -1
  86. package/dist/repl/tui/status-bar.js +82 -24
  87. package/dist/repl/tui/status-bar.js.map +1 -1
  88. package/dist/repl/tui/terminal.d.ts +28 -0
  89. package/dist/repl/tui/terminal.d.ts.map +1 -0
  90. package/dist/repl/tui/terminal.js +94 -0
  91. package/dist/repl/tui/terminal.js.map +1 -0
  92. package/dist/repl/tui/theme.d.ts +60 -0
  93. package/dist/repl/tui/theme.d.ts.map +1 -1
  94. package/dist/repl/tui/theme.js +142 -0
  95. package/dist/repl/tui/theme.js.map +1 -1
  96. package/dist/repl/tui/tool-pane.d.ts +68 -0
  97. package/dist/repl/tui/tool-pane.d.ts.map +1 -0
  98. package/dist/repl/tui/tool-pane.js +261 -0
  99. package/dist/repl/tui/tool-pane.js.map +1 -0
  100. package/dist/repl/tui/working-line.d.ts +23 -0
  101. package/dist/repl/tui/working-line.d.ts.map +1 -0
  102. package/dist/repl/tui/working-line.js +58 -0
  103. package/dist/repl/tui/working-line.js.map +1 -0
  104. package/dist/repl/worker-host.d.ts +80 -0
  105. package/dist/repl/worker-host.d.ts.map +1 -0
  106. package/dist/repl/worker-host.js +305 -0
  107. package/dist/repl/worker-host.js.map +1 -0
  108. package/dist/repl/worker-protocol.d.ts +123 -0
  109. package/dist/repl/worker-protocol.d.ts.map +1 -0
  110. package/dist/repl/worker-protocol.js +9 -0
  111. package/dist/repl/worker-protocol.js.map +1 -0
  112. package/dist/runner.d.ts +24 -0
  113. package/dist/runner.d.ts.map +1 -1
  114. package/dist/runner.js +47 -0
  115. package/dist/runner.js.map +1 -1
  116. package/dist/system/assets/docs/AGENT_PROMPT.md +193 -0
  117. package/dist/system/assets/docs/DML_AUTHORING.md +21 -0
  118. package/dist/system/assets/docs/DML_REFERENCE.md +145 -0
  119. package/dist/types.d.ts +7 -0
  120. package/dist/types.d.ts.map +1 -1
  121. package/package.json +2 -1
  122. package/src/prolog-src/deepclause_mi.pl +516 -2
@@ -0,0 +1,305 @@
1
+ /**
2
+ * The main-thread side of L2: a `ProcessBackend` that routes to a process worker.
3
+ *
4
+ * It keeps a synchronous cache of the worker's process table (refreshed by
5
+ * events and a short poll) so the status bar and `/ps` stay synchronous, and it
6
+ * services the worker's capability requests (`need`) through the session's
7
+ * `CapabilityBroker` — model, host tools, human input.
8
+ */
9
+ import { Worker } from 'node:worker_threads';
10
+ import { existsSync } from 'node:fs';
11
+ import { fileURLToPath } from 'node:url';
12
+ import { pidKey } from './processes.js';
13
+ function defaultWorkerFactory(init) {
14
+ const here = import.meta.url;
15
+ const isTypeScript = /\.ts(\?|$)/.test(here) || here.includes('/src/');
16
+ if (isTypeScript) {
17
+ // Running from source: prefer the built worker, whose relative `.js`
18
+ // imports resolve under plain Node. The TypeScript worker needs tsx inside
19
+ // the worker, which is not always resolvable; fall back to it only if the
20
+ // build is absent. Run `npm run build` after runtime changes.
21
+ const built = new URL('../../dist/repl/process-worker.js', here);
22
+ if (existsSync(fileURLToPath(built))) {
23
+ return new Worker(built, { workerData: init });
24
+ }
25
+ const url = new URL('./process-worker.ts', here);
26
+ return new Worker(url, { workerData: init, execArgv: ['--import', 'tsx'] });
27
+ }
28
+ const url = new URL('./process-worker.js', here);
29
+ return new Worker(url, { workerData: init });
30
+ }
31
+ export class RemoteProcessHost {
32
+ session;
33
+ onEvent;
34
+ workerFactory;
35
+ refreshMs;
36
+ worker;
37
+ ready = false;
38
+ readyPromise;
39
+ disposed = false;
40
+ requestCounter = 0;
41
+ pending = new Map();
42
+ cache = [];
43
+ nameIndex = new Map();
44
+ refreshTimer;
45
+ /** Every harness snapshot sent to the worker, keyed by version (for inspection). */
46
+ snapshotTexts = new Map();
47
+ lastSnapshotVersion;
48
+ constructor(session, options = {}) {
49
+ this.session = session;
50
+ this.onEvent = options.onEvent;
51
+ this.workerFactory = options.workerFactory ?? defaultWorkerFactory;
52
+ this.refreshMs = options.refreshMs ?? 400;
53
+ }
54
+ async start() {
55
+ if (this.worker)
56
+ return;
57
+ const snapshot = this.session.processSnapshotFor();
58
+ this.snapshotTexts.set(snapshot.version, snapshot.text);
59
+ this.lastSnapshotVersion = snapshot.version;
60
+ const init = {
61
+ workspacePath: this.session.workspacePathValue(),
62
+ sessionId: `${this.session.getSessionId()}__w`,
63
+ harnessText: snapshot.text,
64
+ harnessVersion: snapshot.version,
65
+ model: this.session.modelId(),
66
+ provider: this.session.providerId(),
67
+ temperature: this.session.temperatureValue(),
68
+ maxTokens: this.session.maxTokensValue(),
69
+ toolPolicy: this.session.toolPolicyValue(),
70
+ tools: this.session.toolDescriptors(),
71
+ };
72
+ this.readyPromise = new Promise((resolve, reject) => {
73
+ this.onReady = resolve;
74
+ this.onFatal = reject;
75
+ });
76
+ const worker = this.workerFactory(init);
77
+ this.worker = worker;
78
+ worker.on('message', (message) => this.handleMessage(message));
79
+ worker.on('error', (error) => {
80
+ this.onFatal?.(error);
81
+ this.failAll(error);
82
+ });
83
+ worker.on('exit', () => {
84
+ this.failAll(new Error('process worker exited'));
85
+ });
86
+ await this.readyPromise;
87
+ this.refreshTimer = setInterval(() => void this.refresh(), this.refreshMs);
88
+ await this.refresh();
89
+ }
90
+ onReady;
91
+ onFatal;
92
+ /**
93
+ * The harness update to attach to an outbound spawn/foreground request. The
94
+ * worker's children must run the code the user committed, not the module the
95
+ * worker happened to start with — otherwise a long-lived worker serves every
96
+ * later spawn from a stale snapshot.
97
+ */
98
+ snapshotUpdate() {
99
+ const snapshot = this.session.processSnapshotFor();
100
+ this.snapshotTexts.set(snapshot.version, snapshot.text);
101
+ if (snapshot.version === this.lastSnapshotVersion) {
102
+ return { harnessVersion: snapshot.version };
103
+ }
104
+ this.lastSnapshotVersion = snapshot.version;
105
+ return { harnessText: snapshot.text, harnessVersion: snapshot.version };
106
+ }
107
+ // ---- ProcessBackend -----------------------------------------------------
108
+ async spawn(goal, options = {}) {
109
+ const result = (await this.request({
110
+ type: 'spawn',
111
+ requestId: 0,
112
+ goal,
113
+ options,
114
+ ...this.snapshotUpdate(),
115
+ }));
116
+ if (!result.pid)
117
+ throw new Error(result.error ?? 'worker spawn failed');
118
+ // Refresh before returning so `processes()` already includes the new
119
+ // process (otherwise the /spawn confirmation reads "no subagents").
120
+ await this.refresh();
121
+ return result.pid;
122
+ }
123
+ send(to, messageTerm) {
124
+ this.post({ type: 'send', to, message: messageTerm });
125
+ }
126
+ async stop(target, reason = 'shutdown') {
127
+ this.post({ type: 'stop', target, reason });
128
+ await delay(0);
129
+ await this.refresh();
130
+ }
131
+ register(name, pid) {
132
+ this.post({ type: 'register', name, pid });
133
+ this.nameIndex.set(name, pid);
134
+ }
135
+ whereis(name) {
136
+ if (this.nameIndex.has(name))
137
+ return this.nameIndex.get(name);
138
+ return undefined;
139
+ }
140
+ info(pid) {
141
+ return this.cache.find((process) => pidKey(process.pid) === pidKey(pid));
142
+ }
143
+ processes() {
144
+ return this.cache;
145
+ }
146
+ async callTerm(to, messageTerm, timeoutMs) {
147
+ const result = (await this.request({ type: 'call', requestId: 0, to, message: messageTerm, timeoutMs }));
148
+ if (result.error)
149
+ throw new Error(result.error);
150
+ return result.value ?? '';
151
+ }
152
+ async foregroundHandle(request, _signal) {
153
+ const result = (await this.request({
154
+ type: 'foreground',
155
+ requestId: 0,
156
+ request,
157
+ ...this.snapshotUpdate(),
158
+ }));
159
+ if (!result.ok || !result.result)
160
+ throw new Error(result.error ?? 'foreground request failed');
161
+ return result.result;
162
+ }
163
+ /**
164
+ * The harness source a process is running. The main keeps every snapshot it
165
+ * sent (keyed by version), so this stays synchronous and needs no worker hop.
166
+ */
167
+ codeOf(pid) {
168
+ const version = this.info(pid)?.harnessVersion;
169
+ return version ? this.snapshotTexts.get(version) : undefined;
170
+ }
171
+ async shutdown() {
172
+ if (this.disposed)
173
+ return;
174
+ if (this.refreshTimer)
175
+ clearInterval(this.refreshTimer);
176
+ // Post the dispose request before marking disposed, or `post` drops it.
177
+ try {
178
+ await this.request({ type: 'dispose', requestId: 0 });
179
+ }
180
+ catch {
181
+ // best effort
182
+ }
183
+ this.disposed = true;
184
+ await this.worker?.terminate();
185
+ }
186
+ // ---- worker message handling -------------------------------------------
187
+ handleMessage(message) {
188
+ switch (message.type) {
189
+ case 'ready':
190
+ this.ready = true;
191
+ this.onReady?.();
192
+ break;
193
+ case 'fatal':
194
+ this.onFatal?.(new Error(message.error));
195
+ break;
196
+ case 'disposed':
197
+ this.resolveRpc(message.requestId, undefined);
198
+ break;
199
+ case 'event':
200
+ this.onEvent?.(message.event);
201
+ if (message.event.type === 'started' || message.event.type === 'exited')
202
+ void this.refresh();
203
+ break;
204
+ case 'spawn_result':
205
+ this.resolveRpc(message.requestId, message);
206
+ break;
207
+ case 'processes_result':
208
+ this.cache = message.processes;
209
+ this.rebuildNameIndex();
210
+ this.resolveRpc(message.requestId, message);
211
+ break;
212
+ case 'foreground_result':
213
+ this.resolveRpc(message.requestId, message);
214
+ break;
215
+ case 'call_result':
216
+ this.resolveRpc(message.requestId, message);
217
+ break;
218
+ case 'need':
219
+ void this.serviceNeed(message.requestId, message.kind, message.payload);
220
+ break;
221
+ }
222
+ }
223
+ async serviceNeed(requestId, kind, payload) {
224
+ try {
225
+ if (kind === 'model') {
226
+ const data = payload;
227
+ const response = await this.session.completeModelRequest({
228
+ messages: data.messages,
229
+ tools: data.tools,
230
+ temperature: data.temperature,
231
+ maxTokens: data.maxTokens,
232
+ target: data.target,
233
+ onText: (chunk) => this.post({ type: 'stream', requestId, kind: 'text', chunk }),
234
+ onReasoning: (chunk) => this.post({ type: 'stream', requestId, kind: 'reasoning', chunk }),
235
+ });
236
+ this.post({ type: 'resolve', requestId, ok: true, result: response });
237
+ return;
238
+ }
239
+ if (kind === 'tool') {
240
+ const data = payload;
241
+ const result = await this.session.runHostTool(data.name, data.args);
242
+ this.post({ type: 'resolve', requestId, ok: true, result });
243
+ return;
244
+ }
245
+ const data = payload;
246
+ const answer = await this.session.requestHumanInput(data.prompt);
247
+ this.post({ type: 'resolve', requestId, ok: true, result: answer });
248
+ }
249
+ catch (error) {
250
+ this.post({ type: 'resolve', requestId, ok: false, error: error instanceof Error ? error.message : String(error) });
251
+ }
252
+ }
253
+ request(message) {
254
+ const requestId = ++this.requestCounter;
255
+ const withId = { ...message, requestId };
256
+ return new Promise((resolve, reject) => {
257
+ this.pending.set(requestId, { resolve, reject });
258
+ this.post(withId);
259
+ });
260
+ }
261
+ resolveRpc(requestId, value) {
262
+ const rpc = this.pending.get(requestId);
263
+ if (!rpc)
264
+ return;
265
+ this.pending.delete(requestId);
266
+ rpc.resolve(value);
267
+ }
268
+ async refresh() {
269
+ if (!this.ready || this.disposed)
270
+ return;
271
+ try {
272
+ await this.request({ type: 'processes', requestId: 0 });
273
+ }
274
+ catch {
275
+ // the poll is best-effort
276
+ }
277
+ }
278
+ rebuildNameIndex() {
279
+ const next = new Map();
280
+ for (const process of this.cache) {
281
+ if (process.state !== 'done' && process.state !== 'crashed' && process.state !== 'killed') {
282
+ next.set(process.name, process.pid);
283
+ }
284
+ }
285
+ // Preserve explicitly registered names.
286
+ for (const [name, pid] of this.nameIndex)
287
+ if (!next.has(name))
288
+ next.set(name, pid);
289
+ this.nameIndex = next;
290
+ }
291
+ post(message) {
292
+ if (!this.worker || this.disposed)
293
+ return;
294
+ this.worker.postMessage(message);
295
+ }
296
+ failAll(error) {
297
+ for (const rpc of this.pending.values())
298
+ rpc.reject(error);
299
+ this.pending.clear();
300
+ }
301
+ }
302
+ function delay(ms) {
303
+ return new Promise((resolve) => setTimeout(resolve, ms));
304
+ }
305
+ //# sourceMappingURL=worker-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-host.js","sourceRoot":"","sources":["../../src/repl/worker-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Message protocol between the main thread and a process worker (L2).
3
+ *
4
+ * See `docs/DML_REPL_PROCESSES_SPEC.md` §6.3. Capability requests (`need`) always
5
+ * originate in the worker and are serviced on the main thread through the
6
+ * `CapabilityBroker`, so a worker never holds credentials or policy.
7
+ */
8
+ import type { ProcessEvent, ProcessInfo, Pid, SpawnOptions } from './processes.js';
9
+ import type { ProcessRequestPayload, ProcessRequestResult } from '../runner.js';
10
+ import type { ToolPolicy } from '../types.js';
11
+ /** One tool descriptor sent to the worker so it can build a proxy. */
12
+ export interface WorkerToolDescriptor {
13
+ name: string;
14
+ description: string;
15
+ parameters: Record<string, unknown>;
16
+ }
17
+ export interface WorkerInitData {
18
+ workspacePath?: string;
19
+ sessionId: string;
20
+ harnessText: string;
21
+ harnessVersion?: string;
22
+ model: string;
23
+ provider: string;
24
+ temperature?: number;
25
+ maxTokens?: number;
26
+ toolPolicy: ToolPolicy | null;
27
+ tools: WorkerToolDescriptor[];
28
+ }
29
+ export type MainToWorker = {
30
+ type: 'spawn';
31
+ requestId: number;
32
+ goal: string;
33
+ options: SpawnOptions;
34
+ harnessText?: string;
35
+ harnessVersion?: string;
36
+ } | {
37
+ type: 'send';
38
+ to: Pid | string;
39
+ message: unknown;
40
+ } | {
41
+ type: 'stop';
42
+ target: Pid | string;
43
+ reason: unknown;
44
+ } | {
45
+ type: 'register';
46
+ name: string;
47
+ pid: Pid;
48
+ } | {
49
+ type: 'processes';
50
+ requestId: number;
51
+ } | {
52
+ type: 'foreground';
53
+ requestId: number;
54
+ request: ProcessRequestPayload;
55
+ harnessText?: string;
56
+ harnessVersion?: string;
57
+ } | {
58
+ type: 'call';
59
+ requestId: number;
60
+ to: Pid | string;
61
+ message: string;
62
+ timeoutMs: number;
63
+ } | {
64
+ type: 'resolve';
65
+ requestId: number;
66
+ ok: true;
67
+ result: unknown;
68
+ } | {
69
+ type: 'resolve';
70
+ requestId: number;
71
+ ok: false;
72
+ error: string;
73
+ } | {
74
+ type: 'stream';
75
+ requestId: number;
76
+ kind: 'text' | 'reasoning';
77
+ chunk: string;
78
+ } | {
79
+ type: 'dispose';
80
+ requestId: number;
81
+ };
82
+ export type WorkerToMain = {
83
+ type: 'ready';
84
+ } | {
85
+ type: 'fatal';
86
+ error: string;
87
+ } | {
88
+ type: 'event';
89
+ event: ProcessEvent;
90
+ } | {
91
+ type: 'spawn_result';
92
+ requestId: number;
93
+ pid?: Pid;
94
+ error?: string;
95
+ } | {
96
+ type: 'processes_result';
97
+ requestId: number;
98
+ processes: ProcessInfo[];
99
+ } | {
100
+ type: 'foreground_result';
101
+ requestId: number;
102
+ ok: true;
103
+ result: ProcessRequestResult;
104
+ } | {
105
+ type: 'foreground_result';
106
+ requestId: number;
107
+ ok: false;
108
+ error: string;
109
+ } | {
110
+ type: 'call_result';
111
+ requestId: number;
112
+ value?: string;
113
+ error?: string;
114
+ } | {
115
+ type: 'need';
116
+ requestId: number;
117
+ kind: 'model' | 'tool' | 'input';
118
+ payload: unknown;
119
+ } | {
120
+ type: 'disposed';
121
+ requestId: number;
122
+ };
123
+ //# sourceMappingURL=worker-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-protocol.d.ts","sourceRoot":"","sources":["../../src/repl/worker-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Message protocol between the main thread and a process worker (L2).
3
+ *
4
+ * See `docs/DML_REPL_PROCESSES_SPEC.md` §6.3. Capability requests (`need`) always
5
+ * originate in the worker and are serviced on the main thread through the
6
+ * `CapabilityBroker`, so a worker never holds credentials or policy.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=worker-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-protocol.js","sourceRoot":"","sources":["../../src/repl/worker-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
package/dist/runner.d.ts CHANGED
@@ -50,6 +50,23 @@ export interface RunnerOptions {
50
50
  /** Effective shell backend, passed to nested task agents for their env block. */
51
51
  environment?: import('./system/runtime/shell-manager.js').ExecutionEnvironment;
52
52
  }
53
+ export interface ProcessRequestPayload {
54
+ op: 'self' | 'spawn' | 'send' | 'receive' | 'requeue' | 'wait' | 'exit' | 'process_info' | 'register' | 'whereis' | 'sleep';
55
+ goal?: string;
56
+ options?: string;
57
+ to?: string;
58
+ message?: string;
59
+ timeout?: number;
60
+ reason?: string;
61
+ pid?: string;
62
+ name?: string;
63
+ ms?: number;
64
+ }
65
+ /** A process primitive's reply: the result slot key and its raw Prolog term. */
66
+ export interface ProcessRequestResult {
67
+ key: 'self' | 'spawn' | 'send' | 'receive' | 'requeue' | 'wait' | 'exit' | 'process_info' | 'register' | 'whereis' | 'sleep';
68
+ term: string;
69
+ }
53
70
  export interface InternalRunOptions {
54
71
  args?: unknown[];
55
72
  params?: Record<string, unknown>;
@@ -59,6 +76,8 @@ export interface InternalRunOptions {
59
76
  toolPolicy: ToolPolicy | null;
60
77
  /** Returns the answer, or undefined to cancel/fail the input request. */
61
78
  onInputRequired: (prompt: string) => Promise<string | undefined>;
79
+ /** Handles a DML process primitive (spawn/send/receive/...). */
80
+ onProcessRequest?: (request: ProcessRequestPayload, signal?: AbortSignal) => Promise<ProcessRequestResult>;
62
81
  signal?: AbortSignal;
63
82
  initialMessages?: MemoryMessage[];
64
83
  /** Per-run default judgment backend name override. */
@@ -308,6 +327,11 @@ export declare class DMLRunner {
308
327
  * Post agent loop result back to Prolog
309
328
  */
310
329
  private postAgentResult;
330
+ /**
331
+ * Post a process primitive result back to Prolog under a named slot.
332
+ * `term` is a raw Prolog term string, so the caller controls encoding.
333
+ */
334
+ private postProcessResult;
311
335
  /**
312
336
  * Post exec result back to Prolog
313
337
  */
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/runner.js CHANGED
@@ -415,6 +415,24 @@ export class DMLRunner {
415
415
  // Execute external tool
416
416
  yield* this.handleExec(step.payload, options);
417
417
  break;
418
+ case 'request_proc': {
419
+ // A DML process primitive. The host supplies the result term so the
420
+ // process layer owns all encoding (spec §4).
421
+ const payload = (step.payload ?? {});
422
+ if (!options.onProcessRequest) {
423
+ this.postProcessResult(String(payload.op), 'error(no_process_host)');
424
+ break;
425
+ }
426
+ try {
427
+ const result = await options.onProcessRequest(payload, options.signal);
428
+ this.postProcessResult(result.key, result.term);
429
+ }
430
+ catch (error) {
431
+ const message = error instanceof Error ? error.message : String(error);
432
+ this.postProcessResult(String(payload.op), `error(${JSON.stringify(message)})`);
433
+ }
434
+ break;
435
+ }
418
436
  case 'request_sample_token':
419
437
  yield* this.handleSampleToken(step.payload, options);
420
438
  break;
@@ -856,6 +874,7 @@ export class DMLRunner {
856
874
  signal: options.signal,
857
875
  toolPolicy: options.toolPolicy,
858
876
  onModelCall: options.onModelCall,
877
+ onProcessRequest: options.onProcessRequest,
859
878
  }, withheld, emitToolCall, emitToolEvent);
860
879
  }, withheld);
861
880
  // Run agent loop with streaming support
@@ -1938,6 +1957,26 @@ export class DMLRunner {
1938
1957
  }
1939
1958
  break;
1940
1959
  }
1960
+ case 'request_proc': {
1961
+ // A DML tool reached a process primitive (self/send/receive/...).
1962
+ // Resolve it through the same host binding as the enclosing run, so
1963
+ // `self` is the process the tool is running inside, then post the
1964
+ // result back to the tool engine.
1965
+ const procPayload = (payload ?? {});
1966
+ if (!runContext.onProcessRequest) {
1967
+ this.postProcessResult(String(procPayload.op), 'error(no_process_host)');
1968
+ break;
1969
+ }
1970
+ try {
1971
+ const procResult = await runContext.onProcessRequest(procPayload, runContext.signal);
1972
+ this.postProcessResult(procResult.key, procResult.term);
1973
+ }
1974
+ catch (procError) {
1975
+ const procMessage = procError instanceof Error ? procError.message : String(procError);
1976
+ this.postProcessResult(String(procPayload.op), `error(${JSON.stringify(procMessage)})`);
1977
+ }
1978
+ break;
1979
+ }
1941
1980
  case 'error': {
1942
1981
  return { result: { error: content }, outputs };
1943
1982
  }
@@ -2034,6 +2073,14 @@ export class DMLRunner {
2034
2073
  const fullMemoryStr = this.serializeMemoryMessages(fullMemory ?? []);
2035
2074
  this.query(`deepclause_mi:post_agent_result('${this.sessionId}', ${result.success}, vars{${varsStr}}, [${messagesStr}], [${fullMemoryStr}])`);
2036
2075
  }
2076
+ /**
2077
+ * Post a process primitive result back to Prolog under a named slot.
2078
+ * `term` is a raw Prolog term string, so the caller controls encoding.
2079
+ */
2080
+ postProcessResult(key, term) {
2081
+ const atom = /^[a-z][A-Za-z0-9_]*$/.test(key) ? key : `'${key.replace(/'/g, "''")}'`;
2082
+ this.query(`deepclause_mi:post_proc_result('${this.sessionId}', ${atom}, ${term})`);
2083
+ }
2037
2084
  /**
2038
2085
  * Post exec result back to Prolog
2039
2086
  */