@diff-review-system/drs 2.2.0 → 3.0.0-rc.1

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 (267) hide show
  1. package/README.md +228 -92
  2. package/dist/ci/runner.d.ts.map +1 -1
  3. package/dist/ci/runner.js +20 -22
  4. package/dist/ci/runner.js.map +1 -1
  5. package/dist/cli/describe-mr.d.ts.map +1 -1
  6. package/dist/cli/describe-mr.js +39 -20
  7. package/dist/cli/describe-mr.js.map +1 -1
  8. package/dist/cli/describe-pr.d.ts.map +1 -1
  9. package/dist/cli/describe-pr.js +39 -20
  10. package/dist/cli/describe-pr.js.map +1 -1
  11. package/dist/cli/index.js +37 -7
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/cli/init.d.ts.map +1 -1
  14. package/dist/cli/init.js +30 -2
  15. package/dist/cli/init.js.map +1 -1
  16. package/dist/cli/post-comments.d.ts.map +1 -1
  17. package/dist/cli/post-comments.js +5 -5
  18. package/dist/cli/post-comments.js.map +1 -1
  19. package/dist/cli/review-local.d.ts.map +1 -1
  20. package/dist/cli/review-local.integration.test.d.ts +2 -0
  21. package/dist/cli/review-local.integration.test.d.ts.map +1 -0
  22. package/dist/cli/review-local.integration.test.js +343 -0
  23. package/dist/cli/review-local.integration.test.js.map +1 -0
  24. package/dist/cli/review-local.js +5 -4
  25. package/dist/cli/review-local.js.map +1 -1
  26. package/dist/cli/review-local.live.e2e.test.d.ts +2 -0
  27. package/dist/cli/review-local.live.e2e.test.d.ts.map +1 -0
  28. package/dist/cli/review-local.live.e2e.test.js +154 -0
  29. package/dist/cli/review-local.live.e2e.test.js.map +1 -0
  30. package/dist/cli/review-local.test.d.ts +2 -0
  31. package/dist/cli/review-local.test.d.ts.map +1 -0
  32. package/dist/cli/review-local.test.js +164 -0
  33. package/dist/cli/review-local.test.js.map +1 -0
  34. package/dist/cli/review-mr.d.ts +2 -1
  35. package/dist/cli/review-mr.d.ts.map +1 -1
  36. package/dist/cli/review-mr.js +93 -17
  37. package/dist/cli/review-mr.js.map +1 -1
  38. package/dist/cli/review-mr.test.d.ts +2 -0
  39. package/dist/cli/review-mr.test.d.ts.map +1 -0
  40. package/dist/cli/review-mr.test.js +142 -0
  41. package/dist/cli/review-mr.test.js.map +1 -0
  42. package/dist/cli/review-pr.d.ts +2 -1
  43. package/dist/cli/review-pr.d.ts.map +1 -1
  44. package/dist/cli/review-pr.js +97 -13
  45. package/dist/cli/review-pr.js.map +1 -1
  46. package/dist/cli/review-pr.test.d.ts +2 -0
  47. package/dist/cli/review-pr.test.d.ts.map +1 -0
  48. package/dist/cli/review-pr.test.js +137 -0
  49. package/dist/cli/review-pr.test.js.map +1 -0
  50. package/dist/cli/show-changes.js +4 -4
  51. package/dist/github/client.d.ts +4 -0
  52. package/dist/github/client.d.ts.map +1 -1
  53. package/dist/github/client.js +10 -0
  54. package/dist/github/client.js.map +1 -1
  55. package/dist/github/platform-adapter.d.ts +1 -0
  56. package/dist/github/platform-adapter.d.ts.map +1 -1
  57. package/dist/github/platform-adapter.js +6 -2
  58. package/dist/github/platform-adapter.js.map +1 -1
  59. package/dist/gitlab/client.d.ts +4 -0
  60. package/dist/gitlab/client.d.ts.map +1 -1
  61. package/dist/gitlab/client.js +7 -1
  62. package/dist/gitlab/client.js.map +1 -1
  63. package/dist/gitlab/platform-adapter.d.ts +1 -0
  64. package/dist/gitlab/platform-adapter.d.ts.map +1 -1
  65. package/dist/gitlab/platform-adapter.js +3 -0
  66. package/dist/gitlab/platform-adapter.js.map +1 -1
  67. package/dist/lib/code-quality-report.js +1 -1
  68. package/dist/lib/comment-formatter.d.ts +9 -1
  69. package/dist/lib/comment-formatter.d.ts.map +1 -1
  70. package/dist/lib/comment-formatter.js +52 -1
  71. package/dist/lib/comment-formatter.js.map +1 -1
  72. package/dist/lib/comment-formatter.test.js +70 -1
  73. package/dist/lib/comment-formatter.test.js.map +1 -1
  74. package/dist/lib/comment-manager.d.ts +5 -0
  75. package/dist/lib/comment-manager.d.ts.map +1 -1
  76. package/dist/lib/comment-manager.js +11 -2
  77. package/dist/lib/comment-manager.js.map +1 -1
  78. package/dist/lib/comment-manager.test.js +63 -1
  79. package/dist/lib/comment-manager.test.js.map +1 -1
  80. package/dist/lib/comment-poster.d.ts +2 -1
  81. package/dist/lib/comment-poster.d.ts.map +1 -1
  82. package/dist/lib/comment-poster.js +2 -2
  83. package/dist/lib/comment-poster.js.map +1 -1
  84. package/dist/lib/comment-poster.test.js +27 -11
  85. package/dist/lib/comment-poster.test.js.map +1 -1
  86. package/dist/lib/config-model-overrides.test.d.ts +1 -1
  87. package/dist/lib/config-model-overrides.test.js +2 -2
  88. package/dist/lib/config-model-overrides.test.js.map +1 -1
  89. package/dist/lib/config.d.ts +36 -7
  90. package/dist/lib/config.d.ts.map +1 -1
  91. package/dist/lib/config.js +39 -13
  92. package/dist/lib/config.js.map +1 -1
  93. package/dist/lib/config.test.js +16 -0
  94. package/dist/lib/config.test.js.map +1 -1
  95. package/dist/lib/context-compression.d.ts +27 -1
  96. package/dist/lib/context-compression.d.ts.map +1 -1
  97. package/dist/lib/context-compression.js +106 -4
  98. package/dist/lib/context-compression.js.map +1 -1
  99. package/dist/lib/context-compression.test.js +305 -1
  100. package/dist/lib/context-compression.test.js.map +1 -1
  101. package/dist/lib/context-loader.d.ts +3 -2
  102. package/dist/lib/context-loader.d.ts.map +1 -1
  103. package/dist/lib/context-loader.js +11 -5
  104. package/dist/lib/context-loader.js.map +1 -1
  105. package/dist/lib/description-executor.d.ts +19 -2
  106. package/dist/lib/description-executor.d.ts.map +1 -1
  107. package/dist/lib/description-executor.js +52 -21
  108. package/dist/lib/description-executor.js.map +1 -1
  109. package/dist/lib/description-executor.test.d.ts +2 -0
  110. package/dist/lib/description-executor.test.d.ts.map +1 -0
  111. package/dist/lib/description-executor.test.js +120 -0
  112. package/dist/lib/description-executor.test.js.map +1 -0
  113. package/dist/lib/description-formatter.d.ts +8 -3
  114. package/dist/lib/description-formatter.d.ts.map +1 -1
  115. package/dist/lib/description-formatter.js +88 -13
  116. package/dist/lib/description-formatter.js.map +1 -1
  117. package/dist/lib/description-formatter.test.d.ts +2 -0
  118. package/dist/lib/description-formatter.test.d.ts.map +1 -0
  119. package/dist/lib/description-formatter.test.js +57 -0
  120. package/dist/lib/description-formatter.test.js.map +1 -0
  121. package/dist/lib/diff-parser.test.d.ts +2 -0
  122. package/dist/lib/diff-parser.test.d.ts.map +1 -0
  123. package/dist/lib/diff-parser.test.js +335 -0
  124. package/dist/lib/diff-parser.test.js.map +1 -0
  125. package/dist/lib/error-comment-poster.d.ts +19 -0
  126. package/dist/lib/error-comment-poster.d.ts.map +1 -0
  127. package/dist/lib/error-comment-poster.js +57 -0
  128. package/dist/lib/error-comment-poster.js.map +1 -0
  129. package/dist/lib/error-comment-poster.test.d.ts +2 -0
  130. package/dist/lib/error-comment-poster.test.d.ts.map +1 -0
  131. package/dist/lib/error-comment-poster.test.js +128 -0
  132. package/dist/lib/error-comment-poster.test.js.map +1 -0
  133. package/dist/lib/exit.d.ts +35 -0
  134. package/dist/lib/exit.d.ts.map +1 -0
  135. package/dist/lib/exit.js +53 -0
  136. package/dist/lib/exit.js.map +1 -0
  137. package/dist/lib/exit.test.d.ts +2 -0
  138. package/dist/lib/exit.test.d.ts.map +1 -0
  139. package/dist/lib/exit.test.js +120 -0
  140. package/dist/lib/exit.test.js.map +1 -0
  141. package/dist/lib/format-utils.d.ts +3 -0
  142. package/dist/lib/format-utils.d.ts.map +1 -0
  143. package/dist/lib/format-utils.js +7 -0
  144. package/dist/lib/format-utils.js.map +1 -0
  145. package/dist/lib/json-output.d.ts +4 -1
  146. package/dist/lib/json-output.d.ts.map +1 -1
  147. package/dist/lib/json-output.js +2 -1
  148. package/dist/lib/json-output.js.map +1 -1
  149. package/dist/lib/json-output.test.d.ts +2 -0
  150. package/dist/lib/json-output.test.d.ts.map +1 -0
  151. package/dist/lib/json-output.test.js +135 -0
  152. package/dist/lib/json-output.test.js.map +1 -0
  153. package/dist/lib/logger.d.ts +130 -0
  154. package/dist/lib/logger.d.ts.map +1 -0
  155. package/dist/lib/logger.js +233 -0
  156. package/dist/lib/logger.js.map +1 -0
  157. package/dist/lib/logger.test.d.ts +2 -0
  158. package/dist/lib/logger.test.d.ts.map +1 -0
  159. package/dist/lib/logger.test.js +324 -0
  160. package/dist/lib/logger.test.js.map +1 -0
  161. package/dist/lib/platform-client.d.ts +4 -0
  162. package/dist/lib/platform-client.d.ts.map +1 -1
  163. package/dist/lib/position-validator.test.d.ts +2 -0
  164. package/dist/lib/position-validator.test.d.ts.map +1 -0
  165. package/dist/lib/position-validator.test.js +128 -0
  166. package/dist/lib/position-validator.test.js.map +1 -0
  167. package/dist/lib/repository-validator.js +1 -1
  168. package/dist/lib/review-core.d.ts +9 -4
  169. package/dist/lib/review-core.d.ts.map +1 -1
  170. package/dist/lib/review-core.js +230 -48
  171. package/dist/lib/review-core.js.map +1 -1
  172. package/dist/lib/review-core.test.js +78 -30
  173. package/dist/lib/review-core.test.js.map +1 -1
  174. package/dist/lib/review-orchestrator.d.ts +12 -7
  175. package/dist/lib/review-orchestrator.d.ts.map +1 -1
  176. package/dist/lib/review-orchestrator.js +78 -22
  177. package/dist/lib/review-orchestrator.js.map +1 -1
  178. package/dist/lib/review-orchestrator.test.js +160 -42
  179. package/dist/lib/review-orchestrator.test.js.map +1 -1
  180. package/dist/lib/review-parser.test.d.ts +2 -0
  181. package/dist/lib/review-parser.test.d.ts.map +1 -0
  182. package/dist/lib/review-parser.test.js +130 -0
  183. package/dist/lib/review-parser.test.js.map +1 -0
  184. package/dist/lib/review-usage.d.ts +32 -0
  185. package/dist/lib/review-usage.d.ts.map +1 -0
  186. package/dist/lib/review-usage.js +72 -0
  187. package/dist/lib/review-usage.js.map +1 -0
  188. package/dist/lib/review-usage.test.d.ts +2 -0
  189. package/dist/lib/review-usage.test.d.ts.map +1 -0
  190. package/dist/lib/review-usage.test.js +83 -0
  191. package/dist/lib/review-usage.test.js.map +1 -0
  192. package/dist/lib/unified-review-executor.d.ts +8 -2
  193. package/dist/lib/unified-review-executor.d.ts.map +1 -1
  194. package/dist/lib/unified-review-executor.js +111 -66
  195. package/dist/lib/unified-review-executor.js.map +1 -1
  196. package/dist/lib/unified-review-executor.test.js +138 -16
  197. package/dist/lib/unified-review-executor.test.js.map +1 -1
  198. package/dist/lib/write-json-output.test.d.ts +2 -0
  199. package/dist/lib/write-json-output.test.d.ts.map +1 -0
  200. package/dist/lib/write-json-output.test.js +259 -0
  201. package/dist/lib/write-json-output.test.js.map +1 -0
  202. package/dist/pi/sdk.d.ts +94 -0
  203. package/dist/pi/sdk.d.ts.map +1 -0
  204. package/dist/pi/sdk.js +486 -0
  205. package/dist/pi/sdk.js.map +1 -0
  206. package/dist/pi/sdk.test.d.ts +2 -0
  207. package/dist/pi/sdk.test.d.ts.map +1 -0
  208. package/dist/pi/sdk.test.js +331 -0
  209. package/dist/pi/sdk.test.js.map +1 -0
  210. package/dist/{opencode → runtime}/agent-loader.d.ts +7 -5
  211. package/dist/runtime/agent-loader.d.ts.map +1 -0
  212. package/dist/{opencode → runtime}/agent-loader.js +24 -19
  213. package/dist/runtime/agent-loader.js.map +1 -0
  214. package/dist/runtime/agent-loader.test.d.ts +2 -0
  215. package/dist/runtime/agent-loader.test.d.ts.map +1 -0
  216. package/dist/runtime/agent-loader.test.js +280 -0
  217. package/dist/runtime/agent-loader.test.js.map +1 -0
  218. package/dist/runtime/built-in-paths.d.ts +2 -0
  219. package/dist/runtime/built-in-paths.d.ts.map +1 -0
  220. package/dist/runtime/built-in-paths.js +14 -0
  221. package/dist/runtime/built-in-paths.js.map +1 -0
  222. package/dist/runtime/client.d.ts +107 -0
  223. package/dist/runtime/client.d.ts.map +1 -0
  224. package/dist/runtime/client.js +486 -0
  225. package/dist/runtime/client.js.map +1 -0
  226. package/dist/{opencode → runtime}/client.test.d.ts.map +1 -1
  227. package/dist/runtime/client.test.js +392 -0
  228. package/dist/runtime/client.test.js.map +1 -0
  229. package/dist/runtime/path-config.d.ts +8 -0
  230. package/dist/runtime/path-config.d.ts.map +1 -0
  231. package/dist/runtime/path-config.js +68 -0
  232. package/dist/runtime/path-config.js.map +1 -0
  233. package/dist/runtime/path-config.test.d.ts +2 -0
  234. package/dist/runtime/path-config.test.d.ts.map +1 -0
  235. package/dist/runtime/path-config.test.js +103 -0
  236. package/dist/runtime/path-config.test.js.map +1 -0
  237. package/package.json +5 -5
  238. package/.opencode/opencode.jsonc +0 -15
  239. package/.opencode/tool/write_json_output.ts +0 -24
  240. package/dist/opencode/agent-loader.d.ts.map +0 -1
  241. package/dist/opencode/agent-loader.js.map +0 -1
  242. package/dist/opencode/agent-skill-overlay.d.ts +0 -11
  243. package/dist/opencode/agent-skill-overlay.d.ts.map +0 -1
  244. package/dist/opencode/agent-skill-overlay.js +0 -164
  245. package/dist/opencode/agent-skill-overlay.js.map +0 -1
  246. package/dist/opencode/client.d.ts +0 -91
  247. package/dist/opencode/client.d.ts.map +0 -1
  248. package/dist/opencode/client.js +0 -463
  249. package/dist/opencode/client.js.map +0 -1
  250. package/dist/opencode/client.test.js +0 -317
  251. package/dist/opencode/client.test.js.map +0 -1
  252. package/dist/opencode/opencode-paths.d.ts +0 -2
  253. package/dist/opencode/opencode-paths.d.ts.map +0 -1
  254. package/dist/opencode/opencode-paths.js +0 -7
  255. package/dist/opencode/opencode-paths.js.map +0 -1
  256. package/dist/opencode/skill-loader.d.ts +0 -6
  257. package/dist/opencode/skill-loader.d.ts.map +0 -1
  258. package/dist/opencode/skill-loader.js +0 -36
  259. package/dist/opencode/skill-loader.js.map +0 -1
  260. /package/{.opencode/agent → .pi/agents}/describe/pr-describer.md +0 -0
  261. /package/{.opencode/agent → .pi/agents}/review/documentation.md +0 -0
  262. /package/{.opencode/agent → .pi/agents}/review/performance.md +0 -0
  263. /package/{.opencode/agent → .pi/agents}/review/quality.md +0 -0
  264. /package/{.opencode/agent → .pi/agents}/review/security.md +0 -0
  265. /package/{.opencode/agent → .pi/agents}/review/style.md +0 -0
  266. /package/{.opencode/agent → .pi/agents}/review/unified-reviewer.md +0 -0
  267. /package/dist/{opencode → runtime}/client.test.d.ts +0 -0
@@ -0,0 +1,486 @@
1
+ /**
2
+ * Agent runtime client wrapper for DRS with in-process server support.
3
+ *
4
+ * This client maintains the existing internal interface used by review orchestration
5
+ * while delegating SDK calls through the Pi integration adapter in src/pi/sdk.ts.
6
+ */
7
+ import { getDefaultSkills, normalizeAgentConfig } from '../lib/config.js';
8
+ import { getLogger } from '../lib/logger.js';
9
+ import { loadReviewAgents } from './agent-loader.js';
10
+ import { resolveReviewPaths } from './path-config.js';
11
+ import { createPiInProcessServer } from '../pi/sdk.js';
12
+ function mapPiRuntimeError(operation, error) {
13
+ const message = error instanceof Error ? error.message : String(error);
14
+ const normalized = message.toLowerCase();
15
+ const connectionError = normalized.includes('fetch failed') ||
16
+ normalized.includes('econnrefused') ||
17
+ normalized.includes('connection refused');
18
+ if (connectionError) {
19
+ return new Error(`Failed to ${operation}: ${message}. Verify local Pi runtime setup and model provider connectivity.`);
20
+ }
21
+ const authError = normalized.includes('unauthorized') ||
22
+ normalized.includes('authentication') ||
23
+ normalized.includes('api key') ||
24
+ normalized.includes('401');
25
+ if (authError) {
26
+ return new Error(`Failed to ${operation}: Authentication failed with the configured model provider. Verify API keys and provider settings. (Details: ${message})`);
27
+ }
28
+ const modelError = normalized.includes('failed to resolve model') ||
29
+ (normalized.includes('model') && normalized.includes('not found'));
30
+ if (modelError) {
31
+ return new Error(`Failed to ${operation}: Model configuration is invalid or unavailable. Check configured provider/model names and overrides. (Details: ${message})`);
32
+ }
33
+ return new Error(`Failed to ${operation}: ${message}`);
34
+ }
35
+ /**
36
+ * Runtime client wrapper for DRS backed by in-process Pi sessions.
37
+ */
38
+ export class RuntimeClient {
39
+ serverUrl;
40
+ directory;
41
+ inProcessServer;
42
+ client;
43
+ config;
44
+ constructor(config) {
45
+ this.directory = config.directory;
46
+ this.config = config;
47
+ }
48
+ getModelContextWindow(modelId) {
49
+ return this.inProcessServer?.client.getModelContextWindow?.(modelId);
50
+ }
51
+ getMinContextWindow(modelIds) {
52
+ let min;
53
+ for (const id of modelIds) {
54
+ const w = this.getModelContextWindow(id);
55
+ if (w !== undefined) {
56
+ min = min === undefined ? w : Math.min(min, w);
57
+ }
58
+ }
59
+ return min;
60
+ }
61
+ getConfiguredModelPricing(provider, model) {
62
+ const pricing = this.config.config?.pricing?.models;
63
+ if (!pricing) {
64
+ return undefined;
65
+ }
66
+ const fullModelId = provider && model ? `${provider}/${model}` : undefined;
67
+ return ((fullModelId ? pricing[fullModelId] : undefined) ??
68
+ (model ? pricing[model] : undefined) ??
69
+ undefined);
70
+ }
71
+ estimateConfiguredCost(input, output, cacheRead, cacheWrite, provider, model) {
72
+ const pricing = this.getConfiguredModelPricing(provider, model);
73
+ if (!pricing) {
74
+ return undefined;
75
+ }
76
+ const inputCost = ((pricing.input ?? 0) / 1_000_000) * input;
77
+ const outputCost = ((pricing.output ?? 0) / 1_000_000) * output;
78
+ const cacheReadCost = ((pricing.cacheRead ?? 0) / 1_000_000) * cacheRead;
79
+ const cacheWriteCost = ((pricing.cacheWrite ?? 0) / 1_000_000) * cacheWrite;
80
+ return inputCost + outputCost + cacheReadCost + cacheWriteCost;
81
+ }
82
+ /**
83
+ * Initialize in-process Pi runtime.
84
+ */
85
+ async initialize() {
86
+ // Start server in-process
87
+ // Build runtime config programmatically from DRS config
88
+ const log = getLogger();
89
+ const projectDir = this.directory ?? process.cwd();
90
+ const reviewPaths = resolveReviewPaths(projectDir, this.config.config);
91
+ const runtimeConfig = {
92
+ // Tools available to DRS review agents
93
+ tools: {
94
+ Read: true,
95
+ Glob: true,
96
+ Grep: true,
97
+ Bash: true,
98
+ write_json_output: true,
99
+ skill: false,
100
+ Write: false,
101
+ Edit: false,
102
+ },
103
+ };
104
+ const agentConfig = {};
105
+ if (this.config.config) {
106
+ const runtimeAgents = loadReviewAgents(projectDir, this.config.config);
107
+ for (const agent of runtimeAgents) {
108
+ const runtimeEntry = {};
109
+ if (agent.model)
110
+ runtimeEntry.model = agent.model;
111
+ if (agent.prompt)
112
+ runtimeEntry.prompt = agent.prompt;
113
+ if (agent.description)
114
+ runtimeEntry.description = agent.description;
115
+ if (agent.color)
116
+ runtimeEntry.color = agent.color;
117
+ if (agent.tools)
118
+ runtimeEntry.tools = agent.tools;
119
+ if (Object.keys(runtimeEntry).length > 0) {
120
+ agentConfig[agent.name] = runtimeEntry;
121
+ }
122
+ }
123
+ if (runtimeAgents.length > 0) {
124
+ log.info(`Loaded ${runtimeAgents.length} agent definitions for Pi runtime`);
125
+ }
126
+ }
127
+ // Set log level to DEBUG when --debug flag is used
128
+ // This shows full system prompts, tools, and provider calls from Pi runtime.
129
+ if (this.config.debug) {
130
+ runtimeConfig.logLevel = 'DEBUG';
131
+ log.debug('Pi runtime debug logging enabled');
132
+ }
133
+ // Add custom provider if configured in DRS config
134
+ if (this.config.provider && Object.keys(this.config.provider).length > 0) {
135
+ // Deep clone and resolve environment variable references
136
+ runtimeConfig.provider = this.resolveEnvReferences(this.config.provider);
137
+ const providerNames = Object.keys(this.config.provider);
138
+ log.info(`Custom provider configured: ${providerNames.join(', ')}`);
139
+ }
140
+ // Apply model overrides from DRS config
141
+ if (this.config.modelOverrides && Object.keys(this.config.modelOverrides).length > 0) {
142
+ log.info('Agent model configuration:');
143
+ // Merge model overrides into agent configuration
144
+ for (const [agentName, model] of Object.entries(this.config.modelOverrides)) {
145
+ const entry = agentConfig[agentName] ?? {};
146
+ agentConfig[agentName] = {
147
+ ...entry,
148
+ model,
149
+ };
150
+ log.info(` ${agentName}: ${model}`);
151
+ }
152
+ }
153
+ if (Object.keys(agentConfig).length > 0) {
154
+ runtimeConfig.agent = agentConfig;
155
+ }
156
+ runtimeConfig.skillSearchPaths = reviewPaths.skillSearchPaths;
157
+ if (this.config.config) {
158
+ const normalizedAgents = normalizeAgentConfig(this.config.config.review.agents);
159
+ const defaultSkills = getDefaultSkills(this.config.config);
160
+ const agentSkills = normalizedAgents
161
+ .map((agent) => {
162
+ const combined = new Set([
163
+ ...defaultSkills,
164
+ ...(agent.skills ? agent.skills.map(String) : []),
165
+ ]);
166
+ const fullAgentName = agent.name.startsWith('review/')
167
+ ? agent.name
168
+ : `review/${agent.name}`;
169
+ return {
170
+ name: fullAgentName,
171
+ skills: Array.from(combined).filter((skill) => skill.length > 0),
172
+ };
173
+ })
174
+ .filter((agent) => agent.skills.length > 0);
175
+ if (agentSkills.length > 0) {
176
+ log.info('Agent skill configuration:');
177
+ for (const agent of agentSkills) {
178
+ log.info(` ${agent.name}: ${agent.skills.join(', ')}`);
179
+ }
180
+ runtimeConfig.agentSkills = Object.fromEntries(agentSkills.map((agent) => [agent.name, agent.skills]));
181
+ }
182
+ }
183
+ // Debug: print final runtime config
184
+ if (this.config.debug) {
185
+ log.debug('Final Pi runtime configuration (after env resolution):');
186
+ // Show environment variable status for custom providers
187
+ if (this.config.provider) {
188
+ log.debug('Environment variable status:');
189
+ for (const [providerName, provider] of Object.entries(this.config.provider)) {
190
+ const apiKeyConfig = provider.options?.apiKey;
191
+ if (apiKeyConfig && typeof apiKeyConfig === 'string') {
192
+ const envMatch = apiKeyConfig.match(/^\{env:([^}]+)\}$/);
193
+ if (envMatch) {
194
+ const envVarName = envMatch[1];
195
+ const envValue = process.env[envVarName];
196
+ if (envValue) {
197
+ log.debug(` ✓ ${envVarName}: SET (${envValue.substring(0, 8)}...)`);
198
+ }
199
+ else {
200
+ log.debug(` ✗ ${envVarName}: NOT SET`);
201
+ }
202
+ }
203
+ else {
204
+ log.debug(` ${providerName}: API key is hardcoded (not env var)`);
205
+ }
206
+ }
207
+ }
208
+ }
209
+ // Sanitize config to hide API keys
210
+ const sanitizedConfig = JSON.parse(JSON.stringify(runtimeConfig));
211
+ if (sanitizedConfig.provider) {
212
+ for (const providerName of Object.keys(sanitizedConfig.provider)) {
213
+ if (sanitizedConfig.provider[providerName]?.options?.apiKey) {
214
+ const apiKey = sanitizedConfig.provider[providerName].options.apiKey;
215
+ // Always redact since we've resolved env vars
216
+ if (apiKey && apiKey.length > 0) {
217
+ sanitizedConfig.provider[providerName].options.apiKey =
218
+ `***REDACTED (${apiKey.length} chars)***`;
219
+ }
220
+ else {
221
+ sanitizedConfig.provider[providerName].options.apiKey = '***EMPTY***';
222
+ }
223
+ }
224
+ }
225
+ }
226
+ if (sanitizedConfig.agent) {
227
+ for (const agentName of Object.keys(sanitizedConfig.agent)) {
228
+ const prompt = sanitizedConfig.agent[agentName]?.prompt;
229
+ if (typeof prompt === 'string' && prompt.length > 0) {
230
+ sanitizedConfig.agent[agentName].prompt = `***OMITTED (${prompt.length} chars)***`;
231
+ }
232
+ }
233
+ }
234
+ log.debug('Config being passed to Pi runtime:', undefined, sanitizedConfig);
235
+ const configuredAgentSkills = runtimeConfig.agentSkills;
236
+ if (configuredAgentSkills && Object.keys(configuredAgentSkills).length > 0) {
237
+ log.debug('Agent skills configuration:', undefined, configuredAgentSkills);
238
+ }
239
+ }
240
+ // Pi SDK reads provider-specific API keys from environment automatically
241
+ // (ANTHROPIC_API_KEY, ZHIPU_API_KEY, OPENAI_API_KEY, etc.)
242
+ this.inProcessServer = await createPiInProcessServer({
243
+ config: runtimeConfig,
244
+ });
245
+ this.client = this.inProcessServer.client;
246
+ this.serverUrl = this.inProcessServer.server.url;
247
+ }
248
+ /**
249
+ * Create a new session with an agent and send initial message
250
+ */
251
+ async createSession(options) {
252
+ if (!this.client) {
253
+ throw new Error('Runtime client not initialized. Call initialize() first.');
254
+ }
255
+ try {
256
+ // Step 1: Create empty session
257
+ const createResponse = (await this.client.session.create({
258
+ query: {
259
+ directory: this.directory,
260
+ },
261
+ }));
262
+ const sessionId = createResponse.data?.id;
263
+ if (!sessionId) {
264
+ throw new Error('Failed to get session ID from create response');
265
+ }
266
+ // Step 2: Send initial message to start the agent
267
+ await this.client.session.prompt({
268
+ path: { id: sessionId },
269
+ query: {
270
+ directory: this.directory,
271
+ },
272
+ body: {
273
+ agent: options.agent,
274
+ parts: [
275
+ {
276
+ type: 'text',
277
+ text: options.message,
278
+ },
279
+ ],
280
+ },
281
+ });
282
+ return {
283
+ id: sessionId,
284
+ agent: options.agent,
285
+ createdAt: new Date(),
286
+ };
287
+ }
288
+ catch (error) {
289
+ throw mapPiRuntimeError('create session', error);
290
+ }
291
+ }
292
+ /**
293
+ * Stream messages from a session.
294
+ *
295
+ * With the in-process Pi runtime, prompt() is synchronous so all messages
296
+ * are available immediately and the loop completes on the first iteration.
297
+ * The polling structure is retained for future remote-runtime compatibility.
298
+ */
299
+ async *streamMessages(sessionId) {
300
+ if (!this.client) {
301
+ throw new Error('Runtime client not initialized. Call initialize() first.');
302
+ }
303
+ try {
304
+ // Poll messages until agent completes
305
+ let lastMessageCount = 0;
306
+ let attempts = 0;
307
+ const maxAttempts = 60; // 60 attempts * 2s = 2 minutes max
308
+ while (attempts < maxAttempts) {
309
+ attempts++;
310
+ // Get current messages
311
+ const messagesResponse = (await this.client.session.messages({
312
+ path: { id: sessionId },
313
+ }));
314
+ const messages = messagesResponse.data ?? [];
315
+ // Yield any new messages
316
+ for (let i = lastMessageCount; i < messages.length; i++) {
317
+ const msg = messages[i];
318
+ const provider = msg.info?.provider;
319
+ const model = msg.info?.model;
320
+ const mappedUsage = msg.info?.usage
321
+ ? (() => {
322
+ const input = msg.info?.usage?.input ?? 0;
323
+ const output = msg.info?.usage?.output ?? 0;
324
+ const cacheRead = msg.info?.usage?.cacheRead ?? 0;
325
+ const cacheWrite = msg.info?.usage?.cacheWrite ?? 0;
326
+ const totalTokens = msg.info?.usage?.totalTokens ?? input + output + cacheRead + cacheWrite;
327
+ const reportedCost = msg.info?.usage?.cost?.total;
328
+ const configuredCost = this.estimateConfiguredCost(input, output, cacheRead, cacheWrite, provider, model);
329
+ const cost = reportedCost !== undefined && reportedCost > 0
330
+ ? reportedCost
331
+ : (configuredCost ?? reportedCost ?? 0);
332
+ return {
333
+ input,
334
+ output,
335
+ cacheRead,
336
+ cacheWrite,
337
+ totalTokens,
338
+ cost,
339
+ };
340
+ })()
341
+ : undefined;
342
+ yield {
343
+ id: msg.info?.id ?? 'msg-' + Date.now(),
344
+ role: (msg.info?.role ?? 'assistant'),
345
+ content: msg.parts?.map((p) => p.text ?? '').join('') ?? '',
346
+ timestamp: new Date(),
347
+ toolName: msg.info?.toolName,
348
+ toolCallId: msg.info?.toolCallId,
349
+ provider,
350
+ model,
351
+ usage: mappedUsage,
352
+ };
353
+ }
354
+ lastMessageCount = messages.length;
355
+ // Check if the last assistant message has completed
356
+ const lastAssistantMsg = [...messages].reverse().find((m) => m.info?.role === 'assistant');
357
+ if (lastAssistantMsg) {
358
+ const isComplete = lastAssistantMsg.info?.time?.completed !== undefined;
359
+ const hasError = lastAssistantMsg.info?.error !== undefined;
360
+ if (hasError) {
361
+ throw new Error(`Agent error: ${JSON.stringify(lastAssistantMsg.info?.error)}`);
362
+ }
363
+ if (isComplete) {
364
+ break;
365
+ }
366
+ }
367
+ // Wait before polling again
368
+ await new Promise((resolve) => setTimeout(resolve, 2000));
369
+ }
370
+ if (attempts >= maxAttempts) {
371
+ throw new Error(`Session ${sessionId} timed out after ${maxAttempts * 2} seconds`);
372
+ }
373
+ }
374
+ catch (error) {
375
+ throw mapPiRuntimeError('get messages', error);
376
+ }
377
+ }
378
+ /**
379
+ * Wait for session to complete and return all messages
380
+ */
381
+ async waitForCompletion(sessionId) {
382
+ const messages = [];
383
+ for await (const message of this.streamMessages(sessionId)) {
384
+ messages.push(message);
385
+ }
386
+ return messages;
387
+ }
388
+ /**
389
+ * Send a message to an existing session
390
+ */
391
+ async sendMessage(sessionId, content) {
392
+ if (!this.client) {
393
+ throw new Error('Runtime client not initialized. Call initialize() first.');
394
+ }
395
+ try {
396
+ await this.client.session.sendMessage({
397
+ path: { id: sessionId },
398
+ body: { content },
399
+ });
400
+ }
401
+ catch (error) {
402
+ throw mapPiRuntimeError('send message', error);
403
+ }
404
+ }
405
+ /**
406
+ * Close a session
407
+ */
408
+ async closeSession(sessionId) {
409
+ if (!this.client) {
410
+ throw new Error('Runtime client not initialized. Call initialize() first.');
411
+ }
412
+ try {
413
+ await this.client.session.delete({
414
+ path: { id: sessionId },
415
+ });
416
+ }
417
+ catch (error) {
418
+ throw mapPiRuntimeError('close session', error);
419
+ }
420
+ }
421
+ /**
422
+ * Shutdown - close in-process server if applicable
423
+ */
424
+ async shutdown() {
425
+ if (this.inProcessServer) {
426
+ // Close the in-process Pi runtime
427
+ this.inProcessServer.server.close();
428
+ // Give server time to clean up connections
429
+ await new Promise((resolve) => setTimeout(resolve, 100));
430
+ }
431
+ }
432
+ /**
433
+ * Get server URL
434
+ */
435
+ getServerUrl() {
436
+ if (!this.serverUrl) {
437
+ throw new Error('Server not initialized');
438
+ }
439
+ return this.serverUrl;
440
+ }
441
+ /**
442
+ * Resolve {env:VAR_NAME} references to actual environment variable values
443
+ */
444
+ resolveEnvReferences(obj) {
445
+ if (typeof obj === 'string') {
446
+ // Check for {env:VAR_NAME} pattern
447
+ const envMatch = obj.match(/^\{env:([^}]+)\}$/);
448
+ if (envMatch) {
449
+ const envVarName = envMatch[1];
450
+ const envValue = process.env[envVarName];
451
+ if (!envValue) {
452
+ getLogger().warn(`Environment variable ${envVarName} is not set`);
453
+ return '';
454
+ }
455
+ return envValue;
456
+ }
457
+ return obj;
458
+ }
459
+ if (Array.isArray(obj)) {
460
+ return obj.map((item) => this.resolveEnvReferences(item));
461
+ }
462
+ if (obj !== null && typeof obj === 'object') {
463
+ const resolved = {};
464
+ for (const [key, value] of Object.entries(obj)) {
465
+ resolved[key] = this.resolveEnvReferences(value);
466
+ }
467
+ return resolved;
468
+ }
469
+ return obj;
470
+ }
471
+ }
472
+ /**
473
+ * Create a runtime client with the given configuration.
474
+ */
475
+ export function createRuntimeClient(config) {
476
+ return new RuntimeClient(config);
477
+ }
478
+ /**
479
+ * Create and initialize a runtime client with the given configuration.
480
+ */
481
+ export async function createRuntimeClientInstance(config) {
482
+ const client = new RuntimeClient(config);
483
+ await client.initialize();
484
+ return client;
485
+ }
486
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/runtime/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAwC,MAAM,cAAc,CAAC;AA2C7F,SAAS,iBAAiB,CAAC,SAAiB,EAAE,KAAc;IAC1D,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEzC,MAAM,eAAe,GACnB,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;QACnC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;QACnC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAE5C,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,IAAI,KAAK,CACd,aAAa,SAAS,KAAK,OAAO,kEAAkE,CACrG,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GACb,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;QACnC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACrC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC9B,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE7B,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,KAAK,CACd,aAAa,SAAS,gHAAgH,OAAO,GAAG,CACjJ,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GACd,UAAU,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC9C,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAErE,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,IAAI,KAAK,CACd,aAAa,SAAS,mHAAmH,OAAO,GAAG,CACpJ,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,aAAa,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,SAAS,CAAU;IACnB,SAAS,CAAU;IACnB,eAAe,CAAuD;IACtE,MAAM,CAAY;IAClB,MAAM,CAAsB;IAEpC,YAAY,MAA2B;QACrC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,qBAAqB,CAAC,OAAe;QACnC,OAAO,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,mBAAmB,CAAC,QAAkB;QACpC,IAAI,GAAuB,CAAC;QAC5B,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACpB,GAAG,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,yBAAyB,CAAC,QAAiB,EAAE,KAAc;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,OAAO,CACL,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChD,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpC,SAAS,CACV,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAC5B,KAAa,EACb,MAAc,EACd,SAAiB,EACjB,UAAkB,EAClB,QAAiB,EACjB,KAAc;QAEd,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC;QAC7D,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC;QAChE,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;QACzE,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,UAAU,CAAC;QAE5E,OAAO,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,cAAc,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,0BAA0B;QAC1B,wDAAwD;QACxD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEvE,MAAM,aAAa,GAA4B;YAC7C,uCAAuC;YACvC,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI;gBACV,iBAAiB,EAAE,IAAI;gBACvB,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;aACZ;SACF,CAAC;QAEF,MAAM,WAAW,GAA4C,EAAE,CAAC;QAEhE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvE,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,MAAM,YAAY,GAA4B,EAAE,CAAC;gBACjD,IAAI,KAAK,CAAC,KAAK;oBAAE,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAClD,IAAI,KAAK,CAAC,MAAM;oBAAE,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBACrD,IAAI,KAAK,CAAC,WAAW;oBAAE,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBACpE,IAAI,KAAK,CAAC,KAAK;oBAAE,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAClD,IAAI,KAAK,CAAC,KAAK;oBAAE,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAElD,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,GAAG,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,MAAM,mCAAmC,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,6EAA6E;QAC7E,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,aAAa,CAAC,QAAQ,GAAG,OAAO,CAAC;YACjC,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAChD,CAAC;QAED,kDAAkD;QAClD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzE,yDAAyD;YACzD,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,+BAA+B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,wCAAwC;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrF,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAEvC,iDAAiD;YACjD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC5E,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC3C,WAAW,CAAC,SAAS,CAAC,GAAG;oBACvB,GAAG,KAAK;oBACR,KAAK;iBACN,CAAC;gBACF,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,aAAa,CAAC,KAAK,GAAG,WAAW,CAAC;QACpC,CAAC;QAED,aAAa,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;QAE9D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChF,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,gBAAgB;iBACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;oBACvB,GAAG,aAAa;oBAChB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAClD,CAAC,CAAC;gBACH,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;oBACpD,CAAC,CAAC,KAAK,CAAC,IAAI;oBACZ,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC;gBAE3B,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;iBACjE,CAAC;YACJ,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE9C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBACvC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;oBAChC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1D,CAAC;gBAED,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAC5C,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CACvD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAEpE,wDAAwD;YACxD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACzB,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAC1C,KAAK,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5E,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;oBAC9C,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;wBACrD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;wBACzD,IAAI,QAAQ,EAAE,CAAC;4BACb,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;4BAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;4BACzC,IAAI,QAAQ,EAAE,CAAC;gCACb,GAAG,CAAC,KAAK,CAAC,OAAO,UAAU,UAAU,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;4BACvE,CAAC;iCAAM,CAAC;gCACN,GAAG,CAAC,KAAK,CAAC,OAAO,UAAU,WAAW,CAAC,CAAC;4BAC1C,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,GAAG,CAAC,KAAK,CAAC,KAAK,YAAY,sCAAsC,CAAC,CAAC;wBACrE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,mCAAmC;YACnC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;YAClE,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;gBAC7B,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjE,IAAI,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;wBAC5D,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;wBACrE,8CAA8C;wBAC9C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAChC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM;gCACnD,gBAAgB,MAAM,CAAC,MAAM,YAAY,CAAC;wBAC9C,CAAC;6BAAM,CAAC;4BACN,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC;wBACxE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC1B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3D,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;oBACxD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpD,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,eAAe,MAAM,CAAC,MAAM,YAAY,CAAC;oBACrF,CAAC;gBACH,CAAC;YACH,CAAC;YAED,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YAE5E,MAAM,qBAAqB,GAAG,aAAa,CAAC,WAE/B,CAAC;YAEd,IAAI,qBAAqB,IAAI,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3E,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,yEAAyE;QACzE,2DAA2D;QAC3D,IAAI,CAAC,eAAe,GAAG,MAAM,uBAAuB,CAAC;YACnD,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAA6B;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,CAAC;YACH,+BAA+B;YAC/B,MAAM,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBACvD,KAAK,EAAE;oBACL,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B;aACF,CAAC,CAA+B,CAAC;YAElC,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;YAED,kDAAkD;YAClD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC/B,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;gBACvB,KAAK,EAAE;oBACL,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B;gBACD,IAAI,EAAE;oBACJ,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,OAAO,CAAC,OAAO;yBACtB;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,OAAO;gBACL,EAAE,EAAE,SAAS;gBACb,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,iBAAiB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,cAAc,CAAC,SAAiB;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,CAAC;YACH,sCAAsC;YACtC,IAAI,gBAAgB,GAAG,CAAC,CAAC;YACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,mCAAmC;YAE3D,OAAO,QAAQ,GAAG,WAAW,EAAE,CAAC;gBAC9B,QAAQ,EAAE,CAAC;gBAEX,uBAAuB;gBACvB,MAAM,gBAAgB,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;oBAC3D,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;iBACxB,CAAC,CAAkC,CAAC;gBAErC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,IAAI,EAAE,CAAC;gBAE7C,yBAAyB;gBACzB,KAAK,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;oBACpC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;oBAE9B,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK;wBACjC,CAAC,CAAC,CAAC,GAAG,EAAE;4BACJ,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC;4BAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;4BAC5C,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC;4BAClD,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,IAAI,CAAC,CAAC;4BACpD,MAAM,WAAW,GACf,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,IAAI,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;4BAC1E,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;4BAClD,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAChD,KAAK,EACL,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAQ,EACR,KAAK,CACN,CAAC;4BACF,MAAM,IAAI,GACR,YAAY,KAAK,SAAS,IAAI,YAAY,GAAG,CAAC;gCAC5C,CAAC,CAAC,YAAY;gCACd,CAAC,CAAC,CAAC,cAAc,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC;4BAE5C,OAAO;gCACL,KAAK;gCACL,MAAM;gCACN,SAAS;gCACT,UAAU;gCACV,WAAW;gCACX,IAAI;6BACL,CAAC;wBACJ,CAAC,CAAC,EAAE;wBACN,CAAC,CAAC,SAAS,CAAC;oBAEd,MAAM;wBACJ,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;wBACvC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,WAAW,CAA6C;wBACjF,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;wBAC3D,SAAS,EAAE,IAAI,IAAI,EAAE;wBACrB,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ;wBAC5B,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU;wBAChC,QAAQ;wBACR,KAAK;wBACL,KAAK,EAAE,WAAW;qBACnB,CAAC;gBACJ,CAAC;gBAED,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAEnC,oDAAoD;gBACpD,MAAM,gBAAgB,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC;gBAE3F,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC;oBACxE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC;oBAE5D,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;oBAClF,CAAC;oBAED,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;gBACH,CAAC;gBAED,4BAA4B;gBAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,oBAAoB,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QACvC,MAAM,QAAQ,GAAqB,EAAE,CAAC;QACtC,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,OAAe;QAClD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;gBACpC,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;gBACvB,IAAI,EAAE,EAAE,OAAO,EAAE;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC/B,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,iBAAiB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,kCAAkC;YAClC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACpC,2CAA2C;YAC3C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAI,GAAM;QACpC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,mCAAmC;YACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,SAAS,EAAE,CAAC,IAAI,CAAC,wBAAwB,UAAU,aAAa,CAAC,CAAC;oBAClE,OAAO,EAAO,CAAC;gBACjB,CAAC;gBACD,OAAO,QAAa,CAAC;YACvB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAM,CAAC;QACjE,CAAC;QAED,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAA4B,EAAE,CAAC;YAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,QAAa,CAAC;QACvB,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA2B;IAC7D,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAA2B;IAE3B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1B,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../src/opencode/client.test.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../src/runtime/client.test.ts"],"names":[],"mappings":""}