@agentex/agent 0.0.17 → 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 +112 -17
- 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 +1 -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 +25 -2
- package/dist/providers/claude/session.d.ts.map +1 -1
- package/dist/providers/claude/session.js +120 -7
- 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 +3 -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 +41 -2
- package/dist/providers/codex/session.d.ts.map +1 -1
- package/dist/providers/codex/session.js +319 -16
- 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 +1 -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 -20
- 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 +1 -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 +6 -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 +6 -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 +1 -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 +113 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.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 -13
- 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
package/README.md
CHANGED
|
@@ -44,22 +44,86 @@ console.log(result.raw); // the final provider-native event, verbatim (es
|
|
|
44
44
|
|
|
45
45
|
## Built-in Providers
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
57
|
-
|
|
58
|
-
|
|
47
|
+
Providers fall into three tiers:
|
|
48
|
+
|
|
49
|
+
- **Tier 1 — deep native:** `claude`, `codex`. Hand-built adapters over each CLI's richest protocol (Claude's stream-json, Codex's `app-server` JSON-RPC). Subscription-native, fullest feature set.
|
|
50
|
+
- **Tier 2 — ACP:** `gemini`, `copilot`, plus any agent registered via [`acpProvider`](#custom--byok-providers) or `extends: "acp"` config. One shared, tested base over the open [Agent Client Protocol](https://agentclientprotocol.com) (JSON-RPC over stdio).
|
|
51
|
+
- **Tier 3 — bespoke escape hatches:** `opencode` (HTTP/SSE daemon), `pi` (persistent RPC), `cursor` (one-shot), `openclaw` (HTTP gateway), `process` (any executable).
|
|
52
|
+
|
|
53
|
+
| Provider | Transport | Tier | Sessions | Modes | Permissions |
|
|
54
|
+
| ---------- | -------------------------------------- | ---- | --------- | ----- | ----------- |
|
|
55
|
+
| `claude` | `claude` CLI stream-json | 1 | ✅ resume | — | ✅ |
|
|
56
|
+
| `codex` | `codex app-server` JSON-RPC | 1 | ✅ resume | ✅ | ✅ |
|
|
57
|
+
| `gemini` | `gemini --acp` (ACP) | 2 | ✅ | ✅ | ✅ |
|
|
58
|
+
| `copilot` | `copilot --acp` (ACP) | 2 | ✅ | ✅ | ✅ |
|
|
59
|
+
| `opencode` | `opencode serve` HTTP + SSE | 3 | ✅ resume | — | — |
|
|
60
|
+
| `pi` | persistent `pi --mode rpc` | 3 | ✅ resume | — | — |
|
|
61
|
+
| `cursor` | `cursor-agent` stream-json (one-shot) | 3 | — | — | — |
|
|
62
|
+
| `openclaw` | HTTP gateway | 3 | — | — | — |
|
|
63
|
+
| `process` | any executable | 3 | — | — | — |
|
|
64
|
+
|
|
65
|
+
> `cursor` stays one-shot until `cursor-agent` ships an ACP mode; it can then move to Tier 2 via `extends: "acp"`.
|
|
66
|
+
|
|
67
|
+
Capabilities (sessions, modes, skills, workspaces, MCP, model discovery, quota probing, instructions, concurrent send, cancel queued messages) are declared on each module's `capabilities` field — check `provider.capabilities` to branch on what's supported. ACP providers set `dynamicCapabilities: true` (their real capability set is negotiated at the ACP `initialize` handshake). Skill-aware providers also report:
|
|
59
68
|
|
|
60
69
|
- `skillInventory` — `"provider-init"` for Claude's runtime inventory, `"local-discovery"` for Codex, or `"none"`.
|
|
61
70
|
- `skillInvocation` — `"native-slash"` for Claude, `"expanded-prompt"` for Codex, `"configured-only"`, or `"unsupported"`.
|
|
62
71
|
|
|
72
|
+
## Custom / BYOK providers
|
|
73
|
+
|
|
74
|
+
Three ways to add providers without forking, all behind the same `getProvider` /
|
|
75
|
+
`ProviderModule` surface. See [internal-docs/spec-provider-architecture.md](../../internal-docs/spec-provider-architecture.md)
|
|
76
|
+
for the design.
|
|
77
|
+
|
|
78
|
+
**Derived providers (config-extend).** Inherit a built-in with an env / command /
|
|
79
|
+
model overlay — the canonical use is pointing Claude at an Anthropic-compatible
|
|
80
|
+
gateway:
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
import { defineDerivedProvider, registerProvider, loadProvidersFromConfig } from "@agentex/agent";
|
|
84
|
+
|
|
85
|
+
registerProvider(
|
|
86
|
+
defineDerivedProvider({
|
|
87
|
+
id: "zai",
|
|
88
|
+
extends: "claude",
|
|
89
|
+
env: { ANTHROPIC_BASE_URL: "https://api.z.ai/api/anthropic", ANTHROPIC_AUTH_TOKEN: "…" },
|
|
90
|
+
models: [{ id: "glm-5.1", name: "GLM 5.1" }],
|
|
91
|
+
}),
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
// …or load a whole map from config (also accepts Paseo's `agents.providers` nesting):
|
|
95
|
+
loadProvidersFromConfig({
|
|
96
|
+
providers: {
|
|
97
|
+
zai: { extends: "claude", env: { ANTHROPIC_BASE_URL: "…" } },
|
|
98
|
+
"my-gemini": { extends: "acp", command: ["gemini", "--acp"] },
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**ACP agents.** Any agent speaking the [Agent Client Protocol](https://agentclientprotocol.com)
|
|
104
|
+
is a few lines:
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
import { acpProvider, registerProvider } from "@agentex/agent";
|
|
108
|
+
|
|
109
|
+
registerProvider(acpProvider({ id: "my-agent", command: ["my-agent", "--acp"] }));
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
`acpProvider` also accepts `transformers` (`modes` / `modeId`) to absorb a
|
|
113
|
+
specific agent's quirks without forking the base.
|
|
114
|
+
|
|
115
|
+
**Remote HTTP gateways.** For an "agent behind a URL", `httpAgentProvider` gives
|
|
116
|
+
you gateway-URL resolution, session-key round-trip, `auth_required` mapping, and
|
|
117
|
+
timeouts:
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
import { httpAgentProvider, registerProvider } from "@agentex/agent";
|
|
121
|
+
|
|
122
|
+
registerProvider(
|
|
123
|
+
httpAgentProvider({ providerType: "my-gw", defaultBaseUrl: "http://localhost:3001", runPath: "/api/agent/run" }),
|
|
124
|
+
);
|
|
125
|
+
```
|
|
126
|
+
|
|
63
127
|
## Execution Context
|
|
64
128
|
|
|
65
129
|
Only `prompt` is required. Everything else has sensible defaults.
|
|
@@ -189,7 +253,7 @@ Variants:
|
|
|
189
253
|
- `thinking` — Agent's internal reasoning (`text`)
|
|
190
254
|
- `tool_call` — Agent invoked a tool (`toolCallId: string | null`, `name`, `input`)
|
|
191
255
|
- `unknown` — Fallback for unrecognized wire events (`subtype` = the provider's `type` field). Forward-compat access to new CLI events via `raw` without a library update.
|
|
192
|
-
- `tool_result` — Tool returned a result (`toolCallId: string | null`, `content`, `isError`, `exitCode: number | null`)
|
|
256
|
+
- `tool_result` — Tool returned a result (`toolCallId: string | null`, `toolName: string | null`, `content`, `isError`, `exitCode: number | null`). `toolName` mirrors the matching `tool_call.name` (correlated for you), so you don't need your own `toolCallId → name` cache; null when no preceding `tool_call` was seen on the stream.
|
|
193
257
|
- `rate_limit` — Provider reported rate-limit state (`status`, `limitType`, `resetAt`, `overageStatus`, `isUsingOverage`)
|
|
194
258
|
- `permission_mode` — Permission mode change mid-session (`permissionMode: string`). Claude only, e.g., when the user accepts a plan and the session leaves `plan` mode.
|
|
195
259
|
- `result` — Final result (`text`, `costUsd`, `isError`, `stopReason`, `terminalReason`, `numTurns`, `durationMs`)
|
|
@@ -198,7 +262,7 @@ Lifecycle events (via `onLifecycle`) report phases: `preparing`, `spawning`, `ru
|
|
|
198
262
|
|
|
199
263
|
### What each provider surfaces on stream events
|
|
200
264
|
|
|
201
|
-
Verified live against `claude 2.1.116` and `codex-cli 0.122.0` (2026-04-21).
|
|
265
|
+
Verified live against `claude 2.1.116` and `codex-cli 0.122.0` (2026-04-21). ACP providers (`gemini`, `copilot`) and the session-backed `opencode`/`pi` emit real, correlated events (assistant / thinking / tool_call / tool_result); `cursor` and `openclaw` still stub most IDs — see the precedence note at the end of this section.
|
|
202
266
|
|
|
203
267
|
| Field on `StreamEvent` | Claude source | Codex source |
|
|
204
268
|
| ---------------------- | -------------------------------------------------- | ------------------------------------------------ |
|
|
@@ -207,7 +271,7 @@ Verified live against `claude 2.1.116` and `codex-cli 0.122.0` (2026-04-21). Oth
|
|
|
207
271
|
| `eventId` | Top-level per-line `uuid` | **null** — Codex doesn't emit a per-event ID |
|
|
208
272
|
| `turnId` | **null** — Claude doesn't model turns | v2 app-server: native UUIDv7 from `params.turnId`. NDJSON: **null** — no turn id in legacy format |
|
|
209
273
|
| `parentToolCallId` | `parent_tool_use_id` (set for sub-agent messages) | **null** — not emitted |
|
|
210
|
-
| Tool correlation | `tool_use.id` (`toolu_*`) ↔ `tool_result.tool_use_id` | `item.id` reappears on the same item's `item.completed` |
|
|
274
|
+
| Tool correlation | `tool_use.id` (`toolu_*`) ↔ `tool_result.tool_use_id`; the library stamps `tool_result.toolName` from the matching call | `item.id` reappears on the same item's `item.completed`; `toolName` set directly from the item type |
|
|
211
275
|
| `tool_result.exitCode` | **null** (Claude doesn't expose shell exit codes) | `item.exit_code` for `command_execution` |
|
|
212
276
|
| Assistant message span | One `message.id` may span multiple event lines (thinking + tool_use emitted separately with distinct `uuid`s) | One `item.completed` per agent message |
|
|
213
277
|
|
|
@@ -237,7 +301,7 @@ When in doubt, `raw` is the verbatim provider event — parse it yourself for an
|
|
|
237
301
|
|
|
238
302
|
### Other providers
|
|
239
303
|
|
|
240
|
-
`
|
|
304
|
+
`gemini` and `copilot` (ACP) and the session-backed `opencode` and `pi` emit real, correlated `StreamEvent`s — assistant text, thinking, and tool_call/tool_result with proper tool-call ids (ACP and Codex have no per-event/message ids, so those stay `null`). `cursor` and `openclaw` still emit the same `StreamEvent` shape with most ids stubbed to `null`; their `raw` field is populated. `cursor` will gain full fidelity when it moves to the ACP tier.
|
|
241
305
|
|
|
242
306
|
## Sessions (multi-turn)
|
|
243
307
|
|
|
@@ -265,7 +329,26 @@ await followUp.result;
|
|
|
265
329
|
await session.close();
|
|
266
330
|
```
|
|
267
331
|
|
|
268
|
-
`session.send()` returns a `SendHandle` with a synchronously-available `uuid` and a `result: Promise<TurnResult>`. `TurnResult` carries `summary`, `usage`, `costUsd`, and a `status` of `completed | failed | max_turns | max_budget | aborted`. Handle elicitations (MCP forms), hook callbacks, and interrupts through the corresponding `SessionContext` callbacks.
|
|
332
|
+
`session.send()` returns a `SendHandle` with a synchronously-available `uuid` and a `result: Promise<TurnResult>`. `TurnResult` carries `summary`, `usage`, `costUsd`, and a `status` of `completed | failed | max_turns | max_budget | aborted | timeout`. Handle elicitations (MCP forms), hook callbacks, and interrupts through the corresponding `SessionContext` callbacks.
|
|
333
|
+
|
|
334
|
+
### Bounding a turn (timeout / abort)
|
|
335
|
+
|
|
336
|
+
`send()` takes an optional `SendOptions` to cap a single turn — the natural shape for scheduled / fire-and-forget runs where a cron firing every minute can't be allowed to run a multi-hour turn:
|
|
337
|
+
|
|
338
|
+
```typescript
|
|
339
|
+
// Hard cap this turn. On fire, the library interrupts the agent and resolves
|
|
340
|
+
// `result` with status "timeout" — no consumer-side Promise.race needed.
|
|
341
|
+
const { result } = await session.send("Summarize the repo.", { timeoutSec: 90 });
|
|
342
|
+
const turn = await result;
|
|
343
|
+
if (turn.status === "timeout") { /* mark the run timed-out */ }
|
|
344
|
+
|
|
345
|
+
// Or abort just this turn (not the whole session) via an AbortSignal.
|
|
346
|
+
const ac = new AbortController();
|
|
347
|
+
const handle = await session.send("Long task…", { signal: ac.signal });
|
|
348
|
+
ac.abort(); // → result resolves with status "aborted"
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
`SendOptions.timeoutSec` overrides `ProviderConfig.timeoutSec`, which acts as the session-level default when no per-call value is given. The per-send `signal` is distinct from `SessionContext.signal`: the per-send one ends just that turn, the session-level one closes the whole session. Because a session runs a single underlying agent, a timeout/abort interrupts the active turn — so any concurrent sends coalesced into the same turn end with it.
|
|
269
352
|
|
|
270
353
|
### Concurrent send ("type while the agent is working")
|
|
271
354
|
|
|
@@ -310,6 +393,18 @@ else console.log("Too late — the agent already drained it.");
|
|
|
310
393
|
|
|
311
394
|
> **Race note.** Cancellation is best-effort. If the CLI drained the message mid-turn (Claude's `query.ts` between-tool-batches drain) before your `cancel()` request landed, you get `{ cancelled: false }` — and the message will be visible to the model as a `<system-reminder>`. The library does not unmount what the model has already seen.
|
|
312
395
|
|
|
396
|
+
### Graceful shutdown with `drain()`
|
|
397
|
+
|
|
398
|
+
`close()` kills the process (SIGTERM → SIGKILL after `graceSec`, default 5) — fine for "stop now," wrong when a tool is mid-flight. `drain()` is the graceful stop: it refuses new `send()` calls (they throw), waits for any in-flight turn's `result` to settle, then closes. Use it for budget gates, `SIGTERM` handlers, and schedule pauses where a running turn should finish rather than be cut off.
|
|
399
|
+
|
|
400
|
+
```typescript
|
|
401
|
+
process.on("SIGTERM", async () => {
|
|
402
|
+
await session.drain(); // let the current turn finish, then close
|
|
403
|
+
});
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
`drain()` is idempotent. Bump `ProviderConfig.graceSec` for sessions running legitimately long tools (test suites, long Bash) so `close()`/`drain()` don't hard-kill them prematurely.
|
|
407
|
+
|
|
313
408
|
## Plan Mode
|
|
314
409
|
|
|
315
410
|
Run an agent in read-only "plan" mode — it investigates and proposes a plan but cannot edit files or run mutating commands. Same goal in both providers, **different mechanism** in each. Check `provider.capabilities.planMode` before relying on it.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { ProviderModel, ProviderModule } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Declarative configuration for a *derived* provider — a new provider id that
|
|
4
|
+
* inherits a built-in provider's behavior with an environment / command / model
|
|
5
|
+
* overlay. The canonical use is BYOK gateways: point Claude at an
|
|
6
|
+
* Anthropic-compatible endpoint (z.ai, Qwen, a local proxy) by extending
|
|
7
|
+
* `"claude"` and setting `env.ANTHROPIC_BASE_URL`, with no new code.
|
|
8
|
+
*/
|
|
9
|
+
export interface DerivedProviderConfig {
|
|
10
|
+
/** Unique id for the new provider (used with `getProvider`/`registerProvider`). */
|
|
11
|
+
id: string;
|
|
12
|
+
/** A registered provider to inherit from (e.g. "claude", "codex"). For ACP
|
|
13
|
+
* agents use the config-file loader's `extends: "acp"` form instead. */
|
|
14
|
+
extends: string;
|
|
15
|
+
/** Display label (informational). */
|
|
16
|
+
label?: string;
|
|
17
|
+
/** Description (informational). */
|
|
18
|
+
description?: string;
|
|
19
|
+
/** Override the binary/command the base provider spawns. Per-call
|
|
20
|
+
* `config.command` still wins. */
|
|
21
|
+
command?: string;
|
|
22
|
+
/** Environment overlay applied to every execute / session / auth / modes /
|
|
23
|
+
* quota call (e.g. `ANTHROPIC_BASE_URL`). Per-call `ctx.env` overrides it. */
|
|
24
|
+
env?: Record<string, string>;
|
|
25
|
+
/** Replace the model list surfaced by `listModels()`. */
|
|
26
|
+
models?: ProviderModel[];
|
|
27
|
+
/** Default `config.modeId` applied when the caller doesn't set one. */
|
|
28
|
+
modeId?: string;
|
|
29
|
+
/** When `false`, `loadProvidersFromConfig` skips this entry. */
|
|
30
|
+
enabled?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/** Thrown when a provider config object is malformed. Branch on it; don't parse. */
|
|
33
|
+
export declare class MalformedProviderConfigError extends Error {
|
|
34
|
+
readonly path?: string;
|
|
35
|
+
constructor(message: string, path?: string);
|
|
36
|
+
}
|
|
37
|
+
/** Signature of the ACP factory registered by the ACP provider module. */
|
|
38
|
+
export type AcpFactory = (config: {
|
|
39
|
+
id: string;
|
|
40
|
+
command: string[];
|
|
41
|
+
env?: Record<string, string>;
|
|
42
|
+
label?: string;
|
|
43
|
+
models?: ProviderModel[];
|
|
44
|
+
modeId?: string;
|
|
45
|
+
}) => ProviderModule;
|
|
46
|
+
/**
|
|
47
|
+
* Registered by `@agentex/agent`'s ACP provider module on import, so the
|
|
48
|
+
* config-file loader can build `extends: "acp"` providers without a hard
|
|
49
|
+
* dependency on the ACP SDK at the top of the module graph.
|
|
50
|
+
*/
|
|
51
|
+
export declare function registerAcpFactory(factory: AcpFactory): void;
|
|
52
|
+
/** @internal — for tests. */
|
|
53
|
+
export declare function getAcpFactory(): AcpFactory | null;
|
|
54
|
+
/**
|
|
55
|
+
* Build a derived `ProviderModule` from a base provider plus an overlay. The
|
|
56
|
+
* returned module is NOT auto-registered — pass it to `registerProvider`, or
|
|
57
|
+
* use `loadProvidersFromConfig` which registers for you.
|
|
58
|
+
*/
|
|
59
|
+
export declare function defineDerivedProvider(cfg: DerivedProviderConfig): ProviderModule;
|
|
60
|
+
/**
|
|
61
|
+
* Build provider modules from a config object and (by default) register them.
|
|
62
|
+
* Supports `extends: "<builtin>"` (env/command/model overlay) and
|
|
63
|
+
* `extends: "acp"` (build an ACP provider from `command`). Throws
|
|
64
|
+
* `MalformedProviderConfigError` on a bad shape.
|
|
65
|
+
*/
|
|
66
|
+
export declare function loadProvidersFromConfig(raw: unknown, options?: {
|
|
67
|
+
register?: boolean;
|
|
68
|
+
}): ProviderModule[];
|
|
69
|
+
//# sourceMappingURL=derived.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derived.d.ts","sourceRoot":"","sources":["../src/derived.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,aAAa,EACb,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,EAAE,EAAE,MAAM,CAAC;IACX;6EACyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;uCACmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;mFAC+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,yDAAyD;IACzD,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,oFAAoF;AACpF,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBACX,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAK3C;AAED,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAK,cAAc,CAAC;AAIrB;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAE5D;AAED,6BAA6B;AAC7B,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,qBAAqB,GAAG,cAAc,CAiEhF;AA+FD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,cAAc,EAAE,CA4DlB"}
|
package/dist/derived.js
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { getProvider, registerProvider } from "./registry.js";
|
|
2
|
+
/** Thrown when a provider config object is malformed. Branch on it; don't parse. */
|
|
3
|
+
export class MalformedProviderConfigError extends Error {
|
|
4
|
+
path;
|
|
5
|
+
constructor(message, path) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "MalformedProviderConfigError";
|
|
8
|
+
this.path = path;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
let acpFactory = null;
|
|
12
|
+
/**
|
|
13
|
+
* Registered by `@agentex/agent`'s ACP provider module on import, so the
|
|
14
|
+
* config-file loader can build `extends: "acp"` providers without a hard
|
|
15
|
+
* dependency on the ACP SDK at the top of the module graph.
|
|
16
|
+
*/
|
|
17
|
+
export function registerAcpFactory(factory) {
|
|
18
|
+
acpFactory = factory;
|
|
19
|
+
}
|
|
20
|
+
/** @internal — for tests. */
|
|
21
|
+
export function getAcpFactory() {
|
|
22
|
+
return acpFactory;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Build a derived `ProviderModule` from a base provider plus an overlay. The
|
|
26
|
+
* returned module is NOT auto-registered — pass it to `registerProvider`, or
|
|
27
|
+
* use `loadProvidersFromConfig` which registers for you.
|
|
28
|
+
*/
|
|
29
|
+
export function defineDerivedProvider(cfg) {
|
|
30
|
+
if (!cfg.id || typeof cfg.id !== "string") {
|
|
31
|
+
throw new MalformedProviderConfigError("derived provider requires a non-empty string id");
|
|
32
|
+
}
|
|
33
|
+
if (cfg.extends === "acp") {
|
|
34
|
+
throw new MalformedProviderConfigError(`provider "${cfg.id}": extends "acp" is built by loadProvidersFromConfig (or acpProvider() directly), not defineDerivedProvider`, cfg.id);
|
|
35
|
+
}
|
|
36
|
+
const base = getProvider(cfg.extends); // throws on unknown base
|
|
37
|
+
const overlayEnv = (env) => ({
|
|
38
|
+
...cfg.env,
|
|
39
|
+
...env,
|
|
40
|
+
});
|
|
41
|
+
const overlayConfig = (config) => ({
|
|
42
|
+
...config,
|
|
43
|
+
...(cfg.command && !config?.command ? { command: cfg.command } : {}),
|
|
44
|
+
...(cfg.modeId && !config?.modeId ? { modeId: cfg.modeId } : {}),
|
|
45
|
+
});
|
|
46
|
+
const capabilities = {
|
|
47
|
+
...base.capabilities,
|
|
48
|
+
...(cfg.models ? { modelDiscovery: true } : {}),
|
|
49
|
+
};
|
|
50
|
+
const derived = {
|
|
51
|
+
...base,
|
|
52
|
+
type: cfg.id,
|
|
53
|
+
capabilities,
|
|
54
|
+
execute: (ctx) => base.execute({ ...ctx, env: overlayEnv(ctx.env), config: overlayConfig(ctx.config) }),
|
|
55
|
+
resolveAuth: (authCtx) => base.resolveAuth({
|
|
56
|
+
...authCtx,
|
|
57
|
+
env: overlayEnv(authCtx?.env),
|
|
58
|
+
command: authCtx?.command ?? cfg.command,
|
|
59
|
+
}),
|
|
60
|
+
};
|
|
61
|
+
if (base.createSession) {
|
|
62
|
+
const baseCreate = base.createSession.bind(base);
|
|
63
|
+
derived.createSession = (ctx) => baseCreate({ ...ctx, env: overlayEnv(ctx.env), config: overlayConfig(ctx.config) });
|
|
64
|
+
}
|
|
65
|
+
if (cfg.models) {
|
|
66
|
+
const models = cfg.models;
|
|
67
|
+
derived.listModels = async () => models;
|
|
68
|
+
}
|
|
69
|
+
else if (base.listModels) {
|
|
70
|
+
const baseList = base.listModels.bind(base);
|
|
71
|
+
derived.listModels = (opts) => baseList(opts);
|
|
72
|
+
}
|
|
73
|
+
if (base.listModes) {
|
|
74
|
+
const baseModes = base.listModes.bind(base);
|
|
75
|
+
derived.listModes = (opts) => baseModes({ ...opts, env: overlayEnv(opts?.env), config: overlayConfig(opts?.config) });
|
|
76
|
+
}
|
|
77
|
+
if (base.checkQuota) {
|
|
78
|
+
const baseQuota = base.checkQuota.bind(base);
|
|
79
|
+
derived.checkQuota = (qctx) => baseQuota({ ...qctx, env: overlayEnv(qctx?.env), config: overlayConfig(qctx?.config) });
|
|
80
|
+
}
|
|
81
|
+
return derived;
|
|
82
|
+
}
|
|
83
|
+
function isRecord(v) {
|
|
84
|
+
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
85
|
+
}
|
|
86
|
+
function toCommandArray(command, path) {
|
|
87
|
+
if (typeof command === "string") {
|
|
88
|
+
const parts = command.trim().split(/\s+/).filter(Boolean);
|
|
89
|
+
if (parts.length === 0)
|
|
90
|
+
throw new MalformedProviderConfigError(`${path}.command is empty`, path);
|
|
91
|
+
return parts;
|
|
92
|
+
}
|
|
93
|
+
if (Array.isArray(command) && command.every((c) => typeof c === "string") && command.length > 0) {
|
|
94
|
+
return command;
|
|
95
|
+
}
|
|
96
|
+
throw new MalformedProviderConfigError(`${path}.command must be a non-empty string or string[] for an ACP provider`, path);
|
|
97
|
+
}
|
|
98
|
+
function toCommandString(command, path) {
|
|
99
|
+
if (command === undefined)
|
|
100
|
+
return undefined;
|
|
101
|
+
if (typeof command === "string")
|
|
102
|
+
return command;
|
|
103
|
+
if (Array.isArray(command)) {
|
|
104
|
+
// agentex's `config.command` is a single binary (args go through the agent's
|
|
105
|
+
// own config), so a multi-element array would silently drop everything past
|
|
106
|
+
// the binary — reject it rather than mislead. (ACP providers use the array
|
|
107
|
+
// form via the `extends: "acp"` branch instead.)
|
|
108
|
+
if (command.length === 1 && typeof command[0] === "string")
|
|
109
|
+
return command[0];
|
|
110
|
+
throw new MalformedProviderConfigError(`${path}.command for a non-ACP provider must be a single binary string; got an array of ${command.length} (use extends: "acp" for binary+args)`, path);
|
|
111
|
+
}
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
function validateEnv(env, path) {
|
|
115
|
+
if (env === undefined)
|
|
116
|
+
return undefined;
|
|
117
|
+
if (!isRecord(env))
|
|
118
|
+
throw new MalformedProviderConfigError(`${path}.env must be an object`, path);
|
|
119
|
+
const out = {};
|
|
120
|
+
for (const [k, v] of Object.entries(env)) {
|
|
121
|
+
if (typeof v !== "string") {
|
|
122
|
+
throw new MalformedProviderConfigError(`${path}.env.${k} must be a string`, path);
|
|
123
|
+
}
|
|
124
|
+
out[k] = v;
|
|
125
|
+
}
|
|
126
|
+
return out;
|
|
127
|
+
}
|
|
128
|
+
function validateModels(models, path) {
|
|
129
|
+
if (models === undefined)
|
|
130
|
+
return undefined;
|
|
131
|
+
if (!Array.isArray(models))
|
|
132
|
+
throw new MalformedProviderConfigError(`${path}.models must be an array`, path);
|
|
133
|
+
return models.map((m, i) => {
|
|
134
|
+
if (!isRecord(m) || typeof m["id"] !== "string") {
|
|
135
|
+
throw new MalformedProviderConfigError(`${path}.models[${i}] must have a string id`, path);
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
id: m["id"],
|
|
139
|
+
name: typeof m["name"] === "string" ? m["name"] : m["id"],
|
|
140
|
+
...(typeof m["provider"] === "string" ? { provider: m["provider"] } : {}),
|
|
141
|
+
};
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/** Locate the providers map, accepting `{ providers }` or Paseo's
|
|
145
|
+
* `{ agents: { providers } }` nesting. */
|
|
146
|
+
function findProvidersMap(raw) {
|
|
147
|
+
if (!isRecord(raw))
|
|
148
|
+
throw new MalformedProviderConfigError("config must be an object");
|
|
149
|
+
if (isRecord(raw["providers"]))
|
|
150
|
+
return raw["providers"];
|
|
151
|
+
if (isRecord(raw["agents"]) && isRecord(raw["agents"]["providers"])) {
|
|
152
|
+
return raw["agents"]["providers"];
|
|
153
|
+
}
|
|
154
|
+
throw new MalformedProviderConfigError("config must contain a `providers` (or `agents.providers`) object");
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Build provider modules from a config object and (by default) register them.
|
|
158
|
+
* Supports `extends: "<builtin>"` (env/command/model overlay) and
|
|
159
|
+
* `extends: "acp"` (build an ACP provider from `command`). Throws
|
|
160
|
+
* `MalformedProviderConfigError` on a bad shape.
|
|
161
|
+
*/
|
|
162
|
+
export function loadProvidersFromConfig(raw, options) {
|
|
163
|
+
const register = options?.register ?? true;
|
|
164
|
+
const providersMap = findProvidersMap(raw);
|
|
165
|
+
const built = [];
|
|
166
|
+
for (const [id, value] of Object.entries(providersMap)) {
|
|
167
|
+
const path = `providers.${id}`;
|
|
168
|
+
if (!isRecord(value))
|
|
169
|
+
throw new MalformedProviderConfigError(`${path} must be an object`, path);
|
|
170
|
+
const entry = value;
|
|
171
|
+
if (entry.enabled === false)
|
|
172
|
+
continue;
|
|
173
|
+
if (typeof entry.extends !== "string" || entry.extends.length === 0) {
|
|
174
|
+
throw new MalformedProviderConfigError(`${path}.extends must be a non-empty string`, path);
|
|
175
|
+
}
|
|
176
|
+
const label = typeof entry.label === "string" ? entry.label : undefined;
|
|
177
|
+
const description = typeof entry.description === "string" ? entry.description : undefined;
|
|
178
|
+
const env = validateEnv(entry.env, path);
|
|
179
|
+
const models = validateModels(entry.models, path);
|
|
180
|
+
const modeId = typeof entry.modeId === "string" ? entry.modeId : undefined;
|
|
181
|
+
let provider;
|
|
182
|
+
if (entry.extends === "acp") {
|
|
183
|
+
if (!acpFactory) {
|
|
184
|
+
throw new MalformedProviderConfigError(`${path}: ACP providers require the ACP module — import it (e.g. \`@agentex/agent\`'s acp provider) before loading ACP configs`, path);
|
|
185
|
+
}
|
|
186
|
+
provider = acpFactory({
|
|
187
|
+
id,
|
|
188
|
+
command: toCommandArray(entry.command, path),
|
|
189
|
+
...(env ? { env } : {}),
|
|
190
|
+
...(label ? { label } : {}),
|
|
191
|
+
...(models ? { models } : {}),
|
|
192
|
+
...(modeId ? { modeId } : {}),
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
const command = toCommandString(entry.command, path);
|
|
197
|
+
provider = defineDerivedProvider({
|
|
198
|
+
id,
|
|
199
|
+
extends: entry.extends,
|
|
200
|
+
...(label ? { label } : {}),
|
|
201
|
+
...(description ? { description } : {}),
|
|
202
|
+
...(command ? { command } : {}),
|
|
203
|
+
...(env ? { env } : {}),
|
|
204
|
+
...(models ? { models } : {}),
|
|
205
|
+
...(modeId ? { modeId } : {}),
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
built.push(provider);
|
|
209
|
+
}
|
|
210
|
+
if (register) {
|
|
211
|
+
// Register only after every entry validates, so a bad entry doesn't leave a
|
|
212
|
+
// half-applied config registered.
|
|
213
|
+
for (const provider of built)
|
|
214
|
+
registerProvider(provider);
|
|
215
|
+
}
|
|
216
|
+
return built;
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=derived.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derived.js","sourceRoot":"","sources":["../src/derived.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
export { getProvider, listProviders, registerProvider } from "./registry.js";
|
|
2
|
+
export { defineDerivedProvider, loadProvidersFromConfig, registerAcpFactory, MalformedProviderConfigError, } from "./derived.js";
|
|
3
|
+
export type { DerivedProviderConfig, AcpFactory } from "./derived.js";
|
|
4
|
+
export { acpProvider } from "./providers/acp/index.js";
|
|
5
|
+
export type { AcpProviderConfig } from "./providers/acp/index.js";
|
|
6
|
+
export type { AcpTransformers } from "./providers/acp/session.js";
|
|
7
|
+
export { runHttpAgent, httpAgentProvider, httpAgentSessionCodec, } from "./providers/_shared/http-agent.js";
|
|
8
|
+
export type { HttpAgentOptions } from "./providers/_shared/http-agent.js";
|
|
2
9
|
export { renderTemplate } from "./utils/template.js";
|
|
3
10
|
export { redactEnvForLogs } from "./utils/env.js";
|
|
4
11
|
export { parseAskUserQuestion } from "./utils/ask-user-question.js";
|
|
@@ -23,7 +30,7 @@ export { getCodexTranscriptPath, readCodexTranscript, peekCodexTranscript, readC
|
|
|
23
30
|
export type { GetCodexTranscriptPathOptions, CodexTranscriptLocation, ReadCodexTranscriptOptions, CodexTranscriptYield, CodexTranscriptLine, CodexPeekResult, } from "./providers/codex/transcript.js";
|
|
24
31
|
export { installSkills, removeSkills, listInstalledSkills, resolveSkillsHome, resolveSkillsWorkspace, resolveNativeSkillsHome, resolveNativeSkillsWorkspace, ensureSkillSymlink, } from "./utils/skills.js";
|
|
25
32
|
export { commandInventoryFromEvent, discoverSkillCommands, reconcileSkillCommands, formatSlashInvocation, invokeSkill, buildExpandedSkillPrompt, } from "./utils/skill-commands.js";
|
|
26
|
-
export type { ProviderModule, ProviderCapabilities, ExecutionContext, ExecutionResult, ExecutionStatus, ProviderConfig, McpServerConfig, StreamEvent, SessionCodec, SessionState, TokenUsage, ModelUsage, RateLimitInfo, BaseStreamEventFields, LifecycleEvent, QuotaStatus, QuotaContext, AuthMethod, AuthSource, AuthOption, AuthReport, AuthResolveContext, AuthIdentity, AuthRequiredReason, BinaryStatus, ProviderModel, SessionContext, AgentSession, TurnResult, UserInputRequest, UserInputResponse, ElicitationRequest, ElicitationResponse, HookCallbackRequest, HookCallbackResponse, TranscriptOps, TranscriptYield, TranscriptPeek, FoundTranscript, } from "./types.js";
|
|
33
|
+
export type { ProviderModule, ProviderCapabilities, AgentMode, ListModesOptions, ExecutionContext, ExecutionResult, ExecutionStatus, ProviderConfig, McpServerConfig, StreamEvent, SessionCodec, SessionState, TokenUsage, ModelUsage, RateLimitInfo, BaseStreamEventFields, LifecycleEvent, QuotaStatus, QuotaContext, AuthMethod, AuthSource, AuthOption, AuthReport, AuthResolveContext, AuthIdentity, AuthRequiredReason, BinaryStatus, ProviderModel, SessionContext, AgentSession, SendHandle, SendOptions, CancelResult, TurnResult, UserInputRequest, UserInputResponse, ElicitationRequest, ElicitationResponse, HookCallbackRequest, HookCallbackResponse, TranscriptOps, TranscriptYield, TranscriptPeek, FoundTranscript, } from "./types.js";
|
|
27
34
|
export type { AskUserQuestion, QuestionOption, } from "./utils/ask-user-question.js";
|
|
28
35
|
export type { ExitPlanModeRequest } from "./utils/exit-plan-mode.js";
|
|
29
36
|
export type { SkillRuntime, SkillLocation, SkillChannel, InstallSkillsOptions, SkillInstallEntry, SkillInstallResult, RemoveSkillsOptions, SkillRemoveEntry, SkillRemoveResult, InstalledSkill, } from "./utils/skills.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
// Functions
|
|
2
2
|
export { getProvider, listProviders, registerProvider } from "./registry.js";
|
|
3
|
+
export { defineDerivedProvider, loadProvidersFromConfig, registerAcpFactory, MalformedProviderConfigError, } from "./derived.js";
|
|
4
|
+
export { acpProvider } from "./providers/acp/index.js";
|
|
5
|
+
export { runHttpAgent, httpAgentProvider, httpAgentSessionCodec, } from "./providers/_shared/http-agent.js";
|
|
3
6
|
export { renderTemplate } from "./utils/template.js";
|
|
4
7
|
export { redactEnvForLogs } from "./utils/env.js";
|
|
5
8
|
export { parseAskUserQuestion } from "./utils/ask-user-question.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1F,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,SAAS,EACT,UAAU,EACV,UAAU,EACV,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAU1C,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AAUzC,SAAS;AACT,OAAO,EACL,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,EACX,wBAAwB,GACzB,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1F,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,SAAS,EACT,UAAU,EACV,UAAU,EACV,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAU1C,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AAUzC,SAAS;AACT,OAAO,EACL,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,EACX,wBAAwB,GACzB,MAAM,2BAA2B,CAAC"}
|
|
@@ -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"}
|