flavor-code 1.2.3 → 1.2.5

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 (37) hide show
  1. package/README.md +369 -1090
  2. package/README.zh-CN.md +369 -0
  3. package/dist/{app-SCHNJSXI.js → app-3DXEGSS7.js} +15 -9
  4. package/dist/{chunk-XGCFBGBB.js → chunk-3TYRDK34.js} +43 -38
  5. package/dist/{chunk-MVIMQEQT.js → chunk-HFR2WS6T.js} +0 -1
  6. package/dist/{chunk-DM64TM4Z.js → chunk-KKIBYDJI.js} +0 -1
  7. package/dist/{chunk-VOCZVFP7.js → chunk-N2S7USST.js} +0 -1
  8. package/dist/{chunk-XS2JU6S3.js → chunk-NVLYFU6P.js} +3 -4
  9. package/dist/{chunk-JZ322RCJ.js → chunk-S32JRDZK.js} +0 -1
  10. package/dist/{chunk-AHUOGT4I.js → chunk-Z3BW52MK.js} +1 -2
  11. package/dist/{claude-ink-ZL4UZMFY.js → claude-ink-WPWPEL5A.js} +3 -4
  12. package/dist/cli.js +9 -10
  13. package/dist/desktop/main.js +41 -36
  14. package/dist/desktop/preload.cjs +0 -1
  15. package/dist/desktop-renderer/assets/index-C66pDvHs.js +1 -2
  16. package/dist/desktop-renderer/index.html +14 -14
  17. package/dist/{devtools-SXJBSV2N.js → devtools-4QTPKBKK.js} +0 -1
  18. package/dist/{load-WQGNTCHC.js → load-XC5JYYBQ.js} +2 -3
  19. package/dist/sdk/index.js +5 -6
  20. package/package.json +7 -1
  21. package//346/212/200/346/234/257/346/226/271/346/241/210/346/212/245/345/221/212.md +1 -1
  22. package/dist/app-SCHNJSXI.js.map +0 -1
  23. package/dist/chunk-AHUOGT4I.js.map +0 -1
  24. package/dist/chunk-DM64TM4Z.js.map +0 -1
  25. package/dist/chunk-JZ322RCJ.js.map +0 -1
  26. package/dist/chunk-MVIMQEQT.js.map +0 -1
  27. package/dist/chunk-VOCZVFP7.js.map +0 -1
  28. package/dist/chunk-XGCFBGBB.js.map +0 -1
  29. package/dist/chunk-XS2JU6S3.js.map +0 -1
  30. package/dist/claude-ink-ZL4UZMFY.js.map +0 -1
  31. package/dist/cli.js.map +0 -1
  32. package/dist/desktop/main.js.map +0 -1
  33. package/dist/desktop/preload.cjs.map +0 -1
  34. package/dist/desktop-renderer/assets/index-C66pDvHs.js.map +0 -1
  35. package/dist/devtools-SXJBSV2N.js.map +0 -1
  36. package/dist/load-WQGNTCHC.js.map +0 -1
  37. package/dist/sdk/index.js.map +0 -1
@@ -12,7 +12,7 @@ import {
12
12
  redactConfig,
13
13
  setProjectMcpServerDisabled,
14
14
  updateProtectedFile
15
- } from "./chunk-MVIMQEQT.js";
15
+ } from "./chunk-HFR2WS6T.js";
16
16
  import {
17
17
  AuditLogger,
18
18
  appendUsageLog,
@@ -23,7 +23,7 @@ import {
23
23
  resolveLanguage,
24
24
  setUsageSession,
25
25
  usageLogPath
26
- } from "./chunk-VOCZVFP7.js";
26
+ } from "./chunk-N2S7USST.js";
27
27
 
28
28
  // src/models/types.ts
29
29
  function modelContentText(content) {
@@ -104,10 +104,12 @@ function isDestructiveTool(name) {
104
104
  return DESTRUCTIVE_TOOLS.has(name);
105
105
  }
106
106
  var PermissionEngine = class {
107
+ #lexicalWorkspace;
107
108
  #workspace;
108
109
  #mode;
109
110
  constructor(options) {
110
111
  const root = resolve(options.workspace);
112
+ this.#lexicalWorkspace = root;
111
113
  this.#workspace = existsSync(root) ? realpathSync.native(root) : root;
112
114
  this.#mode = canonicalMode(options.mode ?? "default");
113
115
  }
@@ -128,13 +130,13 @@ var PermissionEngine = class {
128
130
  return { decision: "deny", reason: `${request.tool} requires source and destination paths` };
129
131
  }
130
132
  for (const path of paths) {
131
- const classification = classifyPath(this.#workspace, path);
133
+ const classification = classifyPath(this.#lexicalWorkspace, this.#workspace, path);
132
134
  if (classification.escape) return { decision: "deny", reason: classification.reason ?? "Path escapes the workspace" };
133
135
  if (request.agent === "subagent" && !classification.inside) {
134
136
  return { decision: "deny", reason: "Subagents are restricted to the workspace" };
135
137
  }
136
138
  }
137
- const inside = paths.every((path) => classifyPath(this.#workspace, path).inside);
139
+ const inside = paths.every((path) => classifyPath(this.#lexicalWorkspace, this.#workspace, path).inside);
138
140
  if (this.#mode === "plan") {
139
141
  return READ_TOOLS.has(request.tool) ? { decision: "allow" } : { decision: "deny", reason: "Plan mode is read-only" };
140
142
  }
@@ -161,11 +163,11 @@ var PermissionEngine = class {
161
163
  const analysis = request.args === void 0 ? analyzeCommand(request.command ?? "") : analyzeArgumentCommand(request.command ?? "", request.args);
162
164
  if (request.agent === "subagent") {
163
165
  if (request.cwd === void 0) return { decision: "ask", reason: "Subagent shell commands require an explicit workspace cwd" };
164
- const cwd = classifyPath(this.#workspace, request.cwd);
166
+ const cwd = classifyPath(this.#lexicalWorkspace, this.#workspace, request.cwd);
165
167
  if (cwd.escape || !cwd.inside) return { decision: "deny", reason: "Subagent shell cwd must remain in the workspace" };
166
168
  if (analysis.destructive) return { decision: "deny", reason: "Destructive commands are forbidden for subagents" };
167
169
  if (analysis.wrapped || analysis.opaque || !isRoutineCommand(analysis.command)) return { decision: "ask", reason: "Subagent shell command requires main-Agent approval" };
168
- const argumentDecision = assessRoutineArguments(analysis.command, request.cwd, this.#workspace);
170
+ const argumentDecision = assessRoutineArguments(analysis.command, request.cwd, this.#lexicalWorkspace, this.#workspace);
169
171
  if (argumentDecision !== "allow") {
170
172
  return argumentDecision === "deny" ? { decision: "deny", reason: "Subagent command arguments escape the workspace" } : { decision: "ask", reason: "Ambiguous subagent command arguments require main-Agent approval" };
171
173
  }
@@ -177,12 +179,12 @@ var PermissionEngine = class {
177
179
  if (analysis.wrapped || analysis.opaque) return ask(this.#mode, "Shell wrapper requires approval");
178
180
  if (this.#mode === "bypassPermissions") return { decision: "allow" };
179
181
  if ((this.#mode === "acceptEdits" || this.#mode === "auto") && isRoutineCommand(analysis.command)) {
180
- const cwd = request.cwd ?? this.#workspace;
181
- const cwdClassification = classifyPath(this.#workspace, cwd);
182
+ const cwd = request.cwd ?? this.#lexicalWorkspace;
183
+ const cwdClassification = classifyPath(this.#lexicalWorkspace, this.#workspace, cwd);
182
184
  if (cwdClassification.escape || !cwdClassification.inside) {
183
185
  return { decision: "deny", reason: "Routine command cwd must remain in the workspace" };
184
186
  }
185
- const argumentDecision = assessRoutineArguments(analysis.command, cwd, this.#workspace);
187
+ const argumentDecision = assessRoutineArguments(analysis.command, cwd, this.#lexicalWorkspace, this.#workspace);
186
188
  if (argumentDecision === "deny") return { decision: "deny", reason: "Routine command arguments escape the workspace" };
187
189
  if (argumentDecision === "ask") return ask(this.#mode, "Ambiguous routine command arguments require approval");
188
190
  return { decision: "allow" };
@@ -219,16 +221,16 @@ function analyzeArgumentCommand(executable, args) {
219
221
  }
220
222
  return { command, destructive: isForbiddenCommand(command), opaque: false, wrapped: false };
221
223
  }
222
- function classifyPath(workspace, input) {
223
- const candidate = resolve(workspace, input);
224
- const lexicalInside = isWithin(workspace, candidate);
224
+ function classifyPath(lexicalWorkspace, physicalWorkspace, input) {
225
+ const candidate = resolve(lexicalWorkspace, input);
226
+ const lexicalInside = isWithin(lexicalWorkspace, candidate);
225
227
  const traversal = input.split(/[\\/]+/).includes("..");
226
- const startsInWorkspace = pathStartsWith(workspace, input);
228
+ const startsInWorkspace = pathStartsWith(lexicalWorkspace, input);
227
229
  if ((!isAbsolute(input) || startsInWorkspace) && traversal && !lexicalInside) {
228
230
  return { inside: false, escape: true, reason: "Path traversal escapes the workspace" };
229
231
  }
230
232
  const physical = resolvePhysical(candidate);
231
- const physicalInside = isWithin(workspace, physical);
233
+ const physicalInside = isWithin(physicalWorkspace, physical);
232
234
  if (lexicalInside && !physicalInside) return { inside: false, escape: true, reason: "Symlink escapes the workspace" };
233
235
  return { inside: physicalInside, escape: false };
234
236
  }
@@ -318,7 +320,7 @@ function isRoutineCommand(command) {
318
320
  if (command.executable === "go") return first === "test";
319
321
  return ["pytest", "vitest", "jest", "eslint", "tsc"].includes(command.executable);
320
322
  }
321
- function assessRoutineArguments(command, cwd, workspace) {
323
+ function assessRoutineArguments(command, cwd, lexicalWorkspace, physicalWorkspace) {
322
324
  const args = routineArguments(command);
323
325
  if (args === void 0) return "ask";
324
326
  const pathOptions = /* @__PURE__ */ new Set([
@@ -343,7 +345,7 @@ function assessRoutineArguments(command, cwd, workspace) {
343
345
  const option2 = equals[1]?.toLowerCase() ?? "";
344
346
  const value = equals[2] ?? "";
345
347
  if (!pathOptions.has(option2)) return "ask";
346
- const decision = assessArgumentPath(value, cwd, workspace);
348
+ const decision = assessArgumentPath(value, cwd, lexicalWorkspace, physicalWorkspace);
347
349
  if (decision !== "allow") return decision;
348
350
  continue;
349
351
  }
@@ -351,14 +353,14 @@ function assessRoutineArguments(command, cwd, workspace) {
351
353
  if (option !== void 0 && pathOptions.has(option)) {
352
354
  const value = args[index + 1];
353
355
  if (value === void 0 || value.startsWith("-")) return "ask";
354
- const decision = assessArgumentPath(value, cwd, workspace);
356
+ const decision = assessArgumentPath(value, cwd, lexicalWorkspace, physicalWorkspace);
355
357
  if (decision !== "allow") return decision;
356
358
  index += 1;
357
359
  continue;
358
360
  }
359
361
  if (arg.startsWith("-")) continue;
360
362
  if (looksLikePath(arg)) {
361
- const decision = assessArgumentPath(arg, cwd, workspace);
363
+ const decision = assessArgumentPath(arg, cwd, lexicalWorkspace, physicalWorkspace);
362
364
  if (decision !== "allow") return decision;
363
365
  continue;
364
366
  }
@@ -376,10 +378,10 @@ function routineArguments(command) {
376
378
  if (["pytest", "vitest", "jest", "eslint", "tsc"].includes(command.executable)) return command.args;
377
379
  return void 0;
378
380
  }
379
- function assessArgumentPath(value, cwd, workspace) {
381
+ function assessArgumentPath(value, cwd, lexicalWorkspace, physicalWorkspace) {
380
382
  if (value.length === 0) return "ask";
381
383
  const resolved = resolve(cwd, value);
382
- const classification = classifyPath(workspace, resolved);
384
+ const classification = classifyPath(lexicalWorkspace, physicalWorkspace, resolved);
383
385
  return classification.escape || !classification.inside ? "deny" : "allow";
384
386
  }
385
387
  function looksLikePath(value) {
@@ -5042,7 +5044,8 @@ var ToolRuntime = class {
5042
5044
  } catch {
5043
5045
  }
5044
5046
  }
5045
- if (pre.decision === "ask" || permission.decision === "ask") {
5047
+ const sessionAllowed = this.#alwaysAllowed.has(getToolCategory(tool.name));
5048
+ if (!sessionAllowed && (pre.decision === "ask" || permission.decision === "ask")) {
5046
5049
  const reason = [pre.reason, permission.reason].filter((value) => value !== void 0).join("\n") || "Approval required";
5047
5050
  const requestDecision = await this.#hooks.emit({
5048
5051
  version: 1,
@@ -5067,8 +5070,7 @@ var ToolRuntime = class {
5067
5070
  throw signal.reason;
5068
5071
  } else {
5069
5072
  const category = getToolCategory(tool.name);
5070
- if (this.#alwaysAllowed.has(category)) {
5071
- } else if (this.#approve === void 0) {
5073
+ if (this.#approve === void 0) {
5072
5074
  return this.#fail(tool.name, input, context.agent, "permission_denied", reason);
5073
5075
  } else {
5074
5076
  const decision = await this.#approve({ ...request, reason }, signal);
@@ -9220,9 +9222,11 @@ var SkillRegistry = class {
9220
9222
  for (const configuredRoot of roots) {
9221
9223
  const root = resolve13(configuredRoot);
9222
9224
  let entries;
9225
+ let physicalRoot = root;
9223
9226
  try {
9224
9227
  const rootInfo = await lstat6(root);
9225
9228
  if (rootInfo.isSymbolicLink() || !rootInfo.isDirectory()) throw new Error("Skill root must be a real directory");
9229
+ physicalRoot = await realpath4(root);
9226
9230
  entries = await readdir5(root, { withFileTypes: true });
9227
9231
  } catch (error) {
9228
9232
  if (isMissing2(error)) continue;
@@ -9235,12 +9239,12 @@ var SkillRegistry = class {
9235
9239
  try {
9236
9240
  if (entry2.isSymbolicLink()) throw new Error("Symlinked skill directories are not allowed");
9237
9241
  if (!entry2.isDirectory()) continue;
9238
- const physicalRoot = await realpath4(skillRoot);
9239
- if (!isWithin3(root, physicalRoot)) throw new Error("Skill directory escapes its registry root");
9242
+ const physicalSkillRoot = await realpath4(skillRoot);
9243
+ if (!isWithin3(physicalRoot, physicalSkillRoot)) throw new Error("Skill directory escapes its registry root");
9240
9244
  const skillFile = resolve13(skillRoot, "SKILL.md");
9241
9245
  const parsed = await readFrontmatterFile(
9242
9246
  skillFile,
9243
- physicalRoot,
9247
+ physicalSkillRoot,
9244
9248
  this.#options.maxMetadataBytes,
9245
9249
  this.#options.openFile
9246
9250
  );
@@ -9251,7 +9255,7 @@ var SkillRegistry = class {
9251
9255
  name: parsed.name,
9252
9256
  description: parsed.description,
9253
9257
  source,
9254
- root: physicalRoot,
9258
+ root: physicalSkillRoot,
9255
9259
  disableModelInvocation: parsed.disableModelInvocation
9256
9260
  }),
9257
9261
  skillFile
@@ -10664,19 +10668,20 @@ function createReadTool(workspace, options = {}) {
10664
10668
  if (startLine !== void 0 && endLine !== void 0 && endLine < startLine) {
10665
10669
  throw new Error(`endLine (${endLine}) must not be below startLine (${startLine})`);
10666
10670
  }
10667
- const contents = await readBounded2(path, maxBytes, signal, openFile2);
10671
+ const rangeRequested = startLine !== void 0 || endLine !== void 0;
10672
+ const windowBytes = rangeRequested ? Math.max(maxBytes, Math.min(info.size, MAX_READ_BYTES)) : maxBytes;
10673
+ const contents = await readBounded2(path, windowBytes, signal, openFile2);
10668
10674
  if (isBinary(contents)) throw new Error("Cannot read binary file as text");
10669
- const textEnd = utf8SafeEnd(contents, maxBytes);
10670
- const truncated = contents.length > maxBytes;
10675
+ const textEnd = utf8SafeEnd(contents, windowBytes);
10676
+ const truncated = contents.length > windowBytes;
10671
10677
  const text = contents.subarray(0, textEnd).toString("utf8").replaceAll("\r\n", "\n");
10672
10678
  const lines = text.split("\n");
10673
10679
  if (lines.at(-1) === "") lines.pop();
10674
10680
  const availableLines = lines.length;
10675
- const rangeRequested = startLine !== void 0 || endLine !== void 0;
10676
10681
  const start = startLine ?? 1;
10677
10682
  const end = Math.min(endLine ?? availableLines, availableLines);
10678
10683
  if (rangeRequested && start > availableLines) {
10679
- throw new Error(`startLine (${start}) is beyond the ${availableLines} line${availableLines === 1 ? "" : "s"} available${truncated ? ` in this read (truncated at ${maxBytes} bytes)` : " in this file"}`);
10684
+ throw new Error(`startLine (${start}) is beyond the ${availableLines} line${availableLines === 1 ? "" : "s"} available${truncated ? ` in this read (truncated at ${windowBytes} bytes)` : " in this file"}`);
10680
10685
  }
10681
10686
  if (rangeRequested && end < start) {
10682
10687
  throw new Error(`endLine (${endLine}) must not be below startLine (${start})`);
@@ -10692,13 +10697,13 @@ function createReadTool(workspace, options = {}) {
10692
10697
  record.ranges = mergeRange(record.ranges, start, end);
10693
10698
  }
10694
10699
  if (rangeRequested) {
10695
- const header = `[Lines ${start}-${end} of ${availableLines}${truncated ? ` visible in this read (truncated at ${maxBytes} bytes)` : ""}]`;
10700
+ const header = `[Lines ${start}-${end} of ${availableLines}${truncated ? ` visible in this read (truncated at ${windowBytes} bytes)` : ""}]`;
10696
10701
  return `${header}
10697
10702
 
10698
10703
  ${lines.slice(start - 1, end).join("\n")}`;
10699
10704
  }
10700
10705
  if (truncated) {
10701
- return `[Truncated to ${maxBytes} bytes. File is ${info.size} bytes total. Request a higher maxBytes or read a specific range with startLine/endLine.]
10706
+ return `[Truncated to ${windowBytes} bytes. File is ${info.size} bytes total. Request a higher maxBytes or read a specific range with startLine/endLine.]
10702
10707
 
10703
10708
  ${text}`;
10704
10709
  }
@@ -10746,6 +10751,7 @@ function createEditTool(workspace, options = {}) {
10746
10751
  paths: (input) => [guard.lexical(input.path)],
10747
10752
  execute: async (input, signal) => {
10748
10753
  abortIfNeeded(signal);
10754
+ const displayPath = guard.lexical(input.path);
10749
10755
  const path = await guard.existing(input.path);
10750
10756
  const contents = await readText(path);
10751
10757
  const hasCRLF = contents.includes("\r\n");
@@ -10761,11 +10767,11 @@ function createEditTool(workspace, options = {}) {
10761
10767
  }
10762
10768
  const updatedLF = contentsLF.slice(0, first) + newTextLF + contentsLF.slice(first + oldTextLF.length);
10763
10769
  const updated = hasCRLF ? updatedLF.replace(/\n/g, "\r\n") : updatedLF;
10764
- await options.beforeCommit?.({ path, before: contents, after: updated, kind: "update" }, signal);
10770
+ await options.beforeCommit?.({ path: displayPath, before: contents, after: updated, kind: "update" }, signal);
10765
10771
  await atomicWrite(path, updated, signal);
10766
10772
  return withToolPresentation(
10767
- { path, replacements: 1 },
10768
- buildFileChangePresentation(path, contents, updated, "update")
10773
+ { path: displayPath, replacements: 1 },
10774
+ buildFileChangePresentation(displayPath, contents, updated, "update")
10769
10775
  );
10770
10776
  }
10771
10777
  };
@@ -15783,4 +15789,3 @@ export {
15783
15789
  createExecutionEnvironment,
15784
15790
  createProductionRuntime
15785
15791
  };
15786
- //# sourceMappingURL=chunk-XGCFBGBB.js.map
@@ -689,4 +689,3 @@ export {
689
689
  setProjectProviderConfig,
690
690
  redactConfig
691
691
  };
692
- //# sourceMappingURL=chunk-MVIMQEQT.js.map
@@ -121,4 +121,3 @@ export {
121
121
  staticTaskLines,
122
122
  statusPresentation
123
123
  };
124
- //# sourceMappingURL=chunk-DM64TM4Z.js.map
@@ -150,4 +150,3 @@ export {
150
150
  resolveLanguage,
151
151
  languageInstruction
152
152
  };
153
- //# sourceMappingURL=chunk-VOCZVFP7.js.map
@@ -5,12 +5,12 @@ import {
5
5
  getGraphemeSegmenter,
6
6
  isEnvTruthy,
7
7
  logError
8
- } from "./chunk-VOCZVFP7.js";
8
+ } from "./chunk-N2S7USST.js";
9
9
  import {
10
10
  __commonJS,
11
11
  __require,
12
12
  __toESM
13
- } from "./chunk-JZ322RCJ.js";
13
+ } from "./chunk-S32JRDZK.js";
14
14
 
15
15
  // node_modules/scheduler/cjs/scheduler.production.js
16
16
  var require_scheduler_production = __commonJS({
@@ -28001,7 +28001,7 @@ var styles_default = styles2;
28001
28001
  // src/claude-ink/reconciler.ts
28002
28002
  if (process.env.NODE_ENV === "development") {
28003
28003
  try {
28004
- void import("./devtools-SXJBSV2N.js");
28004
+ void import("./devtools-4QTPKBKK.js");
28005
28005
  } catch (error) {
28006
28006
  if (error.code === "ERR_MODULE_NOT_FOUND") {
28007
28007
  console.warn(
@@ -35554,4 +35554,3 @@ react-reconciler/cjs/react-reconciler-constants.development.js:
35554
35554
  * LICENSE file in the root directory of this source tree.
35555
35555
  *)
35556
35556
  */
35557
- //# sourceMappingURL=chunk-XS2JU6S3.js.map
@@ -37,4 +37,3 @@ export {
37
37
  __commonJS,
38
38
  __toESM
39
39
  };
40
- //# sourceMappingURL=chunk-JZ322RCJ.js.map
@@ -4,7 +4,7 @@ import {
4
4
  message,
5
5
  redactErrorText,
6
6
  redactSecrets
7
- } from "./chunk-XGCFBGBB.js";
7
+ } from "./chunk-3TYRDK34.js";
8
8
 
9
9
  // src/rpc/server.ts
10
10
  import { createInterface } from "readline";
@@ -243,4 +243,3 @@ export {
243
243
  TraceRecordSchema,
244
244
  TraceRecorder
245
245
  };
246
- //# sourceMappingURL=chunk-AHUOGT4I.js.map
@@ -10,9 +10,9 @@ import {
10
10
  useStdout,
11
11
  use_app_default,
12
12
  use_input_default
13
- } from "./chunk-XS2JU6S3.js";
14
- import "./chunk-VOCZVFP7.js";
15
- import "./chunk-JZ322RCJ.js";
13
+ } from "./chunk-NVLYFU6P.js";
14
+ import "./chunk-N2S7USST.js";
15
+ import "./chunk-S32JRDZK.js";
16
16
  export {
17
17
  AlternateScreen,
18
18
  Box_default as Box,
@@ -24,4 +24,3 @@ export {
24
24
  use_input_default as useInput,
25
25
  useStdout
26
26
  };
27
- //# sourceMappingURL=claude-ink-ZL4UZMFY.js.map
package/dist/cli.js CHANGED
@@ -3,10 +3,10 @@ import { createRequire } from "node:module"; const require = createRequire(impor
3
3
  import {
4
4
  FlavorRpcServer,
5
5
  TraceRecorder
6
- } from "./chunk-AHUOGT4I.js";
6
+ } from "./chunk-Z3BW52MK.js";
7
7
  import {
8
8
  staticTaskLines
9
- } from "./chunk-DM64TM4Z.js";
9
+ } from "./chunk-KKIBYDJI.js";
10
10
  import {
11
11
  DEFAULT_MAX_OUTPUT_BYTES,
12
12
  MEMORY_TYPES,
@@ -20,7 +20,7 @@ import {
20
20
  message,
21
21
  packageVersion,
22
22
  redactErrorText
23
- } from "./chunk-XGCFBGBB.js";
23
+ } from "./chunk-3TYRDK34.js";
24
24
  import {
25
25
  McpServerConfigSchema,
26
26
  McpServerNameSchema,
@@ -29,9 +29,9 @@ import {
29
29
  readRecoverableFile,
30
30
  setProjectSkillDisabled,
31
31
  updateProtectedFile
32
- } from "./chunk-MVIMQEQT.js";
33
- import "./chunk-VOCZVFP7.js";
34
- import "./chunk-JZ322RCJ.js";
32
+ } from "./chunk-HFR2WS6T.js";
33
+ import "./chunk-N2S7USST.js";
34
+ import "./chunk-S32JRDZK.js";
35
35
 
36
36
  // src/cli.tsx
37
37
  import { realpathSync } from "fs";
@@ -669,7 +669,7 @@ async function runEvaluationFile(path, outputPath) {
669
669
  })),
670
670
  ...parsed.maxTokens === void 0 ? {} : { maxTokens: parsed.maxTokens }
671
671
  };
672
- const configured = await import("./load-WQGNTCHC.js").then(({ loadConfig: loadConfig2 }) => loadConfig2({ cwd: workspace, home: process.env.USERPROFILE ?? process.env.HOME ?? workspace }));
672
+ const configured = await import("./load-XC5JYYBQ.js").then(({ loadConfig: loadConfig2 }) => loadConfig2({ cwd: workspace, home: process.env.USERPROFILE ?? process.env.HOME ?? workspace }));
673
673
  const environment = createExecutionEnvironment(workspace, configured.config.execution) ?? new LocalExecutionEnvironment();
674
674
  let report;
675
675
  try {
@@ -769,9 +769,9 @@ function createProgram() {
769
769
  }
770
770
  setInteractiveProcessTitle();
771
771
  const [{ render, AlternateScreen }, { createElement }, { App }] = await Promise.all([
772
- import("./claude-ink-ZL4UZMFY.js"),
772
+ import("./claude-ink-WPWPEL5A.js"),
773
773
  import("react"),
774
- import("./app-SCHNJSXI.js")
774
+ import("./app-3DXEGSS7.js")
775
775
  ]);
776
776
  const instance = await render(createElement(
777
777
  AlternateScreen,
@@ -912,4 +912,3 @@ export {
912
912
  runRpcMode,
913
913
  setInteractiveProcessTitle
914
914
  };
915
- //# sourceMappingURL=cli.js.map