sessionpipe-core 0.11.0 → 0.12.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.
@@ -196,6 +196,7 @@ export declare const EventData: z.ZodObject<{
196
196
  "subagent.ended": z.ZodObject<{
197
197
  agent_id: z.ZodString;
198
198
  agent_type: z.ZodOptional<z.ZodString>;
199
+ background: z.ZodOptional<z.ZodInt>;
199
200
  }, z.core.$loose>;
200
201
  "context.compacted": z.ZodObject<{
201
202
  trigger: z.ZodEnum<{
@@ -946,6 +947,7 @@ export declare const SCHEMAS: {
946
947
  "subagent.ended": z.ZodObject<{
947
948
  agent_id: z.ZodString;
948
949
  agent_type: z.ZodOptional<z.ZodString>;
950
+ background: z.ZodOptional<z.ZodInt>;
949
951
  }, z.core.$loose>;
950
952
  "context.compacted": z.ZodObject<{
951
953
  trigger: z.ZodEnum<{
@@ -1 +1 @@
1
- {"version":3,"file":"v1.d.ts","sourceRoot":"","sources":["../../schema/v1.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v1.d.ts","sourceRoot":"","sources":["../../schema/v1.ts"],"names":[],"mappings":"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"}
package/dist/schema.js CHANGED
@@ -1,4 +1,4 @@
1
- // sessionpipe-core 0.11.0 · Apache-2.0 · https://sessionpipe.org
1
+ // sessionpipe-core 0.12.0 · Apache-2.0 · https://sessionpipe.org
2
2
 
3
3
  // schema/v1.ts
4
4
  import { z } from "zod";
@@ -192,7 +192,12 @@ var EventData = z.object({
192
192
  how: z.enum(["answered", "cancelled", "timeout", "unknown"])
193
193
  }),
194
194
  "subagent.started": Loose.extend({ agent_id: z.string().max(128), agent_type: z.string().max(128).optional() }),
195
- "subagent.ended": Loose.extend({ agent_id: z.string().max(128), agent_type: z.string().max(128).optional() }),
195
+ "subagent.ended": Loose.extend({
196
+ agent_id: z.string().max(128),
197
+ agent_type: z.string().max(128).optional(),
198
+ /** Background work still in flight once this subagent is out of it, counted as `turn.ended.background` is. Absent when the harness doesn't say. */
199
+ background: z.int().min(0).optional()
200
+ }),
196
201
  "context.compacted": Loose.extend({ trigger: z.enum(["manual", "auto"]) }),
197
202
  /** The account's usage limits as the harness last reported them: one per window. */
198
203
  "limits.observed": Loose.extend({
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../schema/v1.ts"],
4
- "sourcesContent": ["// SPDX-License-Identifier: Apache-2.0\n// The one source for the protocol's shapes. schemas/v1/*.json are GENERATED from\n// this file (`npm run schemas`); core's runtime types are inferred from it with\n// type-only imports, so zod never enters the zero-dependency bundle. Prose lives in\n// spec/PROTOCOL.md; a rule that is not encoded here is a MUST in words only.\nimport { z } from \"zod\";\n\nexport const PROTOCOL = 1;\n\n/** Dotted, lowercase. Unknown types MUST be accepted and stored. */\nexport const EventType = z\n .string()\n .regex(/^(?:native|[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+)$/, \"dotted lowercase type, or native\");\n\nexport const KNOWN_TYPES = [\n \"session.started\",\n \"session.heartbeat\",\n \"session.ended\",\n \"session.backfill\",\n \"session.forgotten\",\n \"turn.started\",\n \"turn.ended\",\n \"turn.transcript\",\n \"turn.progress\",\n \"tool.started\",\n \"tool.ended\",\n \"files.changed\",\n \"attention.needed\",\n \"attention.cleared\",\n \"subagent.started\",\n \"subagent.ended\",\n \"context.compacted\",\n \"limits.observed\",\n \"native\",\n] as const;\n\n/** The lowest tier that carries each known type. */\nexport const TYPE_TIER: Record<(typeof KNOWN_TYPES)[number], 0 | 1 | 2 | 3> = {\n \"session.started\": 0,\n \"session.heartbeat\": 0,\n \"session.ended\": 0,\n \"session.backfill\": 0,\n \"session.forgotten\": 0,\n \"turn.started\": 0,\n \"turn.ended\": 0,\n \"turn.transcript\": 2,\n \"turn.progress\": 2,\n \"tool.started\": 1,\n \"tool.ended\": 1,\n \"files.changed\": 1,\n \"attention.needed\": 0,\n \"attention.cleared\": 0,\n \"subagent.started\": 1,\n \"subagent.ended\": 1,\n \"context.compacted\": 1,\n \"limits.observed\": 1,\n native: 3,\n};\n\nexport const HARNESS_NAMES = [\n \"claude-code\",\n \"codex\",\n \"gemini-cli\",\n \"antigravity\",\n \"devin\",\n \"cursor\",\n \"copilot-cli\",\n \"droid\",\n \"kiro\",\n \"opencode\",\n] as const;\n\nexport const Tier = z.int().min(0).max(3);\nexport const Ulid = z.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/, \"ULID\");\nexport const Rfc3339 = z.iso.datetime({ offset: false, precision: 3 });\nexport const SessionId = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[A-Za-z0-9._:-]+$/);\nexport const ToolName = z.string().regex(/^[A-Za-z0-9_.:-]{1,120}$/);\n\nexport const Harness = z.object({\n /** From the registry in ADAPTERS.md; a name outside it is allowed ([a-z0-9-]). */\n name: z.string().regex(/^[a-z][a-z0-9-]{0,39}$/),\n version: z.string().max(64).optional(),\n /** The harness's own event name (`PostToolUse`, `agentStop`). */\n event: z.string().max(64).optional(),\n});\n\nexport const Session = z.object({\n id: SessionId,\n /** Monotonic per session per sender; the dedup key with harness.name and id. */\n seq: z.int().min(0),\n machine: z.string().max(80).optional(),\n /** Home is written `~`. */\n cwd: z.string().max(1024).optional(),\n /** A remote URL with credentials stripped. */\n repo: z.string().max(512).optional(),\n branch: z.string().max(256).optional(),\n model: z.string().max(128).optional(),\n title: z.string().max(200).optional(),\n title_source: z.enum([\"custom\", \"harness\", \"first-ask\"]).optional(),\n url: z.url().max(1024).optional(),\n /** An id, never an email. */\n account_id: z.string().max(128).optional(),\n /** Whether a person attends the session, in the harness's own word. Absent = unknown, never false. */\n attended: z.boolean().optional(),\n parent_id: SessionId.nullable().optional(),\n /** `<harness>:<id>` of the session that started this one on purpose (a script running\n * `claude -p` for it), from the launcher's environment. Absent for a subagent, whose\n * launcher is its parent, and when nothing says. */\n launched_by: z\n .string()\n .regex(/^[a-z][a-z0-9-]{0,39}:[A-Za-z0-9._:-]{1,128}$/)\n .optional(),\n});\n\nexport const Privacy = z.object({\n /** The redaction rulesets that ran; `secrets@1` always above tier 0. */\n rulesets: z.array(z.string().regex(/^[a-z][a-z0-9-]*@\\d+$/)),\n pii: z.boolean(),\n});\n\nexport const Event = z.object({\n protocol: z.literal(PROTOCOL),\n id: Ulid,\n type: EventType,\n time: Rfc3339,\n tier: Tier,\n harness: Harness,\n session: Session,\n privacy: Privacy,\n /** Per type (see EventData); extra keys allowed and kept. */\n data: z.record(z.string(), z.unknown()),\n});\n\n// --- data per type --------------------------------------------------------------\n\nconst Loose = z.object({}).loose();\nexport const AttentionKind = z.enum([\"permission\", \"question\", \"elicitation\", \"idle\", \"error\"]);\n\n/** One usage window of an account: `id` is the harness's own name for it (`five_hour`,\n * `seven_day`, `primary` \u2026); `used_percent` passes 100 once a spend limit is exceeded. */\nexport const LimitWindow = Loose.extend({\n id: z.string().regex(/^[a-z0-9_]{1,64}$/),\n used_percent: z.number().min(0),\n resets_at: Rfc3339.optional(),\n window_minutes: z.int().min(1).optional(),\n});\n\nexport const EventData = z.object({\n \"session.started\": Loose.extend({ source: z.enum([\"startup\", \"resume\", \"clear\", \"compact\", \"fork\", \"unknown\"]) }),\n \"session.heartbeat\": Loose,\n \"session.ended\": Loose.extend({ reason: z.enum([\"clear\", \"logout\", \"exit\", \"other\"]) }),\n \"session.backfill\": Loose.extend({ started_at: Rfc3339, last_at: Rfc3339, turns: z.int().min(0).optional() }),\n \"session.forgotten\": Loose,\n \"turn.started\": Loose.extend({\n turn_id: z.string().max(128).optional(),\n prompt_chars: z.int().min(0).optional(),\n /** The harness's OWN word for who submitted the prompt, forwarded verbatim; not an enum\n * of this spec (Claude Code: user, sdk, system, loop_wakeup, schedule_wakeup,\n * poll_event), and a different vocabulary from session.started.source. A bare word:\n * tier 0 is not redacted, so the shape is the only guard. */\n submitted_by: z\n .string()\n .regex(/^[A-Za-z0-9][A-Za-z0-9_.-]{0,39}$/, \"a bare word, at most 40 characters\")\n .optional(),\n /** True when the prompt text is a block the harness wrote rather than words a person\n * typed; never a claim that no person caused the turn. */\n injected: z.boolean().optional(),\n }),\n \"turn.ended\": Loose.extend({\n turn_id: z.string().max(128).optional(),\n reason: z.enum([\"stop\", \"interrupt\", \"error\"]),\n /** The harness's error class when reason is error (rate_limit, overloaded, authentication_failed, server_error \u2026). */\n error: z.string().max(200).optional(),\n ms: z.int().min(0).optional(),\n /** Background work the harness reports still in flight as the turn ends, each of which wakes the session when it finishes (Claude Code: shell commands, monitors, subagents, workflows). Absent when the harness doesn't say. */\n background: z.int().min(0).optional(),\n }),\n \"turn.transcript\": Loose.extend({\n turn: z.int().min(0),\n user: z.string().max(20_000),\n assistant: z.string().max(20_000),\n at: Rfc3339,\n }),\n /** The turn still running: its prompt and what the assistant has said so far. A\n * later turn.progress for the same turn replaces it; the turn.transcript with the\n * same number supersedes it. Over 20 000 chars, the assistant side keeps its END. */\n \"turn.progress\": Loose.extend({\n turn: z.int().min(0),\n user: z.string().max(20_000),\n assistant: z.string().max(20_000),\n at: Rfc3339,\n }),\n \"tool.started\": Loose.extend({\n tool: ToolName,\n call_id: z.string().max(128).optional(),\n turn_id: z.string().max(128).optional(),\n /** Set when a subagent made the call. */\n agent_id: z.string().max(128).optional(),\n input: z.unknown().optional(),\n }),\n \"tool.ended\": Loose.extend({\n tool: ToolName,\n call_id: z.string().max(128).optional(),\n turn_id: z.string().max(128).optional(),\n agent_id: z.string().max(128).optional(),\n ms: z.int().min(0).optional(),\n ok: z.boolean(),\n error: z.string().max(2000).optional(),\n input: z.unknown().optional(),\n output: z.unknown().optional(),\n }),\n \"files.changed\": Loose.extend({ paths: z.array(z.string().max(1024)).max(500) }),\n \"attention.needed\": Loose.extend({\n attention_id: z.string().max(128),\n kind: AttentionKind,\n tool: ToolName.optional(),\n message: z.string().max(200).optional(),\n }),\n \"attention.cleared\": Loose.extend({\n attention_id: z.string().max(128),\n how: z.enum([\"answered\", \"cancelled\", \"timeout\", \"unknown\"]),\n }),\n \"subagent.started\": Loose.extend({ agent_id: z.string().max(128), agent_type: z.string().max(128).optional() }),\n \"subagent.ended\": Loose.extend({ agent_id: z.string().max(128), agent_type: z.string().max(128).optional() }),\n \"context.compacted\": Loose.extend({ trigger: z.enum([\"manual\", \"auto\"]) }),\n /** The account's usage limits as the harness last reported them: one per window. */\n \"limits.observed\": Loose.extend({\n windows: z.array(LimitWindow).min(1).max(8),\n plan: z.string().max(64).optional(),\n /** The account the numbers belong to, as `session.account_id` spells it, when the\n * session was served by another account than its own (the pool, CONTROL.md \u00A72). */\n account_id: z.string().max(128).optional(),\n }),\n native: Loose,\n});\n\n// --- wire -----------------------------------------------------------------------\n\nexport const Batch = z.object({ events: z.array(Event).min(1).max(50) });\n\nexport const BatchResponse = z.object({\n accepted: z.int().min(0),\n duplicates: z.int().min(0),\n rejected: z.array(z.object({ id: Ulid, reason: z.string().max(200) })),\n max_tier: Tier,\n});\n\nexport const ErrorResponse = z.object({\n reason: z.string().max(200),\n supported: z.array(z.int()).optional(),\n max_tier: Tier.optional(),\n});\n\nexport const Capability = z.enum([\"events\", \"backfill\", \"forget\", \"control\", \"native\"]);\n\n// --- control (CONTROL.md) ---------------------------------------------------------\n\nconst B64Url = z.string().regex(/^[A-Za-z0-9_-]*$/, \"base64url, no padding\");\nexport const MachineId = z.string().regex(/^m_[A-Za-z0-9_-]{16,40}$/, \"m_ + 16\u201340 base64url\");\n/** `<harness>:<id>`; the id follows its adapter's rule (Claude Code: a UUID). */\nexport const SessionRef = z.string().regex(/^[a-z][a-z0-9-]{0,39}:[A-Za-z0-9._:-]{1,128}$/, \"<harness>:<session id>\");\nexport const ControlKind = z.enum([\"prompt\", \"permission.answer\", \"cancel\", \"start\", \"key.add\", \"pool\"]);\n/** What a `pool` command asks of the machine's account pool (CONTROL.md \u00A76 `pool`). */\nexport const PoolAction = z.enum([\n \"on\",\n \"off\",\n \"enable\",\n \"disable\",\n \"remove\",\n \"order\",\n \"refresh\",\n \"login.begin\",\n \"login.complete\",\n]);\n/** A pooled account's id: what `session.account_id` and `limits.observed.account_id`\n * carry for it (Claude Code: the account UUID), or a pending sign-in's id. */\nexport const PoolAccountId = z.string().regex(/^[A-Za-z0-9._:-]{1,128}$/, \"an account id\");\n/** The kinds of key a machine or a receiver handles (CONTROL.md \u00A72). Absent: passkeys only. */\nexport const KeyTypes = z\n .array(z.enum([\"passkey\", \"device\"]))\n .min(1)\n .max(2);\nexport const DeliveryMode = z.enum([\"sdk\", \"waiter\", \"turn\", \"api\", \"resume\", \"fork\"]);\n/** How much a started session may do without anyone approving it (CONTROL.md \u00A73.1),\n * narrowest first. Closed: nothing is wider than `auto`. */\nexport const StartPermission = z.enum([\"read\", \"safe\", \"edits\", \"auto\"]);\n/** What a start ran with, or gets by default: a level, or `inherit` (no permission flag,\n * the harness's own default) on a machine the person put in inherit mode. Never a\n * command's `permission`. */\nexport const RunLevel = z.enum([\"read\", \"safe\", \"edits\", \"auto\", \"inherit\"]);\n/** A model id as the harness names it, passed as one argument: never a leading dash. */\nexport const ModelId = z\n .string()\n .min(1)\n .max(100)\n .regex(/^[A-Za-z0-9][A-Za-z0-9._:/@[\\]-]*$/, \"a model id\");\nconst HarnessName = z.string().regex(/^[a-z][a-z0-9-]{0,39}$/);\n\n/** A file attached to a `start` (CONTROL.md \u00A73.1). The bytes wait on the receiver\n * (`GET {control}/files/{sha256}`); the signed hash is what the machine checks.\n * Beyond this shape the verifier also checks: the name's length after NFC, names\n * unique case-insensitively, and the sizes adding up to at most 50 MiB. */\nexport const ControlFile = z.object({\n /** Written as is (NFC) into the session's folder: no slash, backslash or control\n * character, not starting with a dot. */\n name: z\n .string()\n .min(1)\n .max(200)\n .regex(\n // biome-ignore lint/suspicious/noControlCharactersInRegex: control characters are what it rejects\n /^[^./\\\\\\x00-\\x1f\\x7f][^/\\\\\\x00-\\x1f\\x7f]*$/,\n \"a file name: no slash, backslash, control character or leading dot\",\n ),\n /** Media type, `type/subtype` (case-insensitive). */\n type: z\n .string()\n .min(1)\n .max(100)\n .regex(/^[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*\\/[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*$/, \"type/subtype\"),\n /** Bytes: 1 to 25 MiB. */\n size: z.int().min(1).max(26_214_400),\n /** SHA-256 of the bytes, base64url without padding. */\n sha256: z.string().regex(/^[A-Za-z0-9_-]{43}$/, \"43 base64url characters\"),\n});\n\n/** The signed command, as the device writes it. The machine verifies the EXACT string\n * it received (control.json `cmd`) and never re-serializes it. */\nexport const ControlCommand = z.object({\n v: z.literal(1),\n t: z.literal(\"sessionpipe.control\"),\n machine: MachineId,\n kind: ControlKind,\n session: SessionRef,\n /** prompt, start: the message for the model. */\n text: z.string().min(1).max(20_000).optional(),\n /** permission.answer: the attention_id being answered. */\n for: z.string().min(1).max(128).optional(),\n decision: z.enum([\"allow\", \"deny\"]).optional(),\n /** Shown to the model beside a decision. */\n note: z.string().max(2000).optional(),\n /** start: the folder the new session runs in: absolute, or `~` / `~/\u2026` under the\n * home of the user the machine's daemon runs as, as events write it. */\n cwd: z.string().max(1024).optional(),\n /** key.add (session `sessionpipe:keys`): the new device's key (a passkey or a device\n * key, control-key.json), which the machine trusts once a key it already trusts\n * signed this command. */\n key: z.lazy(() => ControlKey).optional(),\n /** key.add: what the person calls the device. */\n name: z.string().min(1).max(80).optional(),\n /** start, prompt: 1\u201310 files, together at most 50 MiB, downloaded and checked by hash\n * before the session starts or the message is delivered. On a prompt, only to a\n * machine whose hello says `prompt_files`. */\n files: z.array(ControlFile).min(1).max(10).optional(),\n /** start only: the level the new session runs at, at most the machine's mode. Send\n * it only to a machine whose hello advertises it for the harness (`start`). */\n permission: StartPermission.optional(),\n /** start only: the model the harness runs. As `permission`: only when advertised. */\n model: ModelId.optional(),\n /** pool (session `sessionpipe:pool`): what to do with the machine's account pool.\n * Each action takes exactly the fields CONTROL.md \u00A76 `pool` lists for it. */\n pool_action: PoolAction.optional(),\n /** enable, disable, remove, login.complete (the pending sign-in's id); refresh MAY. */\n pool_account: PoolAccountId.optional(),\n /** order: every account of the pool, once each, in the order wanted. */\n pool_order: z.array(PoolAccountId).min(1).max(20).meta({ uniqueItems: true }).optional(),\n /** login.complete: what the person pasted back from the sign-in page (`code#state`). */\n pool_code: z\n .string()\n .min(1)\n .max(512)\n .regex(/^[^\\r\\n]+$/, \"one line\")\n .optional(),\n /** At least 16 random bytes, base64url. */\n nonce: z.string().regex(/^[A-Za-z0-9_-]{22,64}$/),\n /** Epoch ms, the signing device's clock. */\n iat: z.int().min(1),\n});\n\n/** A day grant's signed string: a passkey vouches for a device key for \u2264 24 h. */\nexport const ControlGrant = z.object({\n v: z.literal(1),\n t: z.literal(\"sessionpipe.grant\"),\n /** The day key: P-256 SPKI, base64url. */\n pub: B64Url.min(1),\n iat: z.int().min(1),\n exp: z.int().min(1),\n /** The receiver's WebAuthn rp id (well-known control.signing.rp_id). */\n rp: z.string().min(1).max(253),\n});\n\n/** A WebAuthn assertion: credential id, authenticatorData, clientDataJSON, signature. */\nexport const ControlAssertion = z.object({\n cred: B64Url.min(1),\n ad: B64Url.min(1),\n cd: B64Url.min(1),\n sig: B64Url.min(1),\n});\n\n/** A device key's signature (CONTROL.md \u00A73.2): its id and 64 bytes r\u2016s over\n * `sessionpipe.device.v1\u23CE<purpose>\u23CE<rp id>\u23CE<challenge>`. Nothing else. The shape\n * only, like an assertion's: the machine reads the key from its own record and checks\n * the rest (a 43-character id, exactly 64 bytes), so a carrier never decides a kind. */\nexport const ControlDeviceSignature = z.strictObject({\n cred: B64Url.min(1),\n /** 64 bytes r\u2016s, base64url without padding. */\n sig: B64Url.min(1),\n});\n\n/** A key enrolled on a machine, closed: a passkey (credential id, COSE alg, SPKI), or a\n * device key an app holds in hardware (CONTROL.md \u00A72 \"Device keys\"), which names\n * itself by its SPKI's SHA-256 and says how it is held. A machine refuses any other\n * field or value, so a kind added later is refused by every machine that predates it. */\nexport const ControlKey = z.xor([\n z.strictObject({\n id: B64Url.min(16).max(1400),\n alg: z.union([z.literal(-7), z.literal(-257)]),\n spki: B64Url.min(1),\n }),\n z.strictObject({\n /** SHA-256 of the SPKI bytes, base64url without padding. */\n id: z.string().regex(/^[A-Za-z0-9_-]{43}$/, \"SHA-256 of the spki, base64url\"),\n alg: z.literal(-7),\n spki: B64Url.min(1),\n type: z.literal(\"device\"),\n /** The private key was made in a hardware key store and never leaves it. */\n store: z.literal(\"hardware\"),\n /** The store will not sign without verifying the person, every time. */\n uv: z.literal(\"each-use\"),\n }),\n]);\n\n/** One message as a receiver carries it: its own envelope around the signed bytes. */\nexport const ControlMessage = z.object({\n /** The receiver's id for this message; the ack key. Not signed: the nonce inside cmd is. */\n id: Ulid,\n /** The command string, exactly as signed (\u2264 48 000 characters). */\n cmd: z.string().min(1).max(48_000),\n /** The day key's ECDSA P-256 / SHA-256 signature over cmd: raw r\u2016s, base64url. */\n csig: B64Url.nullable().optional(),\n /** The grant vouching for the day key: its string plus the passkey's assertion over\n * sha256(str), or a device key's signature over it (CONTROL.md \u00A73.2). */\n grant: z\n .xor([\n ControlAssertion.extend({ str: z.string().min(1).max(2000) }),\n ControlDeviceSignature.extend({ str: z.string().min(1).max(2000) }),\n ])\n .nullable()\n .optional(),\n /** Instead of csig + grant: one passkey assertion (or device signature) over sha256(cmd). */\n confirm: z.xor([ControlAssertion, ControlDeviceSignature]).nullable().optional(),\n /** The receiver's clock. */\n at: Rfc3339,\n /** After this the machine MUST NOT act and acks `expired`; at most 24 h after `at`. */\n expires_at: Rfc3339,\n});\n\nexport const ControlPoll = z.object({ messages: z.array(ControlMessage) });\n\n/** `taken` is the one non-final outcome: the machine verified the message and is\n * delivering it (a headless resume can take minutes); a final ack follows. */\n/** `progress` (not final): the answer so far, whole, in `reply`, with a rising `seq`.\n * `taken` (not final): verified and being delivered. Every other outcome is final. */\nexport const ControlOutcome = z.enum([\"progress\", \"taken\", \"delivered\", \"expired\", \"unsupported\", \"failed\", \"refused\"]);\n\nexport const ControlAck = z.object({\n acks: z\n .array(\n z.object({\n id: Ulid,\n outcome: ControlOutcome,\n at: Rfc3339,\n /** delivered: how it reached the session. */\n mode: DeliveryMode.optional(),\n /** The session that took it, when not the one named (a fork's copy, a started session). */\n session: SessionRef.optional(),\n /** refused: the verifier's code, or the machine's own (`folder`, `no_attention`, `busy`);\n * failed: `file` when a start's attachment couldn't be fetched, checked or written,\n * `model` when the harness wouldn't run the start's model. */\n code: z\n .string()\n .regex(/^[a-z_]{1,40}$/)\n .optional(),\n detail: z.string().max(500).optional(),\n /** resume / fork / start: the agent's reply, redacted by the secrets ruleset. */\n reply: z.string().max(20_000).optional(),\n /** progress only: rises with every progress ack for this id; a receiver keeps the highest. */\n seq: z.int().min(0).optional(),\n /** taken, delivered of a start: the options it ran with (`model` only when one was\n * asked for). A receiver shows this, never what was asked. */\n applied: z.strictObject({ permission: RunLevel.optional(), model: ModelId.optional() }).optional(),\n }),\n )\n .min(1),\n});\n\n/** A harness account signed in on the machine: the id `session.account_id` carries,\n * and the email it signs in with, so a receiver the person paired with can name the\n * account rather than show an id. Only pair and hello carry it, never an event. */\nexport const HarnessAccount = z.object({\n harness: z.string().regex(/^[a-z][a-z0-9-]{0,39}$/),\n id: z.string().min(1).max(128),\n email: z.string().max(254).optional(),\n /** What to call an account that has no email: a Claude Code home that runs on\n * another API is named by its endpoint's host (`api.z.ai`). */\n name: z.string().min(1).max(200).optional(),\n});\n\n/** `POST {control}/pair`, sent with the person's sink token from their own terminal \u2014\n * or, where the receiver declares `control.open_pairing`, with no token and a\n * `poll_key` (CONTROL.md \u00A72). */\nexport const ControlPairStart = z.object({\n /** Open pairing: a random secret only this terminal knows. Status polls present it\n * as their bearer; the receiver keeps only a hash. */\n poll_key: z\n .string()\n .regex(/^[A-Za-z0-9_-]{22,128}$/)\n .optional(),\n /** Set when adding a key to a machine already paired. */\n machine: MachineId.optional(),\n name: z.string().min(1).max(80),\n harnesses: z.array(z.string().regex(/^[a-z][a-z0-9-]{0,39}$/)).max(20),\n modes: z.array(DeliveryMode),\n version: z.string().max(40),\n /** The folders the machine lets sessions run in, for the receiver's \"new session\"\n * picker. Informational: the machine checks its own list again. */\n folders: z.array(z.string().max(1024)).max(50).optional(),\n /** safe: nothing that needs approval runs unattended; auto: the harness's auto mode;\n * inherit: no permission flag, each harness's own default there. Chosen at the machine. */\n mode: z.enum([\"safe\", \"auto\", \"inherit\"]).optional(),\n /** The harness accounts signed in here, so the receiver's board can name each\n * `session.account_id` (CONTROL.md \u00A72). */\n accounts: z.array(HarnessAccount).max(20).optional(),\n /** The machine takes `files` on a start (downloads, checks and writes them). A\n * machine that doesn't say so may ignore them: a receiver SHOULD NOT send it files. */\n files: z.boolean().optional(),\n /** The kinds of key this machine takes (unique; absent means `[\"passkey\"]`). A\n * client offers a device key only to a machine that lists `device`. */\n key_types: KeyTypes.optional(),\n});\n\n/** The receiver's answer: where the person confirms, and the digits both screens show. */\nexport const ControlPairStarted = z.object({\n machine: MachineId,\n code: z.string().regex(/^[A-Za-z0-9_-]{6,32}$/),\n url: z.url(),\n /** Six digits the terminal and the receiver's page both show. */\n check: z.string().regex(/^\\d{6}$/),\n expires_at: Rfc3339,\n});\n\n/** `GET {control}/pair?code=\u2026` once the person confirmed. The machine verifies `proof`\n * over sha256(\"sessionpipe.pair:<machine>:<code>\") before it trusts `key`. */\nexport const ControlPaired = z.object({\n status: z.enum([\"pending\", \"paired\", \"expired\"]),\n /** The key approved, whole: a device key keeps its type, store and uv. */\n key: ControlKey.optional(),\n /** The key's proof: a passkey assertion, or a device signature for purpose `pair`. */\n proof: z.xor([ControlAssertion, ControlDeviceSignature]).optional(),\n /** The machine's own bearer for polls, acks and hello: opens nothing else. Minted\n * once, at the first pairing of a machine. */\n token: z.string().min(16).max(256).optional(),\n /** Optional: a key for the events lane (`sink add`), so the receiver's session board\n * shows this machine without a second step. Handed over once. */\n sink_token: z.string().min(16).max(256).optional(),\n /** Optional: who approved, in the receiver's words (a @handle), so the terminal can\n * say whose passkey it now trusts. */\n account: z.string().max(200).optional(),\n});\n\n/** One account in the machine's pool, as its hello lists it (CONTROL.md \u00A72 `pool`).\n * `id` is the string `session.account_id` and `limits.observed.account_id` carry, so\n * a receiver joins the three without a map. The email travels only here. */\nexport const PoolAccount = z.object({\n id: PoolAccountId,\n email: z.string().max(254).optional(),\n /** What the person calls it, when they named it. */\n label: z.string().min(1).max(80).optional(),\n enabled: z.boolean(),\n /** ready: has room; limited: every window the pool watches is used up until `until`;\n * error: needs the person (sign in again); disabled: turned off by the person. */\n status: z.enum([\"ready\", \"limited\", \"error\", \"disabled\"]),\n /** Serving new sessions right now. At most one account says so. */\n current: z.boolean().optional(),\n /** limited: when it has room again, where the machine knows. */\n until: Rfc3339.optional(),\n /** The account's freshest numbers, as limits.observed would carry them: from the\n * idle usage poll when no session asked recently, since an idle account's numbers\n * ride on no session and would reach no receiver otherwise. */\n windows: z.array(LimitWindow).min(1).max(8).optional(),\n /** limited or error only: what took the account out. A window's id (`seven_day`), or\n * `rejected` (the vendor's status) or `error` (sign in again) for the non-window causes. */\n limited_by: z\n .string()\n .regex(/^[a-z0-9_]{1,64}$/)\n .optional(),\n});\n\n/** The machine's account pool (CONTROL.md \u00A72 `pool`): present in EVERY hello of a daemon\n * that knows the pool (`on: false`, `accounts: []` when nothing is set up), so a\n * receiver tells \"no pool\" from \"an old daemon\"; `accounts` in the machine's order. */\nexport const ControlHelloPool = z.object({\n on: z.boolean(),\n /** The harness the pool serves. Only `claude-code` today. */\n harness: HarnessName,\n accounts: z.array(PoolAccount).max(20),\n});\n\n/** `POST {control}/hello`: what the machine can do right now. */\nexport const ControlHello = z.object({\n name: z.string().min(1).max(80),\n harnesses: z.array(z.string().regex(/^[a-z][a-z0-9-]{0,39}$/)).max(20),\n modes: z.array(DeliveryMode),\n /** Credential ids of the keys enrolled on the machine. */\n keys: z.array(B64Url.min(16).max(1400)).max(50),\n version: z.string().max(40),\n /** Live sessions with a waiter parked on the daemon's socket. */\n waiting: z.array(SessionRef).max(500).optional(),\n /** As in control-pair.json: informational, re-checked on the machine. */\n folders: z.array(z.string().max(1024)).max(50).optional(),\n mode: z.enum([\"safe\", \"auto\", \"inherit\"]).optional(),\n /** As in control-pair.json: read again for every hello, so a new sign-in is named. */\n accounts: z.array(HarnessAccount).max(20).optional(),\n /** As in control-pair.json. */\n files: z.boolean().optional(),\n /** The machine takes `files` on a prompt too (CONTROL.md \u00A76 `prompt`). One that\n * doesn't say so refuses them: a receiver SHOULD NOT send it a prompt with files. */\n prompt_files: z.boolean().optional(),\n /** Per harness in `harnesses`: the options a start may carry (CONTROL.md \u00A72). No\n * entry: neither `permission` nor `model`. */\n start: z\n .record(\n HarnessName,\n z.object({\n /** The levels it starts at here, already capped by `mode`. */\n permissions: z.array(StartPermission).min(1).max(4).meta({ uniqueItems: true }),\n /** What a start that names none gets: one of `permissions`, or `inherit` on an\n * inherit machine. */\n permission: RunLevel,\n /** Model ids the harness offers here: a suggestion, not a promise. */\n models: z.array(ModelId).max(50).optional(),\n /** Any well-formed model is passed to the harness (which may still reject it). */\n any_model: z.boolean().optional(),\n }),\n )\n .refine((o) => Object.keys(o).length <= 50, \"at most 50 harnesses\")\n .meta({ maxProperties: 50 })\n .optional(),\n /** As in control-pair.json. */\n key_types: KeyTypes.optional(),\n /** The machine's account pool, when its daemon has one; sent again the moment the\n * pool changes. A hello without it is a daemon that predates the pool. */\n pool: ControlHelloPool.optional(),\n});\n\nexport const WellKnown = z.object({\n protocol: z.array(z.int().min(1)).min(1),\n max_tier: Tier,\n capabilities: z.array(z.string().regex(/^[a-z][a-z0-9-]*$/)),\n auth: z.array(z.enum([\"bearer\"])).default([\"bearer\"]),\n endpoints: z.object({\n events: z.string(),\n control: z.string().optional(),\n native: z.string().optional(),\n }),\n batch: z.object({ max_events: z.int().min(1).max(50), max_bytes: z.int().min(1024).max(262_144) }),\n control: z\n .object({\n wait_max_s: z.int().min(1).max(60),\n /** Pairing may start with no token: the person approves the link signed in. */\n open_pairing: z.boolean().optional(),\n /** MCP servers (`mcp__<server>`) a session answering this receiver's message may\n * use without asking. MCP servers only: a daemon ignores anything else. */\n session_tools: z\n .array(z.string().regex(/^mcp__[A-Za-z0-9_-]{1,64}$/))\n .max(8)\n .optional(),\n /** How commands are signed: the WebAuthn rp id keys are enrolled for, and the algorithms. */\n signing: z.object({\n rp_id: z.string().min(1).max(253),\n algs: z.array(z.union([z.literal(-7), z.literal(-257)])).min(1),\n /** The kinds of key the receiver stores and carries whole (CONTROL.md \u00A72).\n * Absent means `[\"passkey\"]`. */\n key_types: KeyTypes.optional(),\n }),\n /** Informational: the receiver accepts `files` on a start and serves\n * `GET {control}/files/{sha256}`. */\n files: z.boolean().optional(),\n /** The receiver shows a machine in `inherit` mode as that, never as safe or auto.\n * A daemon pairs in, or switches to, `inherit` only with receivers that say so. */\n inherit: z.boolean().optional(),\n })\n .optional(),\n});\n\n/** What `npm run schemas` writes to schemas/v1/<name>.json. */\nexport const SCHEMAS = {\n event: Event,\n \"event-data\": EventData,\n batch: Batch,\n \"batch-response\": BatchResponse,\n error: ErrorResponse,\n \"well-known\": WellKnown,\n control: ControlMessage,\n \"control-command\": ControlCommand,\n \"control-grant\": ControlGrant,\n \"control-key\": ControlKey,\n \"control-poll\": ControlPoll,\n \"control-ack\": ControlAck,\n \"control-pair\": ControlPairStart,\n \"control-pair-started\": ControlPairStarted,\n \"control-paired\": ControlPaired,\n \"control-hello\": ControlHello,\n} as const;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// SPDX-License-Identifier: Apache-2.0\n// The one source for the protocol's shapes. schemas/v1/*.json are GENERATED from\n// this file (`npm run schemas`); core's runtime types are inferred from it with\n// type-only imports, so zod never enters the zero-dependency bundle. Prose lives in\n// spec/PROTOCOL.md; a rule that is not encoded here is a MUST in words only.\nimport { z } from \"zod\";\n\nexport const PROTOCOL = 1;\n\n/** Dotted, lowercase. Unknown types MUST be accepted and stored. */\nexport const EventType = z\n .string()\n .regex(/^(?:native|[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+)$/, \"dotted lowercase type, or native\");\n\nexport const KNOWN_TYPES = [\n \"session.started\",\n \"session.heartbeat\",\n \"session.ended\",\n \"session.backfill\",\n \"session.forgotten\",\n \"turn.started\",\n \"turn.ended\",\n \"turn.transcript\",\n \"turn.progress\",\n \"tool.started\",\n \"tool.ended\",\n \"files.changed\",\n \"attention.needed\",\n \"attention.cleared\",\n \"subagent.started\",\n \"subagent.ended\",\n \"context.compacted\",\n \"limits.observed\",\n \"native\",\n] as const;\n\n/** The lowest tier that carries each known type. */\nexport const TYPE_TIER: Record<(typeof KNOWN_TYPES)[number], 0 | 1 | 2 | 3> = {\n \"session.started\": 0,\n \"session.heartbeat\": 0,\n \"session.ended\": 0,\n \"session.backfill\": 0,\n \"session.forgotten\": 0,\n \"turn.started\": 0,\n \"turn.ended\": 0,\n \"turn.transcript\": 2,\n \"turn.progress\": 2,\n \"tool.started\": 1,\n \"tool.ended\": 1,\n \"files.changed\": 1,\n \"attention.needed\": 0,\n \"attention.cleared\": 0,\n \"subagent.started\": 1,\n \"subagent.ended\": 1,\n \"context.compacted\": 1,\n \"limits.observed\": 1,\n native: 3,\n};\n\nexport const HARNESS_NAMES = [\n \"claude-code\",\n \"codex\",\n \"gemini-cli\",\n \"antigravity\",\n \"devin\",\n \"cursor\",\n \"copilot-cli\",\n \"droid\",\n \"kiro\",\n \"opencode\",\n] as const;\n\nexport const Tier = z.int().min(0).max(3);\nexport const Ulid = z.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/, \"ULID\");\nexport const Rfc3339 = z.iso.datetime({ offset: false, precision: 3 });\nexport const SessionId = z\n .string()\n .min(1)\n .max(128)\n .regex(/^[A-Za-z0-9._:-]+$/);\nexport const ToolName = z.string().regex(/^[A-Za-z0-9_.:-]{1,120}$/);\n\nexport const Harness = z.object({\n /** From the registry in ADAPTERS.md; a name outside it is allowed ([a-z0-9-]). */\n name: z.string().regex(/^[a-z][a-z0-9-]{0,39}$/),\n version: z.string().max(64).optional(),\n /** The harness's own event name (`PostToolUse`, `agentStop`). */\n event: z.string().max(64).optional(),\n});\n\nexport const Session = z.object({\n id: SessionId,\n /** Monotonic per session per sender; the dedup key with harness.name and id. */\n seq: z.int().min(0),\n machine: z.string().max(80).optional(),\n /** Home is written `~`. */\n cwd: z.string().max(1024).optional(),\n /** A remote URL with credentials stripped. */\n repo: z.string().max(512).optional(),\n branch: z.string().max(256).optional(),\n model: z.string().max(128).optional(),\n title: z.string().max(200).optional(),\n title_source: z.enum([\"custom\", \"harness\", \"first-ask\"]).optional(),\n url: z.url().max(1024).optional(),\n /** An id, never an email. */\n account_id: z.string().max(128).optional(),\n /** Whether a person attends the session, in the harness's own word. Absent = unknown, never false. */\n attended: z.boolean().optional(),\n parent_id: SessionId.nullable().optional(),\n /** `<harness>:<id>` of the session that started this one on purpose (a script running\n * `claude -p` for it), from the launcher's environment. Absent for a subagent, whose\n * launcher is its parent, and when nothing says. */\n launched_by: z\n .string()\n .regex(/^[a-z][a-z0-9-]{0,39}:[A-Za-z0-9._:-]{1,128}$/)\n .optional(),\n});\n\nexport const Privacy = z.object({\n /** The redaction rulesets that ran; `secrets@1` always above tier 0. */\n rulesets: z.array(z.string().regex(/^[a-z][a-z0-9-]*@\\d+$/)),\n pii: z.boolean(),\n});\n\nexport const Event = z.object({\n protocol: z.literal(PROTOCOL),\n id: Ulid,\n type: EventType,\n time: Rfc3339,\n tier: Tier,\n harness: Harness,\n session: Session,\n privacy: Privacy,\n /** Per type (see EventData); extra keys allowed and kept. */\n data: z.record(z.string(), z.unknown()),\n});\n\n// --- data per type --------------------------------------------------------------\n\nconst Loose = z.object({}).loose();\nexport const AttentionKind = z.enum([\"permission\", \"question\", \"elicitation\", \"idle\", \"error\"]);\n\n/** One usage window of an account: `id` is the harness's own name for it (`five_hour`,\n * `seven_day`, `primary` \u2026); `used_percent` passes 100 once a spend limit is exceeded. */\nexport const LimitWindow = Loose.extend({\n id: z.string().regex(/^[a-z0-9_]{1,64}$/),\n used_percent: z.number().min(0),\n resets_at: Rfc3339.optional(),\n window_minutes: z.int().min(1).optional(),\n});\n\nexport const EventData = z.object({\n \"session.started\": Loose.extend({ source: z.enum([\"startup\", \"resume\", \"clear\", \"compact\", \"fork\", \"unknown\"]) }),\n \"session.heartbeat\": Loose,\n \"session.ended\": Loose.extend({ reason: z.enum([\"clear\", \"logout\", \"exit\", \"other\"]) }),\n \"session.backfill\": Loose.extend({ started_at: Rfc3339, last_at: Rfc3339, turns: z.int().min(0).optional() }),\n \"session.forgotten\": Loose,\n \"turn.started\": Loose.extend({\n turn_id: z.string().max(128).optional(),\n prompt_chars: z.int().min(0).optional(),\n /** The harness's OWN word for who submitted the prompt, forwarded verbatim; not an enum\n * of this spec (Claude Code: user, sdk, system, loop_wakeup, schedule_wakeup,\n * poll_event), and a different vocabulary from session.started.source. A bare word:\n * tier 0 is not redacted, so the shape is the only guard. */\n submitted_by: z\n .string()\n .regex(/^[A-Za-z0-9][A-Za-z0-9_.-]{0,39}$/, \"a bare word, at most 40 characters\")\n .optional(),\n /** True when the prompt text is a block the harness wrote rather than words a person\n * typed; never a claim that no person caused the turn. */\n injected: z.boolean().optional(),\n }),\n \"turn.ended\": Loose.extend({\n turn_id: z.string().max(128).optional(),\n reason: z.enum([\"stop\", \"interrupt\", \"error\"]),\n /** The harness's error class when reason is error (rate_limit, overloaded, authentication_failed, server_error \u2026). */\n error: z.string().max(200).optional(),\n ms: z.int().min(0).optional(),\n /** Background work the harness reports still in flight as the turn ends, each of which wakes the session when it finishes (Claude Code: shell commands, monitors, subagents, workflows). Absent when the harness doesn't say. */\n background: z.int().min(0).optional(),\n }),\n \"turn.transcript\": Loose.extend({\n turn: z.int().min(0),\n user: z.string().max(20_000),\n assistant: z.string().max(20_000),\n at: Rfc3339,\n }),\n /** The turn still running: its prompt and what the assistant has said so far. A\n * later turn.progress for the same turn replaces it; the turn.transcript with the\n * same number supersedes it. Over 20 000 chars, the assistant side keeps its END. */\n \"turn.progress\": Loose.extend({\n turn: z.int().min(0),\n user: z.string().max(20_000),\n assistant: z.string().max(20_000),\n at: Rfc3339,\n }),\n \"tool.started\": Loose.extend({\n tool: ToolName,\n call_id: z.string().max(128).optional(),\n turn_id: z.string().max(128).optional(),\n /** Set when a subagent made the call. */\n agent_id: z.string().max(128).optional(),\n input: z.unknown().optional(),\n }),\n \"tool.ended\": Loose.extend({\n tool: ToolName,\n call_id: z.string().max(128).optional(),\n turn_id: z.string().max(128).optional(),\n agent_id: z.string().max(128).optional(),\n ms: z.int().min(0).optional(),\n ok: z.boolean(),\n error: z.string().max(2000).optional(),\n input: z.unknown().optional(),\n output: z.unknown().optional(),\n }),\n \"files.changed\": Loose.extend({ paths: z.array(z.string().max(1024)).max(500) }),\n \"attention.needed\": Loose.extend({\n attention_id: z.string().max(128),\n kind: AttentionKind,\n tool: ToolName.optional(),\n message: z.string().max(200).optional(),\n }),\n \"attention.cleared\": Loose.extend({\n attention_id: z.string().max(128),\n how: z.enum([\"answered\", \"cancelled\", \"timeout\", \"unknown\"]),\n }),\n \"subagent.started\": Loose.extend({ agent_id: z.string().max(128), agent_type: z.string().max(128).optional() }),\n \"subagent.ended\": Loose.extend({\n agent_id: z.string().max(128),\n agent_type: z.string().max(128).optional(),\n /** Background work still in flight once this subagent is out of it, counted as `turn.ended.background` is. Absent when the harness doesn't say. */\n background: z.int().min(0).optional(),\n }),\n \"context.compacted\": Loose.extend({ trigger: z.enum([\"manual\", \"auto\"]) }),\n /** The account's usage limits as the harness last reported them: one per window. */\n \"limits.observed\": Loose.extend({\n windows: z.array(LimitWindow).min(1).max(8),\n plan: z.string().max(64).optional(),\n /** The account the numbers belong to, as `session.account_id` spells it, when the\n * session was served by another account than its own (the pool, CONTROL.md \u00A72). */\n account_id: z.string().max(128).optional(),\n }),\n native: Loose,\n});\n\n// --- wire -----------------------------------------------------------------------\n\nexport const Batch = z.object({ events: z.array(Event).min(1).max(50) });\n\nexport const BatchResponse = z.object({\n accepted: z.int().min(0),\n duplicates: z.int().min(0),\n rejected: z.array(z.object({ id: Ulid, reason: z.string().max(200) })),\n max_tier: Tier,\n});\n\nexport const ErrorResponse = z.object({\n reason: z.string().max(200),\n supported: z.array(z.int()).optional(),\n max_tier: Tier.optional(),\n});\n\nexport const Capability = z.enum([\"events\", \"backfill\", \"forget\", \"control\", \"native\"]);\n\n// --- control (CONTROL.md) ---------------------------------------------------------\n\nconst B64Url = z.string().regex(/^[A-Za-z0-9_-]*$/, \"base64url, no padding\");\nexport const MachineId = z.string().regex(/^m_[A-Za-z0-9_-]{16,40}$/, \"m_ + 16\u201340 base64url\");\n/** `<harness>:<id>`; the id follows its adapter's rule (Claude Code: a UUID). */\nexport const SessionRef = z.string().regex(/^[a-z][a-z0-9-]{0,39}:[A-Za-z0-9._:-]{1,128}$/, \"<harness>:<session id>\");\nexport const ControlKind = z.enum([\"prompt\", \"permission.answer\", \"cancel\", \"start\", \"key.add\", \"pool\"]);\n/** What a `pool` command asks of the machine's account pool (CONTROL.md \u00A76 `pool`). */\nexport const PoolAction = z.enum([\n \"on\",\n \"off\",\n \"enable\",\n \"disable\",\n \"remove\",\n \"order\",\n \"refresh\",\n \"login.begin\",\n \"login.complete\",\n]);\n/** A pooled account's id: what `session.account_id` and `limits.observed.account_id`\n * carry for it (Claude Code: the account UUID), or a pending sign-in's id. */\nexport const PoolAccountId = z.string().regex(/^[A-Za-z0-9._:-]{1,128}$/, \"an account id\");\n/** The kinds of key a machine or a receiver handles (CONTROL.md \u00A72). Absent: passkeys only. */\nexport const KeyTypes = z\n .array(z.enum([\"passkey\", \"device\"]))\n .min(1)\n .max(2);\nexport const DeliveryMode = z.enum([\"sdk\", \"waiter\", \"turn\", \"api\", \"resume\", \"fork\"]);\n/** How much a started session may do without anyone approving it (CONTROL.md \u00A73.1),\n * narrowest first. Closed: nothing is wider than `auto`. */\nexport const StartPermission = z.enum([\"read\", \"safe\", \"edits\", \"auto\"]);\n/** What a start ran with, or gets by default: a level, or `inherit` (no permission flag,\n * the harness's own default) on a machine the person put in inherit mode. Never a\n * command's `permission`. */\nexport const RunLevel = z.enum([\"read\", \"safe\", \"edits\", \"auto\", \"inherit\"]);\n/** A model id as the harness names it, passed as one argument: never a leading dash. */\nexport const ModelId = z\n .string()\n .min(1)\n .max(100)\n .regex(/^[A-Za-z0-9][A-Za-z0-9._:/@[\\]-]*$/, \"a model id\");\nconst HarnessName = z.string().regex(/^[a-z][a-z0-9-]{0,39}$/);\n\n/** A file attached to a `start` (CONTROL.md \u00A73.1). The bytes wait on the receiver\n * (`GET {control}/files/{sha256}`); the signed hash is what the machine checks.\n * Beyond this shape the verifier also checks: the name's length after NFC, names\n * unique case-insensitively, and the sizes adding up to at most 50 MiB. */\nexport const ControlFile = z.object({\n /** Written as is (NFC) into the session's folder: no slash, backslash or control\n * character, not starting with a dot. */\n name: z\n .string()\n .min(1)\n .max(200)\n .regex(\n // biome-ignore lint/suspicious/noControlCharactersInRegex: control characters are what it rejects\n /^[^./\\\\\\x00-\\x1f\\x7f][^/\\\\\\x00-\\x1f\\x7f]*$/,\n \"a file name: no slash, backslash, control character or leading dot\",\n ),\n /** Media type, `type/subtype` (case-insensitive). */\n type: z\n .string()\n .min(1)\n .max(100)\n .regex(/^[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*\\/[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*$/, \"type/subtype\"),\n /** Bytes: 1 to 25 MiB. */\n size: z.int().min(1).max(26_214_400),\n /** SHA-256 of the bytes, base64url without padding. */\n sha256: z.string().regex(/^[A-Za-z0-9_-]{43}$/, \"43 base64url characters\"),\n});\n\n/** The signed command, as the device writes it. The machine verifies the EXACT string\n * it received (control.json `cmd`) and never re-serializes it. */\nexport const ControlCommand = z.object({\n v: z.literal(1),\n t: z.literal(\"sessionpipe.control\"),\n machine: MachineId,\n kind: ControlKind,\n session: SessionRef,\n /** prompt, start: the message for the model. */\n text: z.string().min(1).max(20_000).optional(),\n /** permission.answer: the attention_id being answered. */\n for: z.string().min(1).max(128).optional(),\n decision: z.enum([\"allow\", \"deny\"]).optional(),\n /** Shown to the model beside a decision. */\n note: z.string().max(2000).optional(),\n /** start: the folder the new session runs in: absolute, or `~` / `~/\u2026` under the\n * home of the user the machine's daemon runs as, as events write it. */\n cwd: z.string().max(1024).optional(),\n /** key.add (session `sessionpipe:keys`): the new device's key (a passkey or a device\n * key, control-key.json), which the machine trusts once a key it already trusts\n * signed this command. */\n key: z.lazy(() => ControlKey).optional(),\n /** key.add: what the person calls the device. */\n name: z.string().min(1).max(80).optional(),\n /** start, prompt: 1\u201310 files, together at most 50 MiB, downloaded and checked by hash\n * before the session starts or the message is delivered. On a prompt, only to a\n * machine whose hello says `prompt_files`. */\n files: z.array(ControlFile).min(1).max(10).optional(),\n /** start only: the level the new session runs at, at most the machine's mode. Send\n * it only to a machine whose hello advertises it for the harness (`start`). */\n permission: StartPermission.optional(),\n /** start only: the model the harness runs. As `permission`: only when advertised. */\n model: ModelId.optional(),\n /** pool (session `sessionpipe:pool`): what to do with the machine's account pool.\n * Each action takes exactly the fields CONTROL.md \u00A76 `pool` lists for it. */\n pool_action: PoolAction.optional(),\n /** enable, disable, remove, login.complete (the pending sign-in's id); refresh MAY. */\n pool_account: PoolAccountId.optional(),\n /** order: every account of the pool, once each, in the order wanted. */\n pool_order: z.array(PoolAccountId).min(1).max(20).meta({ uniqueItems: true }).optional(),\n /** login.complete: what the person pasted back from the sign-in page (`code#state`). */\n pool_code: z\n .string()\n .min(1)\n .max(512)\n .regex(/^[^\\r\\n]+$/, \"one line\")\n .optional(),\n /** At least 16 random bytes, base64url. */\n nonce: z.string().regex(/^[A-Za-z0-9_-]{22,64}$/),\n /** Epoch ms, the signing device's clock. */\n iat: z.int().min(1),\n});\n\n/** A day grant's signed string: a passkey vouches for a device key for \u2264 24 h. */\nexport const ControlGrant = z.object({\n v: z.literal(1),\n t: z.literal(\"sessionpipe.grant\"),\n /** The day key: P-256 SPKI, base64url. */\n pub: B64Url.min(1),\n iat: z.int().min(1),\n exp: z.int().min(1),\n /** The receiver's WebAuthn rp id (well-known control.signing.rp_id). */\n rp: z.string().min(1).max(253),\n});\n\n/** A WebAuthn assertion: credential id, authenticatorData, clientDataJSON, signature. */\nexport const ControlAssertion = z.object({\n cred: B64Url.min(1),\n ad: B64Url.min(1),\n cd: B64Url.min(1),\n sig: B64Url.min(1),\n});\n\n/** A device key's signature (CONTROL.md \u00A73.2): its id and 64 bytes r\u2016s over\n * `sessionpipe.device.v1\u23CE<purpose>\u23CE<rp id>\u23CE<challenge>`. Nothing else. The shape\n * only, like an assertion's: the machine reads the key from its own record and checks\n * the rest (a 43-character id, exactly 64 bytes), so a carrier never decides a kind. */\nexport const ControlDeviceSignature = z.strictObject({\n cred: B64Url.min(1),\n /** 64 bytes r\u2016s, base64url without padding. */\n sig: B64Url.min(1),\n});\n\n/** A key enrolled on a machine, closed: a passkey (credential id, COSE alg, SPKI), or a\n * device key an app holds in hardware (CONTROL.md \u00A72 \"Device keys\"), which names\n * itself by its SPKI's SHA-256 and says how it is held. A machine refuses any other\n * field or value, so a kind added later is refused by every machine that predates it. */\nexport const ControlKey = z.xor([\n z.strictObject({\n id: B64Url.min(16).max(1400),\n alg: z.union([z.literal(-7), z.literal(-257)]),\n spki: B64Url.min(1),\n }),\n z.strictObject({\n /** SHA-256 of the SPKI bytes, base64url without padding. */\n id: z.string().regex(/^[A-Za-z0-9_-]{43}$/, \"SHA-256 of the spki, base64url\"),\n alg: z.literal(-7),\n spki: B64Url.min(1),\n type: z.literal(\"device\"),\n /** The private key was made in a hardware key store and never leaves it. */\n store: z.literal(\"hardware\"),\n /** The store will not sign without verifying the person, every time. */\n uv: z.literal(\"each-use\"),\n }),\n]);\n\n/** One message as a receiver carries it: its own envelope around the signed bytes. */\nexport const ControlMessage = z.object({\n /** The receiver's id for this message; the ack key. Not signed: the nonce inside cmd is. */\n id: Ulid,\n /** The command string, exactly as signed (\u2264 48 000 characters). */\n cmd: z.string().min(1).max(48_000),\n /** The day key's ECDSA P-256 / SHA-256 signature over cmd: raw r\u2016s, base64url. */\n csig: B64Url.nullable().optional(),\n /** The grant vouching for the day key: its string plus the passkey's assertion over\n * sha256(str), or a device key's signature over it (CONTROL.md \u00A73.2). */\n grant: z\n .xor([\n ControlAssertion.extend({ str: z.string().min(1).max(2000) }),\n ControlDeviceSignature.extend({ str: z.string().min(1).max(2000) }),\n ])\n .nullable()\n .optional(),\n /** Instead of csig + grant: one passkey assertion (or device signature) over sha256(cmd). */\n confirm: z.xor([ControlAssertion, ControlDeviceSignature]).nullable().optional(),\n /** The receiver's clock. */\n at: Rfc3339,\n /** After this the machine MUST NOT act and acks `expired`; at most 24 h after `at`. */\n expires_at: Rfc3339,\n});\n\nexport const ControlPoll = z.object({ messages: z.array(ControlMessage) });\n\n/** `taken` is the one non-final outcome: the machine verified the message and is\n * delivering it (a headless resume can take minutes); a final ack follows. */\n/** `progress` (not final): the answer so far, whole, in `reply`, with a rising `seq`.\n * `taken` (not final): verified and being delivered. Every other outcome is final. */\nexport const ControlOutcome = z.enum([\"progress\", \"taken\", \"delivered\", \"expired\", \"unsupported\", \"failed\", \"refused\"]);\n\nexport const ControlAck = z.object({\n acks: z\n .array(\n z.object({\n id: Ulid,\n outcome: ControlOutcome,\n at: Rfc3339,\n /** delivered: how it reached the session. */\n mode: DeliveryMode.optional(),\n /** The session that took it, when not the one named (a fork's copy, a started session). */\n session: SessionRef.optional(),\n /** refused: the verifier's code, or the machine's own (`folder`, `no_attention`, `busy`);\n * failed: `file` when a start's attachment couldn't be fetched, checked or written,\n * `model` when the harness wouldn't run the start's model. */\n code: z\n .string()\n .regex(/^[a-z_]{1,40}$/)\n .optional(),\n detail: z.string().max(500).optional(),\n /** resume / fork / start: the agent's reply, redacted by the secrets ruleset. */\n reply: z.string().max(20_000).optional(),\n /** progress only: rises with every progress ack for this id; a receiver keeps the highest. */\n seq: z.int().min(0).optional(),\n /** taken, delivered of a start: the options it ran with (`model` only when one was\n * asked for). A receiver shows this, never what was asked. */\n applied: z.strictObject({ permission: RunLevel.optional(), model: ModelId.optional() }).optional(),\n }),\n )\n .min(1),\n});\n\n/** A harness account signed in on the machine: the id `session.account_id` carries,\n * and the email it signs in with, so a receiver the person paired with can name the\n * account rather than show an id. Only pair and hello carry it, never an event. */\nexport const HarnessAccount = z.object({\n harness: z.string().regex(/^[a-z][a-z0-9-]{0,39}$/),\n id: z.string().min(1).max(128),\n email: z.string().max(254).optional(),\n /** What to call an account that has no email: a Claude Code home that runs on\n * another API is named by its endpoint's host (`api.z.ai`). */\n name: z.string().min(1).max(200).optional(),\n});\n\n/** `POST {control}/pair`, sent with the person's sink token from their own terminal \u2014\n * or, where the receiver declares `control.open_pairing`, with no token and a\n * `poll_key` (CONTROL.md \u00A72). */\nexport const ControlPairStart = z.object({\n /** Open pairing: a random secret only this terminal knows. Status polls present it\n * as their bearer; the receiver keeps only a hash. */\n poll_key: z\n .string()\n .regex(/^[A-Za-z0-9_-]{22,128}$/)\n .optional(),\n /** Set when adding a key to a machine already paired. */\n machine: MachineId.optional(),\n name: z.string().min(1).max(80),\n harnesses: z.array(z.string().regex(/^[a-z][a-z0-9-]{0,39}$/)).max(20),\n modes: z.array(DeliveryMode),\n version: z.string().max(40),\n /** The folders the machine lets sessions run in, for the receiver's \"new session\"\n * picker. Informational: the machine checks its own list again. */\n folders: z.array(z.string().max(1024)).max(50).optional(),\n /** safe: nothing that needs approval runs unattended; auto: the harness's auto mode;\n * inherit: no permission flag, each harness's own default there. Chosen at the machine. */\n mode: z.enum([\"safe\", \"auto\", \"inherit\"]).optional(),\n /** The harness accounts signed in here, so the receiver's board can name each\n * `session.account_id` (CONTROL.md \u00A72). */\n accounts: z.array(HarnessAccount).max(20).optional(),\n /** The machine takes `files` on a start (downloads, checks and writes them). A\n * machine that doesn't say so may ignore them: a receiver SHOULD NOT send it files. */\n files: z.boolean().optional(),\n /** The kinds of key this machine takes (unique; absent means `[\"passkey\"]`). A\n * client offers a device key only to a machine that lists `device`. */\n key_types: KeyTypes.optional(),\n});\n\n/** The receiver's answer: where the person confirms, and the digits both screens show. */\nexport const ControlPairStarted = z.object({\n machine: MachineId,\n code: z.string().regex(/^[A-Za-z0-9_-]{6,32}$/),\n url: z.url(),\n /** Six digits the terminal and the receiver's page both show. */\n check: z.string().regex(/^\\d{6}$/),\n expires_at: Rfc3339,\n});\n\n/** `GET {control}/pair?code=\u2026` once the person confirmed. The machine verifies `proof`\n * over sha256(\"sessionpipe.pair:<machine>:<code>\") before it trusts `key`. */\nexport const ControlPaired = z.object({\n status: z.enum([\"pending\", \"paired\", \"expired\"]),\n /** The key approved, whole: a device key keeps its type, store and uv. */\n key: ControlKey.optional(),\n /** The key's proof: a passkey assertion, or a device signature for purpose `pair`. */\n proof: z.xor([ControlAssertion, ControlDeviceSignature]).optional(),\n /** The machine's own bearer for polls, acks and hello: opens nothing else. Minted\n * once, at the first pairing of a machine. */\n token: z.string().min(16).max(256).optional(),\n /** Optional: a key for the events lane (`sink add`), so the receiver's session board\n * shows this machine without a second step. Handed over once. */\n sink_token: z.string().min(16).max(256).optional(),\n /** Optional: who approved, in the receiver's words (a @handle), so the terminal can\n * say whose passkey it now trusts. */\n account: z.string().max(200).optional(),\n});\n\n/** One account in the machine's pool, as its hello lists it (CONTROL.md \u00A72 `pool`).\n * `id` is the string `session.account_id` and `limits.observed.account_id` carry, so\n * a receiver joins the three without a map. The email travels only here. */\nexport const PoolAccount = z.object({\n id: PoolAccountId,\n email: z.string().max(254).optional(),\n /** What the person calls it, when they named it. */\n label: z.string().min(1).max(80).optional(),\n enabled: z.boolean(),\n /** ready: has room; limited: every window the pool watches is used up until `until`;\n * error: needs the person (sign in again); disabled: turned off by the person. */\n status: z.enum([\"ready\", \"limited\", \"error\", \"disabled\"]),\n /** Serving new sessions right now. At most one account says so. */\n current: z.boolean().optional(),\n /** limited: when it has room again, where the machine knows. */\n until: Rfc3339.optional(),\n /** The account's freshest numbers, as limits.observed would carry them: from the\n * idle usage poll when no session asked recently, since an idle account's numbers\n * ride on no session and would reach no receiver otherwise. */\n windows: z.array(LimitWindow).min(1).max(8).optional(),\n /** limited or error only: what took the account out. A window's id (`seven_day`), or\n * `rejected` (the vendor's status) or `error` (sign in again) for the non-window causes. */\n limited_by: z\n .string()\n .regex(/^[a-z0-9_]{1,64}$/)\n .optional(),\n});\n\n/** The machine's account pool (CONTROL.md \u00A72 `pool`): present in EVERY hello of a daemon\n * that knows the pool (`on: false`, `accounts: []` when nothing is set up), so a\n * receiver tells \"no pool\" from \"an old daemon\"; `accounts` in the machine's order. */\nexport const ControlHelloPool = z.object({\n on: z.boolean(),\n /** The harness the pool serves. Only `claude-code` today. */\n harness: HarnessName,\n accounts: z.array(PoolAccount).max(20),\n});\n\n/** `POST {control}/hello`: what the machine can do right now. */\nexport const ControlHello = z.object({\n name: z.string().min(1).max(80),\n harnesses: z.array(z.string().regex(/^[a-z][a-z0-9-]{0,39}$/)).max(20),\n modes: z.array(DeliveryMode),\n /** Credential ids of the keys enrolled on the machine. */\n keys: z.array(B64Url.min(16).max(1400)).max(50),\n version: z.string().max(40),\n /** Live sessions with a waiter parked on the daemon's socket. */\n waiting: z.array(SessionRef).max(500).optional(),\n /** As in control-pair.json: informational, re-checked on the machine. */\n folders: z.array(z.string().max(1024)).max(50).optional(),\n mode: z.enum([\"safe\", \"auto\", \"inherit\"]).optional(),\n /** As in control-pair.json: read again for every hello, so a new sign-in is named. */\n accounts: z.array(HarnessAccount).max(20).optional(),\n /** As in control-pair.json. */\n files: z.boolean().optional(),\n /** The machine takes `files` on a prompt too (CONTROL.md \u00A76 `prompt`). One that\n * doesn't say so refuses them: a receiver SHOULD NOT send it a prompt with files. */\n prompt_files: z.boolean().optional(),\n /** Per harness in `harnesses`: the options a start may carry (CONTROL.md \u00A72). No\n * entry: neither `permission` nor `model`. */\n start: z\n .record(\n HarnessName,\n z.object({\n /** The levels it starts at here, already capped by `mode`. */\n permissions: z.array(StartPermission).min(1).max(4).meta({ uniqueItems: true }),\n /** What a start that names none gets: one of `permissions`, or `inherit` on an\n * inherit machine. */\n permission: RunLevel,\n /** Model ids the harness offers here: a suggestion, not a promise. */\n models: z.array(ModelId).max(50).optional(),\n /** Any well-formed model is passed to the harness (which may still reject it). */\n any_model: z.boolean().optional(),\n }),\n )\n .refine((o) => Object.keys(o).length <= 50, \"at most 50 harnesses\")\n .meta({ maxProperties: 50 })\n .optional(),\n /** As in control-pair.json. */\n key_types: KeyTypes.optional(),\n /** The machine's account pool, when its daemon has one; sent again the moment the\n * pool changes. A hello without it is a daemon that predates the pool. */\n pool: ControlHelloPool.optional(),\n});\n\nexport const WellKnown = z.object({\n protocol: z.array(z.int().min(1)).min(1),\n max_tier: Tier,\n capabilities: z.array(z.string().regex(/^[a-z][a-z0-9-]*$/)),\n auth: z.array(z.enum([\"bearer\"])).default([\"bearer\"]),\n endpoints: z.object({\n events: z.string(),\n control: z.string().optional(),\n native: z.string().optional(),\n }),\n batch: z.object({ max_events: z.int().min(1).max(50), max_bytes: z.int().min(1024).max(262_144) }),\n control: z\n .object({\n wait_max_s: z.int().min(1).max(60),\n /** Pairing may start with no token: the person approves the link signed in. */\n open_pairing: z.boolean().optional(),\n /** MCP servers (`mcp__<server>`) a session answering this receiver's message may\n * use without asking. MCP servers only: a daemon ignores anything else. */\n session_tools: z\n .array(z.string().regex(/^mcp__[A-Za-z0-9_-]{1,64}$/))\n .max(8)\n .optional(),\n /** How commands are signed: the WebAuthn rp id keys are enrolled for, and the algorithms. */\n signing: z.object({\n rp_id: z.string().min(1).max(253),\n algs: z.array(z.union([z.literal(-7), z.literal(-257)])).min(1),\n /** The kinds of key the receiver stores and carries whole (CONTROL.md \u00A72).\n * Absent means `[\"passkey\"]`. */\n key_types: KeyTypes.optional(),\n }),\n /** Informational: the receiver accepts `files` on a start and serves\n * `GET {control}/files/{sha256}`. */\n files: z.boolean().optional(),\n /** The receiver shows a machine in `inherit` mode as that, never as safe or auto.\n * A daemon pairs in, or switches to, `inherit` only with receivers that say so. */\n inherit: z.boolean().optional(),\n })\n .optional(),\n});\n\n/** What `npm run schemas` writes to schemas/v1/<name>.json. */\nexport const SCHEMAS = {\n event: Event,\n \"event-data\": EventData,\n batch: Batch,\n \"batch-response\": BatchResponse,\n error: ErrorResponse,\n \"well-known\": WellKnown,\n control: ControlMessage,\n \"control-command\": ControlCommand,\n \"control-grant\": ControlGrant,\n \"control-key\": ControlKey,\n \"control-poll\": ControlPoll,\n \"control-ack\": ControlAck,\n \"control-pair\": ControlPairStart,\n \"control-pair-started\": ControlPairStarted,\n \"control-paired\": ControlPaired,\n \"control-hello\": ControlHello,\n} as const;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/dist/service.js CHANGED
@@ -1,4 +1,4 @@
1
- // sessionpipe-core 0.11.0 · Apache-2.0 · https://sessionpipe.org
1
+ // sessionpipe-core 0.12.0 · Apache-2.0 · https://sessionpipe.org
2
2
 
3
3
  // src/service/index.ts
4
4
  import { execFileSync } from "node:child_process";
@@ -1 +1 @@
1
- {"version":3,"file":"acp-control.d.ts","sourceRoot":"","sources":["../../../src/adapters/acp-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acp-control.d.ts","sourceRoot":"","sources":["../../../src/adapters/acp-control.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-control.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-code-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code-control.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-code-control.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,12 @@ export declare const CLAUDE_EVENTS: readonly ["SessionStart", "UserPromptSubmit"
6
6
  * once rewrote a real settings.json with its fake hook paths on every run. */
7
7
  export declare function claudeDirs(env?: NodeJS.ProcessEnv, home?: string): string[];
8
8
  export declare const claudeCode: Adapter;
9
+ /** How much background work Claude Code lists that will wake the session when it ends
10
+ * (`background_tasks`, in every Stop and SubagentStop since 2.1.258): a count, never what
11
+ * it runs. Not counted: sessionpipe's own waiter, and the subagent whose own stop this is,
12
+ * which Claude Code still lists as running (issue #153). Undefined when the harness
13
+ * doesn't say. */
14
+ export declare function backgroundCount(tasks: unknown, ending?: string): number | undefined;
9
15
  /** The status line's `rate_limits`: `five_hour`, `seven_day` and, behind a gateway,
10
16
  * `spend_limit`, each with `used_percentage` and `resets_at` in epoch seconds. Only
11
17
  * Pro and Max accounts (or a gateway) have them, and only after a session's first
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-code.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAU1D,OAAO,KAAK,EACV,OAAO,EAEP,UAAU,EAMV,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,aAAa,YACxB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,MAAM,EACN,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,CACL,CAAC;AAaX;;+EAE+E;AAC/E,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,IAAI,SAAwB,GAAG,MAAM,EAAE,CAiBvG;AAgBD,eAAO,MAAM,UAAU,EAAE,OAoQxB,CAAC;AA+BF;;;mDAGmD;AACnD,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAe1E;AAOD;;;;6FAI6F;AAC7F,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAE7E;AA0FD;sEACsE;AACtE,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAa7E;AAgFD;kFACkF;AAClF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,SAAY,GAAG,cAAc,EAAE,CAUjF;AAcD;yEACyE;AACzE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AA2DD;;qFAEqF;AACrF,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,UAAU,GAChB,YAAY,CA6Fd;AA2BD;4DAC4D;AAC5D,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,SAAa,GACf,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAehC;AAmBD;;;2CAG2C;AAC3C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwC7F;AAMD;;;;+BAI+B;AAC/B,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAqBrG;AAED,6GAA6G;AAC7G,eAAO,MAAM,kBAAkB,QAAO,IAIrC,CAAC"}
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-code.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAU1D,OAAO,KAAK,EACV,OAAO,EAEP,UAAU,EAMV,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,aAAa,YACxB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,MAAM,EACN,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,CACL,CAAC;AAaX;;+EAE+E;AAC/E,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,IAAI,SAAwB,GAAG,MAAM,EAAE,CAiBvG;AAgBD,eAAO,MAAM,UAAU,EAAE,OAiQxB,CAAC;AAOF;;;;mBAImB;AACnB,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOnF;AA+BD;;;mDAGmD;AACnD,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAe1E;AAOD;;;;6FAI6F;AAC7F,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAE7E;AA0FD;sEACsE;AACtE,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAa7E;AAgFD;kFACkF;AAClF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,SAAY,GAAG,cAAc,EAAE,CAUjF;AAcD;yEACyE;AACzE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AA2DD;;qFAEqF;AACrF,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,UAAU,GAChB,YAAY,CA6Fd;AA2BD;4DAC4D;AAC5D,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,SAAa,GACf,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAehC;AAmBD;;;2CAG2C;AAC3C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwC7F;AAMD;;;;+BAI+B;AAC/B,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAqBrG;AAED,6GAA6G;AAC7G,eAAO,MAAM,kBAAkB,QAAO,IAIrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex-control.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex-control.ts"],"names":[],"mappings":"AAYA,OAAO,EAAY,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,KAAK,SAAS,EAGf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIrD;uEACuE;AACvE,wBAAgB,SAAS,CACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,SAAe,EACnB,OAAO,SAAiC,GACvC,MAAM,GAAG,IAAI,CAOf;AAED;;;;;;;sDAOsD;AACtD,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAQ,GAAG,MAAM,EAAE,CAiBxE;AAED;0BAC0B;AAC1B,eAAO,MAAM,aAAa,SAAU,IAAI,KAAG,eAAe,EACK,CAAC;AAEhE,sFAAsF;AACtF,eAAO,MAAM,YAAY,SAAU,IAAI,KAAG,QAAgB,CAAC;AAE3D;;+CAE+C;AAC/C,wBAAgB,SAAS,CAAC,CAAC,EAAE;IAC3B,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,EAAE,CAcX;AAED;;qFAEqF;AACrF,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,IAAI,SAAe,GAAG,MAAM,EAAE,CAa/F;AAED,yCAAyC;AACzC,eAAO,MAAM,QAAQ,SAAS,MAAM,CAAC,UAAU,KAAiB,MAAM,CAAC,UAAyB,CAAC;AAEjG,eAAO,MAAM,UAAU,kFAAkF,CAAC;AAE1G;;uEAEuE;AACvE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,KAAK,CAAC,CAc5F;AAED,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qGAAqG;IACrG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAiCzD;AAED,iFAAiF;AACjF,qBAAa,YAAa,YAAW,OAAO;IAC1C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC9B,KAAK,SAAK;IACV,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAAuB;IAEnC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAc1B;IAED;2EACuE;IACvE,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAQ9D;CACF;AAYD,eAAO,MAAM,OAAO,QAAO,YAAkC,CAAC"}
1
+ {"version":3,"file":"codex-control.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex-control.ts"],"names":[],"mappings":"AAYA,OAAO,EAAY,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,IAAI,EAET,KAAK,OAAO,EACZ,KAAK,SAAS,EAGf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIrD;uEACuE;AACvE,wBAAgB,SAAS,CACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,SAAe,EACnB,OAAO,SAAiC,GACvC,MAAM,GAAG,IAAI,CAOf;AAED;;;;;;;sDAOsD;AACtD,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAQ,GAAG,MAAM,EAAE,CAiBxE;AAED;0BAC0B;AAC1B,eAAO,MAAM,aAAa,SAAU,IAAI,KAAG,eAAe,EACK,CAAC;AAEhE,sFAAsF;AACtF,eAAO,MAAM,YAAY,SAAU,IAAI,KAAG,QAAgB,CAAC;AAE3D;;+CAE+C;AAC/C,wBAAgB,SAAS,CAAC,CAAC,EAAE;IAC3B,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,EAAE,CAcX;AAED;;qFAEqF;AACrF,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,IAAI,SAAe,GAAG,MAAM,EAAE,CAa/F;AAED,yCAAyC;AACzC,eAAO,MAAM,QAAQ,SAAS,MAAM,CAAC,UAAU,KAAiB,MAAM,CAAC,UAAyB,CAAC;AAEjG,eAAO,MAAM,UAAU,kFAAkF,CAAC;AAE1G;;uEAEuE;AACvE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,KAAK,CAAC,CAe5F;AAED,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qGAAqG;IACrG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAiCzD;AAED,iFAAiF;AACjF,qBAAa,YAAa,YAAW,OAAO;IAC1C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC9B,KAAK,SAAK;IACV,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,IAAI,CAAuB;IAEnC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAc1B;IAED;2EACuE;IACvE,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAQ9D;CACF;AAYD,eAAO,MAAM,OAAO,QAAO,YAAkC,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import type { Adapter } from "./types.js";
2
2
  export declare const GEMINI_EVENTS: readonly ["SessionStart", "BeforeAgent", "BeforeTool", "AfterTool", "Notification", "AfterAgent", "PreCompress", "SessionEnd"];
3
- /** `gemini --version`. On Windows the CLI is npm's gemini.cmd shim, which only a shell runs
4
- * (node refuses a bare spawn of a .cmd), so there it is looked up on PATH and run through one. */
3
+ /** `gemini --version`. On Windows the CLI is npm's gemini.cmd shim, which node refuses to
4
+ * spawn bare, so there it is looked up on PATH and run as `probe` says (the shim's own
5
+ * script under this node, else through a shell). */
5
6
  export declare function geminiVersion(platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv): string;
6
7
  /** Before 0.46 the hooks system is off unless tools.enableHooks is true (issue #11). */
7
8
  export declare function geminiHooksActive(settingsFile: string): {
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-cli.d.ts","sourceRoot":"","sources":["../../../src/adapters/gemini-cli.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAuD,MAAM,YAAY,CAAC;AAG/F,eAAO,MAAM,aAAa,YACxB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,CACJ,CAAC;AAOX;mGACmG;AACnG,wBAAgB,aAAa,CAC3B,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAiBR;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAoB1F;AAED,eAAO,MAAM,SAAS,EAAE,OAiJvB,CAAC"}
1
+ {"version":3,"file":"gemini-cli.d.ts","sourceRoot":"","sources":["../../../src/adapters/gemini-cli.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAuD,MAAM,YAAY,CAAC;AAG/F,eAAO,MAAM,aAAa,YACxB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,CACJ,CAAC;AAOX;;qDAEqD;AACrD,wBAAgB,aAAa,CAC3B,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAcR;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAoB1F;AAED,eAAO,MAAM,SAAS,EAAE,OAiJvB,CAAC"}
@@ -14,6 +14,29 @@ export declare function findBinary(o: {
14
14
  dirs: string[];
15
15
  env?: NodeJS.ProcessEnv;
16
16
  }): string | null;
17
+ /** The script an npm-style `.cmd` shim runs: the one `"%dp0%\\…"` or `"%~dp0\\…"` word
18
+ * before `%*` (npm's cmd-shim, old and new; pnpm's is the same shape), beside the shim.
19
+ * Null when the file is no such shim, or names nothing that is there. */
20
+ export declare function shimTarget(shim: string): string | null;
21
+ /** `bin` and `args` as spawn takes them with no shell. Node refuses to spawn a `.cmd` or
22
+ * `.bat` without one (CVE-2024-27980, since 20.12), and on Windows an `npm install -g`
23
+ * leaves exactly such a shim (`claude.cmd`, `codex.cmd`); a shell would hand a prompt's
24
+ * every character to cmd.exe, so the shim's own script runs under this node instead.
25
+ * Null for a launcher script that names no script to run (issue #165). */
26
+ export declare function spawnable(bin: string, args: string[]): {
27
+ file: string;
28
+ args: string[];
29
+ } | null;
30
+ /** Why a launcher script can't be run, for the person. */
31
+ export declare const shimNote: (bin: string) => string;
32
+ /** As `spawnable`, for a probe whose arguments are fixed words (`--help`, `auth status`):
33
+ * a launcher script that can't be read runs through a shell, as one quoted command
34
+ * (arguments beside `shell: true` are deprecated from node 24, DEP0190). */
35
+ export declare function probe(bin: string, args: string[]): {
36
+ file: string;
37
+ args: string[];
38
+ shell: boolean;
39
+ };
17
40
  /** The env every headless turn runs with: SESSIONPIPE_CONTROL_JOB tells the turn's own
18
41
  * hooks that the daemon runs it, so its Stop hook never takes a message meant for a
19
42
  * person's session (cli/src/hook.ts). */
@@ -1 +1 @@
1
- {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../src/adapters/headless.ts"],"names":[],"mappings":"AASA,2DAA2D;AAC3D,eAAO,MAAM,cAAc,QAAc,CAAC;AAG1C;;0DAE0D;AAC1D,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/C,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAQxC;AAED;;0FAE0F;AAC1F,wBAAgB,UAAU,CAAC,CAAC,EAAE;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,MAAM,GAAG,IAAI,CAQhB;AAED;;0CAE0C;AAC1C,wBAAgB,MAAM,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAE9E;AAED;oEACoE;AACpE,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;oFACgF;IAChF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAClC;AAED;4CAC4C;AAC5C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAkG1F;AAED;yDACyD;AACzD,MAAM,WAAW,OAAO;IACtB,4DAA4D;IAC5D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,SAAI,GAAG,MAAM,CAOpE;AAED,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAIvE"}
1
+ {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../src/adapters/headless.ts"],"names":[],"mappings":"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"}
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
- // sessionpipe-core 0.11.0 · Apache-2.0 · https://sessionpipe.org
1
+ // sessionpipe-core 0.12.0 · Apache-2.0 · https://sessionpipe.org
2
2
 
3
3
  // src/version.ts
4
4
  import { spawn } from "node:child_process";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sessionpipe-core",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "sessionpipe core: protocol types, harness adapters, privacy filter and redaction rulesets, outbox and sinks. Zero runtime dependencies. (published unscoped until the @sessionpipe npm org exists; the code is the same)",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",