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.
Files changed (77) hide show
  1. package/dist/agents/implementors/handler.d.ts.map +1 -1
  2. package/dist/agents/implementors/handler.js +2 -1
  3. package/dist/agents/implementors/handler.js.map +1 -1
  4. package/dist/agents/planners/handler.d.ts.map +1 -1
  5. package/dist/agents/planners/handler.js +2 -1
  6. package/dist/agents/planners/handler.js.map +1 -1
  7. package/dist/agents/reviewers/handler.d.ts.map +1 -1
  8. package/dist/agents/reviewers/handler.js +2 -1
  9. package/dist/agents/reviewers/handler.js.map +1 -1
  10. package/dist/agents/runner.d.ts +25 -0
  11. package/dist/agents/runner.d.ts.map +1 -1
  12. package/dist/agents/runner.js +63 -1
  13. package/dist/agents/runner.js.map +1 -1
  14. package/dist/agents/simplifiers/handler.d.ts.map +1 -1
  15. package/dist/agents/simplifiers/handler.js +2 -1
  16. package/dist/agents/simplifiers/handler.js.map +1 -1
  17. package/dist/ansi.d.ts +14 -0
  18. package/dist/ansi.d.ts.map +1 -1
  19. package/dist/ansi.js +15 -0
  20. package/dist/ansi.js.map +1 -1
  21. package/dist/dump/collector.d.ts.map +1 -1
  22. package/dist/dump/collector.js +11 -0
  23. package/dist/dump/collector.js.map +1 -1
  24. package/dist/dump/pty-tail-buffer.d.ts +25 -0
  25. package/dist/dump/pty-tail-buffer.d.ts.map +1 -0
  26. package/dist/dump/pty-tail-buffer.js +48 -0
  27. package/dist/dump/pty-tail-buffer.js.map +1 -0
  28. package/dist/dump/service.d.ts.map +1 -1
  29. package/dist/dump/service.js +2 -0
  30. package/dist/dump/service.js.map +1 -1
  31. package/dist/dump/types.d.ts +8 -0
  32. package/dist/dump/types.d.ts.map +1 -1
  33. package/dist/dump/types.js.map +1 -1
  34. package/dist/flow/executor.d.ts.map +1 -1
  35. package/dist/flow/executor.js +8 -1
  36. package/dist/flow/executor.js.map +1 -1
  37. package/dist/flow/types.d.ts +4 -0
  38. package/dist/flow/types.d.ts.map +1 -1
  39. package/dist/flow/types.js.map +1 -1
  40. package/dist/providers/base-completion.d.ts +18 -0
  41. package/dist/providers/base-completion.d.ts.map +1 -1
  42. package/dist/providers/base-completion.js +29 -0
  43. package/dist/providers/base-completion.js.map +1 -1
  44. package/dist/providers/claude/completion-plan-mode.d.ts +9 -1
  45. package/dist/providers/claude/completion-plan-mode.d.ts.map +1 -1
  46. package/dist/providers/claude/completion-plan-mode.js +53 -2
  47. package/dist/providers/claude/completion-plan-mode.js.map +1 -1
  48. package/dist/providers/claude/plan-mode-pty-monitor.d.ts +51 -0
  49. package/dist/providers/claude/plan-mode-pty-monitor.d.ts.map +1 -0
  50. package/dist/providers/claude/plan-mode-pty-monitor.js +97 -0
  51. package/dist/providers/claude/plan-mode-pty-monitor.js.map +1 -0
  52. package/dist/providers/claude/strategy.d.ts.map +1 -1
  53. package/dist/providers/claude/strategy.js +6 -1
  54. package/dist/providers/claude/strategy.js.map +1 -1
  55. package/dist/providers/codex/plan-mode-activator.d.ts +23 -0
  56. package/dist/providers/codex/plan-mode-activator.d.ts.map +1 -0
  57. package/dist/providers/codex/plan-mode-activator.js +207 -0
  58. package/dist/providers/codex/plan-mode-activator.js.map +1 -0
  59. package/dist/providers/codex/session.d.ts +1 -0
  60. package/dist/providers/codex/session.d.ts.map +1 -1
  61. package/dist/providers/codex/session.js +35 -18
  62. package/dist/providers/codex/session.js.map +1 -1
  63. package/dist/providers/codex/strategy.d.ts +2 -1
  64. package/dist/providers/codex/strategy.d.ts.map +1 -1
  65. package/dist/providers/codex/strategy.js +17 -13
  66. package/dist/providers/codex/strategy.js.map +1 -1
  67. package/dist/providers/copilot/session.d.ts.map +1 -1
  68. package/dist/providers/copilot/session.js +11 -20
  69. package/dist/providers/copilot/session.js.map +1 -1
  70. package/dist/providers/types.d.ts +76 -0
  71. package/dist/providers/types.d.ts.map +1 -1
  72. package/dist/providers/types.js.map +1 -1
  73. package/dist/session/locator.d.ts +15 -0
  74. package/dist/session/locator.d.ts.map +1 -1
  75. package/dist/session/locator.js +46 -27
  76. package/dist/session/locator.js.map +1 -1
  77. package/package.json +1 -1
@@ -0,0 +1,97 @@
1
+ import { VirtualTerminal } from "../../terminal/virtual-terminal.js";
2
+ import { versionGte } from "../version.js";
3
+ /**
4
+ * Header line that Claude renders above the plan-preview dialog (full line
5
+ * collapsed by VT row-join — whitespace tolerated). Stable since 2.1.74.
6
+ */
7
+ export const HEADER_V1 = /Claude\s+has\s+written\s+up\s+a\s+plan\s+and\s+is\s+ready\s+to\s+execute\.\s+Would\s+you\s+like\s+to\s+proceed\?/;
8
+ /**
9
+ * Footer line — the dialog's right-hand "ctrl-g to edit in <editor> · path"
10
+ * affordance. The basename capture group `([^\\/\s]+?\.md)` returns just
11
+ * the trailing plan-file segment (works on both Windows backslash and POSIX
12
+ * forward-slash paths the FOOTER may render).
13
+ */
14
+ export const FOOTER_V1 = /ctrl-g\s+to\s+edit\s+in\s+\S+\s+·[\s\S]{0,200}?\.claude[\\/]plans[\\/]([^\\/\s]+?\.md)/;
15
+ const PATTERN_TABLE = [
16
+ { minVersion: "2.1.74", header: HEADER_V1, footer: FOOTER_V1 },
17
+ ];
18
+ /**
19
+ * Resolve the highest-precedence pattern entry whose `minVersion` is
20
+ * satisfied by `version`. Returns `null` when `version` is undefined or
21
+ * predates every entry — callers degrade gracefully to JSONL-only
22
+ * completion detection.
23
+ */
24
+ export function getPlanModePtyPattern(version) {
25
+ if (!version)
26
+ return null;
27
+ for (let i = PATTERN_TABLE.length - 1; i >= 0; i--) {
28
+ const entry = PATTERN_TABLE[i];
29
+ if (versionGte(version, entry.minVersion)) {
30
+ return { header: entry.header, footer: entry.footer };
31
+ }
32
+ }
33
+ return null;
34
+ }
35
+ const VT_COLS = 512;
36
+ const VT_ROWS = 80;
37
+ /**
38
+ * VT-backed pattern detector that watches the Claude plan-preview dialog.
39
+ *
40
+ * The monitor captures every post-spawn byte into a headless `VirtualTerminal`
41
+ * (no latching, no activation gate) and is queried on demand from the
42
+ * detector's poll loop. The "current turn" boundary lives on the JSONL side
43
+ * (via the detector's basename equality + ordering guards), not on the PTY
44
+ * side, so prior-turn screen replays from a resumed session cannot falsely
45
+ * resolve the current turn unless the current turn's JSONL independently
46
+ * agrees.
47
+ */
48
+ export class ClaudePlanModePtyMonitor {
49
+ patterns;
50
+ vt = new VirtualTerminal(VT_COLS, VT_ROWS);
51
+ disposed = false;
52
+ // Dirty-flag cache: `scanCurrent` runs on every PTY byte via
53
+ // `shouldSuppressPtyTimerReset`. The 80-row VT read + join + two regex
54
+ // tests is wasted work when no bytes have arrived since the last scan.
55
+ feedSeq = 0;
56
+ lastScanSeq = -1;
57
+ lastScanResult = null;
58
+ constructor(patterns) {
59
+ this.patterns = patterns;
60
+ }
61
+ feed(data) {
62
+ if (this.disposed)
63
+ return;
64
+ this.vt.write(data);
65
+ this.feedSeq++;
66
+ }
67
+ scanCurrent() {
68
+ if (this.disposed)
69
+ return null;
70
+ if (this.feedSeq === this.lastScanSeq)
71
+ return this.lastScanResult;
72
+ const lines = [];
73
+ const buf = this.vt.buffer;
74
+ for (let row = 0; row < this.vt.rows; row++) {
75
+ const line = buf.getLine(buf.viewportY + row);
76
+ if (line)
77
+ lines.push(line.translateToString(true));
78
+ }
79
+ const joined = lines.join("\n");
80
+ let result = null;
81
+ if (this.patterns.header.test(joined)) {
82
+ const m = joined.match(this.patterns.footer);
83
+ if (m)
84
+ result = { footerBasename: m[1] };
85
+ }
86
+ this.lastScanSeq = this.feedSeq;
87
+ this.lastScanResult = result;
88
+ return result;
89
+ }
90
+ dispose() {
91
+ if (this.disposed)
92
+ return;
93
+ this.disposed = true;
94
+ this.vt.dispose();
95
+ }
96
+ }
97
+ //# sourceMappingURL=plan-mode-pty-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-mode-pty-monitor.js","sourceRoot":"","sources":["../../../src/providers/claude/plan-mode-pty-monitor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAOvH,qBAAa,cAAe,YAAW,gBAAgB;IACrD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,iBAAiB;IACrC,QAAQ,CAAC,OAAO,YAAY;IAC5B,QAAQ,CAAC,UAAU,aAAa;IAChC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAA8B;IAC9D,OAAO,EAAE,MAAM,GAAG,SAAS,CAAa;IAExC,IAAI,QAAQ,IAAI,cAAc,CAO7B;IAEK,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAcvE,cAAc,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,kBAAkB;CAalE"}
1
+ {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAWvH,qBAAa,cAAe,YAAW,gBAAgB;IACrD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,iBAAiB;IACrC,QAAQ,CAAC,OAAO,YAAY;IAC5B,QAAQ,CAAC,UAAU,aAAa;IAChC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAA8B;IAC9D,OAAO,EAAE,MAAM,GAAG,SAAS,CAAa;IAExC,IAAI,QAAQ,IAAI,cAAc,CAO7B;IAEK,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAcvE,cAAc,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,kBAAkB;CAkBlE"}
@@ -2,6 +2,7 @@ import { flagIf } from "../types.js";
2
2
  import { versionGte } from "../version.js";
3
3
  import { ClaudePrimaryDetector } from "./completion.js";
4
4
  import { ClaudePlanModeDetector } from "./completion-plan-mode.js";
5
+ import { ClaudePlanModePtyMonitor, getPlanModePtyPattern, } from "./plan-mode-pty-monitor.js";
5
6
  import { ClaudeSessionHandler } from "./session.js";
6
7
  export class ClaudeStrategy {
7
8
  name = "claude";
@@ -35,7 +36,11 @@ export class ClaudeStrategy {
35
36
  createDetector(opts) {
36
37
  const useNativePlanMode = opts?.planMode === true && this.planMode.nativePlanFile === true;
37
38
  if (useNativePlanMode) {
38
- return new ClaudePlanModeDetector(200, 500, this.planMode.exitToolName, 30_000);
39
+ const patterns = getPlanModePtyPattern(this.version);
40
+ const monitor = patterns
41
+ ? new ClaudePlanModePtyMonitor(patterns)
42
+ : undefined;
43
+ return new ClaudePlanModeDetector(200, 500, this.planMode.exitToolName, 180_000, monitor);
39
44
  }
40
45
  return new ClaudePrimaryDetector(200, 500);
41
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/claude/strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,aAAa,CAAC;IAC5B,OAAO,GAAG,QAAQ,CAAC;IACnB,UAAU,GAAG,SAAS,CAAC;IACvB,OAAO,GAAmB,IAAI,oBAAoB,EAAE,CAAC;IAC9D,OAAO,GAAuB,SAAS,CAAC;IAExC,IAAI,QAAQ;QACV,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClD,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB;YAC3D,YAAY,EAAE,cAAc;YAC5B,cAAc,EAAE,MAAM;SACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,IAAmB;QACjD,MAAM,IAAI,GAAa;YACrB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,gCAAgC,CAAC;YACtD,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;SAChC,CAAC;QACF,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,IAA6B;QAC1C,MAAM,iBAAiB,GACrB,IAAI,EAAE,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC;QACnE,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,IAAI,sBAAsB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,MAAM,CACP,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;CACF"}
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/claude/strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,aAAa,CAAC;IAC5B,OAAO,GAAG,QAAQ,CAAC;IACnB,UAAU,GAAG,SAAS,CAAC;IACvB,OAAO,GAAmB,IAAI,oBAAoB,EAAE,CAAC;IAC9D,OAAO,GAAuB,SAAS,CAAC;IAExC,IAAI,QAAQ;QACV,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClD,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB;YAC3D,YAAY,EAAE,cAAc;YAC5B,cAAc,EAAE,MAAM;SACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,IAAmB;QACjD,MAAM,IAAI,GAAa;YACrB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,gCAAgC,CAAC;YACtD,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;SAChC,CAAC;QACF,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,IAA6B;QAC1C,MAAM,iBAAiB,GACrB,IAAI,EAAE,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC;QACnE,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,QAAQ;gBACtB,CAAC,CAAC,IAAI,wBAAwB,CAAC,QAAQ,CAAC;gBACxC,CAAC,CAAC,SAAS,CAAC;YACd,OAAO,IAAI,sBAAsB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,OAAO,EACP,OAAO,CACR,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ import type { PtyHandle } from "../../pty/types.js";
2
+ import type { AttachedActivator, PlanModeActivator } from "../types.js";
3
+ /**
4
+ * Drives the Codex TUI into plan mode via Shift+Tab cycling, then delivers
5
+ * the planner prompt as a bracketed paste followed by Enter.
6
+ *
7
+ * See `src/providers/types.ts` for the contract. `attach()` registers the
8
+ * `onData` listener and begins buffering immediately so no startup bytes
9
+ * are missed during session discovery; `drive()` runs the detect / cycle /
10
+ * submit sequence using that buffer.
11
+ */
12
+ export declare class CodexPlanModeActivator implements PlanModeActivator {
13
+ private readonly pollMs;
14
+ private readonly submitDelayMs;
15
+ private readonly timeoutMs;
16
+ constructor(opts?: {
17
+ pollMs?: number;
18
+ submitDelayMs?: number;
19
+ timeoutMs?: number;
20
+ });
21
+ attach(handle: PtyHandle): AttachedActivator;
22
+ }
23
+ //# sourceMappingURL=plan-mode-activator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-mode-activator.d.ts","sourceRoot":"","sources":["../../../src/providers/codex/plan-mode-activator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAwCxE;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAMlF,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,iBAAiB;CAQ7C"}
@@ -0,0 +1,207 @@
1
+ import { ANSI_RE, PASTE_END, PASTE_START, SHIFT_TAB } from "../../ansi.js";
2
+ import { abortableSleep } from "../../session/locator.js";
3
+ import { VirtualTerminal } from "../../terminal/virtual-terminal.js";
4
+ /**
5
+ * Codex 0.130 renders the active mode as a compact status-line suffix
6
+ * (`... Ready ... Plan mode`). Older builds rendered a longer hint. Match
7
+ * the stable mode name, not a full sentence that may change.
8
+ */
9
+ const PLAN_MODE_RE = /\bPlan mode\b/i;
10
+ const CODEX_STARTED_RE = />_\s+OpenAI Codex\s+\(v[^)]+\)/;
11
+ const MODEL_CHANGED_RE = /\bModel changed\b/i;
12
+ const STATUS_CONTEXT_RE = /\b(?:Ready|Context)\b/i;
13
+ const PLAN_MODE_HINT_RE = /\bshift\+tab to cycle\b/i;
14
+ const PERMISSION_PROMPT_RE = /\b(?:do you trust|trust (?:this|the) (?:folder|workspace|directory|project|files)|workspace trust)\b/i;
15
+ const PERMISSION_OPTION_RE = /\b(?:yes,?\s*(?:proceed|continue|trust)|no,?\s*(?:exit|cancel|go back))\b/i;
16
+ const DEFAULT_POLL_MS = 750;
17
+ const DEFAULT_SUBMIT_DELAY_MS = 250;
18
+ const DEFAULT_TIMEOUT_MS = 60_000;
19
+ const BUFFER_CAPACITY = 8 * 1024;
20
+ const VT_COLS = 512;
21
+ const VT_ROWS = 80;
22
+ function isActivePlanModeLine(line) {
23
+ if (!PLAN_MODE_RE.test(line))
24
+ return false;
25
+ if (PLAN_MODE_HINT_RE.test(line))
26
+ return true;
27
+ if (MODEL_CHANGED_RE.test(line))
28
+ return false;
29
+ return STATUS_CONTEXT_RE.test(line);
30
+ }
31
+ function isPermissionPromptLine(line) {
32
+ return PERMISSION_PROMPT_RE.test(line) || PERMISSION_OPTION_RE.test(line);
33
+ }
34
+ function isCodexStarted(lines) {
35
+ if (!lines.some((line) => CODEX_STARTED_RE.test(line)))
36
+ return false;
37
+ return !lines.some((line) => isPermissionPromptLine(line));
38
+ }
39
+ /**
40
+ * Drives the Codex TUI into plan mode via Shift+Tab cycling, then delivers
41
+ * the planner prompt as a bracketed paste followed by Enter.
42
+ *
43
+ * See `src/providers/types.ts` for the contract. `attach()` registers the
44
+ * `onData` listener and begins buffering immediately so no startup bytes
45
+ * are missed during session discovery; `drive()` runs the detect / cycle /
46
+ * submit sequence using that buffer.
47
+ */
48
+ export class CodexPlanModeActivator {
49
+ pollMs;
50
+ submitDelayMs;
51
+ timeoutMs;
52
+ constructor(opts) {
53
+ this.pollMs = opts?.pollMs ?? DEFAULT_POLL_MS;
54
+ this.submitDelayMs = opts?.submitDelayMs ?? DEFAULT_SUBMIT_DELAY_MS;
55
+ this.timeoutMs = opts?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
56
+ }
57
+ attach(handle) {
58
+ return new CodexAttachedActivator(handle, this.pollMs, this.submitDelayMs, this.timeoutMs);
59
+ }
60
+ }
61
+ class CodexAttachedActivator {
62
+ handle;
63
+ pollMs;
64
+ submitDelayMs;
65
+ timeoutMs;
66
+ vt = new VirtualTerminal(VT_COLS, VT_ROWS);
67
+ buffer = "";
68
+ detected = false;
69
+ codexStarted = false;
70
+ readyCallbackFired = false;
71
+ readyCallbackError;
72
+ readyCallback;
73
+ active = true;
74
+ constructor(handle, pollMs, submitDelayMs, timeoutMs) {
75
+ this.handle = handle;
76
+ this.pollMs = pollMs;
77
+ this.submitDelayMs = submitDelayMs;
78
+ this.timeoutMs = timeoutMs;
79
+ handle.onData((data) => {
80
+ if (!this.active)
81
+ return;
82
+ if (this.detected && this.codexStarted)
83
+ return;
84
+ // Strip ANSI SGR codes for the raw-text fast path. The rendered VT
85
+ // path below handles cursor-addressed repaints where the visible
86
+ // status text never appears contiguously in the byte stream.
87
+ const stripped = data.replace(ANSI_RE, "");
88
+ const next = this.buffer + stripped;
89
+ this.buffer = next.length > BUFFER_CAPACITY ? next.slice(-BUFFER_CAPACITY) : next;
90
+ this.updateStateFromText(this.buffer);
91
+ this.vt.write(data, () => {
92
+ if (!this.active)
93
+ return;
94
+ this.updateStateFromScreen();
95
+ });
96
+ });
97
+ }
98
+ async drive(prompt, opts) {
99
+ this.readyCallback = opts.onReadyForAutomation;
100
+ // Bytes received between attach() and drive() may have already set
101
+ // codexStarted. Fire the ready callback immediately so the
102
+ // "ready before first synthetic write" contract holds even when
103
+ // startup readiness arrived during the attach phase.
104
+ if (this.codexStarted) {
105
+ this.notifyReadyForAutomation();
106
+ }
107
+ try {
108
+ const deadline = Date.now() + this.timeoutMs;
109
+ // Cold Codex starts can show permission prompts and footer/status
110
+ // text before the normal TUI is ready. Wait for the rendered header
111
+ // line before sending synthetic Shift+Tab, so startup / permission
112
+ // input remains user-driven.
113
+ while (!this.codexStarted) {
114
+ this.throwReadyCallbackError();
115
+ await this.sleepOrTimeout(deadline, opts.signal);
116
+ }
117
+ this.throwReadyCallbackError();
118
+ // Leading sleep before the first Shift+Tab: the Plan mode status
119
+ // line can arrive within the same poll window as the header (the
120
+ // header chunk lands, then Codex repaints the status row a few ms
121
+ // later). Sleeping first lets that status reach `detected=true` so
122
+ // a resume already in plan mode is not toggled off by a stray
123
+ // Shift+Tab.
124
+ while (!this.detected) {
125
+ this.throwReadyCallbackError();
126
+ await this.sleepOrTimeout(deadline, opts.signal);
127
+ if (this.detected)
128
+ break;
129
+ this.throwReadyCallbackError();
130
+ this.handle.write(SHIFT_TAB);
131
+ }
132
+ this.throwReadyCallbackError();
133
+ // Deliver the planner prompt as a bracketed paste so embedded
134
+ // newlines stay intact, then submit with Enter.
135
+ this.handle.write(`${PASTE_START}${prompt}${PASTE_END}`);
136
+ await abortableSleep(this.submitDelayMs, opts.signal);
137
+ this.handle.write("\r");
138
+ }
139
+ finally {
140
+ this.dispose();
141
+ }
142
+ }
143
+ dispose() {
144
+ if (!this.active)
145
+ return;
146
+ this.active = false;
147
+ this.vt.dispose();
148
+ }
149
+ updateStateFromText(text) {
150
+ if (this.detected)
151
+ return;
152
+ const lines = text.split(/\r?\n|\r/);
153
+ if (lines.some((line) => isActivePlanModeLine(line))) {
154
+ this.detected = true;
155
+ }
156
+ }
157
+ updateStateFromScreen() {
158
+ if (this.detected && this.codexStarted)
159
+ return;
160
+ const lines = [];
161
+ const termBuffer = this.vt.buffer;
162
+ for (let row = 0; row < this.vt.rows; row++) {
163
+ const line = termBuffer.getLine(termBuffer.viewportY + row);
164
+ if (line)
165
+ lines.push(line.translateToString(true));
166
+ }
167
+ if (!this.detected && lines.some((line) => isActivePlanModeLine(line))) {
168
+ this.detected = true;
169
+ }
170
+ if (!this.codexStarted && isCodexStarted(lines)) {
171
+ this.codexStarted = true;
172
+ this.notifyReadyForAutomation();
173
+ }
174
+ }
175
+ notifyReadyForAutomation() {
176
+ if (this.readyCallbackFired)
177
+ return;
178
+ // Before drive() has set readyCallback, just record that the trigger
179
+ // happened — drive()'s entry-check will fire the callback once it is
180
+ // available. This preserves the "ready before first synthetic write"
181
+ // ordering even when the header arrives during the attach phase.
182
+ if (!this.readyCallback)
183
+ return;
184
+ this.readyCallbackFired = true;
185
+ try {
186
+ this.readyCallback();
187
+ }
188
+ catch (err) {
189
+ this.readyCallbackError = err;
190
+ }
191
+ }
192
+ throwReadyCallbackError() {
193
+ if (this.readyCallbackError instanceof Error)
194
+ throw this.readyCallbackError;
195
+ if (this.readyCallbackError !== undefined) {
196
+ throw new Error(String(this.readyCallbackError));
197
+ }
198
+ }
199
+ async sleepOrTimeout(deadline, signal) {
200
+ const remainingMs = deadline - Date.now();
201
+ if (remainingMs <= 0) {
202
+ throw new Error(`Codex plan mode activation timed out after ${Math.round(this.timeoutMs / 1000)}s`);
203
+ }
204
+ await abortableSleep(Math.min(this.pollMs, remainingMs), signal);
205
+ }
206
+ }
207
+ //# sourceMappingURL=plan-mode-activator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-mode-activator.js","sourceRoot":"","sources":["../../../src/providers/codex/plan-mode-activator.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,7 @@ export declare class CodexSessionHandler implements SessionHandler {
44
44
  signal?: AbortSignal;
45
45
  }): Promise<string>;
46
46
  extractSessionId(sessionFilePath: string): Promise<string>;
47
+ extractPlanFilePath(sessionFilePath: string, lineOffset: number): Promise<string | undefined>;
47
48
  }
48
49
  export declare function extractCodexResponse(lines: SessionLine[]): string;
49
50
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/providers/codex/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAS5E;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAqBD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAgBzB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,SAAI,EACX,OAAO,SAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED;;;;;;GAMG;AACH;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAMpD,eAAe,CACnB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,mBAAmB,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjG,OAAO,CAAC,MAAM,CAAC;IAkDZ,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAMjE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAmCjE"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/providers/codex/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAS5E;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAqBD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAgBzB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,SAAI,EACX,OAAO,SAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED;;;;;;GAMG;AACH;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAMpD,eAAe,CACnB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,mBAAmB,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjG,OAAO,CAAC,MAAM,CAAC;IAwCZ,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,mBAAmB,CACvB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CA2B/B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAmCjE"}
@@ -1,7 +1,8 @@
1
+ import { writeFile } from "node:fs/promises";
1
2
  import { join } from "node:path";
2
3
  import { homedir } from "node:os";
3
4
  import { readSessionFile } from "../../session/reader.js";
4
- import { snapshotSessionFiles, findNewSessionFiles, AbortError, abortableSleep, } from "../../session/locator.js";
5
+ import { snapshotSessionFiles, findNewSessionFiles, pollUntil, throwIfAborted, } from "../../session/locator.js";
5
6
  import { normalizePath } from "../path-utils.js";
6
7
  /**
7
8
  * Get the Codex session directory for today's date.
@@ -98,26 +99,14 @@ export class CodexSessionHandler {
98
99
  const pollMs = opts?.pollMs ?? 500;
99
100
  const signal = opts?.signal;
100
101
  const { dir, files: knownFiles } = snapshot;
101
- const deadline = Date.now() + timeoutMs;
102
- const checkAbort = () => {
103
- if (signal?.aborted) {
104
- const reason = signal.reason;
105
- if (reason instanceof Error)
106
- throw reason;
107
- throw new AbortError(typeof reason === "string" ? reason : undefined);
108
- }
109
- };
110
- checkAbort();
111
- while (Date.now() < deadline) {
112
- checkAbort();
102
+ return pollUntil(async () => {
113
103
  const newFiles = await findNewSessionFiles(dir, knownFiles);
114
104
  for (const file of newFiles) {
115
- checkAbort();
105
+ throwIfAborted(signal);
116
106
  const result = await verifyCodexSessionCwd(file, workdir);
117
107
  if (result === true)
118
108
  return file;
119
109
  if (result === false) {
120
- // Definitive CWD mismatch — skip permanently
121
110
  knownFiles.add(file);
122
111
  const msg = `Codex session file ${file} belongs to a different workdir, skipping`;
123
112
  if (opts?.output) {
@@ -130,13 +119,41 @@ export class CodexSessionHandler {
130
119
  // result === null → inconclusive (file empty/unreadable/no
131
120
  // session_meta yet). Don't add to knownFiles — retry on next poll.
132
121
  }
133
- await abortableSleep(pollMs, signal);
134
- }
135
- throw new Error(`Timed out waiting for matching Codex session file in ${dir}`);
122
+ return undefined;
123
+ }, {
124
+ timeoutMs,
125
+ pollMs,
126
+ signal,
127
+ timeoutMessage: `Timed out waiting for matching Codex session file in ${dir}`,
128
+ });
136
129
  }
137
130
  async extractSessionId(sessionFilePath) {
138
131
  return extractCodexSessionId(sessionFilePath);
139
132
  }
133
+ async extractPlanFilePath(sessionFilePath, lineOffset) {
134
+ const lines = await readSessionFile(sessionFilePath);
135
+ const start = Math.max(0, lineOffset);
136
+ let planText;
137
+ for (let i = lines.length - 1; i >= start; i--) {
138
+ const line = lines[i];
139
+ if (line.type !== "event_msg")
140
+ continue;
141
+ const payload = line.payload;
142
+ if (payload?.type !== "item_completed")
143
+ continue;
144
+ if (payload.item?.type !== "Plan")
145
+ continue;
146
+ if (typeof payload.item.text !== "string" || !payload.item.text)
147
+ continue;
148
+ planText = payload.item.text;
149
+ break;
150
+ }
151
+ if (planText === undefined)
152
+ return undefined;
153
+ const targetPath = sessionFilePath.replace(/\.jsonl$/, ".plan.md");
154
+ await writeFile(targetPath, planText, "utf8");
155
+ return targetPath;
156
+ }
140
157
  }
141
158
  export function extractCodexResponse(lines) {
142
159
  // Prefer task_complete event (nested inside event_msg in real Codex sessions)
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/providers/codex/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/providers/codex/session.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PlanModeConfig, ProviderStrategy, SessionHandler, BuildArgsOpts } from "../types.js";
1
+ import type { PlanModeConfig, PlanModeActivator, ProviderStrategy, SessionHandler, BuildArgsOpts } from "../types.js";
2
2
  import { CodexCompletionStrategy } from "./completion.js";
3
3
  export declare class CodexStrategy implements ProviderStrategy {
4
4
  readonly name = "codex";
@@ -8,6 +8,7 @@ export declare class CodexStrategy implements ProviderStrategy {
8
8
  readonly session: SessionHandler;
9
9
  version: string | undefined;
10
10
  readonly planMode: PlanModeConfig;
11
+ readonly planModeActivator: PlanModeActivator;
11
12
  buildArgs(prompt: string, opts: BuildArgsOpts): Promise<string[]>;
12
13
  createDetector(_opts?: {
13
14
  planMode?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/providers/codex/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,qBAAa,aAAc,YAAW,gBAAgB;IACpD,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,WAAW,eAAe;IACnC,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,UAAU,YAAU;IAC7B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAA6B;IAC7D,OAAO,EAAE,MAAM,GAAG,SAAS,CAAa;IACxC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAG/B;IAEI,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmBvE,cAAc,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,uBAAuB;CAGxE"}
1
+ {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/providers/codex/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,qBAAa,aAAc,YAAW,gBAAgB;IACpD,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,WAAW,eAAe;IACnC,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,UAAU,YAAU;IAC7B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAA6B;IAC7D,OAAO,EAAE,MAAM,GAAG,SAAS,CAAa;IACxC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAG/B;IACF,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAgC;IAEvE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBvE,cAAc,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,uBAAuB;CAGxE"}
@@ -1,6 +1,7 @@
1
1
  import { flagIf } from "../types.js";
2
2
  import { CodexCompletionStrategy } from "./completion.js";
3
3
  import { CodexSessionHandler } from "./session.js";
4
+ import { CodexPlanModeActivator } from "./plan-mode-activator.js";
4
5
  export class CodexStrategy {
5
6
  name = "codex";
6
7
  displayName = "Codex CLI";
@@ -9,25 +10,28 @@ export class CodexStrategy {
9
10
  session = new CodexSessionHandler();
10
11
  version = undefined;
11
12
  planMode = {
12
- argPrefix: "/plan ",
13
13
  exitToolName: "ExitPlanMode",
14
+ nativePlanFile: true,
14
15
  };
16
+ planModeActivator = new CodexPlanModeActivator();
15
17
  async buildArgs(prompt, opts) {
18
+ const yoloFlag = flagIf(opts.yolo, "--dangerously-bypass-approvals-and-sandbox");
16
19
  if (opts.resumeSessionId) {
17
- // Resume existing session codex resume <session-id> <prompt>
18
- return [
19
- ...flagIf(opts.yolo, "--dangerously-bypass-approvals-and-sandbox"),
20
- "resume",
21
- opts.resumeSessionId,
22
- prompt,
23
- ];
20
+ // Resume existing session. In plan mode, omit the positional prompt
21
+ // so the runner's `planModeActivator` can deliver it via Shift+Tab +
22
+ // bracketed paste after `codex resume <id>` re-attaches to the TUI.
23
+ if (opts.planMode) {
24
+ return [...yoloFlag, "resume", opts.resumeSessionId];
25
+ }
26
+ return [...yoloFlag, "resume", opts.resumeSessionId, prompt];
27
+ }
28
+ // Fresh session. In plan mode, omit the positional prompt — Codex
29
+ // spawns into an empty TUI and the activator handles entry.
30
+ if (opts.planMode) {
31
+ return [...yoloFlag];
24
32
  }
25
- // Fresh session — optionally prepend a prefix (e.g. "/plan ") to the prompt.
26
33
  const prefix = opts.promptPrefix ?? "";
27
- return [
28
- ...flagIf(opts.yolo, "--dangerously-bypass-approvals-and-sandbox"),
29
- `${prefix}${prompt}`,
30
- ];
34
+ return [...yoloFlag, `${prefix}${prompt}`];
31
35
  }
32
36
  createDetector(_opts) {
33
37
  return new CodexCompletionStrategy(100, 200, this.planMode.exitToolName);
@@ -1 +1 @@
1
- {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/codex/strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,OAAO,aAAa;IACf,IAAI,GAAG,OAAO,CAAC;IACf,WAAW,GAAG,WAAW,CAAC;IAC1B,OAAO,GAAG,OAAO,CAAC;IAClB,UAAU,GAAG,MAAM,CAAC;IACpB,OAAO,GAAmB,IAAI,mBAAmB,EAAE,CAAC;IAC7D,OAAO,GAAuB,SAAS,CAAC;IAC/B,QAAQ,GAAmB;QAClC,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,cAAc;KAC7B,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,IAAmB;QACjD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,+DAA+D;YAC/D,OAAO;gBACL,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,4CAA4C,CAAC;gBAClE,QAAQ;gBACR,IAAI,CAAC,eAAe;gBACpB,MAAM;aACP,CAAC;QACJ,CAAC;QAED,6EAA6E;QAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACvC,OAAO;YACL,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,4CAA4C,CAAC;YAClE,GAAG,MAAM,GAAG,MAAM,EAAE;SACrB,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,KAA8B;QAC3C,OAAO,IAAI,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3E,CAAC;CACF"}
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/codex/strategy.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,OAAO,aAAa;IACf,IAAI,GAAG,OAAO,CAAC;IACf,WAAW,GAAG,WAAW,CAAC;IAC1B,OAAO,GAAG,OAAO,CAAC;IAClB,UAAU,GAAG,MAAM,CAAC;IACpB,OAAO,GAAmB,IAAI,mBAAmB,EAAE,CAAC;IAC7D,OAAO,GAAuB,SAAS,CAAC;IAC/B,QAAQ,GAAmB;QAClC,YAAY,EAAE,cAAc;QAC5B,cAAc,EAAE,IAAI;KACrB,CAAC;IACO,iBAAiB,GAAsB,IAAI,sBAAsB,EAAE,CAAC;IAE7E,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,IAAmB;QACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,4CAA4C,CAAC,CAAC;QAEjF,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,oEAAoE;YACpE,qEAAqE;YACrE,oEAAoE;YACpE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,CAAC,GAAG,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC/D,CAAC;QAED,kEAAkE;QAClE,4DAA4D;QAC5D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,KAA8B;QAC3C,OAAO,IAAI,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/providers/copilot/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAoBD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAuBzB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAuCnE;AAED;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,OAAO,QAAQ;gBACZ,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CAoHtF;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAKzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQpD,eAAe,CACnB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC9B,OAAO,CAAC,MAAM,CAAC;IAyDZ,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D,mBAAmB,CACvB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAiBxB,qBAAqB,CACzB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAIjB,YAAY;CAI3B"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/providers/copilot/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAoBD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAuBzB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAuCnE;AAED;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,OAAO,QAAQ;gBACZ,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CAoHtF;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAKzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQpD,eAAe,CACnB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC9B,OAAO,CAAC,MAAM,CAAC;IA8CZ,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D,mBAAmB,CACvB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAiBxB,qBAAqB,CACzB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAIjB,YAAY;CAI3B"}