@kindgi/cli 0.1.4-rc.2 → 0.1.4-rc.4

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 (119) hide show
  1. package/README.md +15 -8
  2. package/dist/build/defaults.d.ts.map +1 -1
  3. package/dist/build/defaults.js +2 -1
  4. package/dist/build/defaults.js.map +1 -1
  5. package/dist/commands/auth.d.ts.map +1 -1
  6. package/dist/commands/auth.js +10 -2
  7. package/dist/commands/auth.js.map +1 -1
  8. package/dist/commands/dev.d.ts.map +1 -1
  9. package/dist/commands/dev.js +7 -2
  10. package/dist/commands/dev.js.map +1 -1
  11. package/dist/commands/doctor.d.ts +54 -0
  12. package/dist/commands/doctor.d.ts.map +1 -0
  13. package/dist/commands/doctor.js +483 -0
  14. package/dist/commands/doctor.js.map +1 -0
  15. package/dist/commands/index.d.ts.map +1 -1
  16. package/dist/commands/index.js +2 -0
  17. package/dist/commands/index.js.map +1 -1
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +21 -7
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/mcp.js +1 -1
  22. package/dist/commands/mcp.js.map +1 -1
  23. package/dist/commands/providers.d.ts.map +1 -1
  24. package/dist/commands/providers.js +1 -1
  25. package/dist/commands/providers.js.map +1 -1
  26. package/dist/commands/run-waits.d.ts +106 -0
  27. package/dist/commands/run-waits.d.ts.map +1 -0
  28. package/dist/commands/run-waits.js +233 -0
  29. package/dist/commands/run-waits.js.map +1 -0
  30. package/dist/commands/runs.d.ts.map +1 -1
  31. package/dist/commands/runs.js +43 -18
  32. package/dist/commands/runs.js.map +1 -1
  33. package/dist/commands/unwired.d.ts.map +1 -1
  34. package/dist/commands/unwired.js +0 -5
  35. package/dist/commands/unwired.js.map +1 -1
  36. package/dist/context.d.ts +10 -0
  37. package/dist/context.d.ts.map +1 -1
  38. package/dist/context.js +1 -0
  39. package/dist/context.js.map +1 -1
  40. package/dist/dev/bundler.d.ts.map +1 -1
  41. package/dist/dev/bundler.js +3 -2
  42. package/dist/dev/bundler.js.map +1 -1
  43. package/dist/dev/runtime-container.d.ts.map +1 -1
  44. package/dist/dev/runtime-container.js +7 -4
  45. package/dist/dev/runtime-container.js.map +1 -1
  46. package/dist/dev/runtime-image.d.ts +1 -1
  47. package/dist/dev/runtime-image.js +1 -1
  48. package/dist/dev/runtime-registry.d.ts +23 -1
  49. package/dist/dev/runtime-registry.d.ts.map +1 -1
  50. package/dist/dev/runtime-registry.js +38 -4
  51. package/dist/dev/runtime-registry.js.map +1 -1
  52. package/dist/esbuild-loader.d.ts +3 -0
  53. package/dist/esbuild-loader.d.ts.map +1 -0
  54. package/dist/esbuild-loader.js +21 -0
  55. package/dist/esbuild-loader.js.map +1 -0
  56. package/dist/init/augment-scaffolder.d.ts.map +1 -1
  57. package/dist/init/augment-scaffolder.js +40 -8
  58. package/dist/init/augment-scaffolder.js.map +1 -1
  59. package/dist/init/dependency-specs.d.ts +6 -0
  60. package/dist/init/dependency-specs.d.ts.map +1 -1
  61. package/dist/init/dependency-specs.js +8 -0
  62. package/dist/init/dependency-specs.js.map +1 -1
  63. package/dist/init/package-json-patcher.d.ts +24 -0
  64. package/dist/init/package-json-patcher.d.ts.map +1 -1
  65. package/dist/init/package-json-patcher.js +58 -19
  66. package/dist/init/package-json-patcher.js.map +1 -1
  67. package/dist/init/pyproject-patcher.d.ts +6 -0
  68. package/dist/init/pyproject-patcher.d.ts.map +1 -1
  69. package/dist/init/pyproject-patcher.js +15 -0
  70. package/dist/init/pyproject-patcher.js.map +1 -1
  71. package/dist/init/python-augment.d.ts +5 -1
  72. package/dist/init/python-augment.d.ts.map +1 -1
  73. package/dist/init/python-augment.js +28 -6
  74. package/dist/init/python-augment.js.map +1 -1
  75. package/dist/init/template-files.d.ts +2 -0
  76. package/dist/init/template-files.d.ts.map +1 -1
  77. package/dist/init/template-files.js +2 -1
  78. package/dist/init/template-files.js.map +1 -1
  79. package/dist/main.d.ts +3 -0
  80. package/dist/main.d.ts.map +1 -1
  81. package/dist/main.js +18 -2
  82. package/dist/main.js.map +1 -1
  83. package/dist/package-manager.d.ts +34 -3
  84. package/dist/package-manager.d.ts.map +1 -1
  85. package/dist/package-manager.js +83 -4
  86. package/dist/package-manager.js.map +1 -1
  87. package/dist/providers/preset-loader.d.ts +2 -0
  88. package/dist/providers/preset-loader.d.ts.map +1 -1
  89. package/dist/providers/preset-loader.js +30 -11
  90. package/dist/providers/preset-loader.js.map +1 -1
  91. package/dist/providers/presets/gemini-api.json +55 -0
  92. package/dist/providers/presets/groq.json +39 -0
  93. package/dist/providers/presets/openai.json +50 -0
  94. package/dist/providers/presets/openrouter.json +61 -0
  95. package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +1 -1
  96. package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +1 -1
  97. package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +1 -1
  98. package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +1 -1
  99. package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +17 -8
  100. package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +1 -1
  101. package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +1 -1
  102. package/dist/sdk-skills/kindgi-getting-started/SKILL.md +1 -1
  103. package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +7 -5
  104. package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +7 -5
  105. package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +7 -5
  106. package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +7 -5
  107. package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +16 -13
  108. package/dist/templates/minimal/AGENTS.md +6 -3
  109. package/dist/templates/minimal/README.md.tmpl +11 -5
  110. package/dist/templates/minimal/package.json.tmpl +3 -0
  111. package/dist/templates/minimal/pnpm-workspace.yaml +2 -1
  112. package/dist/templates/python/AGENTS.md +7 -4
  113. package/dist/templates/python/README.md.tmpl +11 -5
  114. package/dist/templates/python/pyproject.toml.tmpl +1 -1
  115. package/dist/templates/sample/AGENTS.md +6 -3
  116. package/dist/templates/sample/README.md.tmpl +11 -5
  117. package/dist/templates/sample/package.json.tmpl +3 -0
  118. package/dist/templates/sample/pnpm-workspace.yaml +2 -1
  119. package/package.json +11 -11
@@ -0,0 +1,483 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * `kindgi doctor`: whether this machine and this folder are ready to run
5
+ * Kindgi, each check with what it found and, when it fails, the exact fix
6
+ * (T130). A coding agent reads `--json` and fixes what fails; a person
7
+ * reads the ✓/✗ lines. Any failed check exits 1.
8
+ *
9
+ * The checks, in order: Node, npm, Python and uv (a Python project's),
10
+ * Docker, pull access to the pinned runtime image, the project, its
11
+ * dependencies, a model key in its env files (never its value), the
12
+ * runtime `kindgi dev` runs, and a provider registered there. Outside a
13
+ * project the project's checks are skipped, saying why; a check that
14
+ * needs another (the registry needs Docker) is skipped when that one
15
+ * fails. `skip` is never a failure.
16
+ *
17
+ * Under `kindgi-cli` (the PyPI build, `KINDGI_CLI_INSTALL=pypi`), Node is
18
+ * the one the wheel brings and npm isn't needed, so neither is a failure,
19
+ * and the fixes say `uv run kindgi …` (or `uvx --from kindgi-cli kindgi …`
20
+ * outside a project), not npx.
21
+ */
22
+ import { spawn } from 'node:child_process';
23
+ import { readFile, readdir, stat } from 'node:fs/promises';
24
+ import { dirname, join, resolve } from 'node:path';
25
+ import { findKindgiConfig } from '@kindgi/handler-runtime';
26
+ import { LOCAL_ENV_NAME, displayEnvPath, readPackEnv } from '@kindgi/secrets-dotenv';
27
+ import { docker } from '../dev/runtime-container.js';
28
+ import { DEFAULT_RUNTIME_IMAGE, registryOf } from '../dev/runtime-image.js';
29
+ import { checkDocker, checkImageAccess, credentialHelperHint } from '../dev/runtime-registry.js';
30
+ import { renderJson } from '../output.js';
31
+ import { binCommand, cliInstall, defaultDetectIo, publishedCliSpec, pythonBinRunner, usablePackageManager, } from '../package-manager.js';
32
+ import { loadProviderPresets } from '../providers/preset-loader.js';
33
+ import { CLI_VERSION } from '../version-info.js';
34
+ /**
35
+ * The provider `kindgi dev` falls back to, with canned replies
36
+ * (`DEV_ECHO_PROVIDER_ID` in `@kindgi/dev-echo-provider`): not a model.
37
+ */
38
+ const DEV_ECHO_PROVIDER_ID = 'dev-echo';
39
+ /** The Node the CLI needs (`engines.node` in its package.json). */
40
+ export const MIN_NODE = '22.12.0';
41
+ /** The Python a Python project needs (`requires-python` in its pyproject.toml). */
42
+ export const MIN_PYTHON = '3.11.0';
43
+ const TITLES = {
44
+ node: 'Node.js',
45
+ npm: 'npm',
46
+ python: 'Python',
47
+ uv: 'uv',
48
+ docker: 'Docker',
49
+ registry: 'Runtime image',
50
+ project: 'Project',
51
+ dependencies: 'Dependencies',
52
+ 'model-key': 'Model key',
53
+ runtime: 'Runtime',
54
+ provider: 'Provider',
55
+ };
56
+ export const doctorCommand = {
57
+ kind: 'leaf',
58
+ name: 'doctor',
59
+ description: 'Check this machine and folder are ready to run Kindgi: Node, Docker, access to the runtime image, the project, its model key, the runtime and a provider. Each check says what it found and, when it fails, the exact fix. Exits 1 when any check fails; --json for a coding agent.',
60
+ usage: 'kindgi doctor [--path=<dir>] [--json]',
61
+ optionSpec: {
62
+ path: {
63
+ type: 'string',
64
+ description: 'The folder to check. Default: the current directory.',
65
+ },
66
+ },
67
+ run: async (ctx) => {
68
+ const dir = resolve(ctx.cwd, typeof ctx.options.path === 'string' ? ctx.options.path : '.');
69
+ const report = await runDoctor(ctx, dir);
70
+ const exitCode = report.ok ? 0 : 1;
71
+ if (ctx.globals.formatRequested) {
72
+ return { kind: 'ok', rendered: renderJson(report, ctx.globals.format), exitCode };
73
+ }
74
+ return { kind: 'ok', rendered: { stdout: doctorText(report), stderr: '' }, exitCode };
75
+ },
76
+ };
77
+ /** Every check, in order. */
78
+ export async function runDoctor(ctx, dir) {
79
+ const seam = ctx.doctorSeam ?? {};
80
+ const tool = seam.tool ?? runTool;
81
+ const run = seam.docker ?? docker;
82
+ const checks = [];
83
+ const config = await findKindgiConfig(dir);
84
+ const language = config === undefined ? undefined : config.format === 'pyproject' ? 'python' : 'node';
85
+ const pypi = cliInstall(ctx.env) === 'pypi';
86
+ const kindgi = await kindgiCommand(dir, language, pypi, tool);
87
+ checks.push(...(await nodeChecks(seam.nodeVersion ?? process.versions.node, tool, pypi)));
88
+ checks.push(...(await pythonChecks(tool, language)));
89
+ const dockerCheck = await checkDockerRunning(run);
90
+ checks.push(dockerCheck);
91
+ checks.push(dockerCheck.status === 'pass'
92
+ ? await registryCheck(run, seam.image ?? DEFAULT_RUNTIME_IMAGE, kindgi)
93
+ : skip('registry', 'Not checked: it needs Docker running.'));
94
+ if (config === undefined || language === undefined) {
95
+ checks.push({
96
+ id: 'project',
97
+ status: 'skip',
98
+ message: `No Kindgi project in ${dir}: no kindgi.config.ts, and no pyproject.toml with [tool.kindgi].`,
99
+ fix: createProjectFix(kindgi, pypi),
100
+ });
101
+ for (const id of ['dependencies', 'model-key', 'runtime', 'provider']) {
102
+ checks.push(skip(id, 'Not checked: it needs a project.'));
103
+ }
104
+ return report(checks, null);
105
+ }
106
+ const rc = await readKindgirc(dir);
107
+ checks.push(projectCheck(dir, language, rc));
108
+ checks.push(await dependenciesCheck(dir, language, tool));
109
+ checks.push(await modelKeyCheck(dir, seam, ctx.env, kindgi));
110
+ const runtime = await runtimeCheck(ctx, rc, kindgi);
111
+ checks.push(runtime.check);
112
+ checks.push(runtime.check.status === 'pass' && runtime.url !== undefined && rc.token !== undefined
113
+ ? await providerCheck(ctx, runtime.url, rc.token, kindgi, seam)
114
+ : skip('provider', `Not checked: it needs the runtime running (${kindgi('dev')}).`));
115
+ return report(checks, { dir, language });
116
+ }
117
+ /** The report as ✓/✗ lines, each failure with its fix. */
118
+ export function doctorText(report) {
119
+ const lines = [`kindgi doctor (CLI ${report.cliVersion})`];
120
+ for (const check of report.checks) {
121
+ const mark = check.status === 'pass' ? '✓' : check.status === 'fail' ? '✗' : '–';
122
+ lines.push(` ${mark} ${TITLES[check.id]}: ${check.message}`);
123
+ if (check.fix !== undefined && check.status !== 'pass')
124
+ lines.push(` Fix: ${check.fix}`);
125
+ }
126
+ const failed = report.checks.filter((c) => c.status === 'fail').length;
127
+ lines.push(failed === 0
128
+ ? 'Everything checked is ready.'
129
+ : `${failed} ${failed === 1 ? 'problem' : 'problems'} to fix.`);
130
+ return `${lines.join('\n')}\n`;
131
+ }
132
+ function report(checks, project) {
133
+ return {
134
+ ok: checks.every((c) => c.status !== 'fail'),
135
+ cliVersion: CLI_VERSION,
136
+ project,
137
+ checks,
138
+ };
139
+ }
140
+ const pass = (id, message) => ({ id, status: 'pass', message });
141
+ const fail = (id, message, fix) => ({
142
+ id,
143
+ status: 'fail',
144
+ message,
145
+ fix,
146
+ });
147
+ const skip = (id, message, fix) => ({
148
+ id,
149
+ status: 'skip',
150
+ message,
151
+ ...(fix !== undefined && { fix }),
152
+ });
153
+ // ---------- tools ----------
154
+ /** Node and npm. Under kindgi-cli, Node is the one the wheel brings and npm isn't needed. */
155
+ async function nodeChecks(version, tool, pypi) {
156
+ if (!pypi)
157
+ return [nodeCheck(version, false), await npmCheck(tool)];
158
+ return [
159
+ nodeCheck(version, true),
160
+ skip('npm', 'Not needed: this kindgi is kindgi-cli (from PyPI), for Python projects, and it brings its own Node.'),
161
+ ];
162
+ }
163
+ /** How to start a project here: kindgi-cli makes Python packs only. */
164
+ function createProjectFix(kindgi, pypi) {
165
+ return pypi
166
+ ? `Create one: ${kindgi('init', '<name>', '--template=python')}, then run doctor in its folder.`
167
+ : `Create one: ${kindgi('init', '<name>')} (TypeScript; add --template=python for Python), then run doctor in its folder.`;
168
+ }
169
+ function nodeCheck(version, pypi) {
170
+ return atLeast(version, MIN_NODE)
171
+ ? pass('node', pypi ? `Node ${version}, bundled with kindgi-cli.` : `Node ${version}.`)
172
+ : fail('node', `Node ${version}; Kindgi needs ${MIN_NODE} or later.`, `Install Node ${MIN_NODE} or later from https://nodejs.org (or: nvm install 22).`);
173
+ }
174
+ async function npmCheck(tool) {
175
+ const npm = await tool('npm', ['--version']);
176
+ return npm.code === 0
177
+ ? pass('npm', `npm ${npm.stdout.trim()}.`)
178
+ : fail('npm', "npm isn't on your PATH.", `npm comes with Node: reinstall Node ${MIN_NODE} or later from https://nodejs.org.`);
179
+ }
180
+ /** Python and uv: needed by a Python project; elsewhere, what's installed (for choosing a template). */
181
+ async function pythonChecks(tool, language) {
182
+ const python = await pythonVersion(tool);
183
+ const uv = await tool('uv', ['--version']);
184
+ const uvVersion = uv.code === 0
185
+ ? uv.stdout
186
+ .trim()
187
+ .replace(/^uv\s+/, '')
188
+ .split(/\s/)[0]
189
+ : undefined;
190
+ const pythonFix = `Install Python ${MIN_PYTHON.replace(/\.0$/, '')} or later (https://www.python.org/downloads, or: uv python install 3.12).`;
191
+ const uvFix = 'Install uv: curl -LsSf https://astral.sh/uv/install.sh | sh (or: brew install uv).';
192
+ if (language !== 'python') {
193
+ const why = language === 'node' ? 'a TypeScript project' : 'no project yet';
194
+ return [
195
+ skip('python', `Not needed (${why}); ${python !== undefined ? `Python ${python} is installed` : "Python isn't installed"}, for a Python project (kindgi init --template=python).`),
196
+ skip('uv', `Not needed (${why}); ${uvVersion !== undefined ? `uv ${uvVersion} is installed` : "uv isn't installed"}, for a Python project.`),
197
+ ];
198
+ }
199
+ return [
200
+ python === undefined
201
+ ? fail('python', "Python isn't installed (python3 isn't on your PATH).", pythonFix)
202
+ : atLeast(python, MIN_PYTHON)
203
+ ? pass('python', `Python ${python}.`)
204
+ : fail('python', `Python ${python}; a Kindgi Python project needs 3.11 or later.`, pythonFix),
205
+ uvVersion !== undefined
206
+ ? pass('uv', `uv ${uvVersion}.`)
207
+ : fail('uv', "uv isn't installed: a Kindgi Python project installs and runs with it.", uvFix),
208
+ ];
209
+ }
210
+ async function pythonVersion(tool) {
211
+ for (const command of ['python3', 'python']) {
212
+ const got = await tool(command, ['--version']);
213
+ const version = /Python\s+(\d+\.\d+\.\d+)/.exec(`${got.stdout} ${got.stderr}`)?.[1];
214
+ if (got.code === 0 && version !== undefined)
215
+ return version;
216
+ }
217
+ return undefined;
218
+ }
219
+ // ---------- Docker and the runtime image ----------
220
+ async function checkDockerRunning(run) {
221
+ const ready = await checkDocker(run);
222
+ if (ready.kind === 'ok')
223
+ return pass('docker', 'Docker is running.');
224
+ const [message = ready.message, ...rest] = ready.message.split('\n');
225
+ return fail('docker', message, rest.map((l) => l.trim()).join(' '));
226
+ }
227
+ async function registryCheck(run, image, kindgi) {
228
+ const access = await checkImageAccess(run, image);
229
+ const host = registryOf(image);
230
+ const login = `${kindgi('auth', 'registry', '--username', '<robot name>', '--password-stdin')} (the robot name and token come from access.kindgi.com; pipe the token in, never paste it into a chat)`;
231
+ switch (access.kind) {
232
+ case 'ok':
233
+ return pass('registry', `Docker can pull the runtime image (${image}).`);
234
+ case 'no-access':
235
+ return fail('registry', `Docker can't pull the runtime image from ${host}: ${firstLine(access.detail)}`, `Log Docker in with your pull token: ${login}. Then run doctor again.`);
236
+ case 'not-found':
237
+ return access.maybeNoAccess === true
238
+ ? fail('registry', `Docker has no access to the runtime image on ${host}, or it isn't there: docker manifest inspect can't tell them apart (${firstLine(access.detail)}).`, `If you haven't logged Docker in yet: ${login}. Otherwise check this machine can reach ${host}, then run doctor again.`)
239
+ : fail('registry', `Couldn't find the runtime image on ${host}: ${firstLine(access.detail)}`, `Check this machine can reach ${host} (the network, a proxy or a firewall), then run doctor again.`);
240
+ case 'credential-helper':
241
+ return fail('registry', `Docker couldn't run its credential helper${access.helper !== undefined ? ` (docker-credential-${access.helper})` : ''}: ${firstLine(access.detail)}`, credentialHelperHint(access.helper));
242
+ case 'no-tool':
243
+ return fail('registry', "Couldn't check the runtime image: neither docker buildx nor docker manifest is available.", 'Docker Desktop includes buildx; on Linux, install the docker-buildx-plugin package.');
244
+ }
245
+ }
246
+ /** `.kindgirc.json`, which `kindgi dev` writes: the runtime's URL and token. */
247
+ async function readKindgirc(dir) {
248
+ let raw;
249
+ try {
250
+ raw = await readFile(join(dir, '.kindgirc.json'), 'utf8');
251
+ }
252
+ catch {
253
+ return { exists: false };
254
+ }
255
+ try {
256
+ const parsed = JSON.parse(raw);
257
+ return {
258
+ exists: true,
259
+ ...(typeof parsed.apiUrl === 'string' && parsed.apiUrl !== '' && { apiUrl: parsed.apiUrl }),
260
+ ...(typeof parsed.token === 'string' && parsed.token !== '' && { token: parsed.token }),
261
+ };
262
+ }
263
+ catch (err) {
264
+ return { exists: true, malformed: err.message };
265
+ }
266
+ }
267
+ function projectCheck(dir, language, rc) {
268
+ const kind = language === 'python'
269
+ ? 'A Python project (pyproject.toml)'
270
+ : 'A TypeScript project (kindgi.config.ts)';
271
+ if (rc.malformed !== undefined) {
272
+ return fail('project', `${kind} in ${dir}, but its .kindgirc.json isn't valid JSON (${rc.malformed}).`, 'Delete .kindgirc.json: kindgi dev writes a new one on its next start.');
273
+ }
274
+ return pass('project', `${kind} in ${dir}; ${rc.exists ? 'kindgi dev has run here (.kindgirc.json)' : "kindgi dev hasn't run here yet"}.`);
275
+ }
276
+ async function dependenciesCheck(dir, language, tool) {
277
+ if (language === 'python') {
278
+ return (await pythonPackageInstalled(dir))
279
+ ? pass('dependencies', 'The kindgi package is installed in .venv.')
280
+ : fail('dependencies', "The kindgi package isn't installed in this project's .venv.", 'Install the dependencies: uv sync');
281
+ }
282
+ if (await nodePackageInstalled(dir, '@kindgi/sdk')) {
283
+ return pass('dependencies', '@kindgi/sdk is installed.');
284
+ }
285
+ const { pm, declared } = await installedPackageManager(dir, tool);
286
+ return fail('dependencies', "@kindgi/sdk isn't installed: the project's dependencies aren't.", `Install them: ${pm} install${declared !== undefined ? ` (the project names ${declared}, which isn't installed here)` : ''}`);
287
+ }
288
+ /** `node_modules/<name>` here or in a folder above (a workspace hoists it). */
289
+ async function nodePackageInstalled(dir, name) {
290
+ let current = dir;
291
+ for (;;) {
292
+ if (await isDirectory(join(current, 'node_modules', name)))
293
+ return true;
294
+ const parent = dirname(current);
295
+ if (parent === current)
296
+ return false;
297
+ current = parent;
298
+ }
299
+ }
300
+ /** `kindgi` in `.venv`'s site-packages (`lib/python3.x/` on macOS and Linux, `Lib/` on Windows). */
301
+ async function pythonPackageInstalled(dir) {
302
+ const venv = join(dir, '.venv');
303
+ if (await isDirectory(join(venv, 'Lib', 'site-packages', 'kindgi')))
304
+ return true;
305
+ let versions;
306
+ try {
307
+ versions = (await readdir(join(venv, 'lib'))).filter((n) => n.startsWith('python'));
308
+ }
309
+ catch {
310
+ return false;
311
+ }
312
+ for (const version of versions) {
313
+ if (await isDirectory(join(venv, 'lib', version, 'site-packages', 'kindgi')))
314
+ return true;
315
+ }
316
+ return false;
317
+ }
318
+ /** `a`, `a or b`, `a, b or c`. */
319
+ function orList(items) {
320
+ return items.length <= 1
321
+ ? (items[0] ?? '')
322
+ : `${items.slice(0, -1).join(', ')} or ${items[items.length - 1]}`;
323
+ }
324
+ /** The presets that take an LLM provider key, with the key's name, in preset order. */
325
+ async function keyedPresets(seam) {
326
+ const presets = await (seam.presets ?? (() => loadProviderPresets()))();
327
+ return Object.values(presets).flatMap((p) => p.secret !== undefined ? [{ name: p.name, secret: p.secret }] : []);
328
+ }
329
+ /** A model key the presets name, set in the project's env files. Its value is never read out. */
330
+ async function modelKeyCheck(dir, seam, hostEnv, kindgi) {
331
+ const names = [...new Set((await keyedPresets(seam)).map((p) => p.secret))];
332
+ const env = await readPackEnv({ packDir: dir, envName: LOCAL_ENV_NAME });
333
+ const files = env.files.read.map((f) => displayEnvPath(dir, f)).join(' or ');
334
+ const found = names.find((name) => (env.values[name] ?? '').trim() !== '');
335
+ if (found !== undefined) {
336
+ const origin = env.origin[found];
337
+ return pass('model-key', `${found} is set${origin !== undefined ? ` in ${displayEnvPath(dir, origin)}` : ''}.`);
338
+ }
339
+ const inShell = names.find((name) => (hostEnv[name] ?? '').trim() !== '');
340
+ const want = names[0] ?? 'ANTHROPIC_API_KEY';
341
+ const others = names.slice(1);
342
+ return fail('model-key', `No model key in ${files} (looked for ${names.join(', ')})${inShell !== undefined ? `; ${inShell} is set in your shell, but kindgi dev reads keys from the project's env files` : ''}.`, `With kindgi dev running, set one LLM provider's key: ${kindgi('secrets', 'set', want, '--env=local', '--scope=tenant')}${others.length > 0 ? `, or the same with ${orList(others)}` : ''} (it prompts without echoing; or pipe it in with --from-stdin). Never paste a key into a chat.`);
343
+ }
344
+ // ---------- the runtime ----------
345
+ async function runtimeCheck(ctx, rc, kindgi) {
346
+ const start = `Start it: ${kindgi('dev')} (it keeps running; stop it with Ctrl+C).`;
347
+ const restart = `Restart kindgi dev (Ctrl+C, then ${kindgi('dev')})`;
348
+ if (rc.apiUrl === undefined) {
349
+ return {
350
+ check: skip('runtime', "Not running: kindgi dev hasn't run here yet.", start),
351
+ };
352
+ }
353
+ const url = `${rc.apiUrl.replace(/\/+$/, '')}/health`;
354
+ try {
355
+ const res = await ctx.fetch(url, { method: 'GET', signal: AbortSignal.timeout(5000) });
356
+ if (res.ok)
357
+ return { check: pass('runtime', `The runtime answers at ${rc.apiUrl}.`), url: rc.apiUrl };
358
+ return {
359
+ check: fail('runtime', `Something answers at ${rc.apiUrl}, but not as a healthy Kindgi runtime (HTTP ${res.status}).`, `${restart}; if another program holds that port, kindgi dev picks a free one.`),
360
+ };
361
+ }
362
+ catch (err) {
363
+ if (isTimeout(err)) {
364
+ return {
365
+ check: fail('runtime', `Something holds ${rc.apiUrl} but didn't answer within 5 s.`, `${restart}.`),
366
+ };
367
+ }
368
+ return {
369
+ check: skip('runtime', `Not running: nothing answers at ${rc.apiUrl}.`, start),
370
+ };
371
+ }
372
+ }
373
+ async function providerCheck(ctx, apiUrl, token, kindgi, seam) {
374
+ try {
375
+ const page = await ctx.clientFor(apiUrl, token).providers.list();
376
+ const ids = page.data.map((p) => p.id ?? '?');
377
+ const models = ids.filter((id) => id !== DEV_ECHO_PROVIDER_ID);
378
+ const presets = (await keyedPresets(seam)).map((p) => p.name);
379
+ const register = presets.length > 1
380
+ ? `Register the provider whose key you set: ${kindgi('providers', 'register', '--preset=<preset>')}, where <preset> is ${orList(presets)} (see Model key).`
381
+ : `Register one: ${kindgi('providers', 'register', `--preset=${presets[0] ?? 'anthropic'}`)} (its key must be set first; see Model key).`;
382
+ if (models.length > 0) {
383
+ return pass('provider', `${models.length === 1 ? 'A provider is' : `${models.length} providers are`} registered: ${models.join(', ')}.`);
384
+ }
385
+ return ids.length > 0
386
+ ? fail('provider', `Only ${DEV_ECHO_PROVIDER_ID} is registered: agents get its canned replies, not a model's.`, register)
387
+ : fail('provider', 'No provider is registered, so an agent has no model to call.', register);
388
+ }
389
+ catch (err) {
390
+ return fail('provider', `Couldn't list the providers: ${err.message}`, 'Run doctor again once kindgi dev has finished starting; if it persists, restart kindgi dev.');
391
+ }
392
+ }
393
+ /**
394
+ * In a TypeScript project, its own CLI (`pnpm exec kindgi …`,
395
+ * `npx --no kindgi …`); in a Python project or outside one, the
396
+ * published CLI of this version through npx.
397
+ */
398
+ async function kindgiCommand(dir, language, pypi, tool) {
399
+ if (pypi) {
400
+ // The PyPI build runs from the project's own environment; outside one, uvx.
401
+ if (language === undefined) {
402
+ return (...args) => ['uvx', '--from', 'kindgi-cli', 'kindgi', ...args].join(' ');
403
+ }
404
+ const runner = await pythonBinRunner(dir, { KINDGI_CLI_INSTALL: 'pypi' });
405
+ return (...args) => {
406
+ const c = binCommand(runner, 'kindgi', args);
407
+ return [c.command, ...c.args].join(' ');
408
+ };
409
+ }
410
+ if (language === 'node') {
411
+ const runner = (await installedPackageManager(dir, tool)).pm;
412
+ return (...args) => {
413
+ const c = binCommand(runner, 'kindgi', args);
414
+ return [c.command, ...c.args].join(' ');
415
+ };
416
+ }
417
+ const spec = publishedCliSpec(CLI_VERSION);
418
+ return (...args) => ['npx', spec, ...args].join(' ');
419
+ }
420
+ /**
421
+ * The package manager that runs here (`usablePackageManager`), asking
422
+ * through doctor's tool seam whether a declared one is installed.
423
+ */
424
+ function installedPackageManager(dir, tool) {
425
+ return usablePackageManager(dir, {
426
+ ...defaultDetectIo,
427
+ runs: async (pm) => (await tool(pm, ['--version'])).code === 0,
428
+ });
429
+ }
430
+ /** Run a tool to completion; `code: null` when it isn't installed. Gives up after 15 s. */
431
+ function runTool(command, args) {
432
+ return new Promise((done) => {
433
+ let stdout = '';
434
+ let stderr = '';
435
+ const child = spawn(command, [...args], { stdio: ['ignore', 'pipe', 'pipe'] });
436
+ const timer = setTimeout(() => child.kill(), 15_000);
437
+ child.stdout?.on('data', (c) => {
438
+ stdout += c.toString('utf8');
439
+ });
440
+ child.stderr?.on('data', (c) => {
441
+ stderr += c.toString('utf8');
442
+ });
443
+ child.on('error', (err) => {
444
+ clearTimeout(timer);
445
+ done({ code: null, stdout, stderr: err.message });
446
+ });
447
+ child.on('close', (code) => {
448
+ clearTimeout(timer);
449
+ done({ code: code ?? 1, stdout, stderr });
450
+ });
451
+ });
452
+ }
453
+ /** `a` ≥ `b`, comparing `major.minor.patch`. */
454
+ export function atLeast(a, b) {
455
+ const parse = (v) => v
456
+ .replace(/^v/, '')
457
+ .split(/[.-]/)
458
+ .slice(0, 3)
459
+ .map((n) => Number.parseInt(n, 10) || 0);
460
+ const [x, y] = [parse(a), parse(b)];
461
+ for (let i = 0; i < 3; i += 1) {
462
+ const d = (x[i] ?? 0) - (y[i] ?? 0);
463
+ if (d !== 0)
464
+ return d > 0;
465
+ }
466
+ return true;
467
+ }
468
+ async function isDirectory(path) {
469
+ try {
470
+ return (await stat(path)).isDirectory();
471
+ }
472
+ catch {
473
+ return false;
474
+ }
475
+ }
476
+ function firstLine(text) {
477
+ return text.trim().split('\n')[0] ?? '';
478
+ }
479
+ function isTimeout(err) {
480
+ const name = err?.name;
481
+ return name === 'TimeoutError' || name === 'AbortError';
482
+ }
483
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrF,OAAO,EAAqB,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAEL,UAAU,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAuB,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;;GAGG;AACH,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAExC,mEAAmE;AACnE,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAClC,mFAAmF;AACnF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAqDnC,MAAM,MAAM,GAA4C;IACtD,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,WAAW;IACxB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,QAAQ;IACd,WAAW,EACT,qRAAqR;IACvR,KAAK,EAAE,uCAAuC;IAC9C,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,sDAAsD;SACpE;KACF;IACD,GAAG,EAAE,KAAK,EAAE,GAAG,EAA0B,EAAE;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;QACpF,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IACxF,CAAC;CACF,CAAC;AAEF,6BAA6B;AAC7B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAmB,EAAE,GAAW;IAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;IAClC,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,QAAQ,GACZ,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IACvF,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAE9D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,MAAM,CAAC,IAAI,CACT,WAAW,CAAC,MAAM,KAAK,MAAM;QAC3B,CAAC,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,qBAAqB,EAAE,MAAM,CAAC;QACvE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,uCAAuC,CAAC,CAC9D,CAAC;IAEF,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,SAAS;YACb,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,wBAAwB,GAAG,kEAAkE;YACtG,GAAG,EAAE,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC;SACpC,CAAC,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAU,EAAE,CAAC;YAC/E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,kCAAkC,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC,KAAK,KAAK,SAAS;QACpF,CAAC,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;QAC/D,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,8CAA8C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CACtF,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,UAAU,CAAC,MAAoB;IAC7C,MAAM,KAAK,GAAG,CAAC,sBAAsB,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;IAC3D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACvE,KAAK,CAAC,IAAI,CACR,MAAM,KAAK,CAAC;QACV,CAAC,CAAC,8BAA8B;QAChC,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,UAAU,CACjE,CAAC;IACF,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,MAAM,CAAC,MAA8B,EAAE,OAAgC;IAC9E,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;QAC5C,UAAU,EAAE,WAAW;QACvB,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,EAAiB,EAAE,OAAe,EAAe,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AACpG,MAAM,IAAI,GAAG,CAAC,EAAiB,EAAE,OAAe,EAAE,GAAW,EAAe,EAAE,CAAC,CAAC;IAC9E,EAAE;IACF,MAAM,EAAE,MAAM;IACd,OAAO;IACP,GAAG;CACJ,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,CAAC,EAAiB,EAAE,OAAe,EAAE,GAAY,EAAe,EAAE,CAAC,CAAC;IAC/E,EAAE;IACF,MAAM,EAAE,MAAM;IACd,OAAO;IACP,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH,8BAA8B;AAE9B,6FAA6F;AAC7F,KAAK,UAAU,UAAU,CACvB,OAAe,EACf,IAAqC,EACrC,IAAa;IAEb,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,OAAO;QACL,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;QACxB,IAAI,CACF,KAAK,EACL,qGAAqG,CACtG;KACF,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,SAAS,gBAAgB,CAAC,MAAc,EAAE,IAAa;IACrD,OAAO,IAAI;QACT,CAAC,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,CAAC,kCAAkC;QAChG,CAAC,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,iFAAiF,CAAC;AAC/H,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,IAAa;IAC/C,OAAO,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,OAAO,4BAA4B,CAAC,CAAC,CAAC,QAAQ,OAAO,GAAG,CAAC;QACvF,CAAC,CAAC,IAAI,CACF,MAAM,EACN,QAAQ,OAAO,kBAAkB,QAAQ,YAAY,EACrD,gBAAgB,QAAQ,yDAAyD,CAClF,CAAC;AACR,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAqC;IAC3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC;QACnB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;QAC1C,CAAC,CAAC,IAAI,CACF,KAAK,EACL,yBAAyB,EACzB,uCAAuC,QAAQ,oCAAoC,CACpF,CAAC;AACR,CAAC;AAED,wGAAwG;AACxG,KAAK,UAAU,YAAY,CACzB,IAAqC,EACrC,QAAuC;IAEvC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,GACb,EAAE,CAAC,IAAI,KAAK,CAAC;QACX,CAAC,CAAC,EAAE,CAAC,MAAM;aACN,IAAI,EAAE;aACN,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACrB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,SAAS,GAAG,kBAAkB,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,2EAA2E,CAAC;IAC9I,MAAM,KAAK,GACT,oFAAoF,CAAC;IACvF,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAC5E,OAAO;YACL,IAAI,CACF,QAAQ,EACR,eAAe,GAAG,MAAM,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,MAAM,eAAe,CAAC,CAAC,CAAC,wBAAwB,yDAAyD,CACnK;YACD,IAAI,CACF,IAAI,EACJ,eAAe,GAAG,MAAM,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,SAAS,eAAe,CAAC,CAAC,CAAC,oBAAoB,yBAAyB,CACjI;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,sDAAsD,EAAE,SAAS,CAAC;YACnF,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;gBAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,MAAM,GAAG,CAAC;gBACrC,CAAC,CAAC,IAAI,CACF,QAAQ,EACR,UAAU,MAAM,gDAAgD,EAChE,SAAS,CACV;QACP,SAAS,KAAK,SAAS;YACrB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,SAAS,GAAG,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,wEAAwE,EAAE,KAAK,CAAC;KAChG,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAqC;IAChE,KAAK,MAAM,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpF,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qDAAqD;AAErD,KAAK,UAAU,kBAAkB,CAAC,GAAiB;IACjD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IACrE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAAiB,EACjB,KAAa,EACb,MAAc;IAEd,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,CAAC,wGAAwG,CAAC;IACtM,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,IAAI;YACP,OAAO,IAAI,CAAC,UAAU,EAAE,sCAAsC,KAAK,IAAI,CAAC,CAAC;QAC3E,KAAK,WAAW;YACd,OAAO,IAAI,CACT,UAAU,EACV,4CAA4C,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAC/E,uCAAuC,KAAK,0BAA0B,CACvE,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,MAAM,CAAC,aAAa,KAAK,IAAI;gBAClC,CAAC,CAAC,IAAI,CACF,UAAU,EACV,gDAAgD,IAAI,uEAAuE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EACvJ,wCAAwC,KAAK,4CAA4C,IAAI,0BAA0B,CACxH;gBACH,CAAC,CAAC,IAAI,CACF,UAAU,EACV,sCAAsC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EACzE,gCAAgC,IAAI,+DAA+D,CACpG,CAAC;QACR,KAAK,mBAAmB;YACtB,OAAO,IAAI,CACT,UAAU,EACV,4CAA4C,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EACrJ,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CACpC,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO,IAAI,CACT,UAAU,EACV,2FAA2F,EAC3F,qFAAqF,CACtF,CAAC;IACN,CAAC;AACH,CAAC;AAYD,gFAAgF;AAChF,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0C,CAAC;QACxE,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;SACxF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,QAA2B,EAAE,EAAY;IAC1E,MAAM,IAAI,GACR,QAAQ,KAAK,QAAQ;QACnB,CAAC,CAAC,mCAAmC;QACrC,CAAC,CAAC,yCAAyC,CAAC;IAChD,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,IAAI,CACT,SAAS,EACT,GAAG,IAAI,OAAO,GAAG,8CAA8C,EAAE,CAAC,SAAS,IAAI,EAC/E,uEAAuE,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CACT,SAAS,EACT,GAAG,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,gCAAgC,GAAG,CACnH,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,GAAW,EACX,QAA2B,EAC3B,IAAqC;IAErC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,2CAA2C,CAAC;YACnE,CAAC,CAAC,IAAI,CACF,cAAc,EACd,6DAA6D,EAC7D,mCAAmC,CACpC,CAAC;IACR,CAAC;IACD,IAAI,MAAM,oBAAoB,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClE,OAAO,IAAI,CACT,cAAc,EACd,iEAAiE,EACjE,iBAAiB,EAAE,WAAW,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,QAAQ,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7H,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,KAAK,UAAU,oBAAoB,CAAC,GAAW,EAAE,IAAY;IAC3D,IAAI,OAAO,GAAG,GAAG,CAAC;IAClB,SAAS,CAAC;QACR,IAAI,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;QACrC,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC;AAED,oGAAoG;AACpG,KAAK,UAAU,sBAAsB,CAAC,GAAW;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjF,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kCAAkC;AAClC,SAAS,MAAM,CAAC,KAAwB;IACtC,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC;QACtB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClB,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,uFAAuF;AACvF,KAAK,UAAU,YAAY,CACzB,IAAgB;IAEhB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,CAAC;IACxE,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1C,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CACnE,CAAC;AACJ,CAAC;AAED,iGAAiG;AACjG,KAAK,UAAU,aAAa,CAC1B,GAAW,EACX,IAAgB,EAChB,OAAqD,EACrD,MAAc;IAEd,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CACT,WAAW,EACX,GAAG,KAAK,UAAU,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CACtF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,IAAI,CACT,WAAW,EACX,mBAAmB,KAAK,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,+EAA+E,CAAC,CAAC,CAAC,EAAE,GAAG,EACvL,wDAAwD,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gGAAgG,CAC1R,CAAC;AACJ,CAAC;AAED,oCAAoC;AAEpC,KAAK,UAAU,YAAY,CACzB,GAAmB,EACnB,EAAY,EACZ,MAAc;IAEd,MAAM,KAAK,GAAG,aAAa,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC;IACpF,MAAM,OAAO,GAAG,oCAAoC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IACrE,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,8CAA8C,EAAE,KAAK,CAAC;SAC9E,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,IAAI,GAAG,CAAC,EAAE;YACR,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,0BAA0B,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;QAC5F,OAAO;YACL,KAAK,EAAE,IAAI,CACT,SAAS,EACT,wBAAwB,EAAE,CAAC,MAAM,+CAA+C,GAAG,CAAC,MAAM,IAAI,EAC9F,GAAG,OAAO,oEAAoE,CAC/E;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO;gBACL,KAAK,EAAE,IAAI,CACT,SAAS,EACT,mBAAmB,EAAE,CAAC,MAAM,gCAAgC,EAC5D,GAAG,OAAO,GAAG,CACd;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,mCAAmC,EAAE,CAAC,MAAM,GAAG,EAAE,KAAK,CAAC;SAC/E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAAmB,EACnB,MAAc,EACd,KAAa,EACb,MAAc,EACd,IAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAqB,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,oBAAoB,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,QAAQ,GACZ,OAAO,CAAC,MAAM,GAAG,CAAC;YAChB,CAAC,CAAC,4CAA4C,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,mBAAmB,CAAC,uBAAuB,MAAM,CAAC,OAAO,CAAC,mBAAmB;YAC3J,CAAC,CAAC,iBAAiB,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,8CAA8C,CAAC;QAC9I,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CACT,UAAU,EACV,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,gBAAgB,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAChH,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,IAAI,CACF,UAAU,EACV,QAAQ,oBAAoB,+DAA+D,EAC3F,QAAQ,CACT;YACH,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,8DAA8D,EAAE,QAAQ,CAAC,CAAC;IACjG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,IAAI,CACT,UAAU,EACV,gCAAiC,GAAa,CAAC,OAAO,EAAE,EACxD,6FAA6F,CAC9F,CAAC;IACJ,CAAC;AACH,CAAC;AAOD;;;;GAIG;AACH,KAAK,UAAU,aAAa,CAC1B,GAAW,EACX,QAAuC,EACvC,IAAa,EACb,IAAqC;IAErC,IAAI,IAAI,EAAE,CAAC;QACT,4EAA4E;QAC5E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE;YACjB,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,CAAC,MAAM,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE;YACjB,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAC9B,GAAW,EACX,IAAqC;IAErC,OAAO,oBAAoB,CAAC,GAAG,EAAE;QAC/B,GAAG,eAAe;QAClB,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC;AAED,2FAA2F;AAC3F,SAAS,OAAO,CAAC,OAAe,EAAE,IAAuB;IACvD,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QACrD,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;YACrC,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;YACrC,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAC1B,CAAC;SACE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,KAAK,CAAC,MAAM,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,MAAM,IAAI,GAAI,GAAgC,EAAE,IAAI,CAAC;IACrD,OAAO,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,YAAY,CAAC;AAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAwC3C,CAAC;AAEF,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAyC3C,CAAC;AAEF,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO/C"}
@@ -11,6 +11,7 @@ import { capabilitiesCommand } from './capabilities.js';
11
11
  import { conversationsCommand } from './conversations.js';
12
12
  import { deployCommand } from './deploy.js';
13
13
  import { devCommand } from './dev.js';
14
+ import { doctorCommand } from './doctor.js';
14
15
  import { envCommand } from './env.js';
15
16
  import { evalRunsCommand } from './eval-runs.js';
16
17
  import { evalSuitesCommand } from './eval-suites.js';
@@ -77,6 +78,7 @@ export const ROOT_COMMANDS = [
77
78
  skillsCommand,
78
79
  feedbackCommand,
79
80
  healthCommand,
81
+ doctorCommand,
80
82
  versionCommand,
81
83
  ];
82
84
  export function findCommand(tokens) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA2BpD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,EAAE,WAgDzB,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,aAAa,QAA0C,CAAC;AAErE,eAAO,MAAM,mBAAmB,0CAA2C,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAoBhE;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,cAAc,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CAiDxB;AA0WD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAMzD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAgCpD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,EAAE,WAgDzB,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,aAAa,QAA0C,CAAC;AAErE,eAAO,MAAM,mBAAmB,0CAA2C,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAoBhE;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,cAAc,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CAkDxB;AA2XD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAMzD"}