@rdmind/rdmind 0.1.4-alpha.0 → 0.1.4-alpha.10

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 (4) hide show
  1. package/cli.js +606 -445
  2. package/locales/en.js +77 -182
  3. package/locales/zh.js +75 -156
  4. package/package.json +2 -2
package/cli.js CHANGED
@@ -37605,7 +37605,12 @@ var require_sign_stream = __commonJS({
37605
37605
  }
37606
37606
  __name(jwsSign, "jwsSign");
37607
37607
  function SignStream(opts) {
37608
- var secret = opts.secret || opts.privateKey || opts.key;
37608
+ var secret = opts.secret;
37609
+ secret = secret == null ? opts.privateKey : secret;
37610
+ secret = secret == null ? opts.key : secret;
37611
+ if (/^hs/i.test(opts.header.alg) === true && secret == null) {
37612
+ throw new TypeError("secret must be a string or buffer or a KeyObject");
37613
+ }
37609
37614
  var secretStream = new DataStream(secret);
37610
37615
  this.readable = true;
37611
37616
  this.header = opts.header;
@@ -37728,7 +37733,12 @@ var require_verify_stream = __commonJS({
37728
37733
  __name(jwsDecode, "jwsDecode");
37729
37734
  function VerifyStream(opts) {
37730
37735
  opts = opts || {};
37731
- var secretOrKey = opts.secret || opts.publicKey || opts.key;
37736
+ var secretOrKey = opts.secret;
37737
+ secretOrKey = secretOrKey == null ? opts.publicKey : secretOrKey;
37738
+ secretOrKey = secretOrKey == null ? opts.key : secretOrKey;
37739
+ if (/^hs/i.test(opts.algorithm) === true && secretOrKey == null) {
37740
+ throw new TypeError("secret must be a string or buffer or a KeyObject");
37741
+ }
37732
37742
  var secretStream = new DataStream(secretOrKey);
37733
37743
  this.readable = true;
37734
37744
  this.algorithm = opts.algorithm;
@@ -89290,6 +89300,8 @@ var init_subagent_statistics = __esm({
89290
89300
  failedToolCalls = 0;
89291
89301
  inputTokens = 0;
89292
89302
  outputTokens = 0;
89303
+ thoughtTokens = 0;
89304
+ cachedTokens = 0;
89293
89305
  toolUsage = /* @__PURE__ */ new Map();
89294
89306
  start(now = Date.now()) {
89295
89307
  this.startTimeMs = now;
@@ -89318,15 +89330,17 @@ var init_subagent_statistics = __esm({
89318
89330
  tu.averageDurationMs = tu.count > 0 ? tu.totalDurationMs / tu.count : 0;
89319
89331
  this.toolUsage.set(name3, tu);
89320
89332
  }
89321
- recordTokens(input, output) {
89333
+ recordTokens(input, output, thought = 0, cached2 = 0) {
89322
89334
  this.inputTokens += Math.max(0, input || 0);
89323
89335
  this.outputTokens += Math.max(0, output || 0);
89336
+ this.thoughtTokens += Math.max(0, thought || 0);
89337
+ this.cachedTokens += Math.max(0, cached2 || 0);
89324
89338
  }
89325
89339
  getSummary(now = Date.now()) {
89326
89340
  const totalDurationMs = this.startTimeMs ? now - this.startTimeMs : 0;
89327
89341
  const totalToolCalls = this.totalToolCalls;
89328
89342
  const successRate = totalToolCalls > 0 ? this.successfulToolCalls / totalToolCalls * 100 : 0;
89329
- const totalTokens = this.inputTokens + this.outputTokens;
89343
+ const totalTokens = this.inputTokens + this.outputTokens + this.thoughtTokens + this.cachedTokens;
89330
89344
  const estimatedCost = this.inputTokens * 3e-5 + this.outputTokens * 6e-5;
89331
89345
  return {
89332
89346
  rounds: this.rounds,
@@ -89337,6 +89351,8 @@ var init_subagent_statistics = __esm({
89337
89351
  successRate,
89338
89352
  inputTokens: this.inputTokens,
89339
89353
  outputTokens: this.outputTokens,
89354
+ thoughtTokens: this.thoughtTokens,
89355
+ cachedTokens: this.cachedTokens,
89340
89356
  totalTokens,
89341
89357
  estimatedCost,
89342
89358
  toolUsage: Array.from(this.toolUsage.values())
@@ -89351,8 +89367,12 @@ var init_subagent_statistics = __esm({
89351
89367
  `\u23F1\uFE0F Duration: ${this.fmtDuration(stats.totalDurationMs)} | \u{1F501} Rounds: ${stats.rounds}`
89352
89368
  ];
89353
89369
  if (typeof stats.totalTokens === "number") {
89370
+ const parts = [
89371
+ `in ${stats.inputTokens ?? 0}`,
89372
+ `out ${stats.outputTokens ?? 0}`
89373
+ ];
89354
89374
  lines.push(
89355
- `\u{1F522} Tokens: ${stats.totalTokens.toLocaleString()}${stats.inputTokens || stats.outputTokens ? ` (in ${stats.inputTokens ?? 0}, out ${stats.outputTokens ?? 0})` : ""}`
89375
+ `\u{1F522} Tokens: ${stats.totalTokens.toLocaleString()}${parts.length ? ` (${parts.join(", ")})` : ""}`
89356
89376
  );
89357
89377
  }
89358
89378
  return lines.join("\n");
@@ -89380,8 +89400,12 @@ var init_subagent_statistics = __esm({
89380
89400
  `\u{1F527} Tools: ${stats.totalToolCalls} calls, ${sr.toFixed(1)}% success (${stats.successfulToolCalls} ok, ${stats.failedToolCalls} failed)`
89381
89401
  );
89382
89402
  if (typeof stats.totalTokens === "number") {
89403
+ const parts = [
89404
+ `in ${stats.inputTokens ?? 0}`,
89405
+ `out ${stats.outputTokens ?? 0}`
89406
+ ];
89383
89407
  lines.push(
89384
- `\u{1F522} Tokens: ${stats.totalTokens.toLocaleString()} (in ${stats.inputTokens ?? 0}, out ${stats.outputTokens ?? 0})`
89408
+ `\u{1F522} Tokens: ${stats.totalTokens.toLocaleString()} (${parts.join(", ")})`
89385
89409
  );
89386
89410
  }
89387
89411
  if (stats.toolUsage && stats.toolUsage.length) {
@@ -147556,6 +147580,7 @@ var init_uiTelemetry = __esm({
147556
147580
  init_esbuild_shims();
147557
147581
  init_constants();
147558
147582
  init_tool_call_decision();
147583
+ init_constants();
147559
147584
  createInitialModelMetrics = /* @__PURE__ */ __name(() => ({
147560
147585
  api: {
147561
147586
  totalRequests: 0,
@@ -160654,7 +160679,7 @@ var init_geminiContentGenerator = __esm({
160654
160679
  config: {
160655
160680
  ...request4.config,
160656
160681
  thinkingConfig: {
160657
- includeThoughts: true,
160682
+ includeThoughts: false,
160658
160683
  thinkingLevel
160659
160684
  }
160660
160685
  }
@@ -160801,7 +160826,7 @@ function createContentGeneratorConfig(config2, authType, generationConfig) {
160801
160826
  };
160802
160827
  }
160803
160828
  async function createContentGenerator(config2, gcConfig, isInitialAuth) {
160804
- const version3 = "0.1.4-alpha.0";
160829
+ const version3 = "0.1.4-alpha.10";
160805
160830
  const userAgent2 = `QwenCode/${version3} (${process.platform}; ${process.arch})`;
160806
160831
  const baseHeaders = {
160807
160832
  "User-Agent": userAgent2
@@ -172624,6 +172649,12 @@ function getCachedEncodingForBuffer(buffer) {
172624
172649
  cachedSystemEncoding = getSystemEncoding();
172625
172650
  }
172626
172651
  if (cachedSystemEncoding) {
172652
+ if (cachedSystemEncoding !== "utf-8") {
172653
+ const detected = detectEncodingFromBuffer(buffer);
172654
+ if (detected === "utf-8") {
172655
+ return "utf-8";
172656
+ }
172657
+ }
172627
172658
  return cachedSystemEncoding;
172628
172659
  }
172629
172660
  return detectEncodingFromBuffer(buffer) || "utf-8";
@@ -179312,6 +179343,7 @@ var init_subagent_events = __esm({
179312
179343
  SubAgentEventType2["TOOL_CALL"] = "tool_call";
179313
179344
  SubAgentEventType2["TOOL_RESULT"] = "tool_result";
179314
179345
  SubAgentEventType2["TOOL_WAITING_APPROVAL"] = "tool_waiting_approval";
179346
+ SubAgentEventType2["USAGE_METADATA"] = "usage_metadata";
179315
179347
  SubAgentEventType2["FINISH"] = "finish";
179316
179348
  SubAgentEventType2["ERROR"] = "error";
179317
179349
  return SubAgentEventType2;
@@ -179563,6 +179595,7 @@ var init_subagent = __esm({
179563
179595
  tools: [{ functionDeclarations: toolsList }]
179564
179596
  }
179565
179597
  };
179598
+ const roundStreamStart = Date.now();
179566
179599
  const responseStream = await chat.sendMessageStream(
179567
179600
  this.modelConfig.model || this.runtimeContext.getModel() || DEFAULT_QWEN_MODEL,
179568
179601
  messageParams,
@@ -179625,16 +179658,27 @@ var init_subagent = __esm({
179625
179658
  if (lastUsage) {
179626
179659
  const inTok = Number(lastUsage.promptTokenCount || 0);
179627
179660
  const outTok = Number(lastUsage.candidatesTokenCount || 0);
179628
- if (isFinite(inTok) || isFinite(outTok)) {
179661
+ const thoughtTok = Number(lastUsage.thoughtsTokenCount || 0);
179662
+ const cachedTok = Number(lastUsage.cachedContentTokenCount || 0);
179663
+ if (isFinite(inTok) || isFinite(outTok) || isFinite(thoughtTok) || isFinite(cachedTok)) {
179629
179664
  this.stats.recordTokens(
179630
179665
  isFinite(inTok) ? inTok : 0,
179631
- isFinite(outTok) ? outTok : 0
179666
+ isFinite(outTok) ? outTok : 0,
179667
+ isFinite(thoughtTok) ? thoughtTok : 0,
179668
+ isFinite(cachedTok) ? cachedTok : 0
179632
179669
  );
179633
179670
  this.executionStats.inputTokens = (this.executionStats.inputTokens || 0) + (isFinite(inTok) ? inTok : 0);
179634
179671
  this.executionStats.outputTokens = (this.executionStats.outputTokens || 0) + (isFinite(outTok) ? outTok : 0);
179635
- this.executionStats.totalTokens = (this.executionStats.inputTokens || 0) + (this.executionStats.outputTokens || 0);
179672
+ this.executionStats.totalTokens = (this.executionStats.inputTokens || 0) + (this.executionStats.outputTokens || 0) + (isFinite(thoughtTok) ? thoughtTok : 0) + (isFinite(cachedTok) ? cachedTok : 0);
179636
179673
  this.executionStats.estimatedCost = (this.executionStats.inputTokens || 0) * 3e-5 + (this.executionStats.outputTokens || 0) * 6e-5;
179637
179674
  }
179675
+ this.eventEmitter?.emit("usage_metadata" /* USAGE_METADATA */, {
179676
+ subagentId: this.subagentId,
179677
+ round: turnCounter,
179678
+ usage: lastUsage,
179679
+ durationMs: Date.now() - roundStreamStart,
179680
+ timestamp: Date.now()
179681
+ });
179638
179682
  }
179639
179683
  if (functionCalls.length > 0) {
179640
179684
  currentMessages = await this.processFunctionCalls(
@@ -209076,7 +209120,7 @@ var init_ide_client = __esm({
209076
209120
  if (this.connectionConfig?.authToken) {
209077
209121
  this.authToken = this.connectionConfig.authToken;
209078
209122
  }
209079
- const workspacePath = this.connectionConfig?.workspacePath ?? process.env["QWEN_CODE_IDE_WORKSPACE_PATH"];
209123
+ const workspacePath = this.connectionConfig?.workspacePath ?? process.env["RDMIND_CODE_IDE_WORKSPACE_PATH"];
209080
209124
  const { isValid: isValid2, error: error2 } = _IdeClient.validateWorkspacePath(
209081
209125
  workspacePath,
209082
209126
  process.cwd()
@@ -209386,18 +209430,18 @@ var init_ide_client = __esm({
209386
209430
  return { isValid: true };
209387
209431
  }
209388
209432
  getPortFromEnv() {
209389
- const port = process.env["QWEN_CODE_IDE_SERVER_PORT"];
209433
+ const port = process.env["RDMIND_CODE_IDE_SERVER_PORT"];
209390
209434
  if (!port) {
209391
209435
  return void 0;
209392
209436
  }
209393
209437
  return port;
209394
209438
  }
209395
209439
  getStdioConfigFromEnv() {
209396
- const command2 = process.env["QWEN_CODE_IDE_SERVER_STDIO_COMMAND"];
209440
+ const command2 = process.env["RDMIND_CODE_IDE_SERVER_STDIO_COMMAND"];
209397
209441
  if (!command2) {
209398
209442
  return void 0;
209399
209443
  }
209400
- const argsStr = process.env["QWEN_CODE_IDE_SERVER_STDIO_ARGS"];
209444
+ const argsStr = process.env["RDMIND_CODE_IDE_SERVER_STDIO_ARGS"];
209401
209445
  let args = [];
209402
209446
  if (argsStr) {
209403
209447
  try {
@@ -209406,11 +209450,11 @@ var init_ide_client = __esm({
209406
209450
  args = parsedArgs;
209407
209451
  } else {
209408
209452
  logger.error(
209409
- "QWEN_CODE_IDE_SERVER_STDIO_ARGS must be a JSON array string."
209453
+ "RDMIND_CODE_IDE_SERVER_STDIO_ARGS must be a JSON array string."
209410
209454
  );
209411
209455
  }
209412
209456
  } catch (e3) {
209413
- logger.error("Failed to parse QWEN_CODE_IDE_SERVER_STDIO_ARGS:", e3);
209457
+ logger.error("Failed to parse RDMIND_CODE_IDE_SERVER_STDIO_ARGS:", e3);
209414
209458
  }
209415
209459
  }
209416
209460
  return { command: command2, args };
@@ -209422,7 +209466,7 @@ var init_ide_client = __esm({
209422
209466
  try {
209423
209467
  const portFile = path38.join(
209424
209468
  os20.tmpdir(),
209425
- `qwen-code-ide-server-${this.ideProcessInfo.pid}.json`
209469
+ `rdmind-code-ide-server-${this.ideProcessInfo.pid}.json`
209426
209470
  );
209427
209471
  const portFileContents = await fs35.promises.readFile(portFile, "utf8");
209428
209472
  return JSON.parse(portFileContents);
@@ -209440,7 +209484,7 @@ var init_ide_client = __esm({
209440
209484
  return void 0;
209441
209485
  }
209442
209486
  const fileRegex = new RegExp(
209443
- `^qwen-code-ide-server-${this.ideProcessInfo.pid}-\\d+\\.json$`
209487
+ `^rdmind-code-ide-server-${this.ideProcessInfo.pid}-\\d+\\.json$`
209444
209488
  );
209445
209489
  const matchingFiles = portFiles.filter((file) => fileRegex.test(file)).sort();
209446
209490
  if (matchingFiles.length === 0) {
@@ -235947,8 +235991,8 @@ var init_git_commit = __esm({
235947
235991
  "packages/core/src/generated/git-commit.ts"() {
235948
235992
  "use strict";
235949
235993
  init_esbuild_shims();
235950
- GIT_COMMIT_INFO = "4f0a7859";
235951
- CLI_VERSION = "0.1.4-alpha.0";
235994
+ GIT_COMMIT_INFO = "a5a74672";
235995
+ CLI_VERSION = "0.1.4-alpha.10";
235952
235996
  }
235953
235997
  });
235954
235998
 
@@ -236884,6 +236928,9 @@ __export(core_exports4, {
236884
236928
  DeclarativeTool: () => DeclarativeTool,
236885
236929
  DiscoveredMCPTool: () => DiscoveredMCPTool,
236886
236930
  DiscoveredTool: () => DiscoveredTool,
236931
+ EVENT_API_ERROR: () => EVENT_API_ERROR,
236932
+ EVENT_API_RESPONSE: () => EVENT_API_RESPONSE,
236933
+ EVENT_TOOL_CALL: () => EVENT_TOOL_CALL,
236887
236934
  EditTool: () => EditTool,
236888
236935
  EndSessionEvent: () => EndSessionEvent,
236889
236936
  ExitPlanModeTool: () => ExitPlanModeTool,
@@ -286473,12 +286520,12 @@ var init_header = __esm({
286473
286520
  if (!buf || !(buf.length >= off + 512)) {
286474
286521
  throw new Error("need 512 bytes for header");
286475
286522
  }
286476
- this.path = decString(buf, off, 100);
286477
- this.mode = decNumber(buf, off + 100, 8);
286478
- this.uid = decNumber(buf, off + 108, 8);
286479
- this.gid = decNumber(buf, off + 116, 8);
286480
- this.size = decNumber(buf, off + 124, 12);
286481
- this.mtime = decDate(buf, off + 136, 12);
286523
+ this.path = ex?.path ?? decString(buf, off, 100);
286524
+ this.mode = ex?.mode ?? gex?.mode ?? decNumber(buf, off + 100, 8);
286525
+ this.uid = ex?.uid ?? gex?.uid ?? decNumber(buf, off + 108, 8);
286526
+ this.gid = ex?.gid ?? gex?.gid ?? decNumber(buf, off + 116, 8);
286527
+ this.size = ex?.size ?? gex?.size ?? decNumber(buf, off + 124, 12);
286528
+ this.mtime = ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12);
286482
286529
  this.cksum = decNumber(buf, off + 148, 12);
286483
286530
  if (gex)
286484
286531
  this.#slurp(gex, true);
@@ -286496,10 +286543,10 @@ var init_header = __esm({
286496
286543
  }
286497
286544
  this.linkpath = decString(buf, off + 157, 100);
286498
286545
  if (buf.subarray(off + 257, off + 265).toString() === "ustar\x0000") {
286499
- this.uname = decString(buf, off + 265, 32);
286500
- this.gname = decString(buf, off + 297, 32);
286501
- this.devmaj = decNumber(buf, off + 329, 8) ?? 0;
286502
- this.devmin = decNumber(buf, off + 337, 8) ?? 0;
286546
+ this.uname = ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32);
286547
+ this.gname = ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32);
286548
+ this.devmaj = ex?.devmaj ?? gex?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0;
286549
+ this.devmin = ex?.devmin ?? gex?.devmin ?? decNumber(buf, off + 337, 8) ?? 0;
286503
286550
  if (buf[off + 475] !== 0) {
286504
286551
  const prefix = decString(buf, off + 345, 155);
286505
286552
  this.path = prefix + "/" + this.path;
@@ -286508,8 +286555,8 @@ var init_header = __esm({
286508
286555
  if (prefix) {
286509
286556
  this.path = prefix + "/" + this.path;
286510
286557
  }
286511
- this.atime = decDate(buf, off + 476, 12);
286512
- this.ctime = decDate(buf, off + 488, 12);
286558
+ this.atime = ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12);
286559
+ this.ctime = ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12);
286513
286560
  }
286514
286561
  }
286515
286562
  let sum = 8 * 32;
@@ -287504,13 +287551,15 @@ var init_list = __esm({
287504
287551
  const readSize = opt.maxReadSize || 16 * 1024 * 1024;
287505
287552
  if (stat7.size < readSize) {
287506
287553
  const buf = Buffer.allocUnsafe(stat7.size);
287507
- fs63.readSync(fd, buf, 0, stat7.size, 0);
287508
- p.end(buf);
287554
+ const read3 = fs63.readSync(fd, buf, 0, stat7.size, 0);
287555
+ p.end(read3 === buf.byteLength ? buf : buf.subarray(0, read3));
287509
287556
  } else {
287510
287557
  let pos2 = 0;
287511
287558
  const buf = Buffer.allocUnsafe(readSize);
287512
287559
  while (pos2 < stat7.size) {
287513
287560
  const bytesRead = fs63.readSync(fd, buf, 0, readSize, pos2);
287561
+ if (bytesRead === 0)
287562
+ break;
287514
287563
  pos2 += bytesRead;
287515
287564
  p.write(buf.subarray(0, bytesRead));
287516
287565
  }
@@ -307580,134 +307629,75 @@ var init_en3 = __esm({
307580
307629
  // ============================================================================
307581
307630
  "Waiting for user confirmation...": "Waiting for user confirmation...",
307582
307631
  "(esc to cancel, {{time}})": "(esc to cancel, {{time}})",
307583
- "I'm Feeling Lucky": "I'm Feeling Lucky",
307584
- "Shipping awesomeness... ": "Shipping awesomeness... ",
307585
- "Painting the serifs back on...": "Painting the serifs back on...",
307586
- "Navigating the slime mold...": "Navigating the slime mold...",
307587
- "Consulting the digital spirits...": "Consulting the digital spirits...",
307588
- "Reticulating splines...": "Reticulating splines...",
307589
- "Warming up the AI hamsters...": "Warming up the AI hamsters...",
307590
- "Asking the magic conch shell...": "Asking the magic conch shell...",
307591
- "Generating witty retort...": "Generating witty retort...",
307632
+ // Programming/Technical
307633
+ "Summoning the soul of programmers...": "Summoning the soul of programmers...",
307634
+ "Fixing that bug that's not a bug, it's a feature...": "Fixing that bug that's not a bug, it's a feature...",
307635
+ "Removing pinyin comments from code...": "Removing pinyin comments from code...",
307636
+ "Debating whether array index starts from 0 or 1...": "Debating whether array index starts from 0 or 1...",
307637
+ "Thinking about refactoring...": "Thinking about refactoring...",
307638
+ "Looking for a misplaced semicolon...": "Looking for a misplaced semicolon...",
307639
+ "Cleaning up stack overflow...": "Cleaning up stack overflow...",
307640
+ "Naming variables properly...": "Naming variables properly...",
307641
+ "Commenting code written 3 months ago...": "Commenting code written 3 months ago...",
307642
+ "Praying for no bugs...": "Praying for no bugs...",
307643
+ "Trying to exit Vim...": "Trying to exit Vim...",
307644
+ "Searching for the correct USB orientation...": "Searching for the correct USB orientation...",
307645
+ "That's not a bug, it's an undocumented feature...": "That's not a bug, it's an undocumented feature...",
307592
307646
  "Polishing the algorithms...": "Polishing the algorithms...",
307593
- "Don't rush perfection (or my code)...": "Don't rush perfection (or my code)...",
307594
- "Brewing fresh bytes...": "Brewing fresh bytes...",
307595
- "Counting electrons...": "Counting electrons...",
307596
- "Engaging cognitive processors...": "Engaging cognitive processors...",
307597
- "Checking for syntax errors in the universe...": "Checking for syntax errors in the universe...",
307598
- "One moment, optimizing humor...": "One moment, optimizing humor...",
307599
- "Shuffling punchlines...": "Shuffling punchlines...",
307600
- "Untangling neural nets...": "Untangling neural nets...",
307601
307647
  "Compiling brilliance...": "Compiling brilliance...",
307602
- "Loading wit.exe...": "Loading wit.exe...",
307603
- "Summoning the cloud of wisdom...": "Summoning the cloud of wisdom...",
307604
- "Preparing a witty response...": "Preparing a witty response...",
307605
- "Just a sec, I'm debugging reality...": "Just a sec, I'm debugging reality...",
307606
- "Confuzzling the options...": "Confuzzling the options...",
307607
- "Tuning the cosmic frequencies...": "Tuning the cosmic frequencies...",
307608
- "Crafting a response worthy of your patience...": "Crafting a response worthy of your patience...",
307609
- "Compiling the 1s and 0s...": "Compiling the 1s and 0s...",
307610
- "Resolving dependencies... and existential crises...": "Resolving dependencies... and existential crises...",
307611
- "Defragmenting memories... both RAM and personal...": "Defragmenting memories... both RAM and personal...",
307612
- "Rebooting the humor module...": "Rebooting the humor module...",
307613
- "Caching the essentials (mostly cat memes)...": "Caching the essentials (mostly cat memes)...",
307614
- "Optimizing for ludicrous speed": "Optimizing for ludicrous speed",
307615
- "Swapping bits... don't tell the bytes...": "Swapping bits... don't tell the bytes...",
307648
+ "Untangling neural nets...": "Untangling neural nets...",
307616
307649
  "Garbage collecting... be right back...": "Garbage collecting... be right back...",
307617
- "Assembling the interwebs...": "Assembling the interwebs...",
307650
+ "Resolving dependencies...": "Resolving dependencies...",
307618
307651
  "Converting coffee into code...": "Converting coffee into code...",
307619
- "Updating the syntax for reality...": "Updating the syntax for reality...",
307620
- "Rewiring the synapses...": "Rewiring the synapses...",
307621
- "Looking for a misplaced semicolon...": "Looking for a misplaced semicolon...",
307622
- "Greasin' the cogs of the machine...": "Greasin' the cogs of the machine...",
307623
- "Pre-heating the servers...": "Pre-heating the servers...",
307624
- "Calibrating the flux capacitor...": "Calibrating the flux capacitor...",
307625
- "Engaging the improbability drive...": "Engaging the improbability drive...",
307626
- "Channeling the Force...": "Channeling the Force...",
307627
- "Aligning the stars for optimal response...": "Aligning the stars for optimal response...",
307628
- "So say we all...": "So say we all...",
307629
- "Loading the next great idea...": "Loading the next great idea...",
307630
- "Just a moment, I'm in the zone...": "Just a moment, I'm in the zone...",
307631
- "Preparing to dazzle you with brilliance...": "Preparing to dazzle you with brilliance...",
307632
- "Just a tick, I'm polishing my wit...": "Just a tick, I'm polishing my wit...",
307633
- "Hold tight, I'm crafting a masterpiece...": "Hold tight, I'm crafting a masterpiece...",
307634
- "Just a jiffy, I'm debugging the universe...": "Just a jiffy, I'm debugging the universe...",
307635
- "Just a moment, I'm aligning the pixels...": "Just a moment, I'm aligning the pixels...",
307636
- "Just a sec, I'm optimizing the humor...": "Just a sec, I'm optimizing the humor...",
307637
- "Just a moment, I'm tuning the algorithms...": "Just a moment, I'm tuning the algorithms...",
307638
- "Warp speed engaged...": "Warp speed engaged...",
307639
- "Mining for more Dilithium crystals...": "Mining for more Dilithium crystals...",
307640
- "Don't panic...": "Don't panic...",
307641
- "Following the white rabbit...": "Following the white rabbit...",
307642
- "The truth is in here... somewhere...": "The truth is in here... somewhere...",
307643
- "Blowing on the cartridge...": "Blowing on the cartridge...",
307644
- "Loading... Do a barrel roll!": "Loading... Do a barrel roll!",
307645
- "Waiting for the respawn...": "Waiting for the respawn...",
307646
- "Finishing the Kessel Run in less than 12 parsecs...": "Finishing the Kessel Run in less than 12 parsecs...",
307647
- "The cake is not a lie, it's just still loading...": "The cake is not a lie, it's just still loading...",
307648
- "Fiddling with the character creation screen...": "Fiddling with the character creation screen...",
307649
- "Just a moment, I'm finding the right meme...": "Just a moment, I'm finding the right meme...",
307650
- "Pressing 'A' to continue...": "Pressing 'A' to continue...",
307651
- "Herding digital cats...": "Herding digital cats...",
307652
- "Polishing the pixels...": "Polishing the pixels...",
307653
- "Finding a suitable loading screen pun...": "Finding a suitable loading screen pun...",
307654
- "Distracting you with this witty phrase...": "Distracting you with this witty phrase...",
307655
- "Almost there... probably...": "Almost there... probably...",
307656
- "Our hamsters are working as fast as they can...": "Our hamsters are working as fast as they can...",
307657
- "Giving Cloudy a pat on the head...": "Giving Cloudy a pat on the head...",
307658
- "Petting the cat...": "Petting the cat...",
307659
- "Rickrolling my boss...": "Rickrolling my boss...",
307660
- "Never gonna give you up, never gonna let you down...": "Never gonna give you up, never gonna let you down...",
307661
- "Slapping the bass...": "Slapping the bass...",
307662
- "Tasting the snozberries...": "Tasting the snozberries...",
307663
- "I'm going the distance, I'm going for speed...": "I'm going the distance, I'm going for speed...",
307664
- "Is this the real life? Is this just fantasy?...": "Is this the real life? Is this just fantasy?...",
307665
- "I've got a good feeling about this...": "I've got a good feeling about this...",
307666
- "Poking the bear...": "Poking the bear...",
307667
- "Doing research on the latest memes...": "Doing research on the latest memes...",
307668
- "Figuring out how to make this more witty...": "Figuring out how to make this more witty...",
307652
+ // Work/Office Culture
307653
+ "Waiting for product manager to change requirements...": "Waiting for product manager to change requirements...",
307654
+ "Postponing project deadline...": "Postponing project deadline...",
307655
+ 'Preparing another "almost done"...': 'Preparing another "almost done"...',
307656
+ "Taking a break...": "Taking a break...",
307657
+ "Making goji berry tea...": "Making goji berry tea...",
307658
+ "Ordering takeout...": "Ordering takeout...",
307659
+ "Pretending to be busy...": "Pretending to be busy...",
307660
+ // Internet Culture
307661
+ "Recharging faith...": "Recharging faith...",
307662
+ "Downloading more RAM...": "Downloading more RAM...",
307663
+ "Feeding the server...": "Feeding the server...",
307664
+ "Waking up sleeping code...": "Waking up sleeping code...",
307665
+ "Feeding data to AI...": "Feeding data to AI...",
307666
+ "Opening imagination...": "Opening imagination...",
307667
+ // Daily Life
307668
+ "Boiling water for tea...": "Boiling water for tea...",
307669
+ "Waiting for the elevator...": "Waiting for the elevator...",
307670
+ "Taking a number in queue...": "Taking a number in queue...",
307671
+ "Waiting for traffic light...": "Waiting for traffic light...",
307672
+ "Charging...": "Charging...",
307673
+ "Buffering life...": "Buffering life...",
307674
+ // Light Humor
307675
+ "Contemplating the meaning of life...": "Contemplating the meaning of life...",
307676
+ "What to eat today? Thinking...": "What to eat today? Thinking...",
307677
+ "Pretending to work...": "Pretending to work...",
307678
+ "Let me think, just a moment...": "Let me think, just a moment...",
307679
+ "Brewing inspiration...": "Brewing inspiration...",
307680
+ "Take a deep breath, almost done...": "Take a deep breath, almost done...",
307681
+ "Don't worry, good things take time...": "Don't worry, good things take time...",
307682
+ "Stay calm, exciting things coming...": "Stay calm, exciting things coming...",
307669
307683
  "Hmmm... let me think...": "Hmmm... let me think...",
307670
- "What do you call a fish with no eyes? A fsh...": "What do you call a fish with no eyes? A fsh...",
307671
- "Why did the computer go to therapy? It had too many bytes...": "Why did the computer go to therapy? It had too many bytes...",
307672
- "Why don't programmers like nature? It has too many bugs...": "Why don't programmers like nature? It has too many bugs...",
307673
- "Why do programmers prefer dark mode? Because light attracts bugs...": "Why do programmers prefer dark mode? Because light attracts bugs...",
307674
- "Why did the developer go broke? Because they used up all their cache...": "Why did the developer go broke? Because they used up all their cache...",
307675
- "What can you do with a broken pencil? Nothing, it's pointless...": "What can you do with a broken pencil? Nothing, it's pointless...",
307676
- "Applying percussive maintenance...": "Applying percussive maintenance...",
307677
- "Searching for the correct USB orientation...": "Searching for the correct USB orientation...",
307678
- "Ensuring the magic smoke stays inside the wires...": "Ensuring the magic smoke stays inside the wires...",
307679
- "Rewriting in Rust for no particular reason...": "Rewriting in Rust for no particular reason...",
307680
- "Trying to exit Vim...": "Trying to exit Vim...",
307681
- "Spinning up the hamster wheel...": "Spinning up the hamster wheel...",
307682
- "That's not a bug, it's an undocumented feature...": "That's not a bug, it's an undocumented feature...",
307683
- "Engage.": "Engage.",
307684
- "I'll be back... with an answer.": "I'll be back... with an answer.",
307685
- "My other process is a TARDIS...": "My other process is a TARDIS...",
307686
- "Communing with the machine spirit...": "Communing with the machine spirit...",
307687
- "Letting the thoughts marinate...": "Letting the thoughts marinate...",
307688
- "Just remembered where I put my keys...": "Just remembered where I put my keys...",
307689
- "Pondering the orb...": "Pondering the orb...",
307690
- "I've seen things you people wouldn't believe... like a user who reads loading messages.": "I've seen things you people wouldn't believe... like a user who reads loading messages.",
307691
- "Initiating thoughtful gaze...": "Initiating thoughtful gaze...",
307692
- "What's a computer's favorite snack? Microchips.": "What's a computer's favorite snack? Microchips.",
307693
- "Why do Java developers wear glasses? Because they don't C#.": "Why do Java developers wear glasses? Because they don't C#.",
307694
- "Charging the laser... pew pew!": "Charging the laser... pew pew!",
307695
- "Dividing by zero... just kidding!": "Dividing by zero... just kidding!",
307696
- "Looking for an adult superviso... I mean, processing.": "Looking for an adult superviso... I mean, processing.",
307697
- "Making it go beep boop.": "Making it go beep boop.",
307698
- "Buffering... because even AIs need a moment.": "Buffering... because even AIs need a moment.",
307699
- "Entangling quantum particles for a faster response...": "Entangling quantum particles for a faster response...",
307700
- "Polishing the chrome... on the algorithms.": "Polishing the chrome... on the algorithms.",
307701
- "Are you not entertained? (Working on it!)": "Are you not entertained? (Working on it!)",
307702
- "Summoning the code gremlins... to help, of course.": "Summoning the code gremlins... to help, of course.",
307703
- "Just waiting for the dial-up tone to finish...": "Just waiting for the dial-up tone to finish...",
307704
- "Recalibrating the humor-o-meter.": "Recalibrating the humor-o-meter.",
307705
- "My other loading screen is even funnier.": "My other loading screen is even funnier.",
307706
- "Pretty sure there's a cat walking on the keyboard somewhere...": "Pretty sure there's a cat walking on the keyboard somewhere...",
307707
- "Enhancing... Enhancing... Still loading.": "Enhancing... Enhancing... Still loading.",
307708
- "It's not a bug, it's a feature... of this loading screen.": "It's not a bug, it's a feature... of this loading screen.",
307709
- "Have you tried turning it off and on again? (The loading screen, not me.)": "Have you tried turning it off and on again? (The loading screen, not me.)",
307710
- "Constructing additional pylons...": "Constructing additional pylons...",
307684
+ // Technical but Down-to-earth
307685
+ "Greeting the server...": "Greeting the server...",
307686
+ "Organizing thoughts...": "Organizing thoughts...",
307687
+ "Preparing my words...": "Preparing my words...",
307688
+ "Looking up information...": "Looking up information...",
307689
+ "Sorting out my thoughts...": "Sorting out my thoughts...",
307690
+ "Analyzing the problem...": "Analyzing the problem...",
307691
+ "Looking for the best solution...": "Looking for the best solution...",
307692
+ "Engaging cognitive processors...": "Engaging cognitive processors...",
307693
+ "Crafting a response worthy of your patience...": "Crafting a response worthy of your patience...",
307694
+ // Keep it Generic
307695
+ "Loading...": "Loading...",
307696
+ "Processing, please wait...": "Processing, please wait...",
307697
+ "Almost there...": "Almost there...",
307698
+ "Working hard...": "Working hard...",
307699
+ "Almost... almost...": "Almost... almost...",
307700
+ "Almost there... probably...": "Almost there... probably...",
307711
307701
  "Initialize OpenSpec in a project with RDMind integration": "Initialize OpenSpec in a project with RDMind integration",
307712
307702
  "Initialize OpenSpec in the current directory": "Initialize OpenSpec in the current directory",
307713
307703
  "Scaffold a new OpenSpec change and validate strictly.": "Scaffold a new OpenSpec change and validate strictly.",
@@ -308430,134 +308420,75 @@ var init_zh = __esm({
308430
308420
  // ============================================================================
308431
308421
  "Waiting for user confirmation...": "\u7B49\u5F85\u7528\u6237\u786E\u8BA4...",
308432
308422
  "(esc to cancel, {{time}})": "\uFF08\u6309 esc \u53D6\u6D88\uFF0C{{time}}\uFF09",
308433
- "I'm Feeling Lucky": "\u6211\u611F\u89C9\u5F88\u5E78\u8FD0",
308434
- "Shipping awesomeness... ": "\u6B63\u5728\u8FD0\u9001\u7CBE\u5F69\u5185\u5BB9... ",
308435
- "Painting the serifs back on...": "\u6B63\u5728\u91CD\u65B0\u7ED8\u5236\u886C\u7EBF...",
308436
- "Navigating the slime mold...": "\u6B63\u5728\u5BFC\u822A\u7C98\u6DB2\u9709\u83CC...",
308437
- "Consulting the digital spirits...": "\u6B63\u5728\u54A8\u8BE2\u6570\u5B57\u7CBE\u7075...",
308438
- "Reticulating splines...": "\u6B63\u5728\u7F51\u683C\u5316\u6837\u6761\u66F2\u7EBF...",
308439
- "Warming up the AI hamsters...": "\u6B63\u5728\u9884\u70ED AI \u4ED3\u9F20...",
308440
- "Asking the magic conch shell...": "\u6B63\u5728\u8BE2\u95EE\u9B54\u6CD5\u6D77\u87BA\u58F3...",
308441
- "Generating witty retort...": "\u6B63\u5728\u751F\u6210\u673A\u667A\u7684\u53CD\u9A73...",
308423
+ // 编程/技术相关
308424
+ "Summoning the soul of programmers...": "\u6B63\u5728\u53EC\u5524\u7A0B\u5E8F\u5458\u7684\u7075\u9B42...",
308425
+ "Fixing that bug that's not a bug, it's a feature...": "\u6B63\u5728\u4FEE\u590D\u90A3\u4E2A\u4E0D\u7B97 bug \u7684 feature...",
308426
+ "Removing pinyin comments from code...": "\u6B63\u5728\u6E05\u9664\u4EE3\u7801\u91CC\u7684\u62FC\u97F3\u6CE8\u91CA...",
308427
+ "Debating whether array index starts from 0 or 1...": "\u6B63\u5728\u4E89\u8BBA\u6570\u7EC4\u4E0B\u6807\u4ECE 0 \u8FD8\u662F\u4ECE 1...",
308428
+ "Thinking about refactoring...": "\u6B63\u5728\u601D\u8003\u8981\u4E0D\u8981\u91CD\u6784...",
308429
+ "Looking for a misplaced semicolon...": "\u6B63\u5728\u5BFB\u627E\u6D88\u5931\u7684\u5206\u53F7...",
308430
+ "Cleaning up stack overflow...": "\u6B63\u5728\u6E05\u7406\u5806\u6808\u6EA2\u51FA...",
308431
+ "Naming variables properly...": "\u6B63\u5728\u7ED9\u53D8\u91CF\u8D77\u4E2A\u597D\u540D\u5B57...",
308432
+ "Commenting code written 3 months ago...": "\u6B63\u5728\u6CE8\u91CA\u4E09\u4E2A\u6708\u524D\u5199\u7684\u4EE3\u7801...",
308433
+ "Praying for no bugs...": "\u6B63\u5728\u7948\u7977\u4E0D\u8981\u6709 bug...",
308434
+ "Trying to exit Vim...": "\u6B63\u5728\u5C1D\u8BD5\u9000\u51FA Vim...",
308435
+ "Searching for the correct USB orientation...": "\u6B63\u5728\u5BFB\u627E\u6B63\u786E\u7684 USB \u65B9\u5411...",
308436
+ "That's not a bug, it's an undocumented feature...": "\u8FD9\u4E0D\u662F bug\uFF0C\u662F\u672A\u8BB0\u5F55\u7684\u529F\u80FD...",
308442
308437
  "Polishing the algorithms...": "\u6B63\u5728\u6253\u78E8\u7B97\u6CD5...",
308443
- "Don't rush perfection (or my code)...": "\u4E0D\u8981\u6025\u4E8E\u8FFD\u6C42\u5B8C\u7F8E\uFF08\u6216\u6211\u7684\u4EE3\u7801\uFF09...",
308444
- "Brewing fresh bytes...": "\u6B63\u5728\u917F\u9020\u65B0\u9C9C\u5B57\u8282...",
308445
- "Counting electrons...": "\u6B63\u5728\u8BA1\u7B97\u7535\u5B50...",
308446
- "Engaging cognitive processors...": "\u6B63\u5728\u542F\u52A8\u8BA4\u77E5\u5904\u7406\u5668...",
308447
- "Checking for syntax errors in the universe...": "\u6B63\u5728\u68C0\u67E5\u5B87\u5B99\u4E2D\u7684\u8BED\u6CD5\u9519\u8BEF...",
308448
- "One moment, optimizing humor...": "\u7A0D\u7B49\u7247\u523B\uFF0C\u6B63\u5728\u4F18\u5316\u5E7D\u9ED8\u611F...",
308449
- "Shuffling punchlines...": "\u6B63\u5728\u6D17\u724C\u7B11\u70B9...",
308450
- "Untangling neural nets...": "\u6B63\u5728\u89E3\u5F00\u795E\u7ECF\u7F51\u7EDC...",
308451
308438
  "Compiling brilliance...": "\u6B63\u5728\u7F16\u8BD1\u667A\u6167...",
308452
- "Loading wit.exe...": "\u6B63\u5728\u52A0\u8F7D wit.exe...",
308453
- "Summoning the cloud of wisdom...": "\u6B63\u5728\u53EC\u5524\u667A\u6167\u4E91...",
308454
- "Preparing a witty response...": "\u6B63\u5728\u51C6\u5907\u673A\u667A\u7684\u56DE\u590D...",
308455
- "Just a sec, I'm debugging reality...": "\u7A0D\u7B49\u7247\u523B\uFF0C\u6211\u6B63\u5728\u8C03\u8BD5\u73B0\u5B9E...",
308456
- "Confuzzling the options...": "\u6B63\u5728\u6DF7\u6DC6\u9009\u9879...",
308457
- "Tuning the cosmic frequencies...": "\u6B63\u5728\u8C03\u8C10\u5B87\u5B99\u9891\u7387...",
308458
- "Crafting a response worthy of your patience...": "\u6B63\u5728\u5236\u4F5C\u503C\u5F97\u60A8\u8010\u5FC3\u7B49\u5F85\u7684\u56DE\u590D...",
308459
- "Compiling the 1s and 0s...": "\u6B63\u5728\u7F16\u8BD1 1 \u548C 0...",
308460
- "Resolving dependencies... and existential crises...": "\u6B63\u5728\u89E3\u51B3\u4F9D\u8D56\u5173\u7CFB...\u548C\u5B58\u5728\u4E3B\u4E49\u5371\u673A...",
308461
- "Defragmenting memories... both RAM and personal...": "\u6B63\u5728\u6574\u7406\u8BB0\u5FC6\u788E\u7247...\u5305\u62EC RAM \u548C\u4E2A\u4EBA\u8BB0\u5FC6...",
308462
- "Rebooting the humor module...": "\u6B63\u5728\u91CD\u542F\u5E7D\u9ED8\u6A21\u5757...",
308463
- "Caching the essentials (mostly cat memes)...": "\u6B63\u5728\u7F13\u5B58\u5FC5\u9700\u54C1\uFF08\u4E3B\u8981\u662F\u732B\u54AA\u8868\u60C5\u5305\uFF09...",
308464
- "Optimizing for ludicrous speed": "\u6B63\u5728\u4F18\u5316\u5230\u8352\u8C2C\u7684\u901F\u5EA6",
308465
- "Swapping bits... don't tell the bytes...": "\u6B63\u5728\u4EA4\u6362\u4F4D...\u4E0D\u8981\u544A\u8BC9\u5B57\u8282...",
308439
+ "Untangling neural nets...": "\u6B63\u5728\u89E3\u5F00\u795E\u7ECF\u7F51\u7EDC...",
308466
308440
  "Garbage collecting... be right back...": "\u6B63\u5728\u5783\u573E\u56DE\u6536...\u9A6C\u4E0A\u56DE\u6765...",
308467
- "Assembling the interwebs...": "\u6B63\u5728\u7EC4\u88C5\u4E92\u8054\u7F51...",
308441
+ "Resolving dependencies...": "\u6B63\u5728\u89E3\u51B3\u4F9D\u8D56\u5173\u7CFB...",
308468
308442
  "Converting coffee into code...": "\u6B63\u5728\u5C06\u5496\u5561\u8F6C\u6362\u4E3A\u4EE3\u7801...",
308469
- "Updating the syntax for reality...": "\u6B63\u5728\u66F4\u65B0\u73B0\u5B9E\u7684\u8BED\u6CD5...",
308470
- "Rewiring the synapses...": "\u6B63\u5728\u91CD\u65B0\u8FDE\u63A5\u7A81\u89E6...",
308471
- "Looking for a misplaced semicolon...": "\u6B63\u5728\u5BFB\u627E\u653E\u9519\u4F4D\u7F6E\u7684\u5206\u53F7...",
308472
- "Greasin' the cogs of the machine...": "\u6B63\u5728\u7ED9\u673A\u5668\u7684\u9F7F\u8F6E\u4E0A\u6CB9...",
308473
- "Pre-heating the servers...": "\u6B63\u5728\u9884\u70ED\u670D\u52A1\u5668...",
308474
- "Calibrating the flux capacitor...": "\u6B63\u5728\u6821\u51C6\u901A\u91CF\u7535\u5BB9\u5668...",
308475
- "Engaging the improbability drive...": "\u6B63\u5728\u542F\u52A8\u4E0D\u53EF\u80FD\u6027\u9A71\u52A8\u5668...",
308476
- "Channeling the Force...": "\u6B63\u5728\u5F15\u5BFC\u539F\u529B...",
308477
- "Aligning the stars for optimal response...": "\u6B63\u5728\u5BF9\u9F50\u661F\u661F\u4EE5\u83B7\u5F97\u6700\u4F73\u56DE\u590D...",
308478
- "So say we all...": "\u6211\u4EEC\u90FD\u8BF4...",
308479
- "Loading the next great idea...": "\u6B63\u5728\u52A0\u8F7D\u4E0B\u4E00\u4E2A\u4F1F\u5927\u7684\u60F3\u6CD5...",
308480
- "Just a moment, I'm in the zone...": "\u7A0D\u7B49\u7247\u523B\uFF0C\u6211\u6B63\u8FDB\u5165\u72B6\u6001...",
308481
- "Preparing to dazzle you with brilliance...": "\u6B63\u5728\u51C6\u5907\u7528\u667A\u6167\u8BA9\u60A8\u773C\u82B1\u7F2D\u4E71...",
308482
- "Just a tick, I'm polishing my wit...": "\u7A0D\u7B49\u7247\u523B\uFF0C\u6211\u6B63\u5728\u6253\u78E8\u6211\u7684\u667A\u6167...",
308483
- "Hold tight, I'm crafting a masterpiece...": "\u8BF7\u7A0D\u7B49\uFF0C\u6211\u6B63\u5728\u5236\u4F5C\u6770\u4F5C...",
308484
- "Just a jiffy, I'm debugging the universe...": "\u7A0D\u7B49\u7247\u523B\uFF0C\u6211\u6B63\u5728\u8C03\u8BD5\u5B87\u5B99...",
308485
- "Just a moment, I'm aligning the pixels...": "\u7A0D\u7B49\u7247\u523B\uFF0C\u6211\u6B63\u5728\u5BF9\u9F50\u50CF\u7D20...",
308486
- "Just a sec, I'm optimizing the humor...": "\u7A0D\u7B49\u7247\u523B\uFF0C\u6211\u6B63\u5728\u4F18\u5316\u5E7D\u9ED8\u611F...",
308487
- "Just a moment, I'm tuning the algorithms...": "\u7A0D\u7B49\u7247\u523B\uFF0C\u6211\u6B63\u5728\u8C03\u6574\u7B97\u6CD5...",
308488
- "Warp speed engaged...": "\u66F2\u901F\u5DF2\u542F\u52A8...",
308489
- "Mining for more Dilithium crystals...": "\u6B63\u5728\u6316\u6398\u66F4\u591A\u4E8C\u9502\u6676\u4F53...",
308490
- "Don't panic...": "\u4E0D\u8981\u60CA\u614C...",
308491
- "Following the white rabbit...": "\u6B63\u5728\u8DDF\u968F\u767D\u5154...",
308492
- "The truth is in here... somewhere...": "\u771F\u76F8\u5728\u8FD9\u91CC...\u67D0\u4E2A\u5730\u65B9...",
308493
- "Blowing on the cartridge...": "\u6B63\u5728\u5439\u5361\u5E26...",
308494
- "Loading... Do a barrel roll!": "\u6B63\u5728\u52A0\u8F7D...\u505A\u4E2A\u6876\u6EDA\uFF01",
308495
- "Waiting for the respawn...": "\u7B49\u5F85\u91CD\u751F...",
308496
- "Finishing the Kessel Run in less than 12 parsecs...": "\u6B63\u5728\u4EE5\u4E0D\u5230 12 \u79D2\u5DEE\u8DDD\u5B8C\u6210\u51EF\u585E\u5C14\u822A\u7EBF...",
308497
- "The cake is not a lie, it's just still loading...": "\u86CB\u7CD5\u4E0D\u662F\u8C0E\u8A00\uFF0C\u53EA\u662F\u8FD8\u5728\u52A0\u8F7D...",
308498
- "Fiddling with the character creation screen...": "\u6B63\u5728\u6446\u5F04\u89D2\u8272\u521B\u5EFA\u754C\u9762...",
308499
- "Just a moment, I'm finding the right meme...": "\u7A0D\u7B49\u7247\u523B\uFF0C\u6211\u6B63\u5728\u5BFB\u627E\u5408\u9002\u7684\u8868\u60C5\u5305...",
308500
- "Pressing 'A' to continue...": "\u6309 'A' \u7EE7\u7EED...",
308501
- "Herding digital cats...": "\u6B63\u5728\u653E\u7267\u6570\u5B57\u732B...",
308502
- "Polishing the pixels...": "\u6B63\u5728\u6253\u78E8\u50CF\u7D20...",
308503
- "Finding a suitable loading screen pun...": "\u6B63\u5728\u5BFB\u627E\u5408\u9002\u7684\u52A0\u8F7D\u5C4F\u5E55\u53CC\u5173\u8BED...",
308504
- "Distracting you with this witty phrase...": "\u6B63\u5728\u7528\u8FD9\u4E2A\u673A\u667A\u7684\u77ED\u8BED\u5206\u6563\u60A8\u7684\u6CE8\u610F\u529B...",
308505
- "Almost there... probably...": "\u5FEB\u5230\u4E86...\u53EF\u80FD...",
308506
- "Our hamsters are working as fast as they can...": "\u6211\u4EEC\u7684\u4ED3\u9F20\u6B63\u5728\u5C3D\u53EF\u80FD\u5FEB\u5730\u5DE5\u4F5C...",
308507
- "Giving Cloudy a pat on the head...": "\u6B63\u5728\u62CD\u62CD Cloudy \u7684\u5934...",
308508
- "Petting the cat...": "\u6B63\u5728\u629A\u6478\u732B\u54AA...",
308509
- "Rickrolling my boss...": "\u6B63\u5728 Rickroll \u6211\u7684\u8001\u677F...",
308510
- "Never gonna give you up, never gonna let you down...": "\u6C38\u8FDC\u4E0D\u4F1A\u653E\u5F03\u4F60\uFF0C\u6C38\u8FDC\u4E0D\u4F1A\u8BA9\u4F60\u5931\u671B...",
308511
- "Slapping the bass...": "\u6B63\u5728\u62CD\u6253\u4F4E\u97F3...",
308512
- "Tasting the snozberries...": "\u6B63\u5728\u54C1\u5C1D snozberries...",
308513
- "I'm going the distance, I'm going for speed...": "\u6211\u8981\u8D70\u5F97\u66F4\u8FDC\uFF0C\u6211\u8981\u8FFD\u6C42\u901F\u5EA6...",
308514
- "Is this the real life? Is this just fantasy?...": "\u8FD9\u662F\u771F\u5B9E\u7684\u751F\u6D3B\u5417\uFF1F\u8FD8\u662F\u53EA\u662F\u5E7B\u60F3\uFF1F...",
308515
- "I've got a good feeling about this...": "\u6211\u5BF9\u8FD9\u4E2A\u611F\u89C9\u5F88\u597D...",
308516
- "Poking the bear...": "\u6B63\u5728\u6233\u718A...",
308517
- "Doing research on the latest memes...": "\u6B63\u5728\u7814\u7A76\u6700\u65B0\u7684\u8868\u60C5\u5305...",
308518
- "Figuring out how to make this more witty...": "\u6B63\u5728\u60F3\u529E\u6CD5\u8BA9\u8FD9\u66F4\u6709\u8DA3...",
308443
+ // 工作/职场相关
308444
+ "Waiting for product manager to change requirements...": "\u6B63\u5728\u7B49\u5F85\u4EA7\u54C1\u7ECF\u7406\u6539\u9700\u6C42...",
308445
+ "Postponing project deadline...": "\u6B63\u5728\u5EF6\u671F\u9879\u76EE\u622A\u6B62\u65E5\u671F...",
308446
+ 'Preparing another "almost done"...': '\u6B63\u5728\u51C6\u5907\u53C8\u4E00\u6B21"\u5FEB\u597D\u4E86"...',
308447
+ "Taking a break...": "\u6B63\u5728\u6478\u9C7C...",
308448
+ "Making goji berry tea...": "\u6B63\u5728\u6CE1\u67B8\u675E...",
308449
+ "Ordering takeout...": "\u6B63\u5728\u70B9\u5916\u5356...",
308450
+ "Pretending to be busy...": "\u6B63\u5728\u5047\u88C5\u5F88\u5FD9...",
308451
+ // 互联网文化/梗
308452
+ "Recharging faith...": "\u6B63\u5728\u5145\u503C\u4FE1\u4EF0...",
308453
+ "Downloading more RAM...": "\u6B63\u5728\u4E0B\u8F7D\u66F4\u591A RAM...",
308454
+ "Feeding the server...": "\u6B63\u5728\u6295\u5582\u670D\u52A1\u5668...",
308455
+ "Waking up sleeping code...": "\u6B63\u5728\u5524\u9192\u6C89\u7761\u7684\u4EE3\u7801...",
308456
+ "Feeding data to AI...": "\u6B63\u5728\u7ED9 AI \u5582\u6570\u636E...",
308457
+ "Opening imagination...": "\u6B63\u5728\u6253\u5F00\u8111\u6D1E...",
308458
+ // 日常生活
308459
+ "Boiling water for tea...": "\u6B63\u5728\u70E7\u5F00\u6C34\u6CE1\u8336...",
308460
+ "Waiting for the elevator...": "\u6B63\u5728\u7B49\u7535\u68AF...",
308461
+ "Taking a number in queue...": "\u6B63\u5728\u6392\u961F\u53D6\u53F7...",
308462
+ "Waiting for traffic light...": "\u6B63\u5728\u7B49\u7EA2\u7EFF\u706F...",
308463
+ "Charging...": "\u6B63\u5728\u5145\u7535\u4E2D...",
308464
+ "Buffering life...": "\u6B63\u5728\u7F13\u51B2\u4EBA\u751F...",
308465
+ // 轻松幽默
308466
+ "Contemplating the meaning of life...": "\u6B63\u5728\u601D\u8003\u4EBA\u751F\u7684\u610F\u4E49...",
308467
+ "What to eat today? Thinking...": "\u4ECA\u5929\u5403\u4EC0\u4E48\uFF1F\u6B63\u5728\u601D\u8003\u4E2D...",
308468
+ "Pretending to work...": "\u6B63\u5728\u5047\u88C5\u5728\u5DE5\u4F5C...",
308469
+ "Let me think, just a moment...": "\u8BA9\u6211\u60F3\u60F3\uFF0C\u7A0D\u7B49\u4E00\u4E0B...",
308470
+ "Brewing inspiration...": "\u6B63\u5728\u915D\u917F\u7075\u611F...",
308471
+ "Take a deep breath, almost done...": "\u6DF1\u547C\u5438\uFF0C\u9A6C\u4E0A\u5C31\u597D...",
308472
+ "Don't worry, good things take time...": "\u4E0D\u8981\u7740\u6025\uFF0C\u597D\u996D\u4E0D\u6015\u665A...",
308473
+ "Stay calm, exciting things coming...": "\u7A0D\u5B89\u52FF\u8E81\uFF0C\u7CBE\u5F69\u5373\u5C06\u5448\u73B0...",
308519
308474
  "Hmmm... let me think...": "\u55EF...\u8BA9\u6211\u60F3\u60F3...",
308520
- "What do you call a fish with no eyes? A fsh...": "\u6CA1\u6709\u773C\u775B\u7684\u9C7C\u53EB\u4EC0\u4E48\uFF1F\u4E00\u6761\u9C7C...",
308521
- "Why did the computer go to therapy? It had too many bytes...": "\u4E3A\u4EC0\u4E48\u7535\u8111\u53BB\u770B\u5FC3\u7406\u533B\u751F\uFF1F\u56E0\u4E3A\u5B83\u6709\u592A\u591A\u5B57\u8282...",
308522
- "Why don't programmers like nature? It has too many bugs...": "\u4E3A\u4EC0\u4E48\u7A0B\u5E8F\u5458\u4E0D\u559C\u6B22\u5927\u81EA\u7136\uFF1F\u56E0\u4E3A\u866B\u5B50\u592A\u591A\u4E86...",
308523
- "Why do programmers prefer dark mode? Because light attracts bugs...": "\u4E3A\u4EC0\u4E48\u7A0B\u5E8F\u5458\u559C\u6B22\u6697\u8272\u6A21\u5F0F\uFF1F\u56E0\u4E3A\u5149\u4F1A\u5438\u5F15\u866B\u5B50...",
308524
- "Why did the developer go broke? Because they used up all their cache...": "\u4E3A\u4EC0\u4E48\u5F00\u53D1\u8005\u7834\u4EA7\u4E86\uFF1F\u56E0\u4E3A\u4ED6\u4EEC\u7528\u5B8C\u4E86\u6240\u6709\u7F13\u5B58...",
308525
- "What can you do with a broken pencil? Nothing, it's pointless...": "\u4F60\u80FD\u7528\u65AD\u4E86\u7684\u94C5\u7B14\u505A\u4EC0\u4E48\uFF1F\u4EC0\u4E48\u90FD\u4E0D\u80FD\uFF0C\u56E0\u4E3A\u5B83\u6CA1\u6709\u7B14\u5C16...",
308526
- "Applying percussive maintenance...": "\u6B63\u5728\u5E94\u7528\u6572\u51FB\u7EF4\u62A4...",
308527
- "Searching for the correct USB orientation...": "\u6B63\u5728\u5BFB\u627E\u6B63\u786E\u7684 USB \u65B9\u5411...",
308528
- "Ensuring the magic smoke stays inside the wires...": "\u786E\u4FDD\u9B54\u6CD5\u70DF\u96FE\u7559\u5728\u7535\u7EBF\u5185...",
308529
- "Rewriting in Rust for no particular reason...": "\u6B63\u5728\u7528 Rust \u91CD\u5199\uFF0C\u6CA1\u6709\u7279\u522B\u7684\u539F\u56E0...",
308530
- "Trying to exit Vim...": "\u6B63\u5728\u5C1D\u8BD5\u9000\u51FA Vim...",
308531
- "Spinning up the hamster wheel...": "\u6B63\u5728\u542F\u52A8\u4ED3\u9F20\u8F6E...",
308532
- "That's not a bug, it's an undocumented feature...": "\u8FD9\u4E0D\u662F\u4E00\u4E2A\u9519\u8BEF\uFF0C\u8FD9\u662F\u4E00\u4E2A\u672A\u8BB0\u5F55\u7684\u529F\u80FD...",
308533
- "Engage.": "\u542F\u52A8\u3002",
308534
- "I'll be back... with an answer.": "\u6211\u4F1A\u56DE\u6765\u7684...\u5E26\u7740\u7B54\u6848\u3002",
308535
- "My other process is a TARDIS...": "\u6211\u7684\u53E6\u4E00\u4E2A\u8FDB\u7A0B\u662F TARDIS...",
308536
- "Communing with the machine spirit...": "\u6B63\u5728\u4E0E\u673A\u5668\u7CBE\u795E\u4EA4\u6D41...",
308537
- "Letting the thoughts marinate...": "\u8BA9\u60F3\u6CD5\u6162\u6162\u915D\u917F...",
308538
- "Just remembered where I put my keys...": "\u521A\u521A\u60F3\u8D77\u6211\u628A\u94A5\u5319\u653E\u5728\u54EA\u91CC\u4E86...",
308539
- "Pondering the orb...": "\u6B63\u5728\u601D\u8003\u7403\u4F53...",
308540
- "I've seen things you people wouldn't believe... like a user who reads loading messages.": "\u6211\u89C1\u8FC7\u4F60\u4EEC\u4E0D\u4F1A\u76F8\u4FE1\u7684\u4E8B\u60C5...\u6BD4\u5982\u4E00\u4E2A\u9605\u8BFB\u52A0\u8F7D\u6D88\u606F\u7684\u7528\u6237\u3002",
308541
- "Initiating thoughtful gaze...": "\u6B63\u5728\u542F\u52A8\u6DF1\u601D\u51DD\u89C6...",
308542
- "What's a computer's favorite snack? Microchips.": "\u7535\u8111\u6700\u559C\u6B22\u7684\u96F6\u98DF\u662F\u4EC0\u4E48\uFF1F\u5FAE\u82AF\u7247\u3002",
308543
- "Why do Java developers wear glasses? Because they don't C#.": "\u4E3A\u4EC0\u4E48 Java \u5F00\u53D1\u8005\u6234\u773C\u955C\uFF1F\u56E0\u4E3A\u4ED6\u4EEC\u4E0D\u4F1A C#\u3002",
308544
- "Charging the laser... pew pew!": "\u6B63\u5728\u7ED9\u6FC0\u5149\u5145\u7535...\u7830\u7830\uFF01",
308545
- "Dividing by zero... just kidding!": "\u9664\u4EE5\u96F6...\u53EA\u662F\u5F00\u73A9\u7B11\uFF01",
308546
- "Looking for an adult superviso... I mean, processing.": "\u6B63\u5728\u5BFB\u627E\u6210\u4EBA\u76D1\u7763...\u6211\u662F\u8BF4\uFF0C\u5904\u7406\u4E2D\u3002",
308547
- "Making it go beep boop.": "\u8BA9\u5B83\u53D1\u51FA\u54D4\u54D4\u58F0\u3002",
308548
- "Buffering... because even AIs need a moment.": "\u6B63\u5728\u7F13\u51B2...\u56E0\u4E3A\u5373\u4F7F\u662F AI \u4E5F\u9700\u8981\u7247\u523B\u3002",
308549
- "Entangling quantum particles for a faster response...": "\u6B63\u5728\u7EA0\u7F20\u91CF\u5B50\u7C92\u5B50\u4EE5\u83B7\u5F97\u66F4\u5FEB\u7684\u56DE\u590D...",
308550
- "Polishing the chrome... on the algorithms.": "\u6B63\u5728\u6253\u78E8\u94EC...\u5728\u7B97\u6CD5\u4E0A\u3002",
308551
- "Are you not entertained? (Working on it!)": "\u4F60\u4E0D\u89C9\u5F97\u6709\u8DA3\u5417\uFF1F\uFF08\u6B63\u5728\u52AA\u529B\uFF01\uFF09",
308552
- "Summoning the code gremlins... to help, of course.": "\u6B63\u5728\u53EC\u5524\u4EE3\u7801\u5C0F\u7CBE\u7075...\u5F53\u7136\u662F\u6765\u5E2E\u5FD9\u7684\u3002",
308553
- "Just waiting for the dial-up tone to finish...": "\u53EA\u662F\u7B49\u5F85\u62E8\u53F7\u97F3\u7ED3\u675F...",
308554
- "Recalibrating the humor-o-meter.": "\u6B63\u5728\u91CD\u65B0\u6821\u51C6\u5E7D\u9ED8\u8BA1\u3002",
308555
- "My other loading screen is even funnier.": "\u6211\u7684\u53E6\u4E00\u4E2A\u52A0\u8F7D\u5C4F\u5E55\u66F4\u6709\u8DA3\u3002",
308556
- "Pretty sure there's a cat walking on the keyboard somewhere...": "\u5F88\u786E\u5B9A\u6709\u53EA\u732B\u5728\u67D0\u4E2A\u5730\u65B9\u952E\u76D8\u4E0A\u8D70...",
308557
- "Enhancing... Enhancing... Still loading.": "\u6B63\u5728\u589E\u5F3A...\u6B63\u5728\u589E\u5F3A...\u4ECD\u5728\u52A0\u8F7D\u3002",
308558
- "It's not a bug, it's a feature... of this loading screen.": "\u8FD9\u4E0D\u662F\u4E00\u4E2A\u9519\u8BEF\uFF0C\u8FD9\u662F\u4E00\u4E2A\u529F\u80FD...\u8FD9\u4E2A\u52A0\u8F7D\u5C4F\u5E55\u7684\u529F\u80FD\u3002",
308559
- "Have you tried turning it off and on again? (The loading screen, not me.)": "\u4F60\u8BD5\u8FC7\u628A\u5B83\u5173\u6389\u518D\u6253\u5F00\u5417\uFF1F\uFF08\u52A0\u8F7D\u5C4F\u5E55\uFF0C\u4E0D\u662F\u6211\u3002\uFF09",
308560
- "Constructing additional pylons...": "\u6B63\u5728\u5EFA\u9020\u989D\u5916\u7684\u80FD\u91CF\u5854...",
308475
+ // 技术向但接地气
308476
+ "Greeting the server...": "\u6B63\u5728\u5411\u670D\u52A1\u5668\u95EE\u597D...",
308477
+ "Organizing thoughts...": "\u6B63\u5728\u6574\u7406\u601D\u7EEA...",
308478
+ "Preparing my words...": "\u6B63\u5728\u7EC4\u7EC7\u8BED\u8A00...",
308479
+ "Looking up information...": "\u6B63\u5728\u67E5\u9605\u8D44\u6599...",
308480
+ "Sorting out my thoughts...": "\u8BA9\u6211\u7406\u4E00\u7406\u601D\u8DEF...",
308481
+ "Analyzing the problem...": "\u6B63\u5728\u5206\u6790\u95EE\u9898...",
308482
+ "Looking for the best solution...": "\u6B63\u5728\u5BFB\u627E\u6700\u4F73\u65B9\u6848...",
308483
+ "Engaging cognitive processors...": "\u6B63\u5728\u542F\u52A8\u8BA4\u77E5\u5904\u7406\u5668...",
308484
+ "Crafting a response worthy of your patience...": "\u6B63\u5728\u5236\u4F5C\u503C\u5F97\u60A8\u8010\u5FC3\u7B49\u5F85\u7684\u56DE\u590D...",
308485
+ // 保持通用性
308486
+ "Loading...": "\u6B63\u5728\u52A0\u8F7D...",
308487
+ "Processing, please wait...": "\u5904\u7406\u4E2D\uFF0C\u8BF7\u7A0D\u5019...",
308488
+ "Almost there...": "\u9A6C\u4E0A\u5C31\u597D...",
308489
+ "Working hard...": "\u6B63\u5728\u52AA\u529B\u5DE5\u4F5C\u4E2D...",
308490
+ "Almost... almost...": "\u5FEB\u4E86\uFF0C\u5FEB\u4E86...",
308491
+ "Almost there... probably...": "\u5FEB\u5230\u4E86...\u53EF\u80FD...",
308561
308492
  "Initialize OpenSpec in a project with RDMind integration": "\u5728\u9879\u76EE\u4E2D\u521D\u59CB\u5316 OpenSpec\uFF08\u96C6\u6210 RDMind\uFF09",
308562
308493
  "Initialize OpenSpec in the current directory": "\u5728\u5F53\u524D\u76EE\u5F55\u521D\u59CB\u5316 OpenSpec",
308563
308494
  "Scaffold a new OpenSpec change and validate strictly.": "\u642D\u5EFA\u65B0\u7684 OpenSpec \u53D8\u66F4\u5E76\u4E25\u683C\u9A8C\u8BC1\u3002",
@@ -334141,7 +334072,7 @@ var patchConsole = /* @__PURE__ */ __name((callback) => {
334141
334072
  var dist_default2 = patchConsole;
334142
334073
 
334143
334074
  // node_modules/ink/build/ink.js
334144
- var import_constants20 = __toESM(require_constants11(), 1);
334075
+ var import_constants21 = __toESM(require_constants11(), 1);
334145
334076
 
334146
334077
  // node_modules/yoga-layout/dist/src/index.js
334147
334078
  init_esbuild_shims();
@@ -336204,7 +336135,7 @@ __name(wrapAnsi, "wrapAnsi");
336204
336135
  // node_modules/ink/build/reconciler.js
336205
336136
  init_esbuild_shims();
336206
336137
  var import_react_reconciler = __toESM(require_react_reconciler(), 1);
336207
- var import_constants19 = __toESM(require_constants11(), 1);
336138
+ var import_constants20 = __toESM(require_constants11(), 1);
336208
336139
  import process15 from "node:process";
336209
336140
  var import_react = __toESM(require_react(), 1);
336210
336141
 
@@ -337175,7 +337106,7 @@ var cleanupYogaNode = /* @__PURE__ */ __name((node) => {
337175
337106
  node?.unsetMeasureFunc();
337176
337107
  node?.freeRecursive();
337177
337108
  }, "cleanupYogaNode");
337178
- var currentUpdatePriority = import_constants19.NoEventPriority;
337109
+ var currentUpdatePriority = import_constants20.NoEventPriority;
337179
337110
  var currentRootNode;
337180
337111
  var reconciler_default = (0, import_react_reconciler.default)({
337181
337112
  getRootHostContext: /* @__PURE__ */ __name(() => ({
@@ -337332,10 +337263,10 @@ var reconciler_default = (0, import_react_reconciler.default)({
337332
337263
  },
337333
337264
  getCurrentUpdatePriority: /* @__PURE__ */ __name(() => currentUpdatePriority, "getCurrentUpdatePriority"),
337334
337265
  resolveUpdatePriority() {
337335
- if (currentUpdatePriority !== import_constants19.NoEventPriority) {
337266
+ if (currentUpdatePriority !== import_constants20.NoEventPriority) {
337336
337267
  return currentUpdatePriority;
337337
337268
  }
337338
- return import_constants19.DefaultEventPriority;
337269
+ return import_constants20.DefaultEventPriority;
337339
337270
  },
337340
337271
  maySuspendCommit() {
337341
337272
  return false;
@@ -339853,7 +339784,7 @@ var Ink = class {
339853
339784
  this.fullStaticOutput = "";
339854
339785
  this.container = reconciler_default.createContainer(
339855
339786
  this.rootNode,
339856
- import_constants20.LegacyRoot,
339787
+ import_constants21.LegacyRoot,
339857
339788
  null,
339858
339789
  false,
339859
339790
  null,
@@ -346420,7 +346351,7 @@ __name(getPackageJson, "getPackageJson");
346420
346351
  // packages/cli/src/utils/version.ts
346421
346352
  async function getCliVersion() {
346422
346353
  const pkgJson = await getPackageJson();
346423
- return "0.1.4-alpha.0";
346354
+ return "0.1.4-alpha.10";
346424
346355
  }
346425
346356
  __name(getCliVersion, "getCliVersion");
346426
346357
 
@@ -350816,6 +350747,168 @@ var GoogleCode = new Theme(
350816
350747
  googleCodeColors
350817
350748
  );
350818
350749
 
350750
+ // packages/cli/src/ui/themes/holiday.ts
350751
+ init_esbuild_shims();
350752
+ init_theme();
350753
+ var holidayColors = {
350754
+ type: "dark",
350755
+ Background: "#00210e",
350756
+ Foreground: "#F0F8FF",
350757
+ LightBlue: "#B0E0E6",
350758
+ AccentBlue: "#3CB371",
350759
+ AccentPurple: "#FF9999",
350760
+ AccentCyan: "#33F9FF",
350761
+ AccentGreen: "#3CB371",
350762
+ AccentYellow: "#FFEE8C",
350763
+ AccentRed: "#FF6347",
350764
+ DiffAdded: "#2E8B57",
350765
+ DiffRemoved: "#CD5C5C",
350766
+ Comment: "#8FBC8F",
350767
+ Gray: "#D7F5D3",
350768
+ GradientColors: ["#FF0000", "#FFFFFF", "#008000"]
350769
+ };
350770
+ var Holiday = new Theme(
350771
+ "Holiday",
350772
+ "dark",
350773
+ {
350774
+ hljs: {
350775
+ display: "block",
350776
+ overflowX: "auto",
350777
+ padding: "0.5em",
350778
+ background: holidayColors.Background,
350779
+ color: holidayColors.Foreground
350780
+ },
350781
+ "hljs-keyword": {
350782
+ color: holidayColors.AccentBlue
350783
+ },
350784
+ "hljs-literal": {
350785
+ color: holidayColors.AccentBlue
350786
+ },
350787
+ "hljs-symbol": {
350788
+ color: holidayColors.AccentBlue
350789
+ },
350790
+ "hljs-name": {
350791
+ color: holidayColors.AccentBlue
350792
+ },
350793
+ "hljs-link": {
350794
+ color: holidayColors.AccentBlue,
350795
+ textDecoration: "underline"
350796
+ },
350797
+ "hljs-built_in": {
350798
+ color: holidayColors.AccentCyan
350799
+ },
350800
+ "hljs-type": {
350801
+ color: holidayColors.AccentCyan
350802
+ },
350803
+ "hljs-number": {
350804
+ color: holidayColors.AccentGreen
350805
+ },
350806
+ "hljs-class": {
350807
+ color: holidayColors.AccentGreen
350808
+ },
350809
+ "hljs-string": {
350810
+ color: holidayColors.AccentYellow
350811
+ },
350812
+ "hljs-meta-string": {
350813
+ color: holidayColors.AccentYellow
350814
+ },
350815
+ "hljs-regexp": {
350816
+ color: holidayColors.AccentRed
350817
+ },
350818
+ "hljs-template-tag": {
350819
+ color: holidayColors.AccentRed
350820
+ },
350821
+ "hljs-subst": {
350822
+ color: holidayColors.Foreground
350823
+ },
350824
+ "hljs-function": {
350825
+ color: holidayColors.Foreground
350826
+ },
350827
+ "hljs-title": {
350828
+ color: holidayColors.Foreground
350829
+ },
350830
+ "hljs-params": {
350831
+ color: holidayColors.Foreground
350832
+ },
350833
+ "hljs-formula": {
350834
+ color: holidayColors.Foreground
350835
+ },
350836
+ "hljs-comment": {
350837
+ color: holidayColors.Comment,
350838
+ fontStyle: "italic"
350839
+ },
350840
+ "hljs-quote": {
350841
+ color: holidayColors.Comment,
350842
+ fontStyle: "italic"
350843
+ },
350844
+ "hljs-doctag": {
350845
+ color: holidayColors.Comment
350846
+ },
350847
+ "hljs-meta": {
350848
+ color: holidayColors.Gray
350849
+ },
350850
+ "hljs-meta-keyword": {
350851
+ color: holidayColors.Gray
350852
+ },
350853
+ "hljs-tag": {
350854
+ color: holidayColors.Gray
350855
+ },
350856
+ "hljs-variable": {
350857
+ color: holidayColors.AccentPurple
350858
+ },
350859
+ "hljs-template-variable": {
350860
+ color: holidayColors.AccentPurple
350861
+ },
350862
+ "hljs-attr": {
350863
+ color: holidayColors.LightBlue
350864
+ },
350865
+ "hljs-attribute": {
350866
+ color: holidayColors.LightBlue
350867
+ },
350868
+ "hljs-builtin-name": {
350869
+ color: holidayColors.LightBlue
350870
+ },
350871
+ "hljs-section": {
350872
+ color: holidayColors.AccentYellow
350873
+ },
350874
+ "hljs-emphasis": {
350875
+ fontStyle: "italic"
350876
+ },
350877
+ "hljs-strong": {
350878
+ fontWeight: "bold"
350879
+ },
350880
+ "hljs-bullet": {
350881
+ color: holidayColors.AccentYellow
350882
+ },
350883
+ "hljs-selector-tag": {
350884
+ color: holidayColors.AccentYellow
350885
+ },
350886
+ "hljs-selector-id": {
350887
+ color: holidayColors.AccentYellow
350888
+ },
350889
+ "hljs-selector-class": {
350890
+ color: holidayColors.AccentYellow
350891
+ },
350892
+ "hljs-selector-attr": {
350893
+ color: holidayColors.AccentYellow
350894
+ },
350895
+ "hljs-selector-pseudo": {
350896
+ color: holidayColors.AccentYellow
350897
+ },
350898
+ "hljs-addition": {
350899
+ backgroundColor: holidayColors.DiffAdded,
350900
+ display: "inline-block",
350901
+ width: "100%"
350902
+ },
350903
+ "hljs-deletion": {
350904
+ backgroundColor: holidayColors.DiffRemoved,
350905
+ display: "inline-block",
350906
+ width: "100%"
350907
+ }
350908
+ },
350909
+ holidayColors
350910
+ );
350911
+
350819
350912
  // packages/cli/src/ui/themes/theme-manager.ts
350820
350913
  init_default_light();
350821
350914
  init_default3();
@@ -352101,6 +352194,7 @@ var ThemeManager = class {
352101
352194
  GitHubDark,
352102
352195
  GitHubLight,
352103
352196
  GoogleCode,
352197
+ Holiday,
352104
352198
  QwenLight,
352105
352199
  QwenDark,
352106
352200
  ShadesOfPurple,
@@ -352787,7 +352881,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
352787
352881
 
352788
352882
  // packages/cli/src/generated/git-commit.ts
352789
352883
  init_esbuild_shims();
352790
- var GIT_COMMIT_INFO2 = "4f0a7859";
352884
+ var GIT_COMMIT_INFO2 = "a5a74672";
352791
352885
 
352792
352886
  // packages/cli/src/utils/systemInfo.ts
352793
352887
  async function getNpmVersion() {
@@ -388371,7 +388465,7 @@ function IdeIntegrationNudge({
388371
388465
  { isActive: true }
388372
388466
  );
388373
388467
  const { displayName: ideName } = ide;
388374
- const isExtensionPreInstalled = !!process.env["QWEN_CODE_IDE_SERVER_PORT"] && !!process.env["QWEN_CODE_IDE_WORKSPACE_PATH"];
388468
+ const isExtensionPreInstalled = !!process.env["RDMIND_CODE_IDE_SERVER_PORT"] && !!process.env["RDMIND_CODE_IDE_WORKSPACE_PATH"];
388375
388469
  const OPTIONS = [
388376
388470
  {
388377
388471
  label: "Yes",
@@ -394027,12 +394121,17 @@ var InputPrompt = /* @__PURE__ */ __name(({
394027
394121
  statusColor = theme.status.warning;
394028
394122
  statusText = t3("Accepting edits");
394029
394123
  }
394124
+ const borderColor = isShellFocused && !isEmbeddedShellFocused ? statusColor ?? theme.border.focused : theme.border.default;
394030
394125
  return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_jsx_runtime95.Fragment, { children: [
394031
394126
  /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
394032
394127
  Box_default,
394033
394128
  {
394034
- borderStyle: "round",
394035
- borderColor: isShellFocused && !isEmbeddedShellFocused ? statusColor ?? theme.border.focused : theme.border.default,
394129
+ borderStyle: "single",
394130
+ borderTop: true,
394131
+ borderBottom: true,
394132
+ borderLeft: false,
394133
+ borderRight: false,
394134
+ borderColor,
394036
394135
  paddingX: 1,
394037
394136
  children: [
394038
394137
  /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
@@ -394111,7 +394210,7 @@ var InputPrompt = /* @__PURE__ */ __name(({
394111
394210
  });
394112
394211
  if (isOnCursorLine && cursorVisualColAbsolute === cpLen(lineText)) {
394113
394212
  renderedLine.push(
394114
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: showCursor ? import_chalk7.default.inverse(" ") : " " }, `cursor-end-${cursorVisualColAbsolute}`)
394213
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: showCursor ? import_chalk7.default.inverse(" ") + "\u200B" : " \u200B" }, `cursor-end-${cursorVisualColAbsolute}`)
394115
394214
  );
394116
394215
  }
394117
394216
  return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Box_default, { height: 1, children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: renderedLine }) }, `line-${visualIdxInRenderedSet}`);
@@ -395246,9 +395345,12 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config2, addItem) => {
395246
395345
  addItem(
395247
395346
  {
395248
395347
  type: "info" /* INFO */,
395249
- text: t3("Authenticated successfully with {{authType}} credentials.", {
395250
- authType
395251
- })
395348
+ text: t3(
395349
+ "Authenticated successfully with {{authType}} credentials.",
395350
+ {
395351
+ authType
395352
+ }
395353
+ )
395252
395354
  },
395253
395355
  Date.now()
395254
395356
  );
@@ -395285,9 +395387,12 @@ var useAuthCommand = /* @__PURE__ */ __name((settings, config2, addItem) => {
395285
395387
  addItem(
395286
395388
  {
395287
395389
  type: "info" /* INFO */,
395288
- text: t3("Authenticated successfully with {{authType}} credentials.", {
395289
- authType
395290
- })
395390
+ text: t3(
395391
+ "Authenticated successfully with {{authType}} credentials.",
395392
+ {
395393
+ authType
395394
+ }
395395
+ )
395291
395396
  },
395292
395397
  Date.now()
395293
395398
  );
@@ -399282,135 +399387,75 @@ var useTimer = /* @__PURE__ */ __name((isActive, resetKey) => {
399282
399387
  init_esbuild_shims();
399283
399388
  var import_react119 = __toESM(require_react(), 1);
399284
399389
  var WITTY_LOADING_PHRASES = [
399285
- "I'm Feeling Lucky",
399286
- "Shipping awesomeness... ",
399287
- "Painting the serifs back on...",
399288
- "Navigating the slime mold...",
399289
- "Consulting the digital spirits...",
399290
- "Reticulating splines...",
399291
- "Warming up the AI hamsters...",
399292
- "Asking the magic conch shell...",
399293
- "Generating witty retort...",
399390
+ // 编程/技术相关
399391
+ "Summoning the soul of programmers...",
399392
+ "Fixing that bug that's not a bug, it's a feature...",
399393
+ "Removing pinyin comments from code...",
399394
+ "Debating whether array index starts from 0 or 1...",
399395
+ "Thinking about refactoring...",
399396
+ "Looking for a misplaced semicolon...",
399397
+ "Cleaning up stack overflow...",
399398
+ "Naming variables properly...",
399399
+ "Commenting code written 3 months ago...",
399400
+ "Praying for no bugs...",
399401
+ "Trying to exit Vim...",
399402
+ "Searching for the correct USB orientation...",
399403
+ "That's not a bug, it's an undocumented feature...",
399294
399404
  "Polishing the algorithms...",
399295
- "Don't rush perfection (or my code)...",
399296
- "Brewing fresh bytes...",
399297
- "Counting electrons...",
399298
- "Engaging cognitive processors...",
399299
- "Checking for syntax errors in the universe...",
399300
- "One moment, optimizing humor...",
399301
- "Shuffling punchlines...",
399302
- "Untangling neural nets...",
399303
399405
  "Compiling brilliance...",
399304
- "Loading wit.exe...",
399305
- "Summoning the cloud of wisdom...",
399306
- "Preparing a witty response...",
399307
- "Just a sec, I'm debugging reality...",
399308
- "Confuzzling the options...",
399309
- "Tuning the cosmic frequencies...",
399310
- "Crafting a response worthy of your patience...",
399311
- "Compiling the 1s and 0s...",
399312
- "Resolving dependencies... and existential crises...",
399313
- "Defragmenting memories... both RAM and personal...",
399314
- "Rebooting the humor module...",
399315
- "Caching the essentials (mostly cat memes)...",
399316
- "Optimizing for ludicrous speed",
399317
- "Swapping bits... don't tell the bytes...",
399406
+ "Untangling neural nets...",
399318
399407
  "Garbage collecting... be right back...",
399319
- "Assembling the interwebs...",
399408
+ "Resolving dependencies...",
399320
399409
  "Converting coffee into code...",
399321
- "Updating the syntax for reality...",
399322
- "Rewiring the synapses...",
399323
- "Looking for a misplaced semicolon...",
399324
- "Greasin' the cogs of the machine...",
399325
- "Pre-heating the servers...",
399326
- "Calibrating the flux capacitor...",
399327
- "Engaging the improbability drive...",
399328
- "Channeling the Force...",
399329
- "Aligning the stars for optimal response...",
399330
- "So say we all...",
399331
- "Loading the next great idea...",
399332
- "Just a moment, I'm in the zone...",
399333
- "Preparing to dazzle you with brilliance...",
399334
- "Just a tick, I'm polishing my wit...",
399335
- "Hold tight, I'm crafting a masterpiece...",
399336
- "Just a jiffy, I'm debugging the universe...",
399337
- "Just a moment, I'm aligning the pixels...",
399338
- "Just a sec, I'm optimizing the humor...",
399339
- "Just a moment, I'm tuning the algorithms...",
399340
- "Warp speed engaged...",
399341
- "Mining for more Dilithium crystals...",
399342
- "Don't panic...",
399343
- "Following the white rabbit...",
399344
- "The truth is in here... somewhere...",
399345
- "Blowing on the cartridge...",
399346
- "Loading... Do a barrel roll!",
399347
- "Waiting for the respawn...",
399348
- "Finishing the Kessel Run in less than 12 parsecs...",
399349
- "The cake is not a lie, it's just still loading...",
399350
- "Fiddling with the character creation screen...",
399351
- "Just a moment, I'm finding the right meme...",
399352
- "Pressing 'A' to continue...",
399353
- "Herding digital cats...",
399354
- "Polishing the pixels...",
399355
- "Finding a suitable loading screen pun...",
399356
- "Distracting you with this witty phrase...",
399357
- "Almost there... probably...",
399358
- "Our hamsters are working as fast as they can...",
399359
- "Giving Cloudy a pat on the head...",
399360
- "Petting the cat...",
399361
- "Rickrolling my boss...",
399362
- "Never gonna give you up, never gonna let you down...",
399363
- "Slapping the bass...",
399364
- "Tasting the snozberries...",
399365
- "I'm going the distance, I'm going for speed...",
399366
- "Is this the real life? Is this just fantasy?...",
399367
- "I've got a good feeling about this...",
399368
- "Poking the bear...",
399369
- "Doing research on the latest memes...",
399370
- "Figuring out how to make this more witty...",
399410
+ // 工作/职场相关
399411
+ "Waiting for product manager to change requirements...",
399412
+ "Postponing project deadline...",
399413
+ 'Preparing another "almost done"...',
399414
+ "Taking a break...",
399415
+ "Making goji berry tea...",
399416
+ "Ordering takeout...",
399417
+ "Pretending to be busy...",
399418
+ // 互联网文化/梗
399419
+ "Recharging faith...",
399420
+ "Downloading more RAM...",
399421
+ "Feeding the server...",
399422
+ "Waking up sleeping code...",
399423
+ "Feeding data to AI...",
399424
+ "Opening imagination...",
399425
+ // 日常生活
399426
+ "Boiling water for tea...",
399427
+ "Waiting for the elevator...",
399428
+ "Taking a number in queue...",
399429
+ "Waiting for traffic light...",
399430
+ "Charging...",
399431
+ "Buffering life...",
399432
+ // 轻松幽默
399433
+ "Contemplating the meaning of life...",
399434
+ "What to eat today? Thinking...",
399435
+ "Pretending to work...",
399436
+ "Let me think, just a moment...",
399437
+ "Brewing inspiration...",
399438
+ "Take a deep breath, almost done...",
399439
+ "Don't worry, good things take time...",
399440
+ "Stay calm, exciting things coming...",
399371
399441
  "Hmmm... let me think...",
399372
- "What do you call a fish with no eyes? A fsh...",
399373
- "Why did the computer go to therapy? It had too many bytes...",
399374
- "Why don't programmers like nature? It has too many bugs...",
399375
- "Why do programmers prefer dark mode? Because light attracts bugs...",
399376
- "Why did the developer go broke? Because they used up all their cache...",
399377
- "What can you do with a broken pencil? Nothing, it's pointless...",
399378
- "Applying percussive maintenance...",
399379
- "Searching for the correct USB orientation...",
399380
- "Ensuring the magic smoke stays inside the wires...",
399381
- "Rewriting in Rust for no particular reason...",
399382
- "Trying to exit Vim...",
399383
- "Spinning up the hamster wheel...",
399384
- "That's not a bug, it's an undocumented feature...",
399385
- "Engage.",
399386
- "I'll be back... with an answer.",
399387
- "My other process is a TARDIS...",
399388
- "Communing with the machine spirit...",
399389
- "Letting the thoughts marinate...",
399390
- "Just remembered where I put my keys...",
399391
- "Pondering the orb...",
399392
- "I've seen things you people wouldn't believe... like a user who reads loading messages.",
399393
- "Initiating thoughtful gaze...",
399394
- "What's a computer's favorite snack? Microchips.",
399395
- "Why do Java developers wear glasses? Because they don't C#.",
399396
- "Charging the laser... pew pew!",
399397
- "Dividing by zero... just kidding!",
399398
- "Looking for an adult superviso... I mean, processing.",
399399
- "Making it go beep boop.",
399400
- "Buffering... because even AIs need a moment.",
399401
- "Entangling quantum particles for a faster response...",
399402
- "Polishing the chrome... on the algorithms.",
399403
- "Are you not entertained? (Working on it!)",
399404
- "Summoning the code gremlins... to help, of course.",
399405
- "Just waiting for the dial-up tone to finish...",
399406
- "Recalibrating the humor-o-meter.",
399407
- "My other loading screen is even funnier.",
399408
- "Pretty sure there's a cat walking on the keyboard somewhere...",
399409
- "Enhancing... Enhancing... Still loading.",
399410
- "It's not a bug, it's a feature... of this loading screen.",
399411
- "Have you tried turning it off and on again? (The loading screen, not me.)",
399412
- "Constructing additional pylons...",
399413
- "New line? That\u2019s Ctrl+J."
399442
+ // 技术向但接地气
399443
+ "Greeting the server...",
399444
+ "Organizing thoughts...",
399445
+ "Preparing my words...",
399446
+ "Looking up information...",
399447
+ "Sorting out my thoughts...",
399448
+ "Analyzing the problem...",
399449
+ "Looking for the best solution...",
399450
+ "Engaging cognitive processors...",
399451
+ "Crafting a response worthy of your patience...",
399452
+ // 保持通用性
399453
+ "Loading...",
399454
+ "Processing, please wait...",
399455
+ "Almost there...",
399456
+ "Working hard...",
399457
+ "Almost... almost...",
399458
+ "Almost there... probably..."
399414
399459
  ];
399415
399460
  var PHRASE_CHANGE_INTERVAL_MS = 15e3;
399416
399461
  var usePhraseCycler = /* @__PURE__ */ __name((isActive, isWaiting, customPhrases) => {
@@ -405706,8 +405751,8 @@ async function start_sandbox(config2, nodeArgs = [], cliConfig, cliArgs = []) {
405706
405751
  args.push("--env", `COLORTERM=${process.env["COLORTERM"]}`);
405707
405752
  }
405708
405753
  for (const envVar of [
405709
- "QWEN_CODE_IDE_SERVER_PORT",
405710
- "QWEN_CODE_IDE_WORKSPACE_PATH",
405754
+ "RDMIND_CODE_IDE_SERVER_PORT",
405755
+ "RDMIND_CODE_IDE_WORKSPACE_PATH",
405711
405756
  "TERM_PROGRAM"
405712
405757
  ]) {
405713
405758
  if (process.env[envVar]) {
@@ -406591,6 +406636,17 @@ var annotationsSchema = external_exports.object({
406591
406636
  lastModified: external_exports.string().optional().nullable(),
406592
406637
  priority: external_exports.number().optional().nullable()
406593
406638
  });
406639
+ var usageSchema = external_exports.object({
406640
+ promptTokens: external_exports.number().optional().nullable(),
406641
+ completionTokens: external_exports.number().optional().nullable(),
406642
+ thoughtsTokens: external_exports.number().optional().nullable(),
406643
+ totalTokens: external_exports.number().optional().nullable(),
406644
+ cachedTokens: external_exports.number().optional().nullable()
406645
+ });
406646
+ var sessionUpdateMetaSchema = external_exports.object({
406647
+ usage: usageSchema.optional().nullable(),
406648
+ durationMs: external_exports.number().optional().nullable()
406649
+ });
406594
406650
  var requestPermissionResponseSchema = external_exports.object({
406595
406651
  outcome: requestPermissionOutcomeSchema
406596
406652
  });
@@ -406746,11 +406802,13 @@ var sessionUpdateSchema = external_exports.union([
406746
406802
  }),
406747
406803
  external_exports.object({
406748
406804
  content: contentBlockSchema,
406749
- sessionUpdate: external_exports.literal("agent_message_chunk")
406805
+ sessionUpdate: external_exports.literal("agent_message_chunk"),
406806
+ _meta: sessionUpdateMetaSchema.optional().nullable()
406750
406807
  }),
406751
406808
  external_exports.object({
406752
406809
  content: contentBlockSchema,
406753
- sessionUpdate: external_exports.literal("agent_thought_chunk")
406810
+ sessionUpdate: external_exports.literal("agent_thought_chunk"),
406811
+ _meta: sessionUpdateMetaSchema.optional().nullable()
406754
406812
  }),
406755
406813
  external_exports.object({
406756
406814
  content: external_exports.array(toolCallContentSchema).optional(),
@@ -407080,6 +407138,15 @@ var AcpFileSystemService = class {
407080
407138
  line: null,
407081
407139
  limit: null
407082
407140
  });
407141
+ if (response.content.startsWith("ERROR: ENOENT:")) {
407142
+ const match2 = /^ERROR:\s*ENOENT:\s*(?<path>.*)$/i.exec(response.content);
407143
+ const err = new Error(response.content);
407144
+ err.code = "ENOENT";
407145
+ err.errno = -2;
407146
+ const rawPath = match2?.groups?.["path"]?.trim();
407147
+ err["path"] = rawPath ? rawPath.replace(/^['"]|['"]$/g, "") || filePath : filePath;
407148
+ throw err;
407149
+ }
407083
407150
  return response.content;
407084
407151
  }
407085
407152
  async writeTextFile(filePath, content) {
@@ -407161,6 +407228,15 @@ var MessageEmitter = class extends BaseEmitter {
407161
407228
  content: { type: "text", text }
407162
407229
  });
407163
407230
  }
407231
+ /**
407232
+ * Emits an agent thought chunk.
407233
+ */
407234
+ async emitAgentThought(text) {
407235
+ await this.sendUpdate({
407236
+ sessionUpdate: "agent_thought_chunk",
407237
+ content: { type: "text", text }
407238
+ });
407239
+ }
407164
407240
  /**
407165
407241
  * Emits an agent message chunk.
407166
407242
  */
@@ -407171,12 +407247,21 @@ var MessageEmitter = class extends BaseEmitter {
407171
407247
  });
407172
407248
  }
407173
407249
  /**
407174
- * Emits an agent thought chunk.
407250
+ * Emits usage metadata.
407175
407251
  */
407176
- async emitAgentThought(text) {
407252
+ async emitUsageMetadata(usageMetadata, text = "", durationMs) {
407253
+ const usage2 = {
407254
+ promptTokens: usageMetadata.promptTokenCount,
407255
+ completionTokens: usageMetadata.candidatesTokenCount,
407256
+ thoughtsTokens: usageMetadata.thoughtsTokenCount,
407257
+ totalTokens: usageMetadata.totalTokenCount,
407258
+ cachedTokens: usageMetadata.cachedContentTokenCount
407259
+ };
407260
+ const meta = typeof durationMs === "number" ? { usage: usage2, durationMs } : { usage: usage2 };
407177
407261
  await this.sendUpdate({
407178
- sessionUpdate: "agent_thought_chunk",
407179
- content: { type: "text", text }
407262
+ sessionUpdate: "agent_message_chunk",
407263
+ content: { type: "text", text },
407264
+ _meta: meta
407180
407265
  });
407181
407266
  }
407182
407267
  /**
@@ -407293,7 +407378,7 @@ var ToolCallEmitter = class extends BaseEmitter {
407293
407378
  await this.sendUpdate({
407294
407379
  sessionUpdate: "tool_call",
407295
407380
  toolCallId: params.callId,
407296
- status: "in_progress",
407381
+ status: params.status || "pending",
407297
407382
  title,
407298
407383
  content: [],
407299
407384
  locations,
@@ -407460,7 +407545,10 @@ var ToolCallEmitter = class extends BaseEmitter {
407460
407545
  }
407461
407546
  if ("functionResponse" in part && part.functionResponse) {
407462
407547
  try {
407463
- const responseText = JSON.stringify(part.functionResponse.response);
407548
+ const resp = part.functionResponse.response;
407549
+ const outputField = resp["output"];
407550
+ const errorField = resp["error"];
407551
+ const responseText = typeof outputField === "string" ? outputField : typeof errorField === "string" ? errorField : JSON.stringify(resp);
407464
407552
  result.push({
407465
407553
  type: "content",
407466
407554
  content: { type: "text", text: responseText }
@@ -407508,6 +407596,9 @@ var HistoryReplayer = class {
407508
407596
  if (record2.message) {
407509
407597
  await this.replayContent(record2.message, "assistant");
407510
407598
  }
407599
+ if (record2.usageMetadata) {
407600
+ await this.replayUsageMetadata(record2.usageMetadata);
407601
+ }
407511
407602
  break;
407512
407603
  case "tool_result":
407513
407604
  await this.replayToolResult(record2);
@@ -407532,11 +407623,19 @@ var HistoryReplayer = class {
407532
407623
  await this.toolCallEmitter.emitStart({
407533
407624
  toolName: functionName,
407534
407625
  callId,
407535
- args: part.functionCall.args
407626
+ args: part.functionCall.args,
407627
+ status: "in_progress"
407536
407628
  });
407537
407629
  }
407538
407630
  }
407539
407631
  }
407632
+ /**
407633
+ * Replays usage metadata.
407634
+ * @param usageMetadata - The usage metadata to replay
407635
+ */
407636
+ async replayUsageMetadata(usageMetadata) {
407637
+ await this.messageEmitter.emitUsageMetadata(usageMetadata);
407638
+ }
407540
407639
  /**
407541
407640
  * Replays a tool result record.
407542
407641
  */
@@ -407557,6 +407656,40 @@ var HistoryReplayer = class {
407557
407656
  // Note: args aren't stored in tool_result records by default
407558
407657
  args: void 0
407559
407658
  });
407659
+ const { resultDisplay } = result ?? {};
407660
+ if (!!resultDisplay && typeof resultDisplay === "object" && "type" in resultDisplay && resultDisplay.type === "task_execution") {
407661
+ await this.emitTaskUsageFromResultDisplay(
407662
+ resultDisplay
407663
+ );
407664
+ }
407665
+ }
407666
+ /**
407667
+ * Emits token usage from a TaskResultDisplay execution summary, if present.
407668
+ */
407669
+ async emitTaskUsageFromResultDisplay(resultDisplay) {
407670
+ const summary = resultDisplay.executionSummary;
407671
+ if (!summary) {
407672
+ return;
407673
+ }
407674
+ const usageMetadata = {};
407675
+ if (Number.isFinite(summary.inputTokens)) {
407676
+ usageMetadata.promptTokenCount = summary.inputTokens;
407677
+ }
407678
+ if (Number.isFinite(summary.outputTokens)) {
407679
+ usageMetadata.candidatesTokenCount = summary.outputTokens;
407680
+ }
407681
+ if (Number.isFinite(summary.thoughtTokens)) {
407682
+ usageMetadata.thoughtsTokenCount = summary.thoughtTokens;
407683
+ }
407684
+ if (Number.isFinite(summary.cachedTokens)) {
407685
+ usageMetadata.cachedContentTokenCount = summary.cachedTokens;
407686
+ }
407687
+ if (Number.isFinite(summary.totalTokens)) {
407688
+ usageMetadata.totalTokenCount = summary.totalTokens;
407689
+ }
407690
+ if (Object.keys(usageMetadata).length > 0) {
407691
+ await this.messageEmitter.emitUsageMetadata(usageMetadata);
407692
+ }
407560
407693
  }
407561
407694
  /**
407562
407695
  * Extracts tool name from a chat record's function response.
@@ -407594,11 +407727,13 @@ var SubAgentTracker = class {
407594
407727
  this.ctx = ctx;
407595
407728
  this.client = client;
407596
407729
  this.toolCallEmitter = new ToolCallEmitter(ctx);
407730
+ this.messageEmitter = new MessageEmitter(ctx);
407597
407731
  }
407598
407732
  static {
407599
407733
  __name(this, "SubAgentTracker");
407600
407734
  }
407601
407735
  toolCallEmitter;
407736
+ messageEmitter;
407602
407737
  toolStates = /* @__PURE__ */ new Map();
407603
407738
  /**
407604
407739
  * Sets up event listeners for a sub-agent's tool events.
@@ -407611,14 +407746,17 @@ var SubAgentTracker = class {
407611
407746
  const onToolCall = this.createToolCallHandler(abortSignal);
407612
407747
  const onToolResult = this.createToolResultHandler(abortSignal);
407613
407748
  const onApproval = this.createApprovalHandler(abortSignal);
407749
+ const onUsageMetadata = this.createUsageMetadataHandler(abortSignal);
407614
407750
  eventEmitter.on("tool_call" /* TOOL_CALL */, onToolCall);
407615
407751
  eventEmitter.on("tool_result" /* TOOL_RESULT */, onToolResult);
407616
407752
  eventEmitter.on("tool_waiting_approval" /* TOOL_WAITING_APPROVAL */, onApproval);
407753
+ eventEmitter.on("usage_metadata" /* USAGE_METADATA */, onUsageMetadata);
407617
407754
  return [
407618
407755
  () => {
407619
407756
  eventEmitter.off("tool_call" /* TOOL_CALL */, onToolCall);
407620
407757
  eventEmitter.off("tool_result" /* TOOL_RESULT */, onToolResult);
407621
407758
  eventEmitter.off("tool_waiting_approval" /* TOOL_WAITING_APPROVAL */, onApproval);
407759
+ eventEmitter.off("usage_metadata" /* USAGE_METADATA */, onUsageMetadata);
407622
407760
  this.toolStates.clear();
407623
407761
  }
407624
407762
  ];
@@ -407721,6 +407859,16 @@ var SubAgentTracker = class {
407721
407859
  }
407722
407860
  };
407723
407861
  }
407862
+ /**
407863
+ * Creates a handler for usage metadata events.
407864
+ */
407865
+ createUsageMetadataHandler(abortSignal) {
407866
+ return (...args) => {
407867
+ const event = args[0];
407868
+ if (abortSignal.aborted) return;
407869
+ this.messageEmitter.emitUsageMetadata(event.usage, "", event.durationMs);
407870
+ };
407871
+ }
407724
407872
  /**
407725
407873
  * Converts confirmation details to permission options for the client.
407726
407874
  */
@@ -407795,6 +407943,7 @@ var Session3 = class {
407795
407943
  this.toolCallEmitter = new ToolCallEmitter(this);
407796
407944
  this.planEmitter = new PlanEmitter(this);
407797
407945
  this.historyReplayer = new HistoryReplayer(this);
407946
+ this.messageEmitter = new MessageEmitter(this);
407798
407947
  }
407799
407948
  static {
407800
407949
  __name(this, "Session");
@@ -407805,6 +407954,7 @@ var Session3 = class {
407805
407954
  historyReplayer;
407806
407955
  toolCallEmitter;
407807
407956
  planEmitter;
407957
+ messageEmitter;
407808
407958
  // Implement SessionContext interface
407809
407959
  sessionId;
407810
407960
  getId() {
@@ -407871,6 +408021,8 @@ var Session3 = class {
407871
408021
  return { stopReason: "cancelled" };
407872
408022
  }
407873
408023
  const functionCalls = [];
408024
+ let usageMetadata = null;
408025
+ const streamStartTime = Date.now();
407874
408026
  try {
407875
408027
  const responseStream = await chat.sendMessageStream(
407876
408028
  this.config.getModel(),
@@ -407893,16 +408045,16 @@ var Session3 = class {
407893
408045
  if (!part.text) {
407894
408046
  continue;
407895
408047
  }
407896
- const content = {
407897
- type: "text",
407898
- text: part.text
407899
- };
407900
- this.sendUpdate({
407901
- sessionUpdate: part.thought ? "agent_thought_chunk" : "agent_message_chunk",
407902
- content
407903
- });
408048
+ this.messageEmitter.emitMessage(
408049
+ part.text,
408050
+ "assistant",
408051
+ part.thought
408052
+ );
407904
408053
  }
407905
408054
  }
408055
+ if (resp.type === "chunk" /* CHUNK */ && resp.value.usageMetadata) {
408056
+ usageMetadata = resp.value.usageMetadata;
408057
+ }
407906
408058
  if (resp.type === "chunk" /* CHUNK */ && resp.value.functionCalls) {
407907
408059
  functionCalls.push(...resp.value.functionCalls);
407908
408060
  }
@@ -407916,6 +408068,14 @@ var Session3 = class {
407916
408068
  }
407917
408069
  throw error2;
407918
408070
  }
408071
+ if (usageMetadata) {
408072
+ const durationMs = Date.now() - streamStartTime;
408073
+ await this.messageEmitter.emitUsageMetadata(
408074
+ usageMetadata,
408075
+ "",
408076
+ durationMs
408077
+ );
408078
+ }
407919
408079
  if (functionCalls.length > 0) {
407920
408080
  const toolResponseParts = [];
407921
408081
  for (const fc of functionCalls) {
@@ -408054,7 +408214,7 @@ var Session3 = class {
408054
408214
  abortSignal
408055
408215
  );
408056
408216
  }
408057
- const confirmationDetails = await invocation.shouldConfirmExecute(abortSignal);
408217
+ const confirmationDetails = this.config.getApprovalMode() !== "yolo" /* YOLO */ ? await invocation.shouldConfirmExecute(abortSignal) : false;
408058
408218
  if (confirmationDetails) {
408059
408219
  const content = [];
408060
408220
  if (confirmationDetails.type === "edit") {
@@ -408113,7 +408273,8 @@ var Session3 = class {
408113
408273
  const startParams = {
408114
408274
  callId,
408115
408275
  toolName: fc.name,
408116
- args
408276
+ args,
408277
+ status: "in_progress"
408117
408278
  };
408118
408279
  await this.toolCallEmitter.emitStart(startParams);
408119
408280
  }
@@ -408526,7 +408687,7 @@ var GeminiAgent = class {
408526
408687
  name: APPROVAL_MODE_INFO[mode].name,
408527
408688
  description: APPROVAL_MODE_INFO[mode].description
408528
408689
  }));
408529
- const version3 = "0.1.4-alpha.0";
408690
+ const version3 = "0.1.4-alpha.10";
408530
408691
  return {
408531
408692
  protocolVersion: PROTOCOL_VERSION,
408532
408693
  agentInfo: {