@excitedjs/agent-runtime-claude-code 0.7.0-alpha.gea3dc096ae44 → 0.7.0-beta.214

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +92 -44
  2. package/dist/config.d.ts +2 -2
  3. package/dist/rpc.d.ts +30 -104
  4. package/dist/rpc.d.ts.map +1 -1
  5. package/dist/rpc.js +217 -404
  6. package/dist/rpc.js.map +1 -1
  7. package/dist/runtime-activity.d.ts +33 -0
  8. package/dist/runtime-activity.d.ts.map +1 -0
  9. package/dist/{runtime-submissions.js → runtime-activity.js} +23 -145
  10. package/dist/runtime-activity.js.map +1 -0
  11. package/dist/runtime-session.d.ts +6 -2
  12. package/dist/runtime-session.d.ts.map +1 -1
  13. package/dist/runtime-session.js +20 -11
  14. package/dist/runtime-session.js.map +1 -1
  15. package/dist/runtime.d.ts +4 -16
  16. package/dist/runtime.d.ts.map +1 -1
  17. package/dist/runtime.js +37 -169
  18. package/dist/runtime.js.map +1 -1
  19. package/dist/stream.d.ts +7 -5
  20. package/dist/stream.d.ts.map +1 -1
  21. package/dist/stream.js +20 -19
  22. package/dist/stream.js.map +1 -1
  23. package/dist/supervisor.d.ts.map +1 -1
  24. package/dist/supervisor.js +23 -47
  25. package/dist/supervisor.js.map +1 -1
  26. package/dist/types.d.ts +24 -19
  27. package/dist/types.d.ts.map +1 -1
  28. package/dist/types.js +0 -5
  29. package/dist/types.js.map +1 -1
  30. package/package.json +3 -3
  31. package/dist/admission-classify.d.ts +0 -7
  32. package/dist/admission-classify.d.ts.map +0 -1
  33. package/dist/admission-classify.js +0 -17
  34. package/dist/admission-classify.js.map +0 -1
  35. package/dist/control-rpc.d.ts +0 -21
  36. package/dist/control-rpc.d.ts.map +0 -1
  37. package/dist/control-rpc.js +0 -103
  38. package/dist/control-rpc.js.map +0 -1
  39. package/dist/runtime-submissions.d.ts +0 -58
  40. package/dist/runtime-submissions.d.ts.map +0 -1
  41. package/dist/runtime-submissions.js.map +0 -1
package/README.md CHANGED
@@ -7,68 +7,116 @@ The built-in **Claude Code** Agent Runtime provider for
7
7
  It implements the public `AgentRuntimeProvider` contract from
8
8
  [`@excitedjs/dreamux-types`](../../dreamux-types) against a resident `claude`
9
9
  stream-json child: process supervision, the stream-json wire protocol (line
10
- framing, turn aggregation, control-request replies), per-turn idle-deadline
11
- handling, MCP config translation (`--mcp-config`), teammate completion delivery
10
+ framing, result aggregation, control-request replies), pending-request idle
11
+ deadlines, MCP config translation (`--mcp-config`), teammate completion delivery
12
12
  as a plain user turn, bounded native transcript pagination, and Claude Code
13
13
  doctor diagnostics.
14
14
 
15
15
  ## Boundary
16
16
 
17
- This package depends on `@excitedjs/dreamux-types` **only**. It never imports
17
+ This package uses `@excitedjs/dreamux-types` and shared `@excitedjs/dreamux-utils`.
18
+ It never imports
18
19
  `@excitedjs/dreamux` core. Everything host-specific — per-dispatcher paths, the
19
20
  durable state sink, the process `PATH` seeded from the host package bins — is
20
21
  supplied by the Dreamux host through the neutral `AgentRuntimeCreateContext` and
21
22
  the provider factory options. The package owns only Claude Code engine mechanics
22
23
  and its own runtime config parsing; it reconstructs no Dreamux host
23
- layout/path/log contracts. Generic OS/validation/turn helpers it needs are
24
- vendored under `src/internal/`.
24
+ layout/path/log contracts. Shared process supervision and state-write fencing
25
+ come from `@excitedjs/dreamux-utils`.
25
26
 
26
27
  ## Loading
27
28
 
28
- Dreamux core resolves `builtin:claude-code` to this package and constructs the
29
- provider through its own core-owned adapter, which maps core's host-shaped create
30
- context onto the neutral one and supplies the host contracts. The package also
31
- default-exports a generic provider-loader factory, so
29
+ Dreamux core resolves `builtin:claude-code` through the generic provider loader
30
+ and supplies host contracts through the neutral create context. The package
31
+ default-exports that provider factory, so
32
32
  `loadExternalAgentRuntimeProviders({ refs: ['builtin:claude-code'] })` can load it
33
33
  through the same package-loader path as external `npm:` providers.
34
34
 
35
- ## Turn lifecycle
35
+ ## Resident session and request settlement
36
36
 
37
37
  The public runtime boundary returns one `RuntimeSubmission` handle per accepted
38
- send, settled by an immutable provider-owned `RuntimeCompletion` created at each
39
- real native result boundary. Inputs merged before session creation and supported
40
- live steering settle with the same completion object; queued sends settle with
41
- distinct completions in native order. Command UUIDs are private wire aliases;
42
- when `msg_lifecycle_v1` is available, all aliases must reach a terminal command
43
- state and a final result must be captured before the object settles. Live steer
44
- fails loudly without that capability. Runtime stop fences queued session work,
45
- terminates the supervised process group with absence proof, and resolves every
46
- unsettled public object as stopped.
47
-
48
- Source deduplication is provider-private. A source is reserved while its native
49
- admission is in flight, committed only after acceptance or an ambiguous
50
- post-write failure, and released after a proven pre-write failure. Concurrent
51
- uses of the same reserved source share the same admission outcome. Accordingly,
52
- `failed` means the command was proven not written, while `ambiguous` means a
53
- native write may have been accepted and must not be retried automatically.
54
- Runtime stop synchronously fences new input, releases pending capability/write
55
- waiters, and drains all already-started admission calls before it resolves.
38
+ send. Every input follows the same native write path; admission resolves after
39
+ write acknowledgement or positive native evidence. RPC holds one table of
40
+ unanswered requests and settles them directly from native results or command
41
+ cancellation/refusal. There is no enclosing request window or aggregate drainage.
42
+
43
+ A native result answering requests creates one immutable `RuntimeCompletion`
44
+ shared by those requests. Folded inputs share that object; queued inputs wait
45
+ for their own result. Consumption lifecycle and a matching submitted result UUID
46
+ are positive attribution evidence. A completed lifecycle frame may precede or
47
+ follow its result and does not decide when another input can be submitted.
48
+
49
+ Background native turns may run without a submission. Their activity and result
50
+ boundaries remain observable, but they settle no unrelated request and do not
51
+ terminate the resident process. Explicit inputs steered into a background turn
52
+ settle normally once they join it. Concurrent input requires lifecycle evidence;
53
+ sessions without it retain single-input compatibility. Native `cancelled` can
54
+ describe a hard failure; it does not imply a user stop. Consumed commands retain
55
+ their result membership through terminal lifecycle frames. An unconsumed command
56
+ that is cancelled, refused or discarded settles as failed. Every native error
57
+ result remains observable, including UUID-less errors and the `success` arm with
58
+ `is_error: true` carrying API error text.
59
+
60
+ A setup error can precede `started` and omit the input UUID. It reports a failed
61
+ native end with its error details but cannot identify a queued request. A later
62
+ named `cancelled` fails that request with its protocol state; the adapter does not
63
+ guess that a preceding unbound error belongs to it.
64
+
65
+ Core owns source deduplication, captured recipients and completion-token delivery.
66
+ The provider owns native admission: `failed` means the command was proven not
67
+ written, while `ambiguous` means a native write may have been accepted and must
68
+ not be retried automatically. Runtime stop synchronously fences new input,
69
+ releases pending capability/write waiters, terminates the supervised process
70
+ group with absence proof, resolves unsettled submissions as stopped, and drains
71
+ already-started admission calls before it resolves.
56
72
 
57
73
  ## Native sessions and transcripts
58
74
 
59
- For a fresh runtime this package generates the native UUID before launch,
60
- passes it through Claude Code's `--session-id`, and deterministically derives
61
- the native transcript under
62
- `<CLAUDE_CONFIG_DIR-or-~/.claude>/projects/<project>/<session-id>.jsonl`.
63
- The validated canonical path is persisted with the checkpoint before admission
64
- can be reported. Resume keeps the authoritative native session id and can
65
- rediscover a moved transcript across Claude Code project directories. No
66
- SessionStart Hook, callback process, placeholder file, or auxiliary IPC bridge
67
- is used to discover `transcript_path`.
68
-
69
- `readTranscript` is a cold bounded read that never starts a Claude process. It
70
- applies native rewrite lineage, returns completed provider-neutral
71
- message/tool blocks in chronological order, and owns opaque cursors, query and
72
- rewrite mismatch detection, payload redaction/truncation, and the fixed host
73
- output budget. Native command/session IDs and filesystem paths never appear in
74
- transcript pages.
75
+ For a fresh runtime this package generates the native UUID before launch and
76
+ passes it through Claude Code's `--session-id`. The native identity is durably
77
+ published before input is written. Resume uses that same authoritative session
78
+ id. Recent activity reads locate Claude's native history independently of the
79
+ live process; transcript discovery never controls request settlement.
80
+
81
+ `readRecentActivity` is a cold bounded read that never starts a Claude process.
82
+ It returns neutral assistant/tool activity records and provider-owned opaque
83
+ cursors. It is not a completion source.
84
+
85
+ ## Custom session factories
86
+
87
+ A custom `ClaudeCodeSessionFactory` now implements `submit()` returning
88
+ `RuntimeAdmission`; accepted submissions carry their own settlement promises.
89
+ The old `submitTurn()`/`steerTurn()` window interface is removed. Session specs
90
+ provide the pinned `sessionId` and optional `outputSchemaEnabled` result contract;
91
+ the exit handler receives its failure cause.
92
+
93
+ Session implementations own result validation and settlement. Their
94
+ `onProtocolEvent` callback reports native activity independently: result events
95
+ retain `commandUuids` for observation, and the public `command_lifecycle` variant
96
+ reports native command state without deciding settlement in runtime or Core.
97
+ An `interrupted` event can report an independently known interruption boundary.
98
+ Emitting a callback alone no longer settles a
99
+ request. These are breaking changes to the Claude-specific extension seam;
100
+ the neutral `AgentRuntime` and `RuntimeSubmission` contracts are unchanged.
101
+
102
+ ## Direct stream RPC consumers
103
+
104
+ The exported `ClaudeCodeStreamRpc` has the same single `submit()` path, returning
105
+ `Promise<RuntimeAdmission>` in place of `submitTurn()` and `steerTurn()`. Accepted
106
+ handles own eventual settlement; callers no longer await an aggregate window.
107
+ Replace `failPending(error)` with `fail(error)` for transport failure or `stop()`
108
+ for deliberate teardown. A session retired after an unexpected exit retains
109
+ that failure for subsequent admission, even after cleanup calls `stop()`.
110
+
111
+ `ClaudeCodeStreamRpcOptions` now requires `sessionId` (a pinned native ID or
112
+ `null`) and accepts optional `outputSchemaEnabled` for result validation.
113
+ `reapOnTimeout(error)` receives the failure `Error`. Protocol callbacks are
114
+ observation only, as described above. Parsed `ResultEnvelope` and `TurnOutcome`
115
+ also expose `terminalReason`, a string or `null`, for native terminal diagnostics.
116
+ These changes break direct RPC consumers as well as custom session factories.
117
+
118
+ The default adapter uses consumption events because the observed background
119
+ folds omit both result UUID echo fields. Claude Code 2.1.263 marks
120
+ `command_lifecycle` as internal; it is not a documented stable SDK contract.
121
+ Compatibility tests and real native captures are distinguished in the task's
122
+ verification record.
package/dist/config.d.ts CHANGED
@@ -28,8 +28,8 @@
28
28
  * is reset on every inbound stream line, so it bounds the max time the
29
29
  * still-alive child may emit *no* stream activity — not the total turn duration.
30
30
  * A child silent for the whole window is failed and reaped/re-spawned (rather
31
- * than wedging the serial turn queue and, behind it, TeamMate completion
32
- * delivery), while a long but actively-streaming turn never trips it.
31
+ * than blocking request settlement and TeamMate completion delivery), while a
32
+ * long but actively-streaming turn never trips it.
33
33
  */
34
34
  export interface DispatcherClaudeCodeConfig {
35
35
  bin: string;
package/dist/rpc.d.ts CHANGED
@@ -1,125 +1,51 @@
1
- /**
2
- * Claude Code stream-json turn RPC.
3
- *
4
- * The supervisor owns the child process. This class owns one in-flight command
5
- * group, stdout line demux, command drainage, and defensive control replies.
6
- *
7
- * One resident CLI execution window can span several submitted commands: a
8
- * live steer is written while the CLI is already running. How the CLI answers them is
9
- * not fixed, which is what makes settlement subtle (probed against a live
10
- * 2.1.231 resident session):
11
- *
12
- * - **Commands fold.** A message that arrives while the in-flight turn is
13
- * inside a tool call is absorbed into that turn at the next query-loop
14
- * boundary. Several commands then share ONE `result` (3 → 1 observed), and
15
- * a folded command's uuid never appears on any `result`.
16
- * - **Or they do not.** A command that arrives between turns runs on its own
17
- * and gets its own `result`.
18
- * - **`result.user_message_uuid` is not a completion ledger.** It is present
19
- * only sometimes and is not reliably the first-submitted uuid of a fold. It
20
- * is present on the artifact an accepted interrupt produces (measured
21
- * against claude 2.1.263), so presence does not mean "this is an answer".
22
- * - **`command_lifecycle` is the attribution signal.** Started commands identify
23
- * the submissions represented by the next native `result`; terminal states
24
- * drain the resident execution window. Its ordering against `result` is not
25
- * stable.
26
- *
27
- * Every valid `result` is forwarded immediately as its own native completion
28
- * boundary. Lifecycle terminality only decides when the command group has
29
- * drained and the resident session may accept a new initial command; it never
30
- * aggregates several results into one completion.
31
- */
1
+ /** Resident Claude input admission, request settlement and native stream handling. */
32
2
  import type { Writable } from 'node:stream';
33
3
  import type { TurnSubmitOptions } from './types.js';
34
- /** Provider-private admission classification; never crosses the neutral API. */
35
- export declare class ClaudeSteerAdmissionError extends Error {
36
- readonly admission: 'failed' | 'ambiguous';
37
- constructor(admission: 'failed' | 'ambiguous', message: string, options?: ErrorOptions);
38
- }
4
+ import type { RuntimeAdmission } from '@excitedjs/dreamux-types';
39
5
  export interface ClaudeCodeStreamRpcOptions {
6
+ sessionId: string | null;
7
+ outputSchemaEnabled?: boolean;
40
8
  turnTimeoutMs: number;
41
9
  log?: (level: 'info' | 'warn' | 'error', msg: string, err?: unknown) => void;
42
- reapOnTimeout: () => void;
10
+ reapOnTimeout: (error: Error) => void;
43
11
  onRemoteControlUrl?: (url: string) => void;
44
12
  onProtocolEvent?: import('./types.js').ClaudeCodeSessionSpec['onProtocolEvent'];
45
13
  }
14
+ /**
15
+ * One resident transport, one association from UUID to unanswered request.
16
+ * Native results consume requests directly; no aggregate execution window waits
17
+ * for terminal lifecycle frames. The consumed set also includes native internal
18
+ * commands so cancellation is scoped to work that actually entered a turn.
19
+ */
46
20
  export declare class ClaudeCodeStreamRpc {
47
21
  private readonly stdin;
48
22
  private readonly options;
49
23
  private readonly lineBuf;
50
- private pending;
24
+ private readonly aggregator;
25
+ private readonly requests;
26
+ private readonly consumed;
51
27
  private lifecycleSupported;
52
- private readonly control;
28
+ private timer;
29
+ private closed;
30
+ private remoteControlRequestId;
53
31
  constructor(stdin: Writable, options: ClaudeCodeStreamRpcOptions);
54
- submitTurn(prompt: string, options?: TurnSubmitOptions, commandUuid?: string): Promise<void>;
55
- steerTurn(prompt: string, options?: TurnSubmitOptions, commandUuid?: string): Promise<void>;
56
- private writeSteer;
32
+ submit(prompt: string, options?: TurnSubmitOptions, commandUuid?: string): Promise<RuntimeAdmission>;
33
+ private acceptRequest;
34
+ private failWrite;
57
35
  onStdoutChunk(chunk: string): void;
58
- failPending(err: Error): void;
59
- interruptTurn(reason: string): Promise<boolean>;
36
+ /** Actual transport loss fails each outstanding request, without a completion. */
37
+ fail(error: Error): void;
38
+ /** Explicit teardown stops requests and converges unconfirmed admissions. */
39
+ stop(): void;
40
+ private close;
60
41
  enableRemoteControl(): void;
61
- /**
62
- * Detach the in-flight turn: clear its deadline timer and null `pending`,
63
- * returning it so the caller can resolve or reject it exactly once.
64
- */
65
- private settlePending;
66
- /**
67
- * End the execution window on the artifact of an accepted interrupt. This is
68
- * the only settlement an interrupt has, deliberately: a lifecycle
69
- * `cancelled` for the same command arrives *after* the artifact and is then
70
- * a no-op, so no path can settle the turn early and leave the artifact to
71
- * arrive against an empty `pending` — which the `result` case reads as an
72
- * unattributable envelope and answers by reaping the resident child.
73
- */
74
- private settleInterrupted;
75
- /**
76
- * Mark a submitted command as producing nothing further, then re-check
77
- * settlement. `abnormalReason` is `null` for the normal ending (`completed`)
78
- * and a short phrase for a command that never ran — those are logged,
79
- * because the CLI gives no other trace of a command it declined.
80
- *
81
- * A command ending abnormally never fails the turn by itself: the probe
82
- * shows a `cancelled` command coexisting with another that answers normally
83
- * (that is exactly what an interrupt looks like), so
84
- * rejecting on `cancelled` — as the pre-#342 code did — is wrong.
85
- */
86
- private markCommandTerminal;
87
- /**
88
- * The drainage gate: every submitted command has reached a terminal
89
- * lifecycle state AND at least one valid `result` has been seen. Result
90
- * identity and settlement have already been forwarded one-by-one.
91
- *
92
- * Two escapes, both anti-hang:
93
- *
94
- * - no lifecycle signal at all (`msg_lifecycle_v1` absent, so no
95
- * `command_lifecycle` will ever arrive) — the `result` is then the only
96
- * terminal event there is, so settle on it;
97
- * - every command terminal, none of them ever ran, and no result — nothing
98
- * can answer this turn, so fail it loudly. The idle deadline is not an
99
- * acceptable backstop here: it reaps the resident child, and any inbound
100
- * line re-arms it, so a healthy session could be killed long after the
101
- * turn became unanswerable.
102
- *
103
- * When a command *did* run but no result has arrived yet, this waits: the
104
- * probe shows terminal lifecycle states arriving both before and after the
105
- * result they belong to, so "terminal, therefore no result is coming" is not
106
- * a sound inference.
107
- */
108
- private settleIfReady;
109
- /**
110
- * (Re)arm the per-turn idle deadline. `turnTimeoutMs` is a *max-idle* window,
111
- * not a total-turn cap: any inbound stream line for this turn pushes it out
112
- * (see `onLine`). A genuinely wedged child (no stream activity for the whole
113
- * window) is still reaped — preserving the #120 anti-hang intent — but a long
114
- * but continuously-streaming turn never trips the deadline (#156).
115
- */
42
+ private clearIdleIfEmpty;
43
+ /** Outstanding work has a max-idle deadline; pure background work has none. */
116
44
  private armIdleTimer;
117
45
  private onLine;
118
46
  private decideLifecycleSupport;
119
- private flushCapabilityWaiters;
120
- private rejectCapabilityWaiters;
121
- private resolveWriteWaiter;
122
- private rejectWriteWaiter;
123
- private rejectWriteWaiters;
47
+ private rejectWaitingRequests;
48
+ private onControlRequest;
49
+ private onControlResponse;
124
50
  }
125
51
  //# sourceMappingURL=rpc.d.ts.map
package/dist/rpc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAU5C,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAqDhE,gFAAgF;AAChF,qBAAa,yBAA0B,SAAQ,KAAK;IAEhD,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,WAAW;gBAAjC,SAAS,EAAE,QAAQ,GAAG,WAAW,EAC1C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY;CAKzB;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7E,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,eAAe,CAAC,EAAE,OAAO,YAAY,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;CACjF;AAED,qBAAa,mBAAmB;IAO5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,kBAAkB,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAG5B,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,0BAA0B;IAKhD,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,EAC/B,WAAW,GAAE,MAAqB,GACjC,OAAO,CAAC,IAAI,CAAC;IA+CV,SAAS,CACb,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,EAC/B,WAAW,GAAE,MAAqB,GACjC,OAAO,CAAC,IAAI,CAAC;IAuBhB,OAAO,CAAC,UAAU;IA6ClB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlC,WAAW,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI;IAI7B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C,mBAAmB,IAAI,IAAI;IAI3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAqBrB;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,aAAa;IAwBrB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,MAAM;IA6Id,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,kBAAkB;CAU3B"}
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAa5C,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,0BAA0B,CAAC;AAWlC,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7E,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACtC,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,eAAe,CAAC,EAAE,OAAO,YAAY,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;CACjF;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB;IAW5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,kBAAkB,CAAwB;IAClD,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,sBAAsB,CAAuB;gBAGlC,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,0BAA0B;IAGtD,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,EAC/B,WAAW,GAAE,MAAqB,GACjC,OAAO,CAAC,gBAAgB,CAAC;IAwC5B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,SAAS;IAUjB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQlC,kFAAkF;IAClF,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIxB,6EAA6E;IAC7E,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,KAAK;IAkBb,mBAAmB,IAAI,IAAI;IAM3B,OAAO,CAAC,gBAAgB;IAOxB,+EAA+E;IAC/E,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,MAAM;IAsFd,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,iBAAiB;CAyB1B"}