erosolar-cli 2.1.171 → 2.1.172

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 (209) hide show
  1. package/README.md +1 -1
  2. package/agents/erosolar-code.rules.json +2 -2
  3. package/agents/general.rules.json +3 -21
  4. package/dist/StringUtils.d.ts +8 -0
  5. package/dist/StringUtils.d.ts.map +1 -0
  6. package/dist/StringUtils.js +11 -0
  7. package/dist/StringUtils.js.map +1 -0
  8. package/dist/capabilities/statusCapability.js +2 -2
  9. package/dist/capabilities/statusCapability.js.map +1 -1
  10. package/dist/contracts/agent-schemas.json +5 -5
  11. package/dist/core/agent.d.ts +24 -83
  12. package/dist/core/agent.d.ts.map +1 -1
  13. package/dist/core/agent.js +248 -499
  14. package/dist/core/agent.js.map +1 -1
  15. package/dist/core/aiFlowSupervisor.d.ts +44 -0
  16. package/dist/core/aiFlowSupervisor.d.ts.map +1 -0
  17. package/dist/core/aiFlowSupervisor.js +299 -0
  18. package/dist/core/aiFlowSupervisor.js.map +1 -0
  19. package/dist/core/cliTestHarness.d.ts +200 -0
  20. package/dist/core/cliTestHarness.d.ts.map +1 -0
  21. package/dist/core/cliTestHarness.js +549 -0
  22. package/dist/core/cliTestHarness.js.map +1 -0
  23. package/dist/core/preferences.d.ts +0 -1
  24. package/dist/core/preferences.d.ts.map +1 -1
  25. package/dist/core/preferences.js +1 -8
  26. package/dist/core/preferences.js.map +1 -1
  27. package/dist/core/schemaValidator.js +3 -3
  28. package/dist/core/schemaValidator.js.map +1 -1
  29. package/dist/core/testUtils.d.ts +121 -0
  30. package/dist/core/testUtils.d.ts.map +1 -0
  31. package/dist/core/testUtils.js +235 -0
  32. package/dist/core/testUtils.js.map +1 -0
  33. package/dist/core/toolPreconditions.d.ts +11 -0
  34. package/dist/core/toolPreconditions.d.ts.map +1 -1
  35. package/dist/core/toolPreconditions.js +164 -33
  36. package/dist/core/toolPreconditions.js.map +1 -1
  37. package/dist/core/toolRuntime.d.ts.map +1 -1
  38. package/dist/core/toolRuntime.js +114 -9
  39. package/dist/core/toolRuntime.js.map +1 -1
  40. package/dist/core/toolValidation.d.ts +116 -0
  41. package/dist/core/toolValidation.d.ts.map +1 -0
  42. package/dist/core/toolValidation.js +282 -0
  43. package/dist/core/toolValidation.js.map +1 -0
  44. package/dist/core/updateChecker.d.ts +1 -61
  45. package/dist/core/updateChecker.d.ts.map +1 -1
  46. package/dist/core/updateChecker.js +3 -147
  47. package/dist/core/updateChecker.js.map +1 -1
  48. package/dist/headless/evalMode.d.ts.map +1 -1
  49. package/dist/headless/evalMode.js +0 -6
  50. package/dist/headless/evalMode.js.map +1 -1
  51. package/dist/headless/headlessApp.d.ts.map +1 -1
  52. package/dist/headless/headlessApp.js +39 -6
  53. package/dist/headless/headlessApp.js.map +1 -1
  54. package/dist/mcp/sseClient.d.ts +1 -4
  55. package/dist/mcp/sseClient.d.ts.map +1 -1
  56. package/dist/mcp/sseClient.js +2 -36
  57. package/dist/mcp/sseClient.js.map +1 -1
  58. package/dist/mcp/stdioClient.d.ts +1 -4
  59. package/dist/mcp/stdioClient.d.ts.map +1 -1
  60. package/dist/mcp/stdioClient.js +1 -41
  61. package/dist/mcp/stdioClient.js.map +1 -1
  62. package/dist/mcp/toolBridge.d.ts +0 -3
  63. package/dist/mcp/toolBridge.d.ts.map +1 -1
  64. package/dist/mcp/toolBridge.js +2 -2
  65. package/dist/mcp/toolBridge.js.map +1 -1
  66. package/dist/mcp/types.d.ts +0 -18
  67. package/dist/mcp/types.d.ts.map +1 -1
  68. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  69. package/dist/plugins/tools/nodeDefaults.js +2 -0
  70. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  71. package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
  72. package/dist/providers/openaiResponsesProvider.js +74 -79
  73. package/dist/providers/openaiResponsesProvider.js.map +1 -1
  74. package/dist/runtime/agentController.d.ts.map +1 -1
  75. package/dist/runtime/agentController.js +3 -6
  76. package/dist/runtime/agentController.js.map +1 -1
  77. package/dist/runtime/agentSession.d.ts +2 -0
  78. package/dist/runtime/agentSession.d.ts.map +1 -1
  79. package/dist/runtime/agentSession.js +2 -2
  80. package/dist/runtime/agentSession.js.map +1 -1
  81. package/dist/shell/interactiveShell.d.ts +18 -20
  82. package/dist/shell/interactiveShell.d.ts.map +1 -1
  83. package/dist/shell/interactiveShell.js +291 -329
  84. package/dist/shell/interactiveShell.js.map +1 -1
  85. package/dist/shell/shellApp.d.ts.map +1 -1
  86. package/dist/shell/shellApp.js +8 -16
  87. package/dist/shell/shellApp.js.map +1 -1
  88. package/dist/shell/systemPrompt.d.ts.map +1 -1
  89. package/dist/shell/systemPrompt.js +15 -4
  90. package/dist/shell/systemPrompt.js.map +1 -1
  91. package/dist/subagents/taskRunner.js +1 -2
  92. package/dist/subagents/taskRunner.js.map +1 -1
  93. package/dist/tools/bashTools.d.ts.map +1 -1
  94. package/dist/tools/bashTools.js +8 -101
  95. package/dist/tools/bashTools.js.map +1 -1
  96. package/dist/tools/diffUtils.d.ts +2 -8
  97. package/dist/tools/diffUtils.d.ts.map +1 -1
  98. package/dist/tools/diffUtils.js +13 -72
  99. package/dist/tools/diffUtils.js.map +1 -1
  100. package/dist/tools/grepTools.d.ts.map +1 -1
  101. package/dist/tools/grepTools.js +2 -10
  102. package/dist/tools/grepTools.js.map +1 -1
  103. package/dist/tools/planningTools.d.ts +10 -0
  104. package/dist/tools/planningTools.d.ts.map +1 -1
  105. package/dist/tools/planningTools.js +16 -0
  106. package/dist/tools/planningTools.js.map +1 -1
  107. package/dist/tools/searchTools.d.ts.map +1 -1
  108. package/dist/tools/searchTools.js +2 -4
  109. package/dist/tools/searchTools.js.map +1 -1
  110. package/dist/ui/PromptController.d.ts +4 -4
  111. package/dist/ui/PromptController.d.ts.map +1 -1
  112. package/dist/ui/PromptController.js +7 -1
  113. package/dist/ui/PromptController.js.map +1 -1
  114. package/dist/ui/ShellUIAdapter.d.ts +28 -292
  115. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  116. package/dist/ui/ShellUIAdapter.js +121 -1513
  117. package/dist/ui/ShellUIAdapter.js.map +1 -1
  118. package/dist/ui/UnifiedUIRenderer.d.ts +30 -136
  119. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  120. package/dist/ui/UnifiedUIRenderer.js +370 -955
  121. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  122. package/dist/ui/animatedStatus.d.ts +6 -128
  123. package/dist/ui/animatedStatus.d.ts.map +1 -1
  124. package/dist/ui/animatedStatus.js +50 -383
  125. package/dist/ui/animatedStatus.js.map +1 -1
  126. package/dist/ui/display.d.ts +26 -182
  127. package/dist/ui/display.d.ts.map +1 -1
  128. package/dist/ui/display.js +97 -678
  129. package/dist/ui/display.js.map +1 -1
  130. package/dist/ui/layout.d.ts +1 -0
  131. package/dist/ui/layout.d.ts.map +1 -1
  132. package/dist/ui/layout.js +12 -0
  133. package/dist/ui/layout.js.map +1 -1
  134. package/dist/ui/orchestration/UIUpdateCoordinator.d.ts +7 -61
  135. package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -1
  136. package/dist/ui/orchestration/UIUpdateCoordinator.js +20 -232
  137. package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -1
  138. package/dist/ui/planOverlay.d.ts +28 -0
  139. package/dist/ui/planOverlay.d.ts.map +1 -0
  140. package/dist/ui/planOverlay.js +156 -0
  141. package/dist/ui/planOverlay.js.map +1 -0
  142. package/dist/ui/shortcutsHelp.d.ts.map +1 -1
  143. package/dist/ui/shortcutsHelp.js +1 -0
  144. package/dist/ui/shortcutsHelp.js.map +1 -1
  145. package/dist/ui/streamingFormatter.d.ts +30 -0
  146. package/dist/ui/streamingFormatter.d.ts.map +1 -0
  147. package/dist/ui/streamingFormatter.js +91 -0
  148. package/dist/ui/streamingFormatter.js.map +1 -0
  149. package/dist/ui/unified/index.d.ts +1 -30
  150. package/dist/ui/unified/index.d.ts.map +1 -1
  151. package/dist/ui/unified/index.js +2 -45
  152. package/dist/ui/unified/index.js.map +1 -1
  153. package/dist/utils/errorUtils.d.ts +16 -0
  154. package/dist/utils/errorUtils.d.ts.map +1 -0
  155. package/dist/utils/errorUtils.js +66 -0
  156. package/dist/utils/errorUtils.js.map +1 -0
  157. package/package.json +2 -1
  158. package/dist/codex/capabilities/codexCoreCapability.d.ts +0 -6
  159. package/dist/codex/capabilities/codexCoreCapability.d.ts.map +0 -1
  160. package/dist/codex/capabilities/codexCoreCapability.js +0 -516
  161. package/dist/codex/capabilities/codexCoreCapability.js.map +0 -1
  162. package/dist/codex/fs.d.ts +0 -4
  163. package/dist/codex/fs.d.ts.map +0 -1
  164. package/dist/codex/fs.js +0 -25
  165. package/dist/codex/fs.js.map +0 -1
  166. package/dist/codex/persistence/planStore.d.ts +0 -4
  167. package/dist/codex/persistence/planStore.d.ts.map +0 -1
  168. package/dist/codex/persistence/planStore.js +0 -59
  169. package/dist/codex/persistence/planStore.js.map +0 -1
  170. package/dist/codex/pluginAllowlist.d.ts +0 -4
  171. package/dist/codex/pluginAllowlist.d.ts.map +0 -1
  172. package/dist/codex/pluginAllowlist.js +0 -14
  173. package/dist/codex/pluginAllowlist.js.map +0 -1
  174. package/dist/codex/types.d.ts +0 -21
  175. package/dist/codex/types.d.ts.map +0 -1
  176. package/dist/codex/types.js +0 -62
  177. package/dist/codex/types.js.map +0 -1
  178. package/dist/core/reliabilityPrompt.d.ts +0 -9
  179. package/dist/core/reliabilityPrompt.d.ts.map +0 -1
  180. package/dist/core/reliabilityPrompt.js +0 -31
  181. package/dist/core/reliabilityPrompt.js.map +0 -1
  182. package/dist/ui/UnifiedUIController.d.ts +0 -81
  183. package/dist/ui/UnifiedUIController.d.ts.map +0 -1
  184. package/dist/ui/UnifiedUIController.js +0 -212
  185. package/dist/ui/UnifiedUIController.js.map +0 -1
  186. package/dist/ui/animation/AnimationScheduler.d.ts +0 -192
  187. package/dist/ui/animation/AnimationScheduler.d.ts.map +0 -1
  188. package/dist/ui/animation/AnimationScheduler.js +0 -432
  189. package/dist/ui/animation/AnimationScheduler.js.map +0 -1
  190. package/dist/ui/inPlaceUpdater.d.ts +0 -181
  191. package/dist/ui/inPlaceUpdater.d.ts.map +0 -1
  192. package/dist/ui/inPlaceUpdater.js +0 -515
  193. package/dist/ui/inPlaceUpdater.js.map +0 -1
  194. package/dist/ui/interrupts/InterruptManager.d.ts +0 -142
  195. package/dist/ui/interrupts/InterruptManager.d.ts.map +0 -1
  196. package/dist/ui/interrupts/InterruptManager.js +0 -439
  197. package/dist/ui/interrupts/InterruptManager.js.map +0 -1
  198. package/dist/ui/telemetry/ResponseTracker.d.ts +0 -22
  199. package/dist/ui/telemetry/ResponseTracker.d.ts.map +0 -1
  200. package/dist/ui/telemetry/ResponseTracker.js +0 -60
  201. package/dist/ui/telemetry/ResponseTracker.js.map +0 -1
  202. package/dist/ui/telemetry/UITelemetry.d.ts +0 -181
  203. package/dist/ui/telemetry/UITelemetry.d.ts.map +0 -1
  204. package/dist/ui/telemetry/UITelemetry.js +0 -446
  205. package/dist/ui/telemetry/UITelemetry.js.map +0 -1
  206. package/dist/ui/unified/layout.d.ts +0 -12
  207. package/dist/ui/unified/layout.d.ts.map +0 -1
  208. package/dist/ui/unified/layout.js +0 -96
  209. package/dist/ui/unified/layout.js.map +0 -1
@@ -1,516 +0,0 @@
1
- import { promisify } from 'node:util';
2
- import { exec as execCallback, spawn } from 'node:child_process';
3
- import { readFile } from 'node:fs/promises';
4
- import path from 'node:path';
5
- import { resolveCodexContext } from '../types.js';
6
- import { resolveWorkingPath, isPathInside } from '../fs.js';
7
- import { updatePlan } from '../persistence/planStore.js';
8
- import { loadMcpServers } from '../../mcp/config.js';
9
- import { McpStdioClient } from '../../mcp/stdioClient.js';
10
- import { McpSseClient } from '../../mcp/sseClient.js';
11
- import { formatContentBlock } from '../../mcp/toolBridge.js';
12
- const exec = promisify(execCallback);
13
- export class CodexCoreCapabilityModule {
14
- id = 'capability.codex.core';
15
- async create(context) {
16
- const codexContext = resolveCodexContext(context.env, context.workingDir);
17
- return {
18
- id: 'codex.core',
19
- description: 'Codex-compatible core tools (shell_command, apply_patch, update_plan, MCP helpers, view_image).',
20
- toolSuite: {
21
- id: 'codex-core',
22
- description: 'Codex CLI core tools',
23
- tools: createCodexTools(codexContext),
24
- },
25
- metadata: {
26
- sandboxMode: codexContext.sandboxMode,
27
- networkAccess: codexContext.networkAccess,
28
- approvalPolicy: codexContext.approvalPolicy,
29
- },
30
- };
31
- }
32
- }
33
- function createCodexTools(context) {
34
- return [
35
- {
36
- name: 'shell_command',
37
- description: 'Execute a shell command within the workspace. Respects sandbox restrictions and enforces workspace scoping.',
38
- parameters: {
39
- type: 'object',
40
- properties: {
41
- command: { type: 'string' },
42
- workdir: { type: 'string', description: 'Optional working directory relative to workspace.' },
43
- timeout_ms: { type: 'number', description: 'Optional timeout in milliseconds.' },
44
- with_escalated_permissions: { type: 'boolean' },
45
- justification: { type: 'string' },
46
- },
47
- required: ['command'],
48
- },
49
- handler: async (args) => runShellCommand(context, args),
50
- },
51
- {
52
- name: 'apply_patch',
53
- description: 'Apply a unified diff patch within the workspace (guarded).',
54
- parameters: {
55
- type: 'object',
56
- properties: {
57
- patch: { type: 'string' },
58
- workdir: { type: 'string', description: 'Optional working directory relative to workspace.' },
59
- },
60
- required: ['patch'],
61
- },
62
- handler: async (args) => applyPatch(context, args),
63
- },
64
- {
65
- name: 'update_plan',
66
- description: 'Persist plan steps with Codex semantics (one in_progress at a time).',
67
- parameters: {
68
- type: 'object',
69
- properties: {
70
- explanation: { type: 'string' },
71
- plan: {
72
- type: 'array',
73
- items: {
74
- type: 'object',
75
- required: ['step', 'status'],
76
- properties: {
77
- step: { type: 'string' },
78
- status: { type: 'string', enum: ['pending', 'in_progress', 'completed'] },
79
- },
80
- },
81
- },
82
- },
83
- required: ['plan'],
84
- },
85
- handler: async (args) => updatePlanState(context, args),
86
- },
87
- {
88
- name: 'list_mcp_resources',
89
- description: 'List resources exposed by configured MCP servers.',
90
- parameters: {
91
- type: 'object',
92
- properties: {},
93
- },
94
- handler: async () => listMcpResources(context),
95
- },
96
- {
97
- name: 'read_mcp_resource',
98
- description: 'Read a resource from an MCP server and return its content.',
99
- parameters: {
100
- type: 'object',
101
- properties: {
102
- server: { type: 'string' },
103
- uri: { type: 'string' },
104
- },
105
- required: ['server', 'uri'],
106
- },
107
- handler: async (args) => readMcpResource(context, args),
108
- },
109
- {
110
- name: 'list_mcp_resource_templates',
111
- description: 'List MCP resource templates from configured servers.',
112
- parameters: {
113
- type: 'object',
114
- properties: {},
115
- },
116
- handler: async () => listMcpResourceTemplates(context),
117
- },
118
- {
119
- name: 'view_image',
120
- description: 'Load an image from disk and return base64 metadata for display.',
121
- parameters: {
122
- type: 'object',
123
- properties: {
124
- path: { type: 'string' },
125
- },
126
- required: ['path'],
127
- },
128
- handler: async (args) => viewImage(context, args),
129
- },
130
- ];
131
- }
132
- async function runShellCommand(context, args) {
133
- const command = typeof args['command'] === 'string' ? args['command'].trim() : '';
134
- if (!command) {
135
- return 'Error: command must be a non-empty string.';
136
- }
137
- const escalationRequested = args['with_escalated_permissions'] === true;
138
- if (escalationRequested && (context.approvalPolicy === 'never' || context.approvalPolicy === 'untrusted')) {
139
- return `Blocked: escalated permissions are disabled by approval policy (${context.approvalPolicy}).`;
140
- }
141
- const escalationNotice = escalationRequested && context.approvalPolicy !== 'on-failure'
142
- ? `Note: escalation requested but running under "${context.approvalPolicy}" policy within current sandbox.`
143
- : null;
144
- // Basic sandbox guardrail: prevent escape from workspace
145
- const cwd = resolveSafeCwd(context, args['workdir']);
146
- if (context.sandboxMode === 'read-only' && isPotentiallyMutating(command)) {
147
- return 'Blocked: sandbox is read-only.';
148
- }
149
- // Optional: respect restricted network flag (best-effort, advisory)
150
- if (context.networkAccess === 'restricted' && isNetworkCommand(command)) {
151
- return 'Blocked: network access is restricted in this sandbox.';
152
- }
153
- try {
154
- const timeout = typeof args['timeout_ms'] === 'number' ? Math.max(1, Math.floor(args['timeout_ms'])) : undefined;
155
- const { stdout, stderr } = await exec(command, { cwd, timeout });
156
- if (stderr && stderr.trim()) {
157
- const payload = [stdout.trim(), stderr.trim()].filter(Boolean).join('\n');
158
- return escalationNotice ? [escalationNotice, payload].filter(Boolean).join('\n') : payload;
159
- }
160
- const payload = stdout.trim();
161
- return escalationNotice ? [escalationNotice, payload].filter(Boolean).join('\n') : payload;
162
- }
163
- catch (error) {
164
- const err = error;
165
- const stderr = typeof err?.stderr === 'string' ? err.stderr.trim() : '';
166
- const stdout = typeof err?.stdout === 'string' ? err.stdout.trim() : '';
167
- const message = err?.message ? String(err.message) : 'Shell command failed.';
168
- const payload = [stdout, stderr, message].filter(Boolean).join('\n');
169
- return escalationNotice ? [escalationNotice, payload].filter(Boolean).join('\n') : payload;
170
- }
171
- }
172
- async function applyPatch(context, args) {
173
- const patch = typeof args['patch'] === 'string' ? args['patch'] : '';
174
- if (!patch.trim()) {
175
- return 'Error: patch must be a non-empty string.';
176
- }
177
- if (context.sandboxMode === 'read-only') {
178
- return 'Blocked: sandbox is read-only.';
179
- }
180
- const cwd = resolveSafeCwd(context, args['workdir']);
181
- const violations = findPatchViolations(context.workingDir, patch);
182
- if (violations.length) {
183
- return `Rejected patch: paths escape workspace:\n${violations.join('\n')}`;
184
- }
185
- try {
186
- const output = await applyPatchWithBinary(patch, cwd);
187
- return output;
188
- }
189
- catch (error) {
190
- const message = error instanceof Error ? error.message : String(error);
191
- return `Failed to apply patch: ${message}`;
192
- }
193
- }
194
- async function applyPatchWithBinary(patch, cwd) {
195
- return new Promise((resolve, reject) => {
196
- const child = spawn('patch', ['-p0', '-u', '-N', '--binary'], { cwd });
197
- let stdout = '';
198
- let stderr = '';
199
- child.stdout.on('data', (data) => {
200
- stdout += data.toString();
201
- });
202
- child.stderr.on('data', (data) => {
203
- stderr += data.toString();
204
- });
205
- child.on('error', (error) => {
206
- reject(error);
207
- });
208
- child.on('close', (code) => {
209
- if (code === 0) {
210
- resolve([stdout.trim(), stderr.trim()].filter(Boolean).join('\n') || 'Patch applied.');
211
- return;
212
- }
213
- reject(new Error(stderr.trim() || `patch exited with code ${code}`));
214
- });
215
- child.stdin.write(patch);
216
- child.stdin.end();
217
- });
218
- }
219
- async function updatePlanState(context, args) {
220
- const explanation = typeof args['explanation'] === 'string' ? args['explanation'] : undefined;
221
- const planArg = Array.isArray(args['plan']) ? args['plan'] : [];
222
- const nextPlan = planArg
223
- .map((entry) => ({
224
- step: typeof entry?.step === 'string' ? entry.step : '',
225
- status: entry?.status,
226
- }))
227
- .filter((entry) => Boolean(entry.step));
228
- const state = await updatePlan(context.workingDir, { plan: nextPlan, explanation });
229
- return formatPlan(state);
230
- }
231
- async function listMcpResources(context) {
232
- const servers = await loadMcpServers({ workingDir: context.workingDir, env: context.env });
233
- if (!servers.length) {
234
- return 'No MCP servers configured.';
235
- }
236
- const records = [];
237
- for (const server of servers) {
238
- const client = createMcpClient(server, context.workingDir);
239
- try {
240
- const resources = await client.listResources();
241
- records.push({
242
- server: server.id,
243
- type: server.type,
244
- description: server.description,
245
- location: server.type === 'sse' ? server.url : server.command,
246
- resources,
247
- });
248
- }
249
- catch (error) {
250
- records.push({
251
- server: server.id,
252
- type: server.type,
253
- description: server.description,
254
- location: server.type === 'sse' ? server.url : server.command,
255
- error: formatMcpError(error),
256
- });
257
- }
258
- finally {
259
- await client.dispose();
260
- }
261
- }
262
- return JSON.stringify(records, null, 2);
263
- }
264
- async function readMcpResource(context, args) {
265
- const serverId = typeof args['server'] === 'string' ? args['server'].trim() : '';
266
- const uri = typeof args['uri'] === 'string' ? args['uri'].trim() : '';
267
- if (!serverId || !uri) {
268
- return 'Error: server and uri are required.';
269
- }
270
- const server = await findMcpServer(context, serverId);
271
- if (!server) {
272
- return `Server "${serverId}" is not configured.`;
273
- }
274
- const client = createMcpClient(server, context.workingDir);
275
- try {
276
- const result = await client.readResource(uri);
277
- const blocks = normalizeContentBlocks(result);
278
- const formatted = blocks
279
- .map((block) => formatContentBlock(block))
280
- .filter((line) => Boolean(line?.trim()));
281
- const lines = [];
282
- lines.push(`Server: ${serverId}`);
283
- const label = result.resource?.name || result.resource?.uri;
284
- lines.push(`Resource: ${label && label !== uri ? `${uri} (${label})` : uri}`);
285
- if (result.resource?.mimeType) {
286
- lines.push(`MIME: ${result.resource.mimeType}`);
287
- }
288
- if (result.resource?.description) {
289
- lines.push(result.resource.description);
290
- }
291
- if (formatted.length) {
292
- lines.push('', ...formatted);
293
- }
294
- else {
295
- lines.push('No content returned for this resource.');
296
- }
297
- return lines.join('\n');
298
- }
299
- catch (error) {
300
- return `Failed to read ${serverId}:${uri}: ${formatMcpError(error)}`;
301
- }
302
- finally {
303
- await client.dispose();
304
- }
305
- }
306
- async function listMcpResourceTemplates(context) {
307
- const servers = await loadMcpServers({ workingDir: context.workingDir, env: context.env });
308
- if (!servers.length) {
309
- return 'No MCP servers configured.';
310
- }
311
- const records = [];
312
- for (const server of servers) {
313
- const client = createMcpClient(server, context.workingDir);
314
- try {
315
- const templates = await client.listResourceTemplates();
316
- records.push({
317
- server: server.id,
318
- type: server.type,
319
- description: server.description,
320
- location: server.type === 'sse' ? server.url : server.command,
321
- templates,
322
- });
323
- }
324
- catch (error) {
325
- records.push({
326
- server: server.id,
327
- type: server.type,
328
- description: server.description,
329
- location: server.type === 'sse' ? server.url : server.command,
330
- error: formatMcpError(error),
331
- });
332
- }
333
- finally {
334
- await client.dispose();
335
- }
336
- }
337
- return JSON.stringify(records, null, 2);
338
- }
339
- function createMcpClient(config, workingDir) {
340
- return config.type === 'sse' ? new McpSseClient(config) : new McpStdioClient(config, workingDir);
341
- }
342
- async function findMcpServer(context, id) {
343
- const servers = await loadMcpServers({ workingDir: context.workingDir, env: context.env });
344
- return servers.find((server) => server.id === id) ?? null;
345
- }
346
- function normalizeContentBlocks(result) {
347
- if (!result) {
348
- return [];
349
- }
350
- if (Array.isArray(result.content)) {
351
- return result.content;
352
- }
353
- if (Array.isArray(result.contents)) {
354
- return result.contents;
355
- }
356
- return [];
357
- }
358
- function formatMcpError(error) {
359
- if (error instanceof Error) {
360
- return error.message;
361
- }
362
- return String(error);
363
- }
364
- async function viewImage(context, args) {
365
- const targetPath = typeof args['path'] === 'string' ? args['path'] : '';
366
- if (!targetPath.trim()) {
367
- return 'Error: path is required.';
368
- }
369
- const resolved = resolveWorkingPath(context.workingDir, targetPath);
370
- try {
371
- const data = await readFile(resolved);
372
- const size = data.byteLength;
373
- if (size > 1024 * 1024) {
374
- return `Image too large to inline (${size} bytes). Path: ${resolved}`;
375
- }
376
- const base64 = data.toString('base64');
377
- const ext = path.extname(resolved).replace(/^\./, '') || 'octet-stream';
378
- return JSON.stringify({ path: resolved, size, encoding: 'base64', mediaType: `image/${ext}`, data: base64 }, null, 2);
379
- }
380
- catch (error) {
381
- const message = error instanceof Error ? error.message : String(error);
382
- return `Failed to read image: ${message}`;
383
- }
384
- }
385
- function resolveSafeCwd(context, workdir) {
386
- const base = context.workingDir;
387
- const cwd = resolveWorkingPath(base, typeof workdir === 'string' ? workdir : undefined);
388
- if (context.sandboxMode === 'read-only') {
389
- return base;
390
- }
391
- return cwd;
392
- }
393
- function findPatchViolations(baseDir, patch) {
394
- const violations = [];
395
- const lines = patch.split('\n');
396
- const paths = new Set();
397
- for (const line of lines) {
398
- const diffMatch = line.match(/^diff --git a\/(\S+) b\/(\S+)/);
399
- if (diffMatch && diffMatch[1] && diffMatch[2]) {
400
- paths.add(diffMatch[1]);
401
- paths.add(diffMatch[2]);
402
- continue;
403
- }
404
- const plusMatch = line.match(/^\+\+\+ ([^\t]+)/);
405
- if (plusMatch && plusMatch[1]) {
406
- paths.add(plusMatch[1]);
407
- continue;
408
- }
409
- const minusMatch = line.match(/^\-\-\- ([^\t]+)/);
410
- if (minusMatch && minusMatch[1]) {
411
- paths.add(minusMatch[1]);
412
- }
413
- }
414
- for (const candidate of paths) {
415
- if (candidate === '/dev/null') {
416
- continue;
417
- }
418
- const cleaned = candidate.replace(/^[ab]\//, '');
419
- const resolved = path.resolve(baseDir, cleaned);
420
- if (!isPathInside(baseDir, resolved)) {
421
- violations.push(`${candidate} -> ${resolved}`);
422
- }
423
- }
424
- return violations;
425
- }
426
- function isPotentiallyMutating(command) {
427
- const normalized = command.toLowerCase();
428
- if (/>|>>/.test(command)) {
429
- return true;
430
- }
431
- if (/\bsudo\b/.test(normalized)) {
432
- return true;
433
- }
434
- const directMutators = [
435
- 'rm',
436
- 'rmdir',
437
- 'mv',
438
- 'cp',
439
- 'ln',
440
- 'mkdir',
441
- 'touch',
442
- 'chmod',
443
- 'chown',
444
- 'truncate',
445
- 'dd',
446
- 'mkfs',
447
- 'mount',
448
- 'umount',
449
- 'tee',
450
- 'docker',
451
- 'kubectl',
452
- 'helm',
453
- ];
454
- for (const token of directMutators) {
455
- const pattern = new RegExp(`\\b${token}\\b`);
456
- if (pattern.test(normalized)) {
457
- return true;
458
- }
459
- }
460
- const packageManagers = /\b(npm|yarn|pnpm|pip|pip3|brew|apt(-get)?|yum|dnf|pacman|apk|cargo|go\s+install|go\s+get|bundle|gem|composer|dotnet|nuget|conda|mamba)\b/;
461
- if (packageManagers.test(normalized)) {
462
- return true;
463
- }
464
- if (/\bsed\b[^\n]*\s-i\b/.test(normalized) || /\bperl\b[^\n]*\s-i\b/.test(normalized)) {
465
- return true;
466
- }
467
- const gitMutations = /\bgit\s+(commit|push|pull|merge|rebase|reset|checkout|clean|apply|am|cherry-pick|fetch|clone|init|switch)\b/;
468
- if (gitMutations.test(normalized)) {
469
- return true;
470
- }
471
- return false;
472
- }
473
- function isNetworkCommand(command) {
474
- const normalized = command.toLowerCase();
475
- const checks = [
476
- /\bcurl\b/i,
477
- /\bwget\b/i,
478
- /\bhttp(s)?:\/\//i,
479
- /\bgit\s+(clone|fetch|pull)\b/i,
480
- /\bssh\b(?!-keygen)/i,
481
- /\bscp\b/i,
482
- /\bsftp\b/i,
483
- /\bftp\b/i,
484
- /\brsync\b/i,
485
- /\bnc\b\s+/i,
486
- /\bdocker\s+(pull|run|build)\b/i,
487
- ];
488
- if (checks.some((pattern) => pattern.test(command))) {
489
- return true;
490
- }
491
- const packageNetwork = [
492
- /\b(npm|yarn|pnpm)\s+(install|add|update|upgrade|ci|publish|link)\b/i,
493
- /\b(pip|pip3)\s+(install|download)\b/i,
494
- /\bcargo\b\s+(install|update)\b/i,
495
- /\bgo\s+(get|install)\b/i,
496
- /\bbundle\b\s+install\b/i,
497
- /\bgem\b\s+(install|update)\b/i,
498
- /\bcomposer\b\s+(install|update|require)\b/i,
499
- /\b(brew|apt-get|apt|yum|dnf|pacman|apk)\b/i,
500
- /\b(conda|mamba)\b\s+(install|update|create)\b/i,
501
- ];
502
- if (packageNetwork.some((pattern) => pattern.test(normalized))) {
503
- return true;
504
- }
505
- return false;
506
- }
507
- function formatPlan(state) {
508
- const header = state.explanation ? `${state.explanation.trim()}\n\n` : '';
509
- const body = state.plan.length === 0
510
- ? 'Plan is empty.'
511
- : state.plan
512
- .map((item, index) => `${index + 1}. [${item.status}] ${item.step}`)
513
- .join('\n');
514
- return `${header}${body}`;
515
- }
516
- //# sourceMappingURL=codexCoreCapability.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codexCoreCapability.js","sourceRoot":"","sources":["../../../src/codex/capabilities/codexCoreCapability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,mBAAmB,EAAoD,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAY,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AAErC,MAAM,OAAO,yBAAyB;IAC3B,EAAE,GAAG,uBAAuB,CAAC;IAEtC,KAAK,CAAC,MAAM,CAAC,OAA0B;QACrC,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1E,OAAO;YACL,EAAE,EAAE,YAAY;YAChB,WAAW,EAAE,iGAAiG;YAC9G,SAAS,EAAE;gBACT,EAAE,EAAE,YAAY;gBAChB,WAAW,EAAE,sBAAsB;gBACnC,KAAK,EAAE,gBAAgB,CAAC,YAAY,CAAC;aACtC;YACD,QAAQ,EAAE;gBACR,WAAW,EAAE,YAAY,CAAC,WAAW;gBACrC,aAAa,EAAE,YAAY,CAAC,aAAa;gBACzC,cAAc,EAAE,YAAY,CAAC,cAAc;aAC5C;SACF,CAAC;IACJ,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,OAAqB;IAC7C,OAAO;QACL;YACE,IAAI,EAAE,eAAe;YACrB,WAAW,EACT,6GAA6G;YAC/G,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;oBAC7F,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;oBAChF,0BAA0B,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC/C,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAClC;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC;SACxD;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,4DAA4D;YACzE,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;iBAC9F;gBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;aACpB;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;SACnD;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,sEAAsE;YACnF,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,IAAI,EAAE;wBACJ,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;4BAC5B,UAAU,EAAE;gCACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE;6BAC1E;yBACF;qBACF;iBACF;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC;SACxD;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EAAE,mDAAmD;YAChE,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;aACf;YACD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;SAC/C;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,4DAA4D;YACzE,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACxB;gBACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;aAC5B;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC;SACxD;QACD;YACE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,sDAAsD;YACnE,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;aACf;YACD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC;SACvD;QACD;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,iEAAiE;YAC9E,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;SAClD;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAAqB,EAAE,IAA6B;IACjF,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,4CAA4C,CAAC;IACtD,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,4BAA4B,CAAC,KAAK,IAAI,CAAC;IACxE,IAAI,mBAAmB,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,OAAO,IAAI,OAAO,CAAC,cAAc,KAAK,WAAW,CAAC,EAAE,CAAC;QAC1G,OAAO,mEAAmE,OAAO,CAAC,cAAc,IAAI,CAAC;IACvG,CAAC;IAED,MAAM,gBAAgB,GACpB,mBAAmB,IAAI,OAAO,CAAC,cAAc,KAAK,YAAY;QAC5D,CAAC,CAAC,iDAAiD,OAAO,CAAC,cAAc,kCAAkC;QAC3G,CAAC,CAAC,IAAI,CAAC;IAEX,yDAAyD;IACzD,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1E,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IAED,oEAAoE;IACpE,IAAI,OAAO,CAAC,aAAa,KAAK,YAAY,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QACxE,OAAO,wDAAwD,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACjE,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7F,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAY,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,GAAG,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,GAAG,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC;QAC7E,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7F,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAqB,EAAE,IAA6B;IAC5E,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,OAAO,0CAA0C,CAAC;IACpD,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,4CAA4C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,0BAA0B,OAAO,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,KAAa,EAAE,GAAW;IAC5D,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACvE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,CAAC;gBACvF,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,0BAA0B,IAAI,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAAqB,EAAE,IAA6B;IACjF,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9F,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,MAAM,CAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,QAAQ,GAAG,OAAO;SACrB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QACvD,MAAM,EAAE,KAAK,EAAE,MAAM;KACtB,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1C,MAAM,KAAK,GAAc,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAsB,EAAE,WAAW,EAAE,CAAC,CAAC;IAC7G,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAqB;IACnD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3F,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,4BAA4B,CAAC;IACtC,CAAC;IACD,MAAM,OAAO,GAOR,EAAE,CAAC;IAER,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,MAAM,CAAC,EAAE;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAC7D,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,MAAM,CAAC,EAAE;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAC7D,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;aAC7B,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAAqB,EAAE,IAA6B;IACjF,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,WAAW,QAAQ,sBAAsB,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAM;aACrB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9E,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,kBAAkB,QAAQ,IAAI,GAAG,KAAK,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IACvE,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,OAAqB;IAC3D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3F,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,4BAA4B,CAAC;IACtC,CAAC;IACD,MAAM,OAAO,GAOR,EAAE,CAAC;IAER,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,MAAM,CAAC,EAAE;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAC7D,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,MAAM,CAAC,EAAE;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAC7D,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;aAC7B,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AASD,SAAS,eAAe,CAAC,MAAuB,EAAE,UAAkB;IAClE,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACnG,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAqB,EAAE,EAAU;IAC5D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3F,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;AAC5D,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAoC;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAqB,EAAE,IAA6B;IAC3E,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACvB,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YACvB,OAAO,8BAA8B,IAAI,kBAAkB,QAAQ,EAAE,CAAC;QACxE,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC;QACxE,OAAO,IAAI,CAAC,SAAS,CACnB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EACrF,IAAI,EACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,yBAAyB,OAAO,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAAqB,EAAE,OAAgB;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;IAChC,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxF,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,KAAa;IACzD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC9D,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAClD,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,OAAO,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEzC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,cAAc,GAAG;QACrB,IAAI;QACJ,OAAO;QACP,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,UAAU;QACV,IAAI;QACJ,MAAM;QACN,OAAO;QACP,QAAQ;QACR,KAAK;QACL,QAAQ;QACR,SAAS;QACT,MAAM;KACP,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GACnB,0IAA0I,CAAC;IAC7I,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAChB,6GAA6G,CAAC;IAChH,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG;QACb,WAAW;QACX,WAAW;QACX,kBAAkB;QAClB,+BAA+B;QAC/B,qBAAqB;QACrB,UAAU;QACV,WAAW;QACX,UAAU;QACV,YAAY;QACZ,YAAY;QACZ,gCAAgC;KACjC,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,cAAc,GAAG;QACrB,qEAAqE;QACrE,sCAAsC;QACtC,iCAAiC;QACjC,yBAAyB;QACzB,yBAAyB;QACzB,+BAA+B;QAC/B,4CAA4C;QAC5C,4CAA4C;QAC5C,gDAAgD;KACjD,CAAC;IAEF,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAgB;IAClC,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACrB,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,KAAK,CAAC,IAAI;aACP,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;aACnE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;AAC5B,CAAC"}
@@ -1,4 +0,0 @@
1
- export declare function resolveWorkingPath(baseDir: string, candidate?: string): string;
2
- export declare function isPathInside(baseDir: string, target: string): boolean;
3
- export declare function ensureStateDir(baseDir: string): Promise<string>;
4
- //# sourceMappingURL=fs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/codex/fs.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAU9E;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKrE;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIrE"}
package/dist/codex/fs.js DELETED
@@ -1,25 +0,0 @@
1
- import path from 'node:path';
2
- import { mkdir } from 'node:fs/promises';
3
- export function resolveWorkingPath(baseDir, candidate) {
4
- const base = path.resolve(baseDir);
5
- if (!candidate) {
6
- return base;
7
- }
8
- const resolved = path.resolve(base, candidate);
9
- if (!isPathInside(base, resolved)) {
10
- throw new Error(`Path "${candidate}" escapes the workspace root.`);
11
- }
12
- return resolved;
13
- }
14
- export function isPathInside(baseDir, target) {
15
- const root = path.resolve(baseDir);
16
- const base = root.endsWith(path.sep) ? root : root + path.sep;
17
- const candidate = path.resolve(target);
18
- return candidate === root || candidate.startsWith(base);
19
- }
20
- export async function ensureStateDir(baseDir) {
21
- const dir = path.join(baseDir, '.erosolar', 'codex');
22
- await mkdir(dir, { recursive: true });
23
- return dir;
24
- }
25
- //# sourceMappingURL=fs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/codex/fs.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,SAAkB;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,+BAA+B,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,MAAc;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { PlanState } from '../types.js';
2
- export declare function loadPlan(workingDir: string): Promise<PlanState>;
3
- export declare function updatePlan(workingDir: string, next: Pick<PlanState, 'plan' | 'explanation'>): Promise<PlanState>;
4
- //# sourceMappingURL=planStore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"planStore.d.ts","sourceRoot":"","sources":["../../../src/codex/persistence/planStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,SAAS,EAAc,MAAM,aAAa,CAAC;AAKnE,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAkBrE;AAED,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC,GAC5C,OAAO,CAAC,SAAS,CAAC,CAapB"}
@@ -1,59 +0,0 @@
1
- import path from 'node:path';
2
- import { readFile, writeFile } from 'node:fs/promises';
3
- import { ensureStateDir } from '../fs.js';
4
- const DEFAULT_PLAN = { plan: [] };
5
- export async function loadPlan(workingDir) {
6
- const stateDir = await ensureStateDir(workingDir);
7
- const planPath = path.join(stateDir, 'plan.json');
8
- try {
9
- const raw = await readFile(planPath, 'utf8');
10
- const parsed = JSON.parse(raw);
11
- if (parsed && Array.isArray(parsed.plan)) {
12
- return {
13
- explanation: typeof parsed.explanation === 'string' ? parsed.explanation : undefined,
14
- plan: parsed.plan
15
- .map(normalizePlanItem)
16
- .filter((entry) => Boolean(entry)),
17
- };
18
- }
19
- }
20
- catch {
21
- // Missing or malformed files fall through to default
22
- }
23
- return { ...DEFAULT_PLAN };
24
- }
25
- export async function updatePlan(workingDir, next) {
26
- const stateDir = await ensureStateDir(workingDir);
27
- const planPath = path.join(stateDir, 'plan.json');
28
- const planItems = Array.isArray(next.plan)
29
- ? next.plan.map(normalizePlanItem).filter((entry) => Boolean(entry))
30
- : [];
31
- validatePlan(planItems);
32
- const record = {
33
- explanation: next.explanation,
34
- plan: planItems,
35
- };
36
- await writeFile(planPath, JSON.stringify(record, null, 2), 'utf8');
37
- return record;
38
- }
39
- function normalizePlanItem(candidate) {
40
- const step = typeof candidate?.step === 'string' ? candidate.step.trim() : '';
41
- const status = normalizeStatus(candidate?.status);
42
- if (!step || !status) {
43
- return null;
44
- }
45
- return { step, status };
46
- }
47
- function normalizeStatus(value) {
48
- if (value === 'pending' || value === 'in_progress' || value === 'completed') {
49
- return value;
50
- }
51
- return null;
52
- }
53
- function validatePlan(plan) {
54
- const inProgress = plan.filter((entry) => entry.status === 'in_progress');
55
- if (inProgress.length > 1) {
56
- throw new Error('Only one plan item may be in_progress at a time.');
57
- }
58
- }
59
- //# sourceMappingURL=planStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"planStore.js","sourceRoot":"","sources":["../../../src/codex/persistence/planStore.ts"],"names":[],"mappings":"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"}