@mobrienv/autoloop 0.2.0 → 0.3.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 +93 -45
- package/dist/agent-map.js.map +1 -1
- package/dist/backend/acp-client.d.ts +7 -1
- package/dist/backend/acp-client.js +100 -22
- package/dist/backend/acp-client.js.map +1 -1
- package/dist/backend/kiro-bridge.js +6 -2
- package/dist/backend/kiro-bridge.js.map +1 -1
- package/dist/backend/kiro-worker.js +13 -4
- 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/commands/guide.d.ts +1 -0
- package/dist/commands/guide.js +33 -0
- package/dist/commands/guide.js.map +1 -0
- package/dist/commands/run.js +6 -1
- package/dist/commands/run.js.map +1 -1
- package/dist/dashboard/routes/api.js +28 -1
- package/dist/dashboard/routes/api.js.map +1 -1
- package/dist/dashboard/views/shell.js +32 -0
- package/dist/dashboard/views/shell.js.map +1 -1
- package/dist/events/types.d.ts +2 -1
- package/dist/harness/config-helpers.js +7 -5
- 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/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/main.js +15 -5
- package/dist/main.js.map +1 -1
- package/package.json +4 -2
- package/plugins/autoloop/.claude-plugin/plugin.json +9 -0
- package/plugins/autoloop/skills/autoloop/SKILL.md +225 -0
package/README.md
CHANGED
|
@@ -1,32 +1,55 @@
|
|
|
1
1
|
# autoloop
|
|
2
2
|
|
|
3
|
-
Autonomous LLM loop harness
|
|
3
|
+
Autonomous LLM loop harness for long-horizon, multi-role agent work.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/@mobrienv/autoloop)
|
|
6
|
+
[](https://nodejs.org/)
|
|
6
7
|
|
|
7
|
-
##
|
|
8
|
+
## Features
|
|
8
9
|
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
-
|
|
10
|
+
- **Event-driven role routing** -- roles hand off via structured events; the harness manages iteration, backpressure, and completion detection
|
|
11
|
+
- **Append-only journal** -- every iteration is recorded; inspect, replay, or audit any run
|
|
12
|
+
- **Preset system** -- bundled presets for common workflows (code, docs, QA, security, specs); create your own in minutes
|
|
13
|
+
- **Persistent memory** -- loops accumulate learnings and preferences across runs
|
|
14
|
+
- **Dynamic chains** -- compose presets into multi-stage pipelines
|
|
15
|
+
- **Worktree isolation** -- run loops in git worktrees so your working tree stays clean
|
|
12
16
|
|
|
13
|
-
##
|
|
17
|
+
## Table of contents
|
|
18
|
+
|
|
19
|
+
- [Install](#install)
|
|
20
|
+
- [Quick start](#quick-start)
|
|
21
|
+
- [Usage](#usage)
|
|
22
|
+
- [Bundled presets](#bundled-presets)
|
|
23
|
+
- [Creating custom presets](#creating-custom-presets)
|
|
24
|
+
- [Project structure](#project-structure)
|
|
25
|
+
- [Developer scripts](#developer-scripts)
|
|
26
|
+
- [Running tests](#running-tests)
|
|
27
|
+
- [Further reading](#further-reading)
|
|
28
|
+
- [Contributing](#contributing)
|
|
29
|
+
|
|
30
|
+
## Install
|
|
31
|
+
|
|
32
|
+
### From npm (recommended)
|
|
14
33
|
|
|
15
34
|
```bash
|
|
16
35
|
npm install -g @mobrienv/autoloop
|
|
17
36
|
autoloop --help
|
|
18
37
|
```
|
|
19
38
|
|
|
20
|
-
|
|
39
|
+
### From source
|
|
21
40
|
|
|
22
41
|
```bash
|
|
23
|
-
|
|
24
|
-
git clone <repo-url> && cd autoloop
|
|
42
|
+
git clone https://github.com/mikeyobrien/autoloop.git && cd autoloop
|
|
25
43
|
npm install
|
|
26
44
|
npm run build
|
|
45
|
+
node bin/autoloop --help
|
|
46
|
+
```
|
|
27
47
|
|
|
28
|
-
|
|
29
|
-
|
|
48
|
+
## Quick start
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Run a bundled preset
|
|
52
|
+
autoloop run autocode "Fix the login bug"
|
|
30
53
|
```
|
|
31
54
|
|
|
32
55
|
`autocode` is a bundled preset. The quoted string is the prompt passed to the loop. The harness iterates through roles (planner -> builder -> critic -> finalizer) until a `task.complete` event is emitted or the iteration limit is reached.
|
|
@@ -34,12 +57,22 @@ node bin/autoloop run autocode "Fix the login bug"
|
|
|
34
57
|
## Usage
|
|
35
58
|
|
|
36
59
|
```
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
60
|
+
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
|
+
autoloop list
|
|
66
|
+
autoloop loops [--all]
|
|
67
|
+
autoloop loops show <run-id>
|
|
68
|
+
autoloop loops artifacts <run-id>
|
|
69
|
+
autoloop loops watch <run-id>
|
|
70
|
+
autoloop loops health [--verbose]
|
|
71
|
+
autoloop chain <list|run> [args]
|
|
72
|
+
autoloop runs clean [--max-age <days>]
|
|
73
|
+
autoloop worktree <list|show|merge|clean> [args]
|
|
74
|
+
autoloop config <show|set|unset|path> [args]
|
|
75
|
+
autoloop dashboard [--port <port>]
|
|
43
76
|
```
|
|
44
77
|
|
|
45
78
|
### Flags
|
|
@@ -51,24 +84,26 @@ npx @mobrienv/autoloop chain <list|run> [args]
|
|
|
51
84
|
| `-b`, `--backend` | Override backend command (e.g. `-b claude`) |
|
|
52
85
|
| `-p`, `--preset` | Resolve a named or custom preset |
|
|
53
86
|
| `--chain` | Run an inline chain of comma-separated presets |
|
|
87
|
+
| `--profile <spec>` | Activate a profile (`repo:<name>` or `user:<name>`), repeatable |
|
|
88
|
+
| `--no-default-profiles` | Suppress config-defined default profiles |
|
|
54
89
|
|
|
55
90
|
### Examples
|
|
56
91
|
|
|
57
92
|
```bash
|
|
58
93
|
# Run a preset by name
|
|
59
|
-
|
|
94
|
+
autoloop run autocode "Refactor the auth module"
|
|
60
95
|
|
|
61
96
|
# Run from a custom preset directory
|
|
62
|
-
|
|
97
|
+
autoloop run ./my-preset "Analyze the API"
|
|
63
98
|
|
|
64
99
|
# Override the backend
|
|
65
|
-
|
|
100
|
+
autoloop run autoqa -b claude "Review recent changes"
|
|
66
101
|
|
|
67
102
|
# List available presets
|
|
68
|
-
|
|
103
|
+
autoloop list
|
|
69
104
|
|
|
70
105
|
# Run an inline chain
|
|
71
|
-
|
|
106
|
+
autoloop run --chain autospec,autocode "Design and build feature X"
|
|
72
107
|
```
|
|
73
108
|
|
|
74
109
|
## Bundled presets
|
|
@@ -79,7 +114,9 @@ node bin/autoloop run --chain autospec,autocode "Design and build feature X"
|
|
|
79
114
|
| `autodoc` | Audit, write, verify, and publish documentation |
|
|
80
115
|
| `autofix` | Diagnose, fix, and verify bugs |
|
|
81
116
|
| `autoideas` | Scan, analyze, review, and synthesize improvement ideas |
|
|
117
|
+
| `automerge` | Merge a completed worktree branch back into its base branch |
|
|
82
118
|
| `autoperf` | Profile, measure, optimize, and judge performance |
|
|
119
|
+
| `autopr` | Turn the current branch into a reviewable pull request |
|
|
83
120
|
| `autoqa` | Plan, execute, inspect, and report on QA |
|
|
84
121
|
| `autoresearch` | Research strategies, implement, evaluate, and benchmark |
|
|
85
122
|
| `autoreview` | Read, suggest, check, and summarize code reviews |
|
|
@@ -88,36 +125,36 @@ node bin/autoloop run --chain autospec,autocode "Design and build feature X"
|
|
|
88
125
|
| `autospec` | Research, clarify, design, plan, and critique specifications |
|
|
89
126
|
| `autotest` | Survey, write, run, and assess tests |
|
|
90
127
|
|
|
128
|
+
## Creating custom presets
|
|
129
|
+
|
|
130
|
+
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
|
+
|
|
91
132
|
## Project structure
|
|
92
133
|
|
|
93
134
|
```
|
|
94
135
|
autoloop/
|
|
95
|
-
├── bin/autoloop
|
|
96
|
-
├── src/
|
|
97
|
-
│ ├── main.ts
|
|
98
|
-
│ ├── harness/
|
|
99
|
-
│ ├── config.ts
|
|
100
|
-
│ ├── chains.ts
|
|
101
|
-
│ ├── memory.ts
|
|
102
|
-
│ └── usage.ts
|
|
103
|
-
├── presets/
|
|
136
|
+
├── bin/autoloop # CLI entry point (Node.js ESM)
|
|
137
|
+
├── src/ # TypeScript source
|
|
138
|
+
│ ├── main.ts # CLI dispatch
|
|
139
|
+
│ ├── harness/ # Loop engine (iteration, events, routing)
|
|
140
|
+
│ ├── config.ts # TOML config loading
|
|
141
|
+
│ ├── chains.ts # Chain orchestration
|
|
142
|
+
│ ├── memory.ts # Persistent loop memory
|
|
143
|
+
│ └── usage.ts # Help text
|
|
144
|
+
├── presets/ # Bundled preset definitions
|
|
104
145
|
│ └── <name>/
|
|
105
|
-
│ ├── autoloops.toml
|
|
106
|
-
│ ├── topology.toml
|
|
107
|
-
│ ├── harness.md
|
|
108
|
-
│ └── roles/
|
|
109
|
-
├── docs/
|
|
110
|
-
├── dist/
|
|
146
|
+
│ ├── autoloops.toml
|
|
147
|
+
│ ├── topology.toml
|
|
148
|
+
│ ├── harness.md
|
|
149
|
+
│ └── roles/
|
|
150
|
+
├── docs/ # Reference documentation
|
|
151
|
+
├── dist/ # Compiled output (generated)
|
|
111
152
|
└── package.json
|
|
112
153
|
```
|
|
113
154
|
|
|
114
|
-
## Creating custom presets
|
|
115
|
-
|
|
116
|
-
A preset is a directory containing `autoloops.toml`, `topology.toml`, `harness.md`, and a `roles/` folder. See [docs/creating-presets.md](docs/creating-presets.md) for the full guide, or examine any `presets/<name>/` directory as a working example.
|
|
117
|
-
|
|
118
155
|
## Developer scripts
|
|
119
156
|
|
|
120
|
-
A convenience dispatcher lives at `bin/dev
|
|
157
|
+
A convenience dispatcher lives at `bin/dev`:
|
|
121
158
|
|
|
122
159
|
```bash
|
|
123
160
|
bin/dev build # compile TypeScript
|
|
@@ -138,14 +175,14 @@ Runs the test suite via [Vitest](https://vitest.dev/).
|
|
|
138
175
|
|
|
139
176
|
### Mock backend
|
|
140
177
|
|
|
141
|
-
A deterministic mock backend (`src/testing/mock-backend.ts`) removes the need for a live LLM
|
|
178
|
+
A deterministic mock backend (`src/testing/mock-backend.ts`) removes the need for a live LLM during testing. Point it at a JSON fixture to control output, exit code, and emitted events:
|
|
142
179
|
|
|
143
180
|
```bash
|
|
144
181
|
export MOCK_FIXTURE_PATH=test/fixtures/backend/complete-success.json
|
|
145
182
|
node bin/autoloop run . -b "node dist/testing/mock-backend.js"
|
|
146
183
|
```
|
|
147
184
|
|
|
148
|
-
See [
|
|
185
|
+
See [CLI reference](docs/cli.md#mock-backend) for fixture schema and bundled scenarios.
|
|
149
186
|
|
|
150
187
|
## Further reading
|
|
151
188
|
|
|
@@ -156,3 +193,14 @@ See [docs/cli.md](docs/cli.md#mock-backend) for fixture schema and bundled scena
|
|
|
156
193
|
- [Memory system](docs/memory.md)
|
|
157
194
|
- [Dynamic chains](docs/dynamic-chains.md)
|
|
158
195
|
- [CLI reference](docs/cli.md)
|
|
196
|
+
- [Dashboard](docs/dashboard.md)
|
|
197
|
+
- [Profiles](docs/profiles.md)
|
|
198
|
+
- [Tasks](docs/tasks.md)
|
|
199
|
+
- [Worktree isolation](docs/worktree.md)
|
|
200
|
+
- [Releasing](docs/releasing.md)
|
|
201
|
+
|
|
202
|
+
## Contributing
|
|
203
|
+
|
|
204
|
+
Bug reports and pull requests are welcome at [github.com/mikeyobrien/autoloop](https://github.com/mikeyobrien/autoloop/issues).
|
|
205
|
+
|
|
206
|
+
Prerequisites for development: Node.js >= 18, npm. Run `npm install && npm run build` to get started, then `npm test` to verify.
|
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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as acp from "@agentclientprotocol/sdk";
|
|
2
1
|
import { type ChildProcess } from "node:child_process";
|
|
2
|
+
import * as acp from "@agentclientprotocol/sdk";
|
|
3
3
|
export interface AcpClientOptions {
|
|
4
4
|
command: string;
|
|
5
5
|
args: string[];
|
|
@@ -7,6 +7,7 @@ export interface AcpClientOptions {
|
|
|
7
7
|
trustAllTools: boolean;
|
|
8
8
|
agentName?: string;
|
|
9
9
|
modelId?: string;
|
|
10
|
+
verbose?: boolean;
|
|
10
11
|
}
|
|
11
12
|
export interface AcpSession {
|
|
12
13
|
sessionId: string;
|
|
@@ -27,6 +28,11 @@ export interface AcpPromptResult {
|
|
|
27
28
|
timedOut: boolean;
|
|
28
29
|
error?: string;
|
|
29
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Format an ACP SessionUpdate for verbose stderr output.
|
|
33
|
+
* Returns null for event types that should be silenced.
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatStreamingUpdate(update: acp.SessionUpdate): string | null;
|
|
30
36
|
export declare function initAcpSession(opts: AcpClientOptions): Promise<AcpSession>;
|
|
31
37
|
export declare function sendAcpPrompt(session: AcpSession, prompt: string, timeoutMs: number): Promise<AcpPromptResult>;
|
|
32
38
|
export declare function terminateAcpSession(session: AcpSession): Promise<void>;
|
|
@@ -1,5 +1,29 @@
|
|
|
1
|
-
import * as acp from "@agentclientprotocol/sdk";
|
|
2
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import * as acp from "@agentclientprotocol/sdk";
|
|
3
|
+
/**
|
|
4
|
+
* Format an ACP SessionUpdate for verbose stderr output.
|
|
5
|
+
* Returns null for event types that should be silenced.
|
|
6
|
+
*/
|
|
7
|
+
export function formatStreamingUpdate(update) {
|
|
8
|
+
switch (update.sessionUpdate) {
|
|
9
|
+
case "agent_message_chunk":
|
|
10
|
+
return update.content?.type === "text" ? update.content.text : null;
|
|
11
|
+
case "agent_thought_chunk":
|
|
12
|
+
return update.content?.type === "text"
|
|
13
|
+
? `[thinking] ${update.content.text}\n`
|
|
14
|
+
: null;
|
|
15
|
+
case "tool_call":
|
|
16
|
+
return `[tool:${update.kind ?? "other"}] ${update.title}\n`;
|
|
17
|
+
case "tool_call_update":
|
|
18
|
+
if (update.status === "completed")
|
|
19
|
+
return `[tool:✓] ${update.title ?? ""}\n`;
|
|
20
|
+
if (update.status === "failed")
|
|
21
|
+
return `[tool:✗] ${update.title ?? ""}\n`;
|
|
22
|
+
return null;
|
|
23
|
+
default:
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
3
27
|
export async function initAcpSession(opts) {
|
|
4
28
|
const child = spawn(opts.command, opts.args, {
|
|
5
29
|
stdio: ["pipe", "pipe", "pipe"],
|
|
@@ -40,15 +64,23 @@ export async function initAcpSession(opts) {
|
|
|
40
64
|
stdin.write(chunk, (err) => (err ? reject(err) : resolve()));
|
|
41
65
|
});
|
|
42
66
|
},
|
|
43
|
-
close() {
|
|
44
|
-
|
|
67
|
+
close() {
|
|
68
|
+
stdin.end();
|
|
69
|
+
},
|
|
70
|
+
abort(reason) {
|
|
71
|
+
stdin.destroy(reason instanceof Error ? reason : new Error(String(reason)));
|
|
72
|
+
},
|
|
45
73
|
});
|
|
46
74
|
let buffer = "";
|
|
47
75
|
const decoder = new TextDecoder();
|
|
48
76
|
let msgController;
|
|
49
77
|
const parsedMessages = new ReadableStream({
|
|
50
|
-
start(controller) {
|
|
51
|
-
|
|
78
|
+
start(controller) {
|
|
79
|
+
msgController = controller;
|
|
80
|
+
},
|
|
81
|
+
cancel() {
|
|
82
|
+
stdout.destroy();
|
|
83
|
+
},
|
|
52
84
|
});
|
|
53
85
|
stdout.on("data", (chunk) => {
|
|
54
86
|
buffer += decoder.decode(chunk, { stream: true });
|
|
@@ -62,12 +94,16 @@ export async function initAcpSession(opts) {
|
|
|
62
94
|
// Filter kiro-cli private notifications — the ACP SDK doesn't know about
|
|
63
95
|
// _kiro.dev/* methods and responds with -32601 "Method not found".
|
|
64
96
|
// These are private kiro-cli extensions the ACP SDK does not handle.
|
|
65
|
-
if (msg.method &&
|
|
97
|
+
if (msg.method &&
|
|
98
|
+
typeof msg.method === "string" &&
|
|
99
|
+
msg.method.startsWith("_kiro.dev/")) {
|
|
66
100
|
continue;
|
|
67
101
|
}
|
|
68
102
|
msgController.enqueue(msg);
|
|
69
103
|
}
|
|
70
|
-
catch {
|
|
104
|
+
catch {
|
|
105
|
+
/* skip malformed */
|
|
106
|
+
}
|
|
71
107
|
}
|
|
72
108
|
}
|
|
73
109
|
});
|
|
@@ -76,19 +112,27 @@ export async function initAcpSession(opts) {
|
|
|
76
112
|
try {
|
|
77
113
|
msgController.enqueue(JSON.parse(buffer.trim()));
|
|
78
114
|
}
|
|
79
|
-
catch {
|
|
115
|
+
catch {
|
|
116
|
+
/* skip */
|
|
117
|
+
}
|
|
80
118
|
}
|
|
81
119
|
msgController.close();
|
|
82
120
|
});
|
|
83
|
-
stdout.on("error", (err) => {
|
|
121
|
+
stdout.on("error", (err) => {
|
|
122
|
+
msgController.error(err);
|
|
123
|
+
});
|
|
84
124
|
// Use ndJsonStream only for writable serialization; readable is our manual parser
|
|
85
125
|
const dummyReadable = new ReadableStream({ start() { } });
|
|
86
126
|
const ndJson = acp.ndJsonStream(writable, dummyReadable);
|
|
87
|
-
const stream = {
|
|
127
|
+
const stream = {
|
|
128
|
+
readable: parsedMessages,
|
|
129
|
+
writable: ndJson.writable,
|
|
130
|
+
};
|
|
88
131
|
const client = {
|
|
89
132
|
async requestPermission(params) {
|
|
90
133
|
if (opts.trustAllTools && params.options?.length) {
|
|
91
|
-
const allow = params.options.find(o => o.kind === "allow_always") ??
|
|
134
|
+
const allow = params.options.find((o) => o.kind === "allow_always") ??
|
|
135
|
+
params.options.find((o) => o.kind === "allow_once");
|
|
92
136
|
if (allow)
|
|
93
137
|
return { outcome: { outcome: "selected", optionId: allow.optionId } };
|
|
94
138
|
}
|
|
@@ -98,7 +142,8 @@ export async function initAcpSession(opts) {
|
|
|
98
142
|
const { update } = params;
|
|
99
143
|
if (!update)
|
|
100
144
|
return;
|
|
101
|
-
if (update.sessionUpdate === "agent_message_chunk" &&
|
|
145
|
+
if (update.sessionUpdate === "agent_message_chunk" &&
|
|
146
|
+
update.content?.type === "text") {
|
|
102
147
|
session.textBuffer += update.content.text;
|
|
103
148
|
}
|
|
104
149
|
},
|
|
@@ -111,14 +156,23 @@ export async function initAcpSession(opts) {
|
|
|
111
156
|
clientInfo: { name: "autoloop", version: "0.1.0" },
|
|
112
157
|
});
|
|
113
158
|
// Create session
|
|
114
|
-
const result = await session.connection.newSession({
|
|
159
|
+
const result = await session.connection.newSession({
|
|
160
|
+
cwd: opts.cwd,
|
|
161
|
+
mcpServers: [],
|
|
162
|
+
});
|
|
115
163
|
session.sessionId = result.sessionId;
|
|
116
164
|
// Optionally set mode/model
|
|
117
165
|
if (opts.agentName) {
|
|
118
|
-
await session.connection.setSessionMode({
|
|
166
|
+
await session.connection.setSessionMode({
|
|
167
|
+
sessionId: session.sessionId,
|
|
168
|
+
modeId: opts.agentName,
|
|
169
|
+
});
|
|
119
170
|
}
|
|
120
171
|
if (opts.modelId) {
|
|
121
|
-
await session.connection.unstable_setSessionModel({
|
|
172
|
+
await session.connection.unstable_setSessionModel({
|
|
173
|
+
sessionId: session.sessionId,
|
|
174
|
+
modelId: opts.modelId,
|
|
175
|
+
});
|
|
122
176
|
}
|
|
123
177
|
return session;
|
|
124
178
|
}
|
|
@@ -139,7 +193,12 @@ export async function sendAcpPrompt(session, prompt, timeoutMs) {
|
|
|
139
193
|
}
|
|
140
194
|
}
|
|
141
195
|
// unreachable, but satisfies TS
|
|
142
|
-
return {
|
|
196
|
+
return {
|
|
197
|
+
output: session.textBuffer,
|
|
198
|
+
stopReason: "end_turn",
|
|
199
|
+
timedOut: false,
|
|
200
|
+
error: "retry exhausted",
|
|
201
|
+
};
|
|
143
202
|
}
|
|
144
203
|
async function sendAcpPromptOnce(session, prompt, timeoutMs) {
|
|
145
204
|
session.textBuffer = "";
|
|
@@ -168,14 +227,27 @@ async function sendAcpPromptOnce(session, prompt, timeoutMs) {
|
|
|
168
227
|
crashPromise,
|
|
169
228
|
]);
|
|
170
229
|
clearTimeout(timer);
|
|
171
|
-
return {
|
|
230
|
+
return {
|
|
231
|
+
output: session.textBuffer,
|
|
232
|
+
stopReason: response.stopReason,
|
|
233
|
+
timedOut: false,
|
|
234
|
+
};
|
|
172
235
|
}
|
|
173
236
|
catch (err) {
|
|
174
237
|
clearTimeout(timer);
|
|
175
238
|
if (timedOut) {
|
|
176
|
-
return {
|
|
239
|
+
return {
|
|
240
|
+
output: session.textBuffer,
|
|
241
|
+
stopReason: "cancelled",
|
|
242
|
+
timedOut: true,
|
|
243
|
+
};
|
|
177
244
|
}
|
|
178
|
-
return {
|
|
245
|
+
return {
|
|
246
|
+
output: session.textBuffer,
|
|
247
|
+
stopReason: "end_turn",
|
|
248
|
+
timedOut: false,
|
|
249
|
+
error: String(err),
|
|
250
|
+
};
|
|
179
251
|
}
|
|
180
252
|
}
|
|
181
253
|
export async function terminateAcpSession(session) {
|
|
@@ -186,14 +258,18 @@ export async function terminateAcpSession(session) {
|
|
|
186
258
|
try {
|
|
187
259
|
session.connection.cancel({ sessionId: session.sessionId });
|
|
188
260
|
}
|
|
189
|
-
catch {
|
|
261
|
+
catch {
|
|
262
|
+
/* may not have a session */
|
|
263
|
+
}
|
|
190
264
|
// Kill the entire process tree — MCP servers run in their own process groups
|
|
191
265
|
// and won't die from just killing the parent.
|
|
192
266
|
const pid = child.pid;
|
|
193
267
|
try {
|
|
194
268
|
process.kill(-pid, "SIGTERM");
|
|
195
269
|
}
|
|
196
|
-
catch {
|
|
270
|
+
catch {
|
|
271
|
+
/* process group may not exist */
|
|
272
|
+
}
|
|
197
273
|
child.kill("SIGTERM");
|
|
198
274
|
const exited = await Promise.race([
|
|
199
275
|
new Promise((resolve) => child.on("exit", () => resolve(true))),
|
|
@@ -203,7 +279,9 @@ export async function terminateAcpSession(session) {
|
|
|
203
279
|
try {
|
|
204
280
|
process.kill(-pid, "SIGKILL");
|
|
205
281
|
}
|
|
206
|
-
catch {
|
|
282
|
+
catch {
|
|
283
|
+
/* already dead */
|
|
284
|
+
}
|
|
207
285
|
child.kill("SIGKILL");
|
|
208
286
|
}
|
|
209
287
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp-client.js","sourceRoot":"","sources":["../../src/backend/acp-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"acp-client.js","sourceRoot":"","sources":["../../src/backend/acp-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@
|
|
|
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
10
|
function sendCommand(handle, cmd) {
|
|
11
11
|
const control = new Int32Array(handle.controlBuffer);
|
|
@@ -59,7 +59,11 @@ export function runKiroIterationSync(handle, prompt, timeoutMs) {
|
|
|
59
59
|
exitCode: result.error ? 1 : 0,
|
|
60
60
|
timedOut: result.timedOut || false,
|
|
61
61
|
providerKind: "kiro",
|
|
62
|
-
errorCategory: result.timedOut
|
|
62
|
+
errorCategory: result.timedOut
|
|
63
|
+
? "timeout"
|
|
64
|
+
: result.error
|
|
65
|
+
? "non_zero_exit"
|
|
66
|
+
: "none",
|
|
63
67
|
};
|
|
64
68
|
}
|
|
65
69
|
export function setKiroSessionMode(handle, agentName) {
|
|
@@ -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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7C,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,gCAAgC;AAQ1E,SAAS,WAAW,CAAC,MAAyB,EAAE,GAAY;IAC1D,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAElC,gBAAgB;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,IAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAElB,gBAAgB;IAChB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAE3B,qDAAqD;IACrD,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,cAAc;IACd,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,yBAAyB;IACvD,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,qDAAqD;IACjF,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7B,MAAM,UAAU,GAAG,IAAI,CACrB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC9B,IAAI,EACJ,gBAAgB,CACjB,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE;QACpC,UAAU,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE;KAC1C,CAAC,CAAC;IAEH,MAAM,MAAM,GAAsB,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;IACxE,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAyB,EACzB,MAAc,EACd,SAAiB;IAEjB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YAC1B,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,MAAM;YACpB,aAAa,EAAE,eAAe;SAC/B,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;QAClC,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;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAyB,EACzB,SAAiB;IAEjB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,0CAA0C;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sDAAsD,SAAS,MAAM,MAAM,CAAC,KAAK,IAAI,CACtF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAyB;IAC5D,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3C,kBAAkB;IAClB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACrD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -8,7 +8,7 @@
|
|
|
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";
|
|
11
|
+
import { initAcpSession, sendAcpPrompt, terminateAcpSession, } from "./acp-client.js";
|
|
12
12
|
const { controlBuffer, dataBuffer } = workerData;
|
|
13
13
|
const control = new Int32Array(controlBuffer);
|
|
14
14
|
const data = new Uint8Array(dataBuffer);
|
|
@@ -41,11 +41,17 @@ async function handleCommand(cmd) {
|
|
|
41
41
|
if (!session)
|
|
42
42
|
return { ok: false, error: "no session" };
|
|
43
43
|
try {
|
|
44
|
-
await session.connection.setSessionMode({
|
|
44
|
+
await session.connection.setSessionMode({
|
|
45
|
+
sessionId: session.sessionId,
|
|
46
|
+
modeId: cmd.agentName,
|
|
47
|
+
});
|
|
45
48
|
return { ok: true };
|
|
46
49
|
}
|
|
47
50
|
catch (err) {
|
|
48
|
-
return {
|
|
51
|
+
return {
|
|
52
|
+
ok: false,
|
|
53
|
+
error: err instanceof Error ? err.message : String(err),
|
|
54
|
+
};
|
|
49
55
|
}
|
|
50
56
|
}
|
|
51
57
|
case "terminate": {
|
|
@@ -70,7 +76,10 @@ async function handleCommand(cmd) {
|
|
|
70
76
|
result = await handleCommand(cmd);
|
|
71
77
|
}
|
|
72
78
|
catch (err) {
|
|
73
|
-
result = {
|
|
79
|
+
result = {
|
|
80
|
+
ok: false,
|
|
81
|
+
error: err instanceof Error ? err.message : String(err),
|
|
82
|
+
};
|
|
74
83
|
}
|
|
75
84
|
writeResult(result);
|
|
76
85
|
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
|