@pi-in-go/pigpen-acp 0.1.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/CREDITS.md +23 -0
- package/LICENSE +22 -0
- package/README.md +110 -0
- package/extensions/acp/cmd/pig-acp/e2e_llm_test.go +168 -0
- package/extensions/acp/cmd/pig-acp/e2e_test.go +541 -0
- package/extensions/acp/cmd/pig-acp/go.mod +6 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/agent.go +784 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/agent_builtin_test.go +536 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/agent_commands_test.go +199 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/agent_config_test.go +530 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/agent_helpers_test.go +215 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/agent_load_test.go +333 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/agent_prompt.go +289 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/agent_session_test.go +429 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/auth.go +61 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/bench_test.go +47 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/helpers_test.go +421 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/main_test.go +28 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/mutation_extra_test.go +142 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/paths.go +77 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/pisessions.go +317 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/protocol.go +188 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/server.go +218 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/server_test.go +386 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/session.go +1068 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/session_diff_test.go +183 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/session_events_test.go +443 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/session_extra_test.go +547 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/session_usage_test.go +198 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/settings.go +79 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/slash.go +278 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/slash_test.go +128 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/startup.go +156 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/store.go +118 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/store_paths_test.go +466 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/translate.go +352 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/translate_test.go +105 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/twin_test.go +28 -0
- package/extensions/acp/cmd/pig-acp/internal/acp/types.go +202 -0
- package/extensions/acp/cmd/pig-acp/internal/jsonrpc/bench_test.go +24 -0
- package/extensions/acp/cmd/pig-acp/internal/jsonrpc/jsonrpc.go +302 -0
- package/extensions/acp/cmd/pig-acp/internal/jsonrpc/jsonrpc_test.go +320 -0
- package/extensions/acp/cmd/pig-acp/internal/jsonrpc/twin_test.go +28 -0
- package/extensions/acp/cmd/pig-acp/internal/pirpc/kill_unix.go +19 -0
- package/extensions/acp/cmd/pig-acp/internal/pirpc/kill_windows.go +11 -0
- package/extensions/acp/cmd/pig-acp/internal/pirpc/process.go +530 -0
- package/extensions/acp/cmd/pig-acp/internal/pirpc/process_test.go +355 -0
- package/extensions/acp/cmd/pig-acp/internal/pirpc/twin_test.go +28 -0
- package/extensions/acp/cmd/pig-acp/main.go +177 -0
- package/extensions/acp/cmd/pig-acp/main_test.go +213 -0
- package/extensions/acp/cmd/pig-acp/sigpipe_unix.go +10 -0
- package/extensions/acp/cmd/pig-acp/sigpipe_windows.go +5 -0
- package/extensions/acp/cmd/pig-acp/testdata/ask/extension.go +28 -0
- package/extensions/acp/cmd/pig-acp/testdata/ask/go.mod +7 -0
- package/extensions/acp/cmd/pig-acp/testdata/ask/go.sum +2 -0
- package/extensions/acp/cmd/pig-acp/testdata/gate/extension.go +37 -0
- package/extensions/acp/cmd/pig-acp/testdata/gate/go.mod +7 -0
- package/extensions/acp/cmd/pig-acp/testdata/gate/go.sum +2 -0
- package/extensions/acp/cmd/pig-acp/twin_test.go +28 -0
- package/extensions/acp/extension.go +63 -0
- package/extensions/acp/extension_test.go +111 -0
- package/extensions/acp/fakehost_test.go +548 -0
- package/extensions/acp/go.mod +6 -0
- package/extensions/acp/go.sum +2 -0
- package/package.json +41 -0
- package/port/PORT.md +147 -0
- package/port/interop/package-lock.json +89 -0
- package/port/interop/package.json +13 -0
- package/port/interop/run.mjs +229 -0
- package/port/mutate.mjs +110 -0
- package/port/mutation-results.txt +107 -0
- package/port/mutations.json +748 -0
- package/port/oracle/pi-acp/LICENSE +21 -0
- package/port/oracle/pi-acp/README.md +209 -0
- package/port/oracle/pi-acp/package.json +65 -0
- package/port/oracle/pi-acp/src/acp/agent.ts +1661 -0
- package/port/oracle/pi-acp/src/acp/auth-required.ts +37 -0
- package/port/oracle/pi-acp/src/acp/auth.ts +59 -0
- package/port/oracle/pi-acp/src/acp/paths.ts +15 -0
- package/port/oracle/pi-acp/src/acp/pi-commands.ts +59 -0
- package/port/oracle/pi-acp/src/acp/pi-sessions.ts +333 -0
- package/port/oracle/pi-acp/src/acp/pi-settings.ts +75 -0
- package/port/oracle/pi-acp/src/acp/session-store.ts +68 -0
- package/port/oracle/pi-acp/src/acp/session.ts +1078 -0
- package/port/oracle/pi-acp/src/acp/slash-commands.ts +197 -0
- package/port/oracle/pi-acp/src/acp/translate/bash.ts +100 -0
- package/port/oracle/pi-acp/src/acp/translate/pi-messages.ts +17 -0
- package/port/oracle/pi-acp/src/acp/translate/pi-tools.ts +51 -0
- package/port/oracle/pi-acp/src/acp/translate/prompt.ts +71 -0
- package/port/oracle/pi-acp/src/index.ts +82 -0
- package/port/oracle/pi-acp/src/pi-rpc/command.ts +16 -0
- package/port/oracle/pi-acp/src/pi-rpc/process.ts +432 -0
- package/port/oracle/pi-acp/test/component/agent-steering-followup-modes.test.ts +143 -0
- package/port/oracle/pi-acp/test/component/session-diff.test.ts +214 -0
- package/port/oracle/pi-acp/test/component/session-events.test.ts +1102 -0
- package/port/oracle/pi-acp/test/component/session-list-and-load.test.ts +129 -0
- package/port/oracle/pi-acp/test/component/session-list-custom-session-dir.test.ts +52 -0
- package/port/oracle/pi-acp/test/component/session-list-scoped.test.ts +76 -0
- package/port/oracle/pi-acp/test/component/session-load-toolresult.test.ts +68 -0
- package/port/oracle/pi-acp/test/component/session-queue-cancel.test.ts +43 -0
- package/port/oracle/pi-acp/test/component/session-slash-commands.test.ts +37 -0
- package/port/oracle/pi-acp/test/component/session-thinking-modes.test.ts +22 -0
- package/port/oracle/pi-acp/test/component/session-title-long-session.test.ts +56 -0
- package/port/oracle/pi-acp/test/component/session-updatedAt-message-only.test.ts +57 -0
- package/port/oracle/pi-acp/test/helpers/fakes.ts +87 -0
- package/port/oracle/pi-acp/test/unit/auth-methods-terminal-auth-meta.test.ts +22 -0
- package/port/oracle/pi-acp/test/unit/builtin-commands.test.ts +60 -0
- package/port/oracle/pi-acp/test/unit/context-usage.test.ts +204 -0
- package/port/oracle/pi-acp/test/unit/merge-commands.test.ts +19 -0
- package/port/oracle/pi-acp/test/unit/model-thinking-levels.test.ts +268 -0
- package/port/oracle/pi-acp/test/unit/new-session-auth-required-when-no-models.test.ts +51 -0
- package/port/oracle/pi-acp/test/unit/new-session-pi-not-found.test.ts +26 -0
- package/port/oracle/pi-acp/test/unit/new-session-runtime-startup-errors.test.ts +148 -0
- package/port/oracle/pi-acp/test/unit/pi-command.test.ts +44 -0
- package/port/oracle/pi-acp/test/unit/pi-commands.test.ts +32 -0
- package/port/oracle/pi-acp/test/unit/pi-enable-embed-context-flag.test.ts +35 -0
- package/port/oracle/pi-acp/test/unit/pi-messages.test.ts +29 -0
- package/port/oracle/pi-acp/test/unit/pi-rpc-request-timeout.test.ts +137 -0
- package/port/oracle/pi-acp/test/unit/pi-rpc-session-path.test.ts +93 -0
- package/port/oracle/pi-acp/test/unit/pi-tools.test.ts +40 -0
- package/port/oracle/pi-acp/test/unit/prompt-to-pi-message.test.ts +74 -0
- package/port/oracle/pi-acp/test/unit/session-config-options.test.ts +217 -0
- package/port/oracle/pi-acp/test/unit/session-delete.test.ts +170 -0
- package/port/oracle/pi-acp/test/unit/session-restore.test.ts +239 -0
- package/port/oracle/pi-acp/test/unit/slash-commands.test.ts +36 -0
- package/port/oracle/pi-acp/test/unit/startup-info-env.test.ts +84 -0
- package/port/oracle/pi-acp/test/unit/startup-info-load-session.test.ts +53 -0
- package/port/oracle/pi-acp/test/unit/startup-info-project-packages.test.ts +74 -0
- package/port/oracle/pi-acp/test/unit/stdout-destroyed-does-not-crash.test.ts +32 -0
- package/port/oracle/pi-acp/test/unit/thinking-level-rpc.test.ts +43 -0
- package/port/schema/LICENSE +191 -0
- package/port/schema/schema.json +8015 -0
- package/port/upstream-tests.json +201 -0
- package/provenance.json +28 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Sergii Kozak
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# pi-acp
|
|
2
|
+
|
|
3
|
+
ACP ([Agent Client Protocol](https://agentclientprotocol.com/overview/introduction)) adapter for [`pi`](https://github.com/earendil-works/pi) coding agent (fka shitty coding agent).
|
|
4
|
+
|
|
5
|
+
`pi-acp` communicates **ACP JSON-RPC 2.0 over stdio** to an ACP client (e.g. Zed editor) and spawns `pi --mode rpc`, bridging requests/events between the two.
|
|
6
|
+
|
|
7
|
+
## Status
|
|
8
|
+
|
|
9
|
+
This is an MVP-style adapter intended to be useful today and easy to iterate on. Some ACP features may be not implemented or are not supported (see [Limitations](#limitations)). Development is centered around [Zed](https://zed.dev) editor support, other clients may have varying levels of compatibility.
|
|
10
|
+
|
|
11
|
+
Expect some minor breaking changes.
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- Streams assistant output as ACP `agent_message_chunk`
|
|
16
|
+
- Maps pi tool execution to ACP `tool_call` / `tool_call_update`
|
|
17
|
+
- Tool call locations are surfaced when available for ACP clients that support opening the referenced file/context
|
|
18
|
+
- Relative file paths from pi are resolved against the session cwd before being emitted as ACP tool locations, which enables follow-along features in clients like Zed
|
|
19
|
+
- For `edit`, `pi-acp` attempts to infer a 1-based line number from a unique `oldText` match in the pre-edit file snapshot and includes it in the emitted tool location when possible
|
|
20
|
+
- For `edit`, `pi-acp` snapshots the file before the tool runs and emits an ACP **structured diff** (`oldText`/`newText`) on completion when possible
|
|
21
|
+
- Session persistence
|
|
22
|
+
- pi stores its own sessions in `~/.pi/agent/sessions/...`
|
|
23
|
+
- `pi-acp` stores a small mapping file at `~/.pi/pi-acp/session-map.json` so `session/load` can reattach to a previous pi session file
|
|
24
|
+
- Slash commands
|
|
25
|
+
- Loads file-based slash commands compatible with pi’s conventions
|
|
26
|
+
- Adds a small set of built-in commands for headless/editor usage
|
|
27
|
+
- Supports skill commands (if enabled in pi settings, they appear as `/skill:skill-name` in the ACP client)
|
|
28
|
+
- Context window usage
|
|
29
|
+
- Reports pi's real context occupancy (`get_session_stats` → `contextUsage`) to the client as ACP `usage_update` after each turn, on `session/new` and `session/load`, and after a model switch
|
|
30
|
+
- Requires a pi version whose `get_session_stats` response includes `contextUsage`; otherwise no usage is reported
|
|
31
|
+
- Right after compaction pi may not have a trustworthy token count yet, so the client keeps the previous value until the next model response
|
|
32
|
+
- Skills are loaded by pi directly and are available in ACP sessions
|
|
33
|
+
- (Zed) `pi-acp` emits “startup info” block into the session (pi version, context, skills, prompts, extensions - similar to `pi` in the terminal). You can disable it by setting `quietStartup: true` in pi settings (`~/.pi/agent/settings.json` or `<project>/.pi/settings.json`). When `quietStartup` is enabled, `pi-acp` will still emit a 'New version available' message if the installed pi version is outdated.
|
|
34
|
+
- (Zed) Session history is supported in Zed starting with [`v0.225.0`](https://zed.dev/releases/preview/0.225.0). Session loading / history maps to pi's session files. Sessions can be resumed both in `pi` and in the ACP client.
|
|
35
|
+
|
|
36
|
+
## Prerequisites
|
|
37
|
+
|
|
38
|
+
Make sure pi is installed
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install -g @earendil-works/pi-coding-agent
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
- Node.js 22+
|
|
45
|
+
- `pi` v0.81.0+ installed and available on your `PATH` (the adapter runs the `pi` executable)
|
|
46
|
+
- Configure `pi` separately for your model providers/API keys
|
|
47
|
+
|
|
48
|
+
## Install
|
|
49
|
+
|
|
50
|
+
### Add pi-acp to your ACP client, e.g. [Zed](https://zed.dev/docs/agents/external-agents/)
|
|
51
|
+
|
|
52
|
+
#### Using ACP Registry in Zed or other clients that support it:
|
|
53
|
+
|
|
54
|
+
In Zed launch the registry with `zed: acp registry` command and select `pi ACP` adapter from the list. This will automatically add the agent server configuration to your `settings.json` and keep it up to date:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
"agent_servers": {
|
|
58
|
+
"pi-acp": {
|
|
59
|
+
"type": "registry",
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
#### Using with `npx` (no global install needed, always loads the latest version):
|
|
65
|
+
|
|
66
|
+
Add the following to your Zed `settings.json`:
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
"agent_servers": {
|
|
70
|
+
"pi": {
|
|
71
|
+
"type": "custom",
|
|
72
|
+
"command": "npx",
|
|
73
|
+
"args": ["-y", "pi-acp"],
|
|
74
|
+
"env": {}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### Global install
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
npm install -g pi-acp
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
"agent_servers": {
|
|
87
|
+
"pi": {
|
|
88
|
+
"type": "custom",
|
|
89
|
+
"command": "pi-acp",
|
|
90
|
+
"args": [],
|
|
91
|
+
"env": {}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### From source
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npm install
|
|
100
|
+
npm run build
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Point your ACP client to the built `dist/index.js`:
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
"agent_servers": {
|
|
107
|
+
"pi": {
|
|
108
|
+
"type": "custom",
|
|
109
|
+
"command": "node",
|
|
110
|
+
"args": ["/path/to/pi-acp/dist/index.js"],
|
|
111
|
+
"env": {}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Environment variables
|
|
117
|
+
|
|
118
|
+
- `PI_ACP_ENABLE_EMBEDDED_CONTEXT=true` advertises ACP `promptCapabilities.embeddedContext` support to the client.
|
|
119
|
+
- Default: unset/any other value means `false`.
|
|
120
|
+
- When disabled, compliant ACP clients should avoid sending embedded `resource` blocks. If they send them anyway, `pi-acp` still degrades gracefully by converting them into plain-text prompt context.
|
|
121
|
+
|
|
122
|
+
You can add the environment variable in the Zed settings with:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
"agent_servers": {
|
|
126
|
+
"pi": {
|
|
127
|
+
"type": "custom",
|
|
128
|
+
"command": "node",
|
|
129
|
+
"args": ["/path/to/pi-acp/dist/index.js"],
|
|
130
|
+
"env": {
|
|
131
|
+
"PI_ACP_ENABLE_EMBEDDED_CONTEXT": "true",
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Slash commands
|
|
138
|
+
|
|
139
|
+
`pi-acp` supports slash commands:
|
|
140
|
+
|
|
141
|
+
#### 1) File-based commands (aka prompts)
|
|
142
|
+
|
|
143
|
+
Loaded from:
|
|
144
|
+
|
|
145
|
+
- User commands: `~/.pi/agent/prompts/**/*.md`
|
|
146
|
+
- Project commands: `<cwd>/.pi/prompts/**/*.md`
|
|
147
|
+
|
|
148
|
+
#### 2) Built-in commands
|
|
149
|
+
|
|
150
|
+
- `/compact [instructions...]` – run pi compaction (optionally with custom instructions)
|
|
151
|
+
- `/autocompact on|off|toggle` – toggle automatic compaction
|
|
152
|
+
- `/export` – export the current session to HTML in the session `cwd`
|
|
153
|
+
- `/session` – show session stats (tokens/messages/cost/session file)
|
|
154
|
+
- `/name <name>` – set session display name
|
|
155
|
+
- `/queue all|one-at-a-time` – set pi queue mode (unstable feature)
|
|
156
|
+
- `/changelog` – print the installed pi changelog (best-effort)
|
|
157
|
+
- `/steering` - maps to `pi` Steering Mode, get/set
|
|
158
|
+
- `/follow-up` - pats to `pi` Follow-up Mode, get/set
|
|
159
|
+
|
|
160
|
+
Other built-in commands:
|
|
161
|
+
|
|
162
|
+
- `/model` - not implemented (use the model selector UI in Zed)
|
|
163
|
+
- `/thinking` - maps to 'mode' selector in Zed
|
|
164
|
+
- `/clear` - not implemented (use ACP client 'new' command)
|
|
165
|
+
|
|
166
|
+
#### 3) Skill commands
|
|
167
|
+
|
|
168
|
+
- Skill commands can be enabled in pi settings and will appear in the slash command list in ACP client as `/skill:skill-name`.
|
|
169
|
+
|
|
170
|
+
**Note**: Slash commands provided by pi extensions are not currently supported.
|
|
171
|
+
|
|
172
|
+
## Authentication (ACP Registry support)
|
|
173
|
+
|
|
174
|
+
This agent supports **Terminal Auth** for the [ACP Registry](https://agentclientprotocol.com/get-started/registry).
|
|
175
|
+
In Zed, this will show an **Authenticate** banner that launches pi in a terminal.
|
|
176
|
+
Launch pi in a terminal for interactive login/setup:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
pi-acp --terminal-login
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Your ACP client can also invoke this automatically based on the agent's advertised `authMethods`.
|
|
183
|
+
|
|
184
|
+
## Development
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npm install
|
|
188
|
+
npm run dev # run from src via tsx
|
|
189
|
+
npm run build
|
|
190
|
+
npm run lint
|
|
191
|
+
npm run test
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Project layout:
|
|
195
|
+
|
|
196
|
+
- `src/acp/*` – ACP server + translation layer
|
|
197
|
+
- `src/pi-rpc/*` – pi subprocess wrapper (RPC protocol)
|
|
198
|
+
|
|
199
|
+
## Limitations
|
|
200
|
+
|
|
201
|
+
- No ACP filesystem delegation (`fs/*`) and no ACP terminal delegation (`terminal/*`). pi reads/writes and executes locally.
|
|
202
|
+
- MCP servers are accepted in ACP params and stored in session state, but not wired through to pi in this adapter. If you use [pi MCP adapter](https://github.com/nicobailon/pi-mcp-adapter) it will be available in the ACP client.
|
|
203
|
+
- Assistant streaming is currently sent as `agent_message_chunk` (no separate thought stream).
|
|
204
|
+
- Queue is implemented client-side and should work like pi's `one-at-a-time`
|
|
205
|
+
- ~~ACP clients don't yet suport session history, but ACP sessions from `pi-acp` can be `/resume`d in pi directly~~
|
|
206
|
+
|
|
207
|
+
## License
|
|
208
|
+
|
|
209
|
+
MIT (see [LICENSE](LICENSE)).
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-acp",
|
|
3
|
+
"version": "0.0.34",
|
|
4
|
+
"description": "ACP adapter for pi coding agent",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Sergii Kozak <svkozak@gmail.com>",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/svkozak/pi-acp.git"
|
|
10
|
+
},
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public",
|
|
13
|
+
"provenance": true
|
|
14
|
+
},
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/svkozak/pi-acp/issues"
|
|
17
|
+
},
|
|
18
|
+
"homepage": "https://github.com/svkozak/pi-acp#readme",
|
|
19
|
+
"keywords": [
|
|
20
|
+
"acp",
|
|
21
|
+
"agent-client-protocol",
|
|
22
|
+
"pi-coding-agent",
|
|
23
|
+
"adapter"
|
|
24
|
+
],
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=20"
|
|
27
|
+
},
|
|
28
|
+
"type": "module",
|
|
29
|
+
"main": "dist/index.js",
|
|
30
|
+
"bin": {
|
|
31
|
+
"pi-acp": "dist/index.js"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"dev": "tsx src/index.ts",
|
|
38
|
+
"build": "tsup",
|
|
39
|
+
"start": "node dist/index.js",
|
|
40
|
+
"format": "prettier . --write",
|
|
41
|
+
"typecheck": "tsc --noEmit",
|
|
42
|
+
"lint": "eslint .",
|
|
43
|
+
"test": "node --import tsx --test test/**/*.test.ts",
|
|
44
|
+
"smoke": "node scripts/smoke-acp.mjs",
|
|
45
|
+
"prepack": "npm run build",
|
|
46
|
+
"prepublishOnly": "npm run test && npm run build"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@agentclientprotocol/sdk": "^0.26.0",
|
|
50
|
+
"cross-spawn": "^7.0.6",
|
|
51
|
+
"zod": "^3.25.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@eslint/js": "^9.17.0",
|
|
55
|
+
"@types/cross-spawn": "^6.0.6",
|
|
56
|
+
"@types/node": "^22.0.0",
|
|
57
|
+
"eslint": "^9.17.0",
|
|
58
|
+
"globals": "^15.14.0",
|
|
59
|
+
"prettier": "^3.8.3",
|
|
60
|
+
"tsup": "^8.0.0",
|
|
61
|
+
"tsx": "^4.0.0",
|
|
62
|
+
"typescript": "^5.6.0",
|
|
63
|
+
"typescript-eslint": "^8.18.0"
|
|
64
|
+
}
|
|
65
|
+
}
|