@tyvm/knowhow 0.0.108-dev.c7d102c → 0.0.108-dev.ed88cf4

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 (156) hide show
  1. package/package.json +2 -3
  2. package/src/agents/tools/index.ts +0 -1
  3. package/src/agents/tools/list.ts +0 -2
  4. package/src/chat/CliChatService.ts +10 -1
  5. package/src/chat/renderer/CompactRenderer.ts +20 -0
  6. package/src/chat/renderer/ConsoleRenderer.ts +19 -0
  7. package/src/chat/renderer/FancyRenderer.ts +19 -0
  8. package/src/chat/renderer/types.ts +11 -0
  9. package/src/cli.ts +91 -664
  10. package/src/clients/index.ts +6 -5
  11. package/src/commands/agent.ts +246 -0
  12. package/src/commands/misc.ts +174 -0
  13. package/src/commands/modules.ts +182 -0
  14. package/src/commands/services.ts +77 -0
  15. package/src/commands/workers.ts +160 -0
  16. package/src/config.ts +37 -0
  17. package/src/index.ts +1 -0
  18. package/src/logger.ts +197 -0
  19. package/src/plugins/plugins.ts +0 -21
  20. package/src/processors/JsonCompressor.ts +3 -3
  21. package/src/services/EventService.ts +61 -1
  22. package/src/services/modules/index.ts +70 -50
  23. package/src/services/modules/types.ts +4 -0
  24. package/src/tunnel.ts +216 -0
  25. package/src/types.ts +0 -1
  26. package/src/worker.ts +65 -336
  27. package/src/workers/auth/WsMiddleware.ts +99 -0
  28. package/src/workers/auth/authMiddleware.ts +104 -0
  29. package/src/workers/auth/types.ts +14 -2
  30. package/tests/unit/commands/github-credentials.test.ts +211 -0
  31. package/tests/unit/modules/moduleLoading.test.ts +39 -37
  32. package/tests/unit/plugins/pluginLoading.test.ts +0 -85
  33. package/ts_build/package.json +2 -3
  34. package/ts_build/src/agents/tools/index.d.ts +0 -1
  35. package/ts_build/src/agents/tools/index.js +0 -1
  36. package/ts_build/src/agents/tools/index.js.map +1 -1
  37. package/ts_build/src/agents/tools/list.js +0 -2
  38. package/ts_build/src/agents/tools/list.js.map +1 -1
  39. package/ts_build/src/chat/CliChatService.js +13 -1
  40. package/ts_build/src/chat/CliChatService.js.map +1 -1
  41. package/ts_build/src/chat/renderer/CompactRenderer.d.ts +4 -0
  42. package/ts_build/src/chat/renderer/CompactRenderer.js +16 -0
  43. package/ts_build/src/chat/renderer/CompactRenderer.js.map +1 -1
  44. package/ts_build/src/chat/renderer/ConsoleRenderer.d.ts +4 -0
  45. package/ts_build/src/chat/renderer/ConsoleRenderer.js +16 -0
  46. package/ts_build/src/chat/renderer/ConsoleRenderer.js.map +1 -1
  47. package/ts_build/src/chat/renderer/FancyRenderer.d.ts +4 -0
  48. package/ts_build/src/chat/renderer/FancyRenderer.js +16 -0
  49. package/ts_build/src/chat/renderer/FancyRenderer.js.map +1 -1
  50. package/ts_build/src/chat/renderer/types.d.ts +2 -0
  51. package/ts_build/src/cli.js +47 -525
  52. package/ts_build/src/cli.js.map +1 -1
  53. package/ts_build/src/clients/index.js +2 -4
  54. package/ts_build/src/clients/index.js.map +1 -1
  55. package/ts_build/src/commands/agent.d.ts +6 -0
  56. package/ts_build/src/commands/agent.js +229 -0
  57. package/ts_build/src/commands/agent.js.map +1 -0
  58. package/ts_build/src/commands/misc.d.ts +10 -0
  59. package/ts_build/src/commands/misc.js +197 -0
  60. package/ts_build/src/commands/misc.js.map +1 -0
  61. package/ts_build/src/commands/modules.d.ts +3 -0
  62. package/ts_build/src/commands/modules.js +160 -0
  63. package/ts_build/src/commands/modules.js.map +1 -0
  64. package/ts_build/src/commands/services.d.ts +5 -0
  65. package/ts_build/src/commands/services.js +87 -0
  66. package/ts_build/src/commands/services.js.map +1 -0
  67. package/ts_build/src/commands/workers.d.ts +6 -0
  68. package/ts_build/src/commands/workers.js +163 -0
  69. package/ts_build/src/commands/workers.js.map +1 -0
  70. package/ts_build/src/config.d.ts +1 -0
  71. package/ts_build/src/config.js +32 -0
  72. package/ts_build/src/config.js.map +1 -1
  73. package/ts_build/src/index.d.ts +1 -0
  74. package/ts_build/src/index.js +3 -1
  75. package/ts_build/src/index.js.map +1 -1
  76. package/ts_build/src/logger.d.ts +21 -0
  77. package/ts_build/src/logger.js +106 -0
  78. package/ts_build/src/logger.js.map +1 -0
  79. package/ts_build/src/plugins/plugins.d.ts +0 -2
  80. package/ts_build/src/plugins/plugins.js +0 -11
  81. package/ts_build/src/plugins/plugins.js.map +1 -1
  82. package/ts_build/src/processors/JsonCompressor.js +1 -1
  83. package/ts_build/src/services/EventService.d.ts +6 -1
  84. package/ts_build/src/services/EventService.js +29 -0
  85. package/ts_build/src/services/EventService.js.map +1 -1
  86. package/ts_build/src/services/modules/index.d.ts +33 -0
  87. package/ts_build/src/services/modules/index.js +46 -45
  88. package/ts_build/src/services/modules/index.js.map +1 -1
  89. package/ts_build/src/services/modules/types.d.ts +4 -0
  90. package/ts_build/src/tunnel.d.ts +27 -0
  91. package/ts_build/src/tunnel.js +112 -0
  92. package/ts_build/src/tunnel.js.map +1 -0
  93. package/ts_build/src/types.d.ts +0 -1
  94. package/ts_build/src/types.js.map +1 -1
  95. package/ts_build/src/worker.d.ts +1 -4
  96. package/ts_build/src/worker.js +38 -244
  97. package/ts_build/src/worker.js.map +1 -1
  98. package/ts_build/src/workers/auth/WsMiddleware.d.ts +8 -0
  99. package/ts_build/src/workers/auth/WsMiddleware.js +65 -0
  100. package/ts_build/src/workers/auth/WsMiddleware.js.map +1 -0
  101. package/ts_build/src/workers/auth/authMiddleware.d.ts +3 -0
  102. package/ts_build/src/workers/auth/authMiddleware.js +60 -0
  103. package/ts_build/src/workers/auth/authMiddleware.js.map +1 -0
  104. package/ts_build/src/workers/auth/types.d.ts +8 -1
  105. package/ts_build/tests/unit/commands/github-credentials.test.d.ts +1 -0
  106. package/ts_build/tests/unit/commands/github-credentials.test.js +146 -0
  107. package/ts_build/tests/unit/commands/github-credentials.test.js.map +1 -0
  108. package/ts_build/tests/unit/modules/moduleLoading.test.js +20 -26
  109. package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
  110. package/ts_build/tests/unit/plugins/pluginLoading.test.js +0 -65
  111. package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -1
  112. package/src/agents/tools/executeScript/README.md +0 -94
  113. package/src/agents/tools/executeScript/definition.ts +0 -79
  114. package/src/agents/tools/executeScript/examples/dependency-injection-validation.ts +0 -272
  115. package/src/agents/tools/executeScript/examples/quick-test.ts +0 -74
  116. package/src/agents/tools/executeScript/examples/serialization-test.ts +0 -321
  117. package/src/agents/tools/executeScript/examples/test-runner.ts +0 -197
  118. package/src/agents/tools/executeScript/index.ts +0 -98
  119. package/src/services/script-execution/SandboxContext.ts +0 -282
  120. package/src/services/script-execution/ScriptExecutor.ts +0 -441
  121. package/src/services/script-execution/ScriptPolicy.ts +0 -194
  122. package/src/services/script-execution/ScriptTracer.ts +0 -249
  123. package/src/services/script-execution/types.ts +0 -134
  124. package/ts_build/src/agents/tools/executeScript/definition.d.ts +0 -2
  125. package/ts_build/src/agents/tools/executeScript/definition.js +0 -76
  126. package/ts_build/src/agents/tools/executeScript/definition.js.map +0 -1
  127. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.d.ts +0 -18
  128. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js +0 -192
  129. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js.map +0 -1
  130. package/ts_build/src/agents/tools/executeScript/examples/quick-test.d.ts +0 -3
  131. package/ts_build/src/agents/tools/executeScript/examples/quick-test.js +0 -64
  132. package/ts_build/src/agents/tools/executeScript/examples/quick-test.js.map +0 -1
  133. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.d.ts +0 -15
  134. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js +0 -266
  135. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js.map +0 -1
  136. package/ts_build/src/agents/tools/executeScript/examples/test-runner.d.ts +0 -4
  137. package/ts_build/src/agents/tools/executeScript/examples/test-runner.js +0 -208
  138. package/ts_build/src/agents/tools/executeScript/examples/test-runner.js.map +0 -1
  139. package/ts_build/src/agents/tools/executeScript/index.d.ts +0 -28
  140. package/ts_build/src/agents/tools/executeScript/index.js +0 -72
  141. package/ts_build/src/agents/tools/executeScript/index.js.map +0 -1
  142. package/ts_build/src/services/script-execution/SandboxContext.d.ts +0 -34
  143. package/ts_build/src/services/script-execution/SandboxContext.js +0 -189
  144. package/ts_build/src/services/script-execution/SandboxContext.js.map +0 -1
  145. package/ts_build/src/services/script-execution/ScriptExecutor.d.ts +0 -19
  146. package/ts_build/src/services/script-execution/ScriptExecutor.js +0 -269
  147. package/ts_build/src/services/script-execution/ScriptExecutor.js.map +0 -1
  148. package/ts_build/src/services/script-execution/ScriptPolicy.d.ts +0 -28
  149. package/ts_build/src/services/script-execution/ScriptPolicy.js +0 -115
  150. package/ts_build/src/services/script-execution/ScriptPolicy.js.map +0 -1
  151. package/ts_build/src/services/script-execution/ScriptTracer.d.ts +0 -19
  152. package/ts_build/src/services/script-execution/ScriptTracer.js +0 -186
  153. package/ts_build/src/services/script-execution/ScriptTracer.js.map +0 -1
  154. package/ts_build/src/services/script-execution/types.d.ts +0 -108
  155. package/ts_build/src/services/script-execution/types.js +0 -3
  156. package/ts_build/src/services/script-execution/types.js.map +0 -1
@@ -1,552 +1,74 @@
1
1
  #!/usr/bin/env node --no-node-snapshot
2
2
  "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
3
  Object.defineProperty(exports, "__esModule", { value: true });
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
4
  const commander_1 = require("commander");
40
- const child_process_1 = require("child_process");
41
5
  const package_json_1 = require("../package.json");
42
- const index_1 = require("./index");
6
+ const logger_1 = require("./logger");
43
7
  const config_1 = require("./config");
44
- const _1 = require(".");
45
- const list_1 = require("./agents/tools/list");
46
- const allTools = __importStar(require("./agents/tools"));
47
- const services_1 = require("./services");
48
- const login_1 = require("./login");
49
- const worker_1 = require("./worker");
50
- const fileSync_1 = require("./fileSync");
51
- const KnowhowClient_1 = require("./services/KnowhowClient");
52
- const modules_1 = require("./services/modules");
53
- const workerRegistry_1 = require("./workerRegistry");
54
- const agents_1 = require("./agents");
55
- const chat_1 = require("./chat");
56
8
  const config_2 = require("./config");
57
9
  const types_1 = require("./types");
58
- const AskModule_1 = require("./chat/modules/AskModule");
59
- const SearchModule_1 = require("./chat/modules/SearchModule");
60
- const AgentModule_1 = require("./chat/modules/AgentModule");
61
- const SessionsModule_1 = require("./chat/modules/SessionsModule");
62
- const ai_1 = require("./ai");
63
- const SetupModule_1 = require("./chat/modules/SetupModule");
64
10
  const CliChatService_1 = require("./chat/CliChatService");
11
+ const modules_1 = require("./services/modules");
12
+ const modules_2 = require("./commands/modules");
13
+ const workers_1 = require("./commands/workers");
14
+ const agent_1 = require("./commands/agent");
15
+ const misc_1 = require("./commands/misc");
65
16
  process.on("unhandledRejection", (reason) => {
66
17
  const message = reason instanceof Error ? reason.message : String(reason);
67
18
  console.warn(`⚠ Unhandled MCP/async error (non-fatal): ${message}`);
68
19
  });
69
- async function setupServices() {
70
- const { Agents, Mcp, Clients, Tools: OldTools } = (0, services_1.services)();
71
- const Tools = new services_1.LazyToolsService();
72
- Tools.setContext({
73
- ...OldTools.getContext(),
74
- });
75
- const agentContext = {
76
- ...(0, services_1.services)(),
77
- Tools,
78
- };
79
- const { Researcher, Developer, Patcher, Setup } = (0, agents_1.agents)({
80
- ...agentContext,
81
- });
82
- Agents.registerAgent(Researcher);
83
- Agents.registerAgent(Patcher);
84
- Agents.registerAgent(Developer);
85
- Agents.registerAgent(Setup);
86
- Agents.loadAgentsFromConfig(agentContext);
87
- Tools.defineTools(list_1.includedTools, allTools);
88
- Tools.addContext("Mcp", Mcp);
89
- Agents.setAgentContext(agentContext);
90
- console.log("🔌 Connecting to MCP...");
91
- try {
92
- await Mcp.connectToConfigured(Tools);
93
- }
94
- catch (mcpError) {
95
- const msg = mcpError instanceof Error ? mcpError.message : String(mcpError);
96
- console.warn(`⚠ Some MCP servers failed to connect (continuing without them): ${msg}`);
97
- }
98
- console.log("Connecting to clients...");
99
- await Clients.registerConfiguredModels();
100
- console.log("✓ Services are set up and ready to go!");
101
- console.log("📦 Loading modules from config...");
102
- const modulesService = new modules_1.ModulesService();
103
- await modulesService.loadModulesFromConfig({
104
- Agents,
105
- Embeddings: (0, services_1.services)().Embeddings,
106
- Plugins: (0, services_1.services)().Plugins,
107
- Clients,
108
- Tools: Tools,
109
- MediaProcessor: (0, services_1.services)().MediaProcessor,
110
- });
111
- return { Tools, Clients, PlainTools: OldTools };
112
- }
113
- async function readStdin() {
114
- return new Promise((resolve) => {
115
- let data = "";
116
- process.stdin.setEncoding("utf8");
117
- if (process.stdin.isTTY) {
118
- resolve("");
119
- return;
120
- }
121
- process.stdin.on("readable", () => {
122
- const chunk = process.stdin.read();
123
- if (chunk !== null)
124
- data += chunk;
125
- });
126
- process.stdin.on("end", () => resolve(data.trim()));
127
- });
128
- }
129
20
  async function main() {
130
21
  const program = new commander_1.Command();
22
+ logger_1.logger.installConsoleOverload();
23
+ const rawArgs = process.argv.slice(2);
24
+ const SILENT_COMMANDS = ["github-credentials"];
25
+ if (rawArgs.some((a) => SILENT_COMMANDS.includes(a))) {
26
+ logger_1.logger.silence();
27
+ }
131
28
  await (0, config_1.migrateConfig)();
132
29
  const config = await (0, config_2.getConfig)();
133
30
  const chatService = new CliChatService_1.CliChatService((0, types_1.getEnabledPlugins)(config.plugins));
31
+ const getChatService = () => chatService;
32
+ const getConfigFn = () => config;
134
33
  program
135
34
  .name("knowhow")
136
35
  .description("AI CLI with plugins and agents")
137
36
  .version(package_json_1.version);
138
- program
139
- .command("init")
140
- .description("Initialize knowhow configuration")
141
- .action(async () => {
142
- await (0, config_1.init)();
143
- });
144
- program
145
- .command("login")
146
- .description("Login to knowhow")
147
- .option("--jwt", "Use manual JWT input instead of browser login")
148
- .action(async (opts) => {
149
- await (0, login_1.login)(opts.jwt);
150
- });
151
- program
152
- .command("update")
153
- .description("Update knowhow to the latest version from npm")
154
- .action(async () => {
155
- try {
156
- console.log("🔄 Checking for knowhow updates...");
157
- console.log(`Current version: ${package_json_1.version}`);
158
- console.log("📦 Installing latest version from npm...");
159
- (0, child_process_1.execSync)("npm install -g @tyvm/knowhow@latest", {
160
- stdio: "inherit",
161
- encoding: "utf-8",
162
- });
163
- console.log("✓ knowhow has been updated successfully!");
164
- console.log("Run 'knowhow --version' to see the new version.");
165
- }
166
- catch (error) {
167
- console.error("Error updating knowhow:", error.message);
168
- process.exit(1);
169
- }
170
- });
171
- program
172
- .command("generate")
173
- .description("Generate documentation")
174
- .action(async () => {
175
- await setupServices();
176
- await (0, index_1.generate)();
177
- });
178
- program
179
- .command("embed")
180
- .description("Create embeddings")
181
- .action(async () => {
182
- await setupServices();
183
- await (0, index_1.embed)();
184
- });
185
- program
186
- .command("embed:purge")
187
- .description("Purge embeddings matching a glob pattern")
188
- .argument("<pattern>", "Glob pattern to match files for purging")
189
- .action(async (pattern) => {
190
- await (0, _1.purge)(pattern);
191
- });
192
- program
193
- .command("upload")
194
- .description("Upload data")
195
- .action(async () => {
196
- await (0, index_1.upload)();
197
- });
198
- program
199
- .command("download")
200
- .description("Download data")
201
- .action(async () => {
202
- await (0, _1.download)();
203
- });
204
- program
205
- .command("chat")
206
- .description("Start new chat interface")
207
- .action(async () => {
208
- await setupServices();
209
- await (0, chat_1.startChat)();
210
- });
211
- program
212
- .command("agent")
213
- .description("Spin up agents directly from CLI")
214
- .option("--provider <provider>", "AI provider (openai, anthropic, google, xai)")
215
- .option("--model <model>", "Specific model for the provider")
216
- .option("--agent-name <name>", "Which agent to use", "Patcher")
217
- .option("--max-time-limit <minutes>", "Time limit for agent execution (minutes)", "30")
218
- .option("--max-spend-limit <dollars>", "Cost limit for agent execution (dollars)", "10")
219
- .option("--message-id <messageId>", "Knowhow message ID for task tracking")
220
- .option("--sync-fs", "Enable filesystem-based synchronization")
221
- .option("--task-id <taskId>", "Pre-generated task ID (used with --sync-fs for predictable agent directory path)")
222
- .option("--prompt-file <path>", "Custom prompt template file with {text}")
223
- .option("--input <text>", "Task input (fallback to stdin if not provided)")
224
- .option("--resume", "Resume a previously started task using the --task-id (local FS or remote)")
225
- .action(async (options) => {
226
- try {
227
- await setupServices();
228
- const agentModule = new AgentModule_1.AgentModule();
229
- if (options.resume) {
230
- const threads = await agentModule.loadThreadsForTask(options.taskId, options.messageId);
231
- const resumeInput = options.input || "Please continue from where you left off.";
232
- await agentModule.initialize(chatService);
233
- const { taskCompleted: resumed } = await agentModule.resumeFromMessages({
234
- agentName: options.agentName || "Patcher",
235
- input: resumeInput,
236
- threads,
237
- messageId: options.messageId,
238
- taskId: options.taskId,
239
- });
240
- await resumed;
241
- return;
242
- }
243
- let input = options.input;
244
- if (!input && !options.promptFile) {
245
- input = await readStdin();
246
- }
247
- input = (0, ai_1.readPromptFile)(options.promptFile, input);
248
- if (!input) {
249
- console.error("Error: No input provided. Use --input flag, pipe input via stdin, or provide --prompt-file.");
250
- process.exit(1);
251
- }
252
- await agentModule.initialize(chatService);
253
- const { taskCompleted } = await agentModule.setupAgent({
254
- ...options,
255
- input,
256
- maxTimeLimit: parseInt(options.maxTimeLimit, 10),
257
- maxSpendLimit: parseFloat(options.maxSpendLimit),
258
- run: true,
259
- });
260
- await taskCompleted;
261
- }
262
- catch (error) {
263
- console.error("Error running agent:", error);
264
- process.exit(1);
265
- }
266
- });
267
- program
268
- .command("ask")
269
- .description("Direct AI questioning without agent overhead")
270
- .option("--provider <provider>", "AI provider to use")
271
- .option("--model <model>", "Specific model")
272
- .option("--input <text>", "Question (fallback to stdin if not provided)")
273
- .option("--prompt-file <path>", "Custom prompt template file")
274
- .action(async (options) => {
275
- try {
276
- await setupServices();
277
- let input = options.input;
278
- if (!input && !options.promptFile) {
279
- input = await readStdin();
280
- }
281
- input = (0, ai_1.readPromptFile)(options.promptFile, input);
282
- if (!input) {
283
- console.error("Error: No question provided. Use --input flag, pipe input via stdin, or provide --prompt-file.");
284
- process.exit(1);
285
- }
286
- const askModule = new AskModule_1.AskModule();
287
- await askModule.initialize(chatService);
288
- await askModule.processAIQuery(input, {
289
- plugins: config.plugins.enabled,
290
- currentModel: options.model,
291
- currentProvider: options.provider,
292
- chatHistory: [],
293
- });
294
- }
295
- catch (error) {
296
- console.error("Error asking AI:", error);
297
- process.exit(1);
298
- }
299
- });
300
- program
301
- .command("setup")
302
- .description("Ask the agent to configure knowhow")
303
- .action(async (options) => {
304
- try {
305
- await setupServices();
306
- const agentModule = new AgentModule_1.AgentModule();
307
- await agentModule.initialize(chatService);
308
- const setupModule = new SetupModule_1.SetupModule(agentModule);
309
- await setupModule.initialize(chatService);
310
- await setupModule.handleSetupCommand([]);
311
- }
312
- catch (error) {
313
- console.error("Error running agent:", error);
314
- process.exit(1);
315
- }
316
- });
317
- program
318
- .command("search")
319
- .description("Search embeddings directly from CLI")
320
- .option("--input <text>", "Search query (fallback to stdin if not provided)")
321
- .option("-e, --embedding <path>", "Specific embedding path (default: all)", "all")
322
- .action(async (options) => {
323
- try {
324
- await setupServices();
325
- let input = options.input;
326
- if (!input) {
327
- input = await readStdin();
328
- if (!input) {
329
- console.error("Error: No search query provided. Use --input flag or pipe input via stdin.");
330
- process.exit(1);
331
- }
332
- }
333
- await new SearchModule_1.SearchModule().searchEmbeddingsCLI(input, options.embedding);
334
- }
335
- catch (error) {
336
- console.error("Error searching embeddings:", error);
337
- process.exit(1);
338
- }
339
- });
340
- program
341
- .command("sessions")
342
- .description("Manage agent sessions from CLI")
343
- .option("--all", "Show all historical sessions (default: current process only)")
344
- .option("--csv", "Output sessions as CSV")
345
- .action(async (options) => {
346
- try {
347
- const agentModule = new AgentModule_1.AgentModule();
348
- await agentModule.initialize(chatService);
349
- const sessionsModule = new SessionsModule_1.SessionsModule(agentModule);
350
- await sessionsModule.initialize(chatService);
351
- await sessionsModule.logSessionTable(options.all || false, options.csv || false, true);
352
- }
353
- catch (error) {
354
- console.error("Error listing sessions:", error);
355
- process.exit(1);
356
- }
357
- });
358
- program
359
- .command("worker")
360
- .description("Start worker process and optionally register current directory")
361
- .option("--register", "Register current directory as a worker path")
362
- .option("--share", "Share this worker with your organization (allows other users to use it)")
363
- .option("--unshare", "Make this worker private (only you can use it)")
364
- .option("--sandbox", "Run worker in a Docker container for isolation")
365
- .option("--no-sandbox", "Run worker directly on host (disable sandbox mode)")
366
- .option("--passkey", "Set up passkey authentication for this worker")
367
- .option("--passkey-reset", "Remove passkey authentication requirement")
368
- .action(async (options) => {
369
- await setupServices();
370
- await (0, worker_1.worker)(options);
371
- });
372
- program
373
- .command("files")
374
- .description("Sync files between local filesystem and Knowhow FS (uses fileMounts config)")
375
- .option("--upload", "Force upload direction for all mounts")
376
- .option("--download", "Force download direction for all mounts")
377
- .option("--config <path>", "Path to knowhow.json", "./knowhow.json")
378
- .option("--dry-run", "Print what would be synced without doing it")
379
- .action(async (options) => {
380
- try {
381
- await (0, fileSync_1.fileSync)(options);
382
- }
383
- catch (error) {
384
- console.error("Error syncing files:", error);
385
- process.exit(1);
386
- }
387
- });
388
- program
389
- .command("workers")
390
- .description("Manage and start all registered workers")
391
- .option("--list", "List all registered worker paths")
392
- .option("--unregister <path>", "Unregister a worker path")
393
- .option("--clear", "Clear all registered worker paths")
394
- .action(async (options) => {
395
- try {
396
- if (options.list) {
397
- const workers = await (0, workerRegistry_1.listWorkerPaths)();
398
- if (workers.length === 0) {
399
- console.log("No workers registered.");
400
- console.log("\nTo register a worker, run 'knowhow worker --register' from the worker directory.");
401
- }
402
- else {
403
- console.log(`Registered workers (${workers.length}):`);
404
- workers.forEach((workerPath, index) => {
405
- console.log(` ${index + 1}. ${workerPath}`);
406
- });
407
- }
408
- return;
409
- }
410
- if (options.unregister) {
411
- await (0, workerRegistry_1.unregisterWorkerPath)(options.unregister);
412
- return;
413
- }
414
- if (options.clear) {
415
- await (0, workerRegistry_1.clearWorkerRegistry)();
416
- return;
417
- }
418
- await setupServices();
419
- await (0, workerRegistry_1.startAllWorkers)();
420
- }
421
- catch (error) {
422
- console.error("Error managing workers:", error);
423
- process.exit(1);
424
- }
425
- });
426
- program
427
- .command("cloudworker")
428
- .description("Create or sync a cloud worker with your local knowhow config")
429
- .option("--create", "Create a new cloud worker with synced config and files")
430
- .option("--push <uid>", "Push/sync local config and files to an existing cloud worker")
431
- .option("--pull <id>", "Pull the latest workerConfigJson from a cloud worker and update local config")
432
- .option("--name <name>", "Name for the cloud worker (used with --create)")
433
- .option("--dry-run", "Print what would be synced without doing it")
434
- .action(async (options) => {
435
- try {
436
- const { cloudWorker, pullCloudWorkerConfig } = await Promise.resolve().then(() => __importStar(require("./cloudWorker")));
437
- if (options.pull) {
438
- await pullCloudWorkerConfig({ id: options.pull });
439
- }
440
- else {
441
- await cloudWorker(options);
442
- }
443
- }
444
- catch (error) {
445
- console.error("Error running cloudworker:", error);
446
- process.exit(1);
447
- }
448
- });
449
- program
450
- .command("tunnel")
451
- .description("Start tunnel-only mode: expose local ports to the cloud without registering any tools")
452
- .option("--share", "Share this tunnel with your organization (allows other users to use it)")
453
- .option("--unshare", "Make this tunnel private (only you can use it)")
454
- .action(async (options) => {
455
- await (0, worker_1.tunnel)(options);
456
- });
457
- program
458
- .command("script")
459
- .description("Run a local tool script file using the executeScript sandbox")
460
- .option("--input-file <path>", "Path to a local .js/.ts script file to run")
461
- .option("--allow-network", "Allow fetch() calls in the script (disabled by default for security)")
462
- .action(async (options) => {
463
- try {
464
- if (!options.inputFile) {
465
- console.error("Error: Provide --input-file <path> to the script file to run");
466
- process.exit(1);
467
- }
468
- const scriptPath = path.resolve(options.inputFile);
469
- if (!fs.existsSync(scriptPath)) {
470
- console.error(`Error: Script file not found: ${scriptPath}`);
471
- process.exit(1);
472
- }
473
- const scriptContent = fs.readFileSync(scriptPath, "utf-8");
474
- const { Tools, Clients } = await setupServices();
475
- Tools.enableTools(["*"]);
476
- const { ScriptExecutor } = await Promise.resolve().then(() => __importStar(require("./services/script-execution/ScriptExecutor")));
477
- const executor = new ScriptExecutor(Tools, Clients);
478
- const result = await executor.execute({
479
- script: scriptContent,
480
- policy: {
481
- allowNetworkAccess: !!options.allowNetwork,
482
- },
483
- quotas: {
484
- maxExecutionTimeMs: 5 * 60 * 1000,
485
- },
486
- });
487
- if (result.consoleOutput?.length) {
488
- console.log(result.consoleOutput.join("\n"));
489
- }
490
- console.log(JSON.stringify(result.result, null, 2));
491
- if (!result.success) {
492
- console.error("Script error:", result.error);
493
- process.exit(1);
494
- }
495
- }
496
- catch (error) {
497
- console.error("Error running script:", error);
498
- process.exit(1);
499
- }
500
- });
501
- program
502
- .command("github-credentials [action]")
503
- .description("Git credential helper for GitHub. Use as: git config credential.helper 'knowhow github-credentials'")
504
- .option("--repo <repo>", "Repository in owner/repo format (e.g. myorg/myrepo)")
505
- .action(async (action, options) => {
506
- const client = new KnowhowClient_1.KnowhowSimpleClient();
507
- let repo = options.repo;
508
- if (action === "get") {
509
- const lines = [];
510
- const readline = await Promise.resolve().then(() => __importStar(require("readline")));
511
- const rl = readline.createInterface({
512
- input: process.stdin,
513
- terminal: false,
514
- });
515
- await new Promise((resolve) => {
516
- rl.on("line", (line) => {
517
- if (line.trim())
518
- lines.push(line.trim());
519
- });
520
- rl.on("close", resolve);
37
+ (0, misc_1.addInitCommand)(program);
38
+ (0, misc_1.addLoginCommand)(program);
39
+ (0, misc_1.addUpdateCommand)(program);
40
+ (0, misc_1.addGenerateCommand)(program);
41
+ (0, misc_1.addEmbedCommands)(program);
42
+ (0, misc_1.addUploadCommand)(program);
43
+ (0, misc_1.addDownloadCommand)(program);
44
+ (0, misc_1.addChatCommand)(program);
45
+ (0, agent_1.addAgentCommand)(program, getChatService);
46
+ (0, agent_1.addAskCommand)(program, getChatService, getConfigFn);
47
+ (0, agent_1.addSetupCommand)(program, getChatService);
48
+ (0, agent_1.addSearchCommand)(program);
49
+ (0, agent_1.addSessionsCommand)(program, getChatService);
50
+ (0, workers_1.addWorkerCommand)(program);
51
+ (0, workers_1.addWorkersCommand)(program);
52
+ (0, workers_1.addTunnelCommand)(program);
53
+ (0, workers_1.addFilesCommand)(program);
54
+ (0, workers_1.addCloudWorkerCommand)(program);
55
+ (0, misc_1.addGithubCredentialsCommand)(program);
56
+ (0, modules_2.addModulesCommand)(program);
57
+ try {
58
+ const globalConfig = await (0, config_2.getGlobalConfig)();
59
+ const allModulePaths = [
60
+ ...(globalConfig.modules || []),
61
+ ...(config.modules || []),
62
+ ];
63
+ if (allModulePaths.length) {
64
+ const earlyModulesService = new modules_1.ModulesService();
65
+ await earlyModulesService.loadModulesFrom({ ...config, modules: allModulePaths }, {
66
+ Program: program,
521
67
  });
522
68
  }
523
- else if (action === "store" || action === "erase") {
524
- process.exit(0);
525
- }
526
- if (!repo) {
527
- try {
528
- const remoteUrl = (0, child_process_1.execSync)("git remote get-url origin", {
529
- encoding: "utf-8",
530
- stdio: ["pipe", "pipe", "pipe"],
531
- }).trim();
532
- const match = remoteUrl.match(/github\.com[/:]([^/]+\/[^/]+?)(?:\.git)?$/) ||
533
- remoteUrl.match(/github\.com\/([^/]+\/[^/]+)/);
534
- if (match) {
535
- repo = match[1];
536
- }
537
- }
538
- catch {
539
- }
540
- }
541
- try {
542
- const credential = await client.getGitCredential(repo || "");
543
- process.stdout.write(`protocol=${credential.protocol}\nhost=${credential.host}\nusername=${credential.username}\npassword=${credential.password}\n`);
544
- }
545
- catch (error) {
546
- console.error("Failed to get git credentials:", error.message);
547
- process.exit(1);
548
- }
549
- });
69
+ }
70
+ catch (e) {
71
+ }
550
72
  await program.parseAsync(process.argv);
551
73
  }
552
74
  if (require.main === module) {
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAyB;AAEzB,2CAA6B;AAE7B,yCAAoC;AACpC,iDAAyC;AACzC,kDAA0C;AAC1C,mCAAkD;AAClD,qCAA+C;AAE/C,wBAAoC;AACpC,8CAAoD;AACpD,yDAA2C;AAC3C,yCAAwD;AACxD,mCAAgC;AAChC,qCAA0C;AAC1C,yCAAsC;AACtC,4DAA+D;AAC/D,gDAAoD;AACpD,qDAK0B;AAC1B,qCAAkC;AAClC,iCAAmC;AAEnC,qCAAqC;AACrC,mCAA4C;AAG5C,wDAAqD;AACrD,8DAA2D;AAC3D,4DAAyD;AACzD,kEAA+D;AAC/D,6BAAsC;AACtC,4DAAyD;AACzD,0DAAuD;AAMvD,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAe,EAAE,EAAE;IACnD,MAAM,OAAO,GACX,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAG5D,OAAO,CAAC,IAAI,CACV,4CAA4C,OAAO,EAAE,CACtD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,aAAa;IAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAA,mBAAQ,GAAE,CAAC;IAC7D,MAAM,KAAK,GAAG,IAAI,2BAAgB,EAAE,CAAC;IAIrC,KAAK,CAAC,UAAU,CAAC;QACf,GAAG,QAAQ,CAAC,UAAU,EAAE;KACzB,CAAC,CAAC;IAIH,MAAM,YAAY,GAA8C;QAC9D,GAAG,IAAA,mBAAQ,GAAE;QACb,KAAK;KACN,CAAC;IAEF,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAA,eAAM,EAAC;QACvD,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACjC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAE1C,KAAK,CAAC,WAAW,CAAC,oBAAa,EAAE,QAAQ,CAAC,CAAC;IAG3C,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAI7B,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAErC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,QAAQ,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CACV,mEAAmE,GAAG,EAAE,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAGtD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,IAAI,wBAAc,EAAE,CAAC;IAC5C,MAAM,cAAc,CAAC,qBAAqB,CAAC;QACzC,MAAM;QACN,UAAU,EAAE,IAAA,mBAAQ,GAAE,CAAC,UAAU;QACjC,OAAO,EAAE,IAAA,mBAAQ,GAAE,CAAC,OAAO;QAC3B,OAAO;QAEP,KAAK,EAAE,KAAY;QACnB,cAAc,EAAE,IAAA,mBAAQ,GAAE,CAAC,cAAc;KAC1C,CAAC,CAAC;IAGH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClD,CAAC;AAGD,KAAK,UAAU,SAAS;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,EAAE,CAAC,CAAC;YACZ,OAAO;QACT,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,KAAK,KAAK,IAAI;gBAAE,IAAI,IAAI,KAAK,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAC9B,MAAM,IAAA,sBAAa,GAAE,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,GAAE,CAAC;IACjC,MAAM,WAAW,GAAG,IAAI,+BAAc,CAAC,IAAA,yBAAiB,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAE1E,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CAAC,gCAAgC,CAAC;SAC7C,OAAO,CAAC,sBAAO,CAAC,CAAC;IAEpB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAA,aAAI,GAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,OAAO,EAAE,+CAA+C,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,IAAA,aAAK,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,oBAAoB,sBAAO,EAAE,CAAC,CAAC;YAE3C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,IAAA,wBAAQ,EAAC,qCAAqC,EAAE;gBAC9C,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,aAAa,EAAE,CAAC;QACtB,MAAM,IAAA,gBAAQ,GAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,aAAa,EAAE,CAAC;QACtB,MAAM,IAAA,aAAK,GAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,0CAA0C,CAAC;SACvD,QAAQ,CAAC,WAAW,EAAE,yCAAyC,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,IAAA,QAAK,EAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,aAAa,CAAC;SAC1B,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAA,cAAM,GAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,eAAe,CAAC;SAC5B,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAA,WAAQ,GAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,aAAa,EAAE,CAAC;QACtB,MAAM,IAAA,gBAAS,GAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CACL,uBAAuB,EACvB,8CAA8C,CAC/C;SACA,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;SAC5D,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,SAAS,CAAC;SAC9D,MAAM,CACL,4BAA4B,EAC5B,0CAA0C,EAC1C,IAAI,CACL;SACA,MAAM,CACL,6BAA6B,EAC7B,0CAA0C,EAC1C,IAAI,CACL;SACA,MAAM,CAAC,0BAA0B,EAAE,sCAAsC,CAAC;SAC1E,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;SAC9D,MAAM,CACL,oBAAoB,EACpB,kFAAkF,CACnF;SACA,MAAM,CAAC,sBAAsB,EAAE,yCAAyC,CAAC;SACzE,MAAM,CAAC,gBAAgB,EAAE,gDAAgD,CAAC;SAC1E,MAAM,CACL,UAAU,EACV,2EAA2E,CAC5E;SACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,aAAa,EAAE,CAAC;YACtB,MAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAC;YAGtC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAClD,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,CAClB,CAAC;gBACF,MAAM,WAAW,GACf,OAAO,CAAC,KAAK,IAAI,0CAA0C,CAAC;gBAE9D,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC1C,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAC9B,MAAM,WAAW,CAAC,kBAAkB,CAAC;oBACnC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;oBACzC,KAAK,EAAE,WAAW;oBAClB,OAAO;oBACP,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC,CAAC;gBACL,MAAM,OAAO,CAAC;gBACd,OAAO;YACT,CAAC;YAED,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAG1B,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAClC,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;YAC5B,CAAC;YAGD,KAAK,GAAG,IAAA,mBAAc,EAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAGlD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CACX,6FAA6F,CAC9F,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;gBACrD,GAAG,OAAO;gBACV,KAAK;gBACL,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;gBAChD,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC;gBAChD,GAAG,EAAE,IAAI;aACV,CAAC,CAAC;YACH,MAAM,aAAa,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;SACrD,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SAC3C,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;SACxE,MAAM,CAAC,sBAAsB,EAAE,6BAA6B,CAAC;SAC7D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,aAAa,EAAE,CAAC;YACtB,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAG1B,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAClC,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;YAC5B,CAAC;YAGD,KAAK,GAAG,IAAA,mBAAc,EAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAGlD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CACX,gGAAgG,CACjG,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;YAClC,MAAM,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACxC,MAAM,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE;gBACpC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;gBAC/B,YAAY,EAAE,OAAO,CAAC,KAAK;gBAC3B,eAAe,EAAE,OAAO,CAAC,QAAQ;gBACjC,WAAW,EAAE,EAAE;aAChB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,aAAa,EAAE,CAAC;YACtB,MAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAC;YACtC,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,IAAI,yBAAW,CAAC,WAAW,CAAC,CAAC;YACjD,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CACL,gBAAgB,EAChB,kDAAkD,CACnD;SACA,MAAM,CACL,wBAAwB,EACxB,wCAAwC,EACxC,KAAK,CACN;SACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,aAAa,EAAE,CAAC;YACtB,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CACX,4EAA4E,CAC7E,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,MAAM,IAAI,2BAAY,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CACL,OAAO,EACP,8DAA8D,CAC/D;SACA,MAAM,CAAC,OAAO,EAAE,wBAAwB,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAC;YACtC,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,cAAc,GAAG,IAAI,+BAAc,CAAC,WAAW,CAAC,CAAC;YACvD,MAAM,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,cAAc,CAAC,eAAe,CAClC,OAAO,CAAC,GAAG,IAAI,KAAK,EACpB,OAAO,CAAC,GAAG,IAAI,KAAK,EACpB,IAAI,CACL,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,gEAAgE,CACjE;SACA,MAAM,CAAC,YAAY,EAAE,6CAA6C,CAAC;SACnE,MAAM,CACL,SAAS,EACT,yEAAyE,CAC1E;SACA,MAAM,CAAC,WAAW,EAAE,gDAAgD,CAAC;SACrE,MAAM,CAAC,WAAW,EAAE,gDAAgD,CAAC;SACrE,MAAM,CACL,cAAc,EACd,oDAAoD,CACrD;SACA,MAAM,CAAC,WAAW,EAAE,+CAA+C,CAAC;SACpE,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,aAAa,EAAE,CAAC;QACtB,MAAM,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CACV,6EAA6E,CAC9E;SACA,MAAM,CAAC,UAAU,EAAE,uCAAuC,CAAC;SAC3D,MAAM,CAAC,YAAY,EAAE,yCAAyC,CAAC;SAC/D,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC;SACnE,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,IAAA,mBAAQ,EAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;SACpD,MAAM,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;SACzD,MAAM,CAAC,SAAS,EAAE,mCAAmC,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAe,GAAE,CAAC;gBACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;oBACtC,OAAO,CAAC,GAAG,CACT,oFAAoF,CACrF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;oBACvD,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;wBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,MAAM,IAAA,qCAAoB,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,IAAA,oCAAmB,GAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAGD,MAAM,aAAa,EAAE,CAAC;YACtB,MAAM,IAAA,gCAAe,GAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CAAC,UAAU,EAAE,wDAAwD,CAAC;SAC5E,MAAM,CAAC,cAAc,EAAE,8DAA8D,CAAC;SACtF,MAAM,CAAC,aAAa,EAAE,8EAA8E,CAAC;SACrG,MAAM,CAAC,eAAe,EAAE,gDAAgD,CAAC;SACzE,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,GAAG,wDAAa,eAAe,GAAC,CAAC;YAC7E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,qBAAqB,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,uFAAuF,CACxF;SACA,MAAM,CACL,SAAS,EACT,yEAAyE,CAC1E;SACA,MAAM,CAAC,WAAW,EAAE,gDAAgD,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAGL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;SAC3E,MAAM,CACL,iBAAiB,EACjB,sEAAsE,CACvE;SACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CACX,8DAA8D,CAC/D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAGD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAE3D,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;YAIjD,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEzB,MAAM,EAAE,cAAc,EAAE,GAAG,wDACzB,4CAA4C,GAC7C,CAAC;YACF,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;gBACpC,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE;oBACN,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY;iBAC3C;gBACD,MAAM,EAAE;oBACN,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;iBAClC;aACF,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,6BAA6B,CAAC;SACtC,WAAW,CACV,qGAAqG,CACtG;SACA,MAAM,CACL,eAAe,EACf,qDAAqD,CACtD;SACA,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,OAA0B,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,IAAI,mCAAmB,EAAE,CAAC;QAGzC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAIxB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAErB,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,wDAAa,UAAU,GAAC,CAAC;YAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;YACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACrB,IAAI,IAAI,CAAC,IAAI,EAAE;wBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QAGL,CAAC;aAAM,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YAEpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAGD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAA,wBAAQ,EAAC,2BAA2B,EAAE;oBACtD,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;iBAChC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAIV,MAAM,KAAK,GACT,SAAS,CAAC,KAAK,CAAC,2CAA2C,CAAC;oBAC5D,SAAS,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACjD,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAE7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,YAAY,UAAU,CAAC,QAAQ,UAAU,UAAU,CAAC,IAAI,cAAc,UAAU,CAAC,QAAQ,cAAc,UAAU,CAAC,QAAQ,IAAI,CAC/H,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE;SACH,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,EAAE;QACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -364,9 +364,7 @@ class AIClient {
364
364
  }
365
365
  findModelFuzzy(modelQuery, provider) {
366
366
  const queryNorm = AIClient.normalizeModelId(modelQuery);
367
- const providers = provider
368
- ? [provider]
369
- : Object.keys(this.clientModels);
367
+ const providers = provider ? [provider] : Object.keys(this.clientModels);
370
368
  for (const p of providers) {
371
369
  const models = this.clientModels[p] ?? [];
372
370
  for (const m of models) {
@@ -513,7 +511,7 @@ class AIClient {
513
511
  }
514
512
  const splitModel = m.id.split("/");
515
513
  if (splitModel.length < 2) {
516
- console.error(`Cannot parse model format: ${m.id}`);
514
+ console.warn(`Cannot parse model format: ${m.id}`);
517
515
  }
518
516
  const provider = splitModel.length > 1 ? splitModel[0] : "";
519
517
  const modelName = splitModel.slice(1).join("/");