poly-weaver 0.12.5 → 0.13.0
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 +1 -0
- package/dist/agents/implementors/adapter.d.ts.map +1 -1
- package/dist/agents/implementors/adapter.js +4 -4
- 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 +4 -0
- package/dist/agents/implementors/handler.js.map +1 -1
- package/dist/agents/implementors/prompts.d.ts +4 -4
- package/dist/agents/implementors/prompts.d.ts.map +1 -1
- package/dist/agents/implementors/prompts.js +25 -20
- package/dist/agents/implementors/prompts.js.map +1 -1
- package/dist/agents/implementors/types.d.ts +5 -4
- package/dist/agents/implementors/types.d.ts.map +1 -1
- package/dist/agents/interviewers/adapter.d.ts +0 -2
- package/dist/agents/interviewers/adapter.d.ts.map +1 -1
- package/dist/agents/interviewers/adapter.js +0 -15
- 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 +1 -18
- package/dist/agents/interviewers/handler.js.map +1 -1
- package/dist/agents/reviewers/adapter.d.ts.map +1 -1
- package/dist/agents/reviewers/adapter.js +18 -3
- package/dist/agents/reviewers/adapter.js.map +1 -1
- package/dist/agents/reviewers/dsl.d.ts +1 -0
- 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 +5 -3
- package/dist/agents/reviewers/handler.js.map +1 -1
- package/dist/agents/reviewers/index.d.ts +1 -1
- package/dist/agents/reviewers/index.d.ts.map +1 -1
- package/dist/agents/reviewers/index.js +8 -1
- package/dist/agents/reviewers/index.js.map +1 -1
- package/dist/agents/reviewers/prompts.d.ts +8 -5
- package/dist/agents/reviewers/prompts.d.ts.map +1 -1
- package/dist/agents/reviewers/prompts.js +50 -27
- package/dist/agents/reviewers/prompts.js.map +1 -1
- package/dist/agents/reviewers/types.d.ts +16 -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 +2 -0
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +15 -0
- package/dist/agents/runner.js.map +1 -1
- package/dist/agents/session-resume.d.ts +7 -0
- package/dist/agents/session-resume.d.ts.map +1 -1
- package/dist/agents/session-resume.js +18 -1
- package/dist/agents/session-resume.js.map +1 -1
- package/dist/agents/simplifiers/adapter.d.ts +2 -5
- package/dist/agents/simplifiers/adapter.d.ts.map +1 -1
- package/dist/agents/simplifiers/adapter.js +17 -7
- package/dist/agents/simplifiers/adapter.js.map +1 -1
- package/dist/agents/simplifiers/dsl.d.ts +13 -0
- package/dist/agents/simplifiers/dsl.d.ts.map +1 -1
- package/dist/agents/simplifiers/dsl.js +8 -1
- package/dist/agents/simplifiers/dsl.js.map +1 -1
- package/dist/agents/simplifiers/handler.d.ts +3 -0
- package/dist/agents/simplifiers/handler.d.ts.map +1 -1
- package/dist/agents/simplifiers/handler.js +130 -12
- package/dist/agents/simplifiers/handler.js.map +1 -1
- package/dist/agents/simplifiers/index.d.ts +1 -0
- package/dist/agents/simplifiers/index.d.ts.map +1 -1
- package/dist/agents/simplifiers/index.js +1 -0
- package/dist/agents/simplifiers/index.js.map +1 -1
- package/dist/agents/simplifiers/plan.d.ts +52 -0
- package/dist/agents/simplifiers/plan.d.ts.map +1 -0
- package/dist/agents/simplifiers/plan.js +176 -0
- package/dist/agents/simplifiers/plan.js.map +1 -0
- package/dist/agents/simplifiers/prompts.d.ts +6 -0
- package/dist/agents/simplifiers/prompts.d.ts.map +1 -0
- package/dist/agents/simplifiers/prompts.js +90 -0
- package/dist/agents/simplifiers/prompts.js.map +1 -0
- package/dist/agents/simplifiers/types.d.ts +22 -5
- package/dist/agents/simplifiers/types.d.ts.map +1 -1
- package/dist/ansi.d.ts +1 -0
- package/dist/ansi.d.ts.map +1 -1
- package/dist/ansi.js +1 -0
- package/dist/ansi.js.map +1 -1
- package/dist/cli.js +25 -11
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +16 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +34 -0
- package/dist/config.js.map +1 -1
- package/dist/dsl.d.ts +1 -1
- package/dist/dsl.d.ts.map +1 -1
- package/dist/flow/built-in/default-factory.js +1 -1
- package/dist/flow/built-in/default-factory.js.map +1 -1
- package/dist/flow/built-in/simplify-factory.d.ts +23 -0
- package/dist/flow/built-in/simplify-factory.d.ts.map +1 -0
- package/dist/flow/built-in/simplify-factory.js +183 -0
- package/dist/flow/built-in/simplify-factory.js.map +1 -0
- package/dist/flow/built-in/simplify.d.ts +16 -0
- package/dist/flow/built-in/simplify.d.ts.map +1 -0
- package/dist/flow/built-in/simplify.js +18 -0
- package/dist/flow/built-in/simplify.js.map +1 -0
- package/dist/flow/custom/load.d.ts.map +1 -1
- package/dist/flow/custom/load.js +1 -0
- package/dist/flow/custom/load.js.map +1 -1
- package/dist/flow/dsl.d.ts +4 -0
- package/dist/flow/dsl.d.ts.map +1 -1
- package/dist/flow/dsl.js +4 -0
- package/dist/flow/dsl.js.map +1 -1
- package/dist/flow/executor.js +1 -1
- package/dist/flow/executor.js.map +1 -1
- package/dist/flow/params.d.ts.map +1 -1
- package/dist/flow/params.js +25 -5
- package/dist/flow/params.js.map +1 -1
- package/dist/flow/types.d.ts +22 -1
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/flow/types.js.map +1 -1
- package/dist/git-info.d.ts +17 -0
- package/dist/git-info.d.ts.map +1 -1
- package/dist/git-info.js +117 -1
- package/dist/git-info.js.map +1 -1
- package/dist/markdown.js +28 -8
- package/dist/markdown.js.map +1 -1
- package/dist/offscreen/agent-viewer.d.ts.map +1 -1
- package/dist/offscreen/agent-viewer.js +11 -3
- package/dist/offscreen/agent-viewer.js.map +1 -1
- package/dist/offscreen/artifact-pane.d.ts +8 -2
- package/dist/offscreen/artifact-pane.d.ts.map +1 -1
- package/dist/offscreen/artifact-pane.js +32 -3
- package/dist/offscreen/artifact-pane.js.map +1 -1
- package/dist/offscreen/controller.d.ts +3 -0
- package/dist/offscreen/controller.d.ts.map +1 -1
- package/dist/offscreen/controller.js +22 -3
- package/dist/offscreen/controller.js.map +1 -1
- package/dist/offscreen/panes.d.ts +1 -0
- package/dist/offscreen/panes.d.ts.map +1 -1
- package/dist/offscreen/resolve.d.ts.map +1 -1
- package/dist/offscreen/resolve.js +16 -0
- package/dist/offscreen/resolve.js.map +1 -1
- package/dist/offscreen/split-inquiry.d.ts +2 -0
- package/dist/offscreen/split-inquiry.d.ts.map +1 -1
- package/dist/offscreen/split-inquiry.js +9 -0
- package/dist/offscreen/split-inquiry.js.map +1 -1
- package/dist/orchestrator.d.ts +14 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +70 -0
- package/dist/orchestrator.js.map +1 -1
- package/dist/preview-panel.d.ts +7 -1
- package/dist/preview-panel.d.ts.map +1 -1
- package/dist/preview-panel.js +93 -32
- package/dist/preview-panel.js.map +1 -1
- package/dist/providers/claude/strategy.d.ts +4 -2
- package/dist/providers/claude/strategy.d.ts.map +1 -1
- package/dist/providers/claude/strategy.js +13 -6
- package/dist/providers/claude/strategy.js.map +1 -1
- package/dist/providers/codex/strategy.d.ts +7 -2
- package/dist/providers/codex/strategy.d.ts.map +1 -1
- package/dist/providers/codex/strategy.js +55 -12
- package/dist/providers/codex/strategy.js.map +1 -1
- package/dist/providers/copilot/strategy.d.ts +6 -2
- package/dist/providers/copilot/strategy.d.ts.map +1 -1
- package/dist/providers/copilot/strategy.js +64 -13
- package/dist/providers/copilot/strategy.js.map +1 -1
- package/dist/providers/fork.d.ts +1 -1
- package/dist/providers/fork.d.ts.map +1 -1
- package/dist/providers/option-catalog.d.ts +3 -0
- package/dist/providers/option-catalog.d.ts.map +1 -1
- package/dist/providers/option-catalog.js +17 -0
- package/dist/providers/option-catalog.js.map +1 -1
- package/dist/providers/types.d.ts +22 -1
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/simplify-scope-gate.d.ts +10 -0
- package/dist/simplify-scope-gate.d.ts.map +1 -0
- package/dist/simplify-scope-gate.js +60 -0
- package/dist/simplify-scope-gate.js.map +1 -0
- package/dist/startup-tui.d.ts +10 -1
- package/dist/startup-tui.d.ts.map +1 -1
- package/dist/startup-tui.js +131 -35
- package/dist/startup-tui.js.map +1 -1
- package/dist/user/candidate-pushback-handler.d.ts +13 -0
- package/dist/user/candidate-pushback-handler.d.ts.map +1 -0
- package/dist/user/candidate-pushback-handler.js +183 -0
- package/dist/user/candidate-pushback-handler.js.map +1 -0
- package/dist/user/curate-prompt.d.ts +29 -1
- package/dist/user/curate-prompt.d.ts.map +1 -1
- package/dist/user/curate-prompt.js +32 -5
- package/dist/user/curate-prompt.js.map +1 -1
- package/dist/user/handler.d.ts.map +1 -1
- package/dist/user/handler.js +23 -0
- package/dist/user/handler.js.map +1 -1
- package/dist/user/host-curate-prompt.d.ts +5 -5
- package/dist/user/host-curate-prompt.d.ts.map +1 -1
- package/dist/user/host-curate-prompt.js +204 -91
- package/dist/user/host-curate-prompt.js.map +1 -1
- package/dist/user/issue-inquiry.d.ts +2 -0
- package/dist/user/issue-inquiry.d.ts.map +1 -1
- package/dist/user/issue-inquiry.js +6 -0
- package/dist/user/issue-inquiry.js.map +1 -1
- package/dist/user/plan-pane.d.ts +3 -0
- package/dist/user/plan-pane.d.ts.map +1 -1
- package/dist/user/plan-pane.js +29 -16
- package/dist/user/plan-pane.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
1
2
|
import { join } from "node:path";
|
|
3
|
+
import { parseSimplificationPlan, renderSimplificationPlan } from "./plan.js";
|
|
2
4
|
import { readPlanFromContract, removeFileIfExists, } from "../../orchestrator.js";
|
|
3
5
|
import { bindAttemptFailureReporter, bindDriverRuntime, bindPtyBufferReporter, bindSessionReporter, flushDriverSidecar, } from "../runner.js";
|
|
4
|
-
import { bindStepLiveSidecar, cleanupStepLiveSidecar,
|
|
6
|
+
import { bindStepLiveSidecar, cleanupStepLiveSidecar, readLiveSidecar, } from "../session-resume.js";
|
|
5
7
|
function planFileForVersion(root, version) {
|
|
6
|
-
return join(root, `simplify-v${version}.
|
|
8
|
+
return join(root, `simplify-v${version}.json`);
|
|
7
9
|
}
|
|
8
10
|
export class SimplifierRoleHandler {
|
|
9
11
|
driver;
|
|
@@ -12,53 +14,169 @@ export class SimplifierRoleHandler {
|
|
|
12
14
|
this.driver = driver;
|
|
13
15
|
}
|
|
14
16
|
async execute(step, ctx, retry) {
|
|
17
|
+
if (this.planVersion === 0) {
|
|
18
|
+
const restoredVersion = ctx.artifacts.getMeta(step.writes.plan, "version");
|
|
19
|
+
if (restoredVersion != null && restoredVersion > 0)
|
|
20
|
+
this.planVersion = restoredVersion;
|
|
21
|
+
}
|
|
15
22
|
this.planVersion++;
|
|
16
23
|
const outputPlanFile = planFileForVersion(ctx.sessionDir, this.planVersion);
|
|
24
|
+
const previousPlanFile = ctx.artifacts.getFile(step.writes.plan);
|
|
25
|
+
const diffFile = step.reads.diff
|
|
26
|
+
? ctx.artifacts.getFile(step.reads.diff)
|
|
27
|
+
: undefined;
|
|
28
|
+
const guidance = step.reads.task
|
|
29
|
+
? ctx.artifacts.getText(step.reads.task)
|
|
30
|
+
: undefined;
|
|
17
31
|
const stepAny = step;
|
|
32
|
+
const baseScopeLabel = stepAny.simplifyScopeLabel ??
|
|
33
|
+
stepAny.simplifyScope ??
|
|
34
|
+
"selected scope";
|
|
35
|
+
const effectiveScopeLabel = diffFile
|
|
36
|
+
? baseScopeLabel
|
|
37
|
+
: (stepAny.simplifyScopeLabelNoDiff ?? baseScopeLabel);
|
|
38
|
+
const pushbackArtifact = step.reads.pushback
|
|
39
|
+
? ctx.artifacts.get(step.reads.pushback)
|
|
40
|
+
: undefined;
|
|
41
|
+
const changedDecisionCount = pushbackArtifact?.data
|
|
42
|
+
?.changedDecisionCount;
|
|
43
|
+
const usesPushback = typeof changedDecisionCount === "number" && changedDecisionCount > 0;
|
|
44
|
+
const verdictArtifact = step.reads.verdict
|
|
45
|
+
? ctx.artifacts.get(step.reads.verdict)
|
|
46
|
+
: undefined;
|
|
47
|
+
const feedbackFile = usesPushback
|
|
48
|
+
? pushbackArtifact?.file
|
|
49
|
+
: verdictArtifact?.file;
|
|
50
|
+
let mode;
|
|
51
|
+
if (usesPushback) {
|
|
52
|
+
mode = "pushback";
|
|
53
|
+
}
|
|
54
|
+
else if (feedbackFile && verdictArtifact?.meta?.source === "user") {
|
|
55
|
+
mode = "user-feedback";
|
|
56
|
+
}
|
|
57
|
+
else if (feedbackFile) {
|
|
58
|
+
mode = "reviewer-revision";
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
mode = "initial";
|
|
62
|
+
}
|
|
18
63
|
const sessionKey = stepAny.sessionShareKey ?? step.id;
|
|
19
64
|
const boundaryFired = stepAny.sessionBoundary?.(ctx) === true;
|
|
20
65
|
if (boundaryFired) {
|
|
21
66
|
ctx.sessionIds.delete(sessionKey);
|
|
22
67
|
}
|
|
23
|
-
const resumeSessionId = await resolveResumeSessionId(ctx, stepAny, this.driver, sessionKey, ctx.sessionIds.get(sessionKey), boundaryFired);
|
|
24
68
|
bindSessionReporter(this.driver, ctx.lastStepSessionFilePaths);
|
|
25
69
|
bindPtyBufferReporter(this.driver, ctx);
|
|
26
70
|
bindAttemptFailureReporter(this.driver, ctx);
|
|
27
71
|
bindDriverRuntime(this.driver, { output: ctx.output, terminalHost: ctx.terminalHost });
|
|
28
72
|
const sidecarPath = bindStepLiveSidecar(this.driver, ctx, sessionKey, stepAny.driver);
|
|
73
|
+
const restoredSessionFile = await this.maybeRestoreSessionId(stepAny, ctx, sessionKey, sidecarPath, boundaryFired);
|
|
74
|
+
let currentSessionId = ctx.sessionIds.get(sessionKey);
|
|
29
75
|
let result;
|
|
30
|
-
let
|
|
76
|
+
let parsedPlan;
|
|
31
77
|
try {
|
|
32
|
-
({ result,
|
|
33
|
-
|
|
34
|
-
await removeFileIfExists(outputPlanFile);
|
|
78
|
+
({ result, parsedPlan } = await retry("simplifier", async (attempt) => {
|
|
79
|
+
await removeFileIfExists(outputPlanFile);
|
|
35
80
|
const result = await this.driver.run({
|
|
36
81
|
outputPlanFile,
|
|
37
|
-
|
|
82
|
+
mode,
|
|
83
|
+
resumeSessionId: attempt === 1 ? currentSessionId : undefined,
|
|
84
|
+
resumeSessionFilePath: attempt === 1 && currentSessionId ? restoredSessionFile : undefined,
|
|
85
|
+
scopeLabel: effectiveScopeLabel,
|
|
86
|
+
subagentModel: stepAny.simplifySubagentModel,
|
|
87
|
+
diffFile,
|
|
88
|
+
guidance,
|
|
89
|
+
feedbackFile,
|
|
90
|
+
previousPlanFile,
|
|
38
91
|
});
|
|
39
92
|
const planText = await readPlanFromContract(outputPlanFile);
|
|
40
|
-
|
|
93
|
+
const parsedPlan = parseSimplificationPlan(planText);
|
|
94
|
+
return { result, parsedPlan };
|
|
41
95
|
}));
|
|
42
96
|
}
|
|
43
97
|
finally {
|
|
98
|
+
currentSessionId =
|
|
99
|
+
(await this.driver.resolveCurrentSessionId()) ?? currentSessionId;
|
|
44
100
|
await flushDriverSidecar(this.driver);
|
|
45
101
|
}
|
|
46
102
|
// Record session file for dump
|
|
47
103
|
if (result.sessionFilePath) {
|
|
48
104
|
ctx.lastStepSessionFilePaths?.push(result.sessionFilePath);
|
|
49
105
|
}
|
|
106
|
+
const renderedPlan = renderSimplificationPlan(parsedPlan).text;
|
|
50
107
|
// Store plan artifact
|
|
51
108
|
ctx.artifacts.set(step.writes.plan, {
|
|
52
109
|
file: outputPlanFile,
|
|
53
|
-
text:
|
|
110
|
+
text: renderedPlan,
|
|
111
|
+
data: parsedPlan,
|
|
54
112
|
meta: { version: this.planVersion },
|
|
55
113
|
});
|
|
56
114
|
// Track session for resume
|
|
57
|
-
|
|
58
|
-
|
|
115
|
+
const finalSessionId = result.sessionId ?? currentSessionId;
|
|
116
|
+
if (finalSessionId) {
|
|
117
|
+
ctx.sessionIds.set(sessionKey, finalSessionId);
|
|
59
118
|
}
|
|
60
119
|
await cleanupStepLiveSidecar(sidecarPath);
|
|
61
120
|
return { kind: "continue" };
|
|
62
121
|
}
|
|
122
|
+
async maybeRestoreSessionId(step, ctx, sessionKey, sidecarPath, boundaryFired) {
|
|
123
|
+
if (!step.restoreSessionIdsOnResume)
|
|
124
|
+
return undefined;
|
|
125
|
+
if (boundaryFired)
|
|
126
|
+
return undefined;
|
|
127
|
+
if (ctx.sessionIds.has(sessionKey))
|
|
128
|
+
return undefined;
|
|
129
|
+
if (sidecarPath) {
|
|
130
|
+
const sidecar = await readLiveSidecar(sidecarPath);
|
|
131
|
+
if (sidecar?.sessionKey === sessionKey) {
|
|
132
|
+
if (sidecar.driver !== step.driver) {
|
|
133
|
+
ctx.output?.warn("simplifier: prior session unavailable (driver changed), starting fresh");
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
const path = this.resolvePredictedSessionFile(sidecar.sessionId, sessionKey, ctx);
|
|
137
|
+
if (path)
|
|
138
|
+
return path;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (ctx.isResumeInFlightStep)
|
|
143
|
+
return undefined;
|
|
144
|
+
const priorId = this.findRestorableSessionIdFromSnapshots(step, ctx, sessionKey);
|
|
145
|
+
if (!priorId)
|
|
146
|
+
return undefined;
|
|
147
|
+
return this.resolvePredictedSessionFile(priorId, sessionKey, ctx);
|
|
148
|
+
}
|
|
149
|
+
resolvePredictedSessionFile(id, sessionKey, ctx) {
|
|
150
|
+
const path = this.driver.predictSessionFile?.(id);
|
|
151
|
+
if (!path) {
|
|
152
|
+
ctx.output?.warn("simplifier: provider does not support resume by id, starting fresh");
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
if (!existsSync(path)) {
|
|
156
|
+
ctx.output?.warn("simplifier: prior session file missing, starting fresh");
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
159
|
+
ctx.sessionIds.set(sessionKey, id);
|
|
160
|
+
return path;
|
|
161
|
+
}
|
|
162
|
+
findRestorableSessionIdFromSnapshots(step, ctx, sessionKey) {
|
|
163
|
+
if (!ctx.completedSnapshots)
|
|
164
|
+
return undefined;
|
|
165
|
+
const seqsDesc = [...ctx.completedSnapshots.keys()].sort((a, b) => b - a);
|
|
166
|
+
for (const seq of seqsDesc) {
|
|
167
|
+
const snap = ctx.completedSnapshots.get(seq);
|
|
168
|
+
if (snap.role !== "simplifier")
|
|
169
|
+
continue;
|
|
170
|
+
const priorId = snap.sessionIds?.[sessionKey];
|
|
171
|
+
if (!priorId)
|
|
172
|
+
continue;
|
|
173
|
+
if (snap.driver !== step.driver) {
|
|
174
|
+
ctx.output?.warn(`simplifier: prior session unavailable (driver changed ${snap.driver} -> ${step.driver}), starting fresh`);
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
return priorId;
|
|
178
|
+
}
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
63
181
|
}
|
|
64
182
|
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/agents/simplifiers/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAS/B,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/agents/simplifiers/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import type { SimplifierDriver } from "./types.js";
|
|
|
3
3
|
import type { DriverName } from "../../flow/types.js";
|
|
4
4
|
export { simplify } from "./dsl.js";
|
|
5
5
|
export { SimplifierRoleHandler } from "./handler.js";
|
|
6
|
+
export { changedPushbackDecisionCount, parseSimplificationPlan, extractSimplificationCandidates, extractRejectedCandidates, formatPushbackFeedback, hasDetails, renderSimplificationPlan, } from "./plan.js";
|
|
6
7
|
export type { SimplifierDriver, SimplifierPromptFn } from "./types.js";
|
|
7
8
|
export type SimplifierFactory = (workdir: string) => SimplifierDriver;
|
|
8
9
|
export declare const registerProvider: (name: DriverName, strategy: ProviderStrategy) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/simplifiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,gBAAgB,CAAC;AAmBtE,eAAO,MAAM,gBAAgB,EAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAC/G,eAAO,MAAQ,eAAe,sDAAE,gBAAgB,gBAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/simplifiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,+BAA+B,EAC/B,yBAAyB,EACzB,sBAAsB,EACtB,UAAU,EACV,wBAAwB,GACzB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,gBAAgB,CAAC;AAmBtE,eAAO,MAAM,gBAAgB,EAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAC/G,eAAO,MAAQ,eAAe,sDAAE,gBAAgB,gBAAQ,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { SimplifierRoleHandler } from "./handler.js";
|
|
|
3
3
|
import { createRoleModule } from "../registry.js";
|
|
4
4
|
export { simplify } from "./dsl.js";
|
|
5
5
|
export { SimplifierRoleHandler } from "./handler.js";
|
|
6
|
+
export { changedPushbackDecisionCount, parseSimplificationPlan, extractSimplificationCandidates, extractRejectedCandidates, formatPushbackFeedback, hasDetails, renderSimplificationPlan, } from "./plan.js";
|
|
6
7
|
const mod = createRoleModule({
|
|
7
8
|
roleName: "simplifier",
|
|
8
9
|
fromFactory: (factory, workdir) => factory(workdir),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/simplifiers/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/simplifiers/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,+BAA+B,EAC/B,yBAAyB,EACzB,sBAAsB,EACtB,UAAU,EACV,wBAAwB,GACzB,MAAM,WAAW,CAAC;AAKnB,MAAM,GAAG,GAAG,gBAAgB,CAAsC;IAChE,QAAQ,EAAE,YAAY;IACtB,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACnD,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACxC,OAAO,IAAI,iBAAiB,CAC1B,QAAQ,EACR,OAAO,EACP,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxC,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,qBAAqB,CAAC,MAAM,CAAC;CACzD,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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { SimplifierPlanItem } from "./types.js";
|
|
2
|
+
export interface RejectedSimplificationCandidate {
|
|
3
|
+
index: number;
|
|
4
|
+
description: string;
|
|
5
|
+
reason: string;
|
|
6
|
+
}
|
|
7
|
+
export type SimplificationMembership = "included" | "excluded";
|
|
8
|
+
export type PushbackDecisionKind = "include" | "exclude" | "revise";
|
|
9
|
+
export interface SimplificationCandidate {
|
|
10
|
+
index: number;
|
|
11
|
+
description: string;
|
|
12
|
+
reason: string;
|
|
13
|
+
details?: string;
|
|
14
|
+
originalMembership: SimplificationMembership;
|
|
15
|
+
defaultDecision: Exclude<PushbackDecisionKind, "revise">;
|
|
16
|
+
}
|
|
17
|
+
export interface PushbackDecision {
|
|
18
|
+
index: number;
|
|
19
|
+
description: string;
|
|
20
|
+
reason: string;
|
|
21
|
+
originalMembership: SimplificationMembership;
|
|
22
|
+
defaultDecision: Exclude<PushbackDecisionKind, "revise">;
|
|
23
|
+
decision: PushbackDecisionKind;
|
|
24
|
+
comment?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface PushbackData {
|
|
27
|
+
decisions: PushbackDecision[];
|
|
28
|
+
changedDecisionCount: number;
|
|
29
|
+
}
|
|
30
|
+
export interface RenderedSimplificationPlan {
|
|
31
|
+
text: string;
|
|
32
|
+
candidateRanges: Array<[number, number] | undefined>;
|
|
33
|
+
separators?: Array<{
|
|
34
|
+
line: number;
|
|
35
|
+
candidateIndex: number;
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
interface RenderSimplificationPlanOptions {
|
|
39
|
+
order?: readonly number[];
|
|
40
|
+
labels?: boolean;
|
|
41
|
+
separators?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export declare function parseSimplificationPlan(text: string): SimplifierPlanItem[];
|
|
44
|
+
export declare function simplificationPlanItemsFromData(data: unknown): SimplifierPlanItem[] | undefined;
|
|
45
|
+
export declare function extractRejectedCandidates(plan: readonly SimplifierPlanItem[]): RejectedSimplificationCandidate[];
|
|
46
|
+
export declare function extractSimplificationCandidates(plan: readonly SimplifierPlanItem[]): SimplificationCandidate[];
|
|
47
|
+
export declare function changedPushbackDecisionCount(decisions: readonly PushbackDecision[]): number;
|
|
48
|
+
export declare function renderSimplificationPlan(items: readonly SimplifierPlanItem[], options?: RenderSimplificationPlanOptions): RenderedSimplificationPlan;
|
|
49
|
+
export declare function formatPushbackFeedback(decisions: readonly PushbackDecision[]): string;
|
|
50
|
+
export declare function hasDetails(item: SimplifierPlanItem): boolean;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/agents/simplifiers/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,GAAG,UAAU,CAAC;AAC/D,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,wBAAwB,CAAC;IAC7C,eAAe,EAAE,OAAO,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,wBAAwB,CAAC;IAC7C,eAAe,EAAE,OAAO,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IACzD,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC;IACrD,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D;AAED,UAAU,+BAA+B;IACvC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAiB1E;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,EAAE,GAAG,SAAS,CAI/F;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,kBAAkB,EAAE,GAClC,+BAA+B,EAAE,CAWnC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,SAAS,kBAAkB,EAAE,GAClC,uBAAuB,EAAE,CAY3B;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,SAAS,gBAAgB,EAAE,GACrC,MAAM,CAER;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,kBAAkB,EAAE,EACpC,OAAO,GAAE,+BAAoC,GAC5C,0BAA0B,CAuD5B;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,gBAAgB,EAAE,GACrC,MAAM,CAsBR;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAE5D"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
export function parseSimplificationPlan(text) {
|
|
2
|
+
let parsed;
|
|
3
|
+
try {
|
|
4
|
+
parsed = JSON.parse(text.trim());
|
|
5
|
+
}
|
|
6
|
+
catch {
|
|
7
|
+
throw new Error("Simplifier produced invalid JSON; expected a JSON array.");
|
|
8
|
+
}
|
|
9
|
+
if (!Array.isArray(parsed)) {
|
|
10
|
+
throw new Error("Simplifier plan must be a JSON array.");
|
|
11
|
+
}
|
|
12
|
+
const result = [];
|
|
13
|
+
for (const [index, item] of parsed.entries()) {
|
|
14
|
+
const violation = validateSimplificationPlanItem(item);
|
|
15
|
+
if (violation)
|
|
16
|
+
throw new Error(`Simplifier plan item ${index + 1} ${violation}`);
|
|
17
|
+
result.push(item);
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
export function simplificationPlanItemsFromData(data) {
|
|
22
|
+
if (!Array.isArray(data) || data.length === 0)
|
|
23
|
+
return undefined;
|
|
24
|
+
if (!data.every(isSimplificationPlanItem))
|
|
25
|
+
return undefined;
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
export function extractRejectedCandidates(plan) {
|
|
29
|
+
const rejected = [];
|
|
30
|
+
for (const [index, item] of plan.entries()) {
|
|
31
|
+
if (hasDetails(item))
|
|
32
|
+
continue;
|
|
33
|
+
rejected.push({
|
|
34
|
+
index,
|
|
35
|
+
description: item.description,
|
|
36
|
+
reason: item.reason,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
return rejected;
|
|
40
|
+
}
|
|
41
|
+
export function extractSimplificationCandidates(plan) {
|
|
42
|
+
return plan.map((item, index) => {
|
|
43
|
+
const included = hasDetails(item);
|
|
44
|
+
return {
|
|
45
|
+
index,
|
|
46
|
+
description: item.description,
|
|
47
|
+
reason: item.reason,
|
|
48
|
+
...(item.details !== undefined ? { details: item.details } : {}),
|
|
49
|
+
originalMembership: included ? "included" : "excluded",
|
|
50
|
+
defaultDecision: included ? "include" : "exclude",
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export function changedPushbackDecisionCount(decisions) {
|
|
55
|
+
return decisions.filter((decision) => decision.decision !== decision.defaultDecision).length;
|
|
56
|
+
}
|
|
57
|
+
export function renderSimplificationPlan(items, options = {}) {
|
|
58
|
+
const lines = [];
|
|
59
|
+
const candidateRanges = [];
|
|
60
|
+
const separators = [];
|
|
61
|
+
const order = options.order ?? items.map((_, index) => index);
|
|
62
|
+
const labels = options.labels !== false;
|
|
63
|
+
const renderSeparators = options.separators === true;
|
|
64
|
+
for (const [orderedIndex, itemIndex] of order.entries()) {
|
|
65
|
+
const item = items[itemIndex];
|
|
66
|
+
if (!item)
|
|
67
|
+
continue;
|
|
68
|
+
if (orderedIndex > 0) {
|
|
69
|
+
lines.push("", "---", "");
|
|
70
|
+
}
|
|
71
|
+
const start = lines.length + 1;
|
|
72
|
+
const included = hasDetails(item);
|
|
73
|
+
lines.push(`## ${included ? "✨" : "🚫"} ${singleLine(item.description)}`, "");
|
|
74
|
+
if (labels) {
|
|
75
|
+
lines.push(`**Reason:** ${singleLine(item.reason)}`);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
if (renderSeparators) {
|
|
79
|
+
separators.push({ line: lines.length + 1, candidateIndex: itemIndex });
|
|
80
|
+
lines.push("\\-");
|
|
81
|
+
lines.push("");
|
|
82
|
+
}
|
|
83
|
+
lines.push(singleLine(item.reason));
|
|
84
|
+
}
|
|
85
|
+
if (included) {
|
|
86
|
+
if (labels) {
|
|
87
|
+
lines.push("", "**Details:**", "", ...splitMarkdownLines(item.details.trim()));
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
lines.push("");
|
|
91
|
+
if (renderSeparators) {
|
|
92
|
+
separators.push({ line: lines.length + 1, candidateIndex: itemIndex });
|
|
93
|
+
lines.push("\\-");
|
|
94
|
+
lines.push("");
|
|
95
|
+
}
|
|
96
|
+
lines.push(...splitMarkdownLines(item.details.trim()));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const end = lines.length;
|
|
100
|
+
candidateRanges[itemIndex] = [start, end];
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
text: lines.join("\n"),
|
|
104
|
+
candidateRanges,
|
|
105
|
+
...(renderSeparators ? { separators } : {}),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export function formatPushbackFeedback(decisions) {
|
|
109
|
+
if (decisions.length === 0)
|
|
110
|
+
return "";
|
|
111
|
+
return [
|
|
112
|
+
"Apply these per-candidate simplification decisions to the previous plan.",
|
|
113
|
+
"Include means the regenerated item must have concrete `details`.",
|
|
114
|
+
"Exclude means the regenerated item must omit `details`.",
|
|
115
|
+
"Revise means use the user note as guidance and make a fresh include/exclude decision.",
|
|
116
|
+
"Candidates whose decision matches their default should be preserved as-is.",
|
|
117
|
+
"",
|
|
118
|
+
...decisions.map((candidate, index) => {
|
|
119
|
+
const lines = [
|
|
120
|
+
`${index + 1}. Candidate index: ${candidate.index}`,
|
|
121
|
+
` Decision: ${decisionLabel(candidate.decision)}`,
|
|
122
|
+
` Default: ${decisionLabel(candidate.defaultDecision)}`,
|
|
123
|
+
` Original membership: ${candidate.originalMembership}`,
|
|
124
|
+
` Description: ${candidate.description}`,
|
|
125
|
+
];
|
|
126
|
+
lines.push(` Original reason: ${candidate.reason}`);
|
|
127
|
+
if (candidate.comment)
|
|
128
|
+
lines.push(` User note: ${candidate.comment}`);
|
|
129
|
+
return lines.join("\n");
|
|
130
|
+
}),
|
|
131
|
+
].join("\n");
|
|
132
|
+
}
|
|
133
|
+
export function hasDetails(item) {
|
|
134
|
+
return typeof item.details === "string" && item.details.trim().length > 0;
|
|
135
|
+
}
|
|
136
|
+
function decisionLabel(decision) {
|
|
137
|
+
switch (decision) {
|
|
138
|
+
case "include":
|
|
139
|
+
return "Include";
|
|
140
|
+
case "exclude":
|
|
141
|
+
return "Exclude";
|
|
142
|
+
case "revise":
|
|
143
|
+
return "Revise";
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function singleLine(value) {
|
|
147
|
+
return value.trim().replace(/\s+/g, " ");
|
|
148
|
+
}
|
|
149
|
+
function splitMarkdownLines(value) {
|
|
150
|
+
return value.split(/\r?\n/);
|
|
151
|
+
}
|
|
152
|
+
function isPlainObject(value) {
|
|
153
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
154
|
+
}
|
|
155
|
+
function isNonEmptyString(value) {
|
|
156
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
157
|
+
}
|
|
158
|
+
function isSimplificationPlanItem(value) {
|
|
159
|
+
return validateSimplificationPlanItem(value) === undefined;
|
|
160
|
+
}
|
|
161
|
+
function validateSimplificationPlanItem(value) {
|
|
162
|
+
if (!isPlainObject(value))
|
|
163
|
+
return "must be an object.";
|
|
164
|
+
const unknownKey = Object.keys(value).find((key) => key !== "description" && key !== "reason" && key !== "details");
|
|
165
|
+
if (unknownKey)
|
|
166
|
+
return `has unsupported field ${unknownKey}.`;
|
|
167
|
+
if (!isNonEmptyString(value.description))
|
|
168
|
+
return "must include non-empty description.";
|
|
169
|
+
if (!isNonEmptyString(value.reason))
|
|
170
|
+
return "must include non-empty reason.";
|
|
171
|
+
if ("details" in value && !isNonEmptyString(value.details)) {
|
|
172
|
+
return "has a non-string or empty details field.";
|
|
173
|
+
}
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/agents/simplifiers/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SimplifierPromptOptions } from "../../providers/types.js";
|
|
2
|
+
export interface BuildSimplifierPromptOptions extends SimplifierPromptOptions {
|
|
3
|
+
subagentType: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function buildSimplifierPrompt(opts: BuildSimplifierPromptOptions): string;
|
|
6
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/simplifiers/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,MAAM,WAAW,4BAA6B,SAAQ,uBAAuB;IAC3E,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,4BAA4B,GAAG,MAAM,CAKhF"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export function buildSimplifierPrompt(opts) {
|
|
2
|
+
if (opts.mode === "pushback")
|
|
3
|
+
return buildPushbackPrompt(opts);
|
|
4
|
+
if (opts.mode === "reviewer-revision")
|
|
5
|
+
return buildReviewerRevisionPrompt(opts);
|
|
6
|
+
if (opts.mode === "user-feedback")
|
|
7
|
+
return buildUserFeedbackPrompt(opts);
|
|
8
|
+
return buildInitialPrompt(opts);
|
|
9
|
+
}
|
|
10
|
+
function buildInitialPrompt(opts) {
|
|
11
|
+
const target = opts.diffFile ? "the diff file" : "the codebase";
|
|
12
|
+
const lines = [
|
|
13
|
+
"Review the selected changes for simplification opportunities. Do NOT make any",
|
|
14
|
+
"code changes — produce a plan only.",
|
|
15
|
+
"",
|
|
16
|
+
`Selected scope: ${opts.scopeLabel}`,
|
|
17
|
+
];
|
|
18
|
+
if (opts.diffFile) {
|
|
19
|
+
lines.push(`A diff of the selected changes has been written to: ${opts.diffFile}`);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
lines.push("Explore the codebase in the current directory directly.");
|
|
23
|
+
}
|
|
24
|
+
lines.push("", "Spawn exactly four subagents in parallel, each with a brand-new session,", `agent_type "${opts.subagentType}", and model "${opts.subagentModel ?? "configured subagent model"}", each reviewing`, `${target}:`, "1. reuse — Focus only on places where the code duplicates existing helpers,", " APIs, components, types, utilities, or local patterns.", "2. simplification — Focus only on unnecessary complexity, over-engineering,", " redundant branches, confusing control flow, or code that can be made clearer", " without changing behavior.", "3. efficiency — Focus only on performance issues, avoidable work, excessive", " I/O, poor algorithms, repeated computation, or unnecessary allocations.", "4. altitude — Step back and assess whether the approach is at the right", " abstraction level; look for misplaced responsibility, poor boundaries, or", " simpler product-level alternatives.");
|
|
25
|
+
if (opts.guidance?.trim()) {
|
|
26
|
+
lines.push("", `Additional focus from the user: ${opts.guidance.trim()}`);
|
|
27
|
+
}
|
|
28
|
+
lines.push("", "Wait for all four subagents to finish, then deduplicate and consolidate their", "findings.", "", "Produce a simplification plan with the points you will apply. Include an", "excluded candidate only when it was a plausible simplification rejected for", "risk, invasiveness, or scope. Omit false-positive, duplicate, and low-payoff", "exclusions.", "Do not include any candidate whose application would cause a regression:", "a correctness defect, build/test breakage, or performance downgrade. Such", "candidates must be omitted entirely, not surfaced as excluded items. The", "list must contain only behavior-preserving or behavior-improving simplifications.", "", `Write the plan as a JSON array to: ${opts.outputPlanFile}`, "", "Required JSON format:", "```json", '[{ "description": "...", "reason": "...", "details": "..." }]', "```", '- "description": concise summary of the simplification and where it applies.', '- "reason": concise justification for applying or excluding it.', '- "details": markdown; include ONLY for points you will apply — the concrete', " change, affected files, and implementation approach. Omit entirely for", " excluded candidates.", "", 'A point with "details" is in the plan; a point without "details" is a', "considered-but-excluded candidate. Only the plan — do not apply any changes.");
|
|
29
|
+
return lines.join("\n");
|
|
30
|
+
}
|
|
31
|
+
function buildPushbackPrompt(opts) {
|
|
32
|
+
const head = opts.resume
|
|
33
|
+
? [
|
|
34
|
+
`Apply the user's per-candidate decisions: ${opts.feedbackFile ?? "(missing feedback file)"} to the simplification plan you just produced.`,
|
|
35
|
+
"",
|
|
36
|
+
"Regenerate the simplification plan using the same JSON schema and output file:",
|
|
37
|
+
`${opts.outputPlanFile}`,
|
|
38
|
+
]
|
|
39
|
+
: [
|
|
40
|
+
`Read the previous simplification plan JSON array: ${opts.previousPlanFile ?? "(missing previous plan file)"}`,
|
|
41
|
+
`Read the user's per-candidate decisions: ${opts.feedbackFile ?? "(missing feedback file)"}`,
|
|
42
|
+
"",
|
|
43
|
+
"Regenerate the simplification plan using the same JSON schema and output file:",
|
|
44
|
+
`${opts.outputPlanFile}`,
|
|
45
|
+
];
|
|
46
|
+
return [
|
|
47
|
+
...head,
|
|
48
|
+
"",
|
|
49
|
+
...pushbackDecisionRules(),
|
|
50
|
+
"",
|
|
51
|
+
"Only the plan — do not apply any changes.",
|
|
52
|
+
].join("\n");
|
|
53
|
+
}
|
|
54
|
+
function buildReviewerRevisionPrompt(opts) {
|
|
55
|
+
return buildRevisionPrompt(opts, "reviewer's feedback");
|
|
56
|
+
}
|
|
57
|
+
function buildUserFeedbackPrompt(opts) {
|
|
58
|
+
return buildRevisionPrompt(opts, "user's plan-approval feedback");
|
|
59
|
+
}
|
|
60
|
+
function buildRevisionPrompt(opts, source) {
|
|
61
|
+
if (opts.resume) {
|
|
62
|
+
return [
|
|
63
|
+
`Revise the simplification plan you produced per the ${source}: ${opts.feedbackFile ?? "(missing feedback file)"}`,
|
|
64
|
+
"",
|
|
65
|
+
"Use the same JSON schema and output file:",
|
|
66
|
+
`${opts.outputPlanFile}`,
|
|
67
|
+
"",
|
|
68
|
+
"Only the plan — do not apply any changes.",
|
|
69
|
+
].join("\n");
|
|
70
|
+
}
|
|
71
|
+
return [
|
|
72
|
+
`Read the previous simplification plan JSON array: ${opts.previousPlanFile ?? "(missing previous plan file)"}`,
|
|
73
|
+
`Read the ${source}: ${opts.feedbackFile ?? "(missing feedback file)"}`,
|
|
74
|
+
"",
|
|
75
|
+
"Revise the simplification plan accordingly (same JSON schema and output file:",
|
|
76
|
+
`${opts.outputPlanFile}). Only the plan — do not apply any changes.`,
|
|
77
|
+
].join("\n");
|
|
78
|
+
}
|
|
79
|
+
function pushbackDecisionRules() {
|
|
80
|
+
return [
|
|
81
|
+
"Apply the decisions by candidate index:",
|
|
82
|
+
"- Include: ensure that candidate has a concrete `details` field.",
|
|
83
|
+
"- Exclude: ensure that candidate omits `details`.",
|
|
84
|
+
"- Revise: use the user note as guidance, then make a fresh include/exclude",
|
|
85
|
+
" decision by either adding concrete `details` or omitting `details`.",
|
|
86
|
+
"- Preserve candidates whose decision matches their default as-is unless a",
|
|
87
|
+
" changed candidate requires a minimal consistency update.",
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/agents/simplifiers/prompts.ts"],"names":[],"mappings":"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"}
|