@skelm/opencode 0.3.6 → 0.3.8
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 +36 -14
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +14 -12
- package/dist/backend.js.map +1 -1
- package/dist/client.d.ts +13 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +164 -8
- package/dist/client.js.map +1 -1
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -18,36 +18,58 @@ You also need an Opencode runtime — the package speaks to a running Opencode s
|
|
|
18
18
|
|
|
19
19
|
## Quick Start
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
import { agent, pipeline } from 'skelm'
|
|
23
|
-
import { createOpencodeBackend } from '@skelm/opencode'
|
|
21
|
+
Register the backend in `skelm.config.ts`:
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
```ts
|
|
24
|
+
// skelm.config.ts
|
|
25
|
+
import { defineConfig } from 'skelm'
|
|
26
|
+
import { createOpencodeBackendFromConfig } from '@skelm/opencode'
|
|
27
|
+
|
|
28
|
+
export default defineConfig({
|
|
29
|
+
backends: { agent: 'opencode' },
|
|
30
|
+
instances: [
|
|
31
|
+
createOpencodeBackendFromConfig({
|
|
32
|
+
id: 'opencode',
|
|
33
|
+
agent: 'build', // 'build', 'plan', or a custom opencode agent id
|
|
34
|
+
apiKey: { secret: 'OPENCODE_API_KEY' },
|
|
35
|
+
}),
|
|
36
|
+
],
|
|
28
37
|
})
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
A workflow that applies a fix to a codebase:
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
// workflows/fix-bug.workflow.ts
|
|
44
|
+
import { agent, pipeline } from 'skelm'
|
|
45
|
+
import { z } from 'zod'
|
|
29
46
|
|
|
30
47
|
export default pipeline({
|
|
31
48
|
id: 'fix-bug',
|
|
49
|
+
input: z.object({ description: z.string() }),
|
|
50
|
+
output: z.object({ summary: z.string() }),
|
|
32
51
|
steps: [
|
|
33
52
|
agent({
|
|
34
53
|
id: 'patch',
|
|
35
|
-
backend: opencode,
|
|
36
|
-
|
|
54
|
+
backend: 'opencode',
|
|
55
|
+
prompt: (ctx) => `Fix the following bug and return a JSON summary {summary}:\n${ctx.input.description}`,
|
|
37
56
|
permissions: {
|
|
38
|
-
allowedTools:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
57
|
+
allowedTools: [],
|
|
58
|
+
allowedExecutables: ['npm', 'pnpm', 'tsc'],
|
|
59
|
+
allowedMcpServers: [],
|
|
60
|
+
allowedSkills: [],
|
|
61
|
+
fsRead: ['./src'],
|
|
62
|
+
fsWrite: ['./src'],
|
|
63
|
+
networkEgress: { allowHosts: ['registry.npmjs.org'] },
|
|
43
64
|
},
|
|
65
|
+
output: z.object({ summary: z.string() }),
|
|
44
66
|
maxTurns: 12,
|
|
45
67
|
}),
|
|
46
68
|
],
|
|
47
69
|
})
|
|
48
70
|
```
|
|
49
71
|
|
|
50
|
-
|
|
72
|
+
`createOpencodeBackendFromConfig` lets `@skelm/gateway` supervise the Opencode server lifecycle. For a short-lived instance, use `createOpencodeBackend` and pass your own server URL.
|
|
51
73
|
|
|
52
74
|
## What's exported
|
|
53
75
|
|
package/dist/backend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,YAAY,EACb,MAAM,aAAa,CAAA;AAOpB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAExD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,YAAY,EACb,MAAM,aAAa,CAAA;AAOpB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAExD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,YAAY,CAsFnF;AAwCD;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAChD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,YAAY,CA+Bf"}
|
package/dist/backend.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { loadSkillBodies } from '@skelm/core';
|
|
2
2
|
import { OpencodeClientWrapper } from './client.js';
|
|
3
3
|
import { buildPermissionAuditEntry, mapSkelmPermissionsToOpencode, validatePermissions, } from './permission-mapper.js';
|
|
4
4
|
/**
|
|
@@ -54,7 +54,7 @@ export function createOpencodeBackend(options) {
|
|
|
54
54
|
// Signal and timeout are threaded directly into prompt(); no separate
|
|
55
55
|
// cancel() listener needed — the SSE loop handles abort internally.
|
|
56
56
|
try {
|
|
57
|
-
const result = await client.prompt(enrichedRequest, context.signal, options.timeout, policy);
|
|
57
|
+
const result = await client.prompt(enrichedRequest, context.signal, options.timeout, policy, context.onPartial);
|
|
58
58
|
return result;
|
|
59
59
|
}
|
|
60
60
|
catch (error) {
|
|
@@ -80,17 +80,18 @@ export function createOpencodeBackend(options) {
|
|
|
80
80
|
return backend;
|
|
81
81
|
}
|
|
82
82
|
async function injectSkills(req, ctx) {
|
|
83
|
-
|
|
83
|
+
const prefixParts = [];
|
|
84
|
+
if (req.agentDef?.soul !== undefined)
|
|
85
|
+
prefixParts.push(req.agentDef.soul);
|
|
86
|
+
if (req.agentDef !== undefined)
|
|
87
|
+
prefixParts.push(req.agentDef.instructions);
|
|
88
|
+
const skillParts = await loadSkillBodies(req, ctx);
|
|
89
|
+
if (prefixParts.length === 0 && skillParts.length === 0)
|
|
84
90
|
return req;
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
skillParts.push(formatSkillBlock(skill));
|
|
90
|
-
}
|
|
91
|
-
if (skillParts.length === 0)
|
|
92
|
-
return req;
|
|
93
|
-
const systemParts = req.system !== undefined ? [req.system, ...skillParts] : skillParts;
|
|
91
|
+
const systemParts = [...prefixParts];
|
|
92
|
+
if (req.system !== undefined)
|
|
93
|
+
systemParts.push(req.system);
|
|
94
|
+
systemParts.push(...skillParts);
|
|
94
95
|
return { ...req, system: systemParts.join('\n\n---\n\n') };
|
|
95
96
|
}
|
|
96
97
|
/**
|
|
@@ -111,6 +112,7 @@ function createEmptyPolicy() {
|
|
|
111
112
|
allowedExecutables: new Set(),
|
|
112
113
|
allowedMcpServers: new Set(),
|
|
113
114
|
allowedSkills: new Set(),
|
|
115
|
+
allowedSecrets: new Set(),
|
|
114
116
|
networkEgress: 'deny',
|
|
115
117
|
fsRead: new Set(),
|
|
116
118
|
fsWrite: new Set(),
|
package/dist/backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare class OpencodeClientWrapper {
|
|
|
5
5
|
private client;
|
|
6
6
|
private startPromise;
|
|
7
7
|
private readonly options;
|
|
8
|
+
private readonly attachedMcp;
|
|
8
9
|
constructor(options: OpencodeBackendOptions);
|
|
9
10
|
/** Ensure the opencode server is running. Safe to call concurrently. */
|
|
10
11
|
ensureStarted(): Promise<void>;
|
|
@@ -12,8 +13,19 @@ export declare class OpencodeClientWrapper {
|
|
|
12
13
|
start(): Promise<void>;
|
|
13
14
|
private _start;
|
|
14
15
|
private _handleExit;
|
|
15
|
-
prompt(request: AgentRequest, signal: AbortSignal, timeoutMs?: number, resolvedPolicy?: ResolvedPolicy): Promise<AgentResponse>;
|
|
16
|
+
prompt(request: AgentRequest, signal: AbortSignal, timeoutMs?: number, resolvedPolicy?: ResolvedPolicy, onPartial?: (delta: string) => void): Promise<AgentResponse>;
|
|
16
17
|
private _collectFromStream;
|
|
18
|
+
private _attachMcpServers;
|
|
19
|
+
private _decidePermission;
|
|
17
20
|
dispose(): Promise<void>;
|
|
18
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Encode an egress token into the credential field of a proxy URL so that
|
|
24
|
+
* standard HTTP clients automatically send `Proxy-Authorization: Basic
|
|
25
|
+
* <base64(token:<egressToken>)>`. The token (and the literal "token"
|
|
26
|
+
* username) are URL-encoded for safety.
|
|
27
|
+
*
|
|
28
|
+
* Exported for testing.
|
|
29
|
+
*/
|
|
30
|
+
export declare function encodeProxyUrlWithToken(proxyUrl: string, token: string | undefined): string;
|
|
19
31
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAmB,cAAc,EAAE,MAAM,aAAa,CAAA;AAE/F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAwCxD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAIhD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;gBAEpC,OAAO,EAAE,sBAAsB;IAI3C,wEAAwE;IAClE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC,gFAAgF;IAC1E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAId,MAAM;IA+EpB,OAAO,CAAC,WAAW;IAQb,MAAM,CACV,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,WAAW,EACnB,SAAS,SAAU,EACnB,cAAc,CAAC,EAAE,cAAc,EAC/B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAClC,OAAO,CAAC,aAAa,CAAC;YA8DX,kBAAkB;YA6GlB,iBAAiB;IAkC/B,OAAO,CAAC,iBAAiB;IAenB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAU3F"}
|
package/dist/client.js
CHANGED
|
@@ -8,11 +8,41 @@
|
|
|
8
8
|
// #3 — Non-blocking promptAsync + SSE stream instead of blocking session.prompt()
|
|
9
9
|
import { spawn } from 'node:child_process'; // @subprocess-ok: spawns opencode serve for HTTP backend
|
|
10
10
|
import { createOpencodeClient } from '@opencode-ai/sdk';
|
|
11
|
+
import { TrustEnforcer } from '@skelm/core';
|
|
12
|
+
// Module-singleton process-exit hook. Without this, every OpencodeClientWrapper
|
|
13
|
+
// that called process.once('SIGTERM', …) would add a fresh listener, tripping
|
|
14
|
+
// Node's MaxListeners=10 warning under any non-trivial backend churn. Wrappers
|
|
15
|
+
// register their child process here on spawn and unregister in dispose; the
|
|
16
|
+
// hook iterates the live set on signal and SIGTERMs each child.
|
|
17
|
+
const liveChildren = new Set();
|
|
18
|
+
let signalHookInstalled = false;
|
|
19
|
+
function ensureSignalHook() {
|
|
20
|
+
if (signalHookInstalled)
|
|
21
|
+
return;
|
|
22
|
+
signalHookInstalled = true;
|
|
23
|
+
const cleanup = () => {
|
|
24
|
+
for (const proc of liveChildren) {
|
|
25
|
+
try {
|
|
26
|
+
proc.kill('SIGTERM');
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
/* best-effort */
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
process.on('SIGTERM', cleanup);
|
|
34
|
+
process.on('SIGINT', cleanup);
|
|
35
|
+
process.on('exit', cleanup);
|
|
36
|
+
}
|
|
11
37
|
export class OpencodeClientWrapper {
|
|
12
38
|
proc = null;
|
|
13
39
|
client = null;
|
|
14
40
|
startPromise = null;
|
|
15
41
|
options;
|
|
42
|
+
// Track per-server-instance MCP attachments so we add() each one only once
|
|
43
|
+
// even when the same skelm process drives many sessions through the same
|
|
44
|
+
// opencode subprocess. Keyed by McpServerConfig.id.
|
|
45
|
+
attachedMcp = new Set();
|
|
16
46
|
constructor(options) {
|
|
17
47
|
this.options = options;
|
|
18
48
|
}
|
|
@@ -31,6 +61,23 @@ export class OpencodeClientWrapper {
|
|
|
31
61
|
}
|
|
32
62
|
async _start() {
|
|
33
63
|
const command = this.options.command ?? 'opencode';
|
|
64
|
+
// Inject egress proxy environment variables. Two sources, in priority:
|
|
65
|
+
// 1. options.proxyEnv — per-spawn env from the runtime, with the
|
|
66
|
+
// egress token already encoded as the URL credential of HTTP_PROXY
|
|
67
|
+
// (the canonical path used by the gateway).
|
|
68
|
+
// 2. options.egressProxyUrl + options.egressToken — legacy fields
|
|
69
|
+
// retained for back-compat. The token is URL-encoded here.
|
|
70
|
+
const proxyEnv = {};
|
|
71
|
+
if (this.options.proxyEnv !== undefined) {
|
|
72
|
+
Object.assign(proxyEnv, this.options.proxyEnv);
|
|
73
|
+
}
|
|
74
|
+
else if (this.options.egressProxyUrl !== undefined) {
|
|
75
|
+
proxyEnv.HTTP_PROXY = encodeProxyUrlWithToken(this.options.egressProxyUrl, this.options.egressToken);
|
|
76
|
+
proxyEnv.HTTPS_PROXY = proxyEnv.HTTP_PROXY;
|
|
77
|
+
if (this.options.egressToken !== undefined) {
|
|
78
|
+
proxyEnv.SKELM_EGRESS_TOKEN = this.options.egressToken;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
34
81
|
// (#2) Inject model and logLevel via OPENCODE_CONFIG_CONTENT so opencode
|
|
35
82
|
// uses them as its defaults for every session, without needing per-session
|
|
36
83
|
// body overrides.
|
|
@@ -46,10 +93,16 @@ export class OpencodeClientWrapper {
|
|
|
46
93
|
}
|
|
47
94
|
return new Promise((resolve, reject) => {
|
|
48
95
|
const proc = spawn(command, ['serve', '--port', '0'], {
|
|
49
|
-
env: { ...process.env, OPENCODE_CONFIG_CONTENT: JSON.stringify(serverConfig) },
|
|
96
|
+
env: { ...process.env, ...proxyEnv, OPENCODE_CONFIG_CONTENT: JSON.stringify(serverConfig) },
|
|
50
97
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
51
98
|
});
|
|
52
99
|
this.proc = proc;
|
|
100
|
+
// Register against the module-singleton SIGTERM/SIGINT/exit hook so the
|
|
101
|
+
// opencode child gets killed when the node parent is signalled (CLI
|
|
102
|
+
// timeout, Ctrl-C, gateway shutdown). Without this, the child is
|
|
103
|
+
// reparented to PID 1 and lingers as an orphan.
|
|
104
|
+
liveChildren.add(proc);
|
|
105
|
+
ensureSignalHook();
|
|
53
106
|
let resolved = false;
|
|
54
107
|
let buf = '';
|
|
55
108
|
const tryParse = (chunk) => {
|
|
@@ -84,15 +137,25 @@ export class OpencodeClientWrapper {
|
|
|
84
137
|
});
|
|
85
138
|
}
|
|
86
139
|
_handleExit() {
|
|
140
|
+
if (this.proc !== null)
|
|
141
|
+
liveChildren.delete(this.proc);
|
|
87
142
|
this.proc = null;
|
|
88
143
|
this.client = null;
|
|
89
144
|
this.startPromise = null;
|
|
145
|
+
this.attachedMcp.clear();
|
|
90
146
|
}
|
|
91
|
-
async prompt(request, signal, timeoutMs = 300_000, resolvedPolicy) {
|
|
147
|
+
async prompt(request, signal, timeoutMs = 300_000, resolvedPolicy, onPartial) {
|
|
92
148
|
await this.ensureStarted();
|
|
93
149
|
if (!this.client)
|
|
94
150
|
throw new Error('opencode serve not ready');
|
|
95
151
|
const cwd = request.cwd ?? process.cwd();
|
|
152
|
+
// Forward each per-step McpServerConfig to opencode so its model sees the
|
|
153
|
+
// namespaced tools. The opencode subprocess persists across calls, so the
|
|
154
|
+
// mcp.add() endpoint is idempotent per (serverId, this wrapper) — we only
|
|
155
|
+
// call it once per ID per opencode subprocess.
|
|
156
|
+
if (request.mcpServers !== undefined && request.mcpServers.length > 0) {
|
|
157
|
+
await this._attachMcpServers(request.mcpServers);
|
|
158
|
+
}
|
|
96
159
|
const sessResult = await this.client.session.create({ query: { directory: cwd } });
|
|
97
160
|
if (!sessResult.data) {
|
|
98
161
|
throw new Error(`session.create failed: ${JSON.stringify(sessResult.error)}`);
|
|
@@ -121,7 +184,7 @@ export class OpencodeClientWrapper {
|
|
|
121
184
|
if (!promptResult.data) {
|
|
122
185
|
throw new Error(`session.promptAsync failed: ${JSON.stringify(promptResult.error)}`);
|
|
123
186
|
}
|
|
124
|
-
return await this._collectFromStream(stream, sessionId, signal);
|
|
187
|
+
return await this._collectFromStream(stream, sessionId, signal, onPartial, resolvedPolicy);
|
|
125
188
|
}
|
|
126
189
|
finally {
|
|
127
190
|
clearTimeout(timeoutId);
|
|
@@ -134,7 +197,7 @@ export class OpencodeClientWrapper {
|
|
|
134
197
|
}
|
|
135
198
|
}
|
|
136
199
|
// (#3) Collect text from SSE events for one session until it goes idle.
|
|
137
|
-
async _collectFromStream(stream, sessionId, signal) {
|
|
200
|
+
async _collectFromStream(stream, sessionId, signal, onPartial, resolvedPolicy) {
|
|
138
201
|
// Only collect text parts from assistant messages; track which message IDs are assistant.
|
|
139
202
|
const assistantMessageIds = new Set();
|
|
140
203
|
// Each TextPart is updated incrementally; track the latest full text per part id.
|
|
@@ -149,6 +212,24 @@ export class OpencodeClientWrapper {
|
|
|
149
212
|
throw new Error(`opencode session error: ${JSON.stringify(props.error)}`);
|
|
150
213
|
}
|
|
151
214
|
}
|
|
215
|
+
// Opencode pauses the session and emits permission.asked when a tool
|
|
216
|
+
// wants to escalate (external_directory read/write, bash, etc.). The
|
|
217
|
+
// session stays paused until we POST a response — without this handler
|
|
218
|
+
// _collectFromStream blocks forever waiting for session.idle.
|
|
219
|
+
if (event.type === 'permission.asked') {
|
|
220
|
+
const props = event.properties;
|
|
221
|
+
if (props.sessionID === sessionId && typeof props.id === 'string') {
|
|
222
|
+
const response = this._decidePermission(props.permission ?? '', props.metadata?.filepath, props.patterns, resolvedPolicy);
|
|
223
|
+
await this.client
|
|
224
|
+
?.postSessionIdPermissionsPermissionId({
|
|
225
|
+
path: { id: sessionId, permissionID: props.id },
|
|
226
|
+
body: { response },
|
|
227
|
+
})
|
|
228
|
+
.catch(() => {
|
|
229
|
+
/* opencode will give up on its own; we'll exit on session.idle/error */
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
}
|
|
152
233
|
if (event.type === 'message.updated') {
|
|
153
234
|
const props = event.properties;
|
|
154
235
|
if (props.info.sessionID === sessionId && props.info.role === 'assistant') {
|
|
@@ -163,7 +244,13 @@ export class OpencodeClientWrapper {
|
|
|
163
244
|
part.type === 'text' &&
|
|
164
245
|
!part.synthetic &&
|
|
165
246
|
part.text) {
|
|
166
|
-
textParts.
|
|
247
|
+
const prev = textParts.get(part.id) ?? '';
|
|
248
|
+
const next = part.text;
|
|
249
|
+
// Emit the delta (new characters since last update for this part)
|
|
250
|
+
if (onPartial !== undefined && next.length > prev.length) {
|
|
251
|
+
onPartial(next.slice(prev.length));
|
|
252
|
+
}
|
|
253
|
+
textParts.set(part.id, next);
|
|
167
254
|
}
|
|
168
255
|
}
|
|
169
256
|
if (event.type === 'session.idle') {
|
|
@@ -177,11 +264,80 @@ export class OpencodeClientWrapper {
|
|
|
177
264
|
const text = [...textParts.values()].join('');
|
|
178
265
|
return { text: text.trim(), stopReason: 'end_turn' };
|
|
179
266
|
}
|
|
267
|
+
// Map a skelm McpServerConfig (stdio variant) to opencode's local MCP config
|
|
268
|
+
// and POST it to /mcp. Remote (http/sse) transports are not yet supported by
|
|
269
|
+
// this bridge — opencode's McpRemoteConfig has a different shape and isn't
|
|
270
|
+
// exercised by the §21 fixtures; we surface a clear error rather than a
|
|
271
|
+
// silent drop so a future fixture catches it.
|
|
272
|
+
async _attachMcpServers(servers) {
|
|
273
|
+
if (this.client === null)
|
|
274
|
+
return;
|
|
275
|
+
for (const server of servers) {
|
|
276
|
+
if (this.attachedMcp.has(server.id))
|
|
277
|
+
continue;
|
|
278
|
+
if (server.transport !== 'stdio') {
|
|
279
|
+
throw new Error(`opencode backend currently only forwards stdio MCP servers; "${server.id}" uses ${server.transport}`);
|
|
280
|
+
}
|
|
281
|
+
const command = [server.command, ...(server.args ?? [])];
|
|
282
|
+
const result = await this.client.mcp.add({
|
|
283
|
+
body: {
|
|
284
|
+
name: server.id,
|
|
285
|
+
config: {
|
|
286
|
+
type: 'local',
|
|
287
|
+
command,
|
|
288
|
+
enabled: true,
|
|
289
|
+
...(server.env !== undefined && { environment: { ...server.env } }),
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
});
|
|
293
|
+
if (result.error !== undefined) {
|
|
294
|
+
throw new Error(`opencode mcp.add(${server.id}) failed: ${JSON.stringify(result.error)}`);
|
|
295
|
+
}
|
|
296
|
+
this.attachedMcp.add(server.id);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
// Translate an opencode permission.asked into a once/reject decision using
|
|
300
|
+
// the step's ResolvedPolicy. "external_directory" is the common case (the
|
|
301
|
+
// model wants to read/write outside the session's directory); we accept if
|
|
302
|
+
// the path falls within fsRead or fsWrite. Everything else defaults to
|
|
303
|
+
// reject — opencode's prompt that asked will report the denial back to the
|
|
304
|
+
// model and the loop continues.
|
|
305
|
+
_decidePermission(permission, filepath, _patterns, policy) {
|
|
306
|
+
if (policy === undefined)
|
|
307
|
+
return 'reject';
|
|
308
|
+
if (permission === 'external_directory' && filepath !== undefined) {
|
|
309
|
+
const enf = new TrustEnforcer(policy);
|
|
310
|
+
if (enf.canRead(filepath).allow)
|
|
311
|
+
return 'once';
|
|
312
|
+
if (enf.canWrite(filepath).allow)
|
|
313
|
+
return 'once';
|
|
314
|
+
}
|
|
315
|
+
return 'reject';
|
|
316
|
+
}
|
|
180
317
|
async dispose() {
|
|
181
318
|
this.proc?.kill('SIGTERM');
|
|
182
|
-
this.
|
|
183
|
-
|
|
184
|
-
|
|
319
|
+
this._handleExit();
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Encode an egress token into the credential field of a proxy URL so that
|
|
324
|
+
* standard HTTP clients automatically send `Proxy-Authorization: Basic
|
|
325
|
+
* <base64(token:<egressToken>)>`. The token (and the literal "token"
|
|
326
|
+
* username) are URL-encoded for safety.
|
|
327
|
+
*
|
|
328
|
+
* Exported for testing.
|
|
329
|
+
*/
|
|
330
|
+
export function encodeProxyUrlWithToken(proxyUrl, token) {
|
|
331
|
+
if (token === undefined || token === '')
|
|
332
|
+
return proxyUrl;
|
|
333
|
+
try {
|
|
334
|
+
const url = new URL(proxyUrl);
|
|
335
|
+
url.username = 'token';
|
|
336
|
+
url.password = token;
|
|
337
|
+
return url.toString();
|
|
338
|
+
}
|
|
339
|
+
catch {
|
|
340
|
+
return proxyUrl;
|
|
185
341
|
}
|
|
186
342
|
}
|
|
187
343
|
// Map a skelm ResolvedPolicy to opencode's per-prompt tool allow/deny map.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -28,6 +28,21 @@ export interface OpencodeBackendOptions {
|
|
|
28
28
|
maxRetries?: number;
|
|
29
29
|
/** Log level */
|
|
30
30
|
logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'off';
|
|
31
|
+
/** Egress proxy URL for outbound HTTP requests (e.g., 'http://127.0.0.1:14739'). */
|
|
32
|
+
egressProxyUrl?: string;
|
|
33
|
+
/** Egress token for proxy authentication (injected into subprocesses). */
|
|
34
|
+
egressToken?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Pre-encoded proxy env from the runtime (takes precedence over the legacy
|
|
37
|
+
* egressProxyUrl + egressToken fields). Set by the gateway per-step so
|
|
38
|
+
* HTTP_PROXY already contains the token as URL credentials.
|
|
39
|
+
*/
|
|
40
|
+
proxyEnv?: Record<string, string>;
|
|
41
|
+
/**
|
|
42
|
+
* Optional partial output callback. Called with each text delta as the
|
|
43
|
+
* opencode server streams the response. Maps to BackendContext.onPartial.
|
|
44
|
+
*/
|
|
45
|
+
onPartial?: (delta: string) => void;
|
|
31
46
|
/**
|
|
32
47
|
* Server-level permission defaults injected via OPENCODE_CONFIG_CONTENT at
|
|
33
48
|
* server startup. These apply to every session on this backend instance.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uFAAuF;IACvF,EAAE,CAAC,EAAE,MAAM,CAAA;IAEX,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,gEAAgE;IAChE,WAAW,CAAC,EAAE,wBAAwB,CAAA;IAEtC,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAA;IACtD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE;QAClB,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;QAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;QAC/B,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;KACpC,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC,CAAA;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC,CAAA;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uFAAuF;IACvF,EAAE,CAAC,EAAE,MAAM,CAAA;IAEX,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,gEAAgE;IAChE,WAAW,CAAC,EAAE,wBAAwB,CAAA;IAEtC,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAA;IACtD,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE;QAClB,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;QAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;QAC/B,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;KACpC,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC,CAAA;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC,CAAA;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skelm/opencode",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.8",
|
|
4
4
|
"description": "Opencode.ai backend for skelm with full permission enforcement",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Scott Glover <scottgl@gmail.com>",
|
|
7
|
-
"homepage": "https://
|
|
7
|
+
"homepage": "https://skelm.dev/",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
10
|
"url": "git+https://github.com/scottgl9/skelm.git",
|
|
@@ -42,16 +42,16 @@
|
|
|
42
42
|
"build": "tsc -p tsconfig.json",
|
|
43
43
|
"test": "vitest run",
|
|
44
44
|
"test:watch": "vitest",
|
|
45
|
-
"clean": "rm -rf dist"
|
|
45
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@opencode-ai/sdk": "^1.14.33"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
|
-
"@skelm/core": "^0.3.
|
|
51
|
+
"@skelm/core": "^0.3.8"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@skelm/core": "^0.3.
|
|
54
|
+
"@skelm/core": "^0.3.8",
|
|
55
55
|
"@types/node": "^20.10.0",
|
|
56
56
|
"typescript": "^5.3.0",
|
|
57
57
|
"vitest": "^1.0.0"
|