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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/providers/copilot/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAG5D,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,WAAW,wBAAwB;IAC5C,QAAQ,CAAC,OAAO,aAAa;IAC7B,QAAQ,CAAC,UAAU,YAAU;IAC7B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAA+B;IAC/D,OAAO,EAAE,MAAM,GAAG,SAAS,CAAa;IACxC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAI/B;IAEI,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/providers/copilot/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAG5D,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,WAAW,wBAAwB;IAC5C,QAAQ,CAAC,OAAO,aAAa;IAC7B,QAAQ,CAAC,UAAU,YAAU;IAC7B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAA+B;IAC/D,OAAO,EAAE,MAAM,GAAG,SAAS,CAAa;IACxC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAI/B;IAEI,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2BvE,cAAc,CAAC,IAAI,CAAC,EAAE,yBAAyB,GAAG,yBAAyB;CAS5E"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { flagIf } from "../types.js";
|
|
2
|
+
import { versionGte } from "../version.js";
|
|
2
3
|
import { CopilotCompletionDetector } from "./completion.js";
|
|
3
4
|
import { CopilotSessionHandler } from "./session.js";
|
|
4
5
|
export class CopilotStrategy {
|
|
@@ -25,8 +26,11 @@ export class CopilotStrategy {
|
|
|
25
26
|
}
|
|
26
27
|
else if (opts.sessionId) {
|
|
27
28
|
const prefix = opts.promptPrefix ?? "";
|
|
29
|
+
const sessionFlag = versionGte(this.version, "1.0.51")
|
|
30
|
+
? `--session-id=${opts.sessionId}`
|
|
31
|
+
: `--resume=${opts.sessionId}`;
|
|
28
32
|
return [
|
|
29
|
-
|
|
33
|
+
sessionFlag,
|
|
30
34
|
"-i",
|
|
31
35
|
`${prefix}${prompt}`,
|
|
32
36
|
...flagIf(opts.yolo, "--allow-all"),
|
|
@@ -36,8 +40,8 @@ export class CopilotStrategy {
|
|
|
36
40
|
const prefix = opts.promptPrefix ?? "";
|
|
37
41
|
return ["-i", `${prefix}${prompt}`, ...flagIf(opts.yolo, "--allow-all")];
|
|
38
42
|
}
|
|
39
|
-
createDetector(
|
|
40
|
-
return new CopilotCompletionDetector(100, 200, this.planMode.exitToolName);
|
|
43
|
+
createDetector(opts) {
|
|
44
|
+
return new CopilotCompletionDetector(100, 200, this.planMode.exitToolName, opts?.completionMarkerFile, opts?.onActivation);
|
|
41
45
|
}
|
|
42
46
|
}
|
|
43
47
|
//# sourceMappingURL=strategy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/copilot/strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/copilot/strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,oBAAoB,CAAC;IACnC,OAAO,GAAG,SAAS,CAAC;IACpB,UAAU,GAAG,MAAM,CAAC;IACpB,OAAO,GAAmB,IAAI,qBAAqB,EAAE,CAAC;IAC/D,OAAO,GAAuB,SAAS,CAAC;IAC/B,QAAQ,GAAmB;QAClC,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,gBAAgB;QAC9B,cAAc,EAAE,IAAI;KACrB,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,IAAmB;QACjD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO;gBACL,UAAU;gBACV,IAAI,CAAC,eAAe;gBACpB,IAAI;gBACJ,MAAM;gBACN,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;aACpC,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;YACvC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;gBACpD,CAAC,CAAC,gBAAgB,IAAI,CAAC,SAAS,EAAE;gBAClC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,OAAO;gBACL,WAAW;gBACX,IAAI;gBACJ,GAAG,MAAM,GAAG,MAAM,EAAE;gBACpB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;aACpC,CAAC;QACJ,CAAC;QAED,wDAAwD;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,cAAc,CAAC,IAAgC;QAC7C,OAAO,IAAI,yBAAyB,CAClC,GAAG,EACH,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,YAAY,CACnB,CAAC;IACJ,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,77 @@ 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
|
+
export interface CompletionDetectorOptions {
|
|
51
|
+
planMode?: boolean;
|
|
52
|
+
completionMarkerFile?: string;
|
|
53
|
+
onActivation?: () => void;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Post-spawn plan-mode entry mechanism for providers whose CLI has no
|
|
57
|
+
* equivalent flag or slash-command for entering plan mode.
|
|
58
|
+
*
|
|
59
|
+
* Codex is the only current implementor: after its normal TUI has started
|
|
60
|
+
* (detected from the rendered `>_ OpenAI Codex (v...)` header, not footer
|
|
61
|
+
* status text), it must be cycled into plan mode by sending a Shift+Tab
|
|
62
|
+
* escape sequence, then driven with the planner prompt via bracketed paste.
|
|
63
|
+
* Claude and Copilot leave this undefined — both engage plan mode through
|
|
64
|
+
* CLI args / prompt prefixes that take effect at spawn time.
|
|
65
|
+
*
|
|
66
|
+
* Two-phase lifecycle:
|
|
67
|
+
* 1. `attach(handle)` is called by the runner immediately after spawn
|
|
68
|
+
* (alongside `detector.onData` and `attachChild`). It registers an
|
|
69
|
+
* `onData` listener and begins populating a rolling buffer / virtual
|
|
70
|
+
* terminal so no startup bytes (header, status line) are missed during
|
|
71
|
+
* the session-discovery window. `attach` is side-effect-free on the
|
|
72
|
+
* PTY (it does not call `handle.write`).
|
|
73
|
+
* 2. `AttachedActivator.drive(prompt, opts)` runs the
|
|
74
|
+
* detect → Shift+Tab loop → bracketed paste → Enter sequence, reading
|
|
75
|
+
* the buffer that `attach` has already been populating. Resolves once
|
|
76
|
+
* the planner prompt has been submitted; rejects on timeout / abort /
|
|
77
|
+
* child exit. When `onReadyForAutomation` is supplied, the activator
|
|
78
|
+
* calls it exactly once after startup readiness is detected and before
|
|
79
|
+
* the first synthetic write (Shift+Tab or bracketed paste).
|
|
80
|
+
*
|
|
81
|
+
* `AttachedActivator.dispose()` releases the `onData` subscription and the
|
|
82
|
+
* virtual terminal. It is idempotent and must run on both success and
|
|
83
|
+
* failure (drive's own `finally` calls it; the runner must call it on any
|
|
84
|
+
* cleanup path where drive is never reached).
|
|
85
|
+
*
|
|
86
|
+
* Gate ownership stays with the runner: the runner opens the gate during
|
|
87
|
+
* startup / permission prompts, closes it from `onReadyForAutomation`,
|
|
88
|
+
* then reopens it after `drive()` resolves.
|
|
89
|
+
*/
|
|
90
|
+
export interface PlanModeActivator {
|
|
91
|
+
/** Begin buffering PTY output and tracking VT state. Side-effect-free on the PTY (no writes). */
|
|
92
|
+
attach(handle: PtyHandle): AttachedActivator;
|
|
93
|
+
}
|
|
94
|
+
export interface AttachedActivator {
|
|
95
|
+
/**
|
|
96
|
+
* Drive the detect → Shift+Tab → bracketed-paste → Enter sequence,
|
|
97
|
+
* reading the buffer `attach()` has been populating. Calls `dispose()`
|
|
98
|
+
* in its own `finally` on both success and failure.
|
|
99
|
+
*/
|
|
100
|
+
drive(prompt: string, opts: {
|
|
101
|
+
signal?: AbortSignal;
|
|
102
|
+
onReadyForAutomation?: () => void;
|
|
103
|
+
}): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Release the `onData` subscription and virtual terminal. Idempotent.
|
|
106
|
+
* Must be called if `drive` is never invoked or after `drive` resolves
|
|
107
|
+
* or rejects.
|
|
108
|
+
*/
|
|
109
|
+
dispose(): void;
|
|
110
|
+
}
|
|
40
111
|
/** Returns `[flag]` when `condition` is not `false`, else `[]`. */
|
|
41
112
|
export declare function flagIf(condition: boolean | undefined, flag: string): string[];
|
|
42
113
|
/**
|
|
@@ -133,9 +204,17 @@ export interface ProviderStrategy {
|
|
|
133
204
|
*/
|
|
134
205
|
buildArgs(prompt: string, opts: BuildArgsOpts): Promise<string[]>;
|
|
135
206
|
/** Create a new CompletionDetector for this provider. */
|
|
136
|
-
createDetector(opts?:
|
|
137
|
-
|
|
138
|
-
|
|
207
|
+
createDetector(opts?: CompletionDetectorOptions): CompletionDetector;
|
|
208
|
+
/**
|
|
209
|
+
* Optional post-spawn plan-mode activator. When set and the runner is
|
|
210
|
+
* processing a `RunRequest` with `planMode === true`, the runner calls
|
|
211
|
+
* `attach(handle)` immediately after spawn (so no PTY bytes are missed
|
|
212
|
+
* during session discovery) and `drive(prompt, opts)` at the existing
|
|
213
|
+
* activation site — before session discovery on fresh runs, after
|
|
214
|
+
* line-offset calculation on resume runs. Providers whose CLI engages
|
|
215
|
+
* plan mode via flags / prompt prefix leave this undefined.
|
|
216
|
+
*/
|
|
217
|
+
readonly planModeActivator?: PlanModeActivator;
|
|
139
218
|
}
|
|
140
219
|
/**
|
|
141
220
|
* 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":"AAiHA,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/providers/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5D;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/providers/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5D;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAehE;AAED,gGAAgG;AAChG,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAGT"}
|
|
@@ -9,8 +9,12 @@ export function parseVersion(raw) {
|
|
|
9
9
|
}
|
|
10
10
|
/** Compare two dot-separated numeric version strings. Returns -1, 0, or 1. */
|
|
11
11
|
export function compareVersions(a, b) {
|
|
12
|
-
const
|
|
13
|
-
|
|
12
|
+
const numericPart = (part) => {
|
|
13
|
+
const match = part.match(/^\d+/);
|
|
14
|
+
return match ? Number(match[0]) : 0;
|
|
15
|
+
};
|
|
16
|
+
const aParts = a.split(".").map(numericPart);
|
|
17
|
+
const bParts = b.split(".").map(numericPart);
|
|
14
18
|
const len = Math.max(aParts.length, bParts.length);
|
|
15
19
|
for (let i = 0; i < len; i++) {
|
|
16
20
|
const av = aParts[i] ?? 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/providers/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS;IAClD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/providers/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS;IAClD,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC,CAAC;QACvB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,UAAU,CACxB,OAA2B,EAC3B,UAAkB;IAElB,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC"}
|
package/dist/pty/exit.js
CHANGED
|
@@ -29,7 +29,7 @@ export async function sendExit(handle, exitCommand, timeoutMs = 5000) {
|
|
|
29
29
|
clearTimeout(fallbackTimer);
|
|
30
30
|
resolve(code);
|
|
31
31
|
};
|
|
32
|
-
handle.onExit((
|
|
32
|
+
handle.onExit(({ exitCode }) => finish(exitCode));
|
|
33
33
|
// Send the exit command. Bypasses the gate via the transport's `write`.
|
|
34
34
|
handle.write(exitCommand);
|
|
35
35
|
fallbackTimer = setTimeout(() => {
|
package/dist/pty/exit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exit.js","sourceRoot":"","sources":["../../src/pty/exit.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAiB,EACjB,WAAmB,EACnB,SAAS,GAAG,IAAI;IAEhB,MAAM,CAAC,SAAS,EAAE,CAAC;IACnB,MAAM,CAAC,cAAc,EAAE,CAAC;IAExB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,aAAwD,CAAC;QAE7D,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;YAC9B,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,aAAa;gBAAE,YAAY,CAAC,aAAa,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"exit.js","sourceRoot":"","sources":["../../src/pty/exit.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAiB,EACjB,WAAmB,EACnB,SAAS,GAAG,IAAI;IAEhB,MAAM,CAAC,SAAS,EAAE,CAAC;IACnB,MAAM,CAAC,cAAc,EAAE,CAAC;IAExB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,aAAwD,CAAC;QAE7D,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;YAC9B,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,aAAa;gBAAE,YAAY,CAAC,aAAa,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAElD,wEAAwE;QACxE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE1B,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,QAAQ;gBAAE,OAAO;YACrB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/pty/spawn.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ export declare function resolveNpmCmdShim(shimPath: string, args: string[], deps
|
|
|
30
30
|
* executable path, and bypass npm .cmd shims by launching node.exe directly.
|
|
31
31
|
*/
|
|
32
32
|
export declare function resolveWindowsCommand(command: string, args: string[], deps?: WindowsCommandResolverDeps): ResolvedCommand;
|
|
33
|
+
export declare function resolveSpawnCommand(command: string, args: string[], platform?: NodeJS.Platform): ResolvedCommand;
|
|
33
34
|
/**
|
|
34
35
|
* Spawn a PTY process and return a `PtyHandle` wrapper.
|
|
35
36
|
*
|
package/dist/pty/spawn.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAiDD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,0BAAuD,GAC5D,eAAe,GAAG,SAAS,CA4C7B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,0BAAuD,GAC5D,eAAe,CA6CjB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,eAAe,CAIjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAsGtD"}
|
package/dist/pty/spawn.js
CHANGED
|
@@ -120,6 +120,11 @@ export function resolveWindowsCommand(command, args, deps = windowsCommandResolv
|
|
|
120
120
|
throw new Error(`Failed to resolve Windows command "${command}"`);
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
|
+
export function resolveSpawnCommand(command, args, platform = process.platform) {
|
|
124
|
+
return platform === "win32"
|
|
125
|
+
? resolveWindowsCommand(command, args)
|
|
126
|
+
: { command, args };
|
|
127
|
+
}
|
|
123
128
|
/**
|
|
124
129
|
* Spawn a PTY process and return a `PtyHandle` wrapper.
|
|
125
130
|
*
|
|
@@ -130,9 +135,7 @@ export function resolveWindowsCommand(command, args, deps = windowsCommandResolv
|
|
|
130
135
|
* user keystrokes back through `handle.write()`.
|
|
131
136
|
*/
|
|
132
137
|
export function spawnPty(opts) {
|
|
133
|
-
const resolved =
|
|
134
|
-
? resolveWindowsCommand(opts.command, opts.args)
|
|
135
|
-
: { command: opts.command, args: opts.args };
|
|
138
|
+
const resolved = resolveSpawnCommand(opts.command, opts.args);
|
|
136
139
|
// Strip CLAUDECODE so the spawned process doesn't think it's nested.
|
|
137
140
|
const { CLAUDECODE: _, ...baseEnv } = process.env;
|
|
138
141
|
const proc = pty.spawn(resolved.command, resolved.args, {
|
|
@@ -150,7 +153,7 @@ export function spawnPty(opts) {
|
|
|
150
153
|
let gateOpen = false;
|
|
151
154
|
let renderSuppressed = false;
|
|
152
155
|
let exited = false;
|
|
153
|
-
let
|
|
156
|
+
let lastExitEvent;
|
|
154
157
|
const dataCallbacks = [];
|
|
155
158
|
const exitCallbacks = [];
|
|
156
159
|
proc.onData((data) => {
|
|
@@ -158,11 +161,12 @@ export function spawnPty(opts) {
|
|
|
158
161
|
cb(data);
|
|
159
162
|
}
|
|
160
163
|
});
|
|
161
|
-
proc.onExit(({ exitCode }) => {
|
|
164
|
+
proc.onExit(({ exitCode, signal }) => {
|
|
162
165
|
exited = true;
|
|
163
|
-
|
|
166
|
+
const event = signal ? { exitCode, signal: String(signal) } : { exitCode };
|
|
167
|
+
lastExitEvent = event;
|
|
164
168
|
for (const cb of exitCallbacks) {
|
|
165
|
-
cb(
|
|
169
|
+
cb(event);
|
|
166
170
|
}
|
|
167
171
|
});
|
|
168
172
|
const handle = {
|
|
@@ -181,8 +185,8 @@ export function spawnPty(opts) {
|
|
|
181
185
|
dataCallbacks.push(callback);
|
|
182
186
|
},
|
|
183
187
|
onExit(callback) {
|
|
184
|
-
if (exited &&
|
|
185
|
-
callback(
|
|
188
|
+
if (exited && lastExitEvent) {
|
|
189
|
+
callback(lastExitEvent);
|
|
186
190
|
return;
|
|
187
191
|
}
|
|
188
192
|
exitCallbacks.push(callback);
|
package/dist/pty/spawn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/pty/spawn.ts"],"names":[],"mappings":"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"}
|
package/dist/pty/types.d.ts
CHANGED
|
@@ -17,6 +17,10 @@ export type AgentEvent = {
|
|
|
17
17
|
type: "error";
|
|
18
18
|
message: string;
|
|
19
19
|
};
|
|
20
|
+
export interface PtyExitEvent {
|
|
21
|
+
exitCode: number;
|
|
22
|
+
signal?: string;
|
|
23
|
+
}
|
|
20
24
|
export interface PtyHandle {
|
|
21
25
|
/** The underlying node-pty process. */
|
|
22
26
|
readonly process: IPty;
|
|
@@ -30,7 +34,7 @@ export interface PtyHandle {
|
|
|
30
34
|
/** Subscribe to PTY output data. */
|
|
31
35
|
onData(callback: (data: string) => void): void;
|
|
32
36
|
/** Subscribe to PTY exit. */
|
|
33
|
-
onExit(callback: (
|
|
37
|
+
onExit(callback: (event: PtyExitEvent) => void): void;
|
|
34
38
|
/** Kill the PTY process. */
|
|
35
39
|
kill(signal?: string): void;
|
|
36
40
|
/** Resize the PTY's reported terminal dimensions. */
|
package/dist/pty/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pty/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,oCAAoC;IACpC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C,6BAA6B;IAC7B,MAAM,CAAC,QAAQ,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pty/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,oCAAoC;IACpC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C,6BAA6B;IAC7B,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;IACtD,4BAA4B;IAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qDAAqD;IACrD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,gFAAgF;IAChF,QAAQ,IAAI,IAAI,CAAC;IACjB,0DAA0D;IAC1D,SAAS,IAAI,IAAI,CAAC;IAClB,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,IAAI,IAAI,CAAC;IACvB,wCAAwC;IACxC,YAAY,IAAI,IAAI,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -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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"}
|
|
@@ -31,10 +31,18 @@ export interface SessionStepEntry {
|
|
|
31
31
|
nextClarificationNumber: number;
|
|
32
32
|
/**
|
|
33
33
|
* Provider session IDs that were live at the moment this step completed.
|
|
34
|
-
* Informational-only: recorded for diagnostics/dumps.
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
34
|
+
* Informational-only for most roles: recorded for diagnostics/dumps.
|
|
35
|
+
* Cross-process provider session continuity is not normally supported.
|
|
36
|
+
*
|
|
37
|
+
* Exception: the **interviewer** role reads this back at resume time. The
|
|
38
|
+
* interviewer's handler scans `completedSnapshots` (descending seq) for
|
|
39
|
+
* the most recent entry with `role === "interviewer"` and a populated
|
|
40
|
+
* `sessionIds[sessionShareKey]`, then attempts to resume the provider
|
|
41
|
+
* session — falling back to a fresh session and warning the user if the
|
|
42
|
+
* driver changed or the session file no longer exists. For interruptions
|
|
43
|
+
* mid-interview (no SessionStepEntry has been written yet), a sidecar
|
|
44
|
+
* file at `<persistentDir>/interviewer.live.json` carries the in-flight
|
|
45
|
+
* session id across the process boundary.
|
|
38
46
|
*/
|
|
39
47
|
sessionIds: Record<string, string>;
|
|
40
48
|
completedAt: string;
|
|
@@ -54,7 +62,6 @@ export interface SessionManifest {
|
|
|
54
62
|
};
|
|
55
63
|
/** Resolved orthogonal options — must round-trip on resume. */
|
|
56
64
|
options: {
|
|
57
|
-
opinionless: boolean;
|
|
58
65
|
yolo: boolean;
|
|
59
66
|
};
|
|
60
67
|
/** -1 before the first checkpoint. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/session/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IAEnB,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAErC;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE3C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;IAChC
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/session/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IAEnB,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAErC;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE3C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;IAChC;;;;;;;;;;;;;;OAcG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;QAC5B,MAAM,EAAE,eAAe,CAAC;KACzB,CAAC;IACF,+DAA+D;IAC/D,OAAO,EAAE;QACP,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;IACF,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,eAAe,CAAC;IAC1B,2DAA2D;IAC3D,aAAa,EAAE,OAAO,CAAC;IACvB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,IAAI,CAAC,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../src/session/resume.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,KAAK,WAAW,EAEjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,eAAe,CAAC;AAEzE,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE3C,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../src/session/resume.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,KAAK,WAAW,EAEjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,eAAe,CAAC;AAEzE,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE3C,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC,CA2G3B"}
|
package/dist/session/resume.js
CHANGED
|
@@ -41,6 +41,9 @@ export async function runResumedSession(session, pkgVersion) {
|
|
|
41
41
|
simplifier: manifest.flow.params.simplifier
|
|
42
42
|
? String(manifest.flow.params.simplifier)
|
|
43
43
|
: undefined,
|
|
44
|
+
interviewer: manifest.flow.params.interviewer
|
|
45
|
+
? String(manifest.flow.params.interviewer)
|
|
46
|
+
: undefined,
|
|
44
47
|
planOnly: !!manifest.flow.params.planOnly,
|
|
45
48
|
}));
|
|
46
49
|
setProviderVersions(preflight.versions);
|
|
@@ -50,7 +53,7 @@ export async function runResumedSession(session, pkgVersion) {
|
|
|
50
53
|
exitMessage: "\nPreflight checks failed on resume:\n" + preflight.errors.map(e => ` ${e}`).join("\n"),
|
|
51
54
|
};
|
|
52
55
|
}
|
|
53
|
-
const hostMode = process.
|
|
56
|
+
const hostMode = process.stdout.isTTY === true;
|
|
54
57
|
const statusBar = new StatusBar(undefined, { hostManaged: hostMode });
|
|
55
58
|
statusBar.init();
|
|
56
59
|
const gitInfo = await getGitInfo(manifest.workdir);
|
|
@@ -83,7 +86,6 @@ export async function runResumedSession(session, pkgVersion) {
|
|
|
83
86
|
paramValues: manifest.flow.params,
|
|
84
87
|
task: manifest.taskText,
|
|
85
88
|
workdir: manifest.workdir,
|
|
86
|
-
opinionless: manifest.options.opinionless,
|
|
87
89
|
yolo: manifest.options.yolo,
|
|
88
90
|
statusBar,
|
|
89
91
|
dumpService,
|