@mobrienv/autoloop 0.2.1 → 0.4.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/README.md +100 -29
- package/dist/agent-map.js.map +1 -1
- package/dist/backend/acp-client.js +6 -1
- package/dist/backend/acp-client.js.map +1 -1
- package/dist/backend/kiro-bridge.d.ts +2 -0
- package/dist/backend/kiro-bridge.js +38 -4
- package/dist/backend/kiro-bridge.js.map +1 -1
- package/dist/backend/kiro-worker.js +20 -7
- package/dist/backend/kiro-worker.js.map +1 -1
- package/dist/backend/run-kiro.js +5 -1
- package/dist/backend/run-kiro.js.map +1 -1
- package/dist/chains/load.js +1 -1
- package/dist/chains/load.js.map +1 -1
- package/dist/cli/color.d.ts +6 -0
- package/dist/cli/color.js +40 -0
- package/dist/cli/color.js.map +1 -0
- package/dist/commands/guide.d.ts +1 -0
- package/dist/commands/guide.js +33 -0
- package/dist/commands/guide.js.map +1 -0
- package/dist/commands/inspect.js +45 -5
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/run.js +6 -1
- package/dist/commands/run.js.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/dashboard/app.js +1 -1
- package/dist/dashboard/app.js.map +1 -1
- package/dist/dashboard/routes/api.js +84 -1
- package/dist/dashboard/routes/api.js.map +1 -1
- package/dist/dashboard/routes/pages.d.ts +1 -1
- package/dist/dashboard/routes/pages.js +4 -2
- package/dist/dashboard/routes/pages.js.map +1 -1
- package/dist/dashboard/views/shell.d.ts +1 -1
- package/dist/dashboard/views/shell.js +366 -18
- package/dist/dashboard/views/shell.js.map +1 -1
- package/dist/events/types.d.ts +4 -2
- package/dist/harness/artifacts.d.ts +50 -0
- package/dist/harness/artifacts.js +333 -0
- package/dist/harness/artifacts.js.map +1 -0
- package/dist/harness/config-helpers.js +10 -10
- package/dist/harness/config-helpers.js.map +1 -1
- package/dist/harness/emit.js +2 -0
- package/dist/harness/emit.js.map +1 -1
- package/dist/harness/index.d.ts +7 -0
- package/dist/harness/index.js +78 -7
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/journal-format.d.ts +25 -0
- package/dist/harness/journal-format.js +153 -0
- package/dist/harness/journal-format.js.map +1 -0
- package/dist/harness/journal.d.ts +1 -0
- package/dist/harness/journal.js +3 -0
- package/dist/harness/journal.js.map +1 -1
- package/dist/harness/metareview.js +1 -1
- package/dist/harness/metareview.js.map +1 -1
- package/dist/harness/prompt.d.ts +2 -0
- package/dist/harness/prompt.js +45 -6
- package/dist/harness/prompt.js.map +1 -1
- package/dist/harness/types.d.ts +2 -2
- package/dist/loops/health.d.ts +1 -0
- package/dist/loops/health.js +1 -1
- package/dist/loops/health.js.map +1 -1
- package/dist/main.js +5 -0
- package/dist/main.js.map +1 -1
- package/dist/usage.js +4 -3
- package/dist/usage.js.map +1 -1
- package/dist/worktree/clean.js +18 -3
- package/dist/worktree/clean.js.map +1 -1
- package/package.json +21 -4
- package/plugins/autoloop/.claude-plugin/plugin.json +9 -0
- package/plugins/autoloop/skills/autoloop/SKILL.md +225 -0
- package/presets/autodebug/README.md +50 -0
- package/presets/autodebug/autoloops.toml +18 -0
- package/presets/autodebug/harness.md +31 -0
- package/presets/autodebug/roles/fixer.md +58 -0
- package/presets/autodebug/roles/investigator.md +52 -0
- package/presets/autodebug/roles/strategist.md +45 -0
- package/presets/autodebug/roles/verifier.md +66 -0
- package/presets/autodebug/topology.toml +34 -0
- package/presets/autopreset/README.md +35 -0
- package/presets/autopreset/autoloops.toml +18 -0
- package/presets/autopreset/harness.md +38 -0
- package/presets/autopreset/roles/designer.md +33 -0
- package/presets/autopreset/roles/finalizer.md +23 -0
- package/presets/autopreset/roles/generator.md +34 -0
- package/presets/autopreset/roles/validator.md +31 -0
- package/presets/autopreset/topology.toml +32 -0
- package/presets/autoqa/README.md +43 -14
- package/presets/autoqa/autoloops.toml +2 -2
- package/presets/autoqa/harness.md +30 -8
- package/presets/autoqa/roles/executor.md +64 -11
- package/presets/autoqa/roles/inspector.md +68 -13
- package/presets/autoqa/roles/planner.md +43 -11
- package/presets/autoqa/roles/reporter.md +51 -8
package/README.md
CHANGED
|
@@ -1,21 +1,59 @@
|
|
|
1
1
|
# autoloop
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
autoloop is a spinoff of ralph-orchestrator built to keep the parts that mattered and drop a lot of the extra experimental surface area.
|
|
4
|
+
|
|
5
|
+
It’s a simpler, more opinionated loop harness for long-running agent work: inspectable runs, easier preset-driven workflows, and operator surfaces that agents can use directly too.
|
|
6
|
+
|
|
7
|
+
It’s early and still evolving. autoloop is not a replacement for ralph-orchestrator — it’s a cleaner path for exploring a simpler UX without breaking Ralph.
|
|
4
8
|
|
|
5
9
|
[](https://www.npmjs.com/package/@mobrienv/autoloop)
|
|
6
10
|
[](https://nodejs.org/)
|
|
7
11
|
|
|
8
|
-
|
|
12
|
+
[](docs/launches/autoloop-hybrid-launch-video-x.mp4)
|
|
13
|
+
|
|
14
|
+
## Why autoloop exists
|
|
15
|
+
|
|
16
|
+
ralph-orchestrator grew to include a lot of different experiments and ways of doing things. autoloop spins out a narrower set of ideas into something simpler and more opinionated.
|
|
17
|
+
|
|
18
|
+
The bet is that long-running agent workflows get much better when they are:
|
|
19
|
+
|
|
20
|
+
- inspectable after every iteration
|
|
21
|
+
- easy to launch through reusable presets
|
|
22
|
+
- safe to run in isolation when they touch real code
|
|
23
|
+
- operable by both humans and agents
|
|
24
|
+
|
|
25
|
+
If Ralph is the broader experimentation surface, autoloop is the cleaner runtime path.
|
|
9
26
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
- **
|
|
13
|
-
- **
|
|
27
|
+
## What it emphasizes
|
|
28
|
+
|
|
29
|
+
- **Inspectable long-running loops** -- every iteration is recorded in an append-only journal, with tools to inspect prompts, outputs, topology, metrics, tasks, memory, and artifacts
|
|
30
|
+
- **Easier preset-driven workflows** -- bundled presets give you a fast starting point, and custom preset creation is a first-class path
|
|
31
|
+
- **Operator visibility** -- `loops`, `watch`, `health`, `inspect`, and the local dashboard show what actually happened
|
|
32
|
+
- **Worktree isolation + automerge** -- run risky coding passes in git worktrees and merge them back only when ready
|
|
33
|
+
- **Designed for agents too** -- autoloop is intentionally shaped as a surface that agents can use directly, not just a human operator CLI
|
|
14
34
|
- **Dynamic chains** -- compose presets into multi-stage pipelines
|
|
15
|
-
- **
|
|
35
|
+
- **Persistent memory + profiles** -- loops accumulate learnings across runs and can load repo/user tuning profiles
|
|
36
|
+
|
|
37
|
+
## What autoloop is
|
|
38
|
+
|
|
39
|
+
- a simpler, more opinionated spinoff of ralph-orchestrator
|
|
40
|
+
- a loop harness for long-running agent workflows
|
|
41
|
+
- a system built around inspectability, presets, and operator visibility
|
|
42
|
+
- a tool for both human operators and agents
|
|
43
|
+
|
|
44
|
+
## What it is not
|
|
45
|
+
|
|
46
|
+
- not a replacement for ralph-orchestrator
|
|
47
|
+
- not just a thin CLI wrapper around model calls
|
|
48
|
+
- not a generic workflow engine for everything
|
|
49
|
+
- not optimized for the broadest possible feature surface
|
|
16
50
|
|
|
17
51
|
## Table of contents
|
|
18
52
|
|
|
53
|
+
- [Why autoloop exists](#why-autoloop-exists)
|
|
54
|
+
- [What it emphasizes](#what-it-emphasizes)
|
|
55
|
+
- [What autoloop is](#what-autoloop-is)
|
|
56
|
+
- [What it is not](#what-it-is-not)
|
|
19
57
|
- [Install](#install)
|
|
20
58
|
- [Quick start](#quick-start)
|
|
21
59
|
- [Usage](#usage)
|
|
@@ -33,7 +71,6 @@ Autonomous LLM loop harness for long-horizon, multi-role agent work.
|
|
|
33
71
|
|
|
34
72
|
```bash
|
|
35
73
|
npm install -g @mobrienv/autoloop
|
|
36
|
-
autoloop --help
|
|
37
74
|
```
|
|
38
75
|
|
|
39
76
|
### From source
|
|
@@ -50,31 +87,51 @@ node bin/autoloop --help
|
|
|
50
87
|
```bash
|
|
51
88
|
# Run a bundled preset
|
|
52
89
|
autoloop run autocode "Fix the login bug"
|
|
90
|
+
|
|
91
|
+
# Inspect active and recent runs
|
|
92
|
+
autoloop loops
|
|
93
|
+
|
|
94
|
+
# Open the local dashboard
|
|
95
|
+
autoloop dashboard
|
|
96
|
+
|
|
97
|
+
# Keep an implementation pass isolated in a git worktree
|
|
98
|
+
autoloop run autocode --worktree --automerge "Implement the approved fix"
|
|
53
99
|
```
|
|
54
100
|
|
|
55
|
-
`autocode` is a bundled preset. The quoted string is the
|
|
101
|
+
`autocode` is a bundled preset. The quoted string is the objective passed to the loop.
|
|
102
|
+
|
|
103
|
+
The usual golden path is:
|
|
104
|
+
|
|
105
|
+
1. start a loop with a preset
|
|
106
|
+
2. watch it move through iterations
|
|
107
|
+
3. inspect the journal, events, and artifacts
|
|
108
|
+
4. open the dashboard when you want a higher-level operator view
|
|
109
|
+
5. use worktree isolation when the loop is making risky repo changes
|
|
56
110
|
|
|
57
111
|
## Usage
|
|
58
112
|
|
|
113
|
+
The main commands are:
|
|
114
|
+
|
|
59
115
|
```
|
|
60
116
|
autoloop run <preset-name|preset-dir> [prompt...] [flags]
|
|
61
|
-
autoloop emit <topic> [summary]
|
|
62
|
-
autoloop inspect <artifact> [selector] [project-dir] [--format <md|terminal|text|json|csv>]
|
|
63
|
-
autoloop memory <list|add|remove> [args]
|
|
64
|
-
autoloop task <add|complete|update|remove|list> [args]
|
|
65
117
|
autoloop list
|
|
66
118
|
autoloop loops [--all]
|
|
67
119
|
autoloop loops show <run-id>
|
|
68
120
|
autoloop loops artifacts <run-id>
|
|
69
121
|
autoloop loops watch <run-id>
|
|
70
|
-
autoloop
|
|
122
|
+
autoloop inspect <artifact> [selector] [project-dir] [--format <md|terminal|text|json|csv|graph>]
|
|
123
|
+
autoloop dashboard [--port <port>]
|
|
124
|
+
autoloop worktree <list|show|merge|clean> [args]
|
|
71
125
|
autoloop chain <list|run> [args]
|
|
126
|
+
autoloop emit <topic> [summary]
|
|
127
|
+
autoloop memory <list|status|find|add|remove> [args]
|
|
128
|
+
autoloop task <add|complete|update|remove|list> [args]
|
|
72
129
|
autoloop runs clean [--max-age <days>]
|
|
73
|
-
autoloop worktree <list|show|merge|clean> [args]
|
|
74
130
|
autoloop config <show|set|unset|path> [args]
|
|
75
|
-
autoloop dashboard [--port <port>]
|
|
76
131
|
```
|
|
77
132
|
|
|
133
|
+
Use `run` to start work, `loops` and `inspect` to understand what happened, and `dashboard` when you want a local operator surface.
|
|
134
|
+
|
|
78
135
|
### Flags
|
|
79
136
|
|
|
80
137
|
| Flag | Description |
|
|
@@ -90,17 +147,27 @@ autoloop dashboard [--port <port>]
|
|
|
90
147
|
### Examples
|
|
91
148
|
|
|
92
149
|
```bash
|
|
93
|
-
# Run a preset
|
|
150
|
+
# Run a preset against a coding task
|
|
94
151
|
autoloop run autocode "Refactor the auth module"
|
|
95
152
|
|
|
153
|
+
# Run a QA pass
|
|
154
|
+
autoloop run autoqa "Exercise the new onboarding flow and report UX issues"
|
|
155
|
+
|
|
96
156
|
# Run from a custom preset directory
|
|
97
157
|
autoloop run ./my-preset "Analyze the API"
|
|
98
158
|
|
|
99
|
-
#
|
|
100
|
-
autoloop run
|
|
159
|
+
# Keep implementation isolated in a worktree
|
|
160
|
+
autoloop run autocode --worktree --automerge "Implement the approved fix"
|
|
101
161
|
|
|
102
|
-
#
|
|
103
|
-
autoloop
|
|
162
|
+
# Watch a run in progress
|
|
163
|
+
autoloop loops watch <run-id>
|
|
164
|
+
|
|
165
|
+
# Inspect what happened after the run completes
|
|
166
|
+
autoloop inspect journal <run-id>
|
|
167
|
+
autoloop loops artifacts <run-id>
|
|
168
|
+
|
|
169
|
+
# Open the dashboard
|
|
170
|
+
autoloop dashboard
|
|
104
171
|
|
|
105
172
|
# Run an inline chain
|
|
106
173
|
autoloop run --chain autospec,autocode "Design and build feature X"
|
|
@@ -108,27 +175,31 @@ autoloop run --chain autospec,autocode "Design and build feature X"
|
|
|
108
175
|
|
|
109
176
|
## Bundled presets
|
|
110
177
|
|
|
178
|
+
Bundled presets give you opinionated starting points for common workflows like coding, QA, docs, review, security, specs, and performance.
|
|
179
|
+
|
|
111
180
|
| Preset | Purpose |
|
|
112
181
|
|--------|---------|
|
|
113
182
|
| `autocode` | Plan, build, review, and commit code changes |
|
|
114
|
-
| `
|
|
115
|
-
| `autofix` | Diagnose, fix, and verify bugs |
|
|
183
|
+
| `autosimplify` | Scope, simplify, verify, and review code for simplicity |
|
|
116
184
|
| `autoideas` | Scan, analyze, review, and synthesize improvement ideas |
|
|
117
|
-
| `automerge` | Merge a completed worktree branch back into its base branch |
|
|
118
|
-
| `autoperf` | Profile, measure, optimize, and judge performance |
|
|
119
|
-
| `autopr` | Turn the current branch into a reviewable pull request |
|
|
120
|
-
| `autoqa` | Plan, execute, inspect, and report on QA |
|
|
121
185
|
| `autoresearch` | Research strategies, implement, evaluate, and benchmark |
|
|
186
|
+
| `autoqa` | Plan, execute, inspect, and report on QA |
|
|
187
|
+
| `autotest` | Survey, write, run, and assess tests |
|
|
188
|
+
| `autofix` | Diagnose, fix, and verify bugs |
|
|
122
189
|
| `autoreview` | Read, suggest, check, and summarize code reviews |
|
|
190
|
+
| `autodoc` | Audit, write, verify, and publish documentation |
|
|
123
191
|
| `autosec` | Scan, analyze, harden, and report on security |
|
|
124
|
-
| `
|
|
192
|
+
| `autoperf` | Profile, measure, optimize, and judge performance |
|
|
125
193
|
| `autospec` | Research, clarify, design, plan, and critique specifications |
|
|
126
|
-
| `
|
|
194
|
+
| `automerge` | Merge a completed worktree branch back into its base branch |
|
|
195
|
+
| `autopr` | Turn the current branch into a reviewable pull request |
|
|
127
196
|
|
|
128
197
|
## Creating custom presets
|
|
129
198
|
|
|
130
199
|
A preset is a directory containing `autoloops.toml`, `topology.toml`, `harness.md`, and a `roles/` folder. See [Creating presets](docs/creating-presets.md) for the full guide, or examine any `presets/<name>/` directory as a working example.
|
|
131
200
|
|
|
201
|
+
Some older or internal layouts may still include `miniloops.toml`, but `autoloops.toml` is the canonical entry point for new presets.
|
|
202
|
+
|
|
132
203
|
## Project structure
|
|
133
204
|
|
|
134
205
|
```
|
package/dist/agent-map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-map.js","sourceRoot":"","sources":["../src/agent-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,IAAI,MAAM,aAAa,CAAC;AAY/B,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IAC3D,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAyB,EACzB,UAAkB,EAClB,MAAc;IAEd,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAChC,IAAI,MAAM,CAAC,YAAY;YAAE,OAAO,MAAM,CAAC,YAAY,CAAC;IACtD,CAAC;IAED,OAAO,QAAQ,CAAC,aAAa,IAAI,SAAS,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CAAC,MAA+B;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAwC,CAAC;IAC3E,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"agent-map.js","sourceRoot":"","sources":["../src/agent-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,IAAI,MAAM,aAAa,CAAC;AAY/B,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IAC3D,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAyB,EACzB,UAAkB,EAClB,MAAc;IAEd,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAChC,IAAI,MAAM,CAAC,YAAY;YAAE,OAAO,MAAM,CAAC,YAAY,CAAC;IACtD,CAAC;IAED,OAAO,QAAQ,CAAC,aAAa,IAAI,SAAS,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CAAC,MAA+B;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAwC,CAAC;IAC3E,MAAM,aAAa,GACjB,OAAO,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnE,MAAM,OAAO,GAAmC,EAAE,CAAC;IACnD,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAwC,CAAC;IAC9E,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,KAAgC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgC;IAC3D,MAAM,YAAY,GAChB,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnD,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -29,7 +29,7 @@ export async function initAcpSession(opts) {
|
|
|
29
29
|
stdio: ["pipe", "pipe", "pipe"],
|
|
30
30
|
cwd: opts.cwd,
|
|
31
31
|
env: process.env,
|
|
32
|
-
detached: true, // create process group so
|
|
32
|
+
detached: true, // create own process group so process.kill(-pid) in terminateAcpSession kills the full tree
|
|
33
33
|
});
|
|
34
34
|
if (!child.stdout || !child.stdin) {
|
|
35
35
|
throw new Error("Failed to create ACP process stdio streams");
|
|
@@ -146,6 +146,11 @@ export async function initAcpSession(opts) {
|
|
|
146
146
|
update.content?.type === "text") {
|
|
147
147
|
session.textBuffer += update.content.text;
|
|
148
148
|
}
|
|
149
|
+
if (opts.verbose) {
|
|
150
|
+
const line = formatStreamingUpdate(update);
|
|
151
|
+
if (line)
|
|
152
|
+
process.stderr.write(line);
|
|
153
|
+
}
|
|
149
154
|
},
|
|
150
155
|
};
|
|
151
156
|
session.connection = new acp.ClientSideConnection(() => client, stream);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp-client.js","sourceRoot":"","sources":["../../src/backend/acp-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AA8BhD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAyB;IAEzB,QAAQ,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7B,KAAK,qBAAqB;YACxB,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,KAAK,qBAAqB;YACxB,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,MAAM;gBACpC,CAAC,CAAC,cAAc,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;gBACvC,CAAC,CAAC,IAAI,CAAC;QACX,KAAK,WAAW;YACd,OAAO,SAAS,MAAM,CAAC,IAAI,IAAI,OAAO,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC;QAC9D,KAAK,kBAAkB;YACrB,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;gBAC/B,OAAO,YAAY,MAAM,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC;YAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO,YAAY,MAAM,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAsB;IAEtB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;QAC3C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"acp-client.js","sourceRoot":"","sources":["../../src/backend/acp-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AA8BhD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAyB;IAEzB,QAAQ,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7B,KAAK,qBAAqB;YACxB,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,KAAK,qBAAqB;YACxB,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,MAAM;gBACpC,CAAC,CAAC,cAAc,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;gBACvC,CAAC,CAAC,IAAI,CAAC;QACX,KAAK,WAAW;YACd,OAAO,SAAS,MAAM,CAAC,IAAI,IAAI,OAAO,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC;QAC9D,KAAK,kBAAkB;YACrB,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;gBAC/B,OAAO,YAAY,MAAM,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC;YAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO,YAAY,MAAM,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAsB;IAEtB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;QAC3C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,IAAI,EAAE,4FAA4F;KAC7G,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,OAAO,GAAe;QAC1B,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,IAA2C;QACvD,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAGN;KACH,CAAC;IAEF,gCAAgC;IAChC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qDAAqD;IACrD,OAAO,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACvC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,+FAA+F;IAC/F,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAa;QAC9C,KAAK,CAAC,KAAK,CAAC,KAAK;YACf,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,aAAa;gBAAE,OAAO;YACnD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC3C,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK;YACH,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QACD,KAAK,CAAC,MAAM;YACV,KAAK,CAAC,OAAO,CACX,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAC7D,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,aAAuD,CAAC;IAC5D,MAAM,cAAc,GAAG,IAAI,cAAc,CAAU;QACjD,KAAK,CAAC,UAAU;YACd,aAAa,GAAG,UAAU,CAAC;QAC7B,CAAC;QACD,MAAM;YACJ,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QAClC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAChC,yEAAyE;oBACzE,mEAAmE;oBACnE,qEAAqE;oBACrE,IACE,GAAG,CAAC,MAAM;wBACV,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;wBAC9B,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,EACnC,CAAC;wBACD,SAAS;oBACX,CAAC;oBACD,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBAAC,MAAM,CAAC;oBACP,oBAAoB;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QACpB,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU;YACZ,CAAC;QACH,CAAC;QACD,aAAa,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACzB,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,kFAAkF;IAClF,MAAM,aAAa,GAAG,IAAI,cAAc,CAAa,EAAE,KAAK,KAAI,CAAC,EAAE,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACzD,MAAM,MAAM,GAAe;QACzB,QAAQ,EAAE,cAAgD;QAC1D,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;IAEF,MAAM,MAAM,GAAe;QACzB,KAAK,CAAC,iBAAiB,CACrB,MAAoC;YAEpC,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;gBACjD,MAAM,KAAK,GACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;oBACrD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;gBACtD,IAAI,KAAK;oBACP,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC1E,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,aAAa,CAAC,MAA+B;YACjD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;YAC1B,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,IACE,MAAM,CAAC,aAAa,KAAK,qBAAqB;gBAC9C,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,MAAM,EAC/B,CAAC;gBACD,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5C,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC;IAEF,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExE,aAAa;IACb,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QAClC,eAAe,EAAE,GAAG,CAAC,gBAAgB;QACrC,kBAAkB,EAAE,EAAE;QACtB,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;KACnD,CAAC,CAAC;IAEH,iBAAiB;IACjB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QACjD,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,UAAU,EAAE,EAAE;KACf,CAAC,CAAC;IACH,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAErC,4BAA4B;IAC5B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;YACtC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,IAAI,CAAC,SAAS;SACvB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC;YAChD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAmB,EACnB,MAAc,EACd,SAAiB;IAEjB,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;IAExB,6CAA6C;IAC7C,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC/D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;gBACxD,SAAS;YACX,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,gCAAgC;IAChC,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,UAAU;QAC1B,UAAU,EAAE,UAAU;QACtB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,iBAAiB;KACzB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAmB,EACnB,MAAc,EACd,SAAiB;IAEjB,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;IAExB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,KAAgD,CAAC;IAErD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;QAC7D,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC5C,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,WAAW,MAAM,GAAG,MAAM,EAAE,CACvE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAClC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;gBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aACzC,CAAC;YACF,cAAc;YACd,YAAY;SACb,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,UAAU;YAC1B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,QAAQ,EAAE,KAAK;SAChB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;gBACL,MAAM,EAAE,OAAO,CAAC,UAAU;gBAC1B,UAAU,EAAE,WAAW;gBACvB,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,UAAU;YAC1B,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;SACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAmB;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO;IAEvC,2CAA2C;IAC3C,IAAI,CAAC;QACH,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IAED,6EAA6E;IAC7E,8CAA8C;IAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEtB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;QAChC,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;KAC1E,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;AACH,CAAC"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
import { Worker } from "node:worker_threads";
|
|
7
7
|
import type { AcpClientOptions } from "./acp-client.js";
|
|
8
8
|
import type { BackendRunResult } from "./types.js";
|
|
9
|
+
/** Signal the bridge to abort the current blocking wait. */
|
|
10
|
+
export declare function signalInterrupt(): void;
|
|
9
11
|
export interface KiroSessionHandle {
|
|
10
12
|
worker: Worker;
|
|
11
13
|
controlBuffer: SharedArrayBuffer;
|
|
@@ -3,10 +3,28 @@
|
|
|
3
3
|
* Uses SharedArrayBuffer + Atomics to block the main thread
|
|
4
4
|
* while the worker processes async ACP operations.
|
|
5
5
|
*/
|
|
6
|
-
import { Worker } from "node:worker_threads";
|
|
7
6
|
import { join } from "node:path";
|
|
8
7
|
import { fileURLToPath } from "node:url";
|
|
8
|
+
import { Worker } from "node:worker_threads";
|
|
9
9
|
const DATA_BUFFER_SIZE = 4 * 1024 * 1024; // 4 MB for prompt/response data
|
|
10
|
+
const POLL_INTERVAL_MS = 500;
|
|
11
|
+
let interrupted = false;
|
|
12
|
+
/** PID of the detached kiro-cli child process (set after init). */
|
|
13
|
+
let acpChildPid;
|
|
14
|
+
/** Signal the bridge to abort the current blocking wait. */
|
|
15
|
+
export function signalInterrupt() {
|
|
16
|
+
interrupted = true;
|
|
17
|
+
// Forward the signal to the detached child process group so kiro-cli
|
|
18
|
+
// exits even though it doesn't share our process group.
|
|
19
|
+
if (acpChildPid) {
|
|
20
|
+
try {
|
|
21
|
+
process.kill(-acpChildPid, "SIGTERM");
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
/* child may already be gone */
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
10
28
|
function sendCommand(handle, cmd) {
|
|
11
29
|
const control = new Int32Array(handle.controlBuffer);
|
|
12
30
|
const data = new Uint8Array(handle.dataBuffer);
|
|
@@ -20,7 +38,12 @@ function sendCommand(handle, cmd) {
|
|
|
20
38
|
Atomics.store(control, 0, 1);
|
|
21
39
|
Atomics.notify(control, 0);
|
|
22
40
|
// Block until worker signals result (control[0] = 2)
|
|
23
|
-
|
|
41
|
+
// Poll with timeout so SIGINT can interrupt the wait
|
|
42
|
+
while (Atomics.wait(control, 0, 1, POLL_INTERVAL_MS) === "timed-out") {
|
|
43
|
+
if (interrupted) {
|
|
44
|
+
throw new Error("kiro bridge interrupted by signal");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
24
47
|
// Read result
|
|
25
48
|
const len = new DataView(handle.dataBuffer).getUint32(0);
|
|
26
49
|
const resultJson = decoder.decode(data.slice(4, 4 + len));
|
|
@@ -35,12 +58,13 @@ export function initKiroSession(opts) {
|
|
|
35
58
|
Atomics.store(control, 0, 0);
|
|
36
59
|
const workerPath = join(fileURLToPath(import.meta.url), "..", "kiro-worker.js");
|
|
37
60
|
const worker = new Worker(workerPath, {
|
|
38
|
-
workerData: { controlBuffer, dataBuffer },
|
|
61
|
+
workerData: { controlBuffer, dataBuffer, verbose: opts.verbose ?? false },
|
|
39
62
|
});
|
|
40
63
|
const handle = { worker, controlBuffer, dataBuffer };
|
|
41
64
|
const result = sendCommand(handle, { type: "init", opts });
|
|
42
65
|
if (!result.ok)
|
|
43
66
|
throw new Error("Failed to init kiro session: " + result.error);
|
|
67
|
+
acpChildPid = result.childPid ?? undefined;
|
|
44
68
|
return handle;
|
|
45
69
|
}
|
|
46
70
|
export function runKiroIterationSync(handle, prompt, timeoutMs) {
|
|
@@ -59,7 +83,11 @@ export function runKiroIterationSync(handle, prompt, timeoutMs) {
|
|
|
59
83
|
exitCode: result.error ? 1 : 0,
|
|
60
84
|
timedOut: result.timedOut || false,
|
|
61
85
|
providerKind: "kiro",
|
|
62
|
-
errorCategory: result.timedOut
|
|
86
|
+
errorCategory: result.timedOut
|
|
87
|
+
? "timeout"
|
|
88
|
+
: result.error
|
|
89
|
+
? "non_zero_exit"
|
|
90
|
+
: "none",
|
|
63
91
|
};
|
|
64
92
|
}
|
|
65
93
|
export function setKiroSessionMode(handle, agentName) {
|
|
@@ -71,6 +99,12 @@ export function setKiroSessionMode(handle, agentName) {
|
|
|
71
99
|
}
|
|
72
100
|
export function terminateKiroSession(handle) {
|
|
73
101
|
sendCommand(handle, { type: "terminate" });
|
|
102
|
+
acpChildPid = undefined;
|
|
103
|
+
// Drain stderr — worker thread process.stderr.write() calls may still be
|
|
104
|
+
// in-flight from sessionUpdate callbacks. A brief sync sleep lets them flush
|
|
105
|
+
// before we kill the worker.
|
|
106
|
+
const drain = new Int32Array(new SharedArrayBuffer(4));
|
|
107
|
+
Atomics.wait(drain, 0, 0, 50);
|
|
74
108
|
// Signal shutdown
|
|
75
109
|
const control = new Int32Array(handle.controlBuffer);
|
|
76
110
|
Atomics.store(control, 0, 3);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kiro-bridge.js","sourceRoot":"","sources":["../../src/backend/kiro-bridge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"kiro-bridge.js","sourceRoot":"","sources":["../../src/backend/kiro-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
* Commands: { type: "init", opts } | { type: "prompt", prompt, timeoutMs } | { type: "terminate" }
|
|
9
9
|
*/
|
|
10
10
|
import { workerData } from "node:worker_threads";
|
|
11
|
-
import { initAcpSession, sendAcpPrompt, terminateAcpSession } from "./acp-client.js";
|
|
12
|
-
const { controlBuffer, dataBuffer } = workerData;
|
|
11
|
+
import { initAcpSession, sendAcpPrompt, terminateAcpSession, } from "./acp-client.js";
|
|
12
|
+
const { controlBuffer, dataBuffer, verbose } = workerData;
|
|
13
13
|
const control = new Int32Array(controlBuffer);
|
|
14
14
|
const data = new Uint8Array(dataBuffer);
|
|
15
15
|
const decoder = new TextDecoder();
|
|
@@ -28,8 +28,12 @@ function writeResult(result) {
|
|
|
28
28
|
async function handleCommand(cmd) {
|
|
29
29
|
switch (cmd.type) {
|
|
30
30
|
case "init": {
|
|
31
|
-
session = await initAcpSession(cmd.opts);
|
|
32
|
-
return {
|
|
31
|
+
session = await initAcpSession({ ...cmd.opts, verbose });
|
|
32
|
+
return {
|
|
33
|
+
ok: true,
|
|
34
|
+
sessionId: session.sessionId,
|
|
35
|
+
childPid: session.process.pid,
|
|
36
|
+
};
|
|
33
37
|
}
|
|
34
38
|
case "prompt": {
|
|
35
39
|
if (!session)
|
|
@@ -41,11 +45,17 @@ async function handleCommand(cmd) {
|
|
|
41
45
|
if (!session)
|
|
42
46
|
return { ok: false, error: "no session" };
|
|
43
47
|
try {
|
|
44
|
-
await session.connection.setSessionMode({
|
|
48
|
+
await session.connection.setSessionMode({
|
|
49
|
+
sessionId: session.sessionId,
|
|
50
|
+
modeId: cmd.agentName,
|
|
51
|
+
});
|
|
45
52
|
return { ok: true };
|
|
46
53
|
}
|
|
47
54
|
catch (err) {
|
|
48
|
-
return {
|
|
55
|
+
return {
|
|
56
|
+
ok: false,
|
|
57
|
+
error: err instanceof Error ? err.message : String(err),
|
|
58
|
+
};
|
|
49
59
|
}
|
|
50
60
|
}
|
|
51
61
|
case "terminate": {
|
|
@@ -70,7 +80,10 @@ async function handleCommand(cmd) {
|
|
|
70
80
|
result = await handleCommand(cmd);
|
|
71
81
|
}
|
|
72
82
|
catch (err) {
|
|
73
|
-
result = {
|
|
83
|
+
result = {
|
|
84
|
+
ok: false,
|
|
85
|
+
error: err instanceof Error ? err.message : String(err),
|
|
86
|
+
};
|
|
74
87
|
}
|
|
75
88
|
writeResult(result);
|
|
76
89
|
Atomics.store(control, 0, 2); // signal result ready
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kiro-worker.js","sourceRoot":"","sources":["../../src/backend/kiro-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAc,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"kiro-worker.js","sourceRoot":"","sources":["../../src/backend/kiro-worker.ts"],"names":[],"mappings":"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"}
|
package/dist/backend/run-kiro.js
CHANGED
|
@@ -6,7 +6,11 @@ export async function runKiroIteration(session, prompt, timeoutMs) {
|
|
|
6
6
|
exitCode: result.error ? 1 : 0,
|
|
7
7
|
timedOut: result.timedOut,
|
|
8
8
|
providerKind: "kiro",
|
|
9
|
-
errorCategory: result.timedOut
|
|
9
|
+
errorCategory: result.timedOut
|
|
10
|
+
? "timeout"
|
|
11
|
+
: result.error
|
|
12
|
+
? "non_zero_exit"
|
|
13
|
+
: "none",
|
|
10
14
|
};
|
|
11
15
|
}
|
|
12
16
|
//# sourceMappingURL=run-kiro.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-kiro.js","sourceRoot":"","sources":["../../src/backend/run-kiro.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAmB,EACnB,MAAc,EACd,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/D,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM;QACpB,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"run-kiro.js","sourceRoot":"","sources":["../../src/backend/run-kiro.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAmB,EACnB,MAAc,EACd,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/D,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM;QACpB,aAAa,EAAE,MAAM,CAAC,QAAQ;YAC5B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,CAAC,KAAK;gBACZ,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,MAAM;KACb,CAAC;AACJ,CAAC"}
|
package/dist/chains/load.js
CHANGED
package/dist/chains/load.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/chains/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/chains/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ANSI color utility respecting NO_COLOR / FORCE_COLOR env vars and TTY detection.
|
|
3
|
+
* No external dependencies.
|
|
4
|
+
*/
|
|
5
|
+
const RESET = "\x1b[0m";
|
|
6
|
+
const STYLES = {
|
|
7
|
+
bold: "\x1b[1m",
|
|
8
|
+
dim: "\x1b[2m",
|
|
9
|
+
red: "\x1b[31m",
|
|
10
|
+
green: "\x1b[32m",
|
|
11
|
+
yellow: "\x1b[33m",
|
|
12
|
+
blue: "\x1b[34m",
|
|
13
|
+
magenta: "\x1b[35m",
|
|
14
|
+
cyan: "\x1b[36m",
|
|
15
|
+
gray: "\x1b[90m",
|
|
16
|
+
brightRed: "\x1b[91m",
|
|
17
|
+
dimBlue: "\x1b[2;34m",
|
|
18
|
+
};
|
|
19
|
+
function colorsEnabled() {
|
|
20
|
+
if (process.env.NO_COLOR !== undefined)
|
|
21
|
+
return false;
|
|
22
|
+
if (process.env.FORCE_COLOR !== undefined)
|
|
23
|
+
return true;
|
|
24
|
+
return process.stdout.isTTY === true;
|
|
25
|
+
}
|
|
26
|
+
export function color(text, ...styles) {
|
|
27
|
+
if (!colorsEnabled())
|
|
28
|
+
return text;
|
|
29
|
+
const codes = styles
|
|
30
|
+
.map((s) => STYLES[s])
|
|
31
|
+
.filter((c) => c !== undefined);
|
|
32
|
+
if (codes.length === 0)
|
|
33
|
+
return text;
|
|
34
|
+
return codes.join("") + text + RESET;
|
|
35
|
+
}
|
|
36
|
+
export function strip(text) {
|
|
37
|
+
// biome-ignore lint/suspicious/noControlCharactersInRegex: stripping ANSI escapes
|
|
38
|
+
return text.replace(/\x1b\[[0-9;]*m/g, "");
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/cli/color.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,KAAK,GAAG,SAAS,CAAC;AAExB,MAAM,MAAM,GAA2B;IACrC,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,UAAU;IACrB,OAAO,EAAE,YAAY;CACtB,CAAC;AAEF,SAAS,aAAa;IACpB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,GAAG,MAAgB;IACrD,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM;SACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACrB,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,IAAY;IAChC,kFAAkF;IAClF,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function dispatchGuide(args: string[]): void;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { resolveEmitJournalFile } from "../harness/emit.js";
|
|
2
|
+
import { appendOperatorEvent, latestRunId } from "../harness/journal.js";
|
|
3
|
+
export function dispatchGuide(args) {
|
|
4
|
+
let runId = "";
|
|
5
|
+
let messageArgs = args;
|
|
6
|
+
// Parse optional --run flag
|
|
7
|
+
if (args[0] === "--run" && args[1]) {
|
|
8
|
+
runId = args[1];
|
|
9
|
+
messageArgs = args.slice(2);
|
|
10
|
+
}
|
|
11
|
+
if (messageArgs.length === 0 ||
|
|
12
|
+
messageArgs[0] === "--help" ||
|
|
13
|
+
messageArgs[0] === "-h") {
|
|
14
|
+
console.log('Usage: autoloops guide [--run <runId>] "guidance message"\n' +
|
|
15
|
+
"Inject operator guidance into the next loop iteration.");
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const message = messageArgs.join(" ");
|
|
19
|
+
const projectDir = process.env.AUTOLOOP_PROJECT_DIR || ".";
|
|
20
|
+
const journalFile = resolveEmitJournalFile(projectDir);
|
|
21
|
+
if (!runId) {
|
|
22
|
+
runId = process.env.AUTOLOOP_RUN_ID || latestRunId(journalFile);
|
|
23
|
+
}
|
|
24
|
+
if (!runId) {
|
|
25
|
+
process.stderr.write("No active run found. Specify --run <runId> or ensure a loop is running.\n");
|
|
26
|
+
process.exitCode = 1;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
appendOperatorEvent(journalFile, runId, "", "operator.guidance", message);
|
|
30
|
+
console.log(`Guidance queued for next iteration of run ${runId}`);
|
|
31
|
+
process.exitCode = 0;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/commands/guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzE,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,WAAW,GAAG,IAAI,CAAC;IAEvB,4BAA4B;IAC5B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,IACE,WAAW,CAAC,MAAM,KAAK,CAAC;QACxB,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ;QAC3B,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACvB,CAAC;QACD,OAAO,CAAC,GAAG,CACT,6DAA6D;YAC3D,wDAAwD,CAC3D,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC;IAC3D,MAAM,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAEvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2EAA2E,CAC5E,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,mBAAmB,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,6CAA6C,KAAK,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
|