poly-weaver 0.8.0 → 0.8.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.
- package/dist/agents/implementors/handler.d.ts.map +1 -1
- package/dist/agents/implementors/handler.js +2 -1
- package/dist/agents/implementors/handler.js.map +1 -1
- package/dist/agents/planners/handler.d.ts.map +1 -1
- package/dist/agents/planners/handler.js +2 -1
- package/dist/agents/planners/handler.js.map +1 -1
- package/dist/agents/reviewers/handler.d.ts.map +1 -1
- package/dist/agents/reviewers/handler.js +2 -1
- package/dist/agents/reviewers/handler.js.map +1 -1
- package/dist/agents/runner.d.ts +25 -0
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +63 -1
- package/dist/agents/runner.js.map +1 -1
- package/dist/agents/simplifiers/handler.d.ts.map +1 -1
- package/dist/agents/simplifiers/handler.js +2 -1
- package/dist/agents/simplifiers/handler.js.map +1 -1
- package/dist/ansi.d.ts +14 -0
- package/dist/ansi.d.ts.map +1 -1
- package/dist/ansi.js +15 -0
- package/dist/ansi.js.map +1 -1
- package/dist/dump/collector.d.ts.map +1 -1
- package/dist/dump/collector.js +11 -0
- package/dist/dump/collector.js.map +1 -1
- package/dist/dump/pty-tail-buffer.d.ts +25 -0
- package/dist/dump/pty-tail-buffer.d.ts.map +1 -0
- package/dist/dump/pty-tail-buffer.js +48 -0
- package/dist/dump/pty-tail-buffer.js.map +1 -0
- package/dist/dump/service.d.ts.map +1 -1
- package/dist/dump/service.js +2 -0
- package/dist/dump/service.js.map +1 -1
- package/dist/dump/types.d.ts +8 -0
- package/dist/dump/types.d.ts.map +1 -1
- package/dist/dump/types.js.map +1 -1
- package/dist/flow/executor.d.ts.map +1 -1
- package/dist/flow/executor.js +8 -1
- package/dist/flow/executor.js.map +1 -1
- package/dist/flow/types.d.ts +4 -0
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/flow/types.js.map +1 -1
- package/dist/providers/base-completion.d.ts +18 -0
- package/dist/providers/base-completion.d.ts.map +1 -1
- package/dist/providers/base-completion.js +29 -0
- package/dist/providers/base-completion.js.map +1 -1
- package/dist/providers/claude/completion-plan-mode.d.ts +9 -1
- package/dist/providers/claude/completion-plan-mode.d.ts.map +1 -1
- package/dist/providers/claude/completion-plan-mode.js +53 -2
- package/dist/providers/claude/completion-plan-mode.js.map +1 -1
- package/dist/providers/claude/plan-mode-pty-monitor.d.ts +51 -0
- package/dist/providers/claude/plan-mode-pty-monitor.d.ts.map +1 -0
- package/dist/providers/claude/plan-mode-pty-monitor.js +97 -0
- package/dist/providers/claude/plan-mode-pty-monitor.js.map +1 -0
- package/dist/providers/claude/strategy.d.ts.map +1 -1
- package/dist/providers/claude/strategy.js +6 -1
- package/dist/providers/claude/strategy.js.map +1 -1
- package/dist/providers/codex/plan-mode-activator.d.ts +23 -0
- package/dist/providers/codex/plan-mode-activator.d.ts.map +1 -0
- package/dist/providers/codex/plan-mode-activator.js +207 -0
- package/dist/providers/codex/plan-mode-activator.js.map +1 -0
- package/dist/providers/codex/session.d.ts +1 -0
- package/dist/providers/codex/session.d.ts.map +1 -1
- package/dist/providers/codex/session.js +35 -18
- package/dist/providers/codex/session.js.map +1 -1
- package/dist/providers/codex/strategy.d.ts +2 -1
- package/dist/providers/codex/strategy.d.ts.map +1 -1
- package/dist/providers/codex/strategy.js +17 -13
- package/dist/providers/codex/strategy.js.map +1 -1
- package/dist/providers/copilot/session.d.ts.map +1 -1
- package/dist/providers/copilot/session.js +11 -20
- package/dist/providers/copilot/session.js.map +1 -1
- package/dist/providers/types.d.ts +76 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/session/locator.d.ts +15 -0
- package/dist/session/locator.d.ts.map +1 -1
- package/dist/session/locator.js +46 -27
- package/dist/session/locator.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import { homedir } from "node:os";
|
|
|
3
3
|
import { access, readdir } from "node:fs/promises";
|
|
4
4
|
import { readSessionFile } from "../../session/reader.js";
|
|
5
5
|
import { normalizePath } from "../path-utils.js";
|
|
6
|
-
import {
|
|
6
|
+
import { pollUntil, throwIfAborted } from "../../session/locator.js";
|
|
7
7
|
/**
|
|
8
8
|
* Get the Copilot session-state directory.
|
|
9
9
|
* Copilot stores sessions at: ~/.copilot/session-state/
|
|
@@ -241,20 +241,8 @@ export class CopilotSessionHandler {
|
|
|
241
241
|
throw new Error("Cannot find session file: snapshot was skipped");
|
|
242
242
|
}
|
|
243
243
|
const { dir, files: knownDirs } = snapshot;
|
|
244
|
-
const deadline = Date.now() + 60_000;
|
|
245
|
-
const pollMs = 500;
|
|
246
244
|
const signal = opts?.signal;
|
|
247
|
-
|
|
248
|
-
if (signal?.aborted) {
|
|
249
|
-
const reason = signal.reason;
|
|
250
|
-
if (reason instanceof Error)
|
|
251
|
-
throw reason;
|
|
252
|
-
throw new AbortError(typeof reason === "string" ? reason : undefined);
|
|
253
|
-
}
|
|
254
|
-
};
|
|
255
|
-
checkAbort();
|
|
256
|
-
while (Date.now() < deadline) {
|
|
257
|
-
checkAbort();
|
|
245
|
+
return pollUntil(async () => {
|
|
258
246
|
let entries;
|
|
259
247
|
try {
|
|
260
248
|
const dirEntries = await readdir(dir, { withFileTypes: true });
|
|
@@ -266,14 +254,13 @@ export class CopilotSessionHandler {
|
|
|
266
254
|
entries = [];
|
|
267
255
|
}
|
|
268
256
|
for (const name of entries) {
|
|
269
|
-
|
|
257
|
+
throwIfAborted(signal);
|
|
270
258
|
if (knownDirs.has(name))
|
|
271
259
|
continue;
|
|
272
260
|
const eventsFile = join(dir, name, "events.jsonl");
|
|
273
261
|
const result = await verifyCopilotSessionCwd(eventsFile, workdir);
|
|
274
|
-
if (result === true)
|
|
262
|
+
if (result === true)
|
|
275
263
|
return eventsFile;
|
|
276
|
-
}
|
|
277
264
|
if (result === false) {
|
|
278
265
|
// Definitive CWD mismatch — belongs to a different concurrent
|
|
279
266
|
// Copilot process. Skip permanently.
|
|
@@ -282,9 +269,13 @@ export class CopilotSessionHandler {
|
|
|
282
269
|
// result === null → inconclusive (file missing/empty/no session.start
|
|
283
270
|
// yet). Don't add to knownDirs — retry on next poll.
|
|
284
271
|
}
|
|
285
|
-
|
|
286
|
-
}
|
|
287
|
-
|
|
272
|
+
return undefined;
|
|
273
|
+
}, {
|
|
274
|
+
timeoutMs: 60_000,
|
|
275
|
+
pollMs: 500,
|
|
276
|
+
signal,
|
|
277
|
+
timeoutMessage: `Timed out waiting for new Copilot session directory in ${dir}`,
|
|
278
|
+
});
|
|
288
279
|
}
|
|
289
280
|
async extractSessionId(sessionFilePath) {
|
|
290
281
|
// Session ID is the UUID directory name (parent of events.jsonl)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/providers/copilot/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAoB,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/providers/copilot/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAoB,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGrE;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,GAAW;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAAkB,EAClB,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;QAEhD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAEL,CAAC;gBACd,MAAM,GAAG,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC;gBAC/B,IAAI,CAAC,GAAG;oBAAE,OAAO,KAAK,CAAC;gBACvB,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,WAAW,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,2DAA2D;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAoB;IACzD,iEAAiE;IACjE,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;IAEvB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;YACjE,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,sBAAsB,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1E,aAAa,GAAG,CAAC,CAAC;YAClB,MAAM;QACR,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,qDAAqD;IACrD,IAAI,aAAa,KAAK,CAAC,CAAC,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/C,4DAA4D;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,sBAAsB;gBAAE,aAAa,GAAG,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,IAAI,aAAa,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,MAAM,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IAE/D,wEAAwE;IACxE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAwC,CAAC;YAC3D,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,OAAO,GAAG,IAAI,CAAC;IACxB,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAoB;IAC/D,MAAM,cAAc,GAAwB,EAAE,CAAC;IAC/C,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAEL,CAAC;YACd,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU;gBAAE,SAAS;YAEpD,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,qBAAqB,CAC7B,qEAAqE,CACtE,CAAC;YACJ,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAA+C,CAAC;YAClE,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,CAAC;YAChC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,qBAAqB,CAC7B,2FAA2F,UAAU,GAAG,CACzG,CAAC;YACJ,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACtC,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAML,CAAC;YACd,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;gBAAE,SAAS;YAC3D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,GAAG,GAAG,cAAc,IAAI,CAAC,UAAU,cAAc,QAAQ,GAAG,CAAC;YAEnE,mCAAmC;YACnC,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACtC,MAAM,IAAI,qBAAqB,CAC7B,2DAA2D,GAAG,GAAG,CAClE,CAAC;YACJ,CAAC;YACD,uDAAuD;YACvD,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC3B,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACpC,SAAS;YACX,CAAC;YACD,oDAAoD;YACpD,IACE,CAAC,IAAI,CAAC,aAAa;gBACnB,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ;gBACtC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EACjC,CAAC;gBACD,MAAM,IAAI,qBAAqB,CAC7B,qFAAqF,GAAG,GAAG,CAC5F,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,aAGtB,CAAC;YACF,+DAA+D;YAC/D,IACE,CAAC,SAAS,CAAC,UAAU;gBACrB,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ;gBACxC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,EACnC,CAAC;gBACD,MAAM,IAAI,qBAAqB,CAC7B,+EAA+E,GAAG,GAAG,CACtF,CAAC;YACJ,CAAC;YACD,MAAM,UAAU,GAAG,SAAS,CAAC,UAAmC,CAAC;YACjE,8CAA8C;YAC9C,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9E,MAAM,IAAI,qBAAqB,CAC7B,uFAAuF,GAAG,GAAG,CAC9F,CAAC;YACJ,CAAC;YACD,4DAA4D;YAC5D,IAAI,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACtC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACpC,SAAS;YACX,CAAC;YACD,2DAA2D;YAC3D,IACE,CAAC,SAAS,CAAC,oBAAoB;gBAC/B,OAAO,SAAS,CAAC,oBAAoB,KAAK,QAAQ;gBAClD,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAC7C,CAAC;gBACD,MAAM,IAAI,qBAAqB,CAC7B,yFAAyF,GAAG,GAAG,CAChG,CAAC;YACJ,CAAC;YACD,MAAM,UAAU,GAAG,SAAS,CAAC,oBAA4C,CAAC;YAC1E,6CAA6C;YAC7C,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5E,MAAM,IAAI,qBAAqB,CAC7B,gGAAgG,GAAG,GAAG,CACvG,CAAC;YACJ,CAAC;YAED,gBAAgB;YAChB,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAqB;IAChC,kBAAkB,CAAC,QAAgB,EAAE,SAAiB;QACpD,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5C,oEAAoE;QACpE,oEAAoE;QACpE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,QAAyB,EACzB,OAAe,EACf,IAA+B;QAE/B,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC;QAE5B,OAAO,SAAS,CACd,KAAK,IAAI,EAAE;YACT,IAAI,OAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/D,OAAO,GAAG,UAAU;qBACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;qBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAElC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAClE,IAAI,MAAM,KAAK,IAAI;oBAAE,OAAO,UAAU,CAAC;gBACvC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBACrB,8DAA8D;oBAC9D,qCAAqC;oBACrC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC;gBACD,sEAAsE;gBACtE,qDAAqD;YACvD,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,EACD;YACE,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,GAAG;YACX,MAAM;YACN,cAAc,EAAE,0DAA0D,GAAG,EAAE;SAChF,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,eAAuB;QAC5C,iEAAiE;QACjE,OAAO,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,eAAuB,EACvB,WAAmB;QAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,CAAC;QAC3D,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,MAAM,MAAM,GAAG,GAAG,CAAC;QACnB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACvB,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,eAAuB,EACvB,UAAkB;QAElB,OAAO,4BAA4B,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5F,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,eAAuB,EAAE,UAAkB;QACpE,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { UserClarification } from "../agents/planners/types.js";
|
|
2
2
|
import type { OrchestrationOutput } from "../terminal/output.js";
|
|
3
|
+
import type { PtyHandle } from "../pty/types.js";
|
|
3
4
|
/**
|
|
4
5
|
* Provider-specific plan mode configuration.
|
|
5
6
|
* The PlannerAdapter reads this to apply plan mode correctly per provider.
|
|
@@ -36,7 +37,72 @@ export type BuildArgsOpts = {
|
|
|
36
37
|
permissionFlags?: string[];
|
|
37
38
|
promptPrefix?: string;
|
|
38
39
|
yolo?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* True when the role is running in provider plan mode. Strategies whose
|
|
42
|
+
* plan-mode entry is driven post-spawn via {@link PlanModeActivator}
|
|
43
|
+
* (currently only Codex) MUST omit the positional prompt argument so the
|
|
44
|
+
* activator can deliver the prompt after Shift+Tab cycles the TUI into
|
|
45
|
+
* plan mode. Strategies that activate plan mode via CLI flags or text
|
|
46
|
+
* prefixing leave behavior unchanged.
|
|
47
|
+
*/
|
|
48
|
+
planMode?: boolean;
|
|
39
49
|
};
|
|
50
|
+
/**
|
|
51
|
+
* Post-spawn plan-mode entry mechanism for providers whose CLI has no
|
|
52
|
+
* equivalent flag or slash-command for entering plan mode.
|
|
53
|
+
*
|
|
54
|
+
* Codex is the only current implementor: after its normal TUI has started
|
|
55
|
+
* (detected from the rendered `>_ OpenAI Codex (v...)` header, not footer
|
|
56
|
+
* status text), it must be cycled into plan mode by sending a Shift+Tab
|
|
57
|
+
* escape sequence, then driven with the planner prompt via bracketed paste.
|
|
58
|
+
* Claude and Copilot leave this undefined — both engage plan mode through
|
|
59
|
+
* CLI args / prompt prefixes that take effect at spawn time.
|
|
60
|
+
*
|
|
61
|
+
* Two-phase lifecycle:
|
|
62
|
+
* 1. `attach(handle)` is called by the runner immediately after spawn
|
|
63
|
+
* (alongside `detector.onData` and `attachChild`). It registers an
|
|
64
|
+
* `onData` listener and begins populating a rolling buffer / virtual
|
|
65
|
+
* terminal so no startup bytes (header, status line) are missed during
|
|
66
|
+
* the session-discovery window. `attach` is side-effect-free on the
|
|
67
|
+
* PTY (it does not call `handle.write`).
|
|
68
|
+
* 2. `AttachedActivator.drive(prompt, opts)` runs the
|
|
69
|
+
* detect → Shift+Tab loop → bracketed paste → Enter sequence, reading
|
|
70
|
+
* the buffer that `attach` has already been populating. Resolves once
|
|
71
|
+
* the planner prompt has been submitted; rejects on timeout / abort /
|
|
72
|
+
* child exit. When `onReadyForAutomation` is supplied, the activator
|
|
73
|
+
* calls it exactly once after startup readiness is detected and before
|
|
74
|
+
* the first synthetic write (Shift+Tab or bracketed paste).
|
|
75
|
+
*
|
|
76
|
+
* `AttachedActivator.dispose()` releases the `onData` subscription and the
|
|
77
|
+
* virtual terminal. It is idempotent and must run on both success and
|
|
78
|
+
* failure (drive's own `finally` calls it; the runner must call it on any
|
|
79
|
+
* cleanup path where drive is never reached).
|
|
80
|
+
*
|
|
81
|
+
* Gate ownership stays with the runner: the runner opens the gate during
|
|
82
|
+
* startup / permission prompts, closes it from `onReadyForAutomation`,
|
|
83
|
+
* then reopens it after `drive()` resolves.
|
|
84
|
+
*/
|
|
85
|
+
export interface PlanModeActivator {
|
|
86
|
+
/** Begin buffering PTY output and tracking VT state. Side-effect-free on the PTY (no writes). */
|
|
87
|
+
attach(handle: PtyHandle): AttachedActivator;
|
|
88
|
+
}
|
|
89
|
+
export interface AttachedActivator {
|
|
90
|
+
/**
|
|
91
|
+
* Drive the detect → Shift+Tab → bracketed-paste → Enter sequence,
|
|
92
|
+
* reading the buffer `attach()` has been populating. Calls `dispose()`
|
|
93
|
+
* in its own `finally` on both success and failure.
|
|
94
|
+
*/
|
|
95
|
+
drive(prompt: string, opts: {
|
|
96
|
+
signal?: AbortSignal;
|
|
97
|
+
onReadyForAutomation?: () => void;
|
|
98
|
+
}): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Release the `onData` subscription and virtual terminal. Idempotent.
|
|
101
|
+
* Must be called if `drive` is never invoked or after `drive` resolves
|
|
102
|
+
* or rejects.
|
|
103
|
+
*/
|
|
104
|
+
dispose(): void;
|
|
105
|
+
}
|
|
40
106
|
/** Returns `[flag]` when `condition` is not `false`, else `[]`. */
|
|
41
107
|
export declare function flagIf(condition: boolean | undefined, flag: string): string[];
|
|
42
108
|
/**
|
|
@@ -136,6 +202,16 @@ export interface ProviderStrategy {
|
|
|
136
202
|
createDetector(opts?: {
|
|
137
203
|
planMode?: boolean;
|
|
138
204
|
}): CompletionDetector;
|
|
205
|
+
/**
|
|
206
|
+
* Optional post-spawn plan-mode activator. When set and the runner is
|
|
207
|
+
* processing a `RunRequest` with `planMode === true`, the runner calls
|
|
208
|
+
* `attach(handle)` immediately after spawn (so no PTY bytes are missed
|
|
209
|
+
* during session discovery) and `drive(prompt, opts)` at the existing
|
|
210
|
+
* activation site — before session discovery on fresh runs, after
|
|
211
|
+
* line-offset calculation on resume runs. Providers whose CLI engages
|
|
212
|
+
* plan mode via flags / prompt prefix leave this undefined.
|
|
213
|
+
*/
|
|
214
|
+
readonly planModeActivator?: PlanModeActivator;
|
|
139
215
|
}
|
|
140
216
|
/**
|
|
141
217
|
* Watches a session file and PTY output to detect when an agent turn is complete.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AA2GA,mEAAmE;AACnE,MAAM,UAAU,MAAM,CAAC,SAA8B,EAAE,IAAY;IACjE,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC"}
|
|
@@ -7,6 +7,7 @@ export declare class AbortError extends Error {
|
|
|
7
7
|
readonly code = "ABORT_ERR";
|
|
8
8
|
constructor(message?: string);
|
|
9
9
|
}
|
|
10
|
+
export declare function throwIfAborted(signal: AbortSignal | undefined): void;
|
|
10
11
|
/**
|
|
11
12
|
* Sleep for `ms` milliseconds, settling early if `signal` aborts.
|
|
12
13
|
*
|
|
@@ -15,6 +16,20 @@ export declare class AbortError extends Error {
|
|
|
15
16
|
* either before the call or while sleeping.
|
|
16
17
|
*/
|
|
17
18
|
export declare function abortableSleep(ms: number, signal?: AbortSignal): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Poll an async predicate until it returns a defined value or the
|
|
21
|
+
* deadline expires. The predicate returns `undefined` to keep polling,
|
|
22
|
+
* or any other value to resolve the call.
|
|
23
|
+
*
|
|
24
|
+
* Aborts via `opts.signal` at three points: entry, top of each iteration
|
|
25
|
+
* (before invoking the predicate), and during the inter-poll sleep.
|
|
26
|
+
*/
|
|
27
|
+
export declare function pollUntil<T>(check: () => Promise<T | undefined>, opts: {
|
|
28
|
+
timeoutMs: number;
|
|
29
|
+
pollMs: number;
|
|
30
|
+
signal?: AbortSignal;
|
|
31
|
+
timeoutMessage: string;
|
|
32
|
+
}): Promise<T>;
|
|
18
33
|
/**
|
|
19
34
|
* Wait for a single known file path to appear on disk.
|
|
20
35
|
* Used when the session file path is predicted upfront (pre-assigned session ID).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,eAAe;gBAChB,OAAO,SAAY;CAIhC;
|
|
1
|
+
{"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,eAAe;gBAChB,OAAO,SAAY;CAIhC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAMpE;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBpF;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EACnC,IAAI,EAAE;IACJ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB,GACA,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAS,EAClB,MAAM,SAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAatB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,SAAS,SAAS,EAClB,MAAM,SAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
|
package/dist/session/locator.js
CHANGED
|
@@ -12,7 +12,7 @@ export class AbortError extends Error {
|
|
|
12
12
|
this.name = "AbortError";
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
function throwIfAborted(signal) {
|
|
15
|
+
export function throwIfAborted(signal) {
|
|
16
16
|
if (!signal?.aborted)
|
|
17
17
|
return;
|
|
18
18
|
const reason = signal.reason;
|
|
@@ -55,6 +55,26 @@ export async function abortableSleep(ms, signal) {
|
|
|
55
55
|
signal.addEventListener("abort", onAbort, { once: true });
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Poll an async predicate until it returns a defined value or the
|
|
60
|
+
* deadline expires. The predicate returns `undefined` to keep polling,
|
|
61
|
+
* or any other value to resolve the call.
|
|
62
|
+
*
|
|
63
|
+
* Aborts via `opts.signal` at three points: entry, top of each iteration
|
|
64
|
+
* (before invoking the predicate), and during the inter-poll sleep.
|
|
65
|
+
*/
|
|
66
|
+
export async function pollUntil(check, opts) {
|
|
67
|
+
throwIfAborted(opts.signal);
|
|
68
|
+
const deadline = Date.now() + opts.timeoutMs;
|
|
69
|
+
while (Date.now() < deadline) {
|
|
70
|
+
throwIfAborted(opts.signal);
|
|
71
|
+
const result = await check();
|
|
72
|
+
if (result !== undefined)
|
|
73
|
+
return result;
|
|
74
|
+
await abortableSleep(opts.pollMs, opts.signal);
|
|
75
|
+
}
|
|
76
|
+
throw new Error(opts.timeoutMessage);
|
|
77
|
+
}
|
|
58
78
|
/**
|
|
59
79
|
* Wait for a single known file path to appear on disk.
|
|
60
80
|
* Used when the session file path is predicted upfront (pre-assigned session ID).
|
|
@@ -63,20 +83,20 @@ export async function abortableSleep(ms, signal) {
|
|
|
63
83
|
* rejected promise carrying the signal reason (or an `AbortError`).
|
|
64
84
|
*/
|
|
65
85
|
export async function waitForFile(filePath, timeoutMs = 60_000, pollMs = 500, signal) {
|
|
66
|
-
|
|
67
|
-
const deadline = Date.now() + timeoutMs;
|
|
68
|
-
while (Date.now() < deadline) {
|
|
69
|
-
throwIfAborted(signal);
|
|
86
|
+
return pollUntil(async () => {
|
|
70
87
|
try {
|
|
71
88
|
await stat(filePath);
|
|
72
89
|
return filePath;
|
|
73
90
|
}
|
|
74
91
|
catch {
|
|
75
|
-
|
|
92
|
+
return undefined;
|
|
76
93
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
94
|
+
}, {
|
|
95
|
+
timeoutMs,
|
|
96
|
+
pollMs,
|
|
97
|
+
signal,
|
|
98
|
+
timeoutMessage: `Timed out waiting for session file: ${filePath}`,
|
|
99
|
+
});
|
|
80
100
|
}
|
|
81
101
|
/**
|
|
82
102
|
* Snapshot existing session files in a directory.
|
|
@@ -126,26 +146,25 @@ export function extractSessionId(filePath) {
|
|
|
126
146
|
* @param signal Optional AbortSignal for prompt cancellation.
|
|
127
147
|
*/
|
|
128
148
|
export async function waitForNewSessionFile(dir, snapshot, timeoutMs = 60_000, pollMs = 500, signal) {
|
|
129
|
-
|
|
130
|
-
const deadline = Date.now() + timeoutMs;
|
|
131
|
-
while (Date.now() < deadline) {
|
|
132
|
-
throwIfAborted(signal);
|
|
149
|
+
return pollUntil(async () => {
|
|
133
150
|
const newFiles = await findNewSessionFiles(dir, snapshot);
|
|
134
|
-
if (newFiles.length
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
151
|
+
if (newFiles.length === 0)
|
|
152
|
+
return undefined;
|
|
153
|
+
let newest = newFiles[0];
|
|
154
|
+
let newestMtime = 0;
|
|
155
|
+
for (const file of newFiles) {
|
|
156
|
+
const s = await stat(file);
|
|
157
|
+
if (s.mtimeMs > newestMtime) {
|
|
158
|
+
newestMtime = s.mtimeMs;
|
|
159
|
+
newest = file;
|
|
144
160
|
}
|
|
145
|
-
return newest;
|
|
146
161
|
}
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
|
|
162
|
+
return newest;
|
|
163
|
+
}, {
|
|
164
|
+
timeoutMs,
|
|
165
|
+
pollMs,
|
|
166
|
+
signal,
|
|
167
|
+
timeoutMessage: `Timed out waiting for new session file in ${dir} after ${timeoutMs}ms`,
|
|
168
|
+
});
|
|
150
169
|
}
|
|
151
170
|
//# sourceMappingURL=locator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locator.js","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,GAAG,WAAW,CAAC;IAC5B,YAAY,OAAO,GAAG,SAAS;QAC7B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,
|
|
1
|
+
{"version":3,"file":"locator.js","sourceRoot":"","sources":["../../src/session/locator.ts"],"names":[],"mappings":"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"}
|