@duetso/agent 0.2.2 → 0.2.3

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 (235) hide show
  1. package/README.md +19 -11
  2. package/dist/package.json +4 -4
  3. package/dist/src/cli/config.d.ts +10 -0
  4. package/dist/src/cli/config.d.ts.map +1 -0
  5. package/dist/src/cli/config.js +24 -0
  6. package/dist/src/cli/config.js.map +1 -0
  7. package/dist/src/cli/help.d.ts.map +1 -1
  8. package/dist/src/cli/help.js +11 -9
  9. package/dist/src/cli/help.js.map +1 -1
  10. package/dist/src/cli/inline-slash.d.ts +2 -1
  11. package/dist/src/cli/inline-slash.d.ts.map +1 -1
  12. package/dist/src/cli/inline-slash.js +14 -5
  13. package/dist/src/cli/inline-slash.js.map +1 -1
  14. package/dist/src/cli/memory-query.d.ts +1 -1
  15. package/dist/src/cli/model.d.ts +1 -1
  16. package/dist/src/cli/model.d.ts.map +1 -1
  17. package/dist/src/cli/model.js +1 -1
  18. package/dist/src/cli/model.js.map +1 -1
  19. package/dist/src/cli/route.d.ts +84 -0
  20. package/dist/src/cli/route.d.ts.map +1 -0
  21. package/dist/src/cli/route.js +261 -0
  22. package/dist/src/cli/route.js.map +1 -0
  23. package/dist/src/cli/rpc.d.ts +43 -2
  24. package/dist/src/cli/rpc.d.ts.map +1 -1
  25. package/dist/src/cli/rpc.js +176 -23
  26. package/dist/src/cli/rpc.js.map +1 -1
  27. package/dist/src/cli/run.d.ts +8 -1
  28. package/dist/src/cli/run.d.ts.map +1 -1
  29. package/dist/src/cli/run.js +24 -7
  30. package/dist/src/cli/run.js.map +1 -1
  31. package/dist/src/cli/shared.d.ts +4 -3
  32. package/dist/src/cli/shared.d.ts.map +1 -1
  33. package/dist/src/cli/shared.js +3 -4
  34. package/dist/src/cli/shared.js.map +1 -1
  35. package/dist/src/cli/shutdown.d.ts +4 -2
  36. package/dist/src/cli/shutdown.d.ts.map +1 -1
  37. package/dist/src/cli/shutdown.js +4 -2
  38. package/dist/src/cli/shutdown.js.map +1 -1
  39. package/dist/src/cli.d.ts +2 -0
  40. package/dist/src/cli.d.ts.map +1 -1
  41. package/dist/src/cli.js +12 -0
  42. package/dist/src/cli.js.map +1 -1
  43. package/dist/src/core/structured-output.d.ts +2 -0
  44. package/dist/src/core/structured-output.d.ts.map +1 -1
  45. package/dist/src/core/structured-output.js +1 -0
  46. package/dist/src/core/structured-output.js.map +1 -1
  47. package/dist/src/lib/system-reminder.d.ts +14 -0
  48. package/dist/src/lib/system-reminder.d.ts.map +1 -0
  49. package/dist/src/lib/system-reminder.js +53 -0
  50. package/dist/src/lib/system-reminder.js.map +1 -0
  51. package/dist/src/lib/walk-ancestors.d.ts +9 -0
  52. package/dist/src/lib/walk-ancestors.d.ts.map +1 -0
  53. package/dist/src/lib/walk-ancestors.js +28 -0
  54. package/dist/src/lib/walk-ancestors.js.map +1 -0
  55. package/dist/src/memory/observational-prompts.d.ts.map +1 -1
  56. package/dist/src/memory/observational-prompts.js +2 -1
  57. package/dist/src/memory/observational-prompts.js.map +1 -1
  58. package/dist/src/memory/observational.d.ts +31 -4
  59. package/dist/src/memory/observational.d.ts.map +1 -1
  60. package/dist/src/memory/observational.js +43 -4
  61. package/dist/src/memory/observational.js.map +1 -1
  62. package/dist/src/model-resolution/catalog.d.ts +2 -2
  63. package/dist/src/model-resolution/catalog.d.ts.map +1 -1
  64. package/dist/src/model-resolution/catalog.js +61 -33
  65. package/dist/src/model-resolution/catalog.js.map +1 -1
  66. package/dist/src/model-resolution/duet-gateway.d.ts +3 -3
  67. package/dist/src/model-resolution/duet-gateway.d.ts.map +1 -1
  68. package/dist/src/model-resolution/duet-gateway.js +119 -19
  69. package/dist/src/model-resolution/duet-gateway.js.map +1 -1
  70. package/dist/src/model-resolution/model-gateway.d.ts.map +1 -0
  71. package/dist/src/{cli → model-resolution}/model-gateway.js +10 -6
  72. package/dist/src/model-resolution/model-gateway.js.map +1 -0
  73. package/dist/src/model-resolution/resolver.d.ts +11 -4
  74. package/dist/src/model-resolution/resolver.d.ts.map +1 -1
  75. package/dist/src/model-resolution/resolver.js +39 -8
  76. package/dist/src/model-resolution/resolver.js.map +1 -1
  77. package/dist/src/model-routing/advisor-transcript.d.ts +36 -0
  78. package/dist/src/model-routing/advisor-transcript.d.ts.map +1 -0
  79. package/dist/src/model-routing/advisor-transcript.js +103 -0
  80. package/dist/src/model-routing/advisor-transcript.js.map +1 -0
  81. package/dist/src/model-routing/advisor.d.ts +27 -0
  82. package/dist/src/model-routing/advisor.d.ts.map +1 -0
  83. package/dist/src/model-routing/advisor.js +20 -0
  84. package/dist/src/model-routing/advisor.js.map +1 -0
  85. package/dist/src/model-routing/classifier.d.ts +57 -0
  86. package/dist/src/model-routing/classifier.d.ts.map +1 -0
  87. package/dist/src/model-routing/classifier.js +63 -0
  88. package/dist/src/model-routing/classifier.js.map +1 -0
  89. package/dist/src/model-routing/loader.d.ts +48 -0
  90. package/dist/src/model-routing/loader.d.ts.map +1 -0
  91. package/dist/src/model-routing/loader.js +79 -0
  92. package/dist/src/model-routing/loader.js.map +1 -0
  93. package/dist/src/model-routing/prompts.d.ts +22 -0
  94. package/dist/src/model-routing/prompts.d.ts.map +1 -0
  95. package/dist/src/model-routing/prompts.js +87 -0
  96. package/dist/src/model-routing/prompts.js.map +1 -0
  97. package/dist/src/model-routing/resolve.d.ts +40 -0
  98. package/dist/src/model-routing/resolve.d.ts.map +1 -0
  99. package/dist/src/model-routing/resolve.js +76 -0
  100. package/dist/src/model-routing/resolve.js.map +1 -0
  101. package/dist/src/model-routing/router.d.ts +149 -0
  102. package/dist/src/model-routing/router.d.ts.map +1 -0
  103. package/dist/src/model-routing/router.js +235 -0
  104. package/dist/src/model-routing/router.js.map +1 -0
  105. package/dist/src/model-routing/step-triggers.d.ts +27 -0
  106. package/dist/src/model-routing/step-triggers.d.ts.map +1 -0
  107. package/dist/src/model-routing/step-triggers.js +20 -0
  108. package/dist/src/model-routing/step-triggers.js.map +1 -0
  109. package/dist/src/model-routing/table.d.ts +126 -0
  110. package/dist/src/model-routing/table.d.ts.map +1 -0
  111. package/dist/src/model-routing/table.js +351 -0
  112. package/dist/src/model-routing/table.js.map +1 -0
  113. package/dist/src/session/session.d.ts +40 -23
  114. package/dist/src/session/session.d.ts.map +1 -1
  115. package/dist/src/session/session.js +173 -97
  116. package/dist/src/session/session.js.map +1 -1
  117. package/dist/src/tasks/quiescence.d.ts +13 -0
  118. package/dist/src/tasks/quiescence.d.ts.map +1 -0
  119. package/dist/src/tasks/quiescence.js +11 -0
  120. package/dist/src/tasks/quiescence.js.map +1 -0
  121. package/dist/src/tasks/task-manager.d.ts +101 -0
  122. package/dist/src/tasks/task-manager.d.ts.map +1 -0
  123. package/dist/src/tasks/task-manager.js +311 -0
  124. package/dist/src/tasks/task-manager.js.map +1 -0
  125. package/dist/src/tasks/types.d.ts +85 -0
  126. package/dist/src/tasks/types.d.ts.map +1 -0
  127. package/dist/src/tasks/types.js +2 -0
  128. package/dist/src/tasks/types.js.map +1 -0
  129. package/dist/src/tui/app.d.ts +1 -1
  130. package/dist/src/tui/app.d.ts.map +1 -1
  131. package/dist/src/tui/app.js +12 -2
  132. package/dist/src/tui/app.js.map +1 -1
  133. package/dist/src/tui/initial-prompt.d.ts.map +1 -1
  134. package/dist/src/tui/initial-prompt.js +0 -3
  135. package/dist/src/tui/initial-prompt.js.map +1 -1
  136. package/dist/src/tui/session-subscription.d.ts +3 -0
  137. package/dist/src/tui/session-subscription.d.ts.map +1 -1
  138. package/dist/src/tui/session-subscription.js +29 -5
  139. package/dist/src/tui/session-subscription.js.map +1 -1
  140. package/dist/src/tui/sidebar.d.ts +3 -0
  141. package/dist/src/tui/sidebar.d.ts.map +1 -1
  142. package/dist/src/tui/sidebar.js +19 -3
  143. package/dist/src/tui/sidebar.js.map +1 -1
  144. package/dist/src/tui/slash-commands.d.ts +12 -9
  145. package/dist/src/tui/slash-commands.d.ts.map +1 -1
  146. package/dist/src/tui/slash-commands.js +48 -10
  147. package/dist/src/tui/slash-commands.js.map +1 -1
  148. package/dist/src/tui/status-controller.d.ts +14 -9
  149. package/dist/src/tui/status-controller.d.ts.map +1 -1
  150. package/dist/src/tui/status-controller.js +26 -7
  151. package/dist/src/tui/status-controller.js.map +1 -1
  152. package/dist/src/tui/task-lane-renderer.d.ts +30 -0
  153. package/dist/src/tui/task-lane-renderer.d.ts.map +1 -0
  154. package/dist/src/tui/task-lane-renderer.js +93 -0
  155. package/dist/src/tui/task-lane-renderer.js.map +1 -0
  156. package/dist/src/tui/task-tree.d.ts +47 -0
  157. package/dist/src/tui/task-tree.d.ts.map +1 -0
  158. package/dist/src/tui/task-tree.js +190 -0
  159. package/dist/src/tui/task-tree.js.map +1 -0
  160. package/dist/src/tui/tool-formatters.js +3 -0
  161. package/dist/src/tui/tool-formatters.js.map +1 -1
  162. package/dist/src/turn-runner/agent-events.d.ts.map +1 -1
  163. package/dist/src/turn-runner/agent-events.js +1 -0
  164. package/dist/src/turn-runner/agent-events.js.map +1 -1
  165. package/dist/src/turn-runner/duration.d.ts +2 -2
  166. package/dist/src/turn-runner/duration.js +3 -3
  167. package/dist/src/turn-runner/duration.js.map +1 -1
  168. package/dist/src/turn-runner/prompts.d.ts +5 -1
  169. package/dist/src/turn-runner/prompts.d.ts.map +1 -1
  170. package/dist/src/turn-runner/prompts.js +30 -6
  171. package/dist/src/turn-runner/prompts.js.map +1 -1
  172. package/dist/src/turn-runner/runtime-clock.d.ts +20 -0
  173. package/dist/src/turn-runner/runtime-clock.d.ts.map +1 -0
  174. package/dist/src/turn-runner/runtime-clock.js +38 -0
  175. package/dist/src/turn-runner/runtime-clock.js.map +1 -0
  176. package/dist/src/turn-runner/shell-state-handle.d.ts +0 -3
  177. package/dist/src/turn-runner/shell-state-handle.d.ts.map +1 -1
  178. package/dist/src/turn-runner/shell-state-handle.js +5 -55
  179. package/dist/src/turn-runner/shell-state-handle.js.map +1 -1
  180. package/dist/src/turn-runner/skill-context.d.ts +6 -7
  181. package/dist/src/turn-runner/skill-context.d.ts.map +1 -1
  182. package/dist/src/turn-runner/skill-context.js +10 -10
  183. package/dist/src/turn-runner/skill-context.js.map +1 -1
  184. package/dist/src/turn-runner/skills.d.ts.map +1 -1
  185. package/dist/src/turn-runner/skills.js +2 -22
  186. package/dist/src/turn-runner/skills.js.map +1 -1
  187. package/dist/src/turn-runner/state-compaction.d.ts +7 -5
  188. package/dist/src/turn-runner/state-compaction.d.ts.map +1 -1
  189. package/dist/src/turn-runner/state-compaction.js +69 -10
  190. package/dist/src/turn-runner/state-compaction.js.map +1 -1
  191. package/dist/src/turn-runner/state-machine-decisions.d.ts +135 -0
  192. package/dist/src/turn-runner/state-machine-decisions.d.ts.map +1 -0
  193. package/dist/src/turn-runner/state-machine-decisions.js +443 -0
  194. package/dist/src/turn-runner/state-machine-decisions.js.map +1 -0
  195. package/dist/src/turn-runner/state-machine-session.d.ts +13 -28
  196. package/dist/src/turn-runner/state-machine-session.d.ts.map +1 -1
  197. package/dist/src/turn-runner/state-machine-session.js +18 -55
  198. package/dist/src/turn-runner/state-machine-session.js.map +1 -1
  199. package/dist/src/turn-runner/subagent.d.ts +156 -0
  200. package/dist/src/turn-runner/subagent.d.ts.map +1 -0
  201. package/dist/src/turn-runner/subagent.js +164 -0
  202. package/dist/src/turn-runner/subagent.js.map +1 -0
  203. package/dist/src/turn-runner/task-tools.d.ts +76 -0
  204. package/dist/src/turn-runner/task-tools.d.ts.map +1 -0
  205. package/dist/src/turn-runner/task-tools.js +370 -0
  206. package/dist/src/turn-runner/task-tools.js.map +1 -0
  207. package/dist/src/turn-runner/tools.d.ts +65 -17
  208. package/dist/src/turn-runner/tools.d.ts.map +1 -1
  209. package/dist/src/turn-runner/tools.js +173 -59
  210. package/dist/src/turn-runner/tools.js.map +1 -1
  211. package/dist/src/turn-runner/turn-runner.d.ts +198 -134
  212. package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
  213. package/dist/src/turn-runner/turn-runner.js +1302 -713
  214. package/dist/src/turn-runner/turn-runner.js.map +1 -1
  215. package/dist/src/turn-runner/usage-accounting.d.ts +4 -0
  216. package/dist/src/turn-runner/usage-accounting.d.ts.map +1 -1
  217. package/dist/src/turn-runner/usage-accounting.js +19 -0
  218. package/dist/src/turn-runner/usage-accounting.js.map +1 -1
  219. package/dist/src/types/config.d.ts +9 -1
  220. package/dist/src/types/config.d.ts.map +1 -1
  221. package/dist/src/types/config.js +2 -1
  222. package/dist/src/types/config.js.map +1 -1
  223. package/dist/src/types/protocol.d.ts +110 -30
  224. package/dist/src/types/protocol.d.ts.map +1 -1
  225. package/dist/src/types/state-machine.d.ts +10 -12
  226. package/dist/src/types/state-machine.d.ts.map +1 -1
  227. package/dist/src/types/state-machine.js.map +1 -1
  228. package/package.json +4 -4
  229. package/dist/src/cli/model-gateway.d.ts.map +0 -1
  230. package/dist/src/cli/model-gateway.js.map +0 -1
  231. package/dist/src/turn-runner/state-machine-controller.d.ts +0 -140
  232. package/dist/src/turn-runner/state-machine-controller.d.ts.map +0 -1
  233. package/dist/src/turn-runner/state-machine-controller.js +0 -501
  234. package/dist/src/turn-runner/state-machine-controller.js.map +0 -1
  235. /package/dist/src/{cli → model-resolution}/model-gateway.d.ts +0 -0
@@ -1,21 +1,31 @@
1
- import { readFile, writeFile } from "node:fs/promises";
1
+ import { open, readFile, rename, unlink } from "node:fs/promises";
2
+ import { randomUUID } from "node:crypto";
2
3
  import { join } from "node:path";
3
4
  import { TurnRunner } from "../turn-runner/turn-runner.js";
4
5
  import { resolveModelName } from "../model-resolution/resolver.js";
6
+ import { BUILT_IN_ROUTING_TABLE, isVirtualModel } from "../model-routing/table.js";
5
7
  import { validateThinkingLevel } from "./thinking-level.js";
6
- import { scheduledStateFallbackWakeAt } from "../turn-runner/duration.js";
8
+ import { SystemRuntimeClock, } from "../turn-runner/runtime-clock.js";
7
9
  /**
8
10
  * How often `scheduleWake` checks the wall clock against `wakeAt`. Polling — instead of relying
9
11
  * on a single long `setTimeout` — keeps wakes correct after macOS / Windows / container sleep,
10
12
  * because Node and Bun timers run off a monotonic clock that pauses with the process.
11
13
  */
12
14
  const WAKE_POLL_INTERVAL_MS = 30_000;
15
+ /** Trailing-edge gate for task-output persistence; bounds full-state serialization rate. */
16
+ const OUTPUT_PERSIST_DEBOUNCE_MS = 1_000;
13
17
  export class Session {
14
18
  config;
15
19
  id;
16
20
  runner;
17
21
  /** Directory owned by this session. State persistence writes `state.json` inside it. */
18
22
  sessionPath;
23
+ /** Session-level clock used by persistence timestamps and scheduled wake projection. */
24
+ /** Pending trailing-edge write for task-output bursts. */
25
+ cancelOutputPersist;
26
+ clock;
27
+ /** Unique same-directory temp target; stale files never alias another Session writer. */
28
+ persistenceTempPath;
19
29
  /** Subscribers interested in this single session's raw turn-runner events. */
20
30
  eventHandlers = new Set();
21
31
  /** Removes the session's subscription to its owned runner during disposal. */
@@ -27,17 +37,18 @@ export class Session {
27
37
  /** Most recent terminal event, returned immediately when callers wait after a turn has settled. */
28
38
  lastTerminal;
29
39
  /**
30
- * Polling interval that fires the wake when wall-clock `Date.now()` reaches `wakeAt`. Cleared
31
- * when user input or an interrupt arrives. We poll instead of using a single `setTimeout` so a
32
- * laptop that sleeps through the deadline still fires shortly after wake: Node/Bun timers are
33
- * driven by a monotonic clock that pauses on macOS sleep, so a long `setTimeout` would drift by
34
- * the duration of the sleep. Polling against `Date.now()` is sleep-proof.
40
+ * Polling interval that fires the wake when the injected wall clock reaches `wakeAt`. Cleared
41
+ * when user input or an interrupt arrives. We poll instead of using one long timer so a laptop
42
+ * that sleeps through the deadline still fires shortly after wake: Node/Bun timers are driven
43
+ * by a monotonic clock that pauses on macOS sleep, while the wall-clock comparison does not.
35
44
  */
36
45
  wakeTimer;
37
46
  /** Optional fast-path timer used when the deadline is closer than the poll interval. */
38
47
  wakeFastPath;
39
- /** Restores a prompt/answer turn back to sleep when the state machine is still waiting. */
40
- restoreSleepAfterTurn;
48
+ /** Latest eagerly serialized envelope waiting behind the active filesystem commit. */
49
+ queuedEnvelope;
50
+ /** The single writer drain shared by every caller while persistence is active. */
51
+ persistenceDrain;
41
52
  /** Whether this session should hydrate `state.json` on first use. New sessions start empty. */
42
53
  resumeFromStorage;
43
54
  /** Pending callers of `waitForTerminal`, resolved together when the next terminal event arrives. */
@@ -73,6 +84,8 @@ export class Session {
73
84
  // global memory (every other session, ranked into a budget).
74
85
  this.runner = options.runner ?? new TurnRunner({ ...config, sessionId: options.id });
75
86
  this.sessionPath = options.sessionPath;
87
+ this.clock = options.clock ?? new SystemRuntimeClock();
88
+ this.persistenceTempPath = `${this.sessionFilePath()}.tmp-${process.pid}-${randomUUID()}`;
76
89
  this.unsubscribeRunner = this.runner.subscribe((event) => void this.handleTurnEvent(event));
77
90
  }
78
91
  subscribe(handler) {
@@ -105,8 +118,11 @@ export class Session {
105
118
  };
106
119
  this.startPromise = this.runner.start(command).then(() => undefined);
107
120
  await this.startPromise;
108
- if (state?.status === "sleeping") {
109
- await this.replaySleepFromResumedState(state);
121
+ if (state) {
122
+ await this.persistLatestState();
123
+ if (state.status === "sleeping") {
124
+ await this.replaySleepFromResumedState();
125
+ }
110
126
  }
111
127
  }
112
128
  /**
@@ -116,18 +132,17 @@ export class Session {
116
132
  * normal terminal-event path so `scheduleWake` arms the timer and subscribers
117
133
  * receive the banner.
118
134
  */
119
- async replaySleepFromResumedState(state) {
120
- const scheduled = this.currentScheduledState(state);
121
- const progress = scheduled ? state.stateMachine?.progress?.states[scheduled.name] : undefined;
122
- const wakeAt = progress?.nextWakeAt ?? scheduledStateFallbackWakeAt(scheduled);
135
+ async replaySleepFromResumedState() {
136
+ const state = this.runner.getState();
137
+ const wakeAt = scheduledTaskWakeAt(state);
138
+ if (!state || wakeAt === undefined)
139
+ return;
123
140
  await this.handleTurnEvent({ type: "sleep", wakeAt, state });
124
141
  }
125
142
  async prompt(input) {
126
143
  await this.ensureStarted();
127
- const state = await this.requireState();
144
+ await this.requireState();
128
145
  this.cancelWake();
129
- const wasSleeping = state.status === "sleeping";
130
- this.restoreSleepAfterTurn = wasSleeping && this.isWaitingOnScheduledState(state);
131
146
  const command = {
132
147
  type: "prompt",
133
148
  message: input.message,
@@ -138,10 +153,8 @@ export class Session {
138
153
  }
139
154
  async answer(input) {
140
155
  await this.ensureStarted();
141
- const state = await this.requireState();
156
+ await this.requireState();
142
157
  this.cancelWake();
143
- const wasSleeping = state.status === "sleeping";
144
- this.restoreSleepAfterTurn = wasSleeping && this.isWaitingOnScheduledState(state);
145
158
  const command = {
146
159
  type: "answer",
147
160
  questions: input.questions,
@@ -214,6 +227,10 @@ export class Session {
214
227
  getState() {
215
228
  return this.runner.getState();
216
229
  }
230
+ /** Current router-owned status for read-only UI inspection. */
231
+ routeStatus() {
232
+ return this.runner.routeStatus?.();
233
+ }
217
234
  /** Latest `usage` payload for sidebar resume; not part of `TurnState`. */
218
235
  getLastUsage() {
219
236
  return this.lastUsage;
@@ -246,34 +263,44 @@ export class Session {
246
263
  return this.runner.getResolvedAgentFiles();
247
264
  }
248
265
  /**
249
- * Swap the model used for subsequent turns. Validates the name by
250
- * resolving it through the same `provider:modelId` machinery the CLI
251
- * uses at boot, so unknown shorthands / missing provider credentials
252
- * throw before we mutate runtime config. The change takes effect on
253
- * the next prompt (`startOptions` reads `this.config.model` per turn);
254
- * any in-flight turn keeps the model it started with.
266
+ * Swap the selection used for subsequent turns. Virtual names are validated
267
+ * against the runner's loaded project table; concrete names retain the CLI's
268
+ * existing resolution validation. A started runner is retargeted directly,
269
+ * while an in-flight turn keeps the selection it started with.
255
270
  */
256
271
  setModel(model) {
257
272
  const trimmed = model.trim();
258
273
  if (!trimmed) {
259
274
  throw new Error("Model name is required");
260
275
  }
261
- // Throws on unknown shorthand or unresolvable provider; surfaces the
262
- // same error the CLI startup would have produced for `--model`.
263
- resolveModelName(trimmed);
276
+ let routed;
277
+ if (this.runner.getState() && this.runner.setModel) {
278
+ routed = this.runner.setModel(trimmed).routed;
279
+ }
280
+ else {
281
+ routed =
282
+ this.runner.isVirtualModelSelection?.(trimmed) ??
283
+ isVirtualModel(trimmed, BUILT_IN_ROUTING_TABLE);
284
+ if (!routed)
285
+ resolveModelName(trimmed);
286
+ }
264
287
  this.config.model = trimmed;
265
- return { modelName: trimmed };
288
+ return { modelName: trimmed, routed };
266
289
  }
267
290
  /**
268
- * Swap the thinking level used for subsequent turns. Accepts any of the
269
- * pi-ai `ThinkingLevel` values (minimal / low / medium / high / xhigh);
270
- * the runner clamps to the model's supported range at use-time, so
271
- * passing a level a given model does not support is not an error here.
272
- * The change applies on the next prompt; any in-flight turn keeps the
273
- * level it started with.
291
+ * Swap the thinking level used for subsequent concrete turns. Routed
292
+ * selections report their tier instead because route effort owns the value;
293
+ * no config mutation occurs in that case.
274
294
  */
275
295
  setThinkingLevel(level) {
276
296
  const normalized = validateThinkingLevel(level);
297
+ const model = this.config.model;
298
+ const routed = model &&
299
+ (this.runner.isVirtualModelSelection?.(model) ??
300
+ isVirtualModel(model, BUILT_IN_ROUTING_TABLE));
301
+ if (routed) {
302
+ return { routedBy: model };
303
+ }
277
304
  this.config.thinkingLevel = normalized;
278
305
  return { thinkingLevel: normalized };
279
306
  }
@@ -298,21 +325,35 @@ export class Session {
298
325
  .start({ type: "start", state, ...this.startOptions() })
299
326
  .then(() => undefined);
300
327
  await this.startPromise;
328
+ await this.persistLatestState();
301
329
  if (state.status === "sleeping") {
302
- await this.replaySleepFromResumedState(state);
330
+ await this.replaySleepFromResumedState();
303
331
  }
304
332
  }
305
333
  async dispose() {
306
- await this.persistLatestState();
307
- this.unsubscribeRunner();
334
+ this.cancelOutputPersist?.();
335
+ this.cancelOutputPersist = undefined;
308
336
  this.cancelWake();
309
337
  await this.runner.dispose();
338
+ await this.persistLatestState();
339
+ if (this.persistenceDrain)
340
+ await this.persistenceDrain;
341
+ this.unsubscribeRunner();
310
342
  }
311
343
  dispatchTurn(command) {
312
344
  this.lastTerminal = undefined;
345
+ let terminalObserved = false;
346
+ const unsubscribeAssertion = this.runner.subscribe((event) => {
347
+ if (isTerminalEvent(event))
348
+ terminalObserved = true;
349
+ });
313
350
  const activeTurn = this.runner
314
351
  .turn(command)
315
- .then(() => undefined)
352
+ .then(() => {
353
+ if (!terminalObserved) {
354
+ throw new Error("TurnRunner.turn() settled without emitting a terminal event.");
355
+ }
356
+ })
316
357
  .catch((error) => {
317
358
  this.emit({
318
359
  type: "system",
@@ -321,6 +362,7 @@ export class Session {
321
362
  });
322
363
  })
323
364
  .finally(() => {
365
+ unsubscribeAssertion();
324
366
  if (this.activeTurn === activeTurn) {
325
367
  this.activeTurn = undefined;
326
368
  }
@@ -332,20 +374,35 @@ export class Session {
332
374
  this.applyUsageEvent(event);
333
375
  void this.persistLatestState();
334
376
  }
335
- let emitted = event;
377
+ if (event.type === "task_started" || event.type === "task_settled") {
378
+ void this.persistLatestState();
379
+ }
380
+ if (event.type === "task_output") {
381
+ // Output chunks can arrive at stream rate; each persist serializes the
382
+ // full TurnState, so gate this trigger through a trailing-edge debounce.
383
+ // Snapshot validity is unaffected — every fired write captures a
384
+ // complete state; the debounce only bounds how often.
385
+ if (!this.cancelOutputPersist) {
386
+ this.cancelOutputPersist = this.clock.schedule(() => {
387
+ this.cancelOutputPersist = undefined;
388
+ void this.persistLatestState();
389
+ }, OUTPUT_PERSIST_DEBOUNCE_MS);
390
+ }
391
+ }
336
392
  if (isTerminalEvent(event)) {
337
- emitted = this.normalizeTerminalEvent(event);
338
- this.lastTerminal = emitted;
339
- this.commitTerminalCost(emitted);
340
- await this.writeStoredEnvelope(emitted.state);
341
- if (emitted.type === "sleep") {
342
- this.scheduleWake(emitted);
393
+ this.cancelOutputPersist?.();
394
+ this.cancelOutputPersist = undefined;
395
+ this.lastTerminal = event;
396
+ this.commitTerminalCost(event);
397
+ await this.writeStoredEnvelope(event.state);
398
+ if (event.type === "sleep") {
399
+ this.scheduleWake(event);
343
400
  }
344
401
  for (const resolve of this.terminalWaiters.splice(0)) {
345
- resolve(emitted);
402
+ resolve(event);
346
403
  }
347
404
  }
348
- this.emit(emitted);
405
+ this.emit(event);
349
406
  }
350
407
  /**
351
408
  * Mirror the running turn aggregate into `lastUsage` (for the context bar)
@@ -376,9 +433,12 @@ export class Session {
376
433
  // field is independently optional in the type system even though the
377
434
  // runner attaches the bundle atomically. Check every field so the
378
435
  // narrowing is honest and the consumer doesn't need non-null asserts.
436
+ if (terminal.turnUsage) {
437
+ this.sessionCostUsd += terminal.turnUsage.cost.total;
438
+ }
379
439
  if (terminal.turnUsage &&
380
440
  terminal.lastMessageUsage &&
381
- terminal.effectiveContextWindow &&
441
+ terminal.effectiveContextWindow !== undefined &&
382
442
  terminal.contextWindowUsage) {
383
443
  this.lastUsage = {
384
444
  turnUsage: terminal.turnUsage,
@@ -387,7 +447,6 @@ export class Session {
387
447
  effectiveContextWindow: terminal.effectiveContextWindow,
388
448
  contextWindowUsage: terminal.contextWindowUsage,
389
449
  };
390
- this.sessionCostUsd += terminal.turnUsage.cost.total;
391
450
  }
392
451
  this.liveTurnCostUsd = 0;
393
452
  }
@@ -399,30 +458,6 @@ export class Session {
399
458
  this.sessionCostUsd = envelope.sessionCostUsd;
400
459
  }
401
460
  }
402
- normalizeTerminalEvent(event) {
403
- if (this.restoreSleepAfterTurn &&
404
- event.type === "complete" &&
405
- this.isWaitingOnScheduledState(event.state)) {
406
- this.restoreSleepAfterTurn = false;
407
- if (event.status === "failed") {
408
- this.emit({
409
- type: "system",
410
- level: "error",
411
- message: event.error ?? event.result ?? "Prompt failed while waiting.",
412
- });
413
- }
414
- const state = this.currentScheduledState(event.state);
415
- const progress = state ? event.state.stateMachine?.progress?.states[state.name] : undefined;
416
- const wakeAt = progress?.nextWakeAt ?? scheduledStateFallbackWakeAt(state);
417
- return {
418
- type: "sleep",
419
- wakeAt,
420
- state: { ...event.state, status: "sleeping" },
421
- };
422
- }
423
- this.restoreSleepAfterTurn = false;
424
- return event;
425
- }
426
461
  emit(event) {
427
462
  for (const handler of this.eventHandlers) {
428
463
  handler(event);
@@ -431,7 +466,7 @@ export class Session {
431
466
  scheduleWake(terminal) {
432
467
  this.cancelWake();
433
468
  const fire = () => {
434
- if (Date.now() < terminal.wakeAt)
469
+ if (this.clock.now() < terminal.wakeAt)
435
470
  return;
436
471
  this.cancelWake();
437
472
  const state = this.runner.getState();
@@ -442,20 +477,20 @@ export class Session {
442
477
  // Poll every 30s so a sleeping laptop still wakes the turn shortly after the lid reopens.
443
478
  // Jitter is bounded by the poll interval and is acceptable given the 15-minute minimum
444
479
  // wakeAt enforced upstream.
445
- this.wakeTimer = setInterval(fire, WAKE_POLL_INTERVAL_MS);
480
+ this.wakeTimer = this.clock.repeat(fire, WAKE_POLL_INTERVAL_MS);
446
481
  // Fast-path for deadlines closer than the poll interval so short waits stay tight.
447
- const remaining = terminal.wakeAt - Date.now();
482
+ const remaining = terminal.wakeAt - this.clock.now();
448
483
  if (remaining < WAKE_POLL_INTERVAL_MS) {
449
- this.wakeFastPath = setTimeout(fire, Math.max(0, remaining));
484
+ this.wakeFastPath = this.clock.schedule(fire, Math.max(0, remaining));
450
485
  }
451
486
  }
452
487
  cancelWake() {
453
488
  if (this.wakeTimer) {
454
- clearInterval(this.wakeTimer);
489
+ this.wakeTimer();
455
490
  this.wakeTimer = undefined;
456
491
  }
457
492
  if (this.wakeFastPath) {
458
- clearTimeout(this.wakeFastPath);
493
+ this.wakeFastPath();
459
494
  this.wakeFastPath = undefined;
460
495
  }
461
496
  }
@@ -485,19 +520,6 @@ export class Session {
485
520
  };
486
521
  return Object.keys(effective).length > 0 ? { options: effective } : {};
487
522
  }
488
- isWaitingOnScheduledState(state) {
489
- return Boolean(this.currentScheduledState(state) && !state?.stateMachine?.terminal);
490
- }
491
- currentScheduledState(state) {
492
- const stateMachine = state?.stateMachine;
493
- const currentState = stateMachine?.currentState;
494
- if (!stateMachine || !currentState)
495
- return undefined;
496
- const definitionState = stateMachine.definition.states.find((item) => item.name === currentState);
497
- return definitionState?.kind === "poll" || definitionState?.kind === "timer"
498
- ? definitionState
499
- : undefined;
500
- }
501
523
  async readStoredEnvelope() {
502
524
  try {
503
525
  const content = await readFile(this.sessionFilePath(), "utf-8");
@@ -523,19 +545,73 @@ export class Session {
523
545
  async writeStoredEnvelope(state) {
524
546
  const payload = {
525
547
  sessionId: this.id,
526
- updatedAt: Date.now(),
548
+ updatedAt: this.clock.now(),
527
549
  state,
528
550
  sessionCostUsd: this.sessionCostUsd,
529
551
  };
530
552
  if (this.lastUsage !== undefined) {
531
553
  payload.lastUsage = this.lastUsage;
532
554
  }
533
- await writeFile(this.sessionFilePath(), `${JSON.stringify(payload, null, 2)}\n`, "utf-8");
555
+ // Capture synchronously: runner snapshots may contain live arrays whose contents can
556
+ // change while an earlier filesystem operation is awaiting I/O.
557
+ this.queuedEnvelope = `${JSON.stringify(payload, null, 2)}\n`;
558
+ if (!this.persistenceDrain) {
559
+ const drain = this.drainPersistence();
560
+ this.persistenceDrain = drain;
561
+ void drain.then(() => {
562
+ if (this.persistenceDrain === drain)
563
+ this.persistenceDrain = undefined;
564
+ }, () => {
565
+ if (this.persistenceDrain === drain)
566
+ this.persistenceDrain = undefined;
567
+ });
568
+ }
569
+ await this.persistenceDrain;
570
+ }
571
+ async drainPersistence() {
572
+ try {
573
+ while (this.queuedEnvelope !== undefined) {
574
+ const serialized = this.queuedEnvelope;
575
+ this.queuedEnvelope = undefined;
576
+ await this.commitSerializedEnvelope(serialized);
577
+ }
578
+ }
579
+ catch (error) {
580
+ // Every caller awaiting this drain observes the failure. Discard a coalesced payload
581
+ // rather than committing it unexpectedly on some unrelated future persistence request.
582
+ this.queuedEnvelope = undefined;
583
+ throw error;
584
+ }
585
+ }
586
+ async commitSerializedEnvelope(serialized) {
587
+ const destination = this.sessionFilePath();
588
+ const temporary = this.persistenceTempPath;
589
+ try {
590
+ const file = await open(temporary, "w", 0o600);
591
+ try {
592
+ await file.writeFile(serialized, "utf-8");
593
+ await file.sync();
594
+ }
595
+ finally {
596
+ await file.close();
597
+ }
598
+ await rename(temporary, destination);
599
+ }
600
+ catch (error) {
601
+ await unlink(temporary).catch(() => undefined);
602
+ throw error;
603
+ }
534
604
  }
535
605
  sessionFilePath() {
536
606
  return join(this.sessionPath, "state.json");
537
607
  }
538
608
  }
609
+ function scheduledTaskWakeAt(state) {
610
+ const wakeTimes = (state?.tasks ?? [])
611
+ .filter((task) => task.kind === "scheduled" && task.status === "scheduled" && Number.isFinite(task.wakeAt))
612
+ .map((task) => task.wakeAt);
613
+ return wakeTimes.length > 0 ? Math.min(...wakeTimes) : undefined;
614
+ }
539
615
  function isTerminalEvent(event) {
540
616
  return (event.type === "complete" ||
541
617
  event.type === "ask" ||
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/session/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/session/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { TaskDescriptor } from "./types.js";
2
+ /** The runner must remain awake while in-process work exists. */
3
+ export type PendingWork = {
4
+ kind: "open";
5
+ } | {
6
+ kind: "sleep";
7
+ wakeAt: number;
8
+ } | {
9
+ kind: "complete";
10
+ };
11
+ /** Decide the terminal posture from serializable task descriptors alone. */
12
+ export declare function computePendingWork(descriptors: readonly TaskDescriptor[]): PendingWork;
13
+ //# sourceMappingURL=quiescence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quiescence.d.ts","sourceRoot":"","sources":["../../../src/tasks/quiescence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,iEAAiE;AACjE,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,GAAG,WAAW,CAUtF"}
@@ -0,0 +1,11 @@
1
+ /** Decide the terminal posture from serializable task descriptors alone. */
2
+ export function computePendingWork(descriptors) {
3
+ if (descriptors.some((descriptor) => descriptor.status === "running")) {
4
+ return { kind: "open" };
5
+ }
6
+ const wakeTimes = descriptors.flatMap((descriptor) => descriptor.status === "scheduled" && descriptor.wakeAt !== undefined ? [descriptor.wakeAt] : []);
7
+ if (wakeTimes.length > 0)
8
+ return { kind: "sleep", wakeAt: Math.min(...wakeTimes) };
9
+ return { kind: "complete" };
10
+ }
11
+ //# sourceMappingURL=quiescence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quiescence.js","sourceRoot":"","sources":["../../../src/tasks/quiescence.ts"],"names":[],"mappings":"AAQA,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,WAAsC;IACvE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CACnD,UAAU,CAAC,MAAM,KAAK,WAAW,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAChG,CAAC;IACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;IACnF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}