poly-weaver 0.10.5 → 0.10.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/implementors/adapter.d.ts.map +1 -1
- package/dist/agents/implementors/adapter.js +4 -0
- package/dist/agents/implementors/adapter.js.map +1 -1
- package/dist/agents/implementors/handler.d.ts.map +1 -1
- package/dist/agents/implementors/handler.js +20 -11
- package/dist/agents/implementors/handler.js.map +1 -1
- package/dist/agents/interviewers/adapter.d.ts +1 -5
- package/dist/agents/interviewers/adapter.d.ts.map +1 -1
- package/dist/agents/interviewers/adapter.js +0 -35
- package/dist/agents/interviewers/adapter.js.map +1 -1
- package/dist/agents/interviewers/handler.d.ts.map +1 -1
- package/dist/agents/interviewers/handler.js +2 -1
- package/dist/agents/interviewers/handler.js.map +1 -1
- package/dist/agents/interviewers/types.d.ts +3 -5
- package/dist/agents/interviewers/types.d.ts.map +1 -1
- package/dist/agents/planners/adapter.d.ts.map +1 -1
- package/dist/agents/planners/adapter.js +4 -0
- package/dist/agents/planners/adapter.js.map +1 -1
- package/dist/agents/planners/handler.d.ts.map +1 -1
- package/dist/agents/planners/handler.js +36 -21
- package/dist/agents/planners/handler.js.map +1 -1
- package/dist/agents/reviewers/adapter.d.ts +3 -3
- package/dist/agents/reviewers/adapter.d.ts.map +1 -1
- package/dist/agents/reviewers/adapter.js +21 -11
- package/dist/agents/reviewers/adapter.js.map +1 -1
- package/dist/agents/reviewers/handler.d.ts.map +1 -1
- package/dist/agents/reviewers/handler.js +51 -39
- package/dist/agents/reviewers/handler.js.map +1 -1
- package/dist/agents/reviewers/index.d.ts +3 -3
- package/dist/agents/reviewers/index.js +7 -7
- package/dist/agents/reviewers/index.js.map +1 -1
- package/dist/agents/reviewers/prompts.d.ts +1 -1
- package/dist/agents/reviewers/prompts.d.ts.map +1 -1
- package/dist/agents/reviewers/prompts.js +38 -8
- package/dist/agents/reviewers/prompts.js.map +1 -1
- package/dist/agents/reviewers/types.d.ts +5 -11
- 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 +14 -0
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +65 -0
- package/dist/agents/runner.js.map +1 -1
- package/dist/agents/session-resume.d.ts +32 -0
- package/dist/agents/session-resume.d.ts.map +1 -0
- package/dist/agents/session-resume.js +81 -0
- package/dist/agents/session-resume.js.map +1 -0
- package/dist/agents/simplifiers/handler.d.ts.map +1 -1
- package/dist/agents/simplifiers/handler.js +24 -13
- package/dist/agents/simplifiers/handler.js.map +1 -1
- package/dist/flow/dsl.js +1 -1
- package/dist/flow/dsl.js.map +1 -1
- package/dist/flow/executor.d.ts.map +1 -1
- package/dist/flow/executor.js +3 -0
- package/dist/flow/executor.js.map +1 -1
- package/dist/flow/types.d.ts +6 -0
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/flow/types.js.map +1 -1
- package/dist/providers/claude/completion-plan-mode.js +1 -1
- package/dist/providers/claude/completion-plan-mode.js.map +1 -1
- package/dist/providers/claude/plan-mode-pty-monitor.d.ts +22 -11
- package/dist/providers/claude/plan-mode-pty-monitor.d.ts.map +1 -1
- package/dist/providers/claude/plan-mode-pty-monitor.js +34 -12
- package/dist/providers/claude/plan-mode-pty-monitor.js.map +1 -1
- package/dist/session/manifest.d.ts +9 -11
- package/dist/session/manifest.d.ts.map +1 -1
- package/dist/session/restore.d.ts.map +1 -1
- package/dist/session/restore.js +4 -5
- package/dist/session/restore.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,8 @@ import { readFile } from "node:fs/promises";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { formatUserDecisionsInline } from "./prompts.js";
|
|
4
4
|
import { readVerdictFromContract, removeFileIfExists, } from "../../orchestrator.js";
|
|
5
|
-
import {
|
|
5
|
+
import { bindAttemptFailureReporter, bindDriverRuntime, bindPtyBufferReporter, bindSessionReporter, flushDriverSidecar, } from "../runner.js";
|
|
6
|
+
import { bindStepLiveSidecar, cleanupStepLiveSidecar, resolveResumeSessionId, } from "../session-resume.js";
|
|
6
7
|
export class ReviewerRoleHandler {
|
|
7
8
|
driver;
|
|
8
9
|
constructor(driver) {
|
|
@@ -31,11 +32,12 @@ export class ReviewerRoleHandler {
|
|
|
31
32
|
throw new Error("ReviewerRoleHandler: plan artifact missing");
|
|
32
33
|
const stepAny = step;
|
|
33
34
|
const sessionKey = stepAny.sessionShareKey ?? step.id;
|
|
34
|
-
|
|
35
|
+
const boundaryFired = stepAny.sessionBoundary?.(ctx) === true;
|
|
36
|
+
if (boundaryFired) {
|
|
35
37
|
ctx.sessionIds.delete(sessionKey);
|
|
36
38
|
}
|
|
37
39
|
const outputVerdictFile = join(ctx.sessionDir, "verdict.json");
|
|
38
|
-
const resumeSessionId = ctx.sessionIds.get(sessionKey);
|
|
40
|
+
const resumeSessionId = await resolveResumeSessionId(ctx, stepAny, this.driver, sessionKey, ctx.sessionIds.get(sessionKey), boundaryFired);
|
|
39
41
|
const verdictArtifact = step.reads.verdict
|
|
40
42
|
? ctx.artifacts.get(step.reads.verdict)
|
|
41
43
|
: undefined;
|
|
@@ -46,36 +48,37 @@ export class ReviewerRoleHandler {
|
|
|
46
48
|
bindPtyBufferReporter(this.driver, ctx);
|
|
47
49
|
bindAttemptFailureReporter(this.driver, ctx);
|
|
48
50
|
bindDriverRuntime(this.driver, { output: ctx.output, terminalHost: ctx.terminalHost });
|
|
51
|
+
const sidecarPath = bindStepLiveSidecar(this.driver, ctx, sessionKey, stepAny.driver);
|
|
49
52
|
const decisionsAllowed = step.reads.userDecisions != null &&
|
|
50
53
|
(stepAny.userDecisionsWhen == null || stepAny.userDecisionsWhen(ctx));
|
|
51
54
|
const userDecisionsFile = decisionsAllowed
|
|
52
55
|
? ctx.artifacts.getFile(step.reads.userDecisions)
|
|
53
56
|
: undefined;
|
|
54
57
|
let decisionsInline;
|
|
55
|
-
let planText;
|
|
56
58
|
let prevVerdictText;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
let verdictSource;
|
|
60
|
+
const verdictKey = step.reads.verdict ?? step.writes.verdict;
|
|
61
|
+
const revisionVerdictArtifact = verdictKey
|
|
62
|
+
? ctx.artifacts.get(verdictKey)
|
|
63
|
+
: undefined;
|
|
64
|
+
const revisionVerdictText = revisionVerdictArtifact?.text;
|
|
65
|
+
if (revisionVerdictText != null && revisionVerdictText.length > 0) {
|
|
66
|
+
prevVerdictText = revisionVerdictText;
|
|
67
|
+
const source = revisionVerdictArtifact?.meta?.source;
|
|
68
|
+
if (source === "reviewer" || source === "user") {
|
|
69
|
+
verdictSource = source;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (userDecisionsFile != null) {
|
|
59
73
|
try {
|
|
60
74
|
const sidecarRaw = await readFile(userDecisionsFile, "utf-8");
|
|
61
75
|
const sidecar = JSON.parse(sidecarRaw);
|
|
62
76
|
const inline = formatUserDecisionsInline(sidecar.decisions);
|
|
63
|
-
|
|
64
|
-
const verdictText = verdictKey
|
|
65
|
-
? ctx.artifacts.getText(verdictKey)
|
|
66
|
-
: undefined;
|
|
67
|
-
const planKey = step.reads.plan;
|
|
68
|
-
let pText = ctx.artifacts.getText(planKey);
|
|
69
|
-
if (pText == null && planFile) {
|
|
70
|
-
pText = await readFile(planFile, "utf-8");
|
|
71
|
-
}
|
|
72
|
-
if (inline && verdictText && pText) {
|
|
77
|
+
if (inline && prevVerdictText) {
|
|
73
78
|
decisionsInline = inline;
|
|
74
|
-
planText = pText;
|
|
75
|
-
prevVerdictText = verdictText;
|
|
76
79
|
}
|
|
77
80
|
else {
|
|
78
|
-
throw new Error("missing inline decisions
|
|
81
|
+
throw new Error("missing inline decisions or prior verdict text");
|
|
79
82
|
}
|
|
80
83
|
}
|
|
81
84
|
catch (err) {
|
|
@@ -87,30 +90,38 @@ export class ReviewerRoleHandler {
|
|
|
87
90
|
console.warn(`[poly-weaver] ${msg}`);
|
|
88
91
|
}
|
|
89
92
|
decisionsInline = undefined;
|
|
90
|
-
planText = undefined;
|
|
91
93
|
prevVerdictText = undefined;
|
|
94
|
+
verdictSource = undefined;
|
|
92
95
|
}
|
|
93
96
|
}
|
|
94
|
-
const planLineCountText =
|
|
97
|
+
const planLineCountText = ctx.artifacts.getText(step.reads.plan) ?? await readFile(planFile, "utf-8");
|
|
95
98
|
const planLineCount = planLineCountText.split(/\r?\n/).length;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
99
|
+
let reviewResult;
|
|
100
|
+
let verdictRaw;
|
|
101
|
+
let verdictData;
|
|
102
|
+
try {
|
|
103
|
+
({ reviewResult, verdictRaw, verdictData } = await retry("reviewer", async (attempt) => {
|
|
104
|
+
// Stale-file guard: never re-read a prior verdict if the reviewer fails to write.
|
|
105
|
+
await removeFileIfExists(outputVerdictFile);
|
|
106
|
+
const reviewResult = await this.driver.run(baselineFile, planFile, {
|
|
107
|
+
outputVerdictFile,
|
|
108
|
+
resumeSessionId: attempt === 1 ? resumeSessionId : undefined,
|
|
109
|
+
variant: step.variant,
|
|
110
|
+
baselineKind,
|
|
111
|
+
userDecisionsFile,
|
|
112
|
+
decisionsInline,
|
|
113
|
+
prevVerdictText,
|
|
114
|
+
verdictSource,
|
|
115
|
+
userFeedbackFile,
|
|
116
|
+
});
|
|
117
|
+
const verdictData = await readVerdictFromContract(outputVerdictFile, planLineCount);
|
|
118
|
+
const verdictRaw = await readFile(outputVerdictFile, "utf-8");
|
|
119
|
+
return { reviewResult, verdictRaw, verdictData };
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
await flushDriverSidecar(this.driver);
|
|
124
|
+
}
|
|
114
125
|
// Record session file for dump
|
|
115
126
|
if (reviewResult.sessionFilePath) {
|
|
116
127
|
ctx.lastStepSessionFilePaths?.push(reviewResult.sessionFilePath);
|
|
@@ -127,6 +138,7 @@ export class ReviewerRoleHandler {
|
|
|
127
138
|
if (reviewResult.sessionId) {
|
|
128
139
|
ctx.sessionIds.set(sessionKey, reviewResult.sessionId);
|
|
129
140
|
}
|
|
141
|
+
await cleanupStepLiveSidecar(sidecarPath);
|
|
130
142
|
return { kind: "continue" };
|
|
131
143
|
}
|
|
132
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/agents/reviewers/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAS/B,OAAO,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/agents/reviewers/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { ProviderStrategy } from "../../providers/types.js";
|
|
2
|
-
import type { ReviewerDriver, ReviewPromptBuilder,
|
|
2
|
+
import type { ReviewerDriver, ReviewPromptBuilder, FreshRevisionReviewPromptBuilder } from "./types.js";
|
|
3
3
|
import type { DriverName } from "../../flow/types.js";
|
|
4
4
|
export { review } from "./dsl.js";
|
|
5
5
|
export { ReviewerRoleHandler } from "./handler.js";
|
|
6
|
-
export type { ReviewerDriver, ReviewPromptBuilder,
|
|
7
|
-
export type ReviewerFactory = (workdir: string, promptBuilder?: ReviewPromptBuilder, resumePromptBuilder?: ReviewPromptBuilder,
|
|
6
|
+
export type { ReviewerDriver, ReviewPromptBuilder, FreshRevisionReviewPromptBuilder, } from "./types.js";
|
|
7
|
+
export type ReviewerFactory = (workdir: string, promptBuilder?: ReviewPromptBuilder, resumePromptBuilder?: ReviewPromptBuilder, freshRevisionPromptBuilder?: FreshRevisionReviewPromptBuilder) => ReviewerDriver;
|
|
8
8
|
export declare const registerProvider: (name: DriverName, strategy: ProviderStrategy) => void;
|
|
9
9
|
export declare const registerFactory: (name: string, factory: ReviewerFactory) => void, availableDrivers: () => string[];
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ReviewerAdapter } from "./adapter.js";
|
|
2
2
|
import { ReviewerRoleHandler } from "./handler.js";
|
|
3
3
|
import { createRoleModule } from "../registry.js";
|
|
4
|
-
import { buildReviewerPrompt, buildResumeReviewerPrompt, buildImplementationReviewerPrompt, buildResumeImplementationReviewerPrompt,
|
|
4
|
+
import { buildReviewerPrompt, buildResumeReviewerPrompt, buildImplementationReviewerPrompt, buildResumeImplementationReviewerPrompt, buildFreshRevisionReviewerPrompt, } from "./prompts.js";
|
|
5
5
|
export { review } from "./dsl.js";
|
|
6
6
|
export { ReviewerRoleHandler } from "./handler.js";
|
|
7
7
|
function resolveReviewerPrompts(opts) {
|
|
@@ -9,24 +9,24 @@ function resolveReviewerPrompts(opts) {
|
|
|
9
9
|
return {
|
|
10
10
|
pb: buildImplementationReviewerPrompt,
|
|
11
11
|
rpb: buildResumeImplementationReviewerPrompt,
|
|
12
|
-
|
|
12
|
+
frpb: undefined,
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
return {
|
|
16
16
|
pb: buildReviewerPrompt,
|
|
17
17
|
rpb: buildResumeReviewerPrompt,
|
|
18
|
-
|
|
18
|
+
frpb: buildFreshRevisionReviewerPrompt,
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
const mod = createRoleModule({
|
|
22
22
|
roleName: "reviewer",
|
|
23
23
|
fromFactory: (factory, workdir, opts) => {
|
|
24
|
-
const { pb, rpb,
|
|
25
|
-
return factory(workdir, pb, rpb,
|
|
24
|
+
const { pb, rpb, frpb } = resolveReviewerPrompts(opts);
|
|
25
|
+
return factory(workdir, pb, rpb, frpb);
|
|
26
26
|
},
|
|
27
27
|
fromProvider: (strategy, workdir, opts) => {
|
|
28
|
-
const { pb, rpb,
|
|
29
|
-
return new ReviewerAdapter(strategy, workdir, pb, rpb,
|
|
28
|
+
const { pb, rpb, frpb } = resolveReviewerPrompts(opts);
|
|
29
|
+
return new ReviewerAdapter(strategy, workdir, pb, rpb, frpb, opts?.yolo, opts?.model, opts?.effort, opts?.sessionFileWaitMs);
|
|
30
30
|
},
|
|
31
31
|
toHandler: (driver) => new ReviewerRoleHandler(driver),
|
|
32
32
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/reviewers/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAoB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,iCAAiC,EACjC,uCAAuC,EACvC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/reviewers/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAoB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,iCAAiC,EACjC,uCAAuC,EACvC,gCAAgC,GACjC,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAcnD,SAAS,sBAAsB,CAAC,IAAkB;IAKhD,IAAI,IAAI,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO;YACL,EAAE,EAAE,iCAAiC;YACrC,GAAG,EAAE,uCAAuC;YAC5C,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,EAAE,mBAAmB;QACvB,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,gCAAgC;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,GAAG,GAAG,gBAAgB,CAAkC;IAC5D,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACtC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACvD,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACxC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACvD,OAAO,IAAI,eAAe,CACxB,QAAQ,EACR,OAAO,EACP,EAAE,EACF,GAAG,EACH,IAAI,EACJ,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,CACxB,CAAC;IACJ,CAAC;IACD,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC;CACvD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,gBAA0E,CAAC;AAC/G,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC"}
|
|
@@ -3,7 +3,7 @@ export declare function truncateWords(text: string, n: number): string;
|
|
|
3
3
|
export declare function formatUserDecisionsInline(decisions: UserDecisionsSidecar["decisions"]): string;
|
|
4
4
|
export declare function buildReviewerPrompt(baselineFile: string, planFile: string, outputVerdictFile: string, _userDecisionsFile?: string, _decisionsInline?: string, baselineKind?: "spec" | "task", _userFeedbackFile?: string): Promise<string>;
|
|
5
5
|
export declare function buildResumeReviewerPrompt(_baselineFile: string, planFile: string, outputVerdictFile: string, userDecisionsFile?: string, decisionsInline?: string, _baselineKind?: "spec" | "task", userFeedbackFile?: string): Promise<string>;
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function buildFreshRevisionReviewerPrompt(baselineFile: string, planFile: string, outputVerdictFile: string, prevVerdictText: string, verdictSource: "reviewer" | "user" | undefined, decisionsInline?: string, baselineKind?: "spec" | "task"): Promise<string>;
|
|
7
7
|
export declare function buildImplementationReviewerPrompt(_baselineFile: string, planFile: string, outputVerdictFile: string): Promise<string>;
|
|
8
8
|
export declare function buildResumeImplementationReviewerPrompt(_baselineFile: string, _planFile: string, outputVerdictFile: string): Promise<string>;
|
|
9
9
|
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/reviewers/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,GAC3C,MAAM,CAiBR;AAyDD,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,gBAAgB,CAAC,EAAE,MAAM,EACzB,YAAY,GAAE,MAAM,GAAG,MAAe,EACtC,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,eAAe,CAAC,EAAE,MAAM,EACxB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAC/B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED,wBAAsB,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/reviewers/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,oBAAoB,CAAC,WAAW,CAAC,GAC3C,MAAM,CAiBR;AAyDD,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,gBAAgB,CAAC,EAAE,MAAM,EACzB,YAAY,GAAE,MAAM,GAAG,MAAe,EACtC,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,eAAe,CAAC,EAAE,MAAM,EACxB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAC/B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED,wBAAsB,gCAAgC,CACpD,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,EAC9C,eAAe,CAAC,EAAE,MAAM,EACxB,YAAY,GAAE,MAAM,GAAG,MAAe,GACrC,OAAO,CAAC,MAAM,CAAC,CA6CjB;AAED,wBAAsB,iCAAiC,CACrD,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,wBAAsB,uCAAuC,CAC3D,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
|
|
@@ -117,18 +117,48 @@ export async function buildResumeReviewerPrompt(_baselineFile, planFile, outputV
|
|
|
117
117
|
`Write your verdict as JSON to: ${outputVerdictFile}`,
|
|
118
118
|
].join("\n");
|
|
119
119
|
}
|
|
120
|
-
export async function
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
export async function buildFreshRevisionReviewerPrompt(baselineFile, planFile, outputVerdictFile, prevVerdictText, verdictSource, decisionsInline, baselineKind = "task") {
|
|
121
|
+
const label = baselineKind === "spec" ? "spec" : "task";
|
|
122
|
+
const head = [
|
|
123
|
+
`Read the ${label}: ${baselineFile}`,
|
|
124
|
+
`Read the revised plan: ${planFile}`,
|
|
124
125
|
"",
|
|
125
|
-
|
|
126
|
+
];
|
|
127
|
+
if (decisionsInline) {
|
|
128
|
+
return [
|
|
129
|
+
...head,
|
|
130
|
+
"Your previous verdict on the earlier plan:",
|
|
131
|
+
prevVerdictText,
|
|
132
|
+
"",
|
|
133
|
+
"Apply these user-requested verdict changes:",
|
|
134
|
+
decisionsInline,
|
|
135
|
+
"",
|
|
136
|
+
`Write your verdict as JSON to: ${outputVerdictFile}`,
|
|
137
|
+
"",
|
|
138
|
+
...reviewerSchemaAndRules("plan"),
|
|
139
|
+
].join("\n");
|
|
140
|
+
}
|
|
141
|
+
if (verdictSource === "user") {
|
|
142
|
+
return [
|
|
143
|
+
...head,
|
|
144
|
+
"The user's feedback on the earlier plan:",
|
|
145
|
+
prevVerdictText,
|
|
146
|
+
"",
|
|
147
|
+
`The plan was revised to address the user's feedback. Re-evaluate the revised plan against the ${label}.`,
|
|
148
|
+
"",
|
|
149
|
+
`Write your verdict as JSON to: ${outputVerdictFile}`,
|
|
150
|
+
"",
|
|
151
|
+
...reviewerSchemaAndRules("plan"),
|
|
152
|
+
].join("\n");
|
|
153
|
+
}
|
|
154
|
+
return [
|
|
155
|
+
...head,
|
|
156
|
+
"Your previous verdict on the earlier plan:",
|
|
126
157
|
prevVerdictText,
|
|
127
158
|
"",
|
|
128
|
-
|
|
129
|
-
decisionsInline,
|
|
159
|
+
`Re-evaluate the revised plan against the ${label}, checking whether the issues in your previous verdict are addressed.`,
|
|
130
160
|
"",
|
|
131
|
-
`Write
|
|
161
|
+
`Write your verdict as JSON to: ${outputVerdictFile}`,
|
|
132
162
|
"",
|
|
133
163
|
...reviewerSchemaAndRules("plan"),
|
|
134
164
|
].join("\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/agents/reviewers/prompts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/agents/reviewers/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,22 +17,16 @@ export type ReviewerRunOpts = {
|
|
|
17
17
|
userDecisionsFile?: string;
|
|
18
18
|
/** Numbered, inline-rendered user decisions for same-plan verdict refinement.
|
|
19
19
|
* Formatted by the handler from the sidecar so the adapter can build a terse
|
|
20
|
-
* resume prompt or a fresh
|
|
20
|
+
* resume prompt or a fresh revision prompt without the model rereading the file. */
|
|
21
21
|
decisionsInline?: string;
|
|
22
|
-
/** Original plan text — supplied by the handler so the adapter can build a
|
|
23
|
-
* fresh-fallback prompt that inlines the plan when resume fails. */
|
|
24
|
-
planText?: string;
|
|
25
22
|
/** Prior unapproved verdict text — supplied by the handler so the adapter can
|
|
26
|
-
* build a fresh
|
|
23
|
+
* build a complete fresh revision prompt when no provider session is present. */
|
|
27
24
|
prevVerdictText?: string;
|
|
25
|
+
/** Source of the prior verdict text, if known. */
|
|
26
|
+
verdictSource?: "reviewer" | "user";
|
|
28
27
|
};
|
|
29
28
|
export type ReviewPromptBuilder = (baselineFile: string, planFile: string, outputVerdictFile: string, userDecisionsFile?: string, decisionsInline?: string, baselineKind?: "spec" | "task", userFeedbackFile?: string) => Promise<string>;
|
|
30
|
-
|
|
31
|
-
* Builds a fresh-session prompt used by the runner when an in-context resume
|
|
32
|
-
* fails. Inputs are textual blobs (not file paths) so the model sees the plan
|
|
33
|
-
* and prior verdict inline alongside the same numbered decision list.
|
|
34
|
-
*/
|
|
35
|
-
export type FreshFallbackReviewPromptBuilder = (planText: string, prevVerdictText: string, decisionsInline: string, outputVerdictFile: string) => Promise<string>;
|
|
29
|
+
export type FreshRevisionReviewPromptBuilder = (baselineFile: string, planFile: string, outputVerdictFile: string, prevVerdictText: string, verdictSource?: "reviewer" | "user", decisionsInline?: string, baselineKind?: "spec" | "task") => Promise<string>;
|
|
36
30
|
/**
|
|
37
31
|
* Select the appropriate prompt builder based on whether this is a resume.
|
|
38
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agents/reviewers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,wFAAwF;IACxF,GAAG,CACD,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB,iDAAiD;IACjD,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;yFAEqF;IACrF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agents/reviewers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,wFAAwF;IACxF,GAAG,CACD,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB,iDAAiD;IACjD,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;yFAEqF;IACrF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;sFACkF;IAClF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,aAAa,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAChC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,eAAe,CAAC,EAAE,MAAM,EACxB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAC9B,gBAAgB,CAAC,EAAE,MAAM,KACtB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,MAAM,MAAM,gCAAgC,GAAG,CAC7C,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,UAAU,GAAG,MAAM,EACnC,eAAe,CAAC,EAAE,MAAM,EACxB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,KAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,mBAAmB,EAClC,mBAAmB,EAAE,mBAAmB,GAAG,SAAS,EACpD,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,mBAAmB,CAKrB;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agents/reviewers/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agents/reviewers/types.ts"],"names":[],"mappings":"AAuDA;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,aAAkC,EAClC,mBAAoD,EACpD,eAAmC;IAEnC,IAAI,eAAe,IAAI,mBAAmB,EAAE,CAAC;QAC3C,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
package/dist/agents/runner.d.ts
CHANGED
|
@@ -64,6 +64,10 @@ export interface RunResult {
|
|
|
64
64
|
/** Line offset into the session file where this turn's data starts. */
|
|
65
65
|
lineOffset: number;
|
|
66
66
|
}
|
|
67
|
+
export interface LiveSidecarMeta {
|
|
68
|
+
driver: string;
|
|
69
|
+
sessionKey: string;
|
|
70
|
+
}
|
|
67
71
|
/**
|
|
68
72
|
* Thrown when the user interrupts a run via Ctrl+C while the orchestration
|
|
69
73
|
* host owns raw stdin. Distinguished from ordinary failures so the
|
|
@@ -98,11 +102,16 @@ export declare abstract class BaseAdapter {
|
|
|
98
102
|
protected readonly runner: AgentRunner;
|
|
99
103
|
protected sessionId: string | undefined;
|
|
100
104
|
protected sessionFilePath: string | undefined;
|
|
105
|
+
private pendingSidecarWrite;
|
|
101
106
|
/** Runtime context attached by the role handler before each driver.run() call. */
|
|
102
107
|
protected runtimeOutput: OrchestrationOutput | undefined;
|
|
103
108
|
protected runtimeHost: TerminalHost | undefined;
|
|
104
109
|
constructor(strategy: ProviderStrategy, workdir: string, yolo?: boolean, model?: string | undefined, effort?: string | undefined, sessionFileWaitMs?: number);
|
|
105
110
|
getSessionId(): string | undefined;
|
|
111
|
+
locateSessionFile(sessionId: string): Promise<string | undefined>;
|
|
112
|
+
primeResumeSessionFile(sessionFilePath: string): void;
|
|
113
|
+
setLiveSidecar(sidecarPath: string, meta: LiveSidecarMeta): void;
|
|
114
|
+
flushPendingSidecar(): Promise<void>;
|
|
106
115
|
/**
|
|
107
116
|
* Inject orchestration runtime references. Called by role handlers
|
|
108
117
|
* before driver.run() so the runner can route warnings to the host
|
|
@@ -124,8 +133,13 @@ export declare abstract class BaseAdapter {
|
|
|
124
133
|
ptyBufferCallback?: (buffer: PtyTailBuffer) => void;
|
|
125
134
|
/** Optional callback invoked with per-attempt process failure diagnostics. */
|
|
126
135
|
attemptFailureCallback?: (record: AttemptFailureRecord) => void;
|
|
136
|
+
private writeSidecar;
|
|
127
137
|
protected runAgent(request: RunRequest): Promise<RunResult>;
|
|
128
138
|
}
|
|
139
|
+
export declare function bindLiveSidecar(driver: unknown, sidecarPath: string, meta: LiveSidecarMeta): void;
|
|
140
|
+
export declare function flushDriverSidecar(driver: unknown): Promise<void>;
|
|
141
|
+
export declare function locateDriverSessionFile(driver: unknown, sessionId: string): Promise<string | undefined>;
|
|
142
|
+
export declare function primeDriverResumeSessionFile(driver: unknown, sessionFilePath: string): void;
|
|
129
143
|
/**
|
|
130
144
|
* Inject runtime references (orchestration sink + terminal host) onto a
|
|
131
145
|
* BaseAdapter-backed driver. No-ops for non-BaseAdapter drivers (e.g. mocks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/runner.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { writeFile } from "node:fs/promises";
|
|
2
3
|
import { resolveSpawnCommand, spawnPty } from "../pty/spawn.js";
|
|
3
4
|
import { sendExit } from "../pty/exit.js";
|
|
4
5
|
import { readSessionFile } from "../session/reader.js";
|
|
@@ -53,6 +54,7 @@ export class BaseAdapter {
|
|
|
53
54
|
runner;
|
|
54
55
|
sessionId;
|
|
55
56
|
sessionFilePath;
|
|
57
|
+
pendingSidecarWrite;
|
|
56
58
|
/** Runtime context attached by the role handler before each driver.run() call. */
|
|
57
59
|
runtimeOutput;
|
|
58
60
|
runtimeHost;
|
|
@@ -67,6 +69,31 @@ export class BaseAdapter {
|
|
|
67
69
|
getSessionId() {
|
|
68
70
|
return this.sessionId;
|
|
69
71
|
}
|
|
72
|
+
async locateSessionFile(sessionId) {
|
|
73
|
+
return await this.strategy.session.locateSessionById?.(this.workdir, sessionId);
|
|
74
|
+
}
|
|
75
|
+
primeResumeSessionFile(sessionFilePath) {
|
|
76
|
+
this.sessionFilePath = sessionFilePath;
|
|
77
|
+
}
|
|
78
|
+
setLiveSidecar(sidecarPath, meta) {
|
|
79
|
+
const previous = this.sessionFileCallback;
|
|
80
|
+
this.sessionFileCallback = (path) => {
|
|
81
|
+
previous?.(path);
|
|
82
|
+
const prior = this.pendingSidecarWrite ?? Promise.resolve();
|
|
83
|
+
this.pendingSidecarWrite = prior.then(() => this.writeSidecar(sidecarPath, meta, path));
|
|
84
|
+
void this.pendingSidecarWrite.catch(() => { });
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async flushPendingSidecar() {
|
|
88
|
+
if (!this.pendingSidecarWrite)
|
|
89
|
+
return;
|
|
90
|
+
try {
|
|
91
|
+
await this.pendingSidecarWrite;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
/* best-effort */
|
|
95
|
+
}
|
|
96
|
+
}
|
|
70
97
|
/**
|
|
71
98
|
* Inject orchestration runtime references. Called by role handlers
|
|
72
99
|
* before driver.run() so the runner can route warnings to the host
|
|
@@ -91,6 +118,20 @@ export class BaseAdapter {
|
|
|
91
118
|
ptyBufferCallback;
|
|
92
119
|
/** Optional callback invoked with per-attempt process failure diagnostics. */
|
|
93
120
|
attemptFailureCallback;
|
|
121
|
+
async writeSidecar(sidecarPath, meta, sessionFilePath) {
|
|
122
|
+
try {
|
|
123
|
+
const sessionId = await this.strategy.session.extractSessionId(sessionFilePath);
|
|
124
|
+
await writeFile(sidecarPath, JSON.stringify({
|
|
125
|
+
sessionId,
|
|
126
|
+
driver: meta.driver,
|
|
127
|
+
sessionKey: meta.sessionKey,
|
|
128
|
+
lastUpdated: new Date().toISOString(),
|
|
129
|
+
}), "utf8");
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
/* best-effort */
|
|
133
|
+
}
|
|
134
|
+
}
|
|
94
135
|
async runAgent(request) {
|
|
95
136
|
const merged = {
|
|
96
137
|
...request,
|
|
@@ -110,6 +151,30 @@ export class BaseAdapter {
|
|
|
110
151
|
return result;
|
|
111
152
|
}
|
|
112
153
|
}
|
|
154
|
+
export function bindLiveSidecar(driver, sidecarPath, meta) {
|
|
155
|
+
if (driver != null && typeof driver.setLiveSidecar === "function") {
|
|
156
|
+
driver
|
|
157
|
+
.setLiveSidecar(sidecarPath, meta);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
export async function flushDriverSidecar(driver) {
|
|
161
|
+
if (driver != null && typeof driver.flushPendingSidecar === "function") {
|
|
162
|
+
await driver.flushPendingSidecar();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
export async function locateDriverSessionFile(driver, sessionId) {
|
|
166
|
+
if (driver != null && typeof driver.locateSessionFile === "function") {
|
|
167
|
+
return await driver
|
|
168
|
+
.locateSessionFile(sessionId);
|
|
169
|
+
}
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
export function primeDriverResumeSessionFile(driver, sessionFilePath) {
|
|
173
|
+
if (driver != null && typeof driver.primeResumeSessionFile === "function") {
|
|
174
|
+
driver
|
|
175
|
+
.primeResumeSessionFile(sessionFilePath);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
113
178
|
/**
|
|
114
179
|
* Inject runtime references (orchestration sink + terminal host) onto a
|
|
115
180
|
* BaseAdapter-backed driver. No-ops for non-BaseAdapter drivers (e.g. mocks
|