@moxxy/plugin-provider-acp 0.0.0-stage → 0.46.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/LICENSE +21 -0
- package/dist/acp-session.d.ts +201 -0
- package/dist/acp-session.d.ts.map +1 -0
- package/dist/acp-session.js +812 -0
- package/dist/acp-session.js.map +1 -0
- package/dist/agent-provider.d.ts +71 -0
- package/dist/agent-provider.d.ts.map +1 -0
- package/dist/agent-provider.js +203 -0
- package/dist/agent-provider.js.map +1 -0
- package/dist/agents.d.ts +23 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +21 -0
- package/dist/agents.js.map +1 -0
- package/dist/constants.d.ts +31 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +31 -0
- package/dist/constants.js.map +1 -0
- package/dist/executable.d.ts +47 -0
- package/dist/executable.d.ts.map +1 -0
- package/dist/executable.js +106 -0
- package/dist/executable.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/login.d.ts +48 -0
- package/dist/login.d.ts.map +1 -0
- package/dist/login.js +180 -0
- package/dist/login.js.map +1 -0
- package/dist/opencode-api.d.ts +32 -0
- package/dist/opencode-api.d.ts.map +1 -0
- package/dist/opencode-api.js +86 -0
- package/dist/opencode-api.js.map +1 -0
- package/dist/opencode-helpers.d.ts +49 -0
- package/dist/opencode-helpers.d.ts.map +1 -0
- package/dist/opencode-helpers.js +175 -0
- package/dist/opencode-helpers.js.map +1 -0
- package/dist/protocol.d.ts +143 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +7 -0
- package/dist/protocol.js.map +1 -0
- package/dist/rules.d.ts +47 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +84 -0
- package/dist/rules.js.map +1 -0
- package/dist/translate.d.ts +50 -0
- package/dist/translate.d.ts.map +1 -0
- package/dist/translate.js +290 -0
- package/dist/translate.js.map +1 -0
- package/package.json +81 -3
- package/src/acp-session.ts +892 -0
- package/src/agent-cli.test.ts +76 -0
- package/src/agent-provider.test.ts +1137 -0
- package/src/agent-provider.ts +234 -0
- package/src/agents.ts +37 -0
- package/src/constants.ts +36 -0
- package/src/event-coverage.test.ts +65 -0
- package/src/executable.test.ts +89 -0
- package/src/executable.ts +143 -0
- package/src/fake-opencode.testkit.ts +755 -0
- package/src/fixtures/acp-session-updates.json +19 -0
- package/src/index.test.ts +69 -0
- package/src/index.ts +83 -0
- package/src/login.test.ts +155 -0
- package/src/login.ts +222 -0
- package/src/opencode-api.ts +105 -0
- package/src/opencode-helpers.test.ts +76 -0
- package/src/opencode-helpers.ts +195 -0
- package/src/protocol.ts +104 -0
- package/src/rules.test.ts +107 -0
- package/src/rules.ts +102 -0
- package/src/translate.test.ts +253 -0
- package/src/translate.ts +318 -0
- package/README.md +0 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Moxxy (moxxy.ai)
|
|
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,201 @@
|
|
|
1
|
+
import type { Readable, Writable } from 'node:stream';
|
|
2
|
+
import { type AgentStepEvent, type AgentStepRequest, type Skill, type ToolDef } from '@moxxy/sdk';
|
|
3
|
+
import { type LiveSession } from '@moxxy/agent-connection-kit';
|
|
4
|
+
import type { AcpAgentSpec } from './agents.js';
|
|
5
|
+
import { type OpenCodeApi } from './opencode-api.js';
|
|
6
|
+
import { type ReadAgentMcpServers, type ReadAgentRules } from './rules.js';
|
|
7
|
+
/** A running ACP agent (`opencode acp`): its stdout, stdin and stderr. */
|
|
8
|
+
export interface AcpConnection {
|
|
9
|
+
readonly readable: Readable;
|
|
10
|
+
readonly writable: Writable;
|
|
11
|
+
readonly stderr?: Readable;
|
|
12
|
+
/** OpenCode's HTTP API, where it reports its subagents; without it Moxxy sees no background work. */
|
|
13
|
+
readonly api?: OpenCodeApi;
|
|
14
|
+
close(): void;
|
|
15
|
+
}
|
|
16
|
+
export type StartAcpAgent = (opts: {
|
|
17
|
+
readonly cwd: string;
|
|
18
|
+
readonly env?: Readonly<Record<string, string>>;
|
|
19
|
+
}) => Promise<AcpConnection>;
|
|
20
|
+
export interface AcpSessionSettings {
|
|
21
|
+
readonly agent: AcpAgentSpec;
|
|
22
|
+
readonly start: StartAcpAgent;
|
|
23
|
+
readonly cwd: string;
|
|
24
|
+
/** The conversation's agent session from an earlier process, to load. */
|
|
25
|
+
readonly resume?: string;
|
|
26
|
+
/** How the person's agent runs; without it Moxxy leaves the agent's own rules and the conversation's auto-approve alone. */
|
|
27
|
+
readonly readRules?: ReadAgentRules;
|
|
28
|
+
/** The agent's own MCP servers: Moxxy's server of the same name is left to the agent's. */
|
|
29
|
+
readonly readMcpServers?: ReadAgentMcpServers;
|
|
30
|
+
/** Every Moxxy tool of the conversation: the agent reads the list as the session opens, and again on a notice. */
|
|
31
|
+
readonly tools?: ReadonlyArray<ToolDef>;
|
|
32
|
+
/** The conversation's Moxxy skills: the agent reads those meant for it through one more Moxxy tool. */
|
|
33
|
+
readonly skills?: ReadonlyArray<Skill>;
|
|
34
|
+
/** The agent started a turn by itself while no Moxxy turn runs (a background subagent finished); `name` says why, `workId` which work. */
|
|
35
|
+
readonly onAgentTurn?: (name: string, workId?: string) => void;
|
|
36
|
+
/** What the agent's background work did, for the conversation to record at once: its list, a subagent's steps and end. */
|
|
37
|
+
readonly onActivity?: (events: ReadonlyArray<AgentStepEvent>) => void;
|
|
38
|
+
}
|
|
39
|
+
export declare const CLIENT_CAPABILITIES: {
|
|
40
|
+
readonly fs: {
|
|
41
|
+
readonly readTextFile: false;
|
|
42
|
+
readonly writeTextFile: false;
|
|
43
|
+
};
|
|
44
|
+
readonly terminal: false;
|
|
45
|
+
};
|
|
46
|
+
/** Moxxy tools the agent lacks, lent over MCP for this turn. */
|
|
47
|
+
export declare function toolsLentTo(agent: AcpAgentSpec, tools: ReadonlyArray<ToolDef>): ToolDef[];
|
|
48
|
+
/**
|
|
49
|
+
* One running ACP agent with one session for one Moxxy conversation. Every
|
|
50
|
+
* message the person sends is the next prompt of the same session, so the
|
|
51
|
+
* agent keeps its context between turns. The agent's notifications, its
|
|
52
|
+
* permission asks and Moxxy tool calls over MCP are queued together and
|
|
53
|
+
* handled in order, so the log shows a call before the decision about it.
|
|
54
|
+
*/
|
|
55
|
+
export declare class AcpAgentSession implements LiveSession {
|
|
56
|
+
readonly settings: AcpSessionSettings;
|
|
57
|
+
private readonly mcp;
|
|
58
|
+
private readonly inbox;
|
|
59
|
+
private client;
|
|
60
|
+
private connection;
|
|
61
|
+
/** A replacement agent is loading the session: what it replays is history. */
|
|
62
|
+
private loading;
|
|
63
|
+
private alive;
|
|
64
|
+
private closed;
|
|
65
|
+
private inTurn;
|
|
66
|
+
private sessionId;
|
|
67
|
+
private options;
|
|
68
|
+
/** The agent mode the person's setup starts in, restored after plan mode. */
|
|
69
|
+
private ownMode;
|
|
70
|
+
/** Why the person declined, for the next message when the turn ended first. */
|
|
71
|
+
private pendingNotes;
|
|
72
|
+
/** The Moxxy tools the agent is shown: every one of the conversation, the same in every mode. */
|
|
73
|
+
private listed;
|
|
74
|
+
/** The Moxxy skills the agent is offered. */
|
|
75
|
+
private offered;
|
|
76
|
+
/** Names of the agent's own commands and skills, as it last announced them. */
|
|
77
|
+
private ownCommands;
|
|
78
|
+
private commandsHeard;
|
|
79
|
+
private commandsAwaited;
|
|
80
|
+
private readonly commandWakers;
|
|
81
|
+
/** The session is new while the conversation may already have run: its first prompt carries the conversation so far. */
|
|
82
|
+
private newSession;
|
|
83
|
+
private stderr;
|
|
84
|
+
/** No turn has shown the conversation yet how the agent runs. */
|
|
85
|
+
private fresh;
|
|
86
|
+
/** The agent's own rules, once read; `null` when it cannot say. */
|
|
87
|
+
private ownRules;
|
|
88
|
+
private ownMcpServers;
|
|
89
|
+
/** This agent was started to ask before what its own rules allow. */
|
|
90
|
+
private asking;
|
|
91
|
+
/** Whether Moxxy answers the agent's asks for the person in this turn. */
|
|
92
|
+
private autoApprove;
|
|
93
|
+
/** Auto-approve is on because Moxxy turned it on, not because the person chose it. */
|
|
94
|
+
private adopted;
|
|
95
|
+
/** The agent can list its sessions, which tells a gone session from a failed load. */
|
|
96
|
+
private canList;
|
|
97
|
+
/** A replacement agent could not load the session: the next turn starts the agent again. */
|
|
98
|
+
private broken;
|
|
99
|
+
/** OpenCode's events, read while its HTTP API is up. */
|
|
100
|
+
private watch;
|
|
101
|
+
/** The subagents OpenCode runs, read from its events. */
|
|
102
|
+
private readonly helpers;
|
|
103
|
+
/** Subagents whose start the conversation has seen; the steps of others wait for it. */
|
|
104
|
+
private readonly shownHelpers;
|
|
105
|
+
private readonly heldSteps;
|
|
106
|
+
/** The background work last reported, to report it again only when it changes. */
|
|
107
|
+
private shownWork;
|
|
108
|
+
/** OpenCode started a turn by itself and the conversation was asked for one to show it. */
|
|
109
|
+
private agentTurnPending;
|
|
110
|
+
/** A turn reads the one OpenCode started by itself. */
|
|
111
|
+
private readingOwnTurn;
|
|
112
|
+
/** OpenCode's session works now, as its events last said. */
|
|
113
|
+
private agentBusy;
|
|
114
|
+
private settleTimer;
|
|
115
|
+
/** This turn showed the account limit reached. */
|
|
116
|
+
private limitShown;
|
|
117
|
+
static start(settings: AcpSessionSettings): Promise<AcpAgentSession>;
|
|
118
|
+
private constructor();
|
|
119
|
+
/** The client for a running agent, its notifications and asks queued for the turn. */
|
|
120
|
+
private listen;
|
|
121
|
+
get isAlive(): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* The agent lists its commands just after its session opens, maybe after the
|
|
124
|
+
* turn began: the first turn waits for that list, an agent that never sends
|
|
125
|
+
* one only briefly.
|
|
126
|
+
*/
|
|
127
|
+
private hearCommands;
|
|
128
|
+
/** A Moxxy skill named like one of the agent's own commands or skills is left to the agent's. */
|
|
129
|
+
private skillsFor;
|
|
130
|
+
/** Whether this agent was started where the turn runs (a running session cannot move). */
|
|
131
|
+
fits(settings: Pick<AcpSessionSettings, 'cwd'>): boolean;
|
|
132
|
+
turn(req: AgentStepRequest): AsyncGenerator<AgentStepEvent>;
|
|
133
|
+
/** Stop one subagent OpenCode runs in the background (`AgentBackgroundWork.id`); `false` when it runs no such work. */
|
|
134
|
+
stopWork(workId: string): Promise<boolean>;
|
|
135
|
+
close(): Promise<void>;
|
|
136
|
+
/** The agent's own MCP servers that are on, read once. */
|
|
137
|
+
private mcpServers;
|
|
138
|
+
/** The rules of the agent the person runs, read once. */
|
|
139
|
+
private rules;
|
|
140
|
+
/**
|
|
141
|
+
* With auto-approve off the agent asks before what its own rules allow:
|
|
142
|
+
* it is started again with those rules turned into asks (for this process
|
|
143
|
+
* only, nothing written to its config) and loads the same session. Once
|
|
144
|
+
* started so it stays, and Moxxy answers its asks while auto-approve is on.
|
|
145
|
+
*/
|
|
146
|
+
private askFromNowOn;
|
|
147
|
+
private open;
|
|
148
|
+
/**
|
|
149
|
+
* Whether a session the agent failed to load no longer exists. OpenCode 1.18
|
|
150
|
+
* answers a missing session as it answers a failure ("OpenCode service
|
|
151
|
+
* failure"), so its session list decides; an agent that can say neither
|
|
152
|
+
* keeps the session as existing, and nothing replaces it.
|
|
153
|
+
*/
|
|
154
|
+
private sessionGone;
|
|
155
|
+
/** How full OpenCode's context is (`used`) and the window it runs the turn's model with (`size`), from its `usage_update`. */
|
|
156
|
+
private contextOf;
|
|
157
|
+
/** Model, effort and mode for this turn, changed on the session only where they differ. */
|
|
158
|
+
private configure;
|
|
159
|
+
private option;
|
|
160
|
+
private set;
|
|
161
|
+
/** One prompt, read until the agent answers it. False when the turn is over without it (stopped, failed). */
|
|
162
|
+
private prompt;
|
|
163
|
+
/** What the agent asked of Moxxy, answered with the turn's host. */
|
|
164
|
+
private answer;
|
|
165
|
+
/**
|
|
166
|
+
* A turn OpenCode started by itself: a background subagent finished and
|
|
167
|
+
* OpenCode prompted its session with the result. It is read until OpenCode's
|
|
168
|
+
* session is idle again; its asks and Moxxy tool calls are answered as in any turn.
|
|
169
|
+
*/
|
|
170
|
+
private ownTurn;
|
|
171
|
+
/** One ACP update of the conversation's session as agent events. */
|
|
172
|
+
private shown;
|
|
173
|
+
/** The events, each subagent's start followed by the steps it took before the conversation saw it start. */
|
|
174
|
+
private withHeldSteps;
|
|
175
|
+
/** Start reading the events of the OpenCode in use, when it serves its HTTP API. */
|
|
176
|
+
private watchEvents;
|
|
177
|
+
/** Stop reading OpenCode's events: its subagents end with it. */
|
|
178
|
+
private unwatch;
|
|
179
|
+
private onEvent;
|
|
180
|
+
/**
|
|
181
|
+
* A subagent's step: in the turn that waits for it, or recorded at once for
|
|
182
|
+
* one working in the background. A step of a subagent whose start the
|
|
183
|
+
* conversation has not seen waits for it.
|
|
184
|
+
*/
|
|
185
|
+
private deliver;
|
|
186
|
+
/** Whether an ACP update outside any turn shows the agent at work in the conversation's session. */
|
|
187
|
+
private startsOwnTurn;
|
|
188
|
+
private askForTurn;
|
|
189
|
+
/** The turn OpenCode started by itself is over once its session is idle and ACP has been quiet a moment. */
|
|
190
|
+
private settleSoon;
|
|
191
|
+
private clearSettle;
|
|
192
|
+
/** What OpenCode runs in the background now; reported when it changes. */
|
|
193
|
+
private reportWork;
|
|
194
|
+
private report;
|
|
195
|
+
private failureMessage;
|
|
196
|
+
private ended;
|
|
197
|
+
private endedMessage;
|
|
198
|
+
/** Answer whatever is still queued once no turn can: the agent must never wait on Moxxy forever. */
|
|
199
|
+
private dismissQueued;
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=acp-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-session.d.ts","sourceRoot":"","sources":["../src/acp-session.ts"],"names":[],"mappings":"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"}
|