pi-subagents 0.77.0 → 0.78.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 (152) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/agents/evidence-auditor.md +1 -0
  3. package/agents/oracle.md +1 -0
  4. package/agents/reviewer.md +1 -0
  5. package/docs/agents.md +1 -1
  6. package/docs/configuration.md +21 -5
  7. package/docs/extension-api.md +5 -1
  8. package/docs/observability.md +2 -0
  9. package/docs/tool-reference.md +2 -2
  10. package/docs/workflows.md +2 -2
  11. package/package.json +1 -1
  12. package/skills/pi-subagents/SKILL.md +1 -1
  13. package/skills/pi-subagents/references/multi-lane-orchestration.md +1 -1
  14. package/src/api/external-runs.d.ts.map +1 -1
  15. package/src/api/external-runs.js +5 -4
  16. package/src/api/external-runs.js.map +1 -1
  17. package/src/api/preflight.js +1 -1
  18. package/src/api/preflight.js.map +1 -1
  19. package/src/extension/active-runs-prompt.d.ts +8 -0
  20. package/src/extension/active-runs-prompt.d.ts.map +1 -0
  21. package/src/extension/active-runs-prompt.js +30 -0
  22. package/src/extension/active-runs-prompt.js.map +1 -0
  23. package/src/extension/config.d.ts.map +1 -1
  24. package/src/extension/config.js +6 -0
  25. package/src/extension/config.js.map +1 -1
  26. package/src/extension/declaration-pinning.d.ts +5 -0
  27. package/src/extension/declaration-pinning.d.ts.map +1 -1
  28. package/src/extension/declaration-pinning.js +9 -2
  29. package/src/extension/declaration-pinning.js.map +1 -1
  30. package/src/extension/index.d.ts +0 -1
  31. package/src/extension/index.d.ts.map +1 -1
  32. package/src/extension/index.js +56 -14
  33. package/src/extension/index.js.map +1 -1
  34. package/src/extension/tool-activation.d.ts.map +1 -1
  35. package/src/extension/tool-activation.js +4 -2
  36. package/src/extension/tool-activation.js.map +1 -1
  37. package/src/intercom/native-supervisor-channel.d.ts +16 -1
  38. package/src/intercom/native-supervisor-channel.d.ts.map +1 -1
  39. package/src/intercom/native-supervisor-channel.js +25 -6
  40. package/src/intercom/native-supervisor-channel.js.map +1 -1
  41. package/src/runs/background/active-async-capacity.d.ts +2 -1
  42. package/src/runs/background/active-async-capacity.d.ts.map +1 -1
  43. package/src/runs/background/active-async-capacity.js +10 -6
  44. package/src/runs/background/active-async-capacity.js.map +1 -1
  45. package/src/runs/background/async-execution.js +3 -3
  46. package/src/runs/background/async-execution.js.map +1 -1
  47. package/src/runs/background/async-resume.d.ts.map +1 -1
  48. package/src/runs/background/async-resume.js +3 -1
  49. package/src/runs/background/async-resume.js.map +1 -1
  50. package/src/runs/background/chain-root-attachment.js +4 -4
  51. package/src/runs/background/chain-root-attachment.js.map +1 -1
  52. package/src/runs/background/control-channel.d.ts +1 -0
  53. package/src/runs/background/control-channel.d.ts.map +1 -1
  54. package/src/runs/background/control-channel.js +27 -3
  55. package/src/runs/background/control-channel.js.map +1 -1
  56. package/src/runs/background/notify.d.ts +1 -1
  57. package/src/runs/background/notify.d.ts.map +1 -1
  58. package/src/runs/background/notify.js +8 -4
  59. package/src/runs/background/notify.js.map +1 -1
  60. package/src/runs/background/run-child-session.d.ts.map +1 -1
  61. package/src/runs/background/run-child-session.js +7 -14
  62. package/src/runs/background/run-child-session.js.map +1 -1
  63. package/src/runs/background/runner-aliases.d.ts.map +1 -1
  64. package/src/runs/background/runner-aliases.js +11 -8
  65. package/src/runs/background/runner-aliases.js.map +1 -1
  66. package/src/runs/background/subagent-runner.d.ts.map +1 -1
  67. package/src/runs/background/subagent-runner.js +198 -279
  68. package/src/runs/background/subagent-runner.js.map +1 -1
  69. package/src/runs/background/workflow-terminal-proof.d.ts +1 -1
  70. package/src/runs/background/workflow-terminal-proof.d.ts.map +1 -1
  71. package/src/runs/background/workflow-terminal-proof.js +12 -3
  72. package/src/runs/background/workflow-terminal-proof.js.map +1 -1
  73. package/src/runs/foreground/async-stop-action.d.ts.map +1 -1
  74. package/src/runs/foreground/async-stop-action.js +6 -7
  75. package/src/runs/foreground/async-stop-action.js.map +1 -1
  76. package/src/runs/foreground/execution.d.ts.map +1 -1
  77. package/src/runs/foreground/execution.js +51 -55
  78. package/src/runs/foreground/execution.js.map +1 -1
  79. package/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  80. package/src/runs/foreground/subagent-executor.js +26 -35
  81. package/src/runs/foreground/subagent-executor.js.map +1 -1
  82. package/src/runs/shared/effective-system-prompt.d.ts +4 -4
  83. package/src/runs/shared/effective-system-prompt.d.ts.map +1 -1
  84. package/src/runs/shared/effective-system-prompt.js +5 -4
  85. package/src/runs/shared/effective-system-prompt.js.map +1 -1
  86. package/src/runs/shared/external-cli-runner.d.ts.map +1 -1
  87. package/src/runs/shared/external-cli-runner.js +3 -2
  88. package/src/runs/shared/external-cli-runner.js.map +1 -1
  89. package/src/runs/shared/model-resolution-diagnostic.d.ts +7 -5
  90. package/src/runs/shared/model-resolution-diagnostic.d.ts.map +1 -1
  91. package/src/runs/shared/model-resolution-diagnostic.js +13 -10
  92. package/src/runs/shared/model-resolution-diagnostic.js.map +1 -1
  93. package/src/runs/shared/orca-progress-tabs.js +1 -1
  94. package/src/runs/shared/orca-progress-tabs.js.map +1 -1
  95. package/src/runs/shared/partial-output.d.ts +7 -0
  96. package/src/runs/shared/partial-output.d.ts.map +1 -1
  97. package/src/runs/shared/partial-output.js +7 -0
  98. package/src/runs/shared/partial-output.js.map +1 -1
  99. package/src/runs/shared/single-output.d.ts +11 -1
  100. package/src/runs/shared/single-output.d.ts.map +1 -1
  101. package/src/runs/shared/single-output.js +48 -26
  102. package/src/runs/shared/single-output.js.map +1 -1
  103. package/src/runs/shared/structured-output.d.ts +2 -0
  104. package/src/runs/shared/structured-output.d.ts.map +1 -1
  105. package/src/runs/shared/structured-output.js +9 -0
  106. package/src/runs/shared/structured-output.js.map +1 -1
  107. package/src/runs/shared/subagent-prompt-runtime.d.ts +29 -0
  108. package/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
  109. package/src/runs/shared/subagent-prompt-runtime.js +87 -2
  110. package/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
  111. package/src/runs/shared/tool-budget.js +1 -1
  112. package/src/runs/shared/tool-budget.js.map +1 -1
  113. package/src/shared/child-transcript.js +1 -1
  114. package/src/shared/child-transcript.js.map +1 -1
  115. package/src/shared/extension-context.d.ts +5 -0
  116. package/src/shared/extension-context.d.ts.map +1 -1
  117. package/src/shared/extension-context.js +7 -0
  118. package/src/shared/extension-context.js.map +1 -1
  119. package/src/shared/parent-wake.d.ts +6 -0
  120. package/src/shared/parent-wake.d.ts.map +1 -1
  121. package/src/shared/parent-wake.js +11 -0
  122. package/src/shared/parent-wake.js.map +1 -1
  123. package/src/shared/types.d.ts +7 -8
  124. package/src/shared/types.d.ts.map +1 -1
  125. package/src/shared/types.js +4 -4
  126. package/src/shared/types.js.map +1 -1
  127. package/src/shared/utils.d.ts +2 -0
  128. package/src/shared/utils.d.ts.map +1 -1
  129. package/src/shared/utils.js +2 -0
  130. package/src/shared/utils.js.map +1 -1
  131. package/src/slash/slash-commands.d.ts.map +1 -1
  132. package/src/slash/slash-commands.js +20 -9
  133. package/src/slash/slash-commands.js.map +1 -1
  134. package/src/slash/subagents-admin.d.ts.map +1 -1
  135. package/src/slash/subagents-admin.js +3 -2
  136. package/src/slash/subagents-admin.js.map +1 -1
  137. package/src/tui/fleet-status.d.ts +5 -0
  138. package/src/tui/fleet-status.d.ts.map +1 -1
  139. package/src/tui/fleet-status.js +24 -3
  140. package/src/tui/fleet-status.js.map +1 -1
  141. package/src/tui/fleet.js +2 -2
  142. package/src/tui/fleet.js.map +1 -1
  143. package/src/watchdog/change-signature.d.ts.map +1 -1
  144. package/src/watchdog/change-signature.js +1 -3
  145. package/src/watchdog/change-signature.js.map +1 -1
  146. package/src/workflows/scripted-workflow.d.ts.map +1 -1
  147. package/src/workflows/scripted-workflow.js +13 -4
  148. package/src/workflows/scripted-workflow.js.map +1 -1
  149. package/src/runs/shared/run-history.d.ts +0 -67
  150. package/src/runs/shared/run-history.d.ts.map +0 -1
  151. package/src/runs/shared/run-history.js +0 -270
  152. package/src/runs/shared/run-history.js.map +0 -1
@@ -1,270 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import * as fs from "node:fs";
3
- import * as path from "node:path";
4
- import { getAgentDir } from "../../shared/utils.js";
5
- import { isUnexplainedProcessSignal } from "./process-signal.js";
6
- const ROTATE_READ_THRESHOLD = 1200;
7
- const ROTATE_KEEP = 1000;
8
- const PRIVATE_DIR_MODE = 0o700;
9
- const PRIVATE_FILE_MODE = 0o600;
10
- const REDACTED_TASK = "[redacted]";
11
- const historyFileStates = new Map();
12
- function getHistoryPath() {
13
- return path.join(getAgentDir(), "run-history.jsonl");
14
- }
15
- function hashTask(task) {
16
- return createHash("sha256").update(task).digest("hex");
17
- }
18
- function hardenHistoryStorage(historyPath) {
19
- const historyDir = path.dirname(historyPath);
20
- fs.mkdirSync(historyDir, { recursive: true, mode: PRIVATE_DIR_MODE });
21
- try {
22
- if ((fs.statSync(historyDir).mode & 0o777) !== PRIVATE_DIR_MODE)
23
- fs.chmodSync(historyDir, PRIVATE_DIR_MODE);
24
- }
25
- catch { }
26
- try {
27
- if ((fs.statSync(historyPath).mode & 0o777) !== PRIVATE_FILE_MODE)
28
- fs.chmodSync(historyPath, PRIVATE_FILE_MODE);
29
- }
30
- catch { }
31
- }
32
- function sanitizeHistoryLine(line) {
33
- let value;
34
- try {
35
- value = JSON.parse(line);
36
- }
37
- catch {
38
- return undefined;
39
- }
40
- if (!value || typeof value !== "object")
41
- return undefined;
42
- const record = value;
43
- const task = typeof record.task === "string" ? record.task : "";
44
- const taskHash = typeof record.taskHash === "string" && record.taskHash
45
- ? record.taskHash
46
- : task && task !== REDACTED_TASK
47
- ? hashTask(task)
48
- : undefined;
49
- return JSON.stringify({
50
- ...record,
51
- task: REDACTED_TASK,
52
- ...(taskHash ? { taskHash } : {}),
53
- });
54
- }
55
- function sanitizeHistoryLines(raw) {
56
- const lines = [];
57
- let changed = false;
58
- for (const line of raw.split("\n")) {
59
- const trimmed = line.trim();
60
- if (!trimmed)
61
- continue;
62
- const sanitized = sanitizeHistoryLine(trimmed);
63
- if (!sanitized) {
64
- changed = true;
65
- continue;
66
- }
67
- if (sanitized !== trimmed)
68
- changed = true;
69
- lines.push(sanitized);
70
- }
71
- return { lines, changed };
72
- }
73
- function writePrivateHistory(historyPath, lines) {
74
- fs.writeFileSync(historyPath, lines.length ? `${lines.join("\n")}\n` : "", { encoding: "utf-8", mode: PRIVATE_FILE_MODE });
75
- try {
76
- fs.chmodSync(historyPath, PRIVATE_FILE_MODE);
77
- }
78
- catch { }
79
- }
80
- function rememberHistoryFile(historyPath, lineCount) {
81
- const stat = fs.statSync(historyPath);
82
- historyFileStates.set(historyPath, {
83
- mtimeMs: stat.mtimeMs,
84
- ctimeMs: stat.ctimeMs,
85
- size: stat.size,
86
- ino: stat.ino,
87
- lineCount,
88
- });
89
- if (historyFileStates.size > 8)
90
- historyFileStates.delete(historyFileStates.keys().next().value);
91
- }
92
- function sanitizeHistoryFile(historyPath) {
93
- let stat;
94
- try {
95
- stat = fs.statSync(historyPath);
96
- }
97
- catch (error) {
98
- if (error.code === "ENOENT")
99
- return 0;
100
- throw error;
101
- }
102
- const cached = historyFileStates.get(historyPath);
103
- if (cached
104
- && cached.mtimeMs === stat.mtimeMs
105
- && cached.ctimeMs === stat.ctimeMs
106
- && cached.size === stat.size
107
- && cached.ino === stat.ino) {
108
- return cached.lineCount;
109
- }
110
- const raw = fs.readFileSync(historyPath, "utf-8");
111
- const { lines, changed } = sanitizeHistoryLines(raw);
112
- if (changed)
113
- writePrivateHistory(historyPath, lines);
114
- rememberHistoryFile(historyPath, lines.length);
115
- return lines.length;
116
- }
117
- function appendPrivateHistoryLine(historyPath, line) {
118
- const fd = fs.openSync(historyPath, fs.constants.O_APPEND | fs.constants.O_CREAT | fs.constants.O_WRONLY, PRIVATE_FILE_MODE);
119
- try {
120
- fs.writeSync(fd, `${line}\n`);
121
- }
122
- finally {
123
- fs.closeSync(fd);
124
- }
125
- }
126
- function backgroundRunHistoryTask(steps, resultMode) {
127
- const step = steps.length === 1 && typeof steps[0] === "object" && steps[0] !== null
128
- ? steps[0]
129
- : undefined;
130
- if (step) {
131
- const task = typeof step.launchBindingTask === "string" && step.launchBindingTask ? step.launchBindingTask : step.task;
132
- if (typeof task === "string" && task)
133
- return task;
134
- }
135
- return resultMode || "run";
136
- }
137
- const TERMINAL_STEP_STATUSES = new Set(["complete", "completed"]);
138
- /** Steps that reached THEIR OWN terminal state — run-wide flags must not relabel them. */
139
- const SELF_TERMINAL_STEP_STATUSES = new Set(["complete", "completed", "failed", "rejected"]);
140
- /**
141
- * Census rows for one finished background run. Single-step runs keep the exact
142
- * foreground shape (agent + task text). Multi-step runs record ONE ROW PER CHILD
143
- * STEP so `loadRunsForAgent(agent)` sees every child — a composite-only row would
144
- * stay invisible to per-agent lookups. Per-step prompts are never hashed:
145
- * multi-step rows hash the mode label only.
146
- *
147
- * Fidelity rules:
148
- * - a row is recorded only for children that actually LAUNCHED (a child
149
- * session was dispatched). Status alone cannot decide this: `stopRunner()`,
150
- * `timeoutRunner()`, fail-fast skips, and usage-budget skips all relabel
151
- * never-launched steps to terminal statuses (`stopped`, `failed`+`timedOut,
152
- * `failed`+`skipped) before the run ends — the runner therefore threads an
153
- * explicit `launched` fact per step. `pending` and `launched: false` steps
154
- * get no row — unrun agents must not accumulate attempts or failures;
155
- * - run-level terminal flags (stopped/interrupted/timedOut) apply only to steps
156
- * that did not reach a terminal state of their own — a child that completed
157
- * or failed BEFORE a sibling was interrupted keeps its own outcome, because
158
- * recordRun() lets those flags override the exit code;
159
- * - self-terminal steps carry their own timedOut/stopped flags instead.
160
- */
161
- export function planBackgroundRunHistory(input) {
162
- const runTerminal = {
163
- ...(input.stopped ? { stopped: true } : {}),
164
- ...(input.interrupted ? { interrupted: true } : {}),
165
- ...(input.timedOut ? { timedOut: true } : {}),
166
- };
167
- const task = backgroundRunHistoryTask(input.steps, input.resultMode);
168
- const rows = [];
169
- for (const [index, step] of input.statusSteps.entries()) {
170
- if (typeof step.agent !== "string" || !step.agent)
171
- continue;
172
- // `launched === false` marks steps the runner never dispatched a child
173
- // session for, regardless of the status they were later relabeled to.
174
- if (step.status === "pending" || step.launched === false)
175
- continue;
176
- const succeeded = typeof step.status === "string" && TERMINAL_STEP_STATUSES.has(step.status);
177
- const ownTerminal = {
178
- ...(step.timedOut === true ? { timedOut: true } : {}),
179
- ...(step.stopped === true ? { stopped: true } : {}),
180
- };
181
- // A step that reached its own terminal state (completed, or failed/rejected
182
- // before a sibling was interrupted) keeps its own outcome; run-wide flags
183
- // would relabel it in recordRun().
184
- const terminal = typeof step.status === "string" && SELF_TERMINAL_STEP_STATUSES.has(step.status) ? ownTerminal : { ...runTerminal, ...ownTerminal };
185
- const processSignal = input.stepResults?.[index]?.processSignal;
186
- rows.push({
187
- agent: step.agent,
188
- task,
189
- exitCode: succeeded ? 0 : 1,
190
- durationMs: typeof step.durationMs === "number" ? step.durationMs : input.runDurationMs,
191
- terminal: processSignal === undefined ? terminal : { ...terminal, processSignal: typeof processSignal === "string" ? processSignal : null },
192
- });
193
- }
194
- return rows;
195
- }
196
- export function recordRun(agent, task, exitCode, durationMs, terminal = {}) {
197
- try {
198
- const outcome = terminal.stopped
199
- ? "stopped"
200
- : terminal.interrupted
201
- ? "interrupted"
202
- : terminal.timedOut
203
- ? "timed_out"
204
- : exitCode !== 0 && isUnexplainedProcessSignal(terminal)
205
- ? "stopped"
206
- : exitCode === 0 ? "completed" : "failed";
207
- const entry = {
208
- agent,
209
- task: REDACTED_TASK,
210
- taskHash: hashTask(task),
211
- ts: Math.floor(Date.now() / 1000),
212
- status: exitCode === 0 ? "ok" : "error",
213
- outcome,
214
- duration: durationMs,
215
- ...(exitCode !== 0 ? { exit: exitCode } : {}),
216
- };
217
- const historyPath = getHistoryPath();
218
- hardenHistoryStorage(historyPath);
219
- let lineCount;
220
- try {
221
- lineCount = sanitizeHistoryFile(historyPath);
222
- }
223
- catch { }
224
- appendPrivateHistoryLine(historyPath, JSON.stringify(entry));
225
- if (lineCount === undefined)
226
- historyFileStates.delete(historyPath);
227
- else
228
- rememberHistoryFile(historyPath, lineCount + 1);
229
- }
230
- catch {
231
- // Best-effort — never crash the execution flow for history recording
232
- }
233
- }
234
- export function loadRunsForAgent(agent) {
235
- const historyPath = getHistoryPath();
236
- try {
237
- hardenHistoryStorage(historyPath);
238
- }
239
- catch { }
240
- if (!fs.existsSync(historyPath))
241
- return [];
242
- let raw;
243
- try {
244
- raw = fs.readFileSync(historyPath, "utf-8");
245
- }
246
- catch {
247
- return [];
248
- }
249
- let { lines, changed } = sanitizeHistoryLines(raw);
250
- if (lines.length > ROTATE_READ_THRESHOLD) {
251
- lines = lines.slice(-ROTATE_KEEP);
252
- changed = true;
253
- }
254
- try {
255
- if (changed)
256
- writePrivateHistory(historyPath, lines);
257
- rememberHistoryFile(historyPath, lines.length);
258
- }
259
- catch { }
260
- return lines
261
- .map((line) => { try {
262
- return JSON.parse(line);
263
- }
264
- catch {
265
- return undefined;
266
- } })
267
- .filter((entry) => entry !== undefined && entry.agent === agent)
268
- .reverse();
269
- }
270
- //# sourceMappingURL=run-history.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-history.js","sourceRoot":"","sources":["../../../../src/runs/shared/run-history.ts"],"names":[],"mappings":"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"}