reasonix 0.48.0 → 0.48.1

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 (106) hide show
  1. package/README.md +9 -0
  2. package/dist/cli/{acp-4ROCGYNH.js → acp-QJGGHQLA.js} +52 -135
  3. package/dist/cli/acp-QJGGHQLA.js.map +1 -0
  4. package/dist/cli/{chat-GZNB5625.js → chat-ZXF227MP.js} +23 -23
  5. package/dist/cli/{chunk-JMDE6IO3.js → chunk-3FULTFRB.js} +2 -2
  6. package/dist/cli/{chunk-7M4YYMKW.js → chunk-43ROGEX2.js} +47 -55
  7. package/dist/cli/{chunk-7M4YYMKW.js.map → chunk-43ROGEX2.js.map} +1 -1
  8. package/dist/cli/{chunk-3WGTGXO4.js → chunk-4E2BHJU4.js} +4 -4
  9. package/dist/cli/chunk-4E2BHJU4.js.map +1 -0
  10. package/dist/cli/{chunk-HR5NBKEM.js → chunk-5AW6NIHU.js} +2 -2
  11. package/dist/cli/{chunk-TE5UIIFL.js → chunk-5U5LMMFF.js} +2 -2
  12. package/dist/cli/{chunk-WZGNXR6E.js → chunk-6FRNXWDZ.js} +320 -75
  13. package/dist/cli/chunk-6FRNXWDZ.js.map +1 -0
  14. package/dist/cli/{chunk-6MZTZO7A.js → chunk-DABAOQSV.js} +1826 -1793
  15. package/dist/cli/chunk-DABAOQSV.js.map +1 -0
  16. package/dist/cli/{chunk-EMMENC4O.js → chunk-EO6RPTJG.js} +5 -5
  17. package/dist/cli/{chunk-2QSTA2QV.js → chunk-FD7SNDWW.js} +3 -3
  18. package/dist/cli/{chunk-CDVSFSAK.js → chunk-FPME5QOO.js} +19 -4
  19. package/dist/cli/chunk-FPME5QOO.js.map +1 -0
  20. package/dist/cli/{chunk-5OHHAQ4W.js → chunk-H2F4LDNH.js} +2 -2
  21. package/dist/cli/{chunk-OG5JANQ4.js → chunk-IKSYVBBZ.js} +2 -2
  22. package/dist/cli/{chunk-OPYALNTT.js → chunk-JFBGSWQB.js} +77 -38
  23. package/dist/cli/chunk-JFBGSWQB.js.map +1 -0
  24. package/dist/cli/{chunk-RUDBUHO4.js → chunk-KH5JIJJD.js} +2 -2
  25. package/dist/cli/{chunk-H4CCXMDD.js → chunk-NQZ5U37J.js} +2 -2
  26. package/dist/cli/{chunk-I4M5QJNL.js → chunk-O3AGYTG2.js} +2 -2
  27. package/dist/cli/{chunk-YW63N3ZR.js → chunk-PIC5HJRD.js} +124 -18
  28. package/dist/cli/chunk-PIC5HJRD.js.map +1 -0
  29. package/dist/cli/{chunk-NMQSUNLB.js → chunk-PJIQIYTV.js} +6 -3
  30. package/dist/cli/chunk-PJIQIYTV.js.map +1 -0
  31. package/dist/cli/{chunk-V4Y732RQ.js → chunk-R7U44O3Y.js} +2 -2
  32. package/dist/cli/{chunk-OB4BUJBL.js → chunk-RCLS63KE.js} +5 -2
  33. package/dist/cli/chunk-RCLS63KE.js.map +1 -0
  34. package/dist/cli/{chunk-FY4S7TJZ.js → chunk-SLAFMXAZ.js} +10 -2
  35. package/dist/cli/chunk-SLAFMXAZ.js.map +1 -0
  36. package/dist/cli/{chunk-DOWEOA6E.js → chunk-SWUMD2LX.js} +2 -2
  37. package/dist/cli/{chunk-S2RMQULY.js → chunk-TIJ4ZHD6.js} +7 -7
  38. package/dist/cli/{chunk-MOJYKO2A.js → chunk-WKOXKCF3.js} +3 -3
  39. package/dist/cli/{chunk-MRZG4GBF.js → chunk-XMR2VCGT.js} +3 -3
  40. package/dist/cli/{code-PMPJWXEO.js → code-OKA5YPOH.js} +26 -26
  41. package/dist/cli/{commands-QS6TG4G3.js → commands-3U6PUVSS.js} +4 -4
  42. package/dist/cli/{commit-XPRSKUBF.js → commit-HFB7SRBU.js} +3 -3
  43. package/dist/cli/{desktop-562OPWIU.js → desktop-G7UMW3CJ.js} +60 -23
  44. package/dist/cli/desktop-G7UMW3CJ.js.map +1 -0
  45. package/dist/cli/{diff-I6W4AUWJ.js → diff-PGXW4YZD.js} +8 -8
  46. package/dist/cli/{doctor-6XVZKT4U.js → doctor-WWJFLVCB.js} +8 -8
  47. package/dist/cli/index.js +33 -33
  48. package/dist/cli/{mcp-7W7ANO2Y.js → mcp-Y3VKIK3T.js} +2 -2
  49. package/dist/cli/{mcp-browse-LA4I4YIZ.js → mcp-browse-4IN2QIFR.js} +2 -2
  50. package/dist/cli/{mcp-inspect-LWXXU7BY.js → mcp-inspect-BUXFXDHB.js} +2 -2
  51. package/dist/cli/{prompt-RKZD4X6Y.js → prompt-US57R6BA.js} +5 -4
  52. package/dist/cli/{replay-2X7MVXOI.js → replay-EQJMZRB3.js} +8 -8
  53. package/dist/cli/{run-TPKXIJ27.js → run-KVEI66TR.js} +14 -14
  54. package/dist/cli/{server-NHQ3QXOZ.js → server-D6C4GHWN.js} +13 -11
  55. package/dist/cli/server-D6C4GHWN.js.map +1 -0
  56. package/dist/cli/{sessions-2A4DGSHA.js → sessions-TGVS2RQZ.js} +13 -13
  57. package/dist/cli/{setup-GOLP7J4C.js → setup-WLKX6GGG.js} +5 -5
  58. package/dist/cli/{stats-CGDAFDKI.js → stats-TCD7Q6MB.js} +6 -6
  59. package/dist/cli/{version-FIL4ZFOS.js → version-BCWWS2OU.js} +13 -13
  60. package/dist/index.d.ts +8 -2
  61. package/dist/index.js +200 -46
  62. package/dist/index.js.map +1 -1
  63. package/package.json +5 -2
  64. package/dist/cli/acp-4ROCGYNH.js.map +0 -1
  65. package/dist/cli/chunk-3WGTGXO4.js.map +0 -1
  66. package/dist/cli/chunk-6MZTZO7A.js.map +0 -1
  67. package/dist/cli/chunk-CDVSFSAK.js.map +0 -1
  68. package/dist/cli/chunk-FY4S7TJZ.js.map +0 -1
  69. package/dist/cli/chunk-NMQSUNLB.js.map +0 -1
  70. package/dist/cli/chunk-OB4BUJBL.js.map +0 -1
  71. package/dist/cli/chunk-OPYALNTT.js.map +0 -1
  72. package/dist/cli/chunk-WZGNXR6E.js.map +0 -1
  73. package/dist/cli/chunk-YW63N3ZR.js.map +0 -1
  74. package/dist/cli/desktop-562OPWIU.js.map +0 -1
  75. package/dist/cli/server-NHQ3QXOZ.js.map +0 -1
  76. /package/dist/cli/{chat-GZNB5625.js.map → chat-ZXF227MP.js.map} +0 -0
  77. /package/dist/cli/{chunk-JMDE6IO3.js.map → chunk-3FULTFRB.js.map} +0 -0
  78. /package/dist/cli/{chunk-HR5NBKEM.js.map → chunk-5AW6NIHU.js.map} +0 -0
  79. /package/dist/cli/{chunk-TE5UIIFL.js.map → chunk-5U5LMMFF.js.map} +0 -0
  80. /package/dist/cli/{chunk-EMMENC4O.js.map → chunk-EO6RPTJG.js.map} +0 -0
  81. /package/dist/cli/{chunk-2QSTA2QV.js.map → chunk-FD7SNDWW.js.map} +0 -0
  82. /package/dist/cli/{chunk-5OHHAQ4W.js.map → chunk-H2F4LDNH.js.map} +0 -0
  83. /package/dist/cli/{chunk-OG5JANQ4.js.map → chunk-IKSYVBBZ.js.map} +0 -0
  84. /package/dist/cli/{chunk-RUDBUHO4.js.map → chunk-KH5JIJJD.js.map} +0 -0
  85. /package/dist/cli/{chunk-H4CCXMDD.js.map → chunk-NQZ5U37J.js.map} +0 -0
  86. /package/dist/cli/{chunk-I4M5QJNL.js.map → chunk-O3AGYTG2.js.map} +0 -0
  87. /package/dist/cli/{chunk-V4Y732RQ.js.map → chunk-R7U44O3Y.js.map} +0 -0
  88. /package/dist/cli/{chunk-DOWEOA6E.js.map → chunk-SWUMD2LX.js.map} +0 -0
  89. /package/dist/cli/{chunk-S2RMQULY.js.map → chunk-TIJ4ZHD6.js.map} +0 -0
  90. /package/dist/cli/{chunk-MOJYKO2A.js.map → chunk-WKOXKCF3.js.map} +0 -0
  91. /package/dist/cli/{chunk-MRZG4GBF.js.map → chunk-XMR2VCGT.js.map} +0 -0
  92. /package/dist/cli/{code-PMPJWXEO.js.map → code-OKA5YPOH.js.map} +0 -0
  93. /package/dist/cli/{commands-QS6TG4G3.js.map → commands-3U6PUVSS.js.map} +0 -0
  94. /package/dist/cli/{commit-XPRSKUBF.js.map → commit-HFB7SRBU.js.map} +0 -0
  95. /package/dist/cli/{diff-I6W4AUWJ.js.map → diff-PGXW4YZD.js.map} +0 -0
  96. /package/dist/cli/{doctor-6XVZKT4U.js.map → doctor-WWJFLVCB.js.map} +0 -0
  97. /package/dist/cli/{mcp-7W7ANO2Y.js.map → mcp-Y3VKIK3T.js.map} +0 -0
  98. /package/dist/cli/{mcp-browse-LA4I4YIZ.js.map → mcp-browse-4IN2QIFR.js.map} +0 -0
  99. /package/dist/cli/{mcp-inspect-LWXXU7BY.js.map → mcp-inspect-BUXFXDHB.js.map} +0 -0
  100. /package/dist/cli/{prompt-RKZD4X6Y.js.map → prompt-US57R6BA.js.map} +0 -0
  101. /package/dist/cli/{replay-2X7MVXOI.js.map → replay-EQJMZRB3.js.map} +0 -0
  102. /package/dist/cli/{run-TPKXIJ27.js.map → run-KVEI66TR.js.map} +0 -0
  103. /package/dist/cli/{sessions-2A4DGSHA.js.map → sessions-TGVS2RQZ.js.map} +0 -0
  104. /package/dist/cli/{setup-GOLP7J4C.js.map → setup-WLKX6GGG.js.map} +0 -0
  105. /package/dist/cli/{stats-CGDAFDKI.js.map → stats-TCD7Q6MB.js.map} +0 -0
  106. /package/dist/cli/{version-FIL4ZFOS.js.map → version-BCWWS2OU.js.map} +0 -0
@@ -13,7 +13,7 @@ import {
13
13
  TONE_ACTIVE,
14
14
  resolveThemeName,
15
15
  setActiveTheme
16
- } from "./chunk-CDVSFSAK.js";
16
+ } from "./chunk-FPME5QOO.js";
17
17
  import {
18
18
  __toESM
19
19
  } from "./chunk-TUK7OWJA.js";
@@ -157,4 +157,4 @@ export {
157
157
  COLOR,
158
158
  GLYPH
159
159
  };
160
- //# sourceMappingURL=chunk-RUDBUHO4.js.map
160
+ //# sourceMappingURL=chunk-KH5JIJJD.js.map
@@ -2,7 +2,7 @@
2
2
  import { createRequire as __cr } from 'node:module'; if (typeof globalThis.require === 'undefined') { globalThis.require = __cr(import.meta.url); }
3
3
  import {
4
4
  probeOllama
5
- } from "./chunk-HR5NBKEM.js";
5
+ } from "./chunk-5AW6NIHU.js";
6
6
 
7
7
  // src/index/semantic/ollama-launcher.ts
8
8
  import { spawn, spawnSync } from "child_process";
@@ -98,4 +98,4 @@ export {
98
98
  startOllamaDaemon,
99
99
  pullOllamaModel
100
100
  };
101
- //# sourceMappingURL=chunk-H4CCXMDD.js.map
101
+ //# sourceMappingURL=chunk-NQZ5U37J.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-X53B3JIX.js";
8
8
  import {
9
9
  t
10
- } from "./chunk-YW63N3ZR.js";
10
+ } from "./chunk-PIC5HJRD.js";
11
11
  import {
12
12
  __toESM
13
13
  } from "./chunk-TUK7OWJA.js";
@@ -51,4 +51,4 @@ function truncate(s, max) {
51
51
  export {
52
52
  RecordView
53
53
  };
54
- //# sourceMappingURL=chunk-I4M5QJNL.js.map
54
+ //# sourceMappingURL=chunk-O3AGYTG2.js.map
@@ -3,7 +3,7 @@ import { createRequire as __cr } from 'node:module'; if (typeof globalThis.requi
3
3
  import {
4
4
  loadLanguage,
5
5
  saveLanguage
6
- } from "./chunk-CDVSFSAK.js";
6
+ } from "./chunk-FPME5QOO.js";
7
7
 
8
8
  // src/i18n/EN.ts
9
9
  var EN = {
@@ -607,7 +607,9 @@ var EN = {
607
607
  editHistoryHelpShow: "/show <id> \u2192 per-file summary \xB7 /show <id> <path> \u2192 full diff of one file",
608
608
  editHistoryHelpUndo: "/undo \u2192 newest non-undone \xB7 /undo <id> [path] \u2192 target a specific batch or file",
609
609
  editHistoryAlreadyReverted: "(already reverted \u2014 /history shows the batch-level status)",
610
- editHistoryRevertFile: "/undo {id} {path} \u2192 revert just this file"
610
+ editHistoryRevertFile: "/undo {id} {path} \u2192 revert just this file",
611
+ mcpFailed: "MCP {name} failed",
612
+ mcpWarn: "MCP {name} warn"
611
613
  },
612
614
  hooks: {
613
615
  head: "hook {tag} `{cmd}` {decision}{truncTag}",
@@ -630,9 +632,9 @@ var EN = {
630
632
  abortedAtIter: "aborted at iter {iter} \u2014 stopped without producing a summary (press \u2191 + Enter or /retry to resume)",
631
633
  toolUploadStatus: "tool result uploaded \xB7 model thinking before next response\u2026",
632
634
  preflightTruncateStatus: "preflight: context near full, truncating oldest history\u2026",
633
- preflightTruncated: "preflight: request ~{estimate}/{ctxMax} tokens ({pct}%) \u2014 truncated {beforeMessages} messages \u2192 {afterMessages}. Sending.",
634
- preflightTruncatedStillFull: "preflight: request still ~{estimate}/{ctxMax} tokens ({pct}%) after truncating {beforeMessages} messages \u2192 {afterMessages}. DeepSeek will likely 400. Run /clear or /new to start fresh.",
635
- preflightNoFold: "preflight: request ~{estimate}/{ctxMax} tokens ({pct}%) and nothing left to truncate \u2014 DeepSeek will likely 400. Run /clear or /new to start fresh.",
635
+ preflightTruncated: "preflight: request ~{estimate}/{ctxMax} tokens ({pct}%) \xB7 body {bodyKB} KB \u2014 truncated {beforeMessages} messages \u2192 {afterMessages}. Sending.",
636
+ preflightTruncatedStillFull: "preflight: request still ~{estimate}/{ctxMax} tokens ({pct}%) \xB7 body {bodyKB} KB after truncating {beforeMessages} messages \u2192 {afterMessages}. DeepSeek will likely 400. Run /clear or /new to start fresh.",
637
+ preflightNoFold: "preflight: request ~{estimate}/{ctxMax} tokens ({pct}%) \xB7 body {bodyKB} KB and nothing left to truncate \u2014 DeepSeek will likely 400. Run /clear or /new to start fresh.",
636
638
  flashEscalation: "\u21E7 flash requested escalation \u2014 retrying this turn on {model}{reasonSuffix}",
637
639
  harvestStatus: "extracting plan state from reasoning\u2026",
638
640
  repeatToolCallWarning: "Caught a repeated tool call \u2014 let the model see the issue and retry with a different approach.",
@@ -919,6 +921,12 @@ var EN = {
919
921
  statusMcp: " mcp {servers} server(s), {tools} tool(s) in registry",
920
922
  statusEdits: " edits {count} pending (/apply to commit, /discard to drop)",
921
923
  statusPlan: " plan ON \u2014 writes gated (submit_plan + approval)",
924
+ statusLifecycle: " lifecycle {mode}/{state} \xB7 {progress}{evidence}",
925
+ lifecycleNoPlan: "no plan",
926
+ lifecycleEvidencePending: "evidence pending",
927
+ lifecycleRejected: "lifecycle: {tool} blocked in {state} \u2014 next: {next}",
928
+ lifecycleEvidenceRejected: "lifecycle: step {stepId} needs evidence \u2014 next: {next}",
929
+ lifecycleRepeatedRejected: "lifecycle: repeated {tool} rejection \u2014 do not retry identical args",
922
930
  statusModeYolo: " mode YOLO \u2014 edits + shell auto-run with no prompt (/undo still rolls back \xB7 Shift+Tab to flip)",
923
931
  statusModeAuto: " mode AUTO \u2014 edits apply immediately (u to undo within 5s \xB7 Shift+Tab to flip)",
924
932
  statusModeReview: " mode review \u2014 edits queue for /apply or y (Shift+Tab to flip)",
@@ -1089,7 +1097,8 @@ var EN = {
1089
1097
  evt: " evt",
1090
1098
  editsLabel: "edits:",
1091
1099
  mcpLoading: "MCP",
1092
- ctx: "ctx"
1100
+ ctx: "ctx",
1101
+ shortcutsHint: "Ctrl+P shortcuts"
1093
1102
  },
1094
1103
  editMode: {
1095
1104
  plan: "PLAN MODE",
@@ -1311,7 +1320,8 @@ var EN = {
1311
1320
  endpointMustBeHttp: "web_search: SearXNG endpoint must be http(s), got {protocol} \u2014 try: set a valid URL with /search-endpoint http://host:port",
1312
1321
  cannotReach: "web_search: Cannot reach SearXNG server at {endpoint} \u2014 try: install and start SearXNG (https://github.com/searxng/searxng, e.g. `docker run -d -p 8080:8080 searxng/searxng`), or switch to another engine with /search-engine mojeek|searxng|metaso|tavily|perplexity|exa",
1313
1322
  searxngNoResults: "web_search: 0 results but SearXNG response doesn't look like an empty results page ({chars} chars) \u2014 try: rephrase the query with simpler terms, or switch engine with /search-engine mojeek|searxng|metaso|tavily|perplexity|exa",
1314
- metasoDailyLimit: "web_search: daily search limit reached for the default API key \u2014 set your own METASO_API_KEY env var or get one at https://metaso.cn/search-api/playground",
1323
+ metasoMissingKey: "web_search: Metaso requires an API key \u2014 set METASO_API_KEY or configure one with /search-engine metaso <key>. Get one at https://metaso.cn/search-api/playground",
1324
+ metasoDailyLimit: "web_search: Metaso daily search limit reached \u2014 set METASO_API_KEY or get a key at https://metaso.cn/search-api/playground",
1315
1325
  metasoUnauthorized: "web_search: Metaso API key rejected \u2014 check METASO_API_KEY or get one at https://metaso.cn/search-api/playground",
1316
1326
  metasoRateLimit: "web_search: Metaso rate-limited \u2014 wait and retry, or get your own API key at https://metaso.cn/search-api/playground",
1317
1327
  metasoServerError: "web_search: Metaso server error ({status}) \u2014 try again later, or switch engine with /search-engine mojeek|searxng|metaso|tavily|perplexity|exa",
@@ -1503,7 +1513,13 @@ var EN = {
1503
1513
  noResources: "No resources on any connected MCP server (or no servers connected). `/mcp` shows the current set.",
1504
1514
  readOne: "Read one: `/resource <uri>` \u2014 or use Tab in the picker.",
1505
1515
  noPrompts: "No prompts on any connected MCP server (or no servers connected). `/mcp` shows the current set.",
1506
- fetchOne: "Fetch one: `/prompt <name>` \u2014 args are not supported yet; prompts with required args will surface an error from the server."
1516
+ fetchOne: "Fetch one: `/prompt <name>` \u2014 args are not supported yet; prompts with required args will surface an error from the server.",
1517
+ noServerForResource: 'no server exposes resource "{name}"',
1518
+ resourceHint: "`/resource` with no arg lists what's available.",
1519
+ readFailed: "readResource failed",
1520
+ noServerForPrompt: 'no server exposes prompt "{name}"',
1521
+ promptHint: "`/prompt` with no arg lists what's available.",
1522
+ fetchFailed: "getPrompt failed"
1507
1523
  },
1508
1524
  mcpLifecycle: {
1509
1525
  handshake: "handshake\u2026",
@@ -1516,7 +1532,9 @@ var EN = {
1516
1532
  disabledDetail: "via /mcp disable {name}",
1517
1533
  failedSetupHint: "\u2192 run `reasonix setup` to remove this entry, or fix the underlying issue (missing npm package, network, etc.).",
1518
1534
  failedSetupConfigHint: "\u2192 run `reasonix setup` to remove broken entries from your saved config.",
1519
- abortedHint: "MCP startup aborted \u2014 {count} server(s) skipped. Run /mcp to retry once you've fixed the underlying issue."
1535
+ abortedHint: "MCP startup aborted \u2014 {count} server(s) skipped. Run /mcp to retry once you've fixed the underlying issue.",
1536
+ toolsReady: "tools ready",
1537
+ warnLabel: "warn"
1520
1538
  },
1521
1539
  checkpointPicker: {
1522
1540
  title: "restore a checkpoint \u2014 {workspace}",
@@ -1562,6 +1580,41 @@ var EN = {
1562
1580
  noRecords: "no records",
1563
1581
  untracked: "(untracked)",
1564
1582
  churned: "(churned \xD7{count})"
1583
+ },
1584
+ builtinSkills: {
1585
+ explore: "Explore the codebase in an isolated subagent \u2014 wide-net read-only investigation that returns one distilled answer. Best for: 'find all places that\u2026', 'how does X work across the project', 'survey the code for Y'.",
1586
+ research: "Research a question by combining web search + code reading in an isolated subagent. Best for: 'is X feature supported by lib Y', 'what\u2019s the canonical way to do Z', 'compare our impl against the spec'.",
1587
+ review: "Review the pending changes (current branch diff by default) in an isolated subagent \u2014 flags correctness, security, missing tests, hidden behavior changes; reports verdict + per-issue file:line. Read-only; the parent decides what to act on.",
1588
+ securityReview: "Security-focused review of the current branch diff in an isolated subagent \u2014 flags injection/authz/secrets/deserialization/path-traversal/crypto issues, severity-tagged. Read-only. Use when shipping changes that touch auth, input parsing, file IO, or external requests.",
1589
+ test: "Run the project\u2019s test suite, diagnose failures, propose SEARCH/REPLACE fixes, re-run until green (or stop after 2 fix attempts on the same failure). Inlined \u2014 runs in the parent loop so you see the edit blocks and can /apply them. Detects npm/pnpm/yarn/pytest/go/cargo."
1590
+ },
1591
+ shortcutsHelp: {
1592
+ title: "Shortcuts",
1593
+ groupInput: "Input",
1594
+ groupNavigation: "Navigation",
1595
+ groupSession: "Session",
1596
+ groupSystem: "System",
1597
+ descEnter: "Send message",
1598
+ descShiftEnter: "New line",
1599
+ descCtrlU: "Clear input",
1600
+ descCtrlW: "Delete word",
1601
+ descCtrlP: "Toggle shortcut panel",
1602
+ descCtrlX: "Open in editor",
1603
+ descArrows: "Input history",
1604
+ descPgUpDown: "Scroll page",
1605
+ descCtrlL: "Clear screen",
1606
+ descCtrlB: "Toggle sidebar",
1607
+ descNewSession: "New session",
1608
+ descListSessions: "List sessions",
1609
+ descSwitchModel: "Switch model",
1610
+ descSwitchPreset: "Switch preset",
1611
+ descSwitchTheme: "Switch theme",
1612
+ descCtrlC: "Quit",
1613
+ descEsc: "Stop / Cancel",
1614
+ descCtrlR: "Toggle verbose",
1615
+ descCtrlO: "Expand stream",
1616
+ descHelp: "Show all commands",
1617
+ descShiftTab: "Switch edit mode"
1565
1618
  }
1566
1619
  };
1567
1620
 
@@ -2165,7 +2218,9 @@ var zhCN = {
2165
2218
  editHistoryHelpShow: "/show <id> \u2192 \u6587\u4EF6\u6458\u8981 \xB7 /show <id> <path> \u2192 \u67D0\u4E2A\u6587\u4EF6\u7684\u5B8C\u6574 diff",
2166
2219
  editHistoryHelpUndo: "/undo \u2192 \u6700\u65B0\u7684\u672A\u64A4\u9500\u9879 \xB7 /undo <id> [path] \u2192 \u6307\u5B9A\u6279\u6B21\u6216\u6587\u4EF6",
2167
2220
  editHistoryAlreadyReverted: "\uFF08\u5DF2\u64A4\u9500 \u2014 /history \u663E\u793A\u6279\u6B21\u7EA7\u72B6\u6001\uFF09",
2168
- editHistoryRevertFile: "/undo {id} {path} \u2192 \u4EC5\u8FD8\u539F\u6B64\u6587\u4EF6"
2221
+ editHistoryRevertFile: "/undo {id} {path} \u2192 \u4EC5\u8FD8\u539F\u6B64\u6587\u4EF6",
2222
+ mcpFailed: "MCP {name} \u5931\u8D25",
2223
+ mcpWarn: "MCP {name} \u8B66\u544A"
2169
2224
  },
2170
2225
  hooks: {
2171
2226
  head: "\u94A9\u5B50 {tag} `{cmd}` {decision}{truncTag}",
@@ -2188,9 +2243,9 @@ var zhCN = {
2188
2243
  abortedAtIter: "\u5728\u7B2C {iter} \u6B21\u5DE5\u5177\u8C03\u7528\u5904\u4E2D\u65AD \u2014 \u672A\u751F\u6210\u603B\u7ED3\u5373\u505C\u6B62\uFF08\u6309 \u2191 + Enter \u6216 /retry \u6062\u590D\uFF09",
2189
2244
  toolUploadStatus: "\u5DE5\u5177\u7ED3\u679C\u5DF2\u4E0A\u4F20 \xB7 \u6A21\u578B\u5728\u751F\u6210\u4E0B\u4E00\u6761\u54CD\u5E94\u524D\u601D\u8003\u4E2D\u2026",
2190
2245
  preflightTruncateStatus: "\u9884\u68C0\uFF1A\u4E0A\u4E0B\u6587\u63A5\u8FD1\u4E0A\u9650\uFF0C\u6B63\u5728\u88C1\u526A\u6700\u65E9\u5386\u53F2\u2026",
2191
- preflightTruncated: "\u9884\u68C0\uFF1A\u8BF7\u6C42\u7EA6 {estimate}/{ctxMax} tokens\uFF08{pct}%\uFF09\u2014 \u5DF2\u88C1\u526A {beforeMessages} \u6761\u6D88\u606F \u2192 {afterMessages}\u3002\u53D1\u9001\u4E2D\u3002",
2192
- preflightTruncatedStillFull: "\u9884\u68C0\uFF1A\u88C1\u526A {beforeMessages} \u6761\u6D88\u606F \u2192 {afterMessages} \u540E\uFF0C\u8BF7\u6C42\u4ECD\u7EA6 {estimate}/{ctxMax} tokens\uFF08{pct}%\uFF09\u2014 DeepSeek \u5927\u6982\u7387\u4F1A\u8FD4\u56DE 400\u3002\u8BF7\u8FD0\u884C /clear \u6216 /new \u91CD\u65B0\u5F00\u59CB\u3002",
2193
- preflightNoFold: "\u9884\u68C0\uFF1A\u8BF7\u6C42\u7EA6 {estimate}/{ctxMax} tokens\uFF08{pct}%\uFF09\u4E14\u6CA1\u6709\u53EF\u88C1\u526A\u7684\u5185\u5BB9 \u2014 DeepSeek \u5927\u6982\u7387\u4F1A\u8FD4\u56DE 400\u3002\u8BF7\u8FD0\u884C /clear \u6216 /new \u91CD\u65B0\u5F00\u59CB\u3002",
2246
+ preflightTruncated: "\u9884\u68C0\uFF1A\u8BF7\u6C42\u7EA6 {estimate}/{ctxMax} tokens\uFF08{pct}%\uFF09\xB7 body {bodyKB} KB \u2014 \u5DF2\u88C1\u526A {beforeMessages} \u6761\u6D88\u606F \u2192 {afterMessages}\u3002\u53D1\u9001\u4E2D\u3002",
2247
+ preflightTruncatedStillFull: "\u9884\u68C0\uFF1A\u88C1\u526A {beforeMessages} \u6761\u6D88\u606F \u2192 {afterMessages} \u540E\uFF0C\u8BF7\u6C42\u4ECD\u7EA6 {estimate}/{ctxMax} tokens\uFF08{pct}%\uFF09\xB7 body {bodyKB} KB \u2014 DeepSeek \u5927\u6982\u7387\u4F1A\u8FD4\u56DE 400\u3002\u8BF7\u8FD0\u884C /clear \u6216 /new \u91CD\u65B0\u5F00\u59CB\u3002",
2248
+ preflightNoFold: "\u9884\u68C0\uFF1A\u8BF7\u6C42\u7EA6 {estimate}/{ctxMax} tokens\uFF08{pct}%\uFF09\xB7 body {bodyKB} KB \u4E14\u6CA1\u6709\u53EF\u88C1\u526A\u7684\u5185\u5BB9 \u2014 DeepSeek \u5927\u6982\u7387\u4F1A\u8FD4\u56DE 400\u3002\u8BF7\u8FD0\u884C /clear \u6216 /new \u91CD\u65B0\u5F00\u59CB\u3002",
2194
2249
  flashEscalation: "\u21E7 flash \u8BF7\u6C42\u5347\u7EA7 \u2014 \u672C\u8F6E\u6539\u7528 {model}{reasonSuffix}",
2195
2250
  harvestStatus: "\u6B63\u5728\u4ECE\u63A8\u7406\u8FC7\u7A0B\u63D0\u53D6\u8BA1\u5212\u72B6\u6001\u2026",
2196
2251
  repeatToolCallWarning: "\u62E6\u622A\u5230\u91CD\u590D\u5DE5\u5177\u8C03\u7528 \u2014 \u8BA9\u6A21\u578B\u5BDF\u89C9\u95EE\u9898\u5E76\u6362\u79CD\u65B9\u5F0F\u91CD\u8BD5\u3002",
@@ -2477,6 +2532,12 @@ var zhCN = {
2477
2532
  statusMcp: " MCP {servers} \u4E2A\u670D\u52A1\u5668\uFF0C\u6CE8\u518C\u8868\u4E2D {tools} \u4E2A\u5DE5\u5177",
2478
2533
  statusEdits: " \u7F16\u8F91 {count} \u4E2A\u5F85\u5904\u7406\uFF08/apply \u63D0\u4EA4\uFF0C/discard \u4E22\u5F03\uFF09",
2479
2534
  statusPlan: " \u8BA1\u5212 \u5F00\u542F \u2014 \u5199\u5165\u53D7\u9650\uFF08submit_plan + \u5BA1\u6279\uFF09",
2535
+ statusLifecycle: " \u751F\u547D\u5468\u671F {mode}/{state} \xB7 {progress}{evidence}",
2536
+ lifecycleNoPlan: "\u6682\u65E0\u8BA1\u5212",
2537
+ lifecycleEvidencePending: "\u7B49\u5F85 evidence",
2538
+ lifecycleRejected: "lifecycle\uFF1A{tool} \u5728 {state} \u72B6\u6001\u88AB\u62E6\u622A \u2014 \u4E0B\u4E00\u6B65\uFF1A{next}",
2539
+ lifecycleEvidenceRejected: "lifecycle\uFF1A\u6B65\u9AA4 {stepId} \u9700\u8981 evidence \u2014 \u4E0B\u4E00\u6B65\uFF1A{next}",
2540
+ lifecycleRepeatedRejected: "lifecycle\uFF1A{tool} \u88AB\u91CD\u590D\u62E6\u622A \u2014 \u4E0D\u8981\u7528\u76F8\u540C\u53C2\u6570\u53CD\u590D\u91CD\u8BD5",
2480
2541
  statusModeYolo: " \u6A21\u5F0F YOLO \u2014 \u7F16\u8F91 + shell \u81EA\u52A8\u8FD0\u884C\uFF0C\u65E0\u63D0\u793A\uFF08/undo \u4ECD\u53EF\u56DE\u6EDA \xB7 Shift+Tab \u5207\u6362\uFF09",
2481
2542
  statusModeAuto: " \u6A21\u5F0F AUTO \u2014 \u7F16\u8F91\u7ACB\u5373\u5E94\u7528\uFF085 \u79D2\u5185\u6309 u \u64A4\u6D88 \xB7 Shift+Tab \u5207\u6362\uFF09",
2482
2543
  statusModeReview: " \u6A21\u5F0F review \u2014 \u7F16\u8F91\u6392\u961F\u7B49\u5F85 /apply \u6216 y\uFF08Shift+Tab \u5207\u6362\uFF09",
@@ -2647,7 +2708,8 @@ var zhCN = {
2647
2708
  evt: " \u4E8B\u4EF6",
2648
2709
  editsLabel: "\u7F16\u8F91:",
2649
2710
  mcpLoading: "MCP",
2650
- ctx: "\u4E0A\u4E0B\u6587"
2711
+ ctx: "\u4E0A\u4E0B\u6587",
2712
+ shortcutsHint: "Ctrl+P \u5FEB\u6377\u952E"
2651
2713
  },
2652
2714
  editMode: {
2653
2715
  plan: "\u8BA1\u5212",
@@ -2869,7 +2931,8 @@ var zhCN = {
2869
2931
  endpointMustBeHttp: "web_search: SearXNG \u7AEF\u70B9\u5FC5\u987B\u662F http(s) \u534F\u8BAE\uFF0C\u5F53\u524D\u4E3A {protocol} \u2014 try: \u4F7F\u7528 /search-endpoint http://host:port \u8BBE\u7F6E\u6709\u6548\u7684 URL",
2870
2932
  cannotReach: "web_search: \u65E0\u6CD5\u8BBF\u95EE SearXNG \u670D\u52A1\u5668 {endpoint} \u2014 try: \u5B89\u88C5\u5E76\u542F\u52A8 SearXNG\uFF08https://github.com/searxng/searxng\uFF0C\u4F8B\u5982 `docker run -d -p 8080:8080 searxng/searxng`\uFF09\uFF0C\u6216\u4F7F\u7528 /search-engine mojeek|searxng|metaso|tavily|perplexity|exa \u5207\u6362\u5F15\u64CE",
2871
2933
  searxngNoResults: "web_search: \u8FD4\u56DE 0 \u6761\u7ED3\u679C\u4F46 SearXNG \u54CD\u5E94\u770B\u8D77\u6765\u4E0D\u662F\u6B63\u5E38\u7A7A\u7ED3\u679C\u9875\uFF08{chars} \u5B57\u7B26\uFF09\u2014 try: \u4F7F\u7528\u66F4\u7B80\u5355\u7684\u5173\u952E\u8BCD\u6539\u5199\u67E5\u8BE2\uFF0C\u6216\u4F7F\u7528 /search-engine mojeek|searxng|metaso|tavily|perplexity|exa \u5207\u6362\u5F15\u64CE",
2872
- metasoDailyLimit: "web_search: \u9ED8\u8BA4 API \u5BC6\u94A5\u7684\u6BCF\u65E5\u641C\u7D22\u6B21\u6570\u5DF2\u8FBE\u4E0A\u9650 \u2014 \u8BBE\u7F6E METASO_API_KEY \u73AF\u5883\u53D8\u91CF\uFF0C\u6216\u5728 https://metaso.cn/search-api/playground \u83B7\u53D6\u81EA\u5DF1\u7684\u5BC6\u94A5",
2934
+ metasoMissingKey: "web_search: Metaso \u9700\u8981 API \u5BC6\u94A5 \u2014 \u8BBE\u7F6E METASO_API_KEY\uFF0C\u6216\u4F7F\u7528 /search-engine metaso <key> \u914D\u7F6E\uFF1B\u53EF\u5728 https://metaso.cn/search-api/playground \u83B7\u53D6\u5BC6\u94A5",
2935
+ metasoDailyLimit: "web_search: Metaso \u6BCF\u65E5\u641C\u7D22\u6B21\u6570\u5DF2\u8FBE\u4E0A\u9650 \u2014 \u8BBE\u7F6E METASO_API_KEY\uFF0C\u6216\u5728 https://metaso.cn/search-api/playground \u83B7\u53D6\u5BC6\u94A5",
2873
2936
  metasoUnauthorized: "web_search: Metaso API \u5BC6\u94A5\u88AB\u62D2\u7EDD \u2014 \u68C0\u67E5 METASO_API_KEY\uFF0C\u6216\u5728 https://metaso.cn/search-api/playground \u83B7\u53D6\u5BC6\u94A5",
2874
2937
  metasoRateLimit: "web_search: Metaso \u8BF7\u6C42\u9891\u7387\u9650\u5236 \u2014 \u7B49\u5F85\u540E\u91CD\u8BD5\uFF0C\u6216\u5728 https://metaso.cn/search-api/playground \u83B7\u53D6\u81EA\u5DF1\u7684\u5BC6\u94A5",
2875
2938
  metasoServerError: "web_search: Metaso \u670D\u52A1\u5668\u9519\u8BEF\uFF08{status}\uFF09\u2014 \u7A0D\u540E\u91CD\u8BD5\uFF0C\u6216\u4F7F\u7528 /search-engine mojeek|searxng|metaso|tavily|perplexity|exa \u5207\u6362\u5F15\u64CE",
@@ -3061,7 +3124,13 @@ var zhCN = {
3061
3124
  noResources: "\u6CA1\u6709\u4EFB\u4F55\u5DF2\u8FDE\u63A5 MCP \u670D\u52A1\u5668\u4E0A\u7684\u8D44\u6E90\uFF08\u6216\u65E0\u670D\u52A1\u5668\u8FDE\u63A5\uFF09\u3002`/mcp` \u663E\u793A\u5F53\u524D\u5217\u8868\u3002",
3062
3125
  readOne: "\u8BFB\u53D6\uFF1A`/resource <uri>` \u2014 \u6216\u5728\u9009\u62E9\u5668\u4E2D\u4F7F\u7528 Tab \u952E\u3002",
3063
3126
  noPrompts: "\u6CA1\u6709\u4EFB\u4F55\u5DF2\u8FDE\u63A5 MCP \u670D\u52A1\u5668\u4E0A\u7684\u63D0\u793A\uFF08\u6216\u65E0\u670D\u52A1\u5668\u8FDE\u63A5\uFF09\u3002`/mcp` \u663E\u793A\u5F53\u524D\u5217\u8868\u3002",
3064
- fetchOne: "\u83B7\u53D6\uFF1A`/prompt <name>` \u2014 \u6682\u4E0D\u652F\u6301\u53C2\u6570\uFF1B\u5E26\u5FC5\u9700\u53C2\u6570\u7684\u63D0\u793A\u5C06\u8FD4\u56DE\u670D\u52A1\u5668\u9519\u8BEF\u3002"
3127
+ fetchOne: "\u83B7\u53D6\uFF1A`/prompt <name>` \u2014 \u6682\u4E0D\u652F\u6301\u53C2\u6570\uFF1B\u5E26\u5FC5\u9700\u53C2\u6570\u7684\u63D0\u793A\u5C06\u8FD4\u56DE\u670D\u52A1\u5668\u9519\u8BEF\u3002",
3128
+ noServerForResource: '\u6CA1\u6709\u670D\u52A1\u5668\u66B4\u9732\u8D44\u6E90 "{name}"',
3129
+ resourceHint: "`/resource` \u4E0D\u5E26\u53C2\u6570\u53EF\u67E5\u770B\u53EF\u7528\u5217\u8868\u3002",
3130
+ readFailed: "\u8BFB\u53D6\u8D44\u6E90\u5931\u8D25",
3131
+ noServerForPrompt: '\u6CA1\u6709\u670D\u52A1\u5668\u66B4\u9732 prompt "{name}"',
3132
+ promptHint: "`/prompt` \u4E0D\u5E26\u53C2\u6570\u53EF\u67E5\u770B\u53EF\u7528\u5217\u8868\u3002",
3133
+ fetchFailed: "\u83B7\u53D6 prompt \u5931\u8D25"
3065
3134
  },
3066
3135
  mcpLifecycle: {
3067
3136
  handshake: "\u63E1\u624B\u4E2D\u2026",
@@ -3074,7 +3143,9 @@ var zhCN = {
3074
3143
  disabledDetail: "\u901A\u8FC7 /mcp disable {name}",
3075
3144
  failedSetupHint: "\u2192 \u8FD0\u884C `reasonix setup` \u79FB\u9664\u6B64\u6761\u76EE\uFF0C\u6216\u4FEE\u590D\u5E95\u5C42\u95EE\u9898\uFF08\u7F3A\u5C11 npm \u5305\u3001\u7F51\u7EDC\u7B49\uFF09\u3002",
3076
3145
  failedSetupConfigHint: "\u2192 \u8FD0\u884C `reasonix setup` \u4ECE\u5DF2\u4FDD\u5B58\u914D\u7F6E\u4E2D\u79FB\u9664\u635F\u574F\u7684\u6761\u76EE\u3002",
3077
- abortedHint: "\u5DF2\u4E2D\u65AD MCP \u542F\u52A8 \u2014 \u8DF3\u8FC7 {count} \u4E2A\u670D\u52A1\u5668\u3002\u95EE\u9898\u4FEE\u590D\u540E\u7528 /mcp \u91CD\u65B0\u8FDE\u63A5\u3002"
3146
+ abortedHint: "\u5DF2\u4E2D\u65AD MCP \u542F\u52A8 \u2014 \u8DF3\u8FC7 {count} \u4E2A\u670D\u52A1\u5668\u3002\u95EE\u9898\u4FEE\u590D\u540E\u7528 /mcp \u91CD\u65B0\u8FDE\u63A5\u3002",
3147
+ toolsReady: "\u5DE5\u5177\u5C31\u7EEA",
3148
+ warnLabel: "\u8B66\u544A"
3078
3149
  },
3079
3150
  checkpointPicker: {
3080
3151
  title: "\u6062\u590D\u68C0\u67E5\u70B9 \u2014 {workspace}",
@@ -3120,6 +3191,41 @@ var zhCN = {
3120
3191
  noRecords: "\u65E0\u8BB0\u5F55",
3121
3192
  untracked: "\uFF08\u672A\u8FFD\u8E2A\uFF09",
3122
3193
  churned: "\uFF08\u5DF2\u53D8\u66F4 \xD7{count}\uFF09"
3194
+ },
3195
+ builtinSkills: {
3196
+ explore: "\u5728\u9694\u79BB\u5B50 agent \u4E2D\u63A2\u7D22\u4EE3\u7801\u5E93 \u2014 \u53EA\u8BFB\u5BBD\u7F51\u8C03\u67E5\uFF0C\u8FD4\u56DE\u4E00\u4E2A\u7CBE\u70BC\u7ED3\u8BBA",
3197
+ research: "\u7ED3\u5408\u4EE3\u7801\u9605\u8BFB\u4E0E\u7F51\u7EDC\u641C\u7D22\u8FDB\u884C\u8C03\u7814 \u2014 \u5728\u9694\u79BB\u5B50 agent \u4E2D\u7EFC\u5408\u4FE1\u606F\u5E76\u8FD4\u56DE\u7ED3\u8BBA",
3198
+ review: "\u5BA1\u67E5\u5F53\u524D\u5206\u652F\u53D8\u66F4 \u2014 \u68C0\u67E5\u6B63\u786E\u6027\u3001\u5B89\u5168\u6027\u3001\u7F3A\u5931\u6D4B\u8BD5\u3001\u9690\u85CF\u884C\u4E3A\u53D8\u66F4",
3199
+ securityReview: "\u5B89\u5168\u4E13\u9879\u5BA1\u67E5 \u2014 \u6807\u8BB0\u6CE8\u5165/\u8BA4\u8BC1/\u5BC6\u94A5/\u53CD\u5E8F\u5217\u5316/\u8DEF\u5F84\u7A7F\u8D8A/\u52A0\u5BC6\u95EE\u9898",
3200
+ test: "\u8FD0\u884C\u6D4B\u8BD5\u5957\u4EF6\u5E76\u8BCA\u65AD\u5931\u8D25 \u2014 \u81EA\u52A8\u8BC6\u522B\u6D4B\u8BD5\u6846\u67B6\uFF0C\u4FEE\u590D\u540E\u91CD\u8DD1\u76F4\u81F3\u901A\u8FC7"
3201
+ },
3202
+ shortcutsHelp: {
3203
+ title: "\u5FEB\u6377\u952E",
3204
+ groupInput: "\u8F93\u5165",
3205
+ groupNavigation: "\u5BFC\u822A",
3206
+ groupSession: "\u4F1A\u8BDD",
3207
+ groupSystem: "\u7CFB\u7EDF",
3208
+ descEnter: "\u53D1\u9001\u6D88\u606F",
3209
+ descShiftEnter: "\u6362\u884C",
3210
+ descCtrlU: "\u6E05\u7A7A\u8F93\u5165",
3211
+ descCtrlW: "\u5220\u9664\u5355\u8BCD",
3212
+ descCtrlP: "\u6253\u5F00/\u5173\u95ED\u5FEB\u6377\u952E\u9762\u677F",
3213
+ descCtrlX: "\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00",
3214
+ descArrows: "\u6D4F\u89C8\u8F93\u5165\u5386\u53F2",
3215
+ descPgUpDown: "\u7FFB\u9875",
3216
+ descCtrlL: "\u6E05\u5C4F",
3217
+ descCtrlB: "\u5207\u6362\u4FA7\u8FB9\u680F",
3218
+ descNewSession: "\u65B0\u5EFA\u4F1A\u8BDD",
3219
+ descListSessions: "\u5217\u51FA\u4F1A\u8BDD",
3220
+ descSwitchModel: "\u5207\u6362\u6A21\u578B",
3221
+ descSwitchPreset: "\u5207\u6362\u9884\u8BBE",
3222
+ descSwitchTheme: "\u5207\u6362\u4E3B\u9898",
3223
+ descCtrlC: "\u9000\u51FA",
3224
+ descEsc: "\u505C\u6B62/\u53D6\u6D88",
3225
+ descCtrlR: "\u5207\u6362\u8BE6\u7EC6\u6A21\u5F0F",
3226
+ descCtrlO: "\u5C55\u5F00\u6D41\u5F0F\u8F93\u51FA",
3227
+ descHelp: "\u663E\u793A\u6240\u6709\u547D\u4EE4",
3228
+ descShiftTab: "\u5207\u6362\u7F16\u8F91\u6A21\u5F0F"
3123
3229
  }
3124
3230
  };
3125
3231
 
@@ -3210,4 +3316,4 @@ export {
3210
3316
  tObj,
3211
3317
  t
3212
3318
  };
3213
- //# sourceMappingURL=chunk-YW63N3ZR.js.map
3319
+ //# sourceMappingURL=chunk-PIC5HJRD.js.map