@agentex/agent 0.0.16 → 0.0.19
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 +158 -18
- package/dist/derived.d.ts +69 -0
- package/dist/derived.d.ts.map +1 -0
- package/dist/derived.js +218 -0
- package/dist/derived.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/_shared/http-agent.d.ts +39 -0
- package/dist/providers/_shared/http-agent.d.ts.map +1 -0
- package/dist/providers/_shared/http-agent.js +265 -0
- package/dist/providers/_shared/http-agent.js.map +1 -0
- package/dist/providers/acp/index.d.ts +29 -0
- package/dist/providers/acp/index.d.ts.map +1 -0
- package/dist/providers/acp/index.js +153 -0
- package/dist/providers/acp/index.js.map +1 -0
- package/dist/providers/acp/parse.d.ts +22 -0
- package/dist/providers/acp/parse.d.ts.map +1 -0
- package/dist/providers/acp/parse.js +122 -0
- package/dist/providers/acp/parse.js.map +1 -0
- package/dist/providers/acp/session.d.ts +36 -0
- package/dist/providers/acp/session.d.ts.map +1 -0
- package/dist/providers/acp/session.js +487 -0
- package/dist/providers/acp/session.js.map +1 -0
- package/dist/providers/claude/execute.d.ts.map +1 -1
- package/dist/providers/claude/execute.js +6 -2
- package/dist/providers/claude/execute.js.map +1 -1
- package/dist/providers/claude/index.d.ts.map +1 -1
- package/dist/providers/claude/index.js +3 -0
- package/dist/providers/claude/index.js.map +1 -1
- package/dist/providers/claude/parse.d.ts.map +1 -1
- package/dist/providers/claude/parse.js +8 -0
- package/dist/providers/claude/parse.js.map +1 -1
- package/dist/providers/claude/session.d.ts +43 -4
- package/dist/providers/claude/session.d.ts.map +1 -1
- package/dist/providers/claude/session.js +215 -30
- package/dist/providers/claude/session.js.map +1 -1
- package/dist/providers/codex/execute.d.ts.map +1 -1
- package/dist/providers/codex/execute.js +5 -1
- package/dist/providers/codex/execute.js.map +1 -1
- package/dist/providers/codex/index.d.ts.map +1 -1
- package/dist/providers/codex/index.js +5 -0
- package/dist/providers/codex/index.js.map +1 -1
- package/dist/providers/codex/modes.d.ts +35 -0
- package/dist/providers/codex/modes.d.ts.map +1 -0
- package/dist/providers/codex/modes.js +148 -0
- package/dist/providers/codex/modes.js.map +1 -0
- package/dist/providers/codex/parse.d.ts.map +1 -1
- package/dist/providers/codex/parse.js +4 -0
- package/dist/providers/codex/parse.js.map +1 -1
- package/dist/providers/codex/session.d.ts +45 -4
- package/dist/providers/codex/session.d.ts.map +1 -1
- package/dist/providers/codex/session.js +408 -66
- package/dist/providers/codex/session.js.map +1 -1
- package/dist/providers/copilot/index.d.ts +15 -0
- package/dist/providers/copilot/index.d.ts.map +1 -0
- package/dist/providers/copilot/index.js +19 -0
- package/dist/providers/copilot/index.js.map +1 -0
- package/dist/providers/cursor/index.d.ts.map +1 -1
- package/dist/providers/cursor/index.js +3 -0
- package/dist/providers/cursor/index.js.map +1 -1
- package/dist/providers/cursor/parse.d.ts.map +1 -1
- package/dist/providers/cursor/parse.js +1 -0
- package/dist/providers/cursor/parse.js.map +1 -1
- package/dist/providers/gemini/index.d.ts.map +1 -1
- package/dist/providers/gemini/index.js +16 -18
- package/dist/providers/gemini/index.js.map +1 -1
- package/dist/providers/openclaw/execute.d.ts +5 -0
- package/dist/providers/openclaw/execute.d.ts.map +1 -1
- package/dist/providers/openclaw/execute.js +13 -173
- package/dist/providers/openclaw/execute.js.map +1 -1
- package/dist/providers/openclaw/index.d.ts.map +1 -1
- package/dist/providers/openclaw/index.js +3 -0
- package/dist/providers/openclaw/index.js.map +1 -1
- package/dist/providers/opencode/event-parse.d.ts +23 -0
- package/dist/providers/opencode/event-parse.d.ts.map +1 -0
- package/dist/providers/opencode/event-parse.js +128 -0
- package/dist/providers/opencode/event-parse.js.map +1 -0
- package/dist/providers/opencode/http-session.d.ts +4 -0
- package/dist/providers/opencode/http-session.d.ts.map +1 -0
- package/dist/providers/opencode/http-session.js +376 -0
- package/dist/providers/opencode/http-session.js.map +1 -0
- package/dist/providers/opencode/index.d.ts.map +1 -1
- package/dist/providers/opencode/index.js +8 -1
- package/dist/providers/opencode/index.js.map +1 -1
- package/dist/providers/opencode/parse.d.ts.map +1 -1
- package/dist/providers/opencode/parse.js +1 -0
- package/dist/providers/opencode/parse.js.map +1 -1
- package/dist/providers/opencode/server.d.ts +8 -0
- package/dist/providers/opencode/server.d.ts.map +1 -0
- package/dist/providers/opencode/server.js +0 -0
- package/dist/providers/opencode/server.js.map +1 -0
- package/dist/providers/pi/index.d.ts.map +1 -1
- package/dist/providers/pi/index.js +8 -1
- package/dist/providers/pi/index.js.map +1 -1
- package/dist/providers/pi/parse.d.ts.map +1 -1
- package/dist/providers/pi/parse.js +1 -0
- package/dist/providers/pi/parse.js.map +1 -1
- package/dist/providers/pi/session.d.ts +40 -0
- package/dist/providers/pi/session.d.ts.map +1 -0
- package/dist/providers/pi/session.js +328 -0
- package/dist/providers/pi/session.js.map +1 -0
- package/dist/providers/process/index.d.ts.map +1 -1
- package/dist/providers/process/index.js +3 -0
- package/dist/providers/process/index.js.map +1 -1
- package/dist/registry.d.ts +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +6 -0
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +192 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/skill-commands.d.ts.map +1 -1
- package/dist/utils/skill-commands.js +4 -2
- package/dist/utils/skill-commands.js.map +1 -1
- package/dist/utils/tool-names.d.ts +24 -0
- package/dist/utils/tool-names.d.ts.map +1 -0
- package/dist/utils/tool-names.js +50 -0
- package/dist/utils/tool-names.js.map +1 -0
- package/package.json +22 -12
- package/dist/providers/claude/test.d.ts +0 -3
- package/dist/providers/claude/test.d.ts.map +0 -1
- package/dist/providers/claude/test.js +0 -167
- package/dist/providers/claude/test.js.map +0 -1
- package/dist/providers/codex/test.d.ts +0 -3
- package/dist/providers/codex/test.d.ts.map +0 -1
- package/dist/providers/codex/test.js +0 -74
- package/dist/providers/codex/test.js.map +0 -1
- package/dist/providers/cursor/test.d.ts +0 -3
- package/dist/providers/cursor/test.d.ts.map +0 -1
- package/dist/providers/cursor/test.js +0 -58
- package/dist/providers/cursor/test.js.map +0 -1
- package/dist/providers/gemini/codec.d.ts +0 -3
- package/dist/providers/gemini/codec.d.ts.map +0 -1
- package/dist/providers/gemini/codec.js +0 -47
- package/dist/providers/gemini/codec.js.map +0 -1
- package/dist/providers/gemini/execute.d.ts +0 -3
- package/dist/providers/gemini/execute.d.ts.map +0 -1
- package/dist/providers/gemini/execute.js +0 -256
- package/dist/providers/gemini/execute.js.map +0 -1
- package/dist/providers/gemini/parse.d.ts +0 -20
- package/dist/providers/gemini/parse.d.ts.map +0 -1
- package/dist/providers/gemini/parse.js +0 -235
- package/dist/providers/gemini/parse.js.map +0 -1
- package/dist/providers/gemini/test.d.ts +0 -3
- package/dist/providers/gemini/test.d.ts.map +0 -1
- package/dist/providers/gemini/test.js +0 -67
- package/dist/providers/gemini/test.js.map +0 -1
- package/dist/providers/openclaw/test.d.ts +0 -3
- package/dist/providers/openclaw/test.d.ts.map +0 -1
- package/dist/providers/openclaw/test.js +0 -54
- package/dist/providers/openclaw/test.js.map +0 -1
- package/dist/providers/opencode/test.d.ts +0 -3
- package/dist/providers/opencode/test.d.ts.map +0 -1
- package/dist/providers/opencode/test.js +0 -60
- package/dist/providers/opencode/test.js.map +0 -1
- package/dist/providers/pi/test.d.ts +0 -3
- package/dist/providers/pi/test.d.ts.map +0 -1
- package/dist/providers/pi/test.js +0 -60
- package/dist/providers/pi/test.js.map +0 -1
- package/dist/utils/model-cache.d.ts +0 -11
- package/dist/utils/model-cache.d.ts.map +0 -1
- package/dist/utils/model-cache.js +0 -17
- package/dist/utils/model-cache.js.map +0 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ExecutionContext, ExecutionResult, ProviderModule, SessionCodec } from "../../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Reusable "remote HTTP agent" adapter — the pattern OpenClaw encodes and the
|
|
4
|
+
* shape any gateway-backed agent reuses: resolve a gateway URL (per-call command
|
|
5
|
+
* override → saved sessionParams → default), round-trip a session key through
|
|
6
|
+
* `sessionParams`, POST the prompt, map 401/403 to an `auth_required` event, and
|
|
7
|
+
* bound the request with an AbortController timeout.
|
|
8
|
+
*/
|
|
9
|
+
export interface HttpAgentOptions {
|
|
10
|
+
/** Provider id (used on events + the result). */
|
|
11
|
+
providerType: string;
|
|
12
|
+
/** Gateway base URL used when neither `config.command` nor a saved URL is set. */
|
|
13
|
+
defaultBaseUrl: string;
|
|
14
|
+
/** Path appended to the base URL for the run endpoint (e.g. "/api/agent/run"). */
|
|
15
|
+
runPath: string;
|
|
16
|
+
/** Recovery command surfaced on `auth_required` (e.g. "openclaw login"). */
|
|
17
|
+
loginCommand?: string;
|
|
18
|
+
/** Build the JSON request body. Default: `{ prompt, sessionKey?, model? }`. */
|
|
19
|
+
buildBody?: (input: {
|
|
20
|
+
prompt: string;
|
|
21
|
+
sessionKey: string | null;
|
|
22
|
+
model: string | null;
|
|
23
|
+
}) => Record<string, unknown>;
|
|
24
|
+
/** Pull the summary text from the gateway response. Default: summary ?? result ?? output. */
|
|
25
|
+
extractSummary?: (response: Record<string, unknown>) => string | null;
|
|
26
|
+
/** Pull the (possibly new) session key from the response. Default: `response.sessionKey ?? prev`. */
|
|
27
|
+
extractSessionKey?: (response: Record<string, unknown>, prev: string | null) => string | null;
|
|
28
|
+
/** Pull the model id from the response. Default: `response.model ?? fallback`. */
|
|
29
|
+
extractModel?: (response: Record<string, unknown>, fallback: string | null) => string | null;
|
|
30
|
+
/** Pull the cost from the response. Default: `response.costUsd` when numeric. */
|
|
31
|
+
extractCost?: (response: Record<string, unknown>) => number | null;
|
|
32
|
+
}
|
|
33
|
+
/** Execute a single turn against a remote HTTP agent gateway. */
|
|
34
|
+
export declare function runHttpAgent(opts: HttpAgentOptions, ctx: ExecutionContext): Promise<ExecutionResult>;
|
|
35
|
+
/** Session codec for HTTP-agent providers — round-trips `{ sessionKey, gatewayUrl }`. */
|
|
36
|
+
export declare const httpAgentSessionCodec: SessionCodec;
|
|
37
|
+
/** Build a `ProviderModule` for a remote HTTP agent gateway. */
|
|
38
|
+
export declare function httpAgentProvider(opts: HttpAgentOptions): ProviderModule;
|
|
39
|
+
//# sourceMappingURL=http-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-agent.d.ts","sourceRoot":"","sources":["../../../src/providers/_shared/http-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,YAAY,EACb,MAAM,gBAAgB,CAAC;AAGxB;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,cAAc,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpH,6FAA6F;IAC7F,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;IACtE,qGAAqG;IACrG,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;IAC9F,kFAAkF;IAClF,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7F,iFAAiF;IACjF,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;CACpE;AAgBD,iEAAiE;AACjE,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,eAAe,CAAC,CAgM1B;AAED,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,EAAE,YAoBnC,CAAC;AAEF,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,cAAc,CA6BxE"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { uuidv7 } from "../../utils/uuid.js";
|
|
2
|
+
function str(v) {
|
|
3
|
+
return typeof v === "string" && v.length > 0 ? v : null;
|
|
4
|
+
}
|
|
5
|
+
function defaultSummary(r) {
|
|
6
|
+
return str(r["summary"]) ?? str(r["result"]) ?? str(r["output"]);
|
|
7
|
+
}
|
|
8
|
+
/** Resolve the session key from session params (sessionKey / session_key). */
|
|
9
|
+
function readSessionKey(sessionParams) {
|
|
10
|
+
if (!sessionParams)
|
|
11
|
+
return null;
|
|
12
|
+
return str(sessionParams["sessionKey"]) ?? str(sessionParams["session_key"]);
|
|
13
|
+
}
|
|
14
|
+
/** Execute a single turn against a remote HTTP agent gateway. */
|
|
15
|
+
export async function runHttpAgent(opts, ctx) {
|
|
16
|
+
const runId = ctx.runId ?? uuidv7();
|
|
17
|
+
const model = ctx.model ?? ctx.config?.model ?? null;
|
|
18
|
+
const config = ctx.config ?? {};
|
|
19
|
+
const startedAt = new Date().toISOString();
|
|
20
|
+
const startMs = Date.now();
|
|
21
|
+
const savedGatewayUrl = str(ctx.sessionParams?.["gatewayUrl"]);
|
|
22
|
+
const gatewayUrl = config.command?.trim() || savedGatewayUrl || opts.defaultBaseUrl;
|
|
23
|
+
const endpoint = gatewayUrl.replace(/\/$/, "") + opts.runPath;
|
|
24
|
+
const sessionKey = readSessionKey(ctx.sessionParams);
|
|
25
|
+
const body = opts.buildBody
|
|
26
|
+
? opts.buildBody({ prompt: ctx.prompt, sessionKey, model })
|
|
27
|
+
: {
|
|
28
|
+
prompt: ctx.prompt,
|
|
29
|
+
...(sessionKey ? { sessionKey } : {}),
|
|
30
|
+
...(model ? { model } : {}),
|
|
31
|
+
};
|
|
32
|
+
const abortController = new AbortController();
|
|
33
|
+
let timeoutHandle = null;
|
|
34
|
+
let timedOut = false;
|
|
35
|
+
if (config.timeoutSec && config.timeoutSec > 0) {
|
|
36
|
+
timeoutHandle = setTimeout(() => {
|
|
37
|
+
timedOut = true;
|
|
38
|
+
abortController.abort();
|
|
39
|
+
}, config.timeoutSec * 1000);
|
|
40
|
+
}
|
|
41
|
+
// Chain a caller-supplied signal (a caller abort is distinct from a timeout).
|
|
42
|
+
if (ctx.signal) {
|
|
43
|
+
if (ctx.signal.aborted)
|
|
44
|
+
abortController.abort();
|
|
45
|
+
else
|
|
46
|
+
ctx.signal.addEventListener("abort", () => abortController.abort(), { once: true });
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
const response = await fetch(endpoint, {
|
|
50
|
+
method: "POST",
|
|
51
|
+
headers: { "Content-Type": "application/json" },
|
|
52
|
+
body: JSON.stringify(body),
|
|
53
|
+
signal: abortController.signal,
|
|
54
|
+
});
|
|
55
|
+
if (timeoutHandle)
|
|
56
|
+
clearTimeout(timeoutHandle);
|
|
57
|
+
if (!response.ok) {
|
|
58
|
+
const errorText = await response.text().catch(() => "");
|
|
59
|
+
const isAuth = response.status === 401 || response.status === 403;
|
|
60
|
+
if (isAuth && ctx.onEvent) {
|
|
61
|
+
try {
|
|
62
|
+
await ctx.onEvent({
|
|
63
|
+
type: "auth_required",
|
|
64
|
+
httpStatus: response.status,
|
|
65
|
+
reason: "unknown",
|
|
66
|
+
loginCommand: opts.loginCommand ?? `${opts.providerType} login`,
|
|
67
|
+
message: errorText || null,
|
|
68
|
+
timestamp: new Date().toISOString(),
|
|
69
|
+
providerType: opts.providerType,
|
|
70
|
+
sessionId: sessionKey ?? null,
|
|
71
|
+
messageId: null,
|
|
72
|
+
eventId: null,
|
|
73
|
+
turnId: null,
|
|
74
|
+
parentToolCallId: null,
|
|
75
|
+
raw: { status: response.status, body: errorText },
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
/* swallow */
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
runId,
|
|
84
|
+
exitCode: 1,
|
|
85
|
+
signal: null,
|
|
86
|
+
status: "failed",
|
|
87
|
+
startedAt,
|
|
88
|
+
completedAt: new Date().toISOString(),
|
|
89
|
+
durationMs: Date.now() - startMs,
|
|
90
|
+
errorMessage: `${opts.providerType} gateway returned ${response.status}: ${errorText}`,
|
|
91
|
+
errorCode: isAuth ? "auth_required" : null,
|
|
92
|
+
costUsd: null,
|
|
93
|
+
model,
|
|
94
|
+
summary: null,
|
|
95
|
+
sessionParams: sessionKey ? { sessionKey, gatewayUrl } : null,
|
|
96
|
+
sessionDisplayId: sessionKey,
|
|
97
|
+
clearSession: false,
|
|
98
|
+
billingType: null,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const result = (await response.json());
|
|
102
|
+
const newSessionKey = opts.extractSessionKey
|
|
103
|
+
? opts.extractSessionKey(result, sessionKey)
|
|
104
|
+
: (str(result["sessionKey"]) ?? sessionKey);
|
|
105
|
+
const summary = (opts.extractSummary ?? defaultSummary)(result);
|
|
106
|
+
const resolvedModel = opts.extractModel
|
|
107
|
+
? opts.extractModel(result, model)
|
|
108
|
+
: (str(result["model"]) ?? model);
|
|
109
|
+
const costUsd = opts.extractCost
|
|
110
|
+
? opts.extractCost(result)
|
|
111
|
+
: typeof result["costUsd"] === "number"
|
|
112
|
+
? result["costUsd"]
|
|
113
|
+
: null;
|
|
114
|
+
if (ctx.onEvent && summary) {
|
|
115
|
+
try {
|
|
116
|
+
await ctx.onEvent({
|
|
117
|
+
type: "result",
|
|
118
|
+
text: summary,
|
|
119
|
+
costUsd,
|
|
120
|
+
isError: false,
|
|
121
|
+
stopReason: null,
|
|
122
|
+
terminalReason: null,
|
|
123
|
+
numTurns: null,
|
|
124
|
+
durationMs: null,
|
|
125
|
+
timestamp: new Date().toISOString(),
|
|
126
|
+
providerType: opts.providerType,
|
|
127
|
+
sessionId: newSessionKey ?? null,
|
|
128
|
+
messageId: null,
|
|
129
|
+
eventId: null,
|
|
130
|
+
turnId: null,
|
|
131
|
+
parentToolCallId: null,
|
|
132
|
+
raw: result,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
/* swallow */
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
runId,
|
|
141
|
+
exitCode: 0,
|
|
142
|
+
signal: null,
|
|
143
|
+
status: "completed",
|
|
144
|
+
startedAt,
|
|
145
|
+
completedAt: new Date().toISOString(),
|
|
146
|
+
durationMs: Date.now() - startMs,
|
|
147
|
+
errorMessage: null,
|
|
148
|
+
errorCode: null,
|
|
149
|
+
costUsd,
|
|
150
|
+
model: resolvedModel,
|
|
151
|
+
summary,
|
|
152
|
+
sessionParams: newSessionKey ? { sessionKey: newSessionKey, gatewayUrl } : null,
|
|
153
|
+
sessionDisplayId: newSessionKey,
|
|
154
|
+
clearSession: false,
|
|
155
|
+
billingType: null,
|
|
156
|
+
raw: result,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
if (timeoutHandle)
|
|
161
|
+
clearTimeout(timeoutHandle);
|
|
162
|
+
if (err instanceof Error && err.name === "AbortError") {
|
|
163
|
+
// A timeout and a caller-supplied signal abort both surface as AbortError;
|
|
164
|
+
// distinguish them so consumers can tell a deadline from a cancellation.
|
|
165
|
+
const isTimeout = timedOut;
|
|
166
|
+
return {
|
|
167
|
+
runId,
|
|
168
|
+
exitCode: null,
|
|
169
|
+
signal: null,
|
|
170
|
+
status: isTimeout ? "timeout" : "aborted",
|
|
171
|
+
startedAt,
|
|
172
|
+
completedAt: new Date().toISOString(),
|
|
173
|
+
durationMs: Date.now() - startMs,
|
|
174
|
+
errorMessage: isTimeout ? `Timed out after ${config.timeoutSec ?? 0}s` : "Aborted by caller",
|
|
175
|
+
errorCode: isTimeout ? "timeout" : "aborted",
|
|
176
|
+
costUsd: null,
|
|
177
|
+
model,
|
|
178
|
+
summary: null,
|
|
179
|
+
sessionParams: sessionKey ? { sessionKey, gatewayUrl } : null,
|
|
180
|
+
sessionDisplayId: sessionKey,
|
|
181
|
+
clearSession: false,
|
|
182
|
+
billingType: null,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
// A transient network error (DNS, reset) is recoverable — preserve the
|
|
186
|
+
// session key / gateway so the caller can resume rather than losing it.
|
|
187
|
+
return {
|
|
188
|
+
runId,
|
|
189
|
+
exitCode: null,
|
|
190
|
+
signal: null,
|
|
191
|
+
status: "failed",
|
|
192
|
+
startedAt,
|
|
193
|
+
completedAt: new Date().toISOString(),
|
|
194
|
+
durationMs: Date.now() - startMs,
|
|
195
|
+
errorMessage: err instanceof Error ? err.message : `${opts.providerType} execution failed`,
|
|
196
|
+
errorCode: null,
|
|
197
|
+
costUsd: null,
|
|
198
|
+
model,
|
|
199
|
+
summary: null,
|
|
200
|
+
sessionParams: sessionKey ? { sessionKey, gatewayUrl } : null,
|
|
201
|
+
sessionDisplayId: sessionKey,
|
|
202
|
+
clearSession: false,
|
|
203
|
+
billingType: null,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/** Session codec for HTTP-agent providers — round-trips `{ sessionKey, gatewayUrl }`. */
|
|
208
|
+
export const httpAgentSessionCodec = {
|
|
209
|
+
deserialize(raw) {
|
|
210
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw))
|
|
211
|
+
return null;
|
|
212
|
+
const obj = raw;
|
|
213
|
+
const sessionKey = str(obj["sessionKey"]) ?? str(obj["session_key"]);
|
|
214
|
+
if (!sessionKey)
|
|
215
|
+
return null;
|
|
216
|
+
const gatewayUrl = str(obj["gatewayUrl"]);
|
|
217
|
+
return { sessionKey, ...(gatewayUrl ? { gatewayUrl } : {}) };
|
|
218
|
+
},
|
|
219
|
+
serialize(params) {
|
|
220
|
+
if (!params)
|
|
221
|
+
return null;
|
|
222
|
+
const sessionKey = str(params["sessionKey"]) ?? str(params["session_key"]);
|
|
223
|
+
if (!sessionKey)
|
|
224
|
+
return null;
|
|
225
|
+
const gatewayUrl = str(params["gatewayUrl"]);
|
|
226
|
+
return { sessionKey, ...(gatewayUrl ? { gatewayUrl } : {}) };
|
|
227
|
+
},
|
|
228
|
+
getDisplayId(params) {
|
|
229
|
+
if (!params)
|
|
230
|
+
return null;
|
|
231
|
+
return str(params["sessionKey"]) ?? str(params["session_key"]);
|
|
232
|
+
},
|
|
233
|
+
};
|
|
234
|
+
/** Build a `ProviderModule` for a remote HTTP agent gateway. */
|
|
235
|
+
export function httpAgentProvider(opts) {
|
|
236
|
+
async function resolveAuth() {
|
|
237
|
+
// The gateway is a URL, not a local binary, so we can't probe presence here.
|
|
238
|
+
return {
|
|
239
|
+
providerType: opts.providerType,
|
|
240
|
+
binary: { installed: true },
|
|
241
|
+
options: [],
|
|
242
|
+
source: "filesystem",
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
type: opts.providerType,
|
|
247
|
+
capabilities: {
|
|
248
|
+
sessions: false,
|
|
249
|
+
modelDiscovery: false,
|
|
250
|
+
quotaProbing: false,
|
|
251
|
+
mcp: false,
|
|
252
|
+
skills: false,
|
|
253
|
+
instructions: false,
|
|
254
|
+
workspace: false,
|
|
255
|
+
planMode: false,
|
|
256
|
+
concurrentSend: false,
|
|
257
|
+
cancelQueuedMessage: false,
|
|
258
|
+
modes: false,
|
|
259
|
+
},
|
|
260
|
+
execute: (ctx) => runHttpAgent(opts, ctx),
|
|
261
|
+
resolveAuth,
|
|
262
|
+
sessionCodec: httpAgentSessionCodec,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=http-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-agent.js","sourceRoot":"","sources":["../../../src/providers/_shared/http-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ProviderModel, ProviderModule } from "../../types.js";
|
|
2
|
+
import { type AcpTransformers } from "./session.js";
|
|
3
|
+
/**
|
|
4
|
+
* Configuration for a generic ACP-backed provider. The canonical use is the
|
|
5
|
+
* config-extend `extends: "acp"` form, but any code can build one directly:
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* registerProvider(acpProvider({ id: "gemini", command: ["gemini", "--acp"] }));
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export interface AcpProviderConfig {
|
|
12
|
+
/** Unique provider id. */
|
|
13
|
+
id: string;
|
|
14
|
+
/** Command to spawn the ACP agent: [binary, ...args]. */
|
|
15
|
+
command: string[];
|
|
16
|
+
/** Environment overlay applied to every spawn. */
|
|
17
|
+
env?: Record<string, string>;
|
|
18
|
+
/** Display label (informational). */
|
|
19
|
+
label?: string;
|
|
20
|
+
/** Static model list surfaced via listModels(). */
|
|
21
|
+
models?: ProviderModel[];
|
|
22
|
+
/** Default mode id applied on session creation. */
|
|
23
|
+
modeId?: string;
|
|
24
|
+
/** Per-agent quirk transformers (modes / modeId). */
|
|
25
|
+
transformers?: AcpTransformers;
|
|
26
|
+
}
|
|
27
|
+
/** Build a generic ACP-backed `ProviderModule`. */
|
|
28
|
+
export declare function acpProvider(config: AcpProviderConfig): ProviderModule;
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/acp/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,aAAa,EACb,cAAc,EAIf,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AAEtB;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC;AAsHD,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAsCrE"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { ensureCommandResolvable } from "../../utils/binary.js";
|
|
2
|
+
import { uuidv7 } from "../../utils/uuid.js";
|
|
3
|
+
import { registerAcpFactory } from "../../derived.js";
|
|
4
|
+
import { createAcpSession, listAcpModes, } from "./session.js";
|
|
5
|
+
function mapTurnStatus(status) {
|
|
6
|
+
switch (status) {
|
|
7
|
+
case "completed":
|
|
8
|
+
case "max_turns":
|
|
9
|
+
case "max_budget":
|
|
10
|
+
return "completed";
|
|
11
|
+
case "failed":
|
|
12
|
+
return "failed";
|
|
13
|
+
case "aborted":
|
|
14
|
+
return "aborted";
|
|
15
|
+
case "timeout":
|
|
16
|
+
return "timeout";
|
|
17
|
+
default:
|
|
18
|
+
return "completed";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async function runAcpExecute(deps, ctx) {
|
|
22
|
+
const runId = ctx.runId ?? uuidv7();
|
|
23
|
+
const startedAt = new Date().toISOString();
|
|
24
|
+
const startMs = Date.now();
|
|
25
|
+
const model = ctx.model ?? ctx.config?.model ?? null;
|
|
26
|
+
const sessionCtx = {
|
|
27
|
+
...(ctx.cwd !== undefined ? { cwd: ctx.cwd } : {}),
|
|
28
|
+
...(ctx.env !== undefined ? { env: ctx.env } : {}),
|
|
29
|
+
...(ctx.config !== undefined ? { config: ctx.config } : {}),
|
|
30
|
+
...(ctx.onEvent ? { onEvent: ctx.onEvent } : {}),
|
|
31
|
+
...(ctx.onOutput ? { onOutput: ctx.onOutput } : {}),
|
|
32
|
+
...(ctx.signal ? { signal: ctx.signal } : {}),
|
|
33
|
+
};
|
|
34
|
+
const base = {
|
|
35
|
+
runId,
|
|
36
|
+
startedAt,
|
|
37
|
+
signal: null,
|
|
38
|
+
model,
|
|
39
|
+
summary: null,
|
|
40
|
+
sessionParams: null,
|
|
41
|
+
sessionDisplayId: null,
|
|
42
|
+
clearSession: false,
|
|
43
|
+
billingType: null,
|
|
44
|
+
};
|
|
45
|
+
let session = null;
|
|
46
|
+
try {
|
|
47
|
+
session = await createAcpSession(deps, sessionCtx);
|
|
48
|
+
const handle = await session.send(ctx.prompt, {
|
|
49
|
+
...(ctx.config?.timeoutSec ? { timeoutSec: ctx.config.timeoutSec } : {}),
|
|
50
|
+
...(ctx.signal ? { signal: ctx.signal } : {}),
|
|
51
|
+
});
|
|
52
|
+
const turn = await handle.result;
|
|
53
|
+
const sessionId = session.sessionId;
|
|
54
|
+
await session.close();
|
|
55
|
+
return {
|
|
56
|
+
...base,
|
|
57
|
+
completedAt: new Date().toISOString(),
|
|
58
|
+
durationMs: Date.now() - startMs,
|
|
59
|
+
exitCode: turn.status === "completed" ? 0 : 1,
|
|
60
|
+
status: mapTurnStatus(turn.status),
|
|
61
|
+
errorMessage: turn.errorMessage,
|
|
62
|
+
errorCode: turn.errorCode,
|
|
63
|
+
summary: turn.summary,
|
|
64
|
+
...(turn.usage ? { usage: turn.usage } : {}),
|
|
65
|
+
costUsd: turn.costUsd,
|
|
66
|
+
sessionParams: sessionId ? { sessionId } : null,
|
|
67
|
+
sessionDisplayId: sessionId,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
if (session) {
|
|
72
|
+
try {
|
|
73
|
+
await session.close();
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
/* ignore */
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
...base,
|
|
81
|
+
completedAt: new Date().toISOString(),
|
|
82
|
+
durationMs: Date.now() - startMs,
|
|
83
|
+
exitCode: 1,
|
|
84
|
+
signal: null,
|
|
85
|
+
status: "failed",
|
|
86
|
+
errorMessage: err instanceof Error ? err.message : String(err),
|
|
87
|
+
errorCode: "acp_error",
|
|
88
|
+
costUsd: null,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async function resolveAcpAuth(config, authCtx) {
|
|
93
|
+
const binary = authCtx?.command ?? config.command[0];
|
|
94
|
+
try {
|
|
95
|
+
const resolved = await ensureCommandResolvable(binary);
|
|
96
|
+
return {
|
|
97
|
+
providerType: config.id,
|
|
98
|
+
binary: { installed: true, resolvedPath: resolved.bin },
|
|
99
|
+
options: [],
|
|
100
|
+
source: "filesystem",
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
return {
|
|
105
|
+
providerType: config.id,
|
|
106
|
+
binary: { installed: false, error: err instanceof Error ? err.message : String(err) },
|
|
107
|
+
options: [],
|
|
108
|
+
source: "filesystem",
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/** Build a generic ACP-backed `ProviderModule`. */
|
|
113
|
+
export function acpProvider(config) {
|
|
114
|
+
const deps = {
|
|
115
|
+
provider: config.id,
|
|
116
|
+
command: config.command,
|
|
117
|
+
...(config.env ? { env: config.env } : {}),
|
|
118
|
+
...(config.modeId ? { modeId: config.modeId } : {}),
|
|
119
|
+
...(config.transformers ? { transformers: config.transformers } : {}),
|
|
120
|
+
};
|
|
121
|
+
const provider = {
|
|
122
|
+
type: config.id,
|
|
123
|
+
capabilities: {
|
|
124
|
+
sessions: true,
|
|
125
|
+
modelDiscovery: Boolean(config.models),
|
|
126
|
+
quotaProbing: false,
|
|
127
|
+
mcp: false,
|
|
128
|
+
skills: false,
|
|
129
|
+
instructions: false,
|
|
130
|
+
workspace: true,
|
|
131
|
+
planMode: false,
|
|
132
|
+
concurrentSend: false,
|
|
133
|
+
cancelQueuedMessage: false,
|
|
134
|
+
modes: true,
|
|
135
|
+
// Real capability set is negotiated at the ACP initialize handshake.
|
|
136
|
+
dynamicCapabilities: true,
|
|
137
|
+
},
|
|
138
|
+
execute: (ctx) => runAcpExecute(deps, ctx),
|
|
139
|
+
createSession: (ctx) => createAcpSession(deps, ctx),
|
|
140
|
+
resolveAuth: (authCtx) => resolveAcpAuth(config, authCtx),
|
|
141
|
+
listModes: (opts) => listAcpModes(deps, opts),
|
|
142
|
+
};
|
|
143
|
+
if (config.models) {
|
|
144
|
+
const models = config.models;
|
|
145
|
+
provider.listModels = async () => models;
|
|
146
|
+
}
|
|
147
|
+
return provider;
|
|
148
|
+
}
|
|
149
|
+
// Register the factory so `loadProvidersFromConfig({ extends: "acp" })` can
|
|
150
|
+
// build ACP providers. Importing this module is cheap — the SDK is only loaded
|
|
151
|
+
// when a session/execute actually runs (dynamic import in session.ts).
|
|
152
|
+
registerAcpFactory(acpProvider);
|
|
153
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/acp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { StreamEvent } from "../../types.js";
|
|
2
|
+
/** Extract text from an ACP `ContentBlock` (a chunk update's `content`). */
|
|
3
|
+
export declare function extractContentText(content: unknown): string | null;
|
|
4
|
+
/** Extract displayable text from a tool call's `content` (ToolCallContent[]). */
|
|
5
|
+
export declare function extractToolContentText(content: unknown): string | null;
|
|
6
|
+
export interface AcpBaseInfo {
|
|
7
|
+
provider: string;
|
|
8
|
+
sessionId: string | null;
|
|
9
|
+
timestamp: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Map an ACP `session/update` payload (`params.update`) to an agentex
|
|
13
|
+
* `StreamEvent`. Returns null for updates with no agentex equivalent (user
|
|
14
|
+
* echoes, in-progress tool ticks). Unknown update kinds surface as
|
|
15
|
+
* `type: "unknown"` for forward-compat.
|
|
16
|
+
*/
|
|
17
|
+
export declare function mapAcpUpdate(update: Record<string, unknown>, info: AcpBaseInfo): StreamEvent | null;
|
|
18
|
+
/** Map an ACP `stopReason` to an agentex TurnResult status. */
|
|
19
|
+
export declare function mapAcpStopReason(stopReason: string | undefined): TurnStatus;
|
|
20
|
+
type TurnStatus = "completed" | "failed" | "max_turns" | "max_budget" | "aborted" | "timeout";
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/providers/acp/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMzE,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAKlE;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAkBtE;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAiBD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,IAAI,CA4CnG;AAMD,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAe3E;AAED,KAAK,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC"}
|