poly-weaver 0.8.1 → 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 +2 -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 +44 -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 +21 -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 +21 -0
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +130 -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 +2 -1
- package/dist/agents/simplifiers/handler.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 +22 -1
- package/dist/dump/collector.js.map +1 -1
- package/dist/dump/service.d.ts.map +1 -1
- package/dist/dump/service.js +1 -0
- package/dist/dump/service.js.map +1 -1
- package/dist/dump/types.d.ts +38 -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 +31 -14
- 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 +24 -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 +5 -1
- package/dist/providers/base-completion.d.ts.map +1 -1
- package/dist/providers/base-completion.js +65 -5
- package/dist/providers/base-completion.js.map +1 -1
- package/dist/providers/claude/completion-plan-mode.d.ts +1 -1
- package/dist/providers/claude/completion-plan-mode.d.ts.map +1 -1
- package/dist/providers/claude/completion-plan-mode.js +2 -2
- 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/strategy.d.ts +2 -4
- package/dist/providers/claude/strategy.d.ts.map +1 -1
- package/dist/providers/claude/strategy.js +2 -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/strategy.d.ts +2 -4
- package/dist/providers/codex/strategy.d.ts.map +1 -1
- package/dist/providers/codex/strategy.js +2 -2
- 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/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 +6 -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/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
package/README.md
CHANGED
|
@@ -42,28 +42,7 @@ The default flow uses a **two-layered loop** structure:
|
|
|
42
42
|
Done
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
### "Why So Serious" workflow
|
|
48
|
-
|
|
49
|
-
The **why-so-serious** workflow (selectable via Shift+Tab in the TUI) extends the default flow with two additions:
|
|
50
|
-
|
|
51
|
-
1. **Conditional re-planning** — if the implementation reviewer finds more than 2 issues, a planner step runs before the next implementation attempt to draft a targeted fix plan. When issues are within threshold, the implementor revises normally.
|
|
52
|
-
2. **Simplification pass** — after the implementation loop is approved, a simplifier agent reviews the codebase and produces a simplification plan, which the implementor then applies.
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
Default impl loop Why-so-serious impl loop
|
|
56
|
-
──────────────── ────────────────────────
|
|
57
|
-
Implement → Review issues > 2 ? → Planner (fix plan)
|
|
58
|
-
↑ rejected │ Implement → Review
|
|
59
|
-
└────────────┘ ↑ rejected │
|
|
60
|
-
│ approved └────────────┘
|
|
61
|
-
▼ │ approved
|
|
62
|
-
Done ▼
|
|
63
|
-
Simplifier → Implement
|
|
64
|
-
▼
|
|
65
|
-
Done
|
|
66
|
-
```
|
|
45
|
+
The startup TUI renders a live ASCII flow diagram reflecting the selected workflow and parameters.
|
|
67
46
|
|
|
68
47
|
### Custom flows
|
|
69
48
|
|
|
@@ -142,48 +121,21 @@ poly-weaver
|
|
|
142
121
|
|
|
143
122
|
This opens an interactive TUI to configure the task, select providers for each role, and set options before starting the orchestration loop.
|
|
144
123
|
|
|
145
|
-
You can
|
|
124
|
+
You can seed TUI defaults from a JSON config file:
|
|
146
125
|
|
|
147
126
|
```bash
|
|
148
|
-
|
|
149
|
-
poly-weaver "Refactor the auth module to use JWT"
|
|
150
|
-
|
|
151
|
-
# Read task from a file
|
|
152
|
-
poly-weaver task.md
|
|
153
|
-
|
|
154
|
-
# Choose providers for each role
|
|
155
|
-
poly-weaver "Add unit tests" --planner claude --reviewer copilot --implementor claude
|
|
156
|
-
|
|
157
|
-
# Plan only (skip implementation)
|
|
158
|
-
poly-weaver "Design a caching layer" --plan-only
|
|
159
|
-
|
|
160
|
-
# Fully automated (no user checkpoints)
|
|
161
|
-
poly-weaver "Fix the login bug" --auto
|
|
162
|
-
|
|
163
|
-
# Opinionless mode — minimal prompts, agent decides the approach
|
|
164
|
-
poly-weaver "Refactor the auth module" --opinionless
|
|
127
|
+
poly-weaver --config ./poly-weaver.config.json
|
|
165
128
|
```
|
|
166
129
|
|
|
167
130
|
### CLI options
|
|
168
131
|
|
|
169
132
|
| Option | Description | Default |
|
|
170
133
|
|---|---|---|
|
|
171
|
-
| `[task]` | Task description or path to a `.md`/`.txt` file | _(interactive)_ |
|
|
172
|
-
| `--planner <cli>` | Provider for planning (`claude` \| `codex` \| `copilot`) | `claude` |
|
|
173
|
-
| `--reviewer <cli>` | Provider for reviewing (`claude` \| `codex` \| `copilot`) | `codex` |
|
|
174
|
-
| `--implementor <cli>` | Provider for implementation (`claude` \| `codex` \| `copilot`) | `claude` |
|
|
175
|
-
| `--simplifier <cli>` | Provider for simplification (`claude` \| `codex` \| `copilot`) | `claude` |
|
|
176
|
-
| `--max-iterations <n>` | Max plan-review cycles | `5` (range: 1–50) |
|
|
177
|
-
| `--max-impl-iterations <n>` | Max implementation-review cycles | `5` (range: 1–50) |
|
|
178
|
-
| `--auto` | Skip user review phases | `false` |
|
|
179
|
-
| `--plan-only` | Stop after plan approval, skip implementation | `false` |
|
|
180
|
-
| `--workdir <path>` | Working directory for agent CLIs | current directory |
|
|
181
|
-
| `--opinionless` | Use minimal prompts; let agents decide how to plan/review/implement | `false` |
|
|
182
|
-
| `--no-yolo` | Run agents without auto-approving permissions | `false` (agents run with permission-skipping) |
|
|
183
|
-
| `--workflow <name>` | Workflow template to use | `default` |
|
|
184
134
|
| `--config <path>` | Path to a JSON config file | _(none)_ |
|
|
135
|
+
| `-h, --help` | Show help | |
|
|
136
|
+
| `-V, --version` | Show version | |
|
|
185
137
|
|
|
186
|
-
Workflow is selected
|
|
138
|
+
Workflow is selected with **Shift+Tab** in the TUI. Built-in workflows: `default`. Custom flows are also available (see below).
|
|
187
139
|
|
|
188
140
|
### Subcommands
|
|
189
141
|
|
|
@@ -243,8 +195,7 @@ src/
|
|
|
243
195
|
│ ├── inspect.ts # Flow definition introspection utilities
|
|
244
196
|
│ ├── index.ts # Re-exports
|
|
245
197
|
│ ├── built-in/
|
|
246
|
-
│ │
|
|
247
|
-
│ │ └── why-so-serious.ts # Why-so-serious flow template (conditional replan + simplify)
|
|
198
|
+
│ │ └── default.ts # Default two-layered flow template
|
|
248
199
|
│ └── custom/
|
|
249
200
|
│ ├── load.ts # Custom flow loader (discovers ~/.poly-weaver/flows/*.mjs)
|
|
250
201
|
│ ├── index.ts # Re-exports
|
|
@@ -307,14 +258,6 @@ src/
|
|
|
307
258
|
└── types.ts # PTY-related types
|
|
308
259
|
```
|
|
309
260
|
|
|
310
|
-
### Opinionless mode
|
|
311
|
-
|
|
312
|
-
By default, poly-weaver prompts include prescriptive criteria for each role — evaluation rubrics for reviewers, structural requirements for planners, step-by-step instructions for implementors.
|
|
313
|
-
|
|
314
|
-
With `--opinionless`, prompts are stripped to the structural minimum: file path references and the verdict output schema. The agent decides how to approach its role. The verdict schema is also simplified — each issue only requires a `description`, with `category` and `severity` left to the agent's discretion.
|
|
315
|
-
|
|
316
|
-
This is useful when the AI agent has its own strong conventions, or when you want to compare agent behavior with and without prescriptive guidance.
|
|
317
|
-
|
|
318
261
|
### Troubleshooting dump
|
|
319
262
|
|
|
320
263
|
Press **Ctrl+]** at any time during an interactive session to capture a full snapshot of the current session state. The dump is written to:
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type AgentExitFailureMode = "failed-to-launch" | "exited-at-startup" | "crashed-mid-conversation";
|
|
2
|
+
export declare class AgentExitError extends Error {
|
|
3
|
+
readonly code: "AGENT_EXIT";
|
|
4
|
+
readonly failureMode: AgentExitFailureMode;
|
|
5
|
+
readonly exitCode: number | null;
|
|
6
|
+
readonly signal?: string;
|
|
7
|
+
readonly smokingGunLine?: string;
|
|
8
|
+
constructor(opts: {
|
|
9
|
+
failureMode: AgentExitFailureMode;
|
|
10
|
+
exitCode: number | null;
|
|
11
|
+
signal?: string;
|
|
12
|
+
smokingGunLine?: string;
|
|
13
|
+
message?: string;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export declare function classifyAgentFailure(state: {
|
|
17
|
+
spawnFailed: boolean;
|
|
18
|
+
activationObserved: boolean;
|
|
19
|
+
}): AgentExitFailureMode;
|
|
20
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/agents/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAC5B,kBAAkB,GAClB,mBAAmB,GACnB,0BAA0B,CAAC;AAE/B,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IACtC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;gBAErB,IAAI,EAAE;QAChB,WAAW,EAAE,oBAAoB,CAAC;QAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;CAaF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,oBAAoB,CAIvB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export class AgentExitError extends Error {
|
|
2
|
+
code = "AGENT_EXIT";
|
|
3
|
+
failureMode;
|
|
4
|
+
exitCode;
|
|
5
|
+
signal;
|
|
6
|
+
smokingGunLine;
|
|
7
|
+
constructor(opts) {
|
|
8
|
+
const exitPart = opts.exitCode == null ? "exit=null" : `exit=${opts.exitCode}`;
|
|
9
|
+
const signalPart = opts.signal ? `, signal=${opts.signal}` : "";
|
|
10
|
+
super(opts.message ??
|
|
11
|
+
`Agent process failed [${opts.failureMode}, ${exitPart}${signalPart}]`);
|
|
12
|
+
this.name = "AgentExitError";
|
|
13
|
+
this.failureMode = opts.failureMode;
|
|
14
|
+
this.exitCode = opts.exitCode;
|
|
15
|
+
this.signal = opts.signal;
|
|
16
|
+
this.smokingGunLine = opts.smokingGunLine;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function classifyAgentFailure(state) {
|
|
20
|
+
if (state.spawnFailed)
|
|
21
|
+
return "failed-to-launch";
|
|
22
|
+
if (state.activationObserved)
|
|
23
|
+
return "crashed-mid-conversation";
|
|
24
|
+
return "exited-at-startup";
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/agents/errors.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,IAAI,GAAG,YAAqB,CAAC;IAC7B,WAAW,CAAuB;IAClC,QAAQ,CAAgB;IACxB,MAAM,CAAU;IAChB,cAAc,CAAU;IAEjC,YAAY,IAMX;QACC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,KAAK,CACH,IAAI,CAAC,OAAO;YACV,yBAAyB,IAAI,CAAC,WAAW,KAAK,QAAQ,GAAG,UAAU,GAAG,CACzE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAAC,KAGpC;IACC,IAAI,KAAK,CAAC,WAAW;QAAE,OAAO,kBAAkB,CAAC;IACjD,IAAI,KAAK,CAAC,kBAAkB;QAAE,OAAO,0BAA0B,CAAC;IAChE,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/agents/implementors/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAG7B,qBAAa,sBAAuB,YAAW,WAAW;IAI5C,OAAO,CAAC,MAAM;IAH1B,2EAA2E;IAC3E,OAAO,CAAC,cAAc,CAA+C;gBAEjD,MAAM,EAAE,iBAAiB;IAEvC,OAAO,CACX,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/agents/implementors/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAG7B,qBAAa,sBAAuB,YAAW,WAAW;IAI5C,OAAO,CAAC,MAAM;IAH1B,2EAA2E;IAC3E,OAAO,CAAC,cAAc,CAA+C;gBAEjD,MAAM,EAAE,iBAAiB;IAEvC,OAAO,CACX,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC;CAkEvB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { bindSessionReporter, bindDriverRuntime, bindPtyBufferReporter } from "../runner.js";
|
|
1
|
+
import { bindSessionReporter, bindDriverRuntime, bindPtyBufferReporter, bindAttemptFailureReporter } from "../runner.js";
|
|
2
2
|
export class ImplementorRoleHandler {
|
|
3
3
|
driver;
|
|
4
4
|
/** Tracks the last execution mode per step ID for session invalidation. */
|
|
@@ -43,6 +43,7 @@ export class ImplementorRoleHandler {
|
|
|
43
43
|
}
|
|
44
44
|
bindSessionReporter(this.driver, ctx.lastStepSessionFilePaths);
|
|
45
45
|
bindPtyBufferReporter(this.driver, ctx);
|
|
46
|
+
bindAttemptFailureReporter(this.driver, ctx);
|
|
46
47
|
bindDriverRuntime(this.driver, { output: ctx.output, terminalHost: ctx.terminalHost });
|
|
47
48
|
const implResult = await retry("implementor", async (attempt) => {
|
|
48
49
|
return this.driver.run(planFile, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/agents/implementors/handler.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/agents/implementors/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/implementors/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/implementors/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,iBAAiB,CAAC;AAUxG,eAAO,MAAM,gBAAgB,EAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAC/G,eAAO,MAAQ,eAAe,uDAAE,gBAAgB,gBAAQ,CAAC"}
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import { ImplementorAdapter } from "./adapter.js";
|
|
2
2
|
import { ImplementorRoleHandler } from "./handler.js";
|
|
3
3
|
import { createRoleModule } from "../registry.js";
|
|
4
|
-
import {
|
|
4
|
+
import { defaultImplementorPrompts } from "./prompts.js";
|
|
5
5
|
export { implement } from "./dsl.js";
|
|
6
6
|
export { ImplementorRoleHandler } from "./handler.js";
|
|
7
7
|
const mod = createRoleModule({
|
|
8
8
|
roleName: "implementor",
|
|
9
|
-
fromFactory: (factory, workdir
|
|
10
|
-
|
|
11
|
-
return factory(workdir, prompts);
|
|
12
|
-
},
|
|
13
|
-
fromProvider: (strategy, workdir, opts) => {
|
|
14
|
-
const prompts = opts?.opinionless ? minimalImplementorPrompts : undefined;
|
|
15
|
-
return new ImplementorAdapter(strategy, workdir, prompts, opts?.yolo);
|
|
16
|
-
},
|
|
9
|
+
fromFactory: (factory, workdir) => factory(workdir, defaultImplementorPrompts),
|
|
10
|
+
fromProvider: (strategy, workdir, opts) => new ImplementorAdapter(strategy, workdir, defaultImplementorPrompts, opts?.yolo),
|
|
17
11
|
toHandler: (driver) => new ImplementorRoleHandler(driver),
|
|
18
12
|
});
|
|
19
13
|
export const registerProvider = mod.registerProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/implementors/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/implementors/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAKtD,MAAM,GAAG,GAAG,gBAAgB,CAAwC;IAClE,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC9E,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CACxC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,IAAI,CAAC;IAClF,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,sBAAsB,CAAC,MAAM,CAAC;CAC1D,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"}
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import type { ImplementorPromptSet } from "./types.js";
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function
|
|
6
|
-
export declare const buildImplementorPrompt: typeof buildMinimalImplementorPrompt;
|
|
7
|
-
export declare const buildImplementorRevisionPrompt: typeof buildMinimalImplementorRevisionPrompt;
|
|
8
|
-
export declare const buildImplementorResumeRevisionPrompt: typeof buildMinimalImplementorResumeRevisionPrompt;
|
|
9
|
-
export declare const buildImplementorChangePlanPrompt: typeof buildMinimalImplementorChangePlanPrompt;
|
|
10
|
-
export declare const minimalImplementorPrompts: ImplementorPromptSet;
|
|
2
|
+
export declare function buildImplementorPrompt(planFile: string): string;
|
|
3
|
+
export declare function buildImplementorRevisionPrompt(planFile: string, feedbackFile: string): string;
|
|
4
|
+
export declare function buildImplementorResumeRevisionPrompt(feedbackFile: string): string;
|
|
5
|
+
export declare function buildImplementorChangePlanPrompt(planFile: string): string;
|
|
11
6
|
export declare const defaultImplementorPrompts: ImplementorPromptSet;
|
|
12
7
|
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/implementors/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIvD,wBAAgB,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/implementors/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIvD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,MAAM,CAOR;AAED,wBAAgB,oCAAoC,CAClD,YAAY,EAAE,MAAM,GACnB,MAAM,CAMR;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,GACf,MAAM,CAMR;AAID,eAAO,MAAM,yBAAyB,EAAE,oBAKvC,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
// ──
|
|
2
|
-
export function
|
|
1
|
+
// ── Implementor prompts ──
|
|
2
|
+
export function buildImplementorPrompt(planFile) {
|
|
3
3
|
return [
|
|
4
4
|
`Read the approved implementation plan: ${planFile}`,
|
|
5
5
|
"",
|
|
6
6
|
"Implement the plan by making code changes in the working directory.",
|
|
7
7
|
].join("\n");
|
|
8
8
|
}
|
|
9
|
-
export function
|
|
9
|
+
export function buildImplementorRevisionPrompt(planFile, feedbackFile) {
|
|
10
10
|
return [
|
|
11
11
|
`Read the approved implementation plan: ${planFile}`,
|
|
12
12
|
`Read the review feedback: ${feedbackFile}`,
|
|
@@ -14,31 +14,25 @@ export function buildMinimalImplementorRevisionPrompt(planFile, feedbackFile) {
|
|
|
14
14
|
"Revise your implementation to address the feedback.",
|
|
15
15
|
].join("\n");
|
|
16
16
|
}
|
|
17
|
-
export function
|
|
17
|
+
export function buildImplementorResumeRevisionPrompt(feedbackFile) {
|
|
18
18
|
return [
|
|
19
19
|
`Read the new review feedback: ${feedbackFile}`,
|
|
20
20
|
"",
|
|
21
21
|
"Revise your implementation accordingly.",
|
|
22
22
|
].join("\n");
|
|
23
23
|
}
|
|
24
|
-
export function
|
|
24
|
+
export function buildImplementorChangePlanPrompt(planFile) {
|
|
25
25
|
return [
|
|
26
26
|
`Read the change plan: ${planFile}`,
|
|
27
27
|
"",
|
|
28
28
|
"Apply the changes to the working directory.",
|
|
29
29
|
].join("\n");
|
|
30
30
|
}
|
|
31
|
-
// ─── Opinion-mode implementor prompts (aliased to minimal for now) ──────
|
|
32
|
-
export const buildImplementorPrompt = buildMinimalImplementorPrompt;
|
|
33
|
-
export const buildImplementorRevisionPrompt = buildMinimalImplementorRevisionPrompt;
|
|
34
|
-
export const buildImplementorResumeRevisionPrompt = buildMinimalImplementorResumeRevisionPrompt;
|
|
35
|
-
export const buildImplementorChangePlanPrompt = buildMinimalImplementorChangePlanPrompt;
|
|
36
31
|
// ─── Prompt set exports ──────────────────────────────────────────────────
|
|
37
|
-
export const
|
|
38
|
-
initial:
|
|
39
|
-
revision:
|
|
40
|
-
resumeRevision:
|
|
41
|
-
changePlan:
|
|
32
|
+
export const defaultImplementorPrompts = {
|
|
33
|
+
initial: buildImplementorPrompt,
|
|
34
|
+
revision: buildImplementorRevisionPrompt,
|
|
35
|
+
resumeRevision: buildImplementorResumeRevisionPrompt,
|
|
36
|
+
changePlan: buildImplementorChangePlanPrompt,
|
|
42
37
|
};
|
|
43
|
-
export const defaultImplementorPrompts = minimalImplementorPrompts;
|
|
44
38
|
//# sourceMappingURL=prompts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/agents/implementors/prompts.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/agents/implementors/prompts.ts"],"names":[],"mappings":"AAEA,4BAA4B;AAE5B,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,OAAO;QACL,0CAA0C,QAAQ,EAAE;QACpD,EAAE;QACF,qEAAqE;KACtE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,QAAgB,EAChB,YAAoB;IAEpB,OAAO;QACL,0CAA0C,QAAQ,EAAE;QACpD,6BAA6B,YAAY,EAAE;QAC3C,EAAE;QACF,qDAAqD;KACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,YAAoB;IAEpB,OAAO;QACL,iCAAiC,YAAY,EAAE;QAC/C,EAAE;QACF,yCAAyC;KAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,QAAgB;IAEhB,OAAO;QACL,yBAAyB,QAAQ,EAAE;QACnC,EAAE;QACF,6CAA6C;KAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,4EAA4E;AAE5E,MAAM,CAAC,MAAM,yBAAyB,GAAyB;IAC7D,OAAO,EAAE,sBAAsB;IAC/B,QAAQ,EAAE,8BAA8B;IACxC,cAAc,EAAE,oCAAoC;IACpD,UAAU,EAAE,gCAAgC;CAC7C,CAAC"}
|
package/dist/agents/index.d.ts
CHANGED
|
@@ -2,10 +2,12 @@ import "./planners/index.js";
|
|
|
2
2
|
import "./reviewers/index.js";
|
|
3
3
|
import "./implementors/index.js";
|
|
4
4
|
import "./simplifiers/index.js";
|
|
5
|
+
import "./interviewers/index.js";
|
|
5
6
|
export { plan } from "./planners/index.js";
|
|
6
7
|
export { review } from "./reviewers/index.js";
|
|
7
8
|
export { implement } from "./implementors/index.js";
|
|
8
9
|
export { simplify } from "./simplifiers/index.js";
|
|
10
|
+
export { interviewer } from "./interviewers/index.js";
|
|
9
11
|
export { createHandler, availableDriversForRole } from "./registry.js";
|
|
10
12
|
export type { HandlerOpts } from "./registry.js";
|
|
11
13
|
export declare function registerBuiltinProviders(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,wBAAwB,CAAC;AAChC,OAAO,yBAAyB,CAAC;AAUjC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAgB,wBAAwB,IAAI,IAAI,CAQ/C"}
|
package/dist/agents/index.js
CHANGED
|
@@ -3,16 +3,19 @@ import "./planners/index.js";
|
|
|
3
3
|
import "./reviewers/index.js";
|
|
4
4
|
import "./implementors/index.js";
|
|
5
5
|
import "./simplifiers/index.js";
|
|
6
|
+
import "./interviewers/index.js";
|
|
6
7
|
import { builtinStrategies } from "../providers/registry.js";
|
|
7
8
|
import * as planners from "./planners/index.js";
|
|
8
9
|
import * as reviewers from "./reviewers/index.js";
|
|
9
10
|
import * as implementors from "./implementors/index.js";
|
|
10
11
|
import * as simplifiers from "./simplifiers/index.js";
|
|
12
|
+
import * as interviewers from "./interviewers/index.js";
|
|
11
13
|
// Re-export DSL helpers and registry
|
|
12
14
|
export { plan } from "./planners/index.js";
|
|
13
15
|
export { review } from "./reviewers/index.js";
|
|
14
16
|
export { implement } from "./implementors/index.js";
|
|
15
17
|
export { simplify } from "./simplifiers/index.js";
|
|
18
|
+
export { interviewer } from "./interviewers/index.js";
|
|
16
19
|
export { createHandler, availableDriversForRole } from "./registry.js";
|
|
17
20
|
export function registerBuiltinProviders() {
|
|
18
21
|
for (const [name, strategy] of builtinStrategies()) {
|
|
@@ -20,6 +23,7 @@ export function registerBuiltinProviders() {
|
|
|
20
23
|
reviewers.registerProvider(name, strategy);
|
|
21
24
|
implementors.registerProvider(name, strategy);
|
|
22
25
|
simplifiers.registerProvider(name, strategy);
|
|
26
|
+
interviewers.registerProvider(name, strategy);
|
|
23
27
|
}
|
|
24
28
|
}
|
|
25
29
|
//# sourceMappingURL=index.js.map
|
package/dist/agents/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,qBAAqB,CAAC;AAC7B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,qBAAqB,CAAC;AAC7B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,wBAAwB,CAAC;AAChC,OAAO,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AAExD,qCAAqC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAGvE,MAAM,UAAU,wBAAwB;IACtC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,iBAAiB,EAAE,EAAE,CAAC;QACnD,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3C,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9C,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ProviderStrategy } from "../../providers/types.js";
|
|
2
|
+
import { BaseAdapter } from "../runner.js";
|
|
3
|
+
import type { InterviewerDriver, InterviewerLiveSidecarMeta, InterviewerPromptSet, InterviewerRunOpts, InterviewResult } from "./types.js";
|
|
4
|
+
export declare class InterviewerAdapter extends BaseAdapter implements InterviewerDriver {
|
|
5
|
+
private readonly prompts;
|
|
6
|
+
private pendingSidecarWrite;
|
|
7
|
+
constructor(strategy: ProviderStrategy, workdir: string, prompts?: InterviewerPromptSet, yolo?: boolean);
|
|
8
|
+
run(opts: InterviewerRunOpts): Promise<InterviewResult>;
|
|
9
|
+
resolveCurrentSessionId(): Promise<string | undefined>;
|
|
10
|
+
predictSessionFile(sessionId: string): string | undefined;
|
|
11
|
+
setLiveSidecar(sidecarPath: string, meta: InterviewerLiveSidecarMeta): void;
|
|
12
|
+
flushPendingSidecar(): Promise<void>;
|
|
13
|
+
private writeSidecar;
|
|
14
|
+
private buildPrompt;
|
|
15
|
+
private buildFreshFallbackPrompt;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/agents/interviewers/adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EACV,iBAAiB,EACjB,0BAA0B,EAE1B,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,qBAAa,kBAAmB,SAAQ,WAAY,YAAW,iBAAiB;IAM5E,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,mBAAmB,CAA4B;gBAGrD,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,EACE,OAAO,GAAE,oBAAgD,EAC1E,IAAI,CAAC,EAAE,OAAO;IAKV,GAAG,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;IA0BvD,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAU5D,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIzD,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,GAAG,IAAI;IAYrE,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;YAS5B,YAAY;IAsB1B,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,wBAAwB;CAWjC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { writeFile } from "node:fs/promises";
|
|
2
|
+
import { BaseAdapter } from "../runner.js";
|
|
3
|
+
import { defaultInterviewerPrompts } from "./prompts.js";
|
|
4
|
+
export class InterviewerAdapter extends BaseAdapter {
|
|
5
|
+
prompts;
|
|
6
|
+
pendingSidecarWrite;
|
|
7
|
+
constructor(strategy, workdir, prompts = defaultInterviewerPrompts, yolo) {
|
|
8
|
+
super(strategy, workdir, yolo);
|
|
9
|
+
this.prompts = prompts;
|
|
10
|
+
}
|
|
11
|
+
async run(opts) {
|
|
12
|
+
const prompt = this.buildPrompt(opts.mode, opts);
|
|
13
|
+
const freshFallbackPrompt = opts.resumeSessionId
|
|
14
|
+
? this.buildFreshFallbackPrompt(opts)
|
|
15
|
+
: undefined;
|
|
16
|
+
const result = await this.runAgent({
|
|
17
|
+
prompt,
|
|
18
|
+
workdir: this.workdir,
|
|
19
|
+
resumeSessionId: opts.resumeSessionId,
|
|
20
|
+
// Prefer the handler-supplied path (set when the handler resolved
|
|
21
|
+
// resumeSessionId from a sidecar/snapshot in a fresh process — at
|
|
22
|
+
// that point this.sessionFilePath is undefined).
|
|
23
|
+
sessionFilePath: opts.resumeSessionFilePath ?? this.sessionFilePath,
|
|
24
|
+
freshFallbackPrompt,
|
|
25
|
+
completionMarkerFile: opts.markerFile,
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
sessionId: result.sessionId,
|
|
29
|
+
sessionFilePath: this.sessionFilePath,
|
|
30
|
+
rawText: result.responseText,
|
|
31
|
+
agentUsed: this.name,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async resolveCurrentSessionId() {
|
|
35
|
+
if (this.sessionId)
|
|
36
|
+
return this.sessionId;
|
|
37
|
+
if (!this.sessionFilePath)
|
|
38
|
+
return undefined;
|
|
39
|
+
try {
|
|
40
|
+
return await this.strategy.session.extractSessionId(this.sessionFilePath);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
predictSessionFile(sessionId) {
|
|
47
|
+
return this.strategy.session.predictSessionFile?.(this.workdir, sessionId);
|
|
48
|
+
}
|
|
49
|
+
setLiveSidecar(sidecarPath, meta) {
|
|
50
|
+
const previous = this.sessionFileCallback;
|
|
51
|
+
this.sessionFileCallback = (path) => {
|
|
52
|
+
previous?.(path);
|
|
53
|
+
const prior = this.pendingSidecarWrite ?? Promise.resolve();
|
|
54
|
+
this.pendingSidecarWrite = prior.then(() => this.writeSidecar(sidecarPath, meta, path));
|
|
55
|
+
void this.pendingSidecarWrite.catch(() => { });
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async flushPendingSidecar() {
|
|
59
|
+
if (!this.pendingSidecarWrite)
|
|
60
|
+
return;
|
|
61
|
+
try {
|
|
62
|
+
await this.pendingSidecarWrite;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
/* best-effort */
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async writeSidecar(sidecarPath, meta, sessionFilePath) {
|
|
69
|
+
try {
|
|
70
|
+
const sessionId = await this.strategy.session.extractSessionId(sessionFilePath);
|
|
71
|
+
await writeFile(sidecarPath, JSON.stringify({
|
|
72
|
+
sessionId,
|
|
73
|
+
driver: meta.driver,
|
|
74
|
+
sessionKey: meta.sessionKey,
|
|
75
|
+
lastUpdated: new Date().toISOString(),
|
|
76
|
+
}), "utf8");
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
/* best-effort */
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
buildPrompt(mode, opts) {
|
|
83
|
+
switch (mode) {
|
|
84
|
+
case "initial":
|
|
85
|
+
return this.prompts.initial(opts.taskFile, opts.specFile, opts.markerFile);
|
|
86
|
+
case "continue":
|
|
87
|
+
return this.prompts.continueInterview(opts.specFile, opts.markerFile);
|
|
88
|
+
case "retry-missing-spec":
|
|
89
|
+
return this.prompts.retryMissingSpec(opts.specFile, opts.markerFile);
|
|
90
|
+
case "revise":
|
|
91
|
+
if (!opts.feedbackFile) {
|
|
92
|
+
throw new Error("InterviewerAdapter: revise mode requires feedbackFile");
|
|
93
|
+
}
|
|
94
|
+
return this.prompts.revise(opts.feedbackFile, opts.specFile, opts.markerFile);
|
|
95
|
+
case "rehydrate":
|
|
96
|
+
return this.prompts.rehydrate(opts.taskFile, opts.specFile, opts.markerFile, opts.feedbackFile);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Fresh-fallback is intentionally mode-agnostic: it branches on
|
|
100
|
+
// `feedbackFile` only. The runner replays this prompt when the resumed
|
|
101
|
+
// session cannot be reattached — the new fresh provider conversation has
|
|
102
|
+
// no history of the original briefing, so it must receive a self-contained
|
|
103
|
+
// `initial` or `rehydrate` regardless of which mode the handler chose.
|
|
104
|
+
buildFreshFallbackPrompt(opts) {
|
|
105
|
+
if (opts.feedbackFile) {
|
|
106
|
+
return this.prompts.rehydrate(opts.taskFile, opts.specFile, opts.markerFile, opts.feedbackFile);
|
|
107
|
+
}
|
|
108
|
+
return this.prompts.initial(opts.taskFile, opts.specFile, opts.markerFile);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/agents/interviewers/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type WhenCondition, type PhaseLabelSpec } from "../../flow/dsl.js";
|
|
2
|
+
import type { AgentStep } from "../../flow/types.js";
|
|
3
|
+
export declare function interviewer(opts: {
|
|
4
|
+
driver: string;
|
|
5
|
+
reads: Record<string, string>;
|
|
6
|
+
writes: Record<string, string>;
|
|
7
|
+
id?: string;
|
|
8
|
+
sessionShareKey?: string;
|
|
9
|
+
when?: WhenCondition;
|
|
10
|
+
whenLabel?: string;
|
|
11
|
+
phaseLabel?: PhaseLabelSpec;
|
|
12
|
+
}): AgentStep;
|
|
13
|
+
//# sourceMappingURL=dsl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../../../src/agents/interviewers/dsl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,GAAG,SAAS,CAeZ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { agentStep } from "../../flow/dsl.js";
|
|
2
|
+
export function interviewer(opts) {
|
|
3
|
+
return agentStep("interviewer", {
|
|
4
|
+
feedbackToTask: false,
|
|
5
|
+
idPrefix: "interview",
|
|
6
|
+
phaseLabel: "🎤 Interviewing...",
|
|
7
|
+
}, {
|
|
8
|
+
...opts,
|
|
9
|
+
sessionShareKey: opts.sessionShareKey ?? "interviewer",
|
|
10
|
+
reuseSessionOnRetry: true,
|
|
11
|
+
restoreSessionIdsOnResume: true,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=dsl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsl.js","sourceRoot":"","sources":["../../../src/agents/interviewers/dsl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA2C,MAAM,mBAAmB,CAAC;AAGvF,MAAM,UAAU,WAAW,CAAC,IAS3B;IACC,OAAO,SAAS,CACd,aAAa,EACb;QACE,cAAc,EAAE,KAAK;QACrB,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,oBAAoB;KACjC,EACD;QACE,GAAG,IAAI;QACP,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,aAAa;QACtD,mBAAmB,EAAE,IAAI;QACzB,yBAAyB,EAAE,IAAI;KAChC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BaseStep, RetryFn, RoleHandler, StepContext, StepSignal } from "../../flow/types.js";
|
|
2
|
+
import type { InterviewerDriver } from "./types.js";
|
|
3
|
+
/** Thrown by the validation step inside the retry closure — retryable. */
|
|
4
|
+
export declare class InterviewerValidationError extends Error {
|
|
5
|
+
constructor(message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare class InterviewerRoleHandler implements RoleHandler {
|
|
8
|
+
private driver;
|
|
9
|
+
constructor(driver: InterviewerDriver);
|
|
10
|
+
execute(step: BaseStep, ctx: StepContext, retry: RetryFn): Promise<StepSignal>;
|
|
11
|
+
/**
|
|
12
|
+
* If a prior interviewer session exists (sidecar > snapshot) and its
|
|
13
|
+
* on-disk file is still present, set `ctx.sessionIds[sessionKey]` and
|
|
14
|
+
* return the validated session file path. Returning the path lets the
|
|
15
|
+
* caller hand it to driver.run() so the runner's resume fast path
|
|
16
|
+
* skips session-file discovery.
|
|
17
|
+
*/
|
|
18
|
+
private maybeRestoreSessionId;
|
|
19
|
+
private findRestorableSessionIdFromSnapshots;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/agents/interviewers/handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,QAAQ,EACR,OAAO,EACP,WAAW,EACX,WAAW,EACX,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAEpB,0EAA0E;AAC1E,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,OAAO,EAAE,MAAM;CAI5B;AAoCD,qBAAa,sBAAuB,YAAW,WAAW;IAC5C,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAEvC,OAAO,CACX,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC;IAwHtB;;;;;;OAMG;YACW,qBAAqB;IAuDnC,OAAO,CAAC,oCAAoC;CAsB7C"}
|