@namzu/sdk 39.0.0 → 40.0.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.
Files changed (183) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  3. package/dist/connector/mcp/adapter.js +20 -6
  4. package/dist/connector/mcp/adapter.js.map +1 -1
  5. package/dist/manager/run/persistence.d.ts +8 -0
  6. package/dist/manager/run/persistence.d.ts.map +1 -1
  7. package/dist/manager/run/persistence.js +12 -0
  8. package/dist/manager/run/persistence.js.map +1 -1
  9. package/dist/public-runtime.d.ts +3 -1
  10. package/dist/public-runtime.d.ts.map +1 -1
  11. package/dist/public-runtime.js +5 -1
  12. package/dist/public-runtime.js.map +1 -1
  13. package/dist/public-tools.d.ts +11 -0
  14. package/dist/public-tools.d.ts.map +1 -1
  15. package/dist/public-tools.js +14 -0
  16. package/dist/public-tools.js.map +1 -1
  17. package/dist/registry/tool/execute.d.ts.map +1 -1
  18. package/dist/registry/tool/execute.js +2 -3
  19. package/dist/registry/tool/execute.js.map +1 -1
  20. package/dist/registry/tool/portable.d.ts +65 -0
  21. package/dist/registry/tool/portable.d.ts.map +1 -0
  22. package/dist/registry/tool/portable.js +244 -0
  23. package/dist/registry/tool/portable.js.map +1 -0
  24. package/dist/registry/tool/schema.d.ts +32 -5
  25. package/dist/registry/tool/schema.d.ts.map +1 -1
  26. package/dist/registry/tool/schema.js +35 -9
  27. package/dist/registry/tool/schema.js.map +1 -1
  28. package/dist/registry/toolset/catalog.js +8 -8
  29. package/dist/registry/toolset/catalog.js.map +1 -1
  30. package/dist/runtime/jobs/awaited-jobs.d.ts +215 -0
  31. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -0
  32. package/dist/runtime/jobs/awaited-jobs.js +259 -0
  33. package/dist/runtime/jobs/awaited-jobs.js.map +1 -0
  34. package/dist/runtime/jobs/registry.d.ts +33 -2
  35. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  36. package/dist/runtime/jobs/registry.js +37 -0
  37. package/dist/runtime/jobs/registry.js.map +1 -1
  38. package/dist/runtime/query/executor.d.ts +28 -0
  39. package/dist/runtime/query/executor.d.ts.map +1 -1
  40. package/dist/runtime/query/executor.js +39 -1
  41. package/dist/runtime/query/executor.js.map +1 -1
  42. package/dist/runtime/query/file-evidence-context.d.ts.map +1 -1
  43. package/dist/runtime/query/file-evidence-context.js +159 -43
  44. package/dist/runtime/query/file-evidence-context.js.map +1 -1
  45. package/dist/runtime/query/file-evidence-replay.d.ts +260 -0
  46. package/dist/runtime/query/file-evidence-replay.d.ts.map +1 -0
  47. package/dist/runtime/query/file-evidence-replay.js +647 -0
  48. package/dist/runtime/query/file-evidence-replay.js.map +1 -0
  49. package/dist/runtime/query/file-evidence-seed.d.ts +50 -0
  50. package/dist/runtime/query/file-evidence-seed.d.ts.map +1 -0
  51. package/dist/runtime/query/file-evidence-seed.js +100 -0
  52. package/dist/runtime/query/file-evidence-seed.js.map +1 -0
  53. package/dist/runtime/query/index.d.ts.map +1 -1
  54. package/dist/runtime/query/index.js +94 -2
  55. package/dist/runtime/query/index.js.map +1 -1
  56. package/dist/runtime/query/iteration/index.d.ts +87 -9
  57. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  58. package/dist/runtime/query/iteration/index.js +193 -28
  59. package/dist/runtime/query/iteration/index.js.map +1 -1
  60. package/dist/runtime/query/iteration/phases/context.d.ts +10 -0
  61. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  62. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  63. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  64. package/dist/runtime/query/iteration/phases/tool-review.js +5 -1
  65. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  66. package/dist/runtime/query/plugin-hooks.d.ts +14 -0
  67. package/dist/runtime/query/plugin-hooks.d.ts.map +1 -1
  68. package/dist/runtime/query/plugin-hooks.js +18 -0
  69. package/dist/runtime/query/plugin-hooks.js.map +1 -1
  70. package/dist/runtime/query/repeat-call.d.ts +17 -4
  71. package/dist/runtime/query/repeat-call.d.ts.map +1 -1
  72. package/dist/runtime/query/repeat-call.js +26 -19
  73. package/dist/runtime/query/repeat-call.js.map +1 -1
  74. package/dist/runtime/query/steering.d.ts +11 -1
  75. package/dist/runtime/query/steering.d.ts.map +1 -1
  76. package/dist/runtime/query/steering.js +12 -1
  77. package/dist/runtime/query/steering.js.map +1 -1
  78. package/dist/runtime/query/tooling.d.ts +2 -0
  79. package/dist/runtime/query/tooling.d.ts.map +1 -1
  80. package/dist/runtime/query/tooling.js +1 -0
  81. package/dist/runtime/query/tooling.js.map +1 -1
  82. package/dist/scheduler/completion-inbox.d.ts +48 -2
  83. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  84. package/dist/scheduler/completion-inbox.js +102 -10
  85. package/dist/scheduler/completion-inbox.js.map +1 -1
  86. package/dist/tools/builtins/bash.d.ts.map +1 -1
  87. package/dist/tools/builtins/bash.js +4 -10
  88. package/dist/tools/builtins/bash.js.map +1 -1
  89. package/dist/tools/builtins/edit-apply.d.ts +126 -0
  90. package/dist/tools/builtins/edit-apply.d.ts.map +1 -0
  91. package/dist/tools/builtins/edit-apply.js +360 -0
  92. package/dist/tools/builtins/edit-apply.js.map +1 -0
  93. package/dist/tools/builtins/edit.d.ts +143 -1
  94. package/dist/tools/builtins/edit.d.ts.map +1 -1
  95. package/dist/tools/builtins/edit.js +37 -219
  96. package/dist/tools/builtins/edit.js.map +1 -1
  97. package/dist/tools/builtins/index.d.ts +1 -0
  98. package/dist/tools/builtins/index.d.ts.map +1 -1
  99. package/dist/tools/builtins/index.js +9 -3
  100. package/dist/tools/builtins/index.js.map +1 -1
  101. package/dist/tools/builtins/job.js +1 -1
  102. package/dist/tools/builtins/job.js.map +1 -1
  103. package/dist/tools/builtins/read-file.d.ts +2 -2
  104. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  105. package/dist/tools/builtins/read-file.js +50 -65
  106. package/dist/tools/builtins/read-file.js.map +1 -1
  107. package/dist/tools/builtins/read-render.d.ts +56 -0
  108. package/dist/tools/builtins/read-render.d.ts.map +1 -0
  109. package/dist/tools/builtins/read-render.js +73 -0
  110. package/dist/tools/builtins/read-render.js.map +1 -0
  111. package/dist/tools/builtins/wait-for-job-bounds.d.ts +67 -0
  112. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -0
  113. package/dist/tools/builtins/wait-for-job-bounds.js +108 -0
  114. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -0
  115. package/dist/tools/builtins/wait-for-job.d.ts +6 -0
  116. package/dist/tools/builtins/wait-for-job.d.ts.map +1 -0
  117. package/dist/tools/builtins/wait-for-job.js +162 -0
  118. package/dist/tools/builtins/wait-for-job.js.map +1 -0
  119. package/dist/tools/builtins/write-file.js +5 -0
  120. package/dist/tools/builtins/write-file.js.map +1 -1
  121. package/dist/tools/coordinator/index.d.ts.map +1 -1
  122. package/dist/tools/coordinator/index.js +1 -7
  123. package/dist/tools/coordinator/index.js.map +1 -1
  124. package/dist/tools/file-read-tracker.d.ts.map +1 -1
  125. package/dist/tools/file-read-tracker.js +88 -10
  126. package/dist/tools/file-read-tracker.js.map +1 -1
  127. package/dist/types/message/index.d.ts +1 -1
  128. package/dist/types/message/index.d.ts.map +1 -1
  129. package/dist/types/message/index.js +2 -0
  130. package/dist/types/message/index.js.map +1 -1
  131. package/dist/types/run/entity.d.ts +13 -0
  132. package/dist/types/run/entity.d.ts.map +1 -1
  133. package/dist/types/sandbox/index.d.ts +15 -14
  134. package/dist/types/sandbox/index.d.ts.map +1 -1
  135. package/dist/types/sandbox/index.js.map +1 -1
  136. package/dist/types/tool/index.d.ts +109 -0
  137. package/dist/types/tool/index.d.ts.map +1 -1
  138. package/dist/types/tool/index.js.map +1 -1
  139. package/dist/utils/env.d.ts +19 -0
  140. package/dist/utils/env.d.ts.map +1 -0
  141. package/dist/utils/env.js +25 -0
  142. package/dist/utils/env.js.map +1 -0
  143. package/package.json +1 -1
  144. package/src/connector/mcp/adapter.ts +20 -6
  145. package/src/manager/run/persistence.ts +12 -0
  146. package/src/public-runtime.ts +9 -1
  147. package/src/public-tools.ts +18 -0
  148. package/src/registry/tool/execute.ts +2 -4
  149. package/src/registry/tool/portable.ts +264 -0
  150. package/src/registry/tool/schema.ts +38 -8
  151. package/src/registry/toolset/catalog.ts +8 -9
  152. package/src/runtime/jobs/awaited-jobs.ts +271 -0
  153. package/src/runtime/jobs/registry.ts +50 -0
  154. package/src/runtime/query/executor.ts +49 -1
  155. package/src/runtime/query/file-evidence-context.ts +190 -46
  156. package/src/runtime/query/file-evidence-replay.ts +776 -0
  157. package/src/runtime/query/file-evidence-seed.ts +126 -0
  158. package/src/runtime/query/index.ts +104 -2
  159. package/src/runtime/query/iteration/index.ts +202 -28
  160. package/src/runtime/query/iteration/phases/context.ts +10 -0
  161. package/src/runtime/query/iteration/phases/tool-review.ts +4 -0
  162. package/src/runtime/query/plugin-hooks.ts +20 -0
  163. package/src/runtime/query/repeat-call.ts +28 -18
  164. package/src/runtime/query/steering.ts +11 -0
  165. package/src/runtime/query/tooling.ts +3 -0
  166. package/src/scheduler/completion-inbox.ts +105 -9
  167. package/src/tools/builtins/bash.ts +4 -10
  168. package/src/tools/builtins/edit-apply.ts +456 -0
  169. package/src/tools/builtins/edit.ts +39 -270
  170. package/src/tools/builtins/index.ts +9 -3
  171. package/src/tools/builtins/job.ts +1 -1
  172. package/src/tools/builtins/read-file.ts +56 -77
  173. package/src/tools/builtins/read-render.ts +104 -0
  174. package/src/tools/builtins/wait-for-job-bounds.ts +179 -0
  175. package/src/tools/builtins/wait-for-job.ts +184 -0
  176. package/src/tools/builtins/write-file.ts +5 -0
  177. package/src/tools/coordinator/index.ts +1 -7
  178. package/src/tools/file-read-tracker.ts +85 -7
  179. package/src/types/message/index.ts +2 -0
  180. package/src/types/run/entity.ts +14 -0
  181. package/src/types/sandbox/index.ts +15 -14
  182. package/src/types/tool/index.ts +104 -0
  183. package/src/utils/env.ts +23 -0
@@ -0,0 +1,259 @@
1
+ /**
2
+ * Background jobs the model SAID it is waiting on.
3
+ *
4
+ * `CompletionInbox` gives a run a bounded, zero-token wait for a delegated
5
+ * task nobody is blocked on, and `holdForOutstandingWork` spends it: the
6
+ * model stops calling tools, the loop races the inbox against operator input,
7
+ * and the run only settles once the result is in the transcript or the grace
8
+ * is gone. Background shell jobs had none of it — so a model that started a
9
+ * job and then had nothing left to do improvised, and the recorded run
10
+ * (research/resident/results/2026-09-14-exploration-policy-terra-tui.json)
11
+ * shows what that costs: six `job read` polls, three `job list` polls and a
12
+ * `sleep 30`, each one a full context resend.
13
+ *
14
+ * This is the same three-method shape the hold already races —
15
+ * {@link hasPendingWork}, {@link waitForArrival}, {@link drain} — over the
16
+ * job registry instead of the task gateway.
17
+ *
18
+ * **Intent is stated, never inferred.** A job is only outstanding here once
19
+ * `wait_for_job` named it (see {@link expect}); job existence means nothing.
20
+ * That is the same distinction `CompletionInbox.expect` draws for a
21
+ * background task, and it is what keeps a dev server or a file watcher —
22
+ * started precisely so it would keep running — from holding every run of the
23
+ * session open for its grace period. The model that wants to wait says so.
24
+ */
25
+ export class AwaitedJobs {
26
+ source;
27
+ owner;
28
+ unreadNotice;
29
+ /** Awaited and still running. Nothing else can hold a run open. */
30
+ outstanding = new Set();
31
+ /** Exits since the last {@link drain}. */
32
+ exits = [];
33
+ arrivals = new Set();
34
+ detach;
35
+ constructor(source,
36
+ /** Whose jobs these are — the run or the session the jobs are bound to. */
37
+ owner,
38
+ /**
39
+ * Whether the exit notice this run queues for the model is still
40
+ * unread. A second opinion on {@link noticesDelivered}, and it can
41
+ * only ever narrow what counts as pending.
42
+ *
43
+ * An exit is work only until the model has seen it, and this adapter is
44
+ * not what shows it: the text rides out on the next tool result
45
+ * (`attachNotice`), which is what normally happens, long before any
46
+ * hold opens. {@link noticesDelivered} is how that delivery says so,
47
+ * and it is the per-job record — the entry goes, so nothing can count
48
+ * it again.
49
+ *
50
+ * This stays because the two answer different questions. That one is
51
+ * reported BY a delivery site, so it is only as good as the sites that
52
+ * remember to call it; this reads the channel itself, and a channel
53
+ * with nothing queued cannot have news in it whatever the record says.
54
+ * It is also safe in one direction only: it can suppress a hold, never
55
+ * open one, so a stale `true` here is not a turn the model gets to
56
+ * spend — which is the failure this pair exists to prevent.
57
+ *
58
+ * `CompletionInbox.claim` draws the same line on the task side. It can
59
+ * name the task, because the call that delivers a completion knows
60
+ * which one it delivered; a notice is text by the time it reaches the
61
+ * tool result, so this asks the channel instead.
62
+ *
63
+ * Absent means nothing else consumes the notices, so a recorded exit is
64
+ * unread by definition.
65
+ */
66
+ unreadNotice) {
67
+ this.source = source;
68
+ this.owner = owner;
69
+ this.unreadNotice = unreadNotice;
70
+ }
71
+ /**
72
+ * Start listening.
73
+ *
74
+ * Returns the detach, and attaching twice is a no-op rather than a second
75
+ * subscription — the same rule `CompletionInbox.attach` follows, for the
76
+ * same reason: two subscriptions would record each exit twice.
77
+ */
78
+ attach() {
79
+ if (this.detach)
80
+ return this.detach;
81
+ this.detach = this.source.onExit((job) => {
82
+ // `onExit` is a broadcast over a registry a host may share between
83
+ // runs, and the filter is the same one the exit-notice channel
84
+ // applies in `runtime/query/index.ts`.
85
+ if (job.owner !== this.owner)
86
+ return;
87
+ // `outstanding` is the gate, so an id nobody awaited is ignored and
88
+ // a second announcement for the same job cannot queue twice.
89
+ if (!this.outstanding.delete(job.id))
90
+ return;
91
+ this.exits.push(job);
92
+ for (const wake of [...this.arrivals])
93
+ wake();
94
+ });
95
+ return this.detach;
96
+ }
97
+ /**
98
+ * Say that the model is waiting on this job's exit.
99
+ *
100
+ * Called by `wait_for_job`, and by nothing else: the wait is the whole
101
+ * signal. A job that has ALREADY stopped is not recorded, because the
102
+ * call that marks it is the same call that returns its output — holding
103
+ * the run open afterwards would buy a turn to read a result the model has
104
+ * just read. `CompletionInbox.expect` skips an already-claimed task for
105
+ * the same reason.
106
+ *
107
+ * An id the registry does not know is ignored rather than raised: the
108
+ * caller is about to fail on it anyway, and a marking call is not the
109
+ * place that decides what an unknown job means.
110
+ */
111
+ expect(id) {
112
+ let job;
113
+ try {
114
+ job = this.source.get(id);
115
+ }
116
+ catch {
117
+ return;
118
+ }
119
+ if (job.owner !== this.owner)
120
+ return;
121
+ if (job.status !== 'running')
122
+ return;
123
+ this.outstanding.add(id);
124
+ }
125
+ /**
126
+ * Recorded exits the model has not been shown yet.
127
+ *
128
+ * Both halves of the same question: {@link noticesDelivered} drops the
129
+ * entry when its notice goes out, and the `unreadNotice` constructor
130
+ * argument asks the channel whether anything is still queued. A queued
131
+ * exit whose notice has already been delivered is history, not pending
132
+ * work, and an exit nobody awaited is not this adapter's news to carry.
133
+ */
134
+ get unreadExits() {
135
+ if (this.exits.length === 0)
136
+ return false;
137
+ return this.unreadNotice?.() ?? true;
138
+ }
139
+ /** Whether an awaited job is still running, or one has exited unread. */
140
+ get hasPendingWork() {
141
+ return this.unreadExits || this.outstanding.size > 0;
142
+ }
143
+ /**
144
+ * Wait for the next awaited job's exit, deadline or abort, whichever comes
145
+ * first. Aborting releases only this waiter; the jobs are untouched.
146
+ *
147
+ * Bounded by the caller, exactly as `CompletionInbox.waitForArrival` is: a
148
+ * job that never exits — a dev server someone did await — must not keep a
149
+ * run open, and only the run's own budget knows how long is long enough.
150
+ */
151
+ waitForArrival(timeoutMs, signal) {
152
+ if (signal?.aborted)
153
+ return Promise.resolve();
154
+ if (this.unreadExits)
155
+ return Promise.resolve();
156
+ if (this.outstanding.size === 0)
157
+ return Promise.resolve();
158
+ return new Promise((resolve) => {
159
+ const finish = () => {
160
+ clearTimeout(timer);
161
+ this.arrivals.delete(finish);
162
+ signal?.removeEventListener('abort', finish);
163
+ resolve();
164
+ };
165
+ const timer = setTimeout(finish, timeoutMs);
166
+ timer.unref?.();
167
+ this.arrivals.add(finish);
168
+ signal?.addEventListener('abort', finish, { once: true });
169
+ if (signal?.aborted)
170
+ finish();
171
+ });
172
+ }
173
+ /**
174
+ * Say that the queued exit notices have been put in front of the model.
175
+ *
176
+ * Called by the tool-result delivery (`attachNotice`), which is where an
177
+ * exit normally reaches the model; {@link takeDelivery} does the same for
178
+ * the hold's own path by taking the entries as it delivers them.
179
+ *
180
+ * Every recorded exit goes, and that is per-job rather than a blunt
181
+ * clear: the channel hands over ALL its queued text at once, and an exit
182
+ * is recorded here in the same synchronous announcement that queues its
183
+ * notice, so the text just delivered is exactly the notices of the exits
184
+ * in hand. An exit recorded after this call keeps its entry, because its
185
+ * notice was queued after that text was taken.
186
+ *
187
+ * Without it the entry outlived the delivery, and the channel-level gate
188
+ * above was the only thing standing between a read exit and a model turn
189
+ * — a gate that reopens the moment ANY later job, awaited or not, queues
190
+ * a notice of its own.
191
+ */
192
+ noticesDelivered() {
193
+ this.exits = [];
194
+ }
195
+ /**
196
+ * Take the recorded exits together with the text that delivers them, or
197
+ * take neither.
198
+ *
199
+ * The pairing is the whole method. Draining the exits first and then
200
+ * asking for the notice loses them on the branch that finds none: the
201
+ * records are gone, no text was written, and the exit the run held itself
202
+ * open for is delivered by nobody. So {@link drain} is not called until
203
+ * the delivery is certain, and an exit this could not deliver stays in
204
+ * hand for the next one.
205
+ */
206
+ takeDelivery(notice) {
207
+ if (this.exits.length === 0)
208
+ return undefined;
209
+ const text = notice();
210
+ if (text === undefined)
211
+ return undefined;
212
+ return { text, exits: this.drain() };
213
+ }
214
+ /**
215
+ * Take every exit recorded since the last call, leaving none behind.
216
+ *
217
+ * Draining rather than peeking, for the reason `CompletionInbox.drain`
218
+ * gives: an exit that stays queued after being delivered is a duplicate
219
+ * waiting to happen. Callers that are delivering want
220
+ * {@link takeDelivery}, which will not take them without the notice that
221
+ * accounts for them.
222
+ */
223
+ drain() {
224
+ if (this.exits.length === 0)
225
+ return [];
226
+ const exits = this.exits;
227
+ this.exits = [];
228
+ return exits;
229
+ }
230
+ /**
231
+ * Awaited jobs still running.
232
+ *
233
+ * Read when a run ends, so it can say which wait it walked away from.
234
+ * Nothing here is stopped by being read — the ids are a statement, and a
235
+ * job's lifetime belongs to whoever owns it.
236
+ */
237
+ get outstandingJobIds() {
238
+ return [...this.outstanding];
239
+ }
240
+ /**
241
+ * Stop listening. Safe to call more than once.
242
+ *
243
+ * A run that ends without this leaves its listener on a registry the host
244
+ * reuses across runs — the leak `CompletionInbox.close` exists to prevent,
245
+ * on the other subsystem.
246
+ */
247
+ close() {
248
+ this.detach?.();
249
+ this.detach = undefined;
250
+ this.outstanding.clear();
251
+ this.exits = [];
252
+ // Release anyone still waiting. A closed adapter would otherwise hold
253
+ // them to their own deadline for an exit that can no longer reach them.
254
+ for (const wake of [...this.arrivals])
255
+ wake();
256
+ this.arrivals.clear();
257
+ }
258
+ }
259
+ //# sourceMappingURL=awaited-jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awaited-jobs.js","sourceRoot":"","sources":["../../../src/runtime/jobs/awaited-jobs.ts"],"names":[],"mappings":"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"}
@@ -119,6 +119,22 @@ export declare class BackgroundJobRegistry {
119
119
  start(params: StartJobParams): BackgroundJob;
120
120
  /** The record, or throw for an id this registry does not know. */
121
121
  get(id: string): BackgroundJob;
122
+ /**
123
+ * Await one job's exit — the public counterpart to `onExit`, for a
124
+ * caller that wants a single result rather than a standing
125
+ * subscription. Resolves at once for a job that has already stopped, so
126
+ * a caller that lost the race against a fast-finishing job never blocks
127
+ * on a promise that would otherwise never settle.
128
+ *
129
+ * `signal` is honoured: an aborted wait rejects and detaches rather than
130
+ * holding the internal exit promise's continuation open for a job that
131
+ * may run for another hour. That only ends the WAIT — the job itself is
132
+ * untouched either way, exactly as a timed-out `kill`-less wait leaves
133
+ * it. See `wait-for-job-bounds.ts`, the first caller.
134
+ */
135
+ waitForExit(id: string, opts?: {
136
+ signal?: AbortSignal;
137
+ }): Promise<BackgroundJob>;
122
138
  /**
123
139
  * Output since `fromOffset`, with what the cap dropped stated.
124
140
  *
@@ -161,7 +177,21 @@ export declare function bindOwner(registry: BackgroundJobRegistry, owner: string
161
177
  readonly workingDirectory: string;
162
178
  readonly env?: Record<string, string>;
163
179
  }) => JobProcess;
180
+ /**
181
+ * Be told that the model said it is waiting on a job's exit.
182
+ *
183
+ * The registry does not keep this: wait-intent belongs to the RUN that
184
+ * expressed it, not to a registry a host may share across runs and
185
+ * sessions. The run passes its own recorder here — `AwaitedJobs`, which
186
+ * is what the iteration loop holds open for. Absent means nobody is
187
+ * listening, and `markAwaited` is then absent from the bound ref rather
188
+ * than present and silently doing nothing.
189
+ */
190
+ readonly onAwaited?: (id: string) => void;
164
191
  }): {
192
+ kill: (id: string) => Promise<BackgroundJob>;
193
+ list: () => readonly BackgroundJob[];
194
+ markAwaited?: ((id: string) => void) | undefined;
165
195
  start: (params: {
166
196
  command: string;
167
197
  workingDirectory?: string;
@@ -170,7 +200,8 @@ export declare function bindOwner(registry: BackgroundJobRegistry, owner: string
170
200
  read: (id: string, opts?: {
171
201
  fromOffset?: number;
172
202
  }) => BackgroundJobOutput;
173
- kill: (id: string) => Promise<BackgroundJob>;
174
- list: () => readonly BackgroundJob[];
203
+ waitForExit: (id: string, opts?: {
204
+ signal?: AbortSignal;
205
+ }) => Promise<BackgroundJob>;
175
206
  };
176
207
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/runtime/jobs/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/runtime/jobs/registry.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { spawn } from 'node:child_process';
2
2
  import { SANDBOX_KILL_GRACE_MS } from '../../constants/sandbox/index.js';
3
3
  import { killTree } from '../../process/kill-tree.js';
4
4
  import { scrubInheritedEnv } from '../../tools/env-scrub.js';
5
+ import { awaitWithAbort } from '../../utils/await-with-abort.js';
5
6
  const DEFAULT_MAX_JOBS_PER_OWNER = 8;
6
7
  const DEFAULT_MAX_OUTPUT_BYTES = 1024 * 1024;
7
8
  /** A start that would exceed a declared bound. */
@@ -195,6 +196,30 @@ export class BackgroundJobRegistry {
195
196
  throw new UnknownBackgroundJobError({ id });
196
197
  return entry.record;
197
198
  }
199
+ /**
200
+ * Await one job's exit — the public counterpart to `onExit`, for a
201
+ * caller that wants a single result rather than a standing
202
+ * subscription. Resolves at once for a job that has already stopped, so
203
+ * a caller that lost the race against a fast-finishing job never blocks
204
+ * on a promise that would otherwise never settle.
205
+ *
206
+ * `signal` is honoured: an aborted wait rejects and detaches rather than
207
+ * holding the internal exit promise's continuation open for a job that
208
+ * may run for another hour. That only ends the WAIT — the job itself is
209
+ * untouched either way, exactly as a timed-out `kill`-less wait leaves
210
+ * it. See `wait-for-job-bounds.ts`, the first caller.
211
+ */
212
+ waitForExit(id, opts = {}) {
213
+ const entry = this.jobs.get(id);
214
+ if (!entry)
215
+ throw new UnknownBackgroundJobError({ id });
216
+ if (entry.record.status !== 'running')
217
+ return Promise.resolve(entry.record);
218
+ // `entry` is the same object the `finalize` closure in `start()`
219
+ // mutates in place, so reading `entry.record` after `exit` settles
220
+ // sees the final status — the same trick `kill()` already relies on.
221
+ return awaitWithAbort(entry.exit.then(() => entry.record), opts.signal);
222
+ }
198
223
  /**
199
224
  * Output since `fromOffset`, with what the cap dropped stated.
200
225
  *
@@ -312,6 +337,18 @@ export function bindOwner(registry, owner, defaults = {}) {
312
337
  mine(id);
313
338
  return registry.read(id, opts ?? {});
314
339
  },
340
+ waitForExit: (id, opts) => {
341
+ mine(id);
342
+ return registry.waitForExit(id, opts ?? {});
343
+ },
344
+ ...(defaults.onAwaited
345
+ ? {
346
+ markAwaited: (id) => {
347
+ mine(id);
348
+ defaults.onAwaited?.(id);
349
+ },
350
+ }
351
+ : {}),
315
352
  kill: async (id) => {
316
353
  mine(id);
317
354
  return await registry.kill(id);
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/runtime/jobs/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/runtime/jobs/registry.ts"],"names":[],"mappings":"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"}
@@ -124,6 +124,16 @@ export interface ToolExecutorConfig {
124
124
  * session and stops them itself when the session ends.
125
125
  */
126
126
  backgroundJobOwner?: string;
127
+ /**
128
+ * Where `wait_for_job` records that the model is waiting on a job.
129
+ *
130
+ * A callback rather than the recorder itself: the executor's part is to
131
+ * hand the tools a bound ref, and what the run does with the intent —
132
+ * hold itself open for the job — is the iteration loop's business. Absent
133
+ * means the bound ref has no `markAwaited` at all, so a host that wires no
134
+ * recorder gets no hold rather than a marking call that goes nowhere.
135
+ */
136
+ onJobAwaited?: (id: string) => void;
127
137
  /**
128
138
  * Where the `skill` tool reads from.
129
139
  *
@@ -271,9 +281,27 @@ export declare class ToolExecutor {
271
281
  /** Set per turn by the orchestrator; see {@link setStepAllowedTools}. */
272
282
  private stepAllowedTools?;
273
283
  private readonly fileReadTracker;
284
+ /** A ledger is rebuilt from history at most once; a second pass would re-append its chains. */
285
+ private fileObservationsSeeded;
274
286
  constructor(config: ToolExecutorConfig, activityStore: ActivityStore, emitEvent: EmitEvent, log: Logger, probes?: ProbeEnforcement);
275
287
  setWorkingStateManager(manager: WorkingStateManager): void;
276
288
  setSandbox(sandbox: Sandbox): void;
289
+ /**
290
+ * Rebuild this run's observation ledger from history a resume restored.
291
+ *
292
+ * Once, and only from a history that has already been repaired — the ledger
293
+ * has to describe what the model is about to be shown, not what was
294
+ * checkpointed before the repair removed an abandoned call. `sandboxed` is
295
+ * passed rather than read off this executor's config because a resumed run
296
+ * restores its history before it acquires a sandbox, so the config does not
297
+ * know yet what the run's tool paths will be keyed on.
298
+ *
299
+ * Awaited, and the only filesystem work anywhere in this feature: the seed
300
+ * has to write its entries under the keys the mutation tools will look them
301
+ * up under, which on a host means resolving each path through its symlinks
302
+ * the way `write` and `edit` do. No file's content is read.
303
+ */
304
+ seedFileObservations(messages: readonly Message[], sandboxed: boolean): Promise<void>;
277
305
  /** Request-only evidence from the same ledger used by mutation admission. No filesystem I/O. */
278
306
  describeFileEvidence(messages: readonly Message[]): string | undefined;
279
307
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/executor.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,8 @@ import { generateToolCallId } from '../../utils/id.js';
16
16
  import { compressShellOutput } from '../../utils/shell-compress.js';
17
17
  import { bindOwner } from '../jobs/registry.js';
18
18
  import { describeVisibleFileEvidence } from './file-evidence-context.js';
19
+ import { seedObservationLedger } from './file-evidence-seed.js';
20
+ import { skippedToolResultText } from './plugin-hooks.js';
19
21
  import { ToolCallBudget, assertMaxToolCalls } from './tool-call-budget.js';
20
22
  import { DEFAULT_MAX_TOOL_OUTPUT_CHARS, applyToolOutputBudget, describeDroppedContent, measureContentBytes, } from './tool-output-budget.js';
21
23
  function assertUniqueToolCallIds(toolCalls) {
@@ -206,6 +208,8 @@ export class ToolExecutor {
206
208
  /** Set per turn by the orchestrator; see {@link setStepAllowedTools}. */
207
209
  stepAllowedTools;
208
210
  fileReadTracker;
211
+ /** A ledger is rebuilt from history at most once; a second pass would re-append its chains. */
212
+ fileObservationsSeeded = false;
209
213
  constructor(config, activityStore, emitEvent, log, probes = defaultProbeRegistry) {
210
214
  assertMaxToolCalls(config.maxToolCalls);
211
215
  if (config.maxToolCalls !== undefined) {
@@ -224,6 +228,39 @@ export class ToolExecutor {
224
228
  setSandbox(sandbox) {
225
229
  this.config = { ...this.config, sandbox };
226
230
  }
231
+ /**
232
+ * Rebuild this run's observation ledger from history a resume restored.
233
+ *
234
+ * Once, and only from a history that has already been repaired — the ledger
235
+ * has to describe what the model is about to be shown, not what was
236
+ * checkpointed before the repair removed an abandoned call. `sandboxed` is
237
+ * passed rather than read off this executor's config because a resumed run
238
+ * restores its history before it acquires a sandbox, so the config does not
239
+ * know yet what the run's tool paths will be keyed on.
240
+ *
241
+ * Awaited, and the only filesystem work anywhere in this feature: the seed
242
+ * has to write its entries under the keys the mutation tools will look them
243
+ * up under, which on a host means resolving each path through its symlinks
244
+ * the way `write` and `edit` do. No file's content is read.
245
+ */
246
+ async seedFileObservations(messages, sandboxed) {
247
+ if (this.fileObservationsSeeded)
248
+ return;
249
+ this.fileObservationsSeeded = true;
250
+ const report = await seedObservationLedger(messages, this.fileReadTracker, {
251
+ workingDirectory: this.config.workingDirectory,
252
+ ...(this.config.additionalDirectories
253
+ ? { additionalDirectories: this.config.additionalDirectories }
254
+ : {}),
255
+ sandboxed,
256
+ });
257
+ this.log.info('Rebuilt the file observation ledger from restored history', {
258
+ [NAMZU.RUN_ID]: this.config.runId,
259
+ 'namzu.files.witnessed': report.pathsWitnessed,
260
+ 'namzu.files.seen': report.pathsSeen,
261
+ 'namzu.files.replayed_units': report.unitsReplayed,
262
+ });
263
+ }
227
264
  /** Request-only evidence from the same ledger used by mutation admission. No filesystem I/O. */
228
265
  describeFileEvidence(messages) {
229
266
  return describeVisibleFileEvidence(messages, this.fileReadTracker, this.config.workingDirectory, this.config.sandbox !== undefined);
@@ -918,6 +955,7 @@ export class ToolExecutor {
918
955
  }),
919
956
  }
920
957
  : {}),
958
+ ...(this.config.onJobAwaited ? { onAwaited: this.config.onJobAwaited } : {}),
921
959
  }),
922
960
  }
923
961
  : {}),
@@ -1758,7 +1796,7 @@ export class ToolExecutor {
1758
1796
  return {
1759
1797
  kind: 'skip',
1760
1798
  input: currentInput,
1761
- output: `Tool ${toolName} skipped by plugin: ${result.reason}`,
1799
+ output: skippedToolResultText(toolName, result.reason),
1762
1800
  };
1763
1801
  case 'error':
1764
1802
  return {