sessionpipe-core 0.1.0 → 0.2.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.
- package/README.md +1 -1
- package/dist/control.js +352 -0
- package/dist/control.js.map +7 -0
- package/dist/index.js +600 -97
- package/dist/index.js.map +4 -4
- package/dist/schema/v1.d.ts +340 -53
- package/dist/schema/v1.d.ts.map +1 -1
- package/dist/schema.js +151 -24
- package/dist/schema.js.map +2 -2
- package/dist/src/adapters/antigravity.d.ts.map +1 -1
- package/dist/src/adapters/claude-code-control.d.ts +70 -0
- package/dist/src/adapters/claude-code-control.d.ts.map +1 -0
- package/dist/src/adapters/claude-code.d.ts +1 -1
- package/dist/src/adapters/claude-code.d.ts.map +1 -1
- package/dist/src/adapters/claude-shaped.d.ts +38 -2
- package/dist/src/adapters/claude-shaped.d.ts.map +1 -1
- package/dist/src/adapters/codex.d.ts.map +1 -1
- package/dist/src/adapters/gemini-cli.d.ts +5 -0
- package/dist/src/adapters/gemini-cli.d.ts.map +1 -1
- package/dist/src/adapters/index.d.ts +2 -0
- package/dist/src/adapters/index.d.ts.map +1 -1
- package/dist/src/adapters/types.d.ts +23 -7
- package/dist/src/adapters/types.d.ts.map +1 -1
- package/dist/src/config.d.ts +3 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/control/index.d.ts +5 -0
- package/dist/src/control/index.d.ts.map +1 -0
- package/dist/src/control/verify.d.ts +171 -0
- package/dist/src/control/verify.d.ts.map +1 -0
- package/package.json +5 -1
package/dist/schema.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// sessionpipe-core 0.
|
|
1
|
+
// sessionpipe-core 0.2.0 · Apache-2.0 · https://sessionpipe.org
|
|
2
2
|
|
|
3
3
|
// schema/v1.ts
|
|
4
4
|
import { z } from "zod";
|
|
@@ -112,6 +112,8 @@ var EventData = z.object({
|
|
|
112
112
|
"turn.ended": Loose.extend({
|
|
113
113
|
turn_id: z.string().max(128).optional(),
|
|
114
114
|
reason: z.enum(["stop", "interrupt", "error"]),
|
|
115
|
+
/** The harness's error class when reason is error (rate_limit, overloaded, authentication_failed, server_error …). */
|
|
116
|
+
error: z.string().max(200).optional(),
|
|
115
117
|
ms: z.int().min(0).optional()
|
|
116
118
|
}),
|
|
117
119
|
"turn.transcript": Loose.extend({
|
|
@@ -168,44 +170,150 @@ var ErrorResponse = z.object({
|
|
|
168
170
|
max_tier: Tier.optional()
|
|
169
171
|
});
|
|
170
172
|
var Capability = z.enum(["events", "backfill", "forget", "control", "native"]);
|
|
171
|
-
var
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
}),
|
|
181
|
-
batch: z.object({ max_events: z.int().min(1).max(50), max_bytes: z.int().min(1024).max(262144) }),
|
|
182
|
-
control: z.object({ wait_max_s: z.int().min(1).max(60) }).optional()
|
|
183
|
-
});
|
|
184
|
-
var ControlKind = z.enum(["permission.answer", "prompt", "cancel"]);
|
|
185
|
-
var ControlMessage = z.object({
|
|
186
|
-
id: Ulid,
|
|
173
|
+
var B64Url = z.string().regex(/^[A-Za-z0-9_-]*$/, "base64url, no padding");
|
|
174
|
+
var MachineId = z.string().regex(/^m_[A-Za-z0-9_-]{16,40}$/, "m_ + 16\u201340 base64url");
|
|
175
|
+
var SessionRef = z.string().regex(/^[a-z][a-z0-9-]{0,39}:[A-Za-z0-9._:-]{1,128}$/, "<harness>:<session id>");
|
|
176
|
+
var ControlKind = z.enum(["prompt", "permission.answer", "cancel", "start"]);
|
|
177
|
+
var DeliveryMode = z.enum(["sdk", "waiter", "turn", "api", "resume", "fork"]);
|
|
178
|
+
var ControlCommand = z.object({
|
|
179
|
+
v: z.literal(1),
|
|
180
|
+
t: z.literal("sessionpipe.control"),
|
|
181
|
+
machine: MachineId,
|
|
187
182
|
kind: ControlKind,
|
|
188
|
-
|
|
189
|
-
|
|
183
|
+
session: SessionRef,
|
|
184
|
+
/** prompt, start: the message for the model. */
|
|
185
|
+
text: z.string().min(1).max(4e3).optional(),
|
|
186
|
+
/** permission.answer: the attention_id being answered. */
|
|
187
|
+
for: z.string().min(1).max(128).optional(),
|
|
190
188
|
decision: z.enum(["allow", "deny"]).optional(),
|
|
191
|
-
/** The prompt text. */
|
|
192
|
-
text: z.string().max(2e4).optional(),
|
|
193
189
|
/** Shown to the model beside a decision. */
|
|
194
190
|
note: z.string().max(2e3).optional(),
|
|
191
|
+
/** start: the absolute folder the new session runs in. */
|
|
192
|
+
cwd: z.string().max(1024).optional(),
|
|
193
|
+
/** At least 16 random bytes, base64url. */
|
|
194
|
+
nonce: z.string().regex(/^[A-Za-z0-9_-]{22,64}$/),
|
|
195
|
+
/** Epoch ms, the signing device's clock. */
|
|
196
|
+
iat: z.int().min(1)
|
|
197
|
+
});
|
|
198
|
+
var ControlGrant = z.object({
|
|
199
|
+
v: z.literal(1),
|
|
200
|
+
t: z.literal("sessionpipe.grant"),
|
|
201
|
+
/** The day key: P-256 SPKI, base64url. */
|
|
202
|
+
pub: B64Url.min(1),
|
|
203
|
+
iat: z.int().min(1),
|
|
204
|
+
exp: z.int().min(1),
|
|
205
|
+
/** The receiver's WebAuthn rp id (well-known control.signing.rp_id). */
|
|
206
|
+
rp: z.string().min(1).max(253)
|
|
207
|
+
});
|
|
208
|
+
var ControlAssertion = z.object({
|
|
209
|
+
cred: B64Url.min(1),
|
|
210
|
+
ad: B64Url.min(1),
|
|
211
|
+
cd: B64Url.min(1),
|
|
212
|
+
sig: B64Url.min(1)
|
|
213
|
+
});
|
|
214
|
+
var ControlKey = z.object({
|
|
215
|
+
id: B64Url.min(16).max(1400),
|
|
216
|
+
alg: z.union([z.literal(-7), z.literal(-257)]),
|
|
217
|
+
spki: B64Url.min(1)
|
|
218
|
+
});
|
|
219
|
+
var ControlMessage = z.object({
|
|
220
|
+
/** The receiver's id for this message; the ack key. Not signed: the nonce inside cmd is. */
|
|
221
|
+
id: Ulid,
|
|
222
|
+
/** The command string, exactly as signed (≤ 12 000 characters). */
|
|
223
|
+
cmd: z.string().min(1).max(12e3),
|
|
224
|
+
/** The day key's ECDSA P-256 / SHA-256 signature over cmd: raw r‖s, base64url. */
|
|
225
|
+
csig: B64Url.nullable().optional(),
|
|
226
|
+
/** The grant vouching for the day key: its string plus the passkey's assertion over sha256(str). */
|
|
227
|
+
grant: ControlAssertion.extend({ str: z.string().min(1).max(2e3) }).nullable().optional(),
|
|
228
|
+
/** Instead of csig + grant: one passkey assertion over sha256(cmd). */
|
|
229
|
+
confirm: ControlAssertion.nullable().optional(),
|
|
230
|
+
/** The receiver's clock. */
|
|
195
231
|
at: Rfc3339,
|
|
232
|
+
/** After this the machine MUST NOT act and acks `expired`; at most 24 h after `at`. */
|
|
196
233
|
expires_at: Rfc3339
|
|
197
234
|
});
|
|
198
235
|
var ControlPoll = z.object({ messages: z.array(ControlMessage) });
|
|
236
|
+
var ControlOutcome = z.enum(["taken", "delivered", "expired", "unsupported", "failed", "refused"]);
|
|
199
237
|
var ControlAck = z.object({
|
|
200
238
|
acks: z.array(
|
|
201
239
|
z.object({
|
|
202
240
|
id: Ulid,
|
|
203
|
-
outcome:
|
|
241
|
+
outcome: ControlOutcome,
|
|
204
242
|
at: Rfc3339,
|
|
205
|
-
|
|
243
|
+
/** delivered: how it reached the session. */
|
|
244
|
+
mode: DeliveryMode.optional(),
|
|
245
|
+
/** The session that took it, when not the one named (a fork's copy, a started session). */
|
|
246
|
+
session: SessionRef.optional(),
|
|
247
|
+
/** refused: the verifier's code, or the machine's own (`folder`, `no_attention`, `busy`). */
|
|
248
|
+
code: z.string().regex(/^[a-z_]{1,40}$/).optional(),
|
|
249
|
+
detail: z.string().max(500).optional(),
|
|
250
|
+
/** resume / fork / start: the agent's reply, redacted by the secrets ruleset. */
|
|
251
|
+
reply: z.string().max(2e4).optional()
|
|
206
252
|
})
|
|
207
253
|
).min(1)
|
|
208
254
|
});
|
|
255
|
+
var ControlPairStart = z.object({
|
|
256
|
+
/** Set when adding a key to a machine already paired. */
|
|
257
|
+
machine: MachineId.optional(),
|
|
258
|
+
name: z.string().min(1).max(80),
|
|
259
|
+
harnesses: z.array(z.string().regex(/^[a-z][a-z0-9-]{0,39}$/)).max(20),
|
|
260
|
+
modes: z.array(DeliveryMode),
|
|
261
|
+
version: z.string().max(40),
|
|
262
|
+
/** The folders the machine lets sessions run in, for the receiver's "new session"
|
|
263
|
+
* picker. Informational: the machine checks its own list again. */
|
|
264
|
+
folders: z.array(z.string().max(1024)).max(50).optional(),
|
|
265
|
+
/** safe: nothing that needs approval runs unattended; auto: the harness's auto mode. */
|
|
266
|
+
mode: z.enum(["safe", "auto"]).optional()
|
|
267
|
+
});
|
|
268
|
+
var ControlPairStarted = z.object({
|
|
269
|
+
machine: MachineId,
|
|
270
|
+
code: z.string().regex(/^[A-Za-z0-9-]{6,32}$/),
|
|
271
|
+
url: z.url(),
|
|
272
|
+
/** Six digits the terminal and the receiver's page both show. */
|
|
273
|
+
check: z.string().regex(/^\d{6}$/),
|
|
274
|
+
expires_at: Rfc3339
|
|
275
|
+
});
|
|
276
|
+
var ControlPaired = z.object({
|
|
277
|
+
status: z.enum(["pending", "paired", "expired"]),
|
|
278
|
+
key: ControlKey.optional(),
|
|
279
|
+
proof: ControlAssertion.optional(),
|
|
280
|
+
/** The machine's own bearer for polls, acks and hello: opens nothing else. Minted
|
|
281
|
+
* once, at the first pairing of a machine. */
|
|
282
|
+
token: z.string().min(16).max(256).optional()
|
|
283
|
+
});
|
|
284
|
+
var ControlHello = z.object({
|
|
285
|
+
name: z.string().min(1).max(80),
|
|
286
|
+
harnesses: z.array(z.string().regex(/^[a-z][a-z0-9-]{0,39}$/)).max(20),
|
|
287
|
+
modes: z.array(DeliveryMode),
|
|
288
|
+
/** Credential ids of the keys enrolled on the machine. */
|
|
289
|
+
keys: z.array(B64Url.min(16).max(1400)).max(50),
|
|
290
|
+
version: z.string().max(40),
|
|
291
|
+
/** Live sessions with a waiter parked on the daemon's socket. */
|
|
292
|
+
waiting: z.array(SessionRef).max(500).optional(),
|
|
293
|
+
/** As in control-pair.json: informational, re-checked on the machine. */
|
|
294
|
+
folders: z.array(z.string().max(1024)).max(50).optional(),
|
|
295
|
+
mode: z.enum(["safe", "auto"]).optional()
|
|
296
|
+
});
|
|
297
|
+
var WellKnown = z.object({
|
|
298
|
+
protocol: z.array(z.int().min(1)).min(1),
|
|
299
|
+
max_tier: Tier,
|
|
300
|
+
capabilities: z.array(z.string().regex(/^[a-z][a-z0-9-]*$/)),
|
|
301
|
+
auth: z.array(z.enum(["bearer"])).default(["bearer"]),
|
|
302
|
+
endpoints: z.object({
|
|
303
|
+
events: z.string(),
|
|
304
|
+
control: z.string().optional(),
|
|
305
|
+
native: z.string().optional()
|
|
306
|
+
}),
|
|
307
|
+
batch: z.object({ max_events: z.int().min(1).max(50), max_bytes: z.int().min(1024).max(262144) }),
|
|
308
|
+
control: z.object({
|
|
309
|
+
wait_max_s: z.int().min(1).max(60),
|
|
310
|
+
/** How commands are signed: the WebAuthn rp id keys are enrolled for, and the algorithms. */
|
|
311
|
+
signing: z.object({
|
|
312
|
+
rp_id: z.string().min(1).max(253),
|
|
313
|
+
algs: z.array(z.union([z.literal(-7), z.literal(-257)])).min(1)
|
|
314
|
+
})
|
|
315
|
+
}).optional()
|
|
316
|
+
});
|
|
209
317
|
var SCHEMAS = {
|
|
210
318
|
event: Event,
|
|
211
319
|
"event-data": EventData,
|
|
@@ -214,8 +322,15 @@ var SCHEMAS = {
|
|
|
214
322
|
error: ErrorResponse,
|
|
215
323
|
"well-known": WellKnown,
|
|
216
324
|
control: ControlMessage,
|
|
325
|
+
"control-command": ControlCommand,
|
|
326
|
+
"control-grant": ControlGrant,
|
|
327
|
+
"control-key": ControlKey,
|
|
217
328
|
"control-poll": ControlPoll,
|
|
218
|
-
"control-ack": ControlAck
|
|
329
|
+
"control-ack": ControlAck,
|
|
330
|
+
"control-pair": ControlPairStart,
|
|
331
|
+
"control-pair-started": ControlPairStarted,
|
|
332
|
+
"control-paired": ControlPaired,
|
|
333
|
+
"control-hello": ControlHello
|
|
219
334
|
};
|
|
220
335
|
export {
|
|
221
336
|
AttentionKind,
|
|
@@ -223,9 +338,19 @@ export {
|
|
|
223
338
|
BatchResponse,
|
|
224
339
|
Capability,
|
|
225
340
|
ControlAck,
|
|
341
|
+
ControlAssertion,
|
|
342
|
+
ControlCommand,
|
|
343
|
+
ControlGrant,
|
|
344
|
+
ControlHello,
|
|
345
|
+
ControlKey,
|
|
226
346
|
ControlKind,
|
|
227
347
|
ControlMessage,
|
|
348
|
+
ControlOutcome,
|
|
349
|
+
ControlPairStart,
|
|
350
|
+
ControlPairStarted,
|
|
351
|
+
ControlPaired,
|
|
228
352
|
ControlPoll,
|
|
353
|
+
DeliveryMode,
|
|
229
354
|
ErrorResponse,
|
|
230
355
|
Event,
|
|
231
356
|
EventData,
|
|
@@ -233,12 +358,14 @@ export {
|
|
|
233
358
|
HARNESS_NAMES,
|
|
234
359
|
Harness,
|
|
235
360
|
KNOWN_TYPES,
|
|
361
|
+
MachineId,
|
|
236
362
|
PROTOCOL,
|
|
237
363
|
Privacy,
|
|
238
364
|
Rfc3339,
|
|
239
365
|
SCHEMAS,
|
|
240
366
|
Session,
|
|
241
367
|
SessionId,
|
|
368
|
+
SessionRef,
|
|
242
369
|
TYPE_TIER,
|
|
243
370
|
Tier,
|
|
244
371
|
ToolName,
|
package/dist/schema.js.map
CHANGED
|
@@ -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 \"tool.started\",\n \"tool.ended\",\n \"files.changed\",\n \"attention.needed\",\n \"attention.cleared\",\n \"subagent.started\",\n \"subagent.ended\",\n \"context.compacted\",\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 \"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 native: 3,\n};\n\nexport const HARNESS_NAMES = [\n \"claude-code\",\n \"codex\",\n \"gemini-cli\",\n \"antigravity\",\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 parent_id: SessionId.nullable().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\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({ turn_id: z.string().max(128).optional(), prompt_chars: z.int().min(0).optional() }),\n \"turn.ended\": Loose.extend({\n turn_id: z.string().max(128).optional(),\n reason: z.enum([\"stop\", \"interrupt\", \"error\"]),\n ms: 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 \"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 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\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.object({ wait_max_s: z.int().min(1).max(60) }).optional(),\n});\n\nexport const ControlKind = z.enum([\"permission.answer\", \"prompt\", \"cancel\"]);\n\nexport const ControlMessage = z.object({\n id: Ulid,\n kind: ControlKind,\n /** The attention_id a permission answer is for. */\n for: z.string().max(128).optional(),\n decision: z.enum([\"allow\", \"deny\"]).optional(),\n /** The prompt text. */\n text: z.string().max(20_000).optional(),\n /** Shown to the model beside a decision. */\n note: z.string().max(2000).optional(),\n at: Rfc3339,\n expires_at: Rfc3339,\n});\n\nexport const ControlPoll = z.object({ messages: z.array(ControlMessage) });\n\nexport const ControlAck = z.object({\n acks: z\n .array(\n z.object({\n id: Ulid,\n outcome: z.enum([\"delivered\", \"expired\", \"unsupported\", \"failed\"]),\n at: Rfc3339,\n detail: z.string().max(500).optional(),\n }),\n )\n .min(1),\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-poll\": ControlPoll,\n \"control-ack\": ControlAck,\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 \"tool.started\",\n \"tool.ended\",\n \"files.changed\",\n \"attention.needed\",\n \"attention.cleared\",\n \"subagent.started\",\n \"subagent.ended\",\n \"context.compacted\",\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 \"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 native: 3,\n};\n\nexport const HARNESS_NAMES = [\n \"claude-code\",\n \"codex\",\n \"gemini-cli\",\n \"antigravity\",\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 parent_id: SessionId.nullable().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\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({ turn_id: z.string().max(128).optional(), prompt_chars: z.int().min(0).optional() }),\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 }),\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 \"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 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\"]);\nexport const DeliveryMode = z.enum([\"sdk\", \"waiter\", \"turn\", \"api\", \"resume\", \"fork\"]);\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(4000).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 absolute folder the new session runs in. */\n cwd: z.string().max(1024).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 key enrolled on a machine: a passkey's credential id, COSE alg, SPKI. */\nexport const ControlKey = z.object({\n id: B64Url.min(16).max(1400),\n alg: z.union([z.literal(-7), z.literal(-257)]),\n spki: B64Url.min(1),\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 12 000 characters). */\n cmd: z.string().min(1).max(12_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 sha256(str). */\n grant: ControlAssertion.extend({ str: z.string().min(1).max(2000) })\n .nullable()\n .optional(),\n /** Instead of csig + grant: one passkey assertion over sha256(cmd). */\n confirm: ControlAssertion.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. */\nexport const ControlOutcome = z.enum([\"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 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 }),\n )\n .min(1),\n});\n\n/** `POST {control}/pair`, sent with the person's sink token from their own terminal. */\nexport const ControlPairStart = z.object({\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 mode: z.enum([\"safe\", \"auto\"]).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 key: ControlKey.optional(),\n proof: ControlAssertion.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});\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\"]).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 /** 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 }),\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
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../../src/adapters/antigravity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../../src/adapters/antigravity.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,OAAO,EAEP,UAAU,EAMV,YAAY,EACb,MAAM,YAAY,CAAC;AAIpB,eAAO,MAAM,SAAS,mFAAoF,CAAC;AAmB3G,eAAO,MAAM,WAAW,EAAE,OAkJzB,CAAC;AAOF,+FAA+F;AAC/F,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAahD;AACD,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,MAAM,EAIR,CAAC;AAoC7C,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,QAAQ,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAiBjH;AAED;uEACuE;AACvE,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACnG,MAAM,GAAG,IAAI,CAiBf;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,GAC9F,YAAY,CAyBd"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export declare const JOB_TIMEOUT_MS: number;
|
|
2
|
+
export type Mode = "safe" | "auto";
|
|
3
|
+
/** The `claude` to run: on PATH, else where the installers put it, else the newest
|
|
4
|
+
* copy the desktop app ships. Null when this machine has none. */
|
|
5
|
+
export declare function findClaude(env?: NodeJS.ProcessEnv, home?: string): string | null;
|
|
6
|
+
export interface Caps {
|
|
7
|
+
hasMode: boolean;
|
|
8
|
+
modes: string[];
|
|
9
|
+
promptsNone: boolean;
|
|
10
|
+
fork: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function parseCaps(help: string): Caps;
|
|
13
|
+
/** Permission flags for the machine's mode. Safe: `dontAsk` (nothing that needs
|
|
14
|
+
* approval runs). Auto: Claude Code's own auto mode, or a refusal. Never
|
|
15
|
+
* bypassPermissions — no path here writes it. */
|
|
16
|
+
export declare function modeFlags(mode: Mode, caps: Caps): {
|
|
17
|
+
args: string[];
|
|
18
|
+
} | {
|
|
19
|
+
error: string;
|
|
20
|
+
};
|
|
21
|
+
/** The env a headless turn runs with: ours, minus the markers that make Claude Code
|
|
22
|
+
* think it runs inside another session, with CLAUDE_CONFIG_DIR naming the account. */
|
|
23
|
+
export declare function claudeEnv(configDir?: string, env?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
24
|
+
export declare function detectCaps(bin: string): Caps;
|
|
25
|
+
export interface Transcript {
|
|
26
|
+
file: string;
|
|
27
|
+
configDir: string;
|
|
28
|
+
project: string;
|
|
29
|
+
}
|
|
30
|
+
/** <config dir>/projects/<folder>/<session>.jsonl in any Claude Code config dir. */
|
|
31
|
+
export declare function findTranscript(session: string, dirs: string[]): Transcript | null;
|
|
32
|
+
/** The folder a session runs in, from its transcript's own records (never from a
|
|
33
|
+
* command): the `cwd` whose project name is the folder the transcript is filed
|
|
34
|
+
* under, else the first `cwd`. Streams; a line over 2 MB is skipped. */
|
|
35
|
+
export declare function sessionFolder(t: Transcript, cap?: number): string | null;
|
|
36
|
+
/** A Claude Code process holds this session right now: its registry file,
|
|
37
|
+
* <config>/sessions/<pid>.json, names it and the pid is alive (interactive and
|
|
38
|
+
* Agent SDK sessions both file one). */
|
|
39
|
+
export declare function liveProcess(session: string, configDir: string): boolean;
|
|
40
|
+
/** Written in the last 90 s, and not by a job of ours. */
|
|
41
|
+
export declare function recentlyWritten(file: string, ourLastEnd?: number, now?: number): boolean;
|
|
42
|
+
export interface RunResult {
|
|
43
|
+
error?: string;
|
|
44
|
+
code?: number | null;
|
|
45
|
+
signal?: NodeJS.Signals | null;
|
|
46
|
+
stdout?: string | null;
|
|
47
|
+
tooBig?: boolean;
|
|
48
|
+
stderr?: string;
|
|
49
|
+
timedOut?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/** Run one headless turn in its own process group, holding at most 1 MB of stdout. */
|
|
52
|
+
export declare function runClaude(bin: string, args: string[], o: {
|
|
53
|
+
cwd: string;
|
|
54
|
+
env: NodeJS.ProcessEnv;
|
|
55
|
+
timeoutMs?: number;
|
|
56
|
+
}): Promise<RunResult>;
|
|
57
|
+
export interface ClaudeResult {
|
|
58
|
+
type?: string;
|
|
59
|
+
result?: unknown;
|
|
60
|
+
is_error?: boolean;
|
|
61
|
+
subtype?: string;
|
|
62
|
+
session_id?: unknown;
|
|
63
|
+
permission_denials?: {
|
|
64
|
+
tool_name?: unknown;
|
|
65
|
+
}[];
|
|
66
|
+
}
|
|
67
|
+
/** `--output-format json`: one result object, or an array whose last `result` entry it is. */
|
|
68
|
+
export declare function parseResult(stdout: string | null | undefined): ClaudeResult | null;
|
|
69
|
+
export declare const isUuid: (s: unknown) => s is string;
|
|
70
|
+
//# sourceMappingURL=claude-code-control.d.ts.map
|
|
@@ -0,0 +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,5 +1,5 @@
|
|
|
1
1
|
import type { Adapter, FactsState, SessionFacts } from "./types.js";
|
|
2
|
-
export declare const CLAUDE_EVENTS: readonly ["SessionStart", "UserPromptSubmit", "PreToolUse", "PostToolUse", "PostToolUseFailure", "PermissionRequest", "Notification", "Stop", "SubagentStart", "SubagentStop", "PreCompact", "PostCompact", "SessionEnd"];
|
|
2
|
+
export declare const CLAUDE_EVENTS: readonly ["SessionStart", "UserPromptSubmit", "PreToolUse", "PostToolUse", "PostToolUseFailure", "PermissionRequest", "Notification", "Stop", "SubagentStart", "SubagentStop", "PreCompact", "PostCompact", "SessionEnd", "StopFailure"];
|
|
3
3
|
/** Every Claude Code config dir on this machine. */
|
|
4
4
|
export declare function claudeDirs(env?: NodeJS.ProcessEnv, home?: string): string[];
|
|
5
5
|
export declare const claudeCode: Adapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-code.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-code.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,OAAO,EAEP,UAAU,EAKV,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,aAAa,0OAehB,CAAC;AAaX,oDAAoD;AACpD,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,IAAI,SAAO,GAAG,MAAM,EAAE,CAiBtF;AAgBD,eAAO,MAAM,UAAU,EAAE,OAwMxB,CAAC;AA4EF;sEACsE;AACtE,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAa7E;AA4DD;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;AAED,6GAA6G;AAC7G,eAAO,MAAM,kBAAkB,QAAO,IAGrC,CAAC"}
|
|
@@ -2,8 +2,11 @@ import type { HookCommand, InstallReport } from "./types.js";
|
|
|
2
2
|
export interface ClaudeShapedOptions {
|
|
3
3
|
/** Which events take a `matcher` (tool and permission events). */
|
|
4
4
|
matcherFor: (event: string) => string | undefined;
|
|
5
|
-
/** Seconds. */
|
|
5
|
+
/** Seconds (milliseconds for Gemini CLI). */
|
|
6
6
|
timeout: number;
|
|
7
|
+
/** A longer timeout for one event (Claude Code's PermissionRequest, which may wait
|
|
8
|
+
* for a verified control answer: spec/CONTROL.md §6). */
|
|
9
|
+
timeoutFor?: (event: string) => number | undefined;
|
|
7
10
|
/** Extra top-level keys the file must carry (Cursor/Copilot: version: 1). */
|
|
8
11
|
top?: Record<string, unknown>;
|
|
9
12
|
}
|
|
@@ -14,8 +17,41 @@ export declare const isOurs: (h: {
|
|
|
14
17
|
command?: string;
|
|
15
18
|
}[];
|
|
16
19
|
}) => boolean;
|
|
20
|
+
export type JsonFile = {
|
|
21
|
+
ok: true;
|
|
22
|
+
existed: true;
|
|
23
|
+
value: Record<string, unknown>;
|
|
24
|
+
raw: string;
|
|
25
|
+
indent: string;
|
|
26
|
+
eol: string;
|
|
27
|
+
finalNewline: boolean;
|
|
28
|
+
} | {
|
|
29
|
+
ok: true;
|
|
30
|
+
existed: false;
|
|
31
|
+
value: Record<string, unknown>;
|
|
32
|
+
raw: "";
|
|
33
|
+
indent: " ";
|
|
34
|
+
eol: "\n";
|
|
35
|
+
finalNewline: true;
|
|
36
|
+
} | {
|
|
37
|
+
ok: false;
|
|
38
|
+
existed: true;
|
|
39
|
+
reason: string;
|
|
40
|
+
};
|
|
41
|
+
/** Read a JSON config file with its shape. Never guesses: a parse failure is a
|
|
42
|
+
* refusal to touch the file, not an empty object. */
|
|
43
|
+
export declare function readJsonFile(file: string): JsonFile;
|
|
44
|
+
/** Serialise in the file's own shape. */
|
|
45
|
+
export declare function formatJson(value: unknown, f: {
|
|
46
|
+
indent: string;
|
|
47
|
+
eol: string;
|
|
48
|
+
finalNewline: boolean;
|
|
49
|
+
}): string;
|
|
50
|
+
/** Back-compat helper for callers that only read. */
|
|
17
51
|
export declare function readJson(file: string): Record<string, unknown>;
|
|
18
52
|
export declare function installClaudeShaped(file: string, harness: string, events: readonly string[], cmd: HookCommand, o: ClaudeShapedOptions): InstallReport;
|
|
19
|
-
export declare function uninstallClaudeShaped(file: string, events: readonly string[]
|
|
53
|
+
export declare function uninstallClaudeShaped(file: string, events: readonly string[], opts?: {
|
|
54
|
+
created?: boolean | undefined;
|
|
55
|
+
}): InstallReport;
|
|
20
56
|
export declare function installedClaudeShaped(file: string, harness: string, events: readonly string[], cmd: HookCommand, o: ClaudeShapedOptions): "current" | "stale" | "missing";
|
|
21
57
|
//# sourceMappingURL=claude-shaped.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-shaped.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-shaped.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude-shaped.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-shaped.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAClD,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB;8DAC0D;IAC1D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACnD,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,8GAA8G;AAC9G,eAAO,MAAM,IAAI,QAAqE,CAAC;AACvF,eAAO,MAAM,MAAM,GAAI,GAAG;IAAE,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,KAAG,OACwC,CAAC;AAExG,MAAM,MAAM,QAAQ,GAChB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,OAAO,CAAC;CACvB,GACD;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,GAAG,EAAE,EAAE,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAC;IAAC,YAAY,EAAE,IAAI,CAAA;CAAE,GAClH;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD;sDACsD;AACtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CA4BnD;AAED,yCAAyC;AACzC,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAG5G;AAED,qDAAqD;AACrD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAG9D;AAUD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,mBAAmB,GACrB,aAAa,CAyCf;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAO,GAC3C,aAAa,CA0Bf;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,GAAG,EAAE,WAAW,EAChB,CAAC,EAAE,mBAAmB,GACrB,SAAS,GAAG,OAAO,GAAG,SAAS,CAiBjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,OAAO,EAOP,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,YAAY,kMAaf,CAAC;AAgHX,eAAO,MAAM,KAAK,EAAE,OAoLnB,CAAC;AAOF,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CA2CrD"}
|
|
@@ -1,4 +1,9 @@
|
|
|
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
|
+
/** Before 0.46 the hooks system is off unless tools.enableHooks is true (issue #11). */
|
|
4
|
+
export declare function geminiHooksActive(settingsFile: string): {
|
|
5
|
+
active: boolean;
|
|
6
|
+
note?: string;
|
|
7
|
+
};
|
|
3
8
|
export declare const geminiCli: Adapter;
|
|
4
9
|
//# sourceMappingURL=gemini-cli.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-cli.d.ts","sourceRoot":"","sources":["../../../src/adapters/gemini-cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini-cli.d.ts","sourceRoot":"","sources":["../../../src/adapters/gemini-cli.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAuD,MAAM,YAAY,CAAC;AAG/F,eAAO,MAAM,aAAa,gIAShB,CAAC;AAOX,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CA2B1F;AAED,eAAO,MAAM,SAAS,EAAE,OA+IvB,CAAC"}
|
|
@@ -5,6 +5,8 @@ import { geminiCli } from "./gemini-cli.js";
|
|
|
5
5
|
import type { Adapter } from "./types.js";
|
|
6
6
|
export declare const ADAPTERS: readonly Adapter[];
|
|
7
7
|
export declare const adapterByName: (name: string) => Adapter | undefined;
|
|
8
|
+
export { claudeDirs } from "./claude-code.js";
|
|
9
|
+
export * as claudeControl from "./claude-code-control.js";
|
|
8
10
|
export type { Adapter, AdapterEvent, BackfillRow, FactsState, HookCommand, HookInput, HookResult, InstallReport, SessionFacts, TranscriptRead, Turn, } from "./types.js";
|
|
9
11
|
export { antigravity, claudeCode, codex, geminiCli };
|
|
10
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,QAAQ,EAAE,SAAS,OAAO,EAAgD,CAAC;AACxF,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAAO,GAAG,SAAkD,CAAC;AAC1G,YAAY,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,IAAI,GACL,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,QAAQ,EAAE,SAAS,OAAO,EAAgD,CAAC;AACxF,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,OAAO,GAAG,SAAkD,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,YAAY,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,IAAI,GACL,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -59,6 +59,25 @@ export interface InstallReport {
|
|
|
59
59
|
file: string;
|
|
60
60
|
changed: boolean;
|
|
61
61
|
note?: string;
|
|
62
|
+
/** The file did not exist before this install; uninstall may delete it when empty. */
|
|
63
|
+
created?: boolean;
|
|
64
|
+
/** The file was left alone (not plain JSON, another tool's slot); `note` says why. */
|
|
65
|
+
skipped?: boolean;
|
|
66
|
+
}
|
|
67
|
+
export interface InstallOptions {
|
|
68
|
+
/** No sink takes tier ≥ 1: hook one tool event per harness (the heartbeat needs
|
|
69
|
+
* one), not every one — each hook is a Node start the harness waits for. */
|
|
70
|
+
lean?: boolean;
|
|
71
|
+
/** Files sessionpipe created on an earlier install (from the config), so
|
|
72
|
+
* uninstall may delete them once they are empty again. */
|
|
73
|
+
created?: string[];
|
|
74
|
+
}
|
|
75
|
+
export type InstalledState = "current" | "stale" | "missing" | "misplaced" | "inactive";
|
|
76
|
+
export interface InstalledReport {
|
|
77
|
+
file: string;
|
|
78
|
+
state: InstalledState;
|
|
79
|
+
/** Why (an inactive harness, a slot another tool holds). */
|
|
80
|
+
note?: string;
|
|
62
81
|
}
|
|
63
82
|
export interface Adapter {
|
|
64
83
|
readonly name: string;
|
|
@@ -68,13 +87,10 @@ export interface Adapter {
|
|
|
68
87
|
detect(env?: NodeJS.ProcessEnv): boolean;
|
|
69
88
|
/** Config files the installer would write. */
|
|
70
89
|
configFiles(env?: NodeJS.ProcessEnv): string[];
|
|
71
|
-
install(cmd: HookCommand, env?: NodeJS.ProcessEnv): InstallReport[];
|
|
72
|
-
uninstall(env?: NodeJS.ProcessEnv): InstallReport[];
|
|
73
|
-
/** Is our hook present and
|
|
74
|
-
installed(cmd: HookCommand, env?: NodeJS.ProcessEnv):
|
|
75
|
-
file: string;
|
|
76
|
-
state: "current" | "stale" | "missing" | "misplaced";
|
|
77
|
-
}[];
|
|
90
|
+
install(cmd: HookCommand, env?: NodeJS.ProcessEnv, opts?: InstallOptions): InstallReport[];
|
|
91
|
+
uninstall(env?: NodeJS.ProcessEnv, opts?: InstallOptions): InstallReport[];
|
|
92
|
+
/** Is our hook present, current, and will the harness run it? */
|
|
93
|
+
installed(cmd: HookCommand, env?: NodeJS.ProcessEnv, opts?: InstallOptions): InstalledReport[];
|
|
78
94
|
fromHook(input: HookInput): HookResult | null;
|
|
79
95
|
readTranscript(file: string, fromLine: number): TranscriptRead;
|
|
80
96
|
facts(session: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/types.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,OAAO,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gFAAgF;AAChF,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,4DAA4D;IAC5D,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;IACzC,8CAA8C;IAC9C,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;IAC/C,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/types.ts"],"names":[],"mappings":"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"}
|