@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.
Files changed (165) hide show
  1. package/README.md +158 -18
  2. package/dist/derived.d.ts +69 -0
  3. package/dist/derived.d.ts.map +1 -0
  4. package/dist/derived.js +218 -0
  5. package/dist/derived.js.map +1 -0
  6. package/dist/index.d.ts +8 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +3 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/providers/_shared/http-agent.d.ts +39 -0
  11. package/dist/providers/_shared/http-agent.d.ts.map +1 -0
  12. package/dist/providers/_shared/http-agent.js +265 -0
  13. package/dist/providers/_shared/http-agent.js.map +1 -0
  14. package/dist/providers/acp/index.d.ts +29 -0
  15. package/dist/providers/acp/index.d.ts.map +1 -0
  16. package/dist/providers/acp/index.js +153 -0
  17. package/dist/providers/acp/index.js.map +1 -0
  18. package/dist/providers/acp/parse.d.ts +22 -0
  19. package/dist/providers/acp/parse.d.ts.map +1 -0
  20. package/dist/providers/acp/parse.js +122 -0
  21. package/dist/providers/acp/parse.js.map +1 -0
  22. package/dist/providers/acp/session.d.ts +36 -0
  23. package/dist/providers/acp/session.d.ts.map +1 -0
  24. package/dist/providers/acp/session.js +487 -0
  25. package/dist/providers/acp/session.js.map +1 -0
  26. package/dist/providers/claude/execute.d.ts.map +1 -1
  27. package/dist/providers/claude/execute.js +6 -2
  28. package/dist/providers/claude/execute.js.map +1 -1
  29. package/dist/providers/claude/index.d.ts.map +1 -1
  30. package/dist/providers/claude/index.js +3 -0
  31. package/dist/providers/claude/index.js.map +1 -1
  32. package/dist/providers/claude/parse.d.ts.map +1 -1
  33. package/dist/providers/claude/parse.js +8 -0
  34. package/dist/providers/claude/parse.js.map +1 -1
  35. package/dist/providers/claude/session.d.ts +43 -4
  36. package/dist/providers/claude/session.d.ts.map +1 -1
  37. package/dist/providers/claude/session.js +215 -30
  38. package/dist/providers/claude/session.js.map +1 -1
  39. package/dist/providers/codex/execute.d.ts.map +1 -1
  40. package/dist/providers/codex/execute.js +5 -1
  41. package/dist/providers/codex/execute.js.map +1 -1
  42. package/dist/providers/codex/index.d.ts.map +1 -1
  43. package/dist/providers/codex/index.js +5 -0
  44. package/dist/providers/codex/index.js.map +1 -1
  45. package/dist/providers/codex/modes.d.ts +35 -0
  46. package/dist/providers/codex/modes.d.ts.map +1 -0
  47. package/dist/providers/codex/modes.js +148 -0
  48. package/dist/providers/codex/modes.js.map +1 -0
  49. package/dist/providers/codex/parse.d.ts.map +1 -1
  50. package/dist/providers/codex/parse.js +4 -0
  51. package/dist/providers/codex/parse.js.map +1 -1
  52. package/dist/providers/codex/session.d.ts +45 -4
  53. package/dist/providers/codex/session.d.ts.map +1 -1
  54. package/dist/providers/codex/session.js +408 -66
  55. package/dist/providers/codex/session.js.map +1 -1
  56. package/dist/providers/copilot/index.d.ts +15 -0
  57. package/dist/providers/copilot/index.d.ts.map +1 -0
  58. package/dist/providers/copilot/index.js +19 -0
  59. package/dist/providers/copilot/index.js.map +1 -0
  60. package/dist/providers/cursor/index.d.ts.map +1 -1
  61. package/dist/providers/cursor/index.js +3 -0
  62. package/dist/providers/cursor/index.js.map +1 -1
  63. package/dist/providers/cursor/parse.d.ts.map +1 -1
  64. package/dist/providers/cursor/parse.js +1 -0
  65. package/dist/providers/cursor/parse.js.map +1 -1
  66. package/dist/providers/gemini/index.d.ts.map +1 -1
  67. package/dist/providers/gemini/index.js +16 -18
  68. package/dist/providers/gemini/index.js.map +1 -1
  69. package/dist/providers/openclaw/execute.d.ts +5 -0
  70. package/dist/providers/openclaw/execute.d.ts.map +1 -1
  71. package/dist/providers/openclaw/execute.js +13 -173
  72. package/dist/providers/openclaw/execute.js.map +1 -1
  73. package/dist/providers/openclaw/index.d.ts.map +1 -1
  74. package/dist/providers/openclaw/index.js +3 -0
  75. package/dist/providers/openclaw/index.js.map +1 -1
  76. package/dist/providers/opencode/event-parse.d.ts +23 -0
  77. package/dist/providers/opencode/event-parse.d.ts.map +1 -0
  78. package/dist/providers/opencode/event-parse.js +128 -0
  79. package/dist/providers/opencode/event-parse.js.map +1 -0
  80. package/dist/providers/opencode/http-session.d.ts +4 -0
  81. package/dist/providers/opencode/http-session.d.ts.map +1 -0
  82. package/dist/providers/opencode/http-session.js +376 -0
  83. package/dist/providers/opencode/http-session.js.map +1 -0
  84. package/dist/providers/opencode/index.d.ts.map +1 -1
  85. package/dist/providers/opencode/index.js +8 -1
  86. package/dist/providers/opencode/index.js.map +1 -1
  87. package/dist/providers/opencode/parse.d.ts.map +1 -1
  88. package/dist/providers/opencode/parse.js +1 -0
  89. package/dist/providers/opencode/parse.js.map +1 -1
  90. package/dist/providers/opencode/server.d.ts +8 -0
  91. package/dist/providers/opencode/server.d.ts.map +1 -0
  92. package/dist/providers/opencode/server.js +0 -0
  93. package/dist/providers/opencode/server.js.map +1 -0
  94. package/dist/providers/pi/index.d.ts.map +1 -1
  95. package/dist/providers/pi/index.js +8 -1
  96. package/dist/providers/pi/index.js.map +1 -1
  97. package/dist/providers/pi/parse.d.ts.map +1 -1
  98. package/dist/providers/pi/parse.js +1 -0
  99. package/dist/providers/pi/parse.js.map +1 -1
  100. package/dist/providers/pi/session.d.ts +40 -0
  101. package/dist/providers/pi/session.d.ts.map +1 -0
  102. package/dist/providers/pi/session.js +328 -0
  103. package/dist/providers/pi/session.js.map +1 -0
  104. package/dist/providers/process/index.d.ts.map +1 -1
  105. package/dist/providers/process/index.js +3 -0
  106. package/dist/providers/process/index.js.map +1 -1
  107. package/dist/registry.d.ts +1 -0
  108. package/dist/registry.d.ts.map +1 -1
  109. package/dist/registry.js +6 -0
  110. package/dist/registry.js.map +1 -1
  111. package/dist/types.d.ts +192 -3
  112. package/dist/types.d.ts.map +1 -1
  113. package/dist/types.js.map +1 -1
  114. package/dist/utils/skill-commands.d.ts.map +1 -1
  115. package/dist/utils/skill-commands.js +4 -2
  116. package/dist/utils/skill-commands.js.map +1 -1
  117. package/dist/utils/tool-names.d.ts +24 -0
  118. package/dist/utils/tool-names.d.ts.map +1 -0
  119. package/dist/utils/tool-names.js +50 -0
  120. package/dist/utils/tool-names.js.map +1 -0
  121. package/package.json +22 -12
  122. package/dist/providers/claude/test.d.ts +0 -3
  123. package/dist/providers/claude/test.d.ts.map +0 -1
  124. package/dist/providers/claude/test.js +0 -167
  125. package/dist/providers/claude/test.js.map +0 -1
  126. package/dist/providers/codex/test.d.ts +0 -3
  127. package/dist/providers/codex/test.d.ts.map +0 -1
  128. package/dist/providers/codex/test.js +0 -74
  129. package/dist/providers/codex/test.js.map +0 -1
  130. package/dist/providers/cursor/test.d.ts +0 -3
  131. package/dist/providers/cursor/test.d.ts.map +0 -1
  132. package/dist/providers/cursor/test.js +0 -58
  133. package/dist/providers/cursor/test.js.map +0 -1
  134. package/dist/providers/gemini/codec.d.ts +0 -3
  135. package/dist/providers/gemini/codec.d.ts.map +0 -1
  136. package/dist/providers/gemini/codec.js +0 -47
  137. package/dist/providers/gemini/codec.js.map +0 -1
  138. package/dist/providers/gemini/execute.d.ts +0 -3
  139. package/dist/providers/gemini/execute.d.ts.map +0 -1
  140. package/dist/providers/gemini/execute.js +0 -256
  141. package/dist/providers/gemini/execute.js.map +0 -1
  142. package/dist/providers/gemini/parse.d.ts +0 -20
  143. package/dist/providers/gemini/parse.d.ts.map +0 -1
  144. package/dist/providers/gemini/parse.js +0 -235
  145. package/dist/providers/gemini/parse.js.map +0 -1
  146. package/dist/providers/gemini/test.d.ts +0 -3
  147. package/dist/providers/gemini/test.d.ts.map +0 -1
  148. package/dist/providers/gemini/test.js +0 -67
  149. package/dist/providers/gemini/test.js.map +0 -1
  150. package/dist/providers/openclaw/test.d.ts +0 -3
  151. package/dist/providers/openclaw/test.d.ts.map +0 -1
  152. package/dist/providers/openclaw/test.js +0 -54
  153. package/dist/providers/openclaw/test.js.map +0 -1
  154. package/dist/providers/opencode/test.d.ts +0 -3
  155. package/dist/providers/opencode/test.d.ts.map +0 -1
  156. package/dist/providers/opencode/test.js +0 -60
  157. package/dist/providers/opencode/test.js.map +0 -1
  158. package/dist/providers/pi/test.d.ts +0 -3
  159. package/dist/providers/pi/test.d.ts.map +0 -1
  160. package/dist/providers/pi/test.js +0 -60
  161. package/dist/providers/pi/test.js.map +0 -1
  162. package/dist/utils/model-cache.d.ts +0 -11
  163. package/dist/utils/model-cache.d.ts.map +0 -1
  164. package/dist/utils/model-cache.js +0 -17
  165. package/dist/utils/model-cache.js.map +0 -1
package/README.md CHANGED
@@ -8,7 +8,7 @@ Programmatic execution of AI coding agents. Spawn and manage Claude Code, Codex,
8
8
  npm install @agentex/agent
9
9
  ```
10
10
 
11
- Node.js >= 18. Each provider requires its CLI to be installed and on `$PATH`.
11
+ Node.js >= 18. Each provider requires its CLI to be installed and on `$PATH`. The Codex session adapter additionally requires **codex-cli 0.130.0 or newer** (the `app-server` subcommand); older CLIs will fail with `unexpected argument '--json'`.
12
12
 
13
13
  ## Quick Start
14
14
 
@@ -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
- | Provider | CLI | Description |
48
- | ---------- | ---------------- | ------------------------------------------- |
49
- | `claude` | `claude` | Claude Code (Anthropic) |
50
- | `codex` | `codex` | Codex CLI (OpenAI) |
51
- | `gemini` | `gemini` | Gemini CLI (Google) |
52
- | `cursor` | `agent` | Cursor CLI agent |
53
- | `opencode` | `opencode` | OpenCode |
54
- | `pi` | `pi` | Pi CLI |
55
- | `openclaw` | gateway HTTP | OpenClaw HTTP-gateway agent |
56
- | `process` | any executable | Generic process executor (arbitrary binary) |
47
+ Providers fall into three tiers:
57
48
 
58
- Provider capabilities (sessions, skills, workspaces, MCP, model discovery, quota probing, instructions) are declared on each module's `capabilities` field — check `provider.capabilities` to branch on what's supported. Skill-aware providers also report:
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). Other providers emit stubs — see precedence table at the end of this section.
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
- `cursor`, `gemini`, `opencode`, `pi`, `openclaw` emit the same `StreamEvent` shape but currently stub most IDs to `null`. Their `raw` field is populated; enrichment to match the Claude/Codex level of fidelity is tracked separately and has not been audited against live CLI output.
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
 
@@ -257,13 +321,89 @@ const session = await claude.createSession!({
257
321
  },
258
322
  });
259
323
 
260
- const first = await session.send("List the API routes in src/");
324
+ const { uuid, result } = await session.send("List the API routes in src/");
325
+ const turnResult = await result; // resolves on the next TurnResult
261
326
  const followUp = await session.send("Now add rate limiting to each one.");
327
+ await followUp.result;
262
328
 
263
329
  await session.close();
264
330
  ```
265
331
 
266
- `session.send()` returns a `TurnResult` with `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.
352
+
353
+ ### Concurrent send ("type while the agent is working")
354
+
355
+ For providers with `capabilities.concurrentSend = true` (Claude, Codex), `session.send()` is callable at any time — including while a previous turn is still running. The underlying CLI's own queue handles ordering: Claude drains queued messages mid-turn as `<system-reminder>` attachments on the next tool-result batch; Codex coalesces them into the active or next turn.
356
+
357
+ ```typescript
358
+ // Fire a long-running turn.
359
+ const { uuid, result } = await session.send("Run the test suite and fix any failures.");
360
+
361
+ // User decides they want a tweak — no need to wait for the turn to finish.
362
+ await session.send("While you're at it, also add a CHANGELOG entry.");
363
+
364
+ // Both messages get processed in the same turn (Claude mid-turn drain) or
365
+ // adjacent turns (Codex). Both `result` Promises resolve when the turn ends —
366
+ // they may resolve to the *same* TurnResult if the CLI coalesces them.
367
+ await result;
368
+ ```
369
+
370
+ When multiple sends are coalesced into one turn by the CLI, the `result` Promises returned by each `send()` resolve with the **same** `TurnResult` object — callers cannot assume 1:1 correspondence between `send()` calls and `TurnResult`s.
371
+
372
+ For providers with `concurrentSend = false`, calling `send()` while a turn is in progress throws. Check the capability flag to gate UI:
373
+
374
+ ```typescript
375
+ if (provider.capabilities.concurrentSend) {
376
+ // Render the "type while working" textarea.
377
+ }
378
+ ```
379
+
380
+ ### Cancelling a queued message
381
+
382
+ For providers with `capabilities.cancelQueuedMessage = true` (Claude only), `session.cancel(uuid)` removes a message from the CLI's queue if it hasn't started processing yet.
383
+
384
+ ```typescript
385
+ const { uuid } = await session.send("Refactor the auth middleware.");
386
+ // ...user changes their mind...
387
+ const { cancelled } = await session.cancel(uuid);
388
+ if (cancelled) console.log("Pulled the message before the agent started on it.");
389
+ else console.log("Too late — the agent already drained it.");
390
+ ```
391
+
392
+ `cancel()` is always callable. For providers with `cancelQueuedMessage = false` (Codex, and any session-less provider), it returns `{ cancelled: false }` immediately. For Claude, it sends a `cancel_async_message` control_request to the CLI, which runs `dequeueAllMatching` against its internal queue and reports whether the message was found.
393
+
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.
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.
267
407
 
268
408
  ## Plan Mode
269
409
 
@@ -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"}
@@ -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";
@@ -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"}