@cnwenf/occ 2.1.334 → 2.1.336

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.
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![npm version](https://img.shields.io/npm/v/@cnwenf/occ.svg)](https://www.npmjs.com/package/@cnwenf/occ)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
7
7
  [![Runtime: Bun](https://img.shields.io/badge/Runtime-Bun-%23000000.svg)](https://bun.sh/)
8
- [![Tracks: Claude Code 2.1.267](https://img.shields.io/badge/Tracks-Claude%20Code%202.1.267-blueviolet.svg)](https://docs.anthropic.com/en/docs/claude-code)
8
+ [![Tracks: Claude Code 2.1.270](https://img.shields.io/badge/Tracks-Claude%20Code%202.1.270-blueviolet.svg)](https://docs.anthropic.com/en/docs/claude-code)
9
9
 
10
10
  [简体中文](./README.zh-CN.md) · **English**
11
11
 
@@ -13,7 +13,7 @@
13
13
 
14
14
  ## What is OCC
15
15
 
16
- **Open C Code (OCC)** is an open-source coding agent. Its capabilities are aligned with [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (currently tracking `2.1.267` — 2.1.266 fully aligned; 2.1.267 partial: settings-side effort cap + E8/E9/E10/E12/E32/E33 landed, E8-runtime-realpath / E11 / E19 / E20 / E34 / prompt-cache-snapshot staged, per OCC-121 + OCC-82 gap reports). The code is fully open, auditable, backdoor-free, and your data stays under your control.
16
+ **Open C Code (OCC)** is an open-source coding agent. Its capabilities are aligned with [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (currently tracking `2.1.270` — fully aligned through official 2.1.270: the 2.1.268/2.1.269 portable subsets landed in OCC-122/OCC-123/OCC-84, and the 2.1.270 changelog change — the read-only git Bash permission regression fix — carries no portable client-side delta, verified independently by two forensic rounds OCC-124 + OCC-85; the OCC-125 strict self-acceptance round against the official 2.1.270 binary then landed two live-discovered gaps — the full `/output-style` port (Gap-125a) and markdown-serializer html/default-token parity (Gap-125b) — per `docs/upstream-version-gap-occ125.md`). The code is fully open, auditable, backdoor-free, and your data stays under your control.
17
17
 
18
18
  If you worry that a closed-source CLI might hide backdoors, or that your code and credentials are uploaded to unauditable services, OCC is for you: all source is open and unobfuscated, the build is reproducible from source, and API credentials are sent only to endpoints you configure.
19
19
 
@@ -62,7 +62,7 @@ Requires a valid Anthropic API Key (or AWS Bedrock / Google Vertex / Azure Found
62
62
  | **Auditability** | Line-by-line reviewable | No |
63
63
  | **Telemetry** | Minimal (analytics stubbed) | Standard |
64
64
  | **Data sovereignty** | Credentials stay on your machine; requests only to endpoints you configure | Anthropic endpoints |
65
- | **Capability parity** | Tracks CC `2.1.267` (partial) | Reference implementation |
65
+ | **Capability parity** | Tracks CC `2.1.270` (fully aligned) | Reference implementation |
66
66
  | **Providers** | Anthropic Direct, Bedrock, Vertex, Azure | Anthropic, Bedrock, Vertex |
67
67
  | **Cost** | Free & open-source (MIT) | Subscription |
68
68
  | **Build** | Reproducible from source | N/A |
@@ -157,7 +157,7 @@ For architecture, entry/bootstrap, tool system, UI layer, and module-status deta
157
157
 
158
158
  ## Status
159
159
 
160
- - Tracks Claude Code **`2.1.267` (partial)** (2.1.266 fully aligned; 2.1.267 partial: settings-side effort cap + E8/E9/E10/E12/E32/E33 landed, E8-runtime-realpath / E11 / E19 / E20 / E34 / prompt-cache-snapshot staged — see `docs/upstream-version-gap-occ121.md` and `docs/upstream-version-gap-occ82.md`).
160
+ - Tracks Claude Code **`2.1.270`** (fully aligned through official 2.1.270 portable subsets through 2.1.269 landed in OCC-122/OCC-123/OCC-84; the 2.1.270 changelog change is the read-only-git Bash permission regression fix, which carries no portable client-side delta, verified independently by OCC-124 + OCC-85 — see `docs/upstream-version-gap-occ124.md` and `docs/upstream-version-gap-occ85.md`. The OCC-125 strict self-acceptance round against the official 2.1.270 binary landed two live-discovered gaps: Gap-125a `/output-style` full port + Gap-125b markdown-serializer html/default-token parity — see `docs/upstream-version-gap-occ125.md`).
161
161
  - Published to npm as [`@cnwenf/occ`](https://www.npmjs.com/package/@cnwenf/occ).
162
162
  - Many modules are intentionally stubbed or feature-flagged off — see "Disabled / stubbed" above.
163
163
 
package/README.zh-CN.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## 这是什么
10
10
 
11
- **Open C Code(OCC)** 是一个开源的编码智能体。能力与 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) 对齐(当前跟踪 `2.1.267`:2.1.266 已完全对齐、2.1.267 部分对齐——settings 侧 effort cap 与 E8/E9/E10/E12/E32/E33 已落地,E8-runtime-realpath / E11 / E19 / E20 / E34 / prompt-cache 快照子系统暂缓,详见 OCC-121 与 OCC-82 台账)。代码全开放、可审计、无暗门,数据由你掌控。
11
+ **Open C Code(OCC)** 是一个开源的编码智能体。能力与 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) 对齐(当前跟踪 `2.1.270`:已完全对齐至官方 2.1.270——2.1.268/2.1.269 的可移植子集已在 OCC-122/OCC-123/OCC-84 落地,2.1.270 唯一变更(Bash 只读 git 权限回归修复)无可移植客户端代码差异,经 OCC-124 与 OCC-85 两轮独立取证核实,详见相应台账)。代码全开放、可审计、无暗门,数据由你掌控。
12
12
 
13
13
  如果你担心闭源 CLI 可能植入后门、担心代码与凭据被上传到不可审计的服务,OCC 就是为你准备的:全部源码开放、无混淆,构建产物可由源码复现,API 凭据只发往你自己配置的端点。
14
14
 
@@ -21,7 +21,7 @@
21
21
 
22
22
  ## 现状
23
23
 
24
- - 跟踪 Claude Code **`2.1.267`**(2.1.266 已完全对齐、2.1.267 部分对齐——settings 侧 effort cap 与 E8/E9/E10/E12/E32/E33 已落地,E8-runtime-realpath / E11 / E19 / E20 / E34 / prompt-cache 快照子系统暂缓)。
24
+ - 跟踪 Claude Code **`2.1.270`**(已完全对齐至官方 2.1.270——2.1.268/2.1.269 的可移植子集已在 OCC-122/OCC-123/OCC-84 落地;2.1.270 唯一变更(Bash 只读 git 权限回归修复)无可移植客户端差异,经 OCC-124 OCC-85 两轮独立取证核实 OCC 不受影响)。
25
25
  - 代码库有约 1300 个不阻塞的 `tsc` 类型错误(大量松散的 `unknown`/`never`/`{}` 类型),**不影响 Bun 运行时执行**。门槛是 Biome lint,不是 `tsc`。
26
26
  - 所有内部 feature flag(`feature(...)`)已被 polyfill 为 `false` —— 内部功能(COORDINATOR_MODE、KAIROS、PROACTIVE 等)全部关闭。
27
27
  - 已发布到 npm:[`@cnwenf/occ`](https://www.npmjs.com/package/@cnwenf/occ)。
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bun
2
- globalThis.MACRO={"VERSION":"2.1.334","BINARY_NAME":"occ","BUILD_TIME":"2026-09-13T18:25:18.145Z","FEEDBACK_CHANNEL":"","ISSUES_EXPLAINER":"","NATIVE_PACKAGE_URL":"","PACKAGE_URL":"@cnwenf/occ","VERSION_CHANGELOG":""};
2
+ globalThis.MACRO={"VERSION":"2.1.336","BINARY_NAME":"occ","BUILD_TIME":"2026-09-15T19:40:03.023Z","FEEDBACK_CHANNEL":"","ISSUES_EXPLAINER":"","NATIVE_PACKAGE_URL":"","PACKAGE_URL":"@cnwenf/occ","VERSION_CHANGELOG":""};
3
3
  // @bun
4
4
  var __create = Object.create;
5
5
  var __getProtoOf = Object.getPrototypeOf;
@@ -381307,6 +381307,16 @@ var init_pathValidation2 = __esm(() => {
381307
381307
  sha256sum: filterOutFlags,
381308
381308
  sha1sum: filterOutFlags,
381309
381309
  md5sum: filterOutFlags,
381310
+ tac: filterOutFlags,
381311
+ rev: filterOutFlags,
381312
+ fold: filterOutFlags,
381313
+ expand: filterOutFlags,
381314
+ unexpand: filterOutFlags,
381315
+ fmt: filterOutFlags,
381316
+ comm: filterOutFlags,
381317
+ cmp: filterOutFlags,
381318
+ pr: filterOutFlags,
381319
+ tsort: filterOutFlags,
381310
381320
  tee: (args) => filterTeeDevicePaths(filterOutFlags(args)),
381311
381321
  tr: (args) => {
381312
381322
  const hasDelete = args.some((a5) => a5 === "-d" || a5 === "--delete" || a5.startsWith("-") && a5.includes("d"));
@@ -381499,7 +381509,17 @@ var init_pathValidation2 = __esm(() => {
381499
381509
  sha256sum: "compute SHA-256 checksums for files in",
381500
381510
  sha1sum: "compute SHA-1 checksums for files in",
381501
381511
  md5sum: "compute MD5 checksums for files in",
381502
- tee: "write to files in"
381512
+ tee: "write to files in",
381513
+ tac: "display files in reverse from",
381514
+ rev: "reverse lines of files from",
381515
+ fold: "wrap lines of files from",
381516
+ expand: "expand tabs in files from",
381517
+ unexpand: "convert spaces to tabs in files from",
381518
+ fmt: "format text from files in",
381519
+ comm: "compare sorted lines from files in",
381520
+ cmp: "compare bytes of files from",
381521
+ pr: "paginate files from",
381522
+ tsort: "topologically sort lines from files in"
381503
381523
  };
381504
381524
  COMMAND_OPERATION_TYPE = {
381505
381525
  cd: "read",
@@ -381538,7 +381558,17 @@ var init_pathValidation2 = __esm(() => {
381538
381558
  sha256sum: "read",
381539
381559
  sha1sum: "read",
381540
381560
  md5sum: "read",
381541
- tee: "write"
381561
+ tee: "write",
381562
+ tac: "read",
381563
+ rev: "read",
381564
+ fold: "read",
381565
+ expand: "read",
381566
+ unexpand: "read",
381567
+ fmt: "read",
381568
+ comm: "read",
381569
+ cmp: "read",
381570
+ pr: "read",
381571
+ tsort: "read"
381542
381572
  };
381543
381573
  COMMAND_VALIDATOR = {
381544
381574
  mv: (args) => !args.some((arg) => arg?.startsWith("-")),
@@ -393802,7 +393832,7 @@ function formatToken(token, theme, listDepth = 0, orderedListNumber = null, pare
393802
393832
  return token.items.map((_2, index2) => formatToken(_2, theme, listDepth, token.ordered ? token.start + index2 : null, token, highlight)).join("");
393803
393833
  }
393804
393834
  case "list_item":
393805
- return (token.tokens ?? []).map((_2) => `${" ".repeat(listDepth)}${formatToken(_2, theme, listDepth + 1, orderedListNumber, token, highlight)}`).join("");
393835
+ return (token.tokens ?? []).filter((_2) => _2.type !== "checkbox").map((_2) => `${" ".repeat(listDepth)}${formatToken(_2, theme, listDepth + 1, orderedListNumber, token, highlight)}`).join("");
393806
393836
  case "paragraph":
393807
393837
  return (token.tokens ?? []).map((_2) => formatToken(_2, theme, 0, null, null, highlight)).join("") + EOL5;
393808
393838
  case "space":
@@ -393814,7 +393844,11 @@ function formatToken(token, theme, listDepth = 0, orderedListNumber = null, pare
393814
393844
  return token.text;
393815
393845
  }
393816
393846
  if (parent?.type === "list_item") {
393817
- return `${orderedListNumber === null ? "-" : getListNumber(listDepth, orderedListNumber) + "."} ${token.tokens ? token.tokens.map((_2) => formatToken(_2, theme, listDepth, orderedListNumber, token, highlight)).join("") : linkifyIssueReferences(token.text)}${EOL5}`;
393847
+ const bullet = orderedListNumber === null ? "-" : getListNumber(listDepth, orderedListNumber) + ".";
393848
+ const taskParent = parent;
393849
+ const firstContent = (taskParent.tokens ?? []).find((_2) => _2.type !== "checkbox");
393850
+ const taskMarker = taskParent.task && firstContent === token ? ` [${taskParent.checked ? "x" : " "}]` : "";
393851
+ return `${bullet}${taskMarker} ${token.tokens ? token.tokens.map((_2) => formatToken(_2, theme, listDepth, orderedListNumber, token, highlight)).join("") : linkifyIssueReferences(token.text)}${EOL5}`;
393818
393852
  }
393819
393853
  return linkifyIssueReferences(token.text);
393820
393854
  case "table": {
@@ -393860,12 +393894,15 @@ function formatToken(token, theme, listDepth = 0, orderedListNumber = null, pare
393860
393894
  }
393861
393895
  case "escape":
393862
393896
  return token.text;
393897
+ case "html":
393898
+ return token.text;
393863
393899
  case "def":
393864
393900
  case "del":
393865
- case "html":
393901
+ return "";
393902
+ case "checkbox":
393866
393903
  return "";
393867
393904
  }
393868
- return "";
393905
+ return token.raw;
393869
393906
  }
393870
393907
  function linkifyIssueReferences(text2) {
393871
393908
  if (!supportsHyperlinks2()) {
@@ -686949,6 +686986,156 @@ var init_onboarding = __esm(() => {
686949
686986
  onboarding_default = { isEnabled: () => false, isHidden: true, name: "stub" };
686950
686987
  });
686951
686988
 
686989
+ // src/commands/output-style/output-style.ts
686990
+ var exports_output_style = {};
686991
+ __export(exports_output_style, {
686992
+ call: () => call34,
686993
+ SAVE_FAILURE_OFF_BOX: () => SAVE_FAILURE_OFF_BOX,
686994
+ CUSTOM_CURRENT_STYLE_PLACEHOLDER: () => CUSTOM_CURRENT_STYLE_PLACEHOLDER
686995
+ });
686996
+ function stripLoneSurrogates(value) {
686997
+ return value.replace(SURROGATE_RE, (match) => match.length === 2 ? match : "");
686998
+ }
686999
+ function stripInvisibleToFixedPoint(value) {
687000
+ let current = value;
687001
+ for (let round2 = 0;round2 < 64; round2++) {
687002
+ const next2 = stripLoneSurrogates(current).replace(INVISIBLE_RE, "");
687003
+ if (next2 === current)
687004
+ return next2;
687005
+ current = next2;
687006
+ }
687007
+ return "";
687008
+ }
687009
+ function truncateUtf16Safe(value, max2) {
687010
+ if (max2 <= 0)
687011
+ return "";
687012
+ if (value.length <= max2)
687013
+ return value;
687014
+ const sliced = value.slice(0, max2);
687015
+ const lastUnit = sliced.charCodeAt(max2 - 1);
687016
+ const trimmed = lastUnit >= 55296 && lastUnit <= 56319 ? sliced.slice(0, -1) : sliced;
687017
+ return Buffer.from(trimmed, "utf16le").toString("utf16le");
687018
+ }
687019
+ function displaySanitizer(value) {
687020
+ if (typeof value !== "string")
687021
+ return "";
687022
+ const pre = value.length > 4096 ? value.slice(0, 4096) : value;
687023
+ return truncateUtf16Safe(stripInvisibleToFixedPoint(pre), 1024);
687024
+ }
687025
+ function isBuiltinStyle(style) {
687026
+ return style === null || style?.source === "built-in";
687027
+ }
687028
+ function isRelayedContext(context8) {
687029
+ const relayed = context8;
687030
+ return relayed.dispatchedOverBridge === true || relayed.submissionVerifiedSlackHumanTurn === true;
687031
+ }
687032
+ function telemetryStyleName(style) {
687033
+ return Object.hasOwn(OUTPUT_STYLE_CONFIG, style) ? style : "custom";
687034
+ }
687035
+ function currentOutputStyleName() {
687036
+ return getSettings_DEPRECATED()?.outputStyle || DEFAULT_OUTPUT_STYLE_NAME;
687037
+ }
687038
+ var SURROGATE_RE, INVISIBLE_RE, CUSTOM_CURRENT_STYLE_PLACEHOLDER = "a custom style", SAVE_FAILURE_OFF_BOX = "Couldn't save the output style (detail withheld on this connection).", OFF_BOX_LIST_NOTE = `
687039
+ Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.`, LOCAL_SETTINGS_NOT_LOADED = "Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.", HELP_ARGS, LIST_ARGS, call34 = async (args, context8) => {
687040
+ const allStyles = await getAllOutputStyles(getCwd());
687041
+ const relayed = isRelayedContext(context8);
687042
+ const styleNames = Object.keys(allStyles);
687043
+ const selectable = relayed ? styleNames.filter((name3) => isBuiltinStyle(allStyles[name3])) : styleNames;
687044
+ const current = currentOutputStyleName();
687045
+ const offBoxNote = relayed ? OFF_BOX_LIST_NOTE : "";
687046
+ const trimmed = args.trim();
687047
+ const lowered = trimmed.toLowerCase();
687048
+ const target = trimmed ? selectable.find((name3) => name3.toLowerCase() === lowered) : undefined;
687049
+ if (target === undefined) {
687050
+ if (trimmed && !LIST_ARGS.includes(lowered) && !HELP_ARGS.includes(lowered)) {
687051
+ return {
687052
+ type: "text",
687053
+ value: `Unknown output style "${displaySanitizer(trimmed)}". Available styles: ${selectable.map((name3) => displaySanitizer(name3)).join(", ")}${offBoxNote}`
687054
+ };
687055
+ }
687056
+ const lines2 = selectable.map((name3) => {
687057
+ const description = allStyles[name3]?.description;
687058
+ const currentMark = name3 === current ? " (current)" : "";
687059
+ const displayName = displaySanitizer(name3);
687060
+ return description ? `- ${displayName}${currentMark}: ${displaySanitizer(description)}` : `- ${displayName}${currentMark}`;
687061
+ });
687062
+ const currentLabel = relayed && !isBuiltinStyle(allStyles[current]) ? CUSTOM_CURRENT_STYLE_PLACEHOLDER : displaySanitizer(current);
687063
+ return {
687064
+ type: "text",
687065
+ value: `Output style: ${currentLabel}
687066
+
687067
+ Available styles:
687068
+ ${lines2.join(`
687069
+ `)}
687070
+
687071
+ Usage: /output-style <style>${offBoxNote}`
687072
+ };
687073
+ }
687074
+ if (target === current) {
687075
+ return {
687076
+ type: "text",
687077
+ value: `Output style is already ${displaySanitizer(target)}`
687078
+ };
687079
+ }
687080
+ if (!isSettingSourceEnabled("localSettings")) {
687081
+ return { type: "text", value: LOCAL_SETTINGS_NOT_LOADED };
687082
+ }
687083
+ const result = updateSettingsForSource("localSettings", {
687084
+ outputStyle: target
687085
+ });
687086
+ if (result.error) {
687087
+ return {
687088
+ type: "text",
687089
+ value: relayed ? SAVE_FAILURE_OFF_BOX : `Could not save output style: ${result.error.message}`
687090
+ };
687091
+ }
687092
+ logEvent2("tengu_output_style_changed", {
687093
+ style: telemetryStyleName(target),
687094
+ source: "slash_command",
687095
+ settings_source: "localSettings"
687096
+ });
687097
+ return { type: "text", value: `Output style set to ${displaySanitizer(target)}` };
687098
+ };
687099
+ var init_output_style = __esm(() => {
687100
+ init_outputStyles();
687101
+ init_analytics();
687102
+ init_cwd2();
687103
+ init_constants2();
687104
+ init_settings2();
687105
+ SURROGATE_RE = /[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF]|[\uDC00-\uDFFF]/g;
687106
+ INVISIBLE_RE = /[\p{Cc}\p{Cf}\p{Zl}\p{Zp}\p{Default_Ignorable_Code_Point}\u2800]|(?!\u0020)\p{Zs}/gu;
687107
+ HELP_ARGS = ["help", "-h", "--help"];
687108
+ LIST_ARGS = [
687109
+ "list",
687110
+ "show",
687111
+ "display",
687112
+ "current",
687113
+ "view",
687114
+ "get",
687115
+ "check",
687116
+ "describe",
687117
+ "print",
687118
+ "version",
687119
+ "about",
687120
+ "status",
687121
+ "?"
687122
+ ];
687123
+ });
687124
+
687125
+ // src/commands/output-style/index.ts
687126
+ var outputStyle, output_style_default;
687127
+ var init_output_style2 = __esm(() => {
687128
+ outputStyle = {
687129
+ type: "local",
687130
+ name: "output-style",
687131
+ supportsNonInteractive: true,
687132
+ description: "List output styles or switch to one",
687133
+ argumentHint: "[style]",
687134
+ load: () => Promise.resolve().then(() => (init_output_style(), exports_output_style))
687135
+ };
687136
+ output_style_default = outputStyle;
687137
+ });
687138
+
686952
687139
  // src/commands/createMovedToPluginCommand.ts
686953
687140
  function createMovedToPluginCommand({
686954
687141
  name: name3,
@@ -687229,7 +687416,7 @@ var init_releaseNotes = __esm(() => {
687229
687416
  // src/commands/release-notes/release-notes.tsx
687230
687417
  var exports_release_notes = {};
687231
687418
  __export(exports_release_notes, {
687232
- call: () => call34
687419
+ call: () => call35
687233
687420
  });
687234
687421
  function formatReleaseNoteLines(notes) {
687235
687422
  return notes.flatMap(([version5, versionNotes]) => [
@@ -687270,7 +687457,7 @@ function ReleaseNotesPanel({
687270
687457
  ]
687271
687458
  });
687272
687459
  }
687273
- var jsx_runtime257, call34 = async (onDone) => {
687460
+ var jsx_runtime257, call35 = async (onDone) => {
687274
687461
  let notes = [];
687275
687462
  try {
687276
687463
  const timeoutPromise = new Promise((_4, reject2) => {
@@ -687778,9 +687965,9 @@ var init_createSession = __esm(() => {
687778
687965
  // src/commands/rename/rename.ts
687779
687966
  var exports_rename = {};
687780
687967
  __export(exports_rename, {
687781
- call: () => call35
687968
+ call: () => call36
687782
687969
  });
687783
- async function call35(onDone, context8, args) {
687970
+ async function call36(onDone, context8, args) {
687784
687971
  if (isTeammate()) {
687785
687972
  onDone("Cannot rename: This session is a swarm teammate. Teammate names are set by the team leader.", { display: "system" });
687786
687973
  return null;
@@ -696772,7 +696959,7 @@ __export(exports_resume, {
696772
696959
  isStaleLargeSession: () => isStaleLargeSession,
696773
696960
  findSessionsByPrUrl: () => findSessionsByPrUrl,
696774
696961
  filterResumableSessions: () => filterResumableSessions,
696775
- call: () => call36
696962
+ call: () => call37
696776
696963
  });
696777
696964
  function resumeHelpMessage(result) {
696778
696965
  switch (result.resultType) {
@@ -697047,7 +697234,7 @@ function ResumeCommand({
697047
697234
  function filterResumableSessions(logs3, currentSessionId) {
697048
697235
  return logs3.filter((l4) => !l4.isSidechain && getSessionIdFromLog(l4) !== currentSessionId);
697049
697236
  }
697050
- var import_compiler_runtime210, React93, jsx_runtime284, STALE_SESSION_AGE_DAYS = 7, LARGE_SESSION_MESSAGE_THRESHOLD = 50, STALE_SESSION_AGE_MS, PR_URL_PATTERNS, PR_URL_MARKERS, call36 = async (onDone, context8, args) => {
697237
+ var import_compiler_runtime210, React93, jsx_runtime284, STALE_SESSION_AGE_DAYS = 7, LARGE_SESSION_MESSAGE_THRESHOLD = 50, STALE_SESSION_AGE_MS, PR_URL_PATTERNS, PR_URL_MARKERS, call37 = async (onDone, context8, args) => {
697051
697238
  const onResume = async (sessionId, log3, entrypoint) => {
697052
697239
  try {
697053
697240
  await context8.resume?.(sessionId, log3, entrypoint);
@@ -697666,7 +697853,7 @@ var init_UltrareviewOverageDialog = __esm(() => {
697666
697853
  // src/commands/review/ultrareviewCommand.tsx
697667
697854
  var exports_ultrareviewCommand = {};
697668
697855
  __export(exports_ultrareviewCommand, {
697669
- call: () => call37
697856
+ call: () => call38
697670
697857
  });
697671
697858
  function contentBlocksToString(blocks) {
697672
697859
  return blocks.map((b6) => b6.type === "text" ? b6.text : "").filter(Boolean).join(`
@@ -697686,7 +697873,7 @@ async function launchAndDone(args, context8, onDone, billingNote, signal) {
697686
697873
  });
697687
697874
  }
697688
697875
  }
697689
- var jsx_runtime286, call37 = async (onDone, context8, args) => {
697876
+ var jsx_runtime286, call38 = async (onDone, context8, args) => {
697690
697877
  const gate = await checkOverageGate();
697691
697878
  if (gate.kind === "not-enabled") {
697692
697879
  onDone("Free ultrareviews used. Enable Extra Usage at https://claude.ai/settings/billing to continue.", {
@@ -697771,7 +697958,7 @@ var init_review = __esm(() => {
697771
697958
  // src/commands/session/session.tsx
697772
697959
  var exports_session = {};
697773
697960
  __export(exports_session, {
697774
- call: () => call38
697961
+ call: () => call39
697775
697962
  });
697776
697963
  function SessionInfo(t0) {
697777
697964
  const $4 = import_compiler_runtime212.c(19);
@@ -697944,7 +698131,7 @@ function _temp251(e4) {
697944
698131
  function _temp136(s4) {
697945
698132
  return s4.remoteSessionUrl;
697946
698133
  }
697947
- var import_compiler_runtime212, import_react165, jsx_runtime287, call38 = async (onDone) => {
698134
+ var import_compiler_runtime212, import_react165, jsx_runtime287, call39 = async (onDone) => {
697948
698135
  return /* @__PURE__ */ jsx_runtime287.jsx(SessionInfo, {
697949
698136
  onDone
697950
698137
  });
@@ -698222,9 +698409,9 @@ var init_SkillsMenu = __esm(() => {
698222
698409
  // src/commands/skills/skills.tsx
698223
698410
  var exports_skills2 = {};
698224
698411
  __export(exports_skills2, {
698225
- call: () => call39
698412
+ call: () => call40
698226
698413
  });
698227
- async function call39(onDone, context8) {
698414
+ async function call40(onDone, context8) {
698228
698415
  return /* @__PURE__ */ jsx_runtime289.jsx(SkillsMenu, {
698229
698416
  onExit: onDone,
698230
698417
  commands: context8.options.commands
@@ -698251,9 +698438,9 @@ var init_skills3 = __esm(() => {
698251
698438
  // src/commands/status/status.tsx
698252
698439
  var exports_status = {};
698253
698440
  __export(exports_status, {
698254
- call: () => call40
698441
+ call: () => call41
698255
698442
  });
698256
- async function call40(onDone, context8) {
698443
+ async function call41(onDone, context8) {
698257
698444
  return /* @__PURE__ */ jsx_runtime290.jsx(Settings, {
698258
698445
  onClose: onDone,
698259
698446
  context: context8,
@@ -698889,7 +699076,7 @@ ${reasons}`,
698889
699076
  } : prev);
698890
699077
  }
698891
699078
  }
698892
- var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://code.claude.com/docs/en/claude-code-on-the-web", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call41 = async (onDone, context8, args) => {
699079
+ var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://code.claude.com/docs/en/claude-code-on-the-web", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call42 = async (onDone, context8, args) => {
698893
699080
  const blurb = args.trim();
698894
699081
  if (!blurb) {
698895
699082
  const msg = await launchUltraplan2({
@@ -698953,7 +699140,7 @@ var init_ultraplan = __esm(() => {
698953
699140
  argumentHint: "<prompt>",
698954
699141
  isEnabled: () => false,
698955
699142
  load: () => Promise.resolve({
698956
- call: call41
699143
+ call: call42
698957
699144
  })
698958
699145
  };
698959
699146
  });
@@ -704127,9 +704314,9 @@ var init_BackgroundTasksDialog = __esm(() => {
704127
704314
  // src/commands/tasks/tasks.tsx
704128
704315
  var exports_tasks = {};
704129
704316
  __export(exports_tasks, {
704130
- call: () => call42
704317
+ call: () => call43
704131
704318
  });
704132
- async function call42(onDone, context8) {
704319
+ async function call43(onDone, context8) {
704133
704320
  return /* @__PURE__ */ jsx_runtime303.jsx(BackgroundTasksDialog, {
704134
704321
  toolUseContext: context8,
704135
704322
  onDone
@@ -704163,9 +704350,9 @@ var init_teleport2 = __esm(() => {
704163
704350
  // src/commands/autocompact/autocompact.tsx
704164
704351
  var exports_autocompact = {};
704165
704352
  __export(exports_autocompact, {
704166
- call: () => call43
704353
+ call: () => call44
704167
704354
  });
704168
- var jsx_runtime304, call43 = async (onDone, context8) => {
704355
+ var jsx_runtime304, call44 = async (onDone, context8) => {
704169
704356
  return /* @__PURE__ */ jsx_runtime304.jsx(Settings, {
704170
704357
  onClose: onDone,
704171
704358
  context: context8,
@@ -704195,7 +704382,7 @@ var init_autocompact2 = __esm(() => {
704195
704382
  // src/commands/autocompact/autocompact-noninteractive.ts
704196
704383
  var exports_autocompact_noninteractive = {};
704197
704384
  __export(exports_autocompact_noninteractive, {
704198
- call: () => call44,
704385
+ call: () => call45,
704199
704386
  autocompactNonInteractive: () => autocompactNonInteractive
704200
704387
  });
704201
704388
  function resolveWindow(model) {
@@ -704267,7 +704454,7 @@ async function setWindow(raw, model) {
704267
704454
  }
704268
704455
  return `Auto-compact window set to ${formatTokens(parsed)} tokens${suffix2}`;
704269
704456
  }
704270
- async function call44(args, context8) {
704457
+ async function call45(args, context8) {
704271
704458
  const raw = (args ?? "").trim();
704272
704459
  const model = context8.options.mainLoopModel;
704273
704460
  if (!raw) {
@@ -704500,9 +704687,9 @@ var init_CdDirectoryPicker = __esm(() => {
704500
704687
  // src/commands/cd/cd.tsx
704501
704688
  var exports_cd = {};
704502
704689
  __export(exports_cd, {
704503
- call: () => call45
704690
+ call: () => call46
704504
704691
  });
704505
- var jsx_runtime306, call45 = async (onDone, _context, args) => {
704692
+ var jsx_runtime306, call46 = async (onDone, _context, args) => {
704506
704693
  const trimmed = (args ?? "").trim();
704507
704694
  if (!trimmed) {
704508
704695
  return /* @__PURE__ */ jsx_runtime306.jsx(CdDirectoryPicker, {
@@ -704542,7 +704729,7 @@ __export(exports_focus, {
704542
704729
  setFocusViewEnabled: () => setFocusViewEnabled,
704543
704730
  isFullscreenActive: () => isFullscreenActive2,
704544
704731
  isFocusViewEnabled: () => isFocusViewEnabled,
704545
- call: () => call46
704732
+ call: () => call47
704546
704733
  });
704547
704734
  function isFocusViewEnabled() {
704548
704735
  return focusViewEnabled;
@@ -704558,7 +704745,7 @@ function isFullscreenActive2() {
704558
704745
  return false;
704559
704746
  return isFullscreenEnvEnabled();
704560
704747
  }
704561
- var focusViewEnabled = false, NEEDS_FULLSCREEN, call46 = async (onDone, _context, _args) => {
704748
+ var focusViewEnabled = false, NEEDS_FULLSCREEN, call47 = async (onDone, _context, _args) => {
704562
704749
  if (!isFullscreenActive2()) {
704563
704750
  onDone(NEEDS_FULLSCREEN, { display: "system" });
704564
704751
  return null;
@@ -704594,9 +704781,9 @@ var init_focus3 = __esm(() => {
704594
704781
  // src/commands/powerup/powerup.ts
704595
704782
  var exports_powerup = {};
704596
704783
  __export(exports_powerup, {
704597
- call: () => call47
704784
+ call: () => call48
704598
704785
  });
704599
- var LESSONS, call47 = async (onDone, _context, _args) => {
704786
+ var LESSONS, call48 = async (onDone, _context, _args) => {
704600
704787
  logEvent2("powerup_discovery_shown");
704601
704788
  const unlocked = new Set;
704602
704789
  let lines2 = `Powerup \u2014 discover Claude Code in 5 minutes
@@ -704719,9 +704906,9 @@ var init_awaySummary = __esm(() => {
704719
704906
  // src/commands/recap/recap.ts
704720
704907
  var exports_recap = {};
704721
704908
  __export(exports_recap, {
704722
- call: () => call48
704909
+ call: () => call49
704723
704910
  });
704724
- var NOTHING_TO_RECAP = "Nothing to recap yet \u2014 send a message first.", call48 = async (_args, context8) => {
704911
+ var NOTHING_TO_RECAP = "Nothing to recap yet \u2014 send a message first.", call49 = async (_args, context8) => {
704725
704912
  const messages = context8.messages ?? [];
704726
704913
  if (messages.length === 0) {
704727
704914
  return { type: "text", value: NOTHING_TO_RECAP };
@@ -704753,9 +704940,9 @@ var init_recap2 = __esm(() => {
704753
704940
  // src/commands/reload-skills/reload-skills.ts
704754
704941
  var exports_reload_skills = {};
704755
704942
  __export(exports_reload_skills, {
704756
- call: () => call49
704943
+ call: () => call50
704757
704944
  });
704758
- var call49 = async () => {
704945
+ var call50 = async () => {
704759
704946
  const cwd2 = getProjectRoot();
704760
704947
  clearCommandsCache();
704761
704948
  const commands7 = await getCommands(cwd2);
@@ -704784,9 +704971,9 @@ var init_reload_skills2 = __esm(() => {
704784
704971
  // src/commands/scroll-speed/scroll-speed.tsx
704785
704972
  var exports_scroll_speed = {};
704786
704973
  __export(exports_scroll_speed, {
704787
- call: () => call50
704974
+ call: () => call51
704788
704975
  });
704789
- var jsx_runtime307, call50 = async (onDone, context8) => {
704976
+ var jsx_runtime307, call51 = async (onDone, context8) => {
704790
704977
  return /* @__PURE__ */ jsx_runtime307.jsx(Settings, {
704791
704978
  onClose: onDone,
704792
704979
  context: context8,
@@ -704815,7 +705002,7 @@ var init_scroll_speed2 = __esm(() => {
704815
705002
  // src/commands/tui/tui.ts
704816
705003
  var exports_tui = {};
704817
705004
  __export(exports_tui, {
704818
- call: () => call51
705005
+ call: () => call52
704819
705006
  });
704820
705007
  function getCurrentRenderer() {
704821
705008
  const setting = getSettings_DEPRECATED().tui;
@@ -704825,7 +705012,7 @@ function getCurrentRenderer() {
704825
705012
  return "default";
704826
705013
  return isFullscreenEnvEnabled() ? "fullscreen" : "default";
704827
705014
  }
704828
- var RENDERERS, call51 = async (onDone, _context, args) => {
705015
+ var RENDERERS, call52 = async (onDone, _context, args) => {
704829
705016
  if (isScreenReaderEnabled()) {
704830
705017
  onDone("Screen-reader mode always uses the classic renderer, so the tui setting has no effect while it is active.", { display: "system" });
704831
705018
  return null;
@@ -705140,9 +705327,9 @@ var init_terminalSetup2 = __esm(() => {
705140
705327
  // src/commands/usage/usage.tsx
705141
705328
  var exports_usage = {};
705142
705329
  __export(exports_usage, {
705143
- call: () => call52
705330
+ call: () => call53
705144
705331
  });
705145
- var jsx_runtime308, call52 = async (onDone, context8) => {
705332
+ var jsx_runtime308, call53 = async (onDone, context8) => {
705146
705333
  return /* @__PURE__ */ jsx_runtime308.jsx(Settings, {
705147
705334
  onClose: onDone,
705148
705335
  context: context8,
@@ -705157,9 +705344,9 @@ var init_usage3 = __esm(() => {
705157
705344
  // src/commands/usage/usage-noninteractive.ts
705158
705345
  var exports_usage_noninteractive = {};
705159
705346
  __export(exports_usage_noninteractive, {
705160
- call: () => call53
705347
+ call: () => call54
705161
705348
  });
705162
- var call53 = async () => {
705349
+ var call54 = async () => {
705163
705350
  const parts = [];
705164
705351
  parts.push(formatTotalCost());
705165
705352
  if (isClaudeAISubscriber()) {
@@ -705211,7 +705398,7 @@ var init_usage4 = __esm(() => {
705211
705398
  // src/commands/theme/theme.tsx
705212
705399
  var exports_theme = {};
705213
705400
  __export(exports_theme, {
705214
- call: () => call54
705401
+ call: () => call55
705215
705402
  });
705216
705403
  function ThemePickerCommand(t0) {
705217
705404
  const $4 = import_compiler_runtime222.c(8);
@@ -705263,7 +705450,7 @@ function ThemePickerCommand(t0) {
705263
705450
  }
705264
705451
  return t32;
705265
705452
  }
705266
- var import_compiler_runtime222, jsx_runtime309, call54 = async (onDone, _context) => {
705453
+ var import_compiler_runtime222, jsx_runtime309, call55 = async (onDone, _context) => {
705267
705454
  return /* @__PURE__ */ jsx_runtime309.jsx(ThemePickerCommand, {
705268
705455
  onDone
705269
705456
  });
@@ -705293,7 +705480,7 @@ var init_theme4 = __esm(() => {
705293
705480
  var exports_thinkback = {};
705294
705481
  __export(exports_thinkback, {
705295
705482
  playAnimation: () => playAnimation,
705296
- call: () => call55
705483
+ call: () => call56
705297
705484
  });
705298
705485
  import { readFile as readFile56 } from "fs/promises";
705299
705486
  import { join as join153 } from "path";
@@ -705830,7 +706017,7 @@ function ThinkbackFlow(t0) {
705830
706017
  }
705831
706018
  return t8;
705832
706019
  }
705833
- async function call55(onDone) {
706020
+ async function call56(onDone) {
705834
706021
  return /* @__PURE__ */ jsx_runtime310.jsx(ThinkbackFlow, {
705835
706022
  onDone
705836
706023
  });
@@ -705878,14 +706065,14 @@ var init_thinkback2 = __esm(() => {
705878
706065
  // src/commands/thinkback-play/thinkback-play.ts
705879
706066
  var exports_thinkback_play = {};
705880
706067
  __export(exports_thinkback_play, {
705881
- call: () => call56
706068
+ call: () => call57
705882
706069
  });
705883
706070
  import { join as join154 } from "path";
705884
706071
  function getPluginId2() {
705885
706072
  const marketplaceName = process.env.USER_TYPE === "ant" ? INTERNAL_MARKETPLACE_NAME : OFFICIAL_MARKETPLACE_NAME;
705886
706073
  return `thinkback@${marketplaceName}`;
705887
706074
  }
705888
- async function call56() {
706075
+ async function call57() {
705889
706076
  const v2Data = loadInstalledPluginsV2();
705890
706077
  const pluginId = getPluginId2();
705891
706078
  const installations = v2Data.plugins[pluginId];
@@ -708372,9 +708559,9 @@ var init_PermissionRuleList = __esm(() => {
708372
708559
  // src/commands/permissions/permissions.tsx
708373
708560
  var exports_permissions2 = {};
708374
708561
  __export(exports_permissions2, {
708375
- call: () => call57
708562
+ call: () => call58
708376
708563
  });
708377
- var jsx_runtime318, call57 = async (onDone, context8) => {
708564
+ var jsx_runtime318, call58 = async (onDone, context8) => {
708378
708565
  return /* @__PURE__ */ jsx_runtime318.jsx(PermissionRuleList, {
708379
708566
  onExit: onDone,
708380
708567
  onRetryDenials: (commands7) => {
@@ -708404,7 +708591,7 @@ var init_permissions4 = __esm(() => {
708404
708591
  // src/commands/plan/plan.tsx
708405
708592
  var exports_plan = {};
708406
708593
  __export(exports_plan, {
708407
- call: () => call58
708594
+ call: () => call59
708408
708595
  });
708409
708596
  function PlanDisplay(t0) {
708410
708597
  const $4 = import_compiler_runtime231.c(11);
@@ -708492,7 +708679,7 @@ function PlanDisplay(t0) {
708492
708679
  }
708493
708680
  return t5;
708494
708681
  }
708495
- async function call58(onDone, context8, args) {
708682
+ async function call59(onDone, context8, args) {
708496
708683
  const {
708497
708684
  getAppState,
708498
708685
  setAppState
@@ -708638,7 +708825,7 @@ var init_FastIcon = __esm(() => {
708638
708825
  // src/commands/fast/fast.tsx
708639
708826
  var exports_fast = {};
708640
708827
  __export(exports_fast, {
708641
- call: () => call59,
708828
+ call: () => call60,
708642
708829
  FastModePicker: () => FastModePicker
708643
708830
  });
708644
708831
  function applyFastMode(enable2, setAppState) {
@@ -708959,7 +709146,7 @@ async function handleFastModeShortcut(enable2, getAppState, setAppState) {
708959
709146
  return `Fast mode OFF`;
708960
709147
  }
708961
709148
  }
708962
- async function call59(onDone, context8, args) {
709149
+ async function call60(onDone, context8, args) {
708963
709150
  if (!isFastModeEnabled()) {
708964
709151
  return null;
708965
709152
  }
@@ -709278,9 +709465,9 @@ var init_Passes = __esm(() => {
709278
709465
  // src/commands/passes/passes.tsx
709279
709466
  var exports_passes = {};
709280
709467
  __export(exports_passes, {
709281
- call: () => call60
709468
+ call: () => call61
709282
709469
  });
709283
- async function call60(onDone) {
709470
+ async function call61(onDone) {
709284
709471
  const config8 = getGlobalConfig();
709285
709472
  const isFirstVisit = !config8.hasVisitedPasses;
709286
709473
  if (isFirstVisit) {
@@ -710052,9 +710239,9 @@ var init_Grove = __esm(() => {
710052
710239
  // src/commands/privacy-settings/privacy-settings.tsx
710053
710240
  var exports_privacy_settings = {};
710054
710241
  __export(exports_privacy_settings, {
710055
- call: () => call61
710242
+ call: () => call62
710056
710243
  });
710057
- async function call61(onDone) {
710244
+ async function call62(onDone) {
710058
710245
  const qualified = await isQualifiedForGrove();
710059
710246
  if (!qualified) {
710060
710247
  onDone(FALLBACK_MESSAGE);
@@ -710166,6 +710353,9 @@ function groupHooksByEventAndMatcher(appState, toolNames) {
710166
710353
  MessageDisplay: {},
710167
710354
  DirectoryAdded: {}
710168
710355
  };
710356
+ for (const event of Object.keys(grouped)) {
710357
+ grouped[event] = Object.create(null);
710358
+ }
710169
710359
  const metadata = getHookEventMetadata(toolNames);
710170
710360
  getAllHooks(appState).forEach((hook) => {
710171
710361
  const eventGroup = grouped[hook.event];
@@ -711940,9 +712130,9 @@ var init_HooksConfigMenu = __esm(() => {
711940
712130
  // src/commands/hooks/hooks.tsx
711941
712131
  var exports_hooks = {};
711942
712132
  __export(exports_hooks, {
711943
- call: () => call62
712133
+ call: () => call63
711944
712134
  });
711945
- var jsx_runtime331, call62 = async (onDone, context8) => {
712135
+ var jsx_runtime331, call63 = async (onDone, context8) => {
711946
712136
  logEvent2("tengu_hooks_command", {});
711947
712137
  const appState = context8.getAppState();
711948
712138
  const permissionContext = appState.toolPermissionContext;
@@ -711975,10 +712165,10 @@ var init_hooks3 = __esm(() => {
711975
712165
  // src/commands/files/files.ts
711976
712166
  var exports_files2 = {};
711977
712167
  __export(exports_files2, {
711978
- call: () => call63
712168
+ call: () => call64
711979
712169
  });
711980
712170
  import { relative as relative30 } from "path";
711981
- async function call63(_args, context8) {
712171
+ async function call64(_args, context8) {
711982
712172
  const files2 = context8.readFileState ? cacheKeys(context8.readFileState) : [];
711983
712173
  if (files2.length === 0) {
711984
712174
  return { type: "text", value: "No files in context" };
@@ -712011,7 +712201,7 @@ var init_files5 = __esm(() => {
712011
712201
  var exports_branch = {};
712012
712202
  __export(exports_branch, {
712013
712203
  deriveFirstPrompt: () => deriveFirstPrompt,
712014
- call: () => call64
712204
+ call: () => call65
712015
712205
  });
712016
712206
  import { randomUUID as randomUUID37 } from "crypto";
712017
712207
  import { mkdir as mkdir46, readFile as readFile57, writeFile as writeFile50 } from "fs/promises";
@@ -712131,7 +712321,7 @@ async function getUniqueForkName(baseName) {
712131
712321
  }
712132
712322
  return `${baseName} (Branch ${nextNumber})`;
712133
712323
  }
712134
- async function call64(onDone, context8, args) {
712324
+ async function call65(onDone, context8, args) {
712135
712325
  const customTitle = args?.trim() || undefined;
712136
712326
  const originalSessionId = getSessionId();
712137
712327
  try {
@@ -712210,9 +712400,9 @@ var init_branch2 = __esm(() => {
712210
712400
  // src/commands/agents/agents.ts
712211
712401
  var exports_agents = {};
712212
712402
  __export(exports_agents, {
712213
- call: () => call65
712403
+ call: () => call66
712214
712404
  });
712215
- var call65 = async () => ({
712405
+ var call66 = async () => ({
712216
712406
  type: "text",
712217
712407
  value: `The /agents wizard has been removed.
712218
712408
  Ask Claude to create or update subagents for you (e.g. "create a code-reviewer subagent that ..."),
@@ -712238,9 +712428,9 @@ var init_agents = __esm(() => {
712238
712428
  // src/commands/plugin/plugin.tsx
712239
712429
  var exports_plugin = {};
712240
712430
  __export(exports_plugin, {
712241
- call: () => call66
712431
+ call: () => call67
712242
712432
  });
712243
- async function call66(onDone, _context, args) {
712433
+ async function call67(onDone, _context, args) {
712244
712434
  return /* @__PURE__ */ jsx_runtime332.jsx(PluginSettings, {
712245
712435
  onComplete: onDone,
712246
712436
  args
@@ -712787,12 +712977,12 @@ var init_refresh = __esm(() => {
712787
712977
  // src/commands/reload-plugins/reload-plugins.ts
712788
712978
  var exports_reload_plugins = {};
712789
712979
  __export(exports_reload_plugins, {
712790
- call: () => call67
712980
+ call: () => call68
712791
712981
  });
712792
712982
  function n5(count4, noun) {
712793
712983
  return `${count4} ${plural(count4, noun)}`;
712794
712984
  }
712795
- var call67 = async (_args, context8) => {
712985
+ var call68 = async (_args, context8) => {
712796
712986
  if (feature("DOWNLOAD_USER_SETTINGS") && (isEnvTruthy(process.env.CLAUDE_CODE_REMOTE) || getIsRemoteMode())) {
712797
712987
  const applied = await redownloadUserSettings();
712798
712988
  if (applied) {
@@ -712850,9 +713040,9 @@ var init_resumeBeforeClear = __esm(() => {
712850
713040
  // src/commands/rewind/rewind.ts
712851
713041
  var exports_rewind = {};
712852
713042
  __export(exports_rewind, {
712853
- call: () => call68
713043
+ call: () => call69
712854
713044
  });
712855
- async function call68(_args, context8) {
713045
+ async function call69(_args, context8) {
712856
713046
  if (context8.openMessageSelector) {
712857
713047
  context8.openMessageSelector();
712858
713048
  }
@@ -713040,9 +713230,9 @@ var init_heapDumpService = __esm(() => {
713040
713230
  // src/commands/heapdump/heapdump.ts
713041
713231
  var exports_heapdump = {};
713042
713232
  __export(exports_heapdump, {
713043
- call: () => call69
713233
+ call: () => call70
713044
713234
  });
713045
- async function call69() {
713235
+ async function call70() {
713046
713236
  const result = await performHeapDump();
713047
713237
  if (!result.success) {
713048
713238
  return {
@@ -713413,7 +713603,7 @@ var USAGE = `/bridge-kick <subcommand>
713413
713603
  reconnect-session fail next POST /bridge/reconnect fails
713414
713604
  heartbeat <status> next heartbeat throws BridgeFatalError(status)
713415
713605
  reconnect call reconnectEnvironmentWithSession directly
713416
- status print bridge state`, call70 = async (args) => {
713606
+ status print bridge state`, call71 = async (args) => {
713417
713607
  const h5 = getBridgeDebugHandle();
713418
713608
  if (!h5) {
713419
713609
  return {
@@ -713546,13 +713736,13 @@ var init_bridge_kick = __esm(() => {
713546
713736
  description: "Inject bridge failure states for manual recovery testing",
713547
713737
  isEnabled: () => process.env.USER_TYPE === "ant",
713548
713738
  supportsNonInteractive: false,
713549
- load: () => Promise.resolve({ call: call70 })
713739
+ load: () => Promise.resolve({ call: call71 })
713550
713740
  };
713551
713741
  bridge_kick_default = bridgeKick;
713552
713742
  });
713553
713743
 
713554
713744
  // src/commands/version.ts
713555
- var call71 = async () => {
713745
+ var call72 = async () => {
713556
713746
  return {
713557
713747
  type: "text",
713558
713748
  value: MACRO.BUILD_TIME ? `${MACRO.VERSION} (built ${MACRO.BUILD_TIME})` : MACRO.VERSION
@@ -713565,7 +713755,7 @@ var init_version = __esm(() => {
713565
713755
  description: "Print the version this session is running (not what autoupdate downloaded)",
713566
713756
  isEnabled: () => process.env.USER_TYPE === "ant",
713567
713757
  supportsNonInteractive: true,
713568
- load: () => Promise.resolve({ call: call71 })
713758
+ load: () => Promise.resolve({ call: call72 })
713569
713759
  };
713570
713760
  version_default = version5;
713571
713761
  });
@@ -714725,10 +714915,10 @@ var init_SandboxSettings = __esm(() => {
714725
714915
  // src/commands/sandbox-toggle/sandbox-toggle.tsx
714726
714916
  var exports_sandbox_toggle = {};
714727
714917
  __export(exports_sandbox_toggle, {
714728
- call: () => call72
714918
+ call: () => call73
714729
714919
  });
714730
714920
  import { relative as relative31 } from "path";
714731
- async function call72(onDone, _context, args) {
714921
+ async function call73(onDone, _context, args) {
714732
714922
  const settings = getSettings_DEPRECATED();
714733
714923
  const themeName = settings.theme || "light";
714734
714924
  const platform6 = getPlatform();
@@ -715110,7 +715300,7 @@ var init_setup2 = __esm(() => {
715110
715300
  // src/commands/chrome/chrome.tsx
715111
715301
  var exports_chrome2 = {};
715112
715302
  __export(exports_chrome2, {
715113
- call: () => call73
715303
+ call: () => call74
715114
715304
  });
715115
715305
  function ClaudeInChromeMenu(t0) {
715116
715306
  const $4 = import_compiler_runtime244.c(41);
@@ -715477,7 +715667,7 @@ function _temp266(c9) {
715477
715667
  function _temp158(s4) {
715478
715668
  return s4.mcp.clients;
715479
715669
  }
715480
- var import_compiler_runtime244, import_react181, jsx_runtime338, CHROME_EXTENSION_URL = "https://claude.ai/chrome", CHROME_PERMISSIONS_URL = "https://clau.de/chrome/permissions", CHROME_RECONNECT_URL = "https://clau.de/chrome/reconnect", call73 = async function(onDone) {
715670
+ var import_compiler_runtime244, import_react181, jsx_runtime338, CHROME_EXTENSION_URL = "https://claude.ai/chrome", CHROME_PERMISSIONS_URL = "https://clau.de/chrome/permissions", CHROME_RECONNECT_URL = "https://clau.de/chrome/reconnect", call74 = async function(onDone) {
715481
715671
  const isExtensionInstalled = await isChromeExtensionInstalled();
715482
715672
  const config8 = getGlobalConfig();
715483
715673
  const isSubscriber2 = isClaudeAISubscriber();
@@ -715525,9 +715715,9 @@ var init_chrome3 = __esm(() => {
715525
715715
  // src/commands/stickers/stickers.ts
715526
715716
  var exports_stickers = {};
715527
715717
  __export(exports_stickers, {
715528
- call: () => call74
715718
+ call: () => call75
715529
715719
  });
715530
- async function call74() {
715720
+ async function call75() {
715531
715721
  const url3 = "https://www.stickermule.com/claudecode";
715532
715722
  const success2 = await openBrowser(url3);
715533
715723
  if (success2) {
@@ -715557,7 +715747,7 @@ var init_stickers2 = __esm(() => {
715557
715747
  });
715558
715748
 
715559
715749
  // src/commands/advisor.ts
715560
- var call75 = async (args, context8) => {
715750
+ var call76 = async (args, context8) => {
715561
715751
  const arg = args.trim().toLowerCase();
715562
715752
  const baseModel = parseUserSpecifiedModel(context8.getAppState().mainLoopModel ?? getDefaultMainLoopModelSetting());
715563
715753
  if (!arg) {
@@ -715650,7 +715840,7 @@ var init_advisor2 = __esm(() => {
715650
715840
  return !canUserConfigureAdvisor();
715651
715841
  },
715652
715842
  supportsNonInteractive: true,
715653
- load: () => Promise.resolve({ call: call75 })
715843
+ load: () => Promise.resolve({ call: call76 })
715654
715844
  };
715655
715845
  advisor_default = advisor;
715656
715846
  });
@@ -716066,13 +716256,13 @@ var init_ExitFlow = __esm(() => {
716066
716256
  // src/commands/exit/exit.tsx
716067
716257
  var exports_exit = {};
716068
716258
  __export(exports_exit, {
716069
- call: () => call76
716259
+ call: () => call77
716070
716260
  });
716071
716261
  import { spawnSync as spawnSync11 } from "child_process";
716072
716262
  function getRandomGoodbyeMessage2() {
716073
716263
  return sample_default(GOODBYE_MESSAGES2) ?? "Goodbye!";
716074
716264
  }
716075
- async function call76(onDone) {
716265
+ async function call77(onDone) {
716076
716266
  if (feature("BG_SESSIONS") && isBgSession()) {
716077
716267
  onDone();
716078
716268
  spawnSync11("tmux", ["detach-client"], {
@@ -716375,7 +716565,7 @@ __export(exports_export, {
716375
716565
  sanitizeFilename: () => sanitizeFilename,
716376
716566
  resolveExportFilepath: () => resolveExportFilepath,
716377
716567
  extractFirstPrompt: () => extractFirstPrompt,
716378
- call: () => call77
716568
+ call: () => call78
716379
716569
  });
716380
716570
  import { dirname as dirname70 } from "path";
716381
716571
  import { mkdirSync as mkdirSync12 } from "fs";
@@ -716422,7 +716612,7 @@ async function exportWithReactRenderer(context8) {
716422
716612
  const tools = context8.options.tools || [];
716423
716613
  return renderMessagesToPlainText(context8.messages, tools);
716424
716614
  }
716425
- async function call77(onDone, context8, args) {
716615
+ async function call78(onDone, context8, args) {
716426
716616
  const content = await exportWithReactRenderer(context8);
716427
716617
  const filename = args.trim();
716428
716618
  if (filename) {
@@ -716484,7 +716674,7 @@ var exports_model2 = {};
716484
716674
  __export(exports_model2, {
716485
716675
  saveModelAsDefault: () => saveModelAsDefault,
716486
716676
  renderModelSaveFailureSuffix: () => renderModelSaveFailureSuffix,
716487
- call: () => call78
716677
+ call: () => call79
716488
716678
  });
716489
716679
  import { homedir as homedir42 } from "os";
716490
716680
  function saveModelAsDefault(model) {
@@ -716743,7 +716933,7 @@ function renderModelLabel(model) {
716743
716933
  const rendered = renderDefaultModelSetting(model ?? getDefaultMainLoopModelSetting());
716744
716934
  return model === null ? `${rendered} (default)` : rendered;
716745
716935
  }
716746
- var React106, jsx_runtime345, MODEL_PICKER_PIN_HEADER = "Switch between Claude models. Your pick becomes the default for new sessions. For other/previous model names, specify with --model.", call78 = async (onDone, _context, args) => {
716936
+ var React106, jsx_runtime345, MODEL_PICKER_PIN_HEADER = "Switch between Claude models. Your pick becomes the default for new sessions. For other/previous model names, specify with --model.", call79 = async (onDone, _context, args) => {
716747
716937
  args = args?.trim() || "";
716748
716938
  if (COMMON_INFO_ARGS.includes(args)) {
716749
716939
  logEvent2("tengu_model_command_inline_help", {
@@ -717309,9 +717499,9 @@ var init_RemoteEnvironmentDialog = __esm(() => {
717309
717499
  // src/commands/remote-env/remote-env.tsx
717310
717500
  var exports_remote_env = {};
717311
717501
  __export(exports_remote_env, {
717312
- call: () => call79
717502
+ call: () => call80
717313
717503
  });
717314
- async function call79(onDone) {
717504
+ async function call80(onDone) {
717315
717505
  return /* @__PURE__ */ jsx_runtime347.jsx(RemoteEnvironmentDialog, {
717316
717506
  onDone
717317
717507
  });
@@ -717342,9 +717532,9 @@ var init_remote_env2 = __esm(() => {
717342
717532
  // src/commands/upgrade/upgrade.tsx
717343
717533
  var exports_upgrade = {};
717344
717534
  __export(exports_upgrade, {
717345
- call: () => call80
717535
+ call: () => call81
717346
717536
  });
717347
- async function call80(onDone, context8) {
717537
+ async function call81(onDone, context8) {
717348
717538
  try {
717349
717539
  if (isClaudeAISubscriber()) {
717350
717540
  const tokens = getClaudeAIOAuthTokens();
@@ -717437,7 +717627,7 @@ var init_usage_credits2 = __esm(() => {
717437
717627
  // src/commands/rate-limit-options/rate-limit-options.tsx
717438
717628
  var exports_rate_limit_options = {};
717439
717629
  __export(exports_rate_limit_options, {
717440
- call: () => call81
717630
+ call: () => call82
717441
717631
  });
717442
717632
  function RateLimitOptionsMenu(t0) {
717443
717633
  const $4 = import_compiler_runtime247.c(25);
@@ -717571,7 +717761,7 @@ function RateLimitOptionsMenu(t0) {
717571
717761
  t5 = function handleSelect2(value) {
717572
717762
  if (value === "upgrade") {
717573
717763
  logEvent2("tengu_rate_limit_options_menu_select_upgrade", {});
717574
- call80(onDone, context8).then((jsx346) => {
717764
+ call81(onDone, context8).then((jsx346) => {
717575
717765
  if (jsx346) {
717576
717766
  setSubCommandJSX(jsx346);
717577
717767
  }
@@ -717631,7 +717821,7 @@ function RateLimitOptionsMenu(t0) {
717631
717821
  }
717632
717822
  return t7;
717633
717823
  }
717634
- async function call81(onDone, context8) {
717824
+ async function call82(onDone, context8) {
717635
717825
  return /* @__PURE__ */ jsx_runtime349.jsx(RateLimitOptionsMenu, {
717636
717826
  onDone,
717637
717827
  context: context8
@@ -717705,7 +717895,7 @@ var exports_effort = {};
717705
717895
  __export(exports_effort, {
717706
717896
  showCurrentEffort: () => showCurrentEffort,
717707
717897
  executeEffort: () => executeEffort,
717708
- call: () => call82
717898
+ call: () => call83
717709
717899
  });
717710
717900
  function setEffortValue(effortValue) {
717711
717901
  const model = getMainLoopModel();
@@ -717902,7 +718092,7 @@ function ApplyEffortAndClose(t0) {
717902
718092
  React108.useEffect(t1, t22);
717903
718093
  return null;
717904
718094
  }
717905
- async function call82(onDone, _context, args) {
718095
+ async function call83(onDone, _context, args) {
717906
718096
  args = args?.trim() || "";
717907
718097
  if (COMMON_HELP_ARGS2.includes(args)) {
717908
718098
  const model = getMainLoopModel();
@@ -718030,7 +718220,7 @@ var init_team_onboarding = __esm(() => {
718030
718220
  });
718031
718221
 
718032
718222
  // src/commands/setup-bedrock.ts
718033
- var DEFAULT_REGION = "us-east-1", call83 = async (args) => {
718223
+ var DEFAULT_REGION = "us-east-1", call84 = async (args) => {
718034
718224
  const parts = args.trim().split(/\s+/).filter(Boolean);
718035
718225
  const region = parts[0] || DEFAULT_REGION;
718036
718226
  const model = parts[1];
@@ -718069,13 +718259,13 @@ var init_setup_bedrock = __esm(() => {
718069
718259
  description: "Configure AWS Bedrock as the API provider",
718070
718260
  argumentHint: "[aws-region] [model]",
718071
718261
  supportsNonInteractive: true,
718072
- load: () => Promise.resolve({ call: call83 })
718262
+ load: () => Promise.resolve({ call: call84 })
718073
718263
  };
718074
718264
  setup_bedrock_default = setupBedrock;
718075
718265
  });
718076
718266
 
718077
718267
  // src/commands/setup-vertex.ts
718078
- var DEFAULT_REGION2 = "us-east5", call84 = async (args) => {
718268
+ var DEFAULT_REGION2 = "us-east5", call85 = async (args) => {
718079
718269
  const parts = args.trim().split(/\s+/).filter(Boolean);
718080
718270
  const projectId = parts[0];
718081
718271
  const region = parts[1] || DEFAULT_REGION2;
@@ -718123,7 +718313,7 @@ var init_setup_vertex = __esm(() => {
718123
718313
  description: "Configure Google Vertex AI as the API provider",
718124
718314
  argumentHint: "[gcp-project-id] [region] [model]",
718125
718315
  supportsNonInteractive: true,
718126
- load: () => Promise.resolve({ call: call84 })
718316
+ load: () => Promise.resolve({ call: call85 })
718127
718317
  };
718128
718318
  setup_vertex_default = setupVertex;
718129
718319
  });
@@ -718717,7 +718907,7 @@ var init_assistant2 = () => {};
718717
718907
  // src/commands/bridge/bridge.tsx
718718
718908
  var exports_bridge = {};
718719
718909
  __export(exports_bridge, {
718720
- call: () => call85
718910
+ call: () => call86
718721
718911
  });
718722
718912
  function BridgeToggle(t0) {
718723
718913
  const $4 = import_compiler_runtime251.c(10);
@@ -719221,7 +719411,7 @@ async function checkBridgePrerequisites() {
719221
719411
  logForDebugging("[bridge] Prerequisites passed, enabling bridge");
719222
719412
  return null;
719223
719413
  }
719224
- async function call85(onDone, _context, args) {
719414
+ async function call86(onDone, _context, args) {
719225
719415
  const name3 = args.trim() || undefined;
719226
719416
  return /* @__PURE__ */ jsx_runtime354.jsx(BridgeToggle, {
719227
719417
  onDone,
@@ -720029,9 +720219,9 @@ var init_useVoice = __esm(() => {
720029
720219
  // src/commands/voice/voice.ts
720030
720220
  var exports_voice3 = {};
720031
720221
  __export(exports_voice3, {
720032
- call: () => call86
720222
+ call: () => call87
720033
720223
  });
720034
- var LANG_HINT_MAX_SHOWS = 2, call86 = async () => {
720224
+ var LANG_HINT_MAX_SHOWS = 2, call87 = async () => {
720035
720225
  if (!isVoiceModeEnabled()) {
720036
720226
  if (!isAnthropicAuthEnabled()) {
720037
720227
  return {
@@ -720756,9 +720946,9 @@ var init_WorkflowDetailDialog2 = __esm(() => {
720756
720946
  // src/commands/workflows/workflows.tsx
720757
720947
  var exports_workflows = {};
720758
720948
  __export(exports_workflows, {
720759
- call: () => call87
720949
+ call: () => call88
720760
720950
  });
720761
- var jsx_runtime356, call87 = (onDone, _context, _args) => {
720951
+ var jsx_runtime356, call88 = (onDone, _context, _args) => {
720762
720952
  logEvent2("workflow_history_dialog", {});
720763
720953
  return Promise.resolve(/* @__PURE__ */ jsx_runtime356.jsx(WorkflowDetailDialog3, {
720764
720954
  onDone
@@ -720937,7 +721127,7 @@ var init_api5 = __esm(() => {
720937
721127
  // src/commands/remote-setup/remote-setup.tsx
720938
721128
  var exports_remote_setup = {};
720939
721129
  __export(exports_remote_setup, {
720940
- call: () => call88
721130
+ call: () => call89
720941
721131
  });
720942
721132
  async function checkLoginState() {
720943
721133
  if (!await isSignedIn()) {
@@ -721097,7 +721287,7 @@ function Web({
721097
721287
  ]
721098
721288
  });
721099
721289
  }
721100
- async function call88(onDone) {
721290
+ async function call89(onDone) {
721101
721291
  return /* @__PURE__ */ jsx_runtime357.jsx(Web, {
721102
721292
  onDone
721103
721293
  });
@@ -721275,10 +721465,10 @@ var init_confirmation = __esm(() => {
721275
721465
  // src/commands/fork/fork.ts
721276
721466
  var exports_fork = {};
721277
721467
  __export(exports_fork, {
721278
- call: () => call89
721468
+ call: () => call90
721279
721469
  });
721280
721470
  import { randomUUID as randomUUID38 } from "crypto";
721281
- var call89 = async (onDone, context8, args) => {
721471
+ var call90 = async (onDone, context8, args) => {
721282
721472
  const directive = (args ?? "").trim();
721283
721473
  if (!directive) {
721284
721474
  onDone("Usage: /fork <directive>", { display: "system" });
@@ -723775,6 +723965,7 @@ var init_commands5 = __esm(() => {
723775
723965
  init_mcp3();
723776
723966
  init_mobile2();
723777
723967
  init_onboarding();
723968
+ init_output_style2();
723778
723969
  init_pr_comments();
723779
723970
  init_release_notes2();
723780
723971
  init_rename2();
@@ -723958,6 +724149,7 @@ var init_commands5 = __esm(() => {
723958
724149
  pause_memory_default,
723959
724150
  mobile_default,
723960
724151
  model_default,
724152
+ output_style_default,
723961
724153
  remote_env_default,
723962
724154
  plugin_default,
723963
724155
  powerup_default,
@@ -743745,7 +743937,7 @@ function sdkCompatToolName(name3) {
743745
743937
  }
743746
743938
  function buildSystemInitMessage(inputs) {
743747
743939
  const settings = getSettings_DEPRECATED();
743748
- const outputStyle = settings?.outputStyle ?? DEFAULT_OUTPUT_STYLE_NAME;
743940
+ const outputStyle2 = settings?.outputStyle ?? DEFAULT_OUTPUT_STYLE_NAME;
743749
743941
  const mcpClientNames = new Set(inputs.mcpClients.map((client8) => client8.name));
743750
743942
  const filteredMcpServerErrors = inputs.mcpServerErrors.filter((error52) => !mcpClientNames.has(error52.name));
743751
743943
  const initMessage = {
@@ -743771,7 +743963,7 @@ function buildSystemInitMessage(inputs) {
743771
743963
  apiKeySource: getAnthropicApiKeyWithSource().source,
743772
743964
  betas: getSdkBetas(),
743773
743965
  claude_code_version: MACRO.VERSION,
743774
- output_style: outputStyle,
743966
+ output_style: outputStyle2,
743775
743967
  agents: inputs.agents.map((agent) => agent.agentType),
743776
743968
  skills: inputs.skills.filter((s4) => s4.userInvocable !== false).map((skill) => skill.name),
743777
743969
  plugins: inputs.plugins.map((plugin2) => ({
@@ -776730,7 +776922,7 @@ var init_PromptInputStashNotice = __esm(() => {
776730
776922
  });
776731
776923
 
776732
776924
  // src/components/PromptInput/sanitizeBannerText.ts
776733
- function stripLoneSurrogates(text2) {
776925
+ function stripLoneSurrogates2(text2) {
776734
776926
  if (isWellFormed && isWellFormed(text2))
776735
776927
  return text2;
776736
776928
  return text2.replace(LONE_SURROGATE_RE, "");
@@ -776749,7 +776941,7 @@ function replaceControlsWithSpace(text2) {
776749
776941
  return text2.replace(CONTROL_FORMAT_RE, " ");
776750
776942
  }
776751
776943
  function sanitizeBannerText(text2) {
776752
- return replaceControlsWithSpace(stripAnsiSequences(stripLoneSurrogates(text2))).replace(/ {2,}/g, " ").trim();
776944
+ return replaceControlsWithSpace(stripAnsiSequences(stripLoneSurrogates2(text2))).replace(/ {2,}/g, " ").trim();
776753
776945
  }
776754
776946
  function clampBannerTextWidth(maxWidth) {
776755
776947
  return Math.max(1, Math.min(BANNER_TEXT_MAX_WIDTH, maxWidth - 1));
@@ -805779,6 +805971,7 @@ function REPL({
805779
805971
  const loadedNestedMemoryPathsRef = import_react321.useRef(new Set);
805780
805972
  const restoreReadFileState = import_react321.useCallback((messages2, cwd2) => {
805781
805973
  const extracted = extractReadFilesFromMessages(messages2, cwd2, READ_FILE_STATE_CACHE_SIZE);
805974
+ readFileState.current.clear();
805782
805975
  readFileState.current = mergeFileStateCaches(readFileState.current, extracted);
805783
805976
  for (const tool of extractBashToolsFromMessages(messages2)) {
805784
805977
  bashTools.current.add(tool);
@@ -823286,7 +823479,7 @@ async function handleInitializeRequest(request5, requestId, initialized5, output
823286
823479
  }
823287
823480
  }
823288
823481
  const settings = getSettings_DEPRECATED();
823289
- const outputStyle = settings?.outputStyle || DEFAULT_OUTPUT_STYLE_NAME;
823482
+ const outputStyle2 = settings?.outputStyle || DEFAULT_OUTPUT_STYLE_NAME;
823290
823483
  const availableOutputStyles = await getAllOutputStyles(getCwd());
823291
823484
  const accountInfo = getAccountInformation();
823292
823485
  if (request5.hooks) {
@@ -823318,7 +823511,7 @@ async function handleInitializeRequest(request5, requestId, initialized5, output
823318
823511
  description: agent.whenToUse,
823319
823512
  model: agent.model === "inherit" ? undefined : agent.model
823320
823513
  })),
823321
- output_style: outputStyle,
823514
+ output_style: outputStyle2,
823322
823515
  available_output_styles: Object.keys(availableOutputStyles),
823323
823516
  models: modelInfos,
823324
823517
  account: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cnwenf/occ",
3
- "version": "2.1.334",
3
+ "version": "2.1.336",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "bin": {