harnery 0.9.0 → 0.11.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 -0
- package/dist/commander.d.ts.map +1 -1
- package/dist/commander.js +6 -0
- package/dist/commands/agents.d.ts +24 -0
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +244 -13
- package/dist/commands/backup.d.ts +5 -4
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +15 -14
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +27 -1
- package/dist/commands/claude-desktop.d.ts +19 -0
- package/dist/commands/claude-desktop.d.ts.map +1 -0
- package/dist/commands/claude-desktop.js +168 -0
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +149 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +2 -3
- package/dist/commands/eml.d.ts +32 -0
- package/dist/commands/eml.d.ts.map +1 -1
- package/dist/commands/eml.js +16 -3
- package/dist/commands/harness.d.ts +11 -0
- package/dist/commands/harness.d.ts.map +1 -0
- package/dist/commands/harness.js +118 -0
- package/dist/commands/presence.d.ts +9 -4
- package/dist/commands/presence.d.ts.map +1 -1
- package/dist/commands/presence.js +88 -5
- package/dist/commands/relay.d.ts +9 -0
- package/dist/commands/relay.d.ts.map +1 -0
- package/dist/commands/relay.js +143 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +5 -0
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +53 -17
- package/dist/core/agents/canonical-emit.d.ts +15 -0
- package/dist/core/agents/canonical-emit.d.ts.map +1 -1
- package/dist/core/agents/canonical-emit.js +41 -3
- package/dist/core/agents/cli.js +4 -2
- package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.js +44 -3
- package/dist/core/agents/render/session-context.d.ts.map +1 -1
- package/dist/core/agents/render/session-context.js +26 -1
- package/dist/core/agents/rules/commit-conflict.d.ts.map +1 -1
- package/dist/core/agents/rules/commit-conflict.js +4 -37
- package/dist/core/agents/session-events.d.ts.map +1 -1
- package/dist/core/agents/session-events.js +16 -43
- package/dist/core/agents/state/heartbeat-projector.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-projector.js +11 -2
- package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-writer.js +3 -3
- package/dist/core/agents/state/names.d.ts +38 -3
- package/dist/core/agents/state/names.d.ts.map +1 -1
- package/dist/core/agents/state/names.js +46 -7
- package/dist/core/agents/state/pidmap.d.ts +5 -1
- package/dist/core/agents/state/pidmap.d.ts.map +1 -1
- package/dist/core/agents/state/pidmap.js +58 -2
- package/dist/core/agents/state/stale-sweep.d.ts +3 -2
- package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
- package/dist/core/agents/state/stale-sweep.js +6 -6
- package/dist/core/config.d.ts +68 -11
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +191 -25
- package/dist/core/context/index.d.ts +144 -0
- package/dist/core/context/index.d.ts.map +1 -0
- package/dist/core/context/index.js +380 -0
- package/dist/core/harnesses/bench.d.ts +29 -0
- package/dist/core/harnesses/bench.d.ts.map +1 -0
- package/dist/core/harnesses/bench.js +151 -0
- package/dist/core/harnesses/index.d.ts +9 -0
- package/dist/core/harnesses/index.d.ts.map +1 -0
- package/dist/core/harnesses/index.js +4 -0
- package/dist/core/harnesses/profiles.d.ts +62 -0
- package/dist/core/harnesses/profiles.d.ts.map +1 -0
- package/dist/core/harnesses/profiles.js +115 -0
- package/dist/core/harnesses/registry.d.ts +15 -0
- package/dist/core/harnesses/registry.d.ts.map +1 -0
- package/dist/core/harnesses/registry.js +113 -0
- package/dist/core/harnesses/types.d.ts +64 -0
- package/dist/core/harnesses/types.d.ts.map +1 -0
- package/dist/core/harnesses/types.js +20 -0
- package/dist/core/hooks/cli.js +280 -63
- package/dist/core/hooks/events/schema.d.ts +38 -1
- package/dist/core/hooks/events/schema.d.ts.map +1 -1
- package/dist/core/hooks/harness/events.d.ts.map +1 -1
- package/dist/core/hooks/harness/events.js +3 -0
- package/dist/core/hooks/harness/parse.d.ts +1 -1
- package/dist/core/hooks/harness/parse.d.ts.map +1 -1
- package/dist/core/hooks/harness/parse.js +4 -0
- package/dist/core/presence/blob.d.ts +40 -0
- package/dist/core/presence/blob.d.ts.map +1 -0
- package/dist/core/presence/blob.js +91 -0
- package/dist/core/presence/git.d.ts +68 -0
- package/dist/core/presence/git.d.ts.map +1 -0
- package/dist/core/presence/git.js +173 -0
- package/dist/core/presence/index.d.ts +74 -0
- package/dist/core/presence/index.d.ts.map +1 -0
- package/dist/core/presence/index.js +224 -0
- package/dist/core/presence/relay-client.d.ts +39 -0
- package/dist/core/presence/relay-client.d.ts.map +1 -0
- package/dist/core/presence/relay-client.js +295 -0
- package/dist/core/presence/relay-protocol.d.ts +94 -0
- package/dist/core/presence/relay-protocol.d.ts.map +1 -0
- package/dist/core/presence/relay-protocol.js +169 -0
- package/dist/core/workflow/billing.d.ts +1 -1
- package/dist/core/workflow/billing.d.ts.map +1 -1
- package/dist/core/workflow/billing.js +7 -1
- package/dist/core/workflow/engine.d.ts +5 -0
- package/dist/core/workflow/engine.d.ts.map +1 -1
- package/dist/core/workflow/engine.js +164 -16
- package/dist/core/workflow/harnesses.d.ts +3 -3
- package/dist/core/workflow/harnesses.d.ts.map +1 -1
- package/dist/core/workflow/harnesses.js +8 -17
- package/dist/core/workflow/index.d.ts +5 -0
- package/dist/core/workflow/index.d.ts.map +1 -0
- package/dist/core/workflow/index.js +3 -0
- package/dist/core/workflow/proof.d.ts +42 -0
- package/dist/core/workflow/proof.d.ts.map +1 -0
- package/dist/core/workflow/proof.js +342 -0
- package/dist/core/workflow/spawn-claude.d.ts +4 -1
- package/dist/core/workflow/spawn-claude.d.ts.map +1 -1
- package/dist/core/workflow/spawn-claude.js +39 -18
- package/dist/core/workflow/spawn-codex.d.ts +4 -1
- package/dist/core/workflow/spawn-codex.d.ts.map +1 -1
- package/dist/core/workflow/spawn-codex.js +44 -22
- package/dist/core/workflow/spawn-cursor.d.ts +4 -1
- package/dist/core/workflow/spawn-cursor.d.ts.map +1 -1
- package/dist/core/workflow/spawn-cursor.js +35 -16
- package/dist/core/workflow/types.d.ts +156 -2
- package/dist/core/workflow/types.d.ts.map +1 -1
- package/dist/core/workflow/types.js +1 -1
- package/dist/lib/browser/client.d.ts +16 -0
- package/dist/lib/browser/client.d.ts.map +1 -1
- package/dist/lib/browser/client.js +22 -0
- package/dist/lib/browser/index.d.ts +1 -0
- package/dist/lib/browser/index.d.ts.map +1 -1
- package/dist/lib/browser/index.js +1 -0
- package/dist/lib/browser/launch-args.d.ts +21 -0
- package/dist/lib/browser/launch-args.d.ts.map +1 -0
- package/dist/lib/browser/launch-args.js +32 -0
- package/dist/lib/claude-desktop.d.ts +105 -0
- package/dist/lib/claude-desktop.d.ts.map +1 -0
- package/dist/lib/claude-desktop.js +217 -0
- package/dist/lib/docs-lint.d.ts.map +1 -1
- package/dist/lib/docs-lint.js +5 -2
- package/dist/lib/identities/assume.d.ts +51 -0
- package/dist/lib/identities/assume.d.ts.map +1 -0
- package/dist/lib/identities/assume.js +274 -0
- package/dist/lib/identities/index.d.ts +7 -7
- package/dist/lib/identities/index.d.ts.map +1 -1
- package/dist/lib/identities/index.js +24 -24
- package/dist/lib/instructions/templates.d.ts.map +1 -1
- package/dist/lib/instructions/templates.js +15 -2
- package/package.json +22 -6
- package/schemas/config.schema.json +88 -19
- package/src/commander.ts +6 -0
- package/src/commands/agents.ts +280 -14
- package/src/commands/backup.ts +17 -16
- package/src/commands/browse.ts +32 -0
- package/src/commands/claude-desktop.ts +215 -0
- package/src/commands/context.ts +174 -1
- package/src/commands/doctor.ts +2 -3
- package/src/commands/eml.ts +22 -4
- package/src/commands/harness.ts +147 -0
- package/src/commands/presence.ts +111 -5
- package/src/commands/relay.ts +160 -0
- package/src/commands/sync.ts +4 -0
- package/src/commands/workflow.ts +62 -19
- package/src/core/agents/canonical-emit.ts +41 -3
- package/src/core/agents/cli.ts +4 -2
- package/src/core/agents/render/prompt-context.ts +48 -3
- package/src/core/agents/render/session-context.ts +27 -1
- package/src/core/agents/rules/commit-conflict.ts +4 -33
- package/src/core/agents/session-events.ts +15 -39
- package/src/core/agents/state/heartbeat-projector.ts +10 -1
- package/src/core/agents/state/heartbeat-writer.ts +3 -2
- package/src/core/agents/state/names.ts +68 -9
- package/src/core/agents/state/pidmap.ts +59 -2
- package/src/core/agents/state/stale-sweep.ts +6 -11
- package/src/core/config.ts +248 -24
- package/src/core/context/index.ts +575 -0
- package/src/core/harnesses/bench.ts +214 -0
- package/src/core/harnesses/index.ts +31 -0
- package/src/core/harnesses/profiles.ts +141 -0
- package/src/core/harnesses/registry.ts +140 -0
- package/src/core/harnesses/types.ts +90 -0
- package/src/core/hooks/cli.ts +331 -62
- package/src/core/hooks/events/schema.ts +68 -0
- package/src/core/hooks/harness/events.ts +3 -0
- package/src/core/hooks/harness/parse.ts +7 -1
- package/src/core/presence/blob.ts +125 -0
- package/src/core/presence/git.ts +191 -0
- package/src/core/presence/index.ts +274 -0
- package/src/core/presence/relay-client.ts +322 -0
- package/src/core/presence/relay-protocol.ts +246 -0
- package/src/core/workflow/billing.ts +8 -2
- package/src/core/workflow/engine.ts +182 -16
- package/src/core/workflow/harnesses.ts +14 -19
- package/src/core/workflow/index.ts +43 -0
- package/src/core/workflow/proof.ts +434 -0
- package/src/core/workflow/spawn-claude.ts +39 -20
- package/src/core/workflow/spawn-codex.ts +47 -28
- package/src/core/workflow/spawn-cursor.ts +37 -18
- package/src/core/workflow/types.ts +176 -2
- package/src/lib/browser/client.ts +37 -0
- package/src/lib/browser/index.ts +1 -0
- package/src/lib/browser/launch-args.ts +33 -0
- package/src/lib/claude-desktop.ts +293 -0
- package/src/lib/docs-lint.ts +5 -2
- package/src/lib/identities/assume.ts +363 -0
- package/src/lib/identities/index.ts +28 -24
- package/src/lib/instructions/templates.ts +16 -2
|
@@ -7,6 +7,144 @@
|
|
|
7
7
|
* Design record: decision 0015 (portable coordination-aware workflows).
|
|
8
8
|
*/
|
|
9
9
|
import type { BillingMode, BillingProber } from "./billing.js";
|
|
10
|
+
export declare const WORKFLOW_PROOF_SCHEMA_VERSION: 1;
|
|
11
|
+
export type EvidenceKind = "test" | "command" | "artifact" | "change" | "review" | "observation";
|
|
12
|
+
export type EvidenceStatus = "passed" | "failed" | "observed" | "unknown";
|
|
13
|
+
export type EvidenceSource = "workflow" | "engine";
|
|
14
|
+
export type AcceptanceStatus = "satisfied" | "unsatisfied" | "unknown";
|
|
15
|
+
export type WorkflowRunStatus = "succeeded" | "failed";
|
|
16
|
+
export interface AcceptanceCriterion {
|
|
17
|
+
/** Stable identifier referenced by evidence, for example `tests-pass`. */
|
|
18
|
+
id: string;
|
|
19
|
+
statement: string;
|
|
20
|
+
}
|
|
21
|
+
export interface WorkflowEvidenceInput {
|
|
22
|
+
kind: EvidenceKind;
|
|
23
|
+
status: EvidenceStatus;
|
|
24
|
+
label: string;
|
|
25
|
+
summary?: string;
|
|
26
|
+
/** Inspectable local path, URL, command name, or other bounded reference. */
|
|
27
|
+
ref?: string;
|
|
28
|
+
/** Declared acceptance criteria this evidence bears on. */
|
|
29
|
+
acceptanceIds?: string[];
|
|
30
|
+
}
|
|
31
|
+
export interface WorkflowEvidenceRecord {
|
|
32
|
+
id: string;
|
|
33
|
+
source: EvidenceSource;
|
|
34
|
+
recorded_at: string;
|
|
35
|
+
kind: EvidenceKind;
|
|
36
|
+
status: EvidenceStatus;
|
|
37
|
+
label: string;
|
|
38
|
+
summary?: string;
|
|
39
|
+
ref?: string;
|
|
40
|
+
stage?: string;
|
|
41
|
+
acceptance_ids: string[];
|
|
42
|
+
}
|
|
43
|
+
export interface AcceptanceResult extends AcceptanceCriterion {
|
|
44
|
+
status: AcceptanceStatus;
|
|
45
|
+
evidence_ids: string[];
|
|
46
|
+
/** Sources behind the decisive evidence. Empty when status is unknown. */
|
|
47
|
+
sources: EvidenceSource[];
|
|
48
|
+
}
|
|
49
|
+
export interface AcceptanceSummary {
|
|
50
|
+
satisfied: number;
|
|
51
|
+
unsatisfied: number;
|
|
52
|
+
unknown: number;
|
|
53
|
+
total: number;
|
|
54
|
+
}
|
|
55
|
+
export interface ResultDigest {
|
|
56
|
+
kind: "text" | "json";
|
|
57
|
+
sha256: string;
|
|
58
|
+
bytes: number;
|
|
59
|
+
}
|
|
60
|
+
export interface WorkflowAgentProof {
|
|
61
|
+
id: string;
|
|
62
|
+
label: string;
|
|
63
|
+
stage?: string;
|
|
64
|
+
harness: HarnessName;
|
|
65
|
+
model?: string;
|
|
66
|
+
status: "succeeded" | "failed" | "cached";
|
|
67
|
+
attempts: number;
|
|
68
|
+
duration_ms: number;
|
|
69
|
+
cost_usd?: number;
|
|
70
|
+
session_id?: string;
|
|
71
|
+
result?: ResultDigest;
|
|
72
|
+
error?: string;
|
|
73
|
+
}
|
|
74
|
+
export interface WorkflowRepoSnapshot {
|
|
75
|
+
cwd: string;
|
|
76
|
+
root?: string;
|
|
77
|
+
branch?: string;
|
|
78
|
+
head?: string;
|
|
79
|
+
dirty_paths: string[];
|
|
80
|
+
dirty_paths_truncated?: boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface WorkflowRepoEvidence {
|
|
83
|
+
source: "engine";
|
|
84
|
+
before: WorkflowRepoSnapshot;
|
|
85
|
+
after: WorkflowRepoSnapshot;
|
|
86
|
+
drift: {
|
|
87
|
+
branch_changed: boolean;
|
|
88
|
+
head_changed: boolean;
|
|
89
|
+
dirty_paths_added: string[];
|
|
90
|
+
dirty_paths_cleared: string[];
|
|
91
|
+
dirty_paths_retained: string[];
|
|
92
|
+
/** True when snapshots cannot prove whether every retained dirty path changed. */
|
|
93
|
+
incomplete: boolean;
|
|
94
|
+
note?: string;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export interface HarnessEvidenceCoverage {
|
|
98
|
+
harness: HarnessName;
|
|
99
|
+
tool_evidence: {
|
|
100
|
+
support: "supported" | "partial" | "unsupported" | "unknown";
|
|
101
|
+
note?: string;
|
|
102
|
+
};
|
|
103
|
+
observed: {
|
|
104
|
+
final_results: number;
|
|
105
|
+
session_ids: number;
|
|
106
|
+
costs: number;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export interface WorkflowProofUnknown {
|
|
110
|
+
code: "tool_evidence_unavailable" | "harness_capability_unregistered" | "agent_cost_unreported" | "agent_session_unreported" | "repository_drift_incomplete";
|
|
111
|
+
message: string;
|
|
112
|
+
harness?: HarnessName;
|
|
113
|
+
agent_id?: string;
|
|
114
|
+
}
|
|
115
|
+
export interface WorkflowProof {
|
|
116
|
+
schema_version: typeof WORKFLOW_PROOF_SCHEMA_VERSION;
|
|
117
|
+
run: {
|
|
118
|
+
id: string;
|
|
119
|
+
name: string;
|
|
120
|
+
status: WorkflowRunStatus;
|
|
121
|
+
started_at: string;
|
|
122
|
+
ended_at: string;
|
|
123
|
+
duration_ms: number;
|
|
124
|
+
objective?: string;
|
|
125
|
+
error?: string;
|
|
126
|
+
result?: ResultDigest;
|
|
127
|
+
};
|
|
128
|
+
acceptance: {
|
|
129
|
+
criteria: AcceptanceResult[];
|
|
130
|
+
summary: AcceptanceSummary;
|
|
131
|
+
};
|
|
132
|
+
agents: WorkflowAgentProof[];
|
|
133
|
+
evidence: WorkflowEvidenceRecord[];
|
|
134
|
+
repository: WorkflowRepoEvidence;
|
|
135
|
+
harnesses: HarnessEvidenceCoverage[];
|
|
136
|
+
unknowns: WorkflowProofUnknown[];
|
|
137
|
+
integrity: {
|
|
138
|
+
journal: {
|
|
139
|
+
path: "journal.jsonl";
|
|
140
|
+
sha256: string;
|
|
141
|
+
bytes: number;
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
export interface HarnessEvidenceCapability {
|
|
146
|
+
toolEvidence: HarnessEvidenceCoverage["tool_evidence"];
|
|
147
|
+
}
|
|
10
148
|
/** JSON-schema *subset* accepted by stage gates (see validate.ts). */
|
|
11
149
|
export interface StageSchema {
|
|
12
150
|
type: "object" | "array" | "string" | "number" | "boolean";
|
|
@@ -25,6 +163,9 @@ export interface AgentOpts {
|
|
|
25
163
|
schema?: StageSchema;
|
|
26
164
|
/** Model slug passed through to the harness CLI (default: the CLI's default). */
|
|
27
165
|
model?: string;
|
|
166
|
+
/** Reasoning effort mapped through the selected harness profile. Unsupported
|
|
167
|
+
* values fail before the vendor process starts. */
|
|
168
|
+
effort?: string;
|
|
28
169
|
/** Attempt ceiling for the schema-retry loop (default 2). */
|
|
29
170
|
maxAttempts?: number;
|
|
30
171
|
/** Subprocess timeout ms (default 300_000). */
|
|
@@ -39,7 +180,10 @@ export interface AgentOpts {
|
|
|
39
180
|
* another. */
|
|
40
181
|
harness?: HarnessName;
|
|
41
182
|
}
|
|
42
|
-
|
|
183
|
+
/** Open registry key. The built-in catalog currently contains Claude Code,
|
|
184
|
+
* Codex, and Cursor; consumers may register another adapter without widening
|
|
185
|
+
* a package-owned union first. */
|
|
186
|
+
export type HarnessName = string;
|
|
43
187
|
/** What a spawn adapter returns for one subagent run. */
|
|
44
188
|
export interface SpawnResult {
|
|
45
189
|
ok: boolean;
|
|
@@ -55,6 +199,7 @@ export interface SpawnResult {
|
|
|
55
199
|
export interface SpawnRequest {
|
|
56
200
|
prompt: string;
|
|
57
201
|
model?: string;
|
|
202
|
+
effort?: string;
|
|
58
203
|
timeoutMs: number;
|
|
59
204
|
maxTurns: number;
|
|
60
205
|
cwd: string;
|
|
@@ -79,10 +224,14 @@ export interface WorkflowContext {
|
|
|
79
224
|
stage: (title: string) => void;
|
|
80
225
|
/** Narrate progress (stderr + journal). */
|
|
81
226
|
log: (message: string) => void;
|
|
227
|
+
/** Attach a bounded, sourced receipt to the run and optional acceptance criteria. */
|
|
228
|
+
evidence: (input: WorkflowEvidenceInput) => string;
|
|
82
229
|
}
|
|
83
230
|
export interface WorkflowMeta {
|
|
84
231
|
name: string;
|
|
85
232
|
description?: string;
|
|
233
|
+
objective?: string;
|
|
234
|
+
acceptance?: AcceptanceCriterion[];
|
|
86
235
|
}
|
|
87
236
|
/** Loaded script shape: `export const meta` + `export default async (ctx) => …`. */
|
|
88
237
|
export interface WorkflowModule {
|
|
@@ -94,7 +243,7 @@ export interface EngineOpts {
|
|
|
94
243
|
coordRoot: string;
|
|
95
244
|
/** Spawner registry keyed by harness. A single-harness caller registers one
|
|
96
245
|
* entry and names it in `defaultHarness`. */
|
|
97
|
-
spawners:
|
|
246
|
+
spawners: Readonly<Record<HarnessName, Spawner | undefined>>;
|
|
98
247
|
/** Harness used when an agent() call doesn't name one (default "claude-code"). */
|
|
99
248
|
defaultHarness?: HarnessName;
|
|
100
249
|
/** Resume: run id of a prior run whose journal supplies cached results.
|
|
@@ -120,6 +269,9 @@ export interface EngineOpts {
|
|
|
120
269
|
allowApiBilling?: boolean;
|
|
121
270
|
/** Billing-probe override for tests (default: the real probeBilling). */
|
|
122
271
|
probeBilling?: BillingProber;
|
|
272
|
+
/** Capability claims used to state whether adapter-native tool evidence was
|
|
273
|
+
* available. Missing claims remain unknown. */
|
|
274
|
+
harnessEvidence?: Readonly<Record<HarnessName, HarnessEvidenceCapability | undefined>>;
|
|
123
275
|
}
|
|
124
276
|
export interface RunReport {
|
|
125
277
|
runId: string;
|
|
@@ -132,6 +284,8 @@ export interface RunReport {
|
|
|
132
284
|
costUsd: number;
|
|
133
285
|
durationMs: number;
|
|
134
286
|
journalPath: string;
|
|
287
|
+
proofPath: string;
|
|
288
|
+
acceptance: AcceptanceSummary;
|
|
135
289
|
/** Estimated tokens of repo instructions (CLAUDE.md/AGENTS.md at the child
|
|
136
290
|
* cwd) that EVERY child cache-writes on spawn — the fixed per-child context
|
|
137
291
|
* overhead a fan-out multiplies. bytes/4 heuristic; 0 when no such file. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3D,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,iBAAiB;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,qDAAqD;IACrD,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,SAAS;IACxB;;8EAE0E;IAC1E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;sDACkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;kBAEc;IACd,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,14 @@ export interface BrowserOptions {
|
|
|
47
47
|
* via this callback (e.g., a Cloudflare-bypass header for specific zones).
|
|
48
48
|
*/
|
|
49
49
|
extraHeaders?: (url: string) => Record<string, string>;
|
|
50
|
+
/**
|
|
51
|
+
* Extra Chromium command-line flags, passed through to Playwright's
|
|
52
|
+
* `launchPersistentContext` `args`. Used for environment-specific
|
|
53
|
+
* workarounds — most notably `--disable-gpu` for headed windows under
|
|
54
|
+
* WSLg (see `./launch-args.ts`). Empty/undefined means Playwright's
|
|
55
|
+
* defaults only.
|
|
56
|
+
*/
|
|
57
|
+
launchArgs?: string[];
|
|
50
58
|
}
|
|
51
59
|
export interface NavigateResult {
|
|
52
60
|
url: string;
|
|
@@ -71,6 +79,14 @@ export interface FailedRequest {
|
|
|
71
79
|
method: string;
|
|
72
80
|
failure: string;
|
|
73
81
|
resourceType: string;
|
|
82
|
+
/** HTTP status for kind "http" entries; null for network-level failures. */
|
|
83
|
+
status: number | null;
|
|
84
|
+
/** "http" = request completed with a >=400 response; "network" = never completed (DNS, TLS, aborts, tunnel). */
|
|
85
|
+
kind: "http" | "network";
|
|
86
|
+
/** True when the entry is the main frame's document response — lets consumers
|
|
87
|
+
* distinguish an expected error-page status (a 404 route under test) from a
|
|
88
|
+
* broken subresource. */
|
|
89
|
+
document?: boolean;
|
|
74
90
|
}
|
|
75
91
|
export interface Diagnostics {
|
|
76
92
|
consoleEvents: ConsoleEvent[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,IAAI,EAGV,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAuB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,cAAc;IAC7B,+FAA+F;IAC/F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,kCAAkC;IAClC,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,aAAa,GAAG,QAAQ,CAAC;IACnE;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,9 @@ export class Browser {
|
|
|
32
32
|
this.context = await chromium.launchPersistentContext(this.profileDir, {
|
|
33
33
|
headless: !this.opts.headed,
|
|
34
34
|
viewport: this.opts.viewport ?? { width: 1280, height: 800 },
|
|
35
|
+
...(this.opts.launchArgs && this.opts.launchArgs.length > 0
|
|
36
|
+
? { args: this.opts.launchArgs }
|
|
37
|
+
: {}),
|
|
35
38
|
...(this.opts.recordHarPath
|
|
36
39
|
? { recordHar: { path: this.opts.recordHarPath, mode: "full" } }
|
|
37
40
|
: {}),
|
|
@@ -84,6 +87,25 @@ export class Browser {
|
|
|
84
87
|
method: req.method(),
|
|
85
88
|
failure: req.failure()?.errorText ?? "unknown",
|
|
86
89
|
resourceType: req.resourceType(),
|
|
90
|
+
status: null,
|
|
91
|
+
kind: "network",
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
// HTTP-level failures: `requestfailed` only fires for requests that never
|
|
95
|
+
// complete (DNS, TLS, aborts), so a script/stylesheet answered with a
|
|
96
|
+
// 4xx/5xx would otherwise be invisible to failedRequests-based gates.
|
|
97
|
+
page.on("response", (res) => {
|
|
98
|
+
if (res.status() < 400)
|
|
99
|
+
return;
|
|
100
|
+
const req = res.request();
|
|
101
|
+
this.failedRequests.push({
|
|
102
|
+
url: res.url(),
|
|
103
|
+
method: req.method(),
|
|
104
|
+
failure: `HTTP ${res.status()}`,
|
|
105
|
+
resourceType: req.resourceType(),
|
|
106
|
+
status: res.status(),
|
|
107
|
+
kind: "http",
|
|
108
|
+
document: req.resourceType() === "document" && res.frame() === page.mainFrame(),
|
|
87
109
|
});
|
|
88
110
|
});
|
|
89
111
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { Browser, type BrowserOptions, type ConsoleEvent, type Diagnostics, type FailedRequest, type NavigateResult, type PageErrorEvent, } from "./client.js";
|
|
2
2
|
export { captureDevOverlay, type DevOverlayError, type DevOverlayResult, } from "./dev-overlay.js";
|
|
3
|
+
export { isWSL, wslHeadedLaunchArgs } from "./launch-args.js";
|
|
3
4
|
export type { OverflowElement, OverflowResult, WidthResult, } from "./layout.js";
|
|
4
5
|
export type { RuntHit, RuntsResult, } from "./runts.js";
|
|
5
6
|
export type { CheckVisibilityOptions, VisibilityResult, VisibilitySample, } from "./visibility.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,OAAO,EACP,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,YAAY,EACV,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,OAAO,EACP,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chromium launch-arg helpers for environment-specific workarounds.
|
|
3
|
+
*
|
|
4
|
+
* The one that matters today is WSLg: a headed Chromium window renders its
|
|
5
|
+
* page to a GPU-backed surface that WSLg composites over an RDP stream to the
|
|
6
|
+
* Windows host. On a range of Windows / GPU-driver / WSLg combinations that
|
|
7
|
+
* GPU-composited surface never presents, so the window shows in the taskbar
|
|
8
|
+
* but paints blank — even though the page itself runs fine (JS, navigation,
|
|
9
|
+
* and DOM all work). Forcing Chromium onto its software compositor with
|
|
10
|
+
* `--disable-gpu` restores on-screen paint. It only matters for headed mode
|
|
11
|
+
* (headless never composites to a display) and only under WSL.
|
|
12
|
+
*/
|
|
13
|
+
/** True when running under WSL (WSL1 or WSL2). */
|
|
14
|
+
export declare function isWSL(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Chromium launch flags to make a headed window paint under WSLg. Returns
|
|
17
|
+
* `["--disable-gpu"]` on WSL, `[]` elsewhere. Callers apply these only for
|
|
18
|
+
* headed launches. See the module doc for the failure mode.
|
|
19
|
+
*/
|
|
20
|
+
export declare function wslHeadedLaunchArgs(): string[];
|
|
21
|
+
//# sourceMappingURL=launch-args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-args.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/launch-args.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,kDAAkD;AAClD,wBAAgB,KAAK,IAAI,OAAO,CAO/B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
/**
|
|
3
|
+
* Chromium launch-arg helpers for environment-specific workarounds.
|
|
4
|
+
*
|
|
5
|
+
* The one that matters today is WSLg: a headed Chromium window renders its
|
|
6
|
+
* page to a GPU-backed surface that WSLg composites over an RDP stream to the
|
|
7
|
+
* Windows host. On a range of Windows / GPU-driver / WSLg combinations that
|
|
8
|
+
* GPU-composited surface never presents, so the window shows in the taskbar
|
|
9
|
+
* but paints blank — even though the page itself runs fine (JS, navigation,
|
|
10
|
+
* and DOM all work). Forcing Chromium onto its software compositor with
|
|
11
|
+
* `--disable-gpu` restores on-screen paint. It only matters for headed mode
|
|
12
|
+
* (headless never composites to a display) and only under WSL.
|
|
13
|
+
*/
|
|
14
|
+
/** True when running under WSL (WSL1 or WSL2). */
|
|
15
|
+
export function isWSL() {
|
|
16
|
+
if (process.env.WSL_DISTRO_NAME || process.env.WSL_INTEROP)
|
|
17
|
+
return true;
|
|
18
|
+
try {
|
|
19
|
+
return /microsoft|wsl/i.test(readFileSync("/proc/version", "utf8"));
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Chromium launch flags to make a headed window paint under WSLg. Returns
|
|
27
|
+
* `["--disable-gpu"]` on WSL, `[]` elsewhere. Callers apply these only for
|
|
28
|
+
* headed launches. See the module doc for the failure mode.
|
|
29
|
+
*/
|
|
30
|
+
export function wslHeadedLaunchArgs() {
|
|
31
|
+
return isWSL() ? ["--disable-gpu"] : [];
|
|
32
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude desktop app session-index access.
|
|
3
|
+
*
|
|
4
|
+
* The Claude desktop app keeps each signed-in account's Claude Code session
|
|
5
|
+
* sidebar as plain JSON files:
|
|
6
|
+
*
|
|
7
|
+
* <dataDir>/claude-code-sessions/<account-uuid>/<env-id>/local_<uuid>.json
|
|
8
|
+
*
|
|
9
|
+
* One file per sidebar entry: { sessionId, cliSessionId, cwd, title, ... }.
|
|
10
|
+
* Nothing inside the file binds it to an account — the scoping is purely
|
|
11
|
+
* which <account-uuid> directory it sits in, and the transcripts themselves
|
|
12
|
+
* live in the (account-agnostic) `~/.claude/projects/` tree of the runtime
|
|
13
|
+
* environment. So when a user signs out of account A and into account B,
|
|
14
|
+
* their sessions "disappear" from the sidebar even though every byte is
|
|
15
|
+
* still on disk. Copying an entry file into another account's directory
|
|
16
|
+
* makes the session visible (and resumable) there.
|
|
17
|
+
*
|
|
18
|
+
* These helpers locate the desktop app's data directory (including the
|
|
19
|
+
* Windows one from inside WSL, where the app runs on the Windows side but
|
|
20
|
+
* the CLI runs in the distro), enumerate the per-account entries, and
|
|
21
|
+
* plan/apply cross-account mirrors. The file format is the desktop app's
|
|
22
|
+
* private state, not a public API — everything here treats it read-mostly
|
|
23
|
+
* and copies files verbatim rather than rewriting them.
|
|
24
|
+
*/
|
|
25
|
+
export interface DesktopSessionEntry {
|
|
26
|
+
/** Absolute path of the local_*.json entry file. */
|
|
27
|
+
file: string;
|
|
28
|
+
/** Account UUID directory the entry sits under (= sidebar scoping). */
|
|
29
|
+
accountUuid: string;
|
|
30
|
+
/** Environment directory between account and entry (VM/env identity). */
|
|
31
|
+
envId: string;
|
|
32
|
+
/** The entry's own id (usually "local_<uuid>", mirrors the filename). */
|
|
33
|
+
sessionId: string | null;
|
|
34
|
+
/** The Claude Code session id — matches the JSONL transcript filename. */
|
|
35
|
+
cliSessionId: string | null;
|
|
36
|
+
cwd: string | null;
|
|
37
|
+
title: string | null;
|
|
38
|
+
model: string | null;
|
|
39
|
+
isArchived: boolean;
|
|
40
|
+
createdAt: number | null;
|
|
41
|
+
lastActivityAt: number | null;
|
|
42
|
+
}
|
|
43
|
+
export interface DesktopAccount {
|
|
44
|
+
accountUuid: string;
|
|
45
|
+
path: string;
|
|
46
|
+
entries: DesktopSessionEntry[];
|
|
47
|
+
}
|
|
48
|
+
export interface MirrorAction {
|
|
49
|
+
from: string;
|
|
50
|
+
to: string;
|
|
51
|
+
entry: DesktopSessionEntry;
|
|
52
|
+
targetAccountUuid: string;
|
|
53
|
+
}
|
|
54
|
+
export interface MirrorPlan {
|
|
55
|
+
actions: MirrorAction[];
|
|
56
|
+
/** Entries skipped because the target already lists that cliSessionId. */
|
|
57
|
+
skippedExisting: number;
|
|
58
|
+
/** Entries skipped because they are archived (opt in via includeArchived). */
|
|
59
|
+
skippedArchived: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Candidate desktop-app data directories for this machine, most specific
|
|
63
|
+
* first. Only directories that exist AND contain a claude-code-sessions/
|
|
64
|
+
* subdirectory are returned. Precedence: explicit arg, then
|
|
65
|
+
* HARNERY_CLAUDE_DESKTOP_DIR, then platform defaults (on WSL that means
|
|
66
|
+
* scanning every /mnt/c/Users/<user>/AppData/Roaming/Claude).
|
|
67
|
+
*/
|
|
68
|
+
export declare function findDesktopDataDirs(explicit?: string): string[];
|
|
69
|
+
/** Enumerate every account directory + its session entries under one data dir. */
|
|
70
|
+
export declare function listAccounts(dataDir: string): DesktopAccount[];
|
|
71
|
+
/**
|
|
72
|
+
* The account the runtime environment's Claude Code CLI is signed into,
|
|
73
|
+
* read from ~/.claude.json (best-effort; null when unavailable). Lets the
|
|
74
|
+
* command label an otherwise-opaque account UUID with an email address.
|
|
75
|
+
*/
|
|
76
|
+
export declare function readCliAccount(): {
|
|
77
|
+
accountUuid: string;
|
|
78
|
+
email: string | null;
|
|
79
|
+
} | null;
|
|
80
|
+
export interface MirrorOptions {
|
|
81
|
+
/** Restrict targets to accounts whose uuid starts with one of these. */
|
|
82
|
+
to?: string[];
|
|
83
|
+
/** Restrict sources to accounts whose uuid starts with one of these. */
|
|
84
|
+
from?: string[];
|
|
85
|
+
/**
|
|
86
|
+
* Selectors: each matches a cliSessionId / sessionId exactly, or a title
|
|
87
|
+
* case-insensitively as a substring. Empty/undefined = every entry.
|
|
88
|
+
*/
|
|
89
|
+
sessions?: string[];
|
|
90
|
+
includeArchived?: boolean;
|
|
91
|
+
}
|
|
92
|
+
export declare function entryMatchesSelector(entry: DesktopSessionEntry, selector: string): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Plan the copies that would make each target account list the selected
|
|
95
|
+
* sessions. Union semantics: every entry a source account has and a target
|
|
96
|
+
* account lacks (keyed by cliSessionId, falling back to filename) becomes a
|
|
97
|
+
* copy action. Idempotent by construction — planning again after applying
|
|
98
|
+
* yields zero actions.
|
|
99
|
+
*/
|
|
100
|
+
export declare function planMirror(accounts: DesktopAccount[], opts?: MirrorOptions): MirrorPlan;
|
|
101
|
+
/** Apply a plan: verbatim file copies (never rewrites entry contents). */
|
|
102
|
+
export declare function applyMirror(plan: MirrorPlan): {
|
|
103
|
+
copied: number;
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=claude-desktop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-desktop.d.ts","sourceRoot":"","sources":["../../src/lib/claude-desktop.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0EAA0E;IAC1E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,mBAAmB,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,0EAA0E;IAC1E,eAAe,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,eAAe,EAAE,MAAM,CAAC;CACzB;AAaD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAgC/D;AA4CD,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAyB9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAerF;AAED,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG1F;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,IAAI,GAAE,aAAkB,GAAG,UAAU,CA2C3F;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAQhE"}
|