@cleocode/adapters 2026.4.59 → 2026.4.60

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 (109) hide show
  1. package/package.json +3 -3
  2. package/dist/cant-context.js +0 -711
  3. package/dist/cant-context.js.map +0 -1
  4. package/dist/providers/claude-code/adapter.js +0 -222
  5. package/dist/providers/claude-code/adapter.js.map +0 -1
  6. package/dist/providers/claude-code/context-monitor.js +0 -159
  7. package/dist/providers/claude-code/context-monitor.js.map +0 -1
  8. package/dist/providers/claude-code/hooks.js +0 -395
  9. package/dist/providers/claude-code/hooks.js.map +0 -1
  10. package/dist/providers/claude-code/index.js +0 -41
  11. package/dist/providers/claude-code/index.js.map +0 -1
  12. package/dist/providers/claude-code/install.js +0 -199
  13. package/dist/providers/claude-code/install.js.map +0 -1
  14. package/dist/providers/claude-code/paths.js +0 -41
  15. package/dist/providers/claude-code/paths.js.map +0 -1
  16. package/dist/providers/claude-code/spawn.js +0 -198
  17. package/dist/providers/claude-code/spawn.js.map +0 -1
  18. package/dist/providers/claude-code/statusline.js +0 -130
  19. package/dist/providers/claude-code/statusline.js.map +0 -1
  20. package/dist/providers/claude-code/task-sync.js +0 -119
  21. package/dist/providers/claude-code/task-sync.js.map +0 -1
  22. package/dist/providers/claude-code/transport.js +0 -29
  23. package/dist/providers/claude-code/transport.js.map +0 -1
  24. package/dist/providers/claude-sdk/index.js +0 -16
  25. package/dist/providers/claude-sdk/index.js.map +0 -1
  26. package/dist/providers/claude-sdk/mcp-registry.js +0 -66
  27. package/dist/providers/claude-sdk/mcp-registry.js.map +0 -1
  28. package/dist/providers/claude-sdk/session-store.js +0 -84
  29. package/dist/providers/claude-sdk/session-store.js.map +0 -1
  30. package/dist/providers/claude-sdk/spawn.js +0 -225
  31. package/dist/providers/claude-sdk/spawn.js.map +0 -1
  32. package/dist/providers/claude-sdk/tool-bridge.js +0 -50
  33. package/dist/providers/claude-sdk/tool-bridge.js.map +0 -1
  34. package/dist/providers/codex/adapter.js +0 -146
  35. package/dist/providers/codex/adapter.js.map +0 -1
  36. package/dist/providers/codex/hooks.js +0 -113
  37. package/dist/providers/codex/hooks.js.map +0 -1
  38. package/dist/providers/codex/index.js +0 -39
  39. package/dist/providers/codex/index.js.map +0 -1
  40. package/dist/providers/codex/install.js +0 -124
  41. package/dist/providers/codex/install.js.map +0 -1
  42. package/dist/providers/cursor/adapter.js +0 -151
  43. package/dist/providers/cursor/adapter.js.map +0 -1
  44. package/dist/providers/cursor/hooks.js +0 -208
  45. package/dist/providers/cursor/hooks.js.map +0 -1
  46. package/dist/providers/cursor/index.js +0 -36
  47. package/dist/providers/cursor/index.js.map +0 -1
  48. package/dist/providers/cursor/install.js +0 -180
  49. package/dist/providers/cursor/install.js.map +0 -1
  50. package/dist/providers/cursor/spawn.js +0 -59
  51. package/dist/providers/cursor/spawn.js.map +0 -1
  52. package/dist/providers/gemini-cli/adapter.js +0 -158
  53. package/dist/providers/gemini-cli/adapter.js.map +0 -1
  54. package/dist/providers/gemini-cli/hooks.js +0 -128
  55. package/dist/providers/gemini-cli/hooks.js.map +0 -1
  56. package/dist/providers/gemini-cli/index.js +0 -39
  57. package/dist/providers/gemini-cli/index.js.map +0 -1
  58. package/dist/providers/gemini-cli/install.js +0 -124
  59. package/dist/providers/gemini-cli/install.js.map +0 -1
  60. package/dist/providers/kimi/adapter.js +0 -145
  61. package/dist/providers/kimi/adapter.js.map +0 -1
  62. package/dist/providers/kimi/hooks.js +0 -79
  63. package/dist/providers/kimi/hooks.js.map +0 -1
  64. package/dist/providers/kimi/index.js +0 -39
  65. package/dist/providers/kimi/index.js.map +0 -1
  66. package/dist/providers/kimi/install.js +0 -124
  67. package/dist/providers/kimi/install.js.map +0 -1
  68. package/dist/providers/openai-sdk/adapter.js +0 -120
  69. package/dist/providers/openai-sdk/adapter.js.map +0 -1
  70. package/dist/providers/openai-sdk/guardrails.js +0 -139
  71. package/dist/providers/openai-sdk/guardrails.js.map +0 -1
  72. package/dist/providers/openai-sdk/handoff.js +0 -124
  73. package/dist/providers/openai-sdk/handoff.js.map +0 -1
  74. package/dist/providers/openai-sdk/index.js +0 -39
  75. package/dist/providers/openai-sdk/index.js.map +0 -1
  76. package/dist/providers/openai-sdk/install.js +0 -120
  77. package/dist/providers/openai-sdk/install.js.map +0 -1
  78. package/dist/providers/openai-sdk/spawn.js +0 -214
  79. package/dist/providers/openai-sdk/spawn.js.map +0 -1
  80. package/dist/providers/openai-sdk/tracing.js +0 -157
  81. package/dist/providers/openai-sdk/tracing.js.map +0 -1
  82. package/dist/providers/opencode/adapter.js +0 -166
  83. package/dist/providers/opencode/adapter.js.map +0 -1
  84. package/dist/providers/opencode/hooks.js +0 -206
  85. package/dist/providers/opencode/hooks.js.map +0 -1
  86. package/dist/providers/opencode/index.js +0 -37
  87. package/dist/providers/opencode/index.js.map +0 -1
  88. package/dist/providers/opencode/install.js +0 -115
  89. package/dist/providers/opencode/install.js.map +0 -1
  90. package/dist/providers/opencode/spawn.js +0 -256
  91. package/dist/providers/opencode/spawn.js.map +0 -1
  92. package/dist/providers/pi/adapter.js +0 -220
  93. package/dist/providers/pi/adapter.js.map +0 -1
  94. package/dist/providers/pi/hooks.js +0 -223
  95. package/dist/providers/pi/hooks.js.map +0 -1
  96. package/dist/providers/pi/index.js +0 -38
  97. package/dist/providers/pi/index.js.map +0 -1
  98. package/dist/providers/pi/install.js +0 -175
  99. package/dist/providers/pi/install.js.map +0 -1
  100. package/dist/providers/pi/spawn.js +0 -187
  101. package/dist/providers/pi/spawn.js.map +0 -1
  102. package/dist/providers/shared/conduit-trace-writer.js +0 -65
  103. package/dist/providers/shared/conduit-trace-writer.js.map +0 -1
  104. package/dist/providers/shared/sdk-result-mapper.js +0 -54
  105. package/dist/providers/shared/sdk-result-mapper.js.map +0 -1
  106. package/dist/providers/shared/transcript-reader.js +0 -124
  107. package/dist/providers/shared/transcript-reader.js.map +0 -1
  108. package/dist/registry.js +0 -92
  109. package/dist/registry.js.map +0 -1
@@ -1,65 +0,0 @@
1
- /**
2
- * Shared conduit trace writer for SDK-backed providers.
3
- *
4
- * Writes structured span events to conduit.db via the CLEO transport layer.
5
- * Both T581 (Claude SDK) and T582 (OpenAI SDK) use this module so the
6
- * conduit write path stays DRY.
7
- *
8
- * The writer is fire-and-forget: if conduit is unavailable, write failures are
9
- * silently swallowed so that missing tracing never breaks agent execution.
10
- *
11
- * @task T582
12
- */
13
- /**
14
- * Write a single span event to conduit via `cleo` CLI transport.
15
- *
16
- * Falls back gracefully when conduit is unavailable. All errors are caught
17
- * and returned in the result rather than thrown.
18
- *
19
- * @param event - The span event to persist.
20
- * @returns Result indicating whether the write succeeded.
21
- *
22
- * @remarks
23
- * The current implementation writes to conduit using the `cleo conduit send`
24
- * CLI command. This keeps the trace writer free of direct DB dependencies and
25
- * consistent with the no-direct-SQLite rule (ADR).
26
- *
27
- * When conduit grows a native TS API this writer can be updated without
28
- * changing caller code.
29
- */
30
- export async function writeSpanToConduit(event) {
31
- try {
32
- const { exec } = await import('node:child_process');
33
- const { promisify } = await import('node:util');
34
- const execAsync = promisify(exec);
35
- const payload = JSON.stringify({
36
- type: 'agent_span',
37
- version: '1',
38
- ...event,
39
- });
40
- // Use the CLEO conduit send command which handles DB access via the
41
- // business logic layer (no direct SQLite per ADR-013 §9).
42
- await execAsync(`cleo conduit send --type agent_span --payload ${JSON.stringify(payload)}`);
43
- return { written: true };
44
- }
45
- catch (err) {
46
- const message = err instanceof Error ? err.message : String(err);
47
- return { written: false, error: message };
48
- }
49
- }
50
- /**
51
- * Write multiple span events to conduit, swallowing individual write failures.
52
- *
53
- * @param events - Array of span events to persist.
54
- * @returns Number of events successfully written.
55
- */
56
- export async function writeSpanBatchToConduit(events) {
57
- let written = 0;
58
- for (const event of events) {
59
- const result = await writeSpanToConduit(event);
60
- if (result.written)
61
- written++;
62
- }
63
- return written;
64
- }
65
- //# sourceMappingURL=conduit-trace-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conduit-trace-writer.js","sourceRoot":"","sources":["../../../src/providers/shared/conduit-trace-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAqCH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAuB;IAC9D,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACpD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,GAAG;YACZ,GAAG,KAAK;SACT,CAAC,CAAC;QAEH,oEAAoE;QACpE,0DAA0D;QAC1D,MAAM,SAAS,CAAC,iDAAiD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAA0B;IACtE,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,54 +0,0 @@
1
- /**
2
- * Shared SDK result mapper for CLEO spawn providers.
3
- *
4
- * Normalises provider-specific run results (OpenAI Agents SDK, Claude Agent SDK)
5
- * into the canonical {@link SpawnResult} contract used by CLEO orchestration.
6
- *
7
- * Both T581 (Claude SDK) and T582 (OpenAI SDK) import from this module so the
8
- * mapping logic stays DRY.
9
- *
10
- * @task T582
11
- */
12
- /**
13
- * Map a raw SDK run outcome to the canonical CLEO {@link SpawnResult}.
14
- *
15
- * @param instanceId - Unique identifier for this spawn instance.
16
- * @param taskId - CLEO task ID associated with the run.
17
- * @param providerId - Identifier of the provider that performed the run (e.g. `'openai-sdk'`).
18
- * @param startTime - ISO timestamp captured just before the run was started.
19
- * @param outcome - Normalised run outcome from the SDK provider.
20
- * @returns A fully-populated {@link SpawnResult} ready for return from `spawn()`.
21
- *
22
- * @example
23
- * ```typescript
24
- * const result = mapSdkRunOutcome('openai-sdk-123', 'T582', 'openai-sdk', start, {
25
- * finalOutput: 'Done',
26
- * succeeded: true,
27
- * });
28
- * // result.status === 'completed'
29
- * ```
30
- */
31
- export function mapSdkRunOutcome(instanceId, taskId, providerId, startTime, outcome) {
32
- const endTime = new Date().toISOString();
33
- if (outcome.succeeded) {
34
- return {
35
- instanceId,
36
- taskId,
37
- providerId,
38
- status: 'completed',
39
- output: outcome.finalOutput,
40
- startTime,
41
- endTime,
42
- };
43
- }
44
- return {
45
- instanceId,
46
- taskId,
47
- providerId,
48
- status: 'failed',
49
- startTime,
50
- endTime,
51
- error: outcome.errorMessage ?? 'SDK run failed without a message',
52
- };
53
- }
54
- //# sourceMappingURL=sdk-result-mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdk-result-mapper.js","sourceRoot":"","sources":["../../../src/providers/shared/sdk-result-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuBH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAkB,EAClB,MAAc,EACd,UAAkB,EAClB,SAAiB,EACjB,OAAyB;IAEzB,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEzC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO;YACL,UAAU;YACV,MAAM;YACN,UAAU;YACV,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,OAAO,CAAC,WAAW;YAC3B,SAAS;YACT,OAAO;SACR,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU;QACV,MAAM;QACN,UAAU;QACV,MAAM,EAAE,QAAQ;QAChB,SAAS;QACT,OAAO;QACP,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,kCAAkC;KAClE,CAAC;AACJ,CAAC"}
@@ -1,124 +0,0 @@
1
- /**
2
- * Shared transcript-reading utility for provider hook adapters.
3
- *
4
- * Several providers (Gemini CLI, Codex CLI) store session data in a
5
- * flat directory of JSON/JSONL files using the same role/content schema.
6
- * This module centralises the "find most-recent file, parse turns"
7
- * logic to avoid duplicating it in each hook provider.
8
- *
9
- * Usage:
10
- * ```ts
11
- * import { readLatestTranscript } from '../shared/transcript-reader.js';
12
- *
13
- * async getTranscript(_sessionId: string, _projectDir: string) {
14
- * return readLatestTranscript(join(homedir(), '.gemini'));
15
- * }
16
- * ```
17
- *
18
- * @task T161
19
- * @epic T134
20
- */
21
- import { readdir, readFile } from 'node:fs/promises';
22
- import { join } from 'node:path';
23
- // ---------------------------------------------------------------------------
24
- // Helpers
25
- // ---------------------------------------------------------------------------
26
- /**
27
- * Parse a raw JSONL or JSON session file into an array of transcript turns.
28
- *
29
- * Lines that are not valid JSON, or that lack a string `role` and string
30
- * `content`, are silently skipped.
31
- *
32
- * @param raw - Raw file contents (UTF-8 string).
33
- * @returns Array of `{ role, content }` pairs, in file order.
34
- */
35
- function parseTranscriptLines(raw) {
36
- const turns = [];
37
- const lines = raw.split('\n').filter((l) => l.trim());
38
- for (const line of lines) {
39
- try {
40
- const entry = JSON.parse(line);
41
- const role = entry.role;
42
- const content = entry.content;
43
- if (typeof role === 'string' && typeof content === 'string') {
44
- turns.push({ role, content });
45
- }
46
- }
47
- catch {
48
- // Skip malformed lines
49
- }
50
- }
51
- return turns;
52
- }
53
- // ---------------------------------------------------------------------------
54
- // Public API
55
- // ---------------------------------------------------------------------------
56
- /**
57
- * Read the most recent JSON or JSONL session file from `providerDir` and
58
- * return its contents as a flat transcript string.
59
- *
60
- * Files are sorted in descending order by filename — this works naturally
61
- * for providers that embed timestamps in filenames. The most recently named
62
- * file is read first.
63
- *
64
- * Returns `null` when:
65
- * - `providerDir` does not exist or cannot be read
66
- * - No JSON/JSONL files are present
67
- * - The most recent file contains no parseable turns
68
- *
69
- * @remarks
70
- * This utility is shared by Gemini CLI and Codex CLI hook providers which
71
- * both store session data in the same flat JSON/JSONL format. Only the
72
- * most recent file is read to keep memory usage bounded.
73
- *
74
- * @param providerDir - Absolute path to the provider's session directory
75
- * (e.g. `~/.gemini` or `~/.codex`).
76
- * @returns A plain-text transcript with lines of the form `role: content`,
77
- * or `null` if no transcript could be extracted.
78
- *
79
- * @example
80
- * ```typescript
81
- * import { readLatestTranscript } from '../shared/transcript-reader.js';
82
- *
83
- * const transcript = await readLatestTranscript('/home/user/.gemini');
84
- * if (transcript) {
85
- * console.log(transcript);
86
- * }
87
- * ```
88
- *
89
- * @task T161
90
- * @epic T134
91
- */
92
- export async function readLatestTranscript(providerDir) {
93
- let allFiles = [];
94
- try {
95
- const entries = await readdir(providerDir, { withFileTypes: true });
96
- for (const entry of entries) {
97
- if (!entry.isFile())
98
- continue;
99
- const name = entry.name;
100
- if (name.endsWith('.json') || name.endsWith('.jsonl')) {
101
- allFiles.push(join(providerDir, name));
102
- }
103
- }
104
- }
105
- catch {
106
- return null;
107
- }
108
- if (allFiles.length === 0)
109
- return null;
110
- // Sort descending — timestamps in filenames sort naturally
111
- allFiles = allFiles.sort((a, b) => b.localeCompare(a));
112
- const mostRecent = allFiles[0];
113
- if (!mostRecent)
114
- return null;
115
- try {
116
- const raw = await readFile(mostRecent, 'utf-8');
117
- const turns = parseTranscriptLines(raw);
118
- return turns.length > 0 ? turns.map((t) => `${t.role}: ${t.content}`).join('\n') : null;
119
- }
120
- catch {
121
- return null;
122
- }
123
- }
124
- //# sourceMappingURL=transcript-reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transcript-reader.js","sourceRoot":"","sources":["../../../src/providers/shared/transcript-reader.ts"],"names":[],"mappings":"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"}
package/dist/registry.js DELETED
@@ -1,92 +0,0 @@
1
- /**
2
- * Adapter registry — discovers and provides access to provider manifests.
3
- *
4
- * Scans the providers/ directory for manifest.json files and returns
5
- * the discovered adapter manifests for use by AdapterManager.
6
- *
7
- * @task T5240
8
- */
9
- import { readFileSync } from 'node:fs';
10
- import { dirname, join, resolve } from 'node:path';
11
- import { fileURLToPath } from 'node:url';
12
- /** Known provider IDs bundled with @cleocode/adapters. */
13
- const PROVIDER_IDS = ['claude-code', 'opencode', 'cursor', 'pi'];
14
- /**
15
- * Get the manifests for all bundled provider adapters.
16
- *
17
- * @remarks
18
- * Scans the known provider directories for `manifest.json` files.
19
- * Providers whose manifests cannot be loaded (missing or malformed)
20
- * are silently skipped.
21
- *
22
- * @returns Array of adapter manifests for successfully loaded providers
23
- *
24
- * @example
25
- * ```typescript
26
- * import { getProviderManifests } from '@cleocode/adapters';
27
- *
28
- * const manifests = getProviderManifests();
29
- * for (const m of manifests) {
30
- * console.log(`${m.id}: ${m.name} v${m.version}`);
31
- * }
32
- * ```
33
- */
34
- export function getProviderManifests() {
35
- const manifests = [];
36
- const baseDir = resolve(dirname(fileURLToPath(import.meta.url)), 'providers');
37
- for (const providerId of PROVIDER_IDS) {
38
- try {
39
- const manifestPath = join(baseDir, providerId, 'manifest.json');
40
- const raw = readFileSync(manifestPath, 'utf-8');
41
- manifests.push(JSON.parse(raw));
42
- }
43
- catch {
44
- // Skip providers whose manifests cannot be loaded
45
- }
46
- }
47
- return manifests;
48
- }
49
- /**
50
- * Discover all available provider adapters.
51
- *
52
- * Returns a map of provider ID to adapter factory function.
53
- *
54
- * @remarks
55
- * Each factory lazily imports the provider module and constructs a new
56
- * adapter instance. This avoids loading all provider code upfront and
57
- * keeps startup fast.
58
- *
59
- * @returns Map of provider ID to async factory function that creates an adapter instance
60
- *
61
- * @example
62
- * ```typescript
63
- * import { discoverProviders } from '@cleocode/adapters';
64
- *
65
- * const providers = await discoverProviders();
66
- * const factory = providers.get('claude-code');
67
- * if (factory) {
68
- * const adapter = await factory();
69
- * }
70
- * ```
71
- */
72
- export async function discoverProviders() {
73
- const providers = new Map();
74
- providers.set('claude-code', async () => {
75
- const { ClaudeCodeAdapter } = await import('./providers/claude-code/index.js');
76
- return new ClaudeCodeAdapter();
77
- });
78
- providers.set('opencode', async () => {
79
- const { OpenCodeAdapter } = await import('./providers/opencode/index.js');
80
- return new OpenCodeAdapter();
81
- });
82
- providers.set('cursor', async () => {
83
- const { CursorAdapter } = await import('./providers/cursor/index.js');
84
- return new CursorAdapter();
85
- });
86
- providers.set('pi', async () => {
87
- const { PiAdapter } = await import('./providers/pi/index.js');
88
- return new PiAdapter();
89
- });
90
- return providers;
91
- }
92
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAqCzC,0DAA0D;AAC1D,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAU,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,SAAS,GAAsB,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAE9E,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;YAChE,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAChD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkC,CAAC;IAE5D,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;QAC/E,OAAO,IAAI,iBAAiB,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAC1E,OAAO,IAAI,eAAe,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QACtE,OAAO,IAAI,aAAa,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAC9D,OAAO,IAAI,SAAS,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC"}