@agentproto/driver-agent-cli 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -133,12 +133,36 @@ type AgentCliSetupStep = {
133
133
  interface AgentCliSession {
134
134
  mode?: AgentCliSessionMode;
135
135
  idle_timeout_ms?: number;
136
+ /**
137
+ * Per-turn silence watchdog (ms) — distinct from `idle_timeout_ms`,
138
+ * which bounds time BETWEEN turns. This bounds true silence DURING a
139
+ * single turn: if the adapter goes this long with no activity signal
140
+ * and its `prompt` call still hasn't resolved, the ACP client
141
+ * synthesizes a `turn-end` with `reason: "watchdog-timeout"` instead
142
+ * of hanging forever (see `@agentproto/acp/client`'s
143
+ * `AcpClientOptions.turnIdleTimeoutMs`). Undefined (the default)
144
+ * disables the watchdog — set this only for adapters known to
145
+ * sometimes drop the final `prompt` response (e.g. hermes).
146
+ */
147
+ turn_idle_timeout_ms?: number;
136
148
  max_turns?: number;
137
149
  context_carryover?: boolean;
138
150
  }
139
151
  interface AgentCliModels {
140
152
  default?: string;
141
153
  allowed?: string[];
154
+ /**
155
+ * Model-id patterns this adapter must NEVER route to, even when a caller
156
+ * passes the id explicitly (the `model` option is free-form, so `allowed`
157
+ * is only a curated menu and can't *prevent* an off-menu id). Each pattern
158
+ * matches case-insensitively against the requested model id and supports a
159
+ * single trailing `*` wildcard (prefix match); otherwise exact. A match is
160
+ * refused at compose time (`RuntimeConfigError`, code `model_denied`).
161
+ * Use to reserve a premium provider for a dedicated adapter — e.g. hermes
162
+ * denies `["anthropic/*", "claude-*"]` so Anthropic models stay exclusive
163
+ * to the claude-code adapter.
164
+ */
165
+ deny?: string[];
142
166
  env?: Record<string, string>;
143
167
  /**
144
168
  * How the host selects a model at session start:
@@ -170,6 +194,16 @@ interface AgentCliCapabilities {
170
194
  */
171
195
  file_attach?: boolean;
172
196
  }
197
+ /**
198
+ * Support status for a declared mode. Absent ⇒ treated as `"active"`.
199
+ * active — the mode does what its description claims.
200
+ * noop — declared and accepted, but measured to have no effect
201
+ * (argv/env compose fine, but the observable outcome is
202
+ * identical to not passing it). Kept declared for honesty
203
+ * and so a future fix can flip it back to `active`.
204
+ * planned — declared as an intended surface but not wired yet.
205
+ */
206
+ type AgentCliModeStatus = "active" | "noop" | "planned";
173
207
  /**
174
208
  * AIP-45 mode declaration — a mutually-exclusive operation profile
175
209
  * the CLI exposes. The host picks at most ONE mode per turn via
@@ -179,8 +213,51 @@ interface AgentCliCapabilities {
179
213
  interface AgentCliMode {
180
214
  id: string;
181
215
  description?: string;
216
+ /**
217
+ * Extra argv prepended BEFORE the manifest's default `bin_args` when
218
+ * this mode is active. Needed for CLIs whose global flags must
219
+ * precede a subcommand baked into `bin_args` (e.g. hermes'
220
+ * `--ignore-user-config` must come before `acp`, where
221
+ * `bin_args_append` would land it too late).
222
+ */
223
+ bin_args_prepend?: string[];
182
224
  bin_args_append?: string[];
183
225
  env?: Record<string, string>;
226
+ /**
227
+ * Env keys to DELETE from the spawn env when this mode is active.
228
+ * Applied at the runtime's env-merge point (after the ambient
229
+ * process.env + mode/option env are combined), so a mode can scrub a
230
+ * credential that must never reach a non-native endpoint — e.g. a
231
+ * gateway mode scrubbing `ANTHROPIC_API_KEY` so it can't leak to a
232
+ * third-party Anthropic-compatible host (it would both 401 and expose
233
+ * the real key). Unlike `env`, this can't be expressed as a static
234
+ * set (a key set to "" is still present); deletion is the only safe
235
+ * semantics. Mirrors the in-code scrub `claude-sdk` does in
236
+ * `buildQueryOptions`; surfaced here so CLI-adapter gateway modes
237
+ * get the same auth hygiene without per-adapter code.
238
+ */
239
+ env_unset?: string[];
240
+ /**
241
+ * Honest support status surfaced to clients (e.g. via `adapter_list`).
242
+ * Lets an adapter admit that a declared mode is a measured no-op or
243
+ * not-yet-wired instead of silently accepting it. Absent ⇒ `"active"`.
244
+ */
245
+ status?: AgentCliModeStatus;
246
+ /** Human-readable reason backing `status` (e.g. what was measured). */
247
+ status_note?: string;
248
+ /**
249
+ * How the host activates this mode at session start:
250
+ * - "bin_args" (default) — apply via this mode's `bin_args_prepend` /
251
+ * `bin_args_append` / `env`, composed into argv/env at spawn time.
252
+ * Preserves every existing adapter's behavior unchanged.
253
+ * - "config" — this CLI has no argv/env surface for mode selection;
254
+ * instead the mode id is forwarded to the ACP arm's `connect({mode})`
255
+ * and applied via `session/set_config_option` with `configId:"mode"`
256
+ * after `newSession` (e.g. opencode). `bin_args_prepend` /
257
+ * `bin_args_append` / `env` are ignored for a mode declaring this.
258
+ * Omit → "bin_args".
259
+ */
260
+ apply?: "bin_args" | "config";
184
261
  }
185
262
  type AgentCliOptionType = "boolean" | "integer" | "string" | "enum";
186
263
  /**
@@ -199,6 +276,14 @@ interface AgentCliOption {
199
276
  min?: number;
200
277
  /** Inclusive upper bound when type === "integer". */
201
278
  max?: number;
279
+ /**
280
+ * Argv template prepended BEFORE the manifest's default `bin_args`
281
+ * when the option has a non-default value. The literal token
282
+ * `{value}` is replaced with the option's value (stringified). Use
283
+ * for value-bearing global flags that must precede a subcommand
284
+ * (e.g. hermes' `--skills {value}`).
285
+ */
286
+ bin_args_prepend?: string[];
202
287
  /**
203
288
  * Argv template appended when the option has a non-default value.
204
289
  * The literal token `{value}` is replaced with the option's value
@@ -215,6 +300,63 @@ interface AgentCliOption {
215
300
  * may contain `{value}` for templating.
216
301
  */
217
302
  env?: Record<string, string>;
303
+ /**
304
+ * Env keys to DELETE from the spawn env when the option has a
305
+ * non-default value. Symmetric with `AgentCliMode.env_unset` and
306
+ * applied at the same runtime env-merge point. Lets a single option
307
+ * carry both the value it sets AND the credential it must displace —
308
+ * e.g. a `base_url` option pointing at a third-party Anthropic-
309
+ * compatible gateway should scrub the ambient `ANTHROPIC_API_KEY`
310
+ * so it can't leak, without forcing the operator to also pick a
311
+ * preset mode. The deletion runs before operator-supplied `opts.env`
312
+ * is merged, so a caller can still re-inject a specific key if they
313
+ * truly intend to.
314
+ */
315
+ env_unset?: string[];
316
+ }
317
+ /**
318
+ * AIP-45 gateway-preset declaration — a backend an Anthropic/OpenAI-
319
+ * compatible client can front, declared by the adapter that knows how to
320
+ * drive it. The manifest authoring shape; the runtime normalizes it to a
321
+ * `ProviderPreset` (via the catalog's merge seam) so adapter-declared
322
+ * presets appear in `agentproto presets list` / `list_provider_presets`
323
+ * alongside the built-in registry. Data-only — no adapter projection
324
+ * (`env`/`env_unset`/`bin_args`) here; that stays in the adapter's modes
325
+ * and options, same as the built-in presets are projected today.
326
+ */
327
+ interface AgentCliPresetDeclaration {
328
+ /**
329
+ * Stable preset id. SHOULD equal the mode id if the adapter projects
330
+ * this preset as a mode (e.g. `moonshot`, `openrouter`). Catalog
331
+ * dedupes built-in vs adapter-declared by id; an adapter-declared id
332
+ * that collides with a built-in is ignored in favor of the built-in
333
+ * (the registry is the source of truth for canonical providers).
334
+ */
335
+ id: string;
336
+ /** Human label for the catalog UI ("Moonshot (Kimi)"). */
337
+ label: string;
338
+ /** Short description; surfaced in the catalog. */
339
+ description?: string;
340
+ /** API schema flavor — selects which adapter family can consume it. */
341
+ schemaFlavor: "anthropic" | "openai";
342
+ /** Base URL the client hits. */
343
+ baseUrl: string;
344
+ /**
345
+ * Conventional env var holding this provider's API key
346
+ * (e.g. MOONSHOT_API_KEY). Catalog status is derived from its presence
347
+ * in the daemon's environment ("ready" vs "available").
348
+ */
349
+ keyEnv: string;
350
+ /**
351
+ * Env vars to scrub when this preset is active. Optional at the
352
+ * manifest level — an adapter that scrubs in code (like claude-sdk)
353
+ * may omit it. The catalog does not surface `scrubEnv` to clients.
354
+ */
355
+ scrubEnv?: string[];
356
+ /** Conventional default model id for this provider, if any. */
357
+ defaultModel?: string;
358
+ /** Optional homepage/docs URL for the catalog UI. */
359
+ homepage?: string;
218
360
  }
219
361
  /**
220
362
  * Built-in continuation strategy ids. Future custom strategies require
@@ -266,6 +408,58 @@ interface AgentCliExample {
266
408
  prompt: string;
267
409
  note?: string;
268
410
  }
411
+ /**
412
+ * AIP-45 § Print protocol configuration.
413
+ *
414
+ * When `protocol: "print"`, this block declares the CLI's one-shot
415
+ * headless surface so the print arm can construct the correct argv and
416
+ * map the CLI's wire events to {@link StreamEvent}. Omit to use
417
+ * Claude Code defaults (backward-compatible).
418
+ */
419
+ interface AgentCliPrintConfig {
420
+ /**
421
+ * How the prompt text is passed to the binary.
422
+ * - absent / `"positional"` — appended as the last positional arg
423
+ * (Claude: `claude --print ... <prompt>`).
424
+ * - a string — passed as `--<prompt_flag> <text>` before any trailing
425
+ * positional args (Mastra Code: `--prompt`).
426
+ */
427
+ prompt_flag?: string;
428
+ /**
429
+ * Output format flags appended before the prompt. Defaults to
430
+ * `["--output-format", "stream-json"]` (Claude Code).
431
+ *
432
+ * Mastra Code uses `["--output", "jsonl"]`.
433
+ */
434
+ output_format?: string[];
435
+ /**
436
+ * Extra flags inserted between `output_format` and the prompt.
437
+ * Claude Code uses `["--no-interactive"]`; Mastra Code omits this.
438
+ */
439
+ pre_prompt?: string[];
440
+ /**
441
+ * Resume / continue flag for reattaching to a prior session.
442
+ *
443
+ * Claude: `{ flag: "--resume", kind: "value" }`
444
+ * Mastra: `{ flag: "--continue", kind: "boolean" }` — OR
445
+ * `{ flag: "--thread", kind: "value" }` for explicit thread id
446
+ */
447
+ resume?: {
448
+ flag: string;
449
+ /** "value" = `--flag <sessionId>`, "boolean" = `--flag` (bare). */
450
+ kind: "value" | "boolean";
451
+ };
452
+ /**
453
+ * Which event taxonomy the CLI emits on stdout (JSONL / stream-json).
454
+ * The print arm picks the matching event mapper.
455
+ *
456
+ * - `"claude-stream-json"` (default) — Claude Code's
457
+ * `--output-format stream-json` taxonomy.
458
+ * - `"mastra-jsonl"` — Mastra Code's `--output jsonl` taxonomy
459
+ * (`AgentControllerEvent` shapes).
460
+ */
461
+ event_schema?: "claude-stream-json" | "mastra-jsonl";
462
+ }
269
463
  interface AgentCliDefinition {
270
464
  name: string;
271
465
  id: string;
@@ -287,6 +481,8 @@ interface AgentCliDefinition {
287
481
  mcp?: AgentCliMcpBlock;
288
482
  /** REQUIRED when protocol=proprietary. NPM package implementing AgentCliClient. */
289
483
  adapter?: string;
484
+ /** OPTIONAL when protocol=print. Declares the one-shot CLI surface. */
485
+ print?: AgentCliPrintConfig;
290
486
  session?: AgentCliSession;
291
487
  models?: AgentCliModels;
292
488
  capabilities?: AgentCliCapabilities;
@@ -294,6 +490,15 @@ interface AgentCliDefinition {
294
490
  modes?: AgentCliMode[];
295
491
  /** AIP-45 options (independent typed knobs). */
296
492
  options?: AgentCliOption[];
493
+ /**
494
+ * AIP-45 gateway presets this adapter can drive. Adapter-declared
495
+ * presets are merged into the provider-preset catalog
496
+ * (`agentproto presets list` / `list_provider_presets`) alongside the
497
+ * built-in registry, deduped by id (built-in wins on collision). Lets
498
+ * an external adapter surface a gateway the built-in registry doesn't
499
+ * know about without patching `@agentproto/provider-presets`.
500
+ */
501
+ presets?: AgentCliPresetDeclaration[];
297
502
  /** AIP-45 continuation policy (how prior turns reach the CLI). */
298
503
  continuation?: AgentCliContinuation;
299
504
  requires?: AgentCliRequires;
@@ -350,6 +555,39 @@ interface AgentCliConnectOptions {
350
555
  * `session/set_config_option` with `configId:"effort"` on ACP arms.
351
556
  */
352
557
  effort?: string;
558
+ /**
559
+ * Mode to activate at session start, for ACP arms whose CLI models
560
+ * mode selection as a session config option rather than an argv/env
561
+ * surface (`AgentCliMode.apply === "config"`, e.g. opencode). Applied
562
+ * via `session/set_config_option` with `configId:"mode"` immediately
563
+ * after `newSession`, best-effort like `model`/`effort`. Adapters that
564
+ * apply mode via `bin_args`/`env` instead (claude-code) leave this
565
+ * unset and are unaffected.
566
+ */
567
+ mode?: string;
568
+ /**
569
+ * Called on ANY adapter-process activity observed by the protocol
570
+ * arm — incoming ACP `session/update` notifications (even ones that
571
+ * don't translate into a `StreamEvent`) and outbound RPC calls
572
+ * (`newSession`/`loadSession`/`prompt`/`cancel`/`setSessionConfigOption`).
573
+ * Distinct from ring-buffer output: fires during long internal
574
+ * tool-call chains where no `StreamEvent` reaches the host, so a
575
+ * supervisor can tell "still working" apart from "gone quiet."
576
+ * Arms that don't model a stdio JSON-RPC channel (proprietary
577
+ * one-shots) MAY ignore this field.
578
+ */
579
+ onActivity?: () => void;
580
+ /**
581
+ * Turn-idle watchdog, forwarded verbatim to the ACP arm's
582
+ * `createAcpClient({ turnIdleTimeoutMs })` (see
583
+ * `@agentproto/acp/client`'s `AcpClientOptions.turnIdleTimeoutMs` for
584
+ * the full contract). If a turn goes this many ms with no activity
585
+ * signal and the underlying adapter call still hasn't resolved, the
586
+ * arm synthesizes a `turn-end` event with `reason: "watchdog-timeout"`
587
+ * instead of hanging forever. Undefined disables the watchdog. Arms
588
+ * that don't model a stdio JSON-RPC channel MAY ignore this field.
589
+ */
590
+ turnIdleTimeoutMs?: number;
353
591
  }
354
592
  /**
355
593
  * Per-turn dispatch shape. Implemented by every protocol arm
@@ -422,6 +660,25 @@ interface AgentCliStartOptions {
422
660
  * (e.g. the daemon's orchestration gateway) at spawn time.
423
661
  */
424
662
  mcpServers?: AcpMcpServer[];
663
+ /**
664
+ * Called on any adapter-process activity (ACP JSON-RPC traffic in
665
+ * either direction). Forwarded verbatim to
666
+ * `protocolArm.connect({ onActivity })` — see
667
+ * {@link AgentCliConnectOptions.onActivity} for the full contract.
668
+ * Lets a host track session liveness independent of ring-buffer
669
+ * output, e.g. during a long internal tool-call chain.
670
+ */
671
+ onActivity?: () => void;
672
+ /**
673
+ * Turn-idle watchdog timeout in ms, forwarded to
674
+ * `protocolArm.connect({ turnIdleTimeoutMs })` — see
675
+ * {@link AgentCliConnectOptions.turnIdleTimeoutMs}. When omitted here,
676
+ * `createAgentCliRuntime(...).start()` falls back to the manifest's
677
+ * `session.turn_idle_timeout_ms` (if the adapter declares one), so a
678
+ * host doesn't have to opt in per-call for an adapter that always
679
+ * wants this protection.
680
+ */
681
+ turnIdleTimeoutMs?: number;
425
682
  }
426
683
  /**
427
684
  * Operator-side runtime configuration. Mirrors the `runtime.config`
@@ -452,6 +709,15 @@ interface TurnContext {
452
709
  }
453
710
  interface AgentCliRuntimeSession {
454
711
  readonly sessionId: string;
712
+ /**
713
+ * OS-level process id of the spawned child, when the runtime owns a
714
+ * real subprocess (every current arm — ACP, print — does). Lets a
715
+ * host compute a cheap `processAlive` liveness check
716
+ * (`process.kill(pid, 0)`) without adapter-specific forensics.
717
+ * Undefined for a future arm with no owned process (e.g. a
718
+ * WebSocket transport).
719
+ */
720
+ readonly pid?: number;
455
721
  send(message: unknown): AsyncIterable<StreamEvent>;
456
722
  cancel(): Promise<void>;
457
723
  close(): Promise<void>;
@@ -645,10 +911,10 @@ declare const agentCliFrontmatterSchema: z.ZodObject<{
645
911
  sandbox: z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>;
646
912
  runner: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>]>>;
647
913
  protocol: z.ZodEnum<{
914
+ print: "print";
648
915
  acp: "acp";
649
916
  mcp: "mcp";
650
917
  proprietary: "proprietary";
651
- print: "print";
652
918
  }>;
653
919
  acp: z.ZodOptional<z.ZodString>;
654
920
  mcp: z.ZodOptional<z.ZodObject<{
@@ -662,6 +928,22 @@ declare const agentCliFrontmatterSchema: z.ZodObject<{
662
928
  url: z.ZodOptional<z.ZodString>;
663
929
  }, z.core.$strict>>;
664
930
  adapter: z.ZodOptional<z.ZodString>;
931
+ print: z.ZodOptional<z.ZodObject<{
932
+ prompt_flag: z.ZodOptional<z.ZodString>;
933
+ output_format: z.ZodOptional<z.ZodArray<z.ZodString>>;
934
+ pre_prompt: z.ZodOptional<z.ZodArray<z.ZodString>>;
935
+ resume: z.ZodOptional<z.ZodObject<{
936
+ flag: z.ZodString;
937
+ kind: z.ZodEnum<{
938
+ boolean: "boolean";
939
+ value: "value";
940
+ }>;
941
+ }, z.core.$strict>>;
942
+ event_schema: z.ZodOptional<z.ZodEnum<{
943
+ "claude-stream-json": "claude-stream-json";
944
+ "mastra-jsonl": "mastra-jsonl";
945
+ }>>;
946
+ }, z.core.$strict>>;
665
947
  session: z.ZodOptional<z.ZodObject<{
666
948
  mode: z.ZodDefault<z.ZodEnum<{
667
949
  ephemeral: "ephemeral";
@@ -669,12 +951,14 @@ declare const agentCliFrontmatterSchema: z.ZodObject<{
669
951
  resumable: "resumable";
670
952
  }>>;
671
953
  idle_timeout_ms: z.ZodDefault<z.ZodNumber>;
954
+ turn_idle_timeout_ms: z.ZodOptional<z.ZodNumber>;
672
955
  max_turns: z.ZodOptional<z.ZodNumber>;
673
956
  context_carryover: z.ZodDefault<z.ZodBoolean>;
674
957
  }, z.core.$strict>>;
675
958
  models: z.ZodOptional<z.ZodObject<{
676
959
  default: z.ZodOptional<z.ZodString>;
677
960
  allowed: z.ZodOptional<z.ZodArray<z.ZodString>>;
961
+ deny: z.ZodOptional<z.ZodArray<z.ZodString>>;
678
962
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
679
963
  apply: z.ZodOptional<z.ZodEnum<{
680
964
  config: "config";
@@ -694,8 +978,20 @@ declare const agentCliFrontmatterSchema: z.ZodObject<{
694
978
  modes: z.ZodOptional<z.ZodArray<z.ZodObject<{
695
979
  id: z.ZodString;
696
980
  description: z.ZodOptional<z.ZodString>;
981
+ bin_args_prepend: z.ZodOptional<z.ZodArray<z.ZodString>>;
697
982
  bin_args_append: z.ZodOptional<z.ZodArray<z.ZodString>>;
698
983
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
984
+ env_unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
985
+ status: z.ZodOptional<z.ZodEnum<{
986
+ active: "active";
987
+ noop: "noop";
988
+ planned: "planned";
989
+ }>>;
990
+ status_note: z.ZodOptional<z.ZodString>;
991
+ apply: z.ZodOptional<z.ZodEnum<{
992
+ config: "config";
993
+ bin_args: "bin_args";
994
+ }>>;
699
995
  }, z.core.$strict>>>;
700
996
  options: z.ZodOptional<z.ZodArray<z.ZodObject<{
701
997
  id: z.ZodString;
@@ -710,9 +1006,25 @@ declare const agentCliFrontmatterSchema: z.ZodObject<{
710
1006
  default: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber, z.ZodString]>>;
711
1007
  min: z.ZodOptional<z.ZodNumber>;
712
1008
  max: z.ZodOptional<z.ZodNumber>;
1009
+ bin_args_prepend: z.ZodOptional<z.ZodArray<z.ZodString>>;
713
1010
  bin_args_template: z.ZodOptional<z.ZodArray<z.ZodString>>;
714
1011
  bin_args_append_when_true: z.ZodOptional<z.ZodArray<z.ZodString>>;
715
1012
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1013
+ env_unset: z.ZodOptional<z.ZodArray<z.ZodString>>;
1014
+ }, z.core.$strict>>>;
1015
+ presets: z.ZodOptional<z.ZodArray<z.ZodObject<{
1016
+ id: z.ZodString;
1017
+ label: z.ZodString;
1018
+ description: z.ZodOptional<z.ZodString>;
1019
+ schemaFlavor: z.ZodEnum<{
1020
+ anthropic: "anthropic";
1021
+ openai: "openai";
1022
+ }>;
1023
+ baseUrl: z.ZodString;
1024
+ keyEnv: z.ZodString;
1025
+ scrubEnv: z.ZodOptional<z.ZodArray<z.ZodString>>;
1026
+ defaultModel: z.ZodOptional<z.ZodString>;
1027
+ homepage: z.ZodOptional<z.ZodString>;
716
1028
  }, z.core.$strict>>>;
717
1029
  continuation: z.ZodOptional<z.ZodObject<{
718
1030
  default: z.ZodEnum<{
@@ -774,4 +1086,4 @@ declare const runtimeConfigSchema: z.ZodObject<{
774
1086
  }, z.core.$strict>;
775
1087
  type RuntimeConfigInput = z.infer<typeof runtimeConfigSchema>;
776
1088
 
777
- export { type AgentCliHandle as A, agentCliFrontmatterSchema as B, type ContinuationStrategyId as C, runtimeConfigSchema as D, type RuntimeConfig as R, type TurnContext as T, type AgentCliRuntime as a, type AgentCliDefinition as b, type AgentCliClient as c, type AgentCliRuntimeSession as d, type AgentCliStartOptions as e, type ContinuationKeyScope as f, type AgentCliAuth as g, type AgentCliCapabilities as h, type AgentCliConnectOptions as i, type AgentCliContinuation as j, type AgentCliFrontmatter as k, type AgentCliInstallMethod as l, type AgentCliMcpBlock as m, type AgentCliMode as n, type AgentCliModels as o, type AgentCliOption as p, type AgentCliOptionType as q, type AgentCliPinnedSessionTuning as r, type AgentCliProtocol as s, type AgentCliSession as t, type AgentCliSessionMode as u, type AgentCliSetupPersist as v, type AgentCliSetupSkipIf as w, type AgentCliSetupStep as x, type AgentCliVersionCheck as y, type RuntimeConfigInput as z };
1089
+ export { type AgentCliHandle as A, type AgentCliVersionCheck as B, type ContinuationStrategyId as C, type RuntimeConfigInput as D, agentCliFrontmatterSchema as E, runtimeConfigSchema as F, type RuntimeConfig as R, type TurnContext as T, type AgentCliRuntime as a, type AgentCliDefinition as b, type AgentCliClient as c, type AgentCliPrintConfig as d, type AgentCliRuntimeSession as e, type AgentCliStartOptions as f, type ContinuationKeyScope as g, type AgentCliAuth as h, type AgentCliCapabilities as i, type AgentCliConnectOptions as j, type AgentCliContinuation as k, type AgentCliFrontmatter as l, type AgentCliInstallMethod as m, type AgentCliMcpBlock as n, type AgentCliMode as o, type AgentCliModels as p, type AgentCliOption as q, type AgentCliOptionType as r, type AgentCliPinnedSessionTuning as s, type AgentCliPresetDeclaration as t, type AgentCliProtocol as u, type AgentCliSession as v, type AgentCliSessionMode as w, type AgentCliSetupPersist as x, type AgentCliSetupSkipIf as y, type AgentCliSetupStep as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentproto/driver-agent-cli",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "@agentproto/driver-agent-cli — AIP-45 AGENT-CLI.md reference implementation. Multi-protocol runner that loads an AGENT-CLI.md manifest, spawns the binary, and dispatches turns through an ACP / MCP / proprietary arm. ACP arm delegates to @agentproto/acp; emits the canonical StreamEvent taxonomy regardless of underlying protocol.",
5
5
  "keywords": [
6
6
  "agentproto",
@@ -53,7 +53,7 @@
53
53
  "dependencies": {
54
54
  "gray-matter": "^4.0.3",
55
55
  "zod": "^4.4.3",
56
- "@agentproto/acp": "0.2.0",
56
+ "@agentproto/acp": "0.4.0",
57
57
  "@agentproto/define-doctype": "0.1.0"
58
58
  },
59
59
  "devDependencies": {