poly-weaver 0.8.0 → 0.8.2
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/README.md +7 -64
- package/dist/agents/errors.d.ts +20 -0
- package/dist/agents/errors.d.ts.map +1 -0
- package/dist/agents/errors.js +26 -0
- package/dist/agents/errors.js.map +1 -0
- package/dist/agents/implementors/handler.d.ts.map +1 -1
- package/dist/agents/implementors/handler.js +3 -1
- package/dist/agents/implementors/handler.js.map +1 -1
- package/dist/agents/implementors/index.d.ts.map +1 -1
- package/dist/agents/implementors/index.js +3 -9
- package/dist/agents/implementors/index.js.map +1 -1
- package/dist/agents/implementors/prompts.d.ts +4 -9
- package/dist/agents/implementors/prompts.d.ts.map +1 -1
- package/dist/agents/implementors/prompts.js +10 -16
- package/dist/agents/implementors/prompts.js.map +1 -1
- package/dist/agents/index.d.ts +2 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +4 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/interviewers/adapter.d.ts +17 -0
- package/dist/agents/interviewers/adapter.d.ts.map +1 -0
- package/dist/agents/interviewers/adapter.js +111 -0
- package/dist/agents/interviewers/adapter.js.map +1 -0
- package/dist/agents/interviewers/dsl.d.ts +13 -0
- package/dist/agents/interviewers/dsl.d.ts.map +1 -0
- package/dist/agents/interviewers/dsl.js +14 -0
- package/dist/agents/interviewers/dsl.js.map +1 -0
- package/dist/agents/interviewers/handler.d.ts +21 -0
- package/dist/agents/interviewers/handler.d.ts.map +1 -0
- package/dist/agents/interviewers/handler.js +217 -0
- package/dist/agents/interviewers/handler.js.map +1 -0
- package/dist/agents/interviewers/index.d.ts +11 -0
- package/dist/agents/interviewers/index.d.ts.map +1 -0
- package/dist/agents/interviewers/index.js +16 -0
- package/dist/agents/interviewers/index.js.map +1 -0
- package/dist/agents/interviewers/prompts.d.ts +3 -0
- package/dist/agents/interviewers/prompts.d.ts.map +1 -0
- package/dist/agents/interviewers/prompts.js +73 -0
- package/dist/agents/interviewers/prompts.js.map +1 -0
- package/dist/agents/interviewers/types.d.ts +53 -0
- package/dist/agents/interviewers/types.d.ts.map +1 -0
- package/dist/agents/interviewers/types.js +2 -0
- package/dist/agents/interviewers/types.js.map +1 -0
- package/dist/agents/planners/dsl.d.ts +5 -1
- package/dist/agents/planners/dsl.d.ts.map +1 -1
- package/dist/agents/planners/handler.d.ts.map +1 -1
- package/dist/agents/planners/handler.js +45 -25
- package/dist/agents/planners/handler.js.map +1 -1
- package/dist/agents/planners/index.d.ts.map +1 -1
- package/dist/agents/planners/index.js +3 -9
- package/dist/agents/planners/index.js.map +1 -1
- package/dist/agents/planners/prompts.d.ts +5 -11
- package/dist/agents/planners/prompts.d.ts.map +1 -1
- package/dist/agents/planners/prompts.js +15 -22
- package/dist/agents/planners/prompts.js.map +1 -1
- package/dist/agents/registry.d.ts +0 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js.map +1 -1
- package/dist/agents/reviewers/adapter.d.ts +1 -1
- package/dist/agents/reviewers/adapter.d.ts.map +1 -1
- package/dist/agents/reviewers/adapter.js +2 -2
- package/dist/agents/reviewers/adapter.js.map +1 -1
- package/dist/agents/reviewers/dsl.d.ts +6 -1
- package/dist/agents/reviewers/dsl.d.ts.map +1 -1
- package/dist/agents/reviewers/dsl.js.map +1 -1
- package/dist/agents/reviewers/handler.d.ts.map +1 -1
- package/dist/agents/reviewers/handler.js +22 -5
- package/dist/agents/reviewers/handler.js.map +1 -1
- package/dist/agents/reviewers/index.d.ts.map +1 -1
- package/dist/agents/reviewers/index.js +6 -8
- package/dist/agents/reviewers/index.js.map +1 -1
- package/dist/agents/reviewers/prompts.d.ts +5 -11
- package/dist/agents/reviewers/prompts.d.ts.map +1 -1
- package/dist/agents/reviewers/prompts.js +13 -19
- package/dist/agents/reviewers/prompts.js.map +1 -1
- package/dist/agents/reviewers/types.d.ts +4 -2
- package/dist/agents/reviewers/types.d.ts.map +1 -1
- package/dist/agents/reviewers/types.js.map +1 -1
- package/dist/agents/runner.d.ts +46 -0
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +192 -20
- package/dist/agents/runner.js.map +1 -1
- package/dist/agents/simplifiers/handler.d.ts.map +1 -1
- package/dist/agents/simplifiers/handler.js +3 -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/cli.js +85 -186
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +3 -6
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -5
- package/dist/config.js.map +1 -1
- package/dist/dsl.d.ts +3 -0
- package/dist/dsl.d.ts.map +1 -1
- package/dist/dsl.js +4 -3
- package/dist/dsl.js.map +1 -1
- package/dist/dump/collector.d.ts.map +1 -1
- package/dist/dump/collector.js +32 -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 +3 -0
- package/dist/dump/service.js.map +1 -1
- package/dist/dump/types.d.ts +46 -0
- package/dist/dump/types.d.ts.map +1 -1
- package/dist/dump/types.js.map +1 -1
- package/dist/flow/built-in/default-factory.d.ts.map +1 -1
- package/dist/flow/built-in/default-factory.js +60 -64
- package/dist/flow/built-in/default-factory.js.map +1 -1
- package/dist/flow/built-in/default.d.ts +1 -1
- package/dist/flow/built-in/default.d.ts.map +1 -1
- package/dist/flow/built-in/default.js +1 -1
- package/dist/flow/built-in/default.js.map +1 -1
- package/dist/flow/built-in/default.ts +2 -2
- package/dist/flow/custom/AUTHORING.md +54 -54
- package/dist/flow/custom/load.d.ts.map +1 -1
- package/dist/flow/custom/load.js +0 -1
- package/dist/flow/custom/load.js.map +1 -1
- package/dist/flow/dsl.d.ts +2 -0
- package/dist/flow/dsl.d.ts.map +1 -1
- package/dist/flow/dsl.js +2 -0
- package/dist/flow/dsl.js.map +1 -1
- package/dist/flow/executor.d.ts +2 -1
- package/dist/flow/executor.d.ts.map +1 -1
- package/dist/flow/executor.js +39 -15
- package/dist/flow/executor.js.map +1 -1
- package/dist/flow/index.d.ts +1 -2
- package/dist/flow/index.d.ts.map +1 -1
- package/dist/flow/index.js +1 -2
- package/dist/flow/index.js.map +1 -1
- package/dist/flow/types.d.ts +28 -2
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/flow/types.js +6 -0
- package/dist/flow/types.js.map +1 -1
- package/dist/markdown.d.ts +5 -0
- package/dist/markdown.d.ts.map +1 -1
- package/dist/markdown.js +48 -1
- package/dist/markdown.js.map +1 -1
- package/dist/orchestrator.d.ts +15 -4
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +82 -23
- package/dist/orchestrator.js.map +1 -1
- package/dist/preflight.d.ts +11 -0
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +49 -16
- package/dist/preflight.js.map +1 -1
- package/dist/preview-panel.d.ts +11 -3
- package/dist/preview-panel.d.ts.map +1 -1
- package/dist/preview-panel.js +26 -2
- package/dist/preview-panel.js.map +1 -1
- package/dist/providers/base-completion.d.ts +23 -1
- package/dist/providers/base-completion.d.ts.map +1 -1
- package/dist/providers/base-completion.js +93 -4
- 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 +54 -3
- package/dist/providers/claude/completion-plan-mode.js.map +1 -1
- package/dist/providers/claude/completion.d.ts +1 -1
- package/dist/providers/claude/completion.d.ts.map +1 -1
- package/dist/providers/claude/completion.js +2 -2
- package/dist/providers/claude/completion.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 +2 -4
- package/dist/providers/claude/strategy.d.ts.map +1 -1
- package/dist/providers/claude/strategy.js +7 -2
- package/dist/providers/claude/strategy.js.map +1 -1
- package/dist/providers/codex/completion.d.ts +1 -1
- package/dist/providers/codex/completion.d.ts.map +1 -1
- package/dist/providers/codex/completion.js +2 -2
- package/dist/providers/codex/completion.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 +3 -4
- package/dist/providers/codex/strategy.d.ts.map +1 -1
- package/dist/providers/codex/strategy.js +19 -15
- package/dist/providers/codex/strategy.js.map +1 -1
- package/dist/providers/copilot/completion.d.ts +1 -1
- package/dist/providers/copilot/completion.d.ts.map +1 -1
- package/dist/providers/copilot/completion.js +2 -2
- package/dist/providers/copilot/completion.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/copilot/strategy.d.ts +2 -3
- package/dist/providers/copilot/strategy.d.ts.map +1 -1
- package/dist/providers/copilot/strategy.js +7 -3
- package/dist/providers/copilot/strategy.js.map +1 -1
- package/dist/providers/types.d.ts +82 -3
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/providers/version.d.ts.map +1 -1
- package/dist/providers/version.js +6 -2
- package/dist/providers/version.js.map +1 -1
- package/dist/pty/exit.js +1 -1
- package/dist/pty/exit.js.map +1 -1
- package/dist/pty/spawn.d.ts +1 -0
- package/dist/pty/spawn.d.ts.map +1 -1
- package/dist/pty/spawn.js +13 -9
- package/dist/pty/spawn.js.map +1 -1
- package/dist/pty/types.d.ts +5 -1
- package/dist/pty/types.d.ts.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/dist/session/manifest.d.ts +12 -5
- package/dist/session/manifest.d.ts.map +1 -1
- package/dist/session/resume.d.ts.map +1 -1
- package/dist/session/resume.js +4 -2
- package/dist/session/resume.js.map +1 -1
- package/dist/startup-tui.d.ts +10 -5
- package/dist/startup-tui.d.ts.map +1 -1
- package/dist/startup-tui.js +60 -27
- package/dist/startup-tui.js.map +1 -1
- package/dist/user/curate-handler.d.ts.map +1 -1
- package/dist/user/curate-handler.js +25 -32
- package/dist/user/curate-handler.js.map +1 -1
- package/dist/user/curate-prompt.d.ts +1 -1
- package/dist/user/dsl.d.ts +1 -0
- package/dist/user/dsl.d.ts.map +1 -1
- package/dist/user/dsl.js +1 -0
- package/dist/user/dsl.js.map +1 -1
- package/dist/user/handler.d.ts.map +1 -1
- package/dist/user/handler.js +2 -1
- package/dist/user/handler.js.map +1 -1
- package/dist/user/host-curate-prompt.js +1 -1
- package/dist/user/host-curate-prompt.js.map +1 -1
- package/dist/user/host-prompt.js +2 -2
- package/dist/user/host-prompt.js.map +1 -1
- package/dist/user/index.d.ts +1 -2
- package/dist/user/index.d.ts.map +1 -1
- package/dist/user/index.js +1 -2
- package/dist/user/index.js.map +1 -1
- package/dist/user/plan-pane.d.ts +7 -1
- package/dist/user/plan-pane.d.ts.map +1 -1
- package/dist/user/plan-pane.js +16 -4
- package/dist/user/plan-pane.js.map +1 -1
- package/dist/user/prompt.d.ts +7 -6
- package/dist/user/prompt.d.ts.map +1 -1
- package/dist/user/prompt.js +0 -8
- package/dist/user/prompt.js.map +1 -1
- package/package.json +1 -1
- package/dist/flow/built-in/why-so-serious-factory.d.ts +0 -16
- package/dist/flow/built-in/why-so-serious-factory.d.ts.map +0 -1
- package/dist/flow/built-in/why-so-serious-factory.js +0 -187
- package/dist/flow/built-in/why-so-serious-factory.js.map +0 -1
- package/dist/flow/built-in/why-so-serious.d.ts +0 -17
- package/dist/flow/built-in/why-so-serious.d.ts.map +0 -1
- package/dist/flow/built-in/why-so-serious.js +0 -23
- package/dist/flow/built-in/why-so-serious.js.map +0 -1
- package/dist/user/auto-curate-prompt.d.ts +0 -17
- package/dist/user/auto-curate-prompt.d.ts.map +0 -1
- package/dist/user/auto-curate-prompt.js +0 -22
- package/dist/user/auto-curate-prompt.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { posix as posixPath } from "node:path";
|
|
1
2
|
import { AbstractCompletionDetector } from "../base-completion.js";
|
|
2
3
|
import { CLAUDE_PLAN_FILE_PATH_REGEX, extractClaudeResponse, } from "./session.js";
|
|
3
4
|
import { trackPendingToolUses } from "./tool-tracking.js";
|
|
@@ -10,6 +11,7 @@ import { trackPendingToolUses } from "./tool-tracking.js";
|
|
|
10
11
|
*/
|
|
11
12
|
export class ClaudePlanModeDetector extends AbstractCompletionDetector {
|
|
12
13
|
exitToolName;
|
|
14
|
+
ptyMonitor;
|
|
13
15
|
pendingToolUses = new Set();
|
|
14
16
|
pendingNonAsyncToolUses = new Set();
|
|
15
17
|
exitToolCalled = false;
|
|
@@ -18,11 +20,21 @@ export class ClaudePlanModeDetector extends AbstractCompletionDetector {
|
|
|
18
20
|
sawResolvedAskUserQuestionPrefetch = false;
|
|
19
21
|
lastRelevantToolResultIdx = -1;
|
|
20
22
|
lastResolvedPlanFileWriteResultIdx = -1;
|
|
23
|
+
lastResolvedPlanFileWritePath;
|
|
21
24
|
lastToolResultIdx = -1;
|
|
22
25
|
lastAssistantLineIdx = -1;
|
|
23
|
-
constructor(pollMs = 200, quietMs = 500, exitToolName = "ExitPlanMode", staleFallbackMs =
|
|
24
|
-
super(pollMs, quietMs, staleFallbackMs);
|
|
26
|
+
constructor(pollMs = 200, quietMs = 500, exitToolName = "ExitPlanMode", staleFallbackMs = 180_000, ptyMonitor, onActivation) {
|
|
27
|
+
super(pollMs, quietMs, staleFallbackMs, undefined, onActivation);
|
|
25
28
|
this.exitToolName = exitToolName;
|
|
29
|
+
this.ptyMonitor = ptyMonitor;
|
|
30
|
+
}
|
|
31
|
+
onPtyData(data) {
|
|
32
|
+
super.onPtyData(data);
|
|
33
|
+
this.ptyMonitor?.feed(data);
|
|
34
|
+
}
|
|
35
|
+
dispose() {
|
|
36
|
+
this.ptyMonitor?.dispose();
|
|
37
|
+
super.dispose();
|
|
26
38
|
}
|
|
27
39
|
analyzeLines(currentLines) {
|
|
28
40
|
const tracking = trackPendingToolUses(currentLines, {
|
|
@@ -38,6 +50,7 @@ export class ClaudePlanModeDetector extends AbstractCompletionDetector {
|
|
|
38
50
|
tracking.sawResolvedToolSearchAskUserQuestionPrefetch;
|
|
39
51
|
this.lastRelevantToolResultIdx = -1;
|
|
40
52
|
this.lastResolvedPlanFileWriteResultIdx = -1;
|
|
53
|
+
this.lastResolvedPlanFileWritePath = undefined;
|
|
41
54
|
this.lastToolResultIdx = tracking.lastToolResultIdx;
|
|
42
55
|
this.lastAssistantLineIdx = tracking.lastAssistantLineIdx;
|
|
43
56
|
for (const info of tracking.perToolUseInfo.values()) {
|
|
@@ -57,7 +70,10 @@ export class ClaudePlanModeDetector extends AbstractCompletionDetector {
|
|
|
57
70
|
CLAUDE_PLAN_FILE_PATH_REGEX.test(info.filePath);
|
|
58
71
|
if (isPlanFileWrite) {
|
|
59
72
|
this.sawResolvedPlanFileWrite = true;
|
|
60
|
-
|
|
73
|
+
if (info.resolvedResultIdx >= this.lastResolvedPlanFileWriteResultIdx) {
|
|
74
|
+
this.lastResolvedPlanFileWriteResultIdx = info.resolvedResultIdx;
|
|
75
|
+
this.lastResolvedPlanFileWritePath = info.filePath;
|
|
76
|
+
}
|
|
61
77
|
}
|
|
62
78
|
}
|
|
63
79
|
if (this.priorLines.length > 0) {
|
|
@@ -75,6 +91,40 @@ export class ClaudePlanModeDetector extends AbstractCompletionDetector {
|
|
|
75
91
|
shouldShortCircuit(_lines) {
|
|
76
92
|
return this.exitToolCalled && this.pendingNonAsyncToolUses.size === 0;
|
|
77
93
|
}
|
|
94
|
+
isSecondarySignalReady() {
|
|
95
|
+
if (!this.ptyMonitor)
|
|
96
|
+
return false;
|
|
97
|
+
const jsonlBase = this.resolvedPlanFileBasename();
|
|
98
|
+
if (!jsonlBase)
|
|
99
|
+
return false;
|
|
100
|
+
const match = this.ptyMonitor.scanCurrent();
|
|
101
|
+
if (!match)
|
|
102
|
+
return false;
|
|
103
|
+
// Basename equality AND-gate — load-bearing false-positive guard.
|
|
104
|
+
// `lastResolvedPlanFileWritePath` is derived strictly from `lastParsedLines`
|
|
105
|
+
// (current turn), so a prior-turn screen replay with a different plan
|
|
106
|
+
// filename cannot match a current-turn JSONL artifact.
|
|
107
|
+
if (jsonlBase !== match.footerBasename)
|
|
108
|
+
return false;
|
|
109
|
+
// Ordering invariant — identical to `isStaleFallbackReady`'s guard.
|
|
110
|
+
// The latest plan-file write must be ≥ latest non-ToolSearch /
|
|
111
|
+
// non-plan-self-read tool result, so a stale earlier-in-turn write
|
|
112
|
+
// followed by other tool work cannot fire this arm.
|
|
113
|
+
if (this.lastRelevantToolResultIdx >= 0 &&
|
|
114
|
+
this.lastResolvedPlanFileWriteResultIdx < this.lastRelevantToolResultIdx) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
onSecondarySignalResolved() {
|
|
120
|
+
const basename = this.resolvedPlanFileBasename() ?? "<unknown>";
|
|
121
|
+
console.error(`[poly-weaver] Claude plan-mode secondary signal fired (basename=${basename})`);
|
|
122
|
+
}
|
|
123
|
+
resolvedPlanFileBasename() {
|
|
124
|
+
return this.lastResolvedPlanFileWritePath
|
|
125
|
+
? posixPath.basename(this.lastResolvedPlanFileWritePath.replace(/\\/g, "/"))
|
|
126
|
+
: undefined;
|
|
127
|
+
}
|
|
78
128
|
isStaleFallbackReady() {
|
|
79
129
|
if (this.pendingToolUses.size > 0)
|
|
80
130
|
return false;
|
|
@@ -94,6 +144,7 @@ export class ClaudePlanModeDetector extends AbstractCompletionDetector {
|
|
|
94
144
|
}
|
|
95
145
|
shouldSuppressPtyTimerReset() {
|
|
96
146
|
return ((this.exitToolCalled && this.pendingNonAsyncToolUses.size === 0) ||
|
|
147
|
+
this.isSecondarySignalReady() ||
|
|
97
148
|
this.isStaleFallbackReady());
|
|
98
149
|
}
|
|
99
150
|
extractResponse(lines) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-plan-mode.js","sourceRoot":"","sources":["../../../src/providers/claude/completion-plan-mode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"completion-plan-mode.js","sourceRoot":"","sources":["../../../src/providers/claude/completion-plan-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export declare class ClaudePrimaryDetector extends AbstractCompletionDetector {
|
|
|
15
15
|
private pendingToolUses;
|
|
16
16
|
private hasTextOutput;
|
|
17
17
|
private primaryFired;
|
|
18
|
-
constructor(pollMs?: number, quietMs?: number);
|
|
18
|
+
constructor(pollMs?: number, quietMs?: number, markerFile?: string, onActivation?: () => void);
|
|
19
19
|
protected analyzeLines(currentLines: SessionLine[]): void;
|
|
20
20
|
protected isPrimarySignalFired(): boolean;
|
|
21
21
|
protected shouldSuppressPtyTimerReset(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/completion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAInE;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,SAAQ,0BAA0B;IACnE,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/completion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAInE;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,SAAQ,0BAA0B;IACnE,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;gBAG3B,MAAM,SAAM,EACZ,OAAO,SAAM,EACb,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,IAAI;IAK3B,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI;IAmBzD,SAAS,CAAC,oBAAoB,IAAI,OAAO;cAItB,2BAA2B,IAAI,OAAO;IAIzD,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM;CAGxD"}
|
|
@@ -16,8 +16,8 @@ export class ClaudePrimaryDetector extends AbstractCompletionDetector {
|
|
|
16
16
|
pendingToolUses = new Set();
|
|
17
17
|
hasTextOutput = false;
|
|
18
18
|
primaryFired = false;
|
|
19
|
-
constructor(pollMs = 500, quietMs = 500) {
|
|
20
|
-
super(pollMs, quietMs, Infinity);
|
|
19
|
+
constructor(pollMs = 500, quietMs = 500, markerFile, onActivation) {
|
|
20
|
+
super(pollMs, quietMs, Infinity, markerFile, onActivation);
|
|
21
21
|
}
|
|
22
22
|
analyzeLines(currentLines) {
|
|
23
23
|
const tracking = trackPendingToolUses(currentLines);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../../src/providers/claude/completion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,OAAO,qBAAsB,SAAQ,0BAA0B;IAC3D,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,aAAa,GAAG,KAAK,CAAC;IACtB,YAAY,GAAG,KAAK,CAAC;IAE7B,
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../../src/providers/claude/completion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,OAAO,qBAAsB,SAAQ,0BAA0B;IAC3D,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,aAAa,GAAG,KAAK,CAAC;IACtB,YAAY,GAAG,KAAK,CAAC;IAE7B,YACE,MAAM,GAAG,GAAG,EACZ,OAAO,GAAG,GAAG,EACb,UAAmB,EACnB,YAAyB;QAEzB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IAES,YAAY,CAAC,YAA2B;QAChD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAEpD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAE5C,MAAM,kBAAkB,GACtB,QAAQ,CAAC,uBAAuB,KAAK,IAAI;YACzC,QAAQ,CAAC,uBAAuB,KAAK,eAAe;YACpD,QAAQ,CAAC,uBAAuB,CAAC;QAEnC,IAAI,CAAC,YAAY;YACf,CAAC,kBAAkB;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC;gBAC/B,IAAI,CAAC,aAAa;gBAClB,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC;oBACjC,QAAQ,CAAC,oBAAoB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACpE,CAAC;IAES,oBAAoB;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEkB,2BAA2B;QAC5C,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAES,eAAe,CAAC,KAAoB;QAC5C,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Header line that Claude renders above the plan-preview dialog (full line
|
|
3
|
+
* collapsed by VT row-join — whitespace tolerated). Stable since 2.1.74.
|
|
4
|
+
*/
|
|
5
|
+
export declare const HEADER_V1: RegExp;
|
|
6
|
+
/**
|
|
7
|
+
* Footer line — the dialog's right-hand "ctrl-g to edit in <editor> · path"
|
|
8
|
+
* affordance. The basename capture group `([^\\/\s]+?\.md)` returns just
|
|
9
|
+
* the trailing plan-file segment (works on both Windows backslash and POSIX
|
|
10
|
+
* forward-slash paths the FOOTER may render).
|
|
11
|
+
*/
|
|
12
|
+
export declare const FOOTER_V1: RegExp;
|
|
13
|
+
export interface PlanModePtyPattern {
|
|
14
|
+
header: RegExp;
|
|
15
|
+
footer: RegExp;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the highest-precedence pattern entry whose `minVersion` is
|
|
19
|
+
* satisfied by `version`. Returns `null` when `version` is undefined or
|
|
20
|
+
* predates every entry — callers degrade gracefully to JSONL-only
|
|
21
|
+
* completion detection.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getPlanModePtyPattern(version: string | undefined): PlanModePtyPattern | null;
|
|
24
|
+
export interface PlanModePtyMatch {
|
|
25
|
+
/** Basename of the plan file captured by FOOTER's `([^\\/\s]+?\.md)` group. */
|
|
26
|
+
footerBasename: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* VT-backed pattern detector that watches the Claude plan-preview dialog.
|
|
30
|
+
*
|
|
31
|
+
* The monitor captures every post-spawn byte into a headless `VirtualTerminal`
|
|
32
|
+
* (no latching, no activation gate) and is queried on demand from the
|
|
33
|
+
* detector's poll loop. The "current turn" boundary lives on the JSONL side
|
|
34
|
+
* (via the detector's basename equality + ordering guards), not on the PTY
|
|
35
|
+
* side, so prior-turn screen replays from a resumed session cannot falsely
|
|
36
|
+
* resolve the current turn unless the current turn's JSONL independently
|
|
37
|
+
* agrees.
|
|
38
|
+
*/
|
|
39
|
+
export declare class ClaudePlanModePtyMonitor {
|
|
40
|
+
private readonly patterns;
|
|
41
|
+
private readonly vt;
|
|
42
|
+
private disposed;
|
|
43
|
+
private feedSeq;
|
|
44
|
+
private lastScanSeq;
|
|
45
|
+
private lastScanResult;
|
|
46
|
+
constructor(patterns: PlanModePtyPattern);
|
|
47
|
+
feed(data: string): void;
|
|
48
|
+
scanCurrent(): PlanModePtyMatch | null;
|
|
49
|
+
dispose(): void;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=plan-mode-pty-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-mode-pty-monitor.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/plan-mode-pty-monitor.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,SAAS,QAC8F,CAAC;AAErH;;;;;GAKG;AACH,eAAO,MAAM,SAAS,QACoE,CAAC;AAY3F,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,kBAAkB,GAAG,IAAI,CAS3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD;;;;;;;;;;GAUG;AACH,qBAAa,wBAAwB;IAUvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IATrC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAyC;IAC5D,OAAO,CAAC,QAAQ,CAAS;IAIzB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,cAAc,CAAiC;gBAE1B,QAAQ,EAAE,kBAAkB;IAEzD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMxB,WAAW,IAAI,gBAAgB,GAAG,IAAI;IAoBtC,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -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,4 +1,4 @@
|
|
|
1
|
-
import type { PlanModeConfig, ProviderStrategy, SessionHandler, BuildArgsOpts, CompletionDetector } from "../types.js";
|
|
1
|
+
import type { PlanModeConfig, ProviderStrategy, SessionHandler, BuildArgsOpts, CompletionDetector, CompletionDetectorOptions } from "../types.js";
|
|
2
2
|
export declare class ClaudeStrategy implements ProviderStrategy {
|
|
3
3
|
readonly name = "claude";
|
|
4
4
|
readonly displayName = "Claude Code";
|
|
@@ -8,8 +8,6 @@ export declare class ClaudeStrategy implements ProviderStrategy {
|
|
|
8
8
|
version: string | undefined;
|
|
9
9
|
get planMode(): PlanModeConfig;
|
|
10
10
|
buildArgs(prompt: string, opts: BuildArgsOpts): Promise<string[]>;
|
|
11
|
-
createDetector(opts?:
|
|
12
|
-
planMode?: boolean;
|
|
13
|
-
}): CompletionDetector;
|
|
11
|
+
createDetector(opts?: CompletionDetectorOptions): CompletionDetector;
|
|
14
12
|
}
|
|
15
13
|
//# sourceMappingURL=strategy.d.ts.map
|
|
@@ -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;
|
|
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,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAWlJ,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,yBAAyB,GAAG,kBAAkB;CAmBrE"}
|
|
@@ -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,9 +36,13 @@ export class ClaudeStrategy {
|
|
|
35
36
|
createDetector(opts) {
|
|
36
37
|
const useNativePlanMode = opts?.planMode === true && this.planMode.nativePlanFile === true;
|
|
37
38
|
if (useNativePlanMode) {
|
|
38
|
-
|
|
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, opts?.onActivation);
|
|
39
44
|
}
|
|
40
|
-
return new ClaudePrimaryDetector(200, 500);
|
|
45
|
+
return new ClaudePrimaryDetector(200, 500, opts?.completionMarkerFile, opts?.onActivation);
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
48
|
//# sourceMappingURL=strategy.js.map
|
|
@@ -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,
|
|
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,IAAgC;QAC7C,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,EACP,IAAI,EAAE,YAAY,CACnB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC7F,CAAC;CACF"}
|
|
@@ -11,7 +11,7 @@ export declare class CodexCompletionStrategy extends AbstractCompletionDetector
|
|
|
11
11
|
private readonly exitToolName?;
|
|
12
12
|
private taskComplete;
|
|
13
13
|
private exitToolCalled;
|
|
14
|
-
constructor(pollMs?: number, quietMs?: number, exitToolName?: string | undefined);
|
|
14
|
+
constructor(pollMs?: number, quietMs?: number, exitToolName?: string | undefined, markerFile?: string, onActivation?: () => void);
|
|
15
15
|
protected analyzeLines(lines: SessionLine[]): void;
|
|
16
16
|
protected isPrimarySignalFired(): boolean;
|
|
17
17
|
protected extractResponse(lines: SessionLine[]): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../src/providers/codex/completion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAUnE;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,0BAA0B;IAOnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IANhC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAS;gBAG7B,MAAM,SAAM,EACZ,OAAO,SAAM,EACI,YAAY,CAAC,EAAE,MAAM,YAAA;
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../src/providers/codex/completion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAUnE;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,0BAA0B;IAOnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IANhC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAS;gBAG7B,MAAM,SAAM,EACZ,OAAO,SAAM,EACI,YAAY,CAAC,EAAE,MAAM,YAAA,EACtC,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,IAAI;IAK3B,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI;IA4BlD,SAAS,CAAC,oBAAoB,IAAI,OAAO;IAIzC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM;cAIpC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO;cAIlD,2BAA2B,IAAI,OAAO;CAG1D"}
|
|
@@ -16,8 +16,8 @@ export class CodexCompletionStrategy extends AbstractCompletionDetector {
|
|
|
16
16
|
exitToolName;
|
|
17
17
|
taskComplete = false;
|
|
18
18
|
exitToolCalled = false;
|
|
19
|
-
constructor(pollMs = 500, quietMs = 500, exitToolName) {
|
|
20
|
-
super(pollMs, quietMs);
|
|
19
|
+
constructor(pollMs = 500, quietMs = 500, exitToolName, markerFile, onActivation) {
|
|
20
|
+
super(pollMs, quietMs, Infinity, markerFile, onActivation);
|
|
21
21
|
this.exitToolName = exitToolName;
|
|
22
22
|
}
|
|
23
23
|
analyzeLines(lines) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../../src/providers/codex/completion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,4DAA4D;AAC5D,SAAS,cAAc,CAAC,IAAiB;IACvC,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,WAAW;QACxB,IAAI,CAAC,OAA+C,EAAE,IAAI,KAAK,eAAe,CAChF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,uBAAwB,SAAQ,0BAA0B;IAOlD;IANX,YAAY,GAAG,KAAK,CAAC;IACrB,cAAc,GAAG,KAAK,CAAC;IAE/B,YACE,MAAM,GAAG,GAAG,EACZ,OAAO,GAAG,GAAG,EACI,YAAqB;
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../../src/providers/codex/completion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,4DAA4D;AAC5D,SAAS,cAAc,CAAC,IAAiB;IACvC,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,WAAW;QACxB,IAAI,CAAC,OAA+C,EAAE,IAAI,KAAK,eAAe,CAChF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,uBAAwB,SAAQ,0BAA0B;IAOlD;IANX,YAAY,GAAG,KAAK,CAAC;IACrB,cAAc,GAAG,KAAK,CAAC;IAE/B,YACE,MAAM,GAAG,GAAG,EACZ,OAAO,GAAG,GAAG,EACI,YAAqB,EACtC,UAAmB,EACnB,YAAyB;QAEzB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QAJ1C,iBAAY,GAAZ,YAAY,CAAS;IAKxC,CAAC;IAES,YAAY,CAAC,KAAoB;QACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,OAAO;YACT,CAAC;YACD,2DAA2D;YAC3D,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACvD,MAAM,OAAO,GAAG,IAAI,CAAC,OAA8C,CAAC;gBACpE,IAAI,OAAO,EAAE,CAAC;oBACZ,wDAAwD;oBACxD,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;wBAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC7B,CAAC;oBACD,4DAA4D;oBAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAqD,CAAC;oBAC9E,IAAI,OAAO,EAAE,CAAC;wBACZ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;4BAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;gCACvE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;4BAC7B,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAES,oBAAoB;QAC5B,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC;IAClD,CAAC;IAES,eAAe,CAAC,KAAoB;QAC5C,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEkB,kBAAkB,CAAC,MAAqB;QACzD,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC;IAClD,CAAC;IAEkB,2BAA2B;QAC5C,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC;IAClD,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"}
|