localclawd 1.1.17 → 1.1.18

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 (3) hide show
  1. package/README.md +2 -1
  2. package/dist/cli.mjs +415 -413
  3. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -66144,8 +66144,8 @@ var require_dist_cjs39 = __commonJS((exports) => {
66144
66144
  }
66145
66145
  }
66146
66146
  var SENSITIVE_STRING = "***SensitiveInformation***";
66147
- var createAggregatedClient = (commands2, Client2, options) => {
66148
- for (const [command, CommandCtor] of Object.entries(commands2)) {
66147
+ var createAggregatedClient = (commands, Client2, options) => {
66148
+ for (const [command, CommandCtor] of Object.entries(commands)) {
66149
66149
  const methodImpl = async function(args, optionsOrCb, cb) {
66150
66150
  const command2 = new CommandCtor(args);
66151
66151
  if (typeof optionsOrCb === "function") {
@@ -72110,8 +72110,8 @@ var require_dist_cjs74 = __commonJS((exports) => {
72110
72110
  }
72111
72111
  }
72112
72112
  var SENSITIVE_STRING = "***SensitiveInformation***";
72113
- var createAggregatedClient = (commands2, Client2, options) => {
72114
- for (const [command, CommandCtor] of Object.entries(commands2)) {
72113
+ var createAggregatedClient = (commands, Client2, options) => {
72114
+ for (const [command, CommandCtor] of Object.entries(commands)) {
72115
72115
  const methodImpl = async function(args, optionsOrCb, cb) {
72116
72116
  const command2 = new CommandCtor(args);
72117
72117
  if (typeof optionsOrCb === "function") {
@@ -73139,8 +73139,8 @@ var require_dist_cjs77 = __commonJS((exports) => {
73139
73139
  }
73140
73140
  }
73141
73141
  var SENSITIVE_STRING = "***SensitiveInformation***";
73142
- var createAggregatedClient = (commands2, Client2, options) => {
73143
- for (const [command, CommandCtor] of Object.entries(commands2)) {
73142
+ var createAggregatedClient = (commands, Client2, options) => {
73143
+ for (const [command, CommandCtor] of Object.entries(commands)) {
73144
73144
  const methodImpl = async function(args, optionsOrCb, cb) {
73145
73145
  const command2 = new CommandCtor(args);
73146
73146
  if (typeof optionsOrCb === "function") {
@@ -75334,8 +75334,8 @@ var require_dist_cjs85 = __commonJS((exports) => {
75334
75334
  }
75335
75335
  }
75336
75336
  var SENSITIVE_STRING = "***SensitiveInformation***";
75337
- var createAggregatedClient = (commands2, Client2, options) => {
75338
- for (const [command, CommandCtor] of Object.entries(commands2)) {
75337
+ var createAggregatedClient = (commands, Client2, options) => {
75338
+ for (const [command, CommandCtor] of Object.entries(commands)) {
75339
75339
  const methodImpl = async function(args, optionsOrCb, cb) {
75340
75340
  const command2 = new CommandCtor(args);
75341
75341
  if (typeof optionsOrCb === "function") {
@@ -80386,13 +80386,13 @@ var require_sso_oidc = __commonJS((exports) => {
80386
80386
  return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())];
80387
80387
  }).s("AWSSSOOIDCService", "CreateToken", {}).n("SSOOIDCClient", "CreateTokenCommand").sc(schemas_0.CreateToken$).build() {
80388
80388
  }
80389
- var commands2 = {
80389
+ var commands = {
80390
80390
  CreateTokenCommand
80391
80391
  };
80392
80392
 
80393
80393
  class SSOOIDC extends SSOOIDCClient {
80394
80394
  }
80395
- smithyClient.createAggregatedClient(commands2, SSOOIDC);
80395
+ smithyClient.createAggregatedClient(commands, SSOOIDC);
80396
80396
  var AccessDeniedExceptionReason = {
80397
80397
  KMS_ACCESS_DENIED: "KMS_AccessDeniedException"
80398
80398
  };
@@ -81176,13 +81176,13 @@ var require_sso = __commonJS((exports) => {
81176
81176
  return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())];
81177
81177
  }).s("SWBPortalService", "GetRoleCredentials", {}).n("SSOClient", "GetRoleCredentialsCommand").sc(schemas_0.GetRoleCredentials$).build() {
81178
81178
  }
81179
- var commands2 = {
81179
+ var commands = {
81180
81180
  GetRoleCredentialsCommand
81181
81181
  };
81182
81182
 
81183
81183
  class SSO extends SSOClient {
81184
81184
  }
81185
- smithyClient.createAggregatedClient(commands2, SSO);
81185
+ smithyClient.createAggregatedClient(commands, SSO);
81186
81186
  exports.$Command = smithyClient.Command;
81187
81187
  exports.__Client = smithyClient.Client;
81188
81188
  exports.SSOServiceException = SSOServiceException.SSOServiceException;
@@ -82309,13 +82309,13 @@ var require_signin = __commonJS((exports) => {
82309
82309
  return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())];
82310
82310
  }).s("Signin", "CreateOAuth2Token", {}).n("SigninClient", "CreateOAuth2TokenCommand").sc(schemas_0.CreateOAuth2Token$).build() {
82311
82311
  }
82312
- var commands2 = {
82312
+ var commands = {
82313
82313
  CreateOAuth2TokenCommand
82314
82314
  };
82315
82315
 
82316
82316
  class Signin extends SigninClient {
82317
82317
  }
82318
- smithyClient.createAggregatedClient(commands2, Signin);
82318
+ smithyClient.createAggregatedClient(commands, Signin);
82319
82319
  var OAuth2ErrorCode = {
82320
82320
  AUTHCODE_EXPIRED: "AUTHCODE_EXPIRED",
82321
82321
  INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS",
@@ -83497,14 +83497,14 @@ var require_sts = __commonJS((exports) => {
83497
83497
  return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())];
83498
83498
  }).s("AWSSecurityTokenServiceV20110615", "AssumeRoleWithWebIdentity", {}).n("STSClient", "AssumeRoleWithWebIdentityCommand").sc(schemas_0.AssumeRoleWithWebIdentity$).build() {
83499
83499
  }
83500
- var commands2 = {
83500
+ var commands = {
83501
83501
  AssumeRoleCommand,
83502
83502
  AssumeRoleWithWebIdentityCommand
83503
83503
  };
83504
83504
 
83505
83505
  class STS extends STSClient.STSClient {
83506
83506
  }
83507
- smithyClient.createAggregatedClient(commands2, STS);
83507
+ smithyClient.createAggregatedClient(commands, STS);
83508
83508
  var getAccountIdFromAssumedRoleUser = (assumedRoleUser) => {
83509
83509
  if (typeof assumedRoleUser?.Arn === "string") {
83510
83510
  const arnComponents = assumedRoleUser.Arn.split(":");
@@ -89227,7 +89227,7 @@ var init_isEqual = __esm(() => {
89227
89227
 
89228
89228
  // src/utils/userAgent.ts
89229
89229
  function getClaudeCodeUserAgent() {
89230
- return `claude-code/${"1.1.17"}`;
89230
+ return `claude-code/${"1.1.18"}`;
89231
89231
  }
89232
89232
 
89233
89233
  // src/utils/workloadContext.ts
@@ -89249,7 +89249,7 @@ function getUserAgent() {
89249
89249
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
89250
89250
  const workload = getWorkload();
89251
89251
  const workloadSuffix = workload ? `, workload/${workload}` : "";
89252
- return `claude-cli/${"1.1.17"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
89252
+ return `claude-cli/${"1.1.18"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
89253
89253
  }
89254
89254
  function getMCPUserAgent() {
89255
89255
  const parts = [];
@@ -89263,7 +89263,7 @@ function getMCPUserAgent() {
89263
89263
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
89264
89264
  }
89265
89265
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
89266
- return `claude-code/${"1.1.17"}${suffix}`;
89266
+ return `claude-code/${"1.1.18"}${suffix}`;
89267
89267
  }
89268
89268
  function getWebFetchUserAgent() {
89269
89269
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -95142,9 +95142,9 @@ var require_dist_cjs129 = __commonJS((exports, module) => {
95142
95142
  __name(_ClassBuilder, "ClassBuilder");
95143
95143
  var ClassBuilder = _ClassBuilder;
95144
95144
  var SENSITIVE_STRING = "***SensitiveInformation***";
95145
- var createAggregatedClient = /* @__PURE__ */ __name((commands2, Client2) => {
95146
- for (const command of Object.keys(commands2)) {
95147
- const CommandCtor = commands2[command];
95145
+ var createAggregatedClient = /* @__PURE__ */ __name((commands, Client2) => {
95146
+ for (const command of Object.keys(commands)) {
95147
+ const CommandCtor = commands[command];
95148
95148
  const methodImpl = /* @__PURE__ */ __name(async function(args, optionsOrCb, cb) {
95149
95149
  const command2 = new CommandCtor(args);
95150
95150
  if (typeof optionsOrCb === "function") {
@@ -99172,7 +99172,7 @@ function getAttributionHeader(fingerprint) {
99172
99172
  if (!isAttributionHeaderEnabled()) {
99173
99173
  return "";
99174
99174
  }
99175
- const version = `${"1.1.17"}.${fingerprint}`;
99175
+ const version = `${"1.1.18"}.${fingerprint}`;
99176
99176
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
99177
99177
  const cch = "";
99178
99178
  const workload = getWorkload();
@@ -132183,8 +132183,8 @@ async function detectJetBrainsIDEFromParentProcessAsync() {
132183
132183
  return null;
132184
132184
  }
132185
132185
  try {
132186
- const commands2 = await getAncestorCommandsAsync(process.pid, 10);
132187
- for (const command of commands2) {
132186
+ const commands = await getAncestorCommandsAsync(process.pid, 10);
132187
+ for (const command of commands) {
132188
132188
  const lowerCommand = command.toLowerCase();
132189
132189
  for (const ide of JETBRAINS_IDES) {
132190
132190
  if (lowerCommand.includes(ide)) {
@@ -132719,7 +132719,7 @@ var init_metadata = __esm(() => {
132719
132719
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
132720
132720
  WHITESPACE_REGEX = /\s+/;
132721
132721
  getVersionBase = memoize_default(() => {
132722
- const match = "1.1.17".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
132722
+ const match = "1.1.18".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
132723
132723
  return match ? match[0] : undefined;
132724
132724
  });
132725
132725
  buildEnvContext = memoize_default(async () => {
@@ -132759,9 +132759,9 @@ var init_metadata = __esm(() => {
132759
132759
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
132760
132760
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
132761
132761
  isClaudeAiAuth: isClaudeAISubscriber(),
132762
- version: "1.1.17",
132762
+ version: "1.1.18",
132763
132763
  versionBase: getVersionBase(),
132764
- buildTime: "2026-04-08T23:07:42.054Z",
132764
+ buildTime: "2026-04-09T14:11:44.775Z",
132765
132765
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
132766
132766
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
132767
132767
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -140878,16 +140878,16 @@ function getBuiltinPlugins() {
140878
140878
  }
140879
140879
  function getBuiltinPluginSkillCommands() {
140880
140880
  const { enabled } = getBuiltinPlugins();
140881
- const commands2 = [];
140881
+ const commands = [];
140882
140882
  for (const plugin of enabled) {
140883
140883
  const definition = BUILTIN_PLUGINS.get(plugin.name);
140884
140884
  if (!definition?.skills)
140885
140885
  continue;
140886
140886
  for (const skill of definition.skills) {
140887
- commands2.push(skillDefinitionToCommand(skill));
140887
+ commands.push(skillDefinitionToCommand(skill));
140888
140888
  }
140889
140889
  }
140890
- return commands2;
140890
+ return commands;
140891
140891
  }
140892
140892
  function skillDefinitionToCommand(definition) {
140893
140893
  return {
@@ -147282,9 +147282,9 @@ var init_claudeCodeGuideAgent = __esm(() => {
147282
147282
  model: "haiku",
147283
147283
  permissionMode: "dontAsk",
147284
147284
  getSystemPrompt({ toolUseContext }) {
147285
- const commands2 = toolUseContext.options.commands;
147285
+ const commands = toolUseContext.options.commands;
147286
147286
  const contextSections = [];
147287
- const customCommands = commands2.filter((cmd) => cmd.type === "prompt");
147287
+ const customCommands = commands.filter((cmd) => cmd.type === "prompt");
147288
147288
  if (customCommands.length > 0) {
147289
147289
  const commandList = customCommands.map((cmd) => `- /${cmd.name}: ${cmd.description}`).join(`
147290
147290
  `);
@@ -147305,7 +147305,7 @@ ${agentList}`);
147305
147305
  contextSections.push(`**Configured MCP servers:**
147306
147306
  ${mcpList}`);
147307
147307
  }
147308
- const pluginCommands = commands2.filter((cmd) => cmd.type === "prompt" && cmd.source === "plugin");
147308
+ const pluginCommands = commands.filter((cmd) => cmd.type === "prompt" && cmd.source === "plugin");
147309
147309
  if (pluginCommands.length > 0) {
147310
147310
  const pluginList = pluginCommands.map((cmd) => `- /${cmd.name}: ${cmd.description}`).join(`
147311
147311
  `);
@@ -148265,11 +148265,11 @@ function formatCommandDescription(cmd) {
148265
148265
  }
148266
148266
  return `- ${cmd.name}: ${getCommandDescription(cmd)}`;
148267
148267
  }
148268
- function formatCommandsWithinBudget(commands2, contextWindowTokens) {
148269
- if (commands2.length === 0)
148268
+ function formatCommandsWithinBudget(commands, contextWindowTokens) {
148269
+ if (commands.length === 0)
148270
148270
  return "";
148271
148271
  const budget = getCharBudget(contextWindowTokens);
148272
- const fullEntries = commands2.map((cmd) => ({
148272
+ const fullEntries = commands.map((cmd) => ({
148273
148273
  cmd,
148274
148274
  full: formatCommandDescription(cmd)
148275
148275
  }));
@@ -148280,8 +148280,8 @@ function formatCommandsWithinBudget(commands2, contextWindowTokens) {
148280
148280
  }
148281
148281
  const bundledIndices = new Set;
148282
148282
  const restCommands = [];
148283
- for (let i2 = 0;i2 < commands2.length; i2++) {
148284
- const cmd = commands2[i2];
148283
+ for (let i2 = 0;i2 < commands.length; i2++) {
148284
+ const cmd = commands[i2];
148285
148285
  if (cmd.type === "prompt" && cmd.source === "bundled") {
148286
148286
  bundledIndices.add(i2);
148287
148287
  } else {
@@ -148300,7 +148300,7 @@ function formatCommandsWithinBudget(commands2, contextWindowTokens) {
148300
148300
  if (maxDescLen < MIN_DESC_LENGTH) {
148301
148301
  if (process.env.USER_TYPE === "ant") {
148302
148302
  logEvent("tengu_skill_descriptions_truncated", {
148303
- skill_count: commands2.length,
148303
+ skill_count: commands.length,
148304
148304
  budget,
148305
148305
  full_total: fullTotal,
148306
148306
  truncation_mode: "names_only",
@@ -148309,13 +148309,13 @@ function formatCommandsWithinBudget(commands2, contextWindowTokens) {
148309
148309
  bundled_chars: bundledChars
148310
148310
  });
148311
148311
  }
148312
- return commands2.map((cmd, i2) => bundledIndices.has(i2) ? fullEntries[i2].full : `- ${cmd.name}`).join(`
148312
+ return commands.map((cmd, i2) => bundledIndices.has(i2) ? fullEntries[i2].full : `- ${cmd.name}`).join(`
148313
148313
  `);
148314
148314
  }
148315
148315
  const truncatedCount = count(restCommands, (cmd) => stringWidth(getCommandDescription(cmd)) > maxDescLen);
148316
148316
  if (process.env.USER_TYPE === "ant") {
148317
148317
  logEvent("tengu_skill_descriptions_truncated", {
148318
- skill_count: commands2.length,
148318
+ skill_count: commands.length,
148319
148319
  budget,
148320
148320
  full_total: fullTotal,
148321
148321
  truncation_mode: "description_trimmed",
@@ -148325,7 +148325,7 @@ function formatCommandsWithinBudget(commands2, contextWindowTokens) {
148325
148325
  bundled_chars: bundledChars
148326
148326
  });
148327
148327
  }
148328
- return commands2.map((cmd, i2) => {
148328
+ return commands.map((cmd, i2) => {
148329
148329
  if (bundledIndices.has(i2))
148330
148330
  return fullEntries[i2].full;
148331
148331
  const description = getCommandDescription(cmd);
@@ -197348,7 +197348,7 @@ function getTelemetryAttributes() {
197348
197348
  attributes["session.id"] = sessionId;
197349
197349
  }
197350
197350
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
197351
- attributes["app.version"] = "1.1.17";
197351
+ attributes["app.version"] = "1.1.18";
197352
197352
  }
197353
197353
  const oauthAccount = getOauthAccountInfo();
197354
197354
  if (oauthAccount) {
@@ -197766,23 +197766,23 @@ function parseForSecurityFromAst(cmd, root3) {
197766
197766
  return walkProgram(root3);
197767
197767
  }
197768
197768
  function walkProgram(root3) {
197769
- const commands2 = [];
197769
+ const commands = [];
197770
197770
  const varScope = new Map;
197771
- const err2 = collectCommands(root3, commands2, varScope);
197771
+ const err2 = collectCommands(root3, commands, varScope);
197772
197772
  if (err2)
197773
197773
  return err2;
197774
- return { kind: "simple", commands: commands2 };
197774
+ return { kind: "simple", commands };
197775
197775
  }
197776
- function collectCommands(node, commands2, varScope) {
197776
+ function collectCommands(node, commands, varScope) {
197777
197777
  if (node.type === "command") {
197778
- const result = walkCommand(node, [], commands2, varScope);
197778
+ const result = walkCommand(node, [], commands, varScope);
197779
197779
  if (result.kind !== "simple")
197780
197780
  return result;
197781
- commands2.push(...result.commands);
197781
+ commands.push(...result.commands);
197782
197782
  return null;
197783
197783
  }
197784
197784
  if (node.type === "redirected_statement") {
197785
- return walkRedirectedStatement(node, commands2, varScope);
197785
+ return walkRedirectedStatement(node, commands, varScope);
197786
197786
  }
197787
197787
  if (node.type === "comment") {
197788
197788
  return null;
@@ -197809,7 +197809,7 @@ function collectCommands(node, commands2, varScope) {
197809
197809
  }
197810
197810
  continue;
197811
197811
  }
197812
- const err2 = collectCommands(child, commands2, scope);
197812
+ const err2 = collectCommands(child, commands, scope);
197813
197813
  if (err2)
197814
197814
  return err2;
197815
197815
  }
@@ -197821,7 +197821,7 @@ function collectCommands(node, commands2, varScope) {
197821
197821
  continue;
197822
197822
  if (child.type === "!")
197823
197823
  continue;
197824
- return collectCommands(child, commands2, varScope);
197824
+ return collectCommands(child, commands, varScope);
197825
197825
  }
197826
197826
  return null;
197827
197827
  }
@@ -197843,7 +197843,7 @@ function collectCommands(node, commands2, varScope) {
197843
197843
  case "raw_string":
197844
197844
  case "string":
197845
197845
  case "concatenation": {
197846
- const arg = walkArgument(child, commands2, varScope);
197846
+ const arg = walkArgument(child, commands, varScope);
197847
197847
  if (typeof arg !== "string")
197848
197848
  return arg;
197849
197849
  if ((argv[0] === "declare" || argv[0] === "typeset" || argv[0] === "local") && /^-[a-zA-Z]*[niaA]/.test(arg)) {
@@ -197864,7 +197864,7 @@ function collectCommands(node, commands2, varScope) {
197864
197864
  break;
197865
197865
  }
197866
197866
  case "variable_assignment": {
197867
- const ev = walkVariableAssignment(child, commands2, varScope);
197867
+ const ev = walkVariableAssignment(child, commands, varScope);
197868
197868
  if ("kind" in ev)
197869
197869
  return ev;
197870
197870
  applyVarToScope(varScope, ev);
@@ -197878,11 +197878,11 @@ function collectCommands(node, commands2, varScope) {
197878
197878
  return tooComplex(child);
197879
197879
  }
197880
197880
  }
197881
- commands2.push({ argv, envVars: [], redirects: [], text: node.text });
197881
+ commands.push({ argv, envVars: [], redirects: [], text: node.text });
197882
197882
  return null;
197883
197883
  }
197884
197884
  if (node.type === "variable_assignment") {
197885
- const ev = walkVariableAssignment(node, commands2, varScope);
197885
+ const ev = walkVariableAssignment(node, commands, varScope);
197886
197886
  if ("kind" in ev)
197887
197887
  return ev;
197888
197888
  applyVarToScope(varScope, ev);
@@ -197901,11 +197901,11 @@ function collectCommands(node, commands2, varScope) {
197901
197901
  } else if (child.type === "for" || child.type === "in" || child.type === "select" || child.type === ";") {
197902
197902
  continue;
197903
197903
  } else if (child.type === "command_substitution") {
197904
- const err2 = collectCommandSubstitution(child, commands2, varScope);
197904
+ const err2 = collectCommandSubstitution(child, commands, varScope);
197905
197905
  if (err2)
197906
197906
  return err2;
197907
197907
  } else {
197908
- const arg = walkArgument(child, commands2, varScope);
197908
+ const arg = walkArgument(child, commands, varScope);
197909
197909
  if (typeof arg !== "string")
197910
197910
  return arg;
197911
197911
  }
@@ -197926,7 +197926,7 @@ function collectCommands(node, commands2, varScope) {
197926
197926
  continue;
197927
197927
  if (c5.type === "do" || c5.type === "done" || c5.type === ";")
197928
197928
  continue;
197929
- const err2 = collectCommands(c5, commands2, bodyScope);
197929
+ const err2 = collectCommands(c5, commands, bodyScope);
197930
197930
  if (err2)
197931
197931
  return err2;
197932
197932
  }
@@ -197951,7 +197951,7 @@ function collectCommands(node, commands2, varScope) {
197951
197951
  continue;
197952
197952
  if (c5.type === "do" || c5.type === "done" || c5.type === ";")
197953
197953
  continue;
197954
- const err3 = collectCommands(c5, commands2, bodyScope);
197954
+ const err3 = collectCommands(c5, commands, bodyScope);
197955
197955
  if (err3)
197956
197956
  return err3;
197957
197957
  }
@@ -197965,20 +197965,20 @@ function collectCommands(node, commands2, varScope) {
197965
197965
  if (c5.type === "elif" || c5.type === "else" || c5.type === "then" || c5.type === ";") {
197966
197966
  continue;
197967
197967
  }
197968
- const err3 = collectCommands(c5, commands2, branchScope);
197968
+ const err3 = collectCommands(c5, commands, branchScope);
197969
197969
  if (err3)
197970
197970
  return err3;
197971
197971
  }
197972
197972
  continue;
197973
197973
  }
197974
197974
  const targetScope = seenThen ? new Map(varScope) : varScope;
197975
- const before = commands2.length;
197976
- const err2 = collectCommands(child, commands2, targetScope);
197975
+ const before = commands.length;
197976
+ const err2 = collectCommands(child, commands, targetScope);
197977
197977
  if (err2)
197978
197978
  return err2;
197979
197979
  if (!seenThen) {
197980
- for (let i2 = before;i2 < commands2.length; i2++) {
197981
- const c5 = commands2[i2];
197980
+ for (let i2 = before;i2 < commands.length; i2++) {
197981
+ const c5 = commands[i2];
197982
197982
  if (c5?.argv[0] === "read") {
197983
197983
  for (const a of c5.argv.slice(1)) {
197984
197984
  if (!a.startsWith("-") && /^[A-Za-z_][A-Za-z0-9_]*$/.test(a)) {
@@ -198006,7 +198006,7 @@ function collectCommands(node, commands2, varScope) {
198006
198006
  continue;
198007
198007
  if (child.type === "(" || child.type === ")")
198008
198008
  continue;
198009
- const err2 = collectCommands(child, commands2, innerScope);
198009
+ const err2 = collectCommands(child, commands, innerScope);
198010
198010
  if (err2)
198011
198011
  return err2;
198012
198012
  }
@@ -198021,11 +198021,11 @@ function collectCommands(node, commands2, varScope) {
198021
198021
  continue;
198022
198022
  if (child.type === "[" || child.type === "]")
198023
198023
  continue;
198024
- const err2 = walkTestExpr(child, argv, commands2, varScope);
198024
+ const err2 = walkTestExpr(child, argv, commands, varScope);
198025
198025
  if (err2)
198026
198026
  return err2;
198027
198027
  }
198028
- commands2.push({ argv, envVars: [], redirects: [], text: node.text });
198028
+ commands.push({ argv, envVars: [], redirects: [], text: node.text });
198029
198029
  return null;
198030
198030
  }
198031
198031
  if (node.type === "unset_command") {
@@ -198042,7 +198042,7 @@ function collectCommands(node, commands2, varScope) {
198042
198042
  varScope.delete(child.text);
198043
198043
  break;
198044
198044
  case "word": {
198045
- const arg = walkArgument(child, commands2, varScope);
198045
+ const arg = walkArgument(child, commands, varScope);
198046
198046
  if (typeof arg !== "string")
198047
198047
  return arg;
198048
198048
  argv.push(arg);
@@ -198052,7 +198052,7 @@ function collectCommands(node, commands2, varScope) {
198052
198052
  return tooComplex(child);
198053
198053
  }
198054
198054
  }
198055
- commands2.push({ argv, envVars: [], redirects: [], text: node.text });
198055
+ commands.push({ argv, envVars: [], redirects: [], text: node.text });
198056
198056
  return null;
198057
198057
  }
198058
198058
  return tooComplex(node);
@@ -198099,14 +198099,14 @@ function walkTestExpr(node, argv, innerCommands, varScope) {
198099
198099
  }
198100
198100
  }
198101
198101
  }
198102
- function walkRedirectedStatement(node, commands2, varScope) {
198102
+ function walkRedirectedStatement(node, commands, varScope) {
198103
198103
  const redirects = [];
198104
198104
  let innerCommand = null;
198105
198105
  for (const child of node.children) {
198106
198106
  if (!child)
198107
198107
  continue;
198108
198108
  if (child.type === "file_redirect") {
198109
- const r = walkFileRedirect(child, commands2, varScope);
198109
+ const r = walkFileRedirect(child, commands, varScope);
198110
198110
  if ("kind" in r)
198111
198111
  return r;
198112
198112
  redirects.push(r);
@@ -198121,15 +198121,15 @@ function walkRedirectedStatement(node, commands2, varScope) {
198121
198121
  }
198122
198122
  }
198123
198123
  if (!innerCommand) {
198124
- commands2.push({ argv: [], envVars: [], redirects, text: node.text });
198124
+ commands.push({ argv: [], envVars: [], redirects, text: node.text });
198125
198125
  return null;
198126
198126
  }
198127
- const before = commands2.length;
198128
- const err2 = collectCommands(innerCommand, commands2, varScope);
198127
+ const before = commands.length;
198128
+ const err2 = collectCommands(innerCommand, commands, varScope);
198129
198129
  if (err2)
198130
198130
  return err2;
198131
- if (commands2.length > before && redirects.length > 0) {
198132
- const last2 = commands2[commands2.length - 1];
198131
+ if (commands.length > before && redirects.length > 0) {
198132
+ const last2 = commands[commands.length - 1];
198133
198133
  if (last2)
198134
198134
  last2.redirects.push(...redirects);
198135
198135
  }
@@ -198654,8 +198654,8 @@ function tooComplex(node) {
198654
198654
  const reason = node.type === "ERROR" ? "Parse error" : DANGEROUS_TYPES.has(node.type) ? `Contains ${node.type}` : `Unhandled node type: ${node.type}`;
198655
198655
  return { kind: "too-complex", reason, nodeType: node.type };
198656
198656
  }
198657
- function checkSemantics(commands2) {
198658
- for (const cmd of commands2) {
198657
+ function checkSemantics(commands) {
198658
+ for (const cmd of commands) {
198659
198659
  let a = cmd.argv;
198660
198660
  for (;; ) {
198661
198661
  if (a[0] === "time" || a[0] === "nohup") {
@@ -203851,8 +203851,8 @@ function isLinePrintingCommand(command, expressions) {
203851
203851
  return false;
203852
203852
  }
203853
203853
  for (const expr of expressions) {
203854
- const commands2 = expr.split(";");
203855
- for (const cmd of commands2) {
203854
+ const commands = expr.split(";");
203855
+ for (const cmd of commands) {
203856
203856
  if (!isPrintCommand(cmd.trim())) {
203857
203857
  return false;
203858
203858
  }
@@ -204137,8 +204137,8 @@ function containsDangerousOperations(expression) {
204137
204137
  return false;
204138
204138
  }
204139
204139
  function checkSedConstraints(input, toolPermissionContext) {
204140
- const commands2 = splitCommand_DEPRECATED(input.command);
204141
- for (const cmd of commands2) {
204140
+ const commands = splitCommand_DEPRECATED(input.command);
204141
+ for (const cmd of commands) {
204142
204142
  const trimmed = cmd.trim();
204143
204143
  const baseCmd = trimmed.split(/\s+/)[0];
204144
204144
  if (baseCmd !== "sed") {
@@ -204473,8 +204473,8 @@ function checkPathConstraints(input, cwd2, toolPermissionContext, compoundComman
204473
204473
  }
204474
204474
  }
204475
204475
  } else {
204476
- const commands2 = splitCommand_DEPRECATED(input.command);
204477
- for (const cmd of commands2) {
204476
+ const commands = splitCommand_DEPRECATED(input.command);
204477
+ for (const cmd of commands) {
204478
204478
  const result = validateSinglePathCommand(cmd, cwd2, toolPermissionContext, compoundCommandHasCd);
204479
204479
  if (result.behavior === "ask" || result.behavior === "deny") {
204480
204480
  return result;
@@ -224752,15 +224752,15 @@ function commandBelongsToServer(command, serverName) {
224752
224752
  return false;
224753
224753
  return name.startsWith(`mcp__${normalized}__`) || name.startsWith(`${normalized}:`);
224754
224754
  }
224755
- function filterMcpPromptsByServer(commands2, serverName) {
224756
- return commands2.filter((c5) => commandBelongsToServer(c5, serverName) && !(c5.type === "prompt" && c5.loadedFrom === "mcp"));
224755
+ function filterMcpPromptsByServer(commands, serverName) {
224756
+ return commands.filter((c5) => commandBelongsToServer(c5, serverName) && !(c5.type === "prompt" && c5.loadedFrom === "mcp"));
224757
224757
  }
224758
224758
  function excludeToolsByServer(tools, serverName) {
224759
224759
  const prefix = `mcp__${normalizeNameForMCP(serverName)}__`;
224760
224760
  return tools.filter((tool) => !tool.name?.startsWith(prefix));
224761
224761
  }
224762
- function excludeCommandsByServer(commands2, serverName) {
224763
- return commands2.filter((c5) => !commandBelongsToServer(c5, serverName));
224762
+ function excludeCommandsByServer(commands, serverName) {
224763
+ return commands.filter((c5) => !commandBelongsToServer(c5, serverName));
224764
224764
  }
224765
224765
  function excludeResourcesByServer(resources, serverName) {
224766
224766
  const result = { ...resources };
@@ -224791,17 +224791,17 @@ function excludeStalePluginClients(mcp, configs) {
224791
224791
  if (stale.length === 0) {
224792
224792
  return { ...mcp, stale: [] };
224793
224793
  }
224794
- let { tools, commands: commands2, resources } = mcp;
224794
+ let { tools, commands, resources } = mcp;
224795
224795
  for (const s of stale) {
224796
224796
  tools = excludeToolsByServer(tools, s.name);
224797
- commands2 = excludeCommandsByServer(commands2, s.name);
224797
+ commands = excludeCommandsByServer(commands, s.name);
224798
224798
  resources = excludeResourcesByServer(resources, s.name);
224799
224799
  }
224800
224800
  const staleNames = new Set(stale.map((c5) => c5.name));
224801
224801
  return {
224802
224802
  clients: mcp.clients.filter((c5) => !staleNames.has(c5.name)),
224803
224803
  tools,
224804
- commands: commands2,
224804
+ commands,
224805
224805
  resources,
224806
224806
  stale
224807
224807
  };
@@ -229409,7 +229409,7 @@ function getInstallationEnv() {
229409
229409
  return;
229410
229410
  }
229411
229411
  function getClaudeCodeVersion() {
229412
- return "1.1.17";
229412
+ return "1.1.18";
229413
229413
  }
229414
229414
  async function getInstalledVSCodeExtensionVersion(command) {
229415
229415
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -234390,7 +234390,7 @@ async function reconnectMcpServerImpl(name, config) {
234390
234390
  Promise.resolve([]),
234391
234391
  supportsResources ? fetchResourcesForClient(client4) : Promise.resolve([])
234392
234392
  ]);
234393
- const commands2 = [...mcpCommands, ...mcpSkills];
234393
+ const commands = [...mcpCommands, ...mcpSkills];
234394
234394
  const resourceTools = [];
234395
234395
  if (supportsResources) {
234396
234396
  const hasResourceTools = [ListMcpResourcesTool, ReadMcpResourceTool].some((tool) => tools.some((t) => toolMatchesName(t, tool.name)));
@@ -234401,7 +234401,7 @@ async function reconnectMcpServerImpl(name, config) {
234401
234401
  return {
234402
234402
  client: client4,
234403
234403
  tools: [...tools, ...resourceTools],
234404
- commands: commands2,
234404
+ commands,
234405
234405
  resources: resources.length > 0 ? resources : undefined
234406
234406
  };
234407
234407
  } catch (error5) {
@@ -234489,7 +234489,7 @@ async function getMcpToolsCommandsAndResources(onConnectionAttempt, mcpConfigs)
234489
234489
  Promise.resolve([]),
234490
234490
  supportsResources ? fetchResourcesForClient(client4) : Promise.resolve([])
234491
234491
  ]);
234492
- const commands2 = [...mcpCommands, ...mcpSkills];
234492
+ const commands = [...mcpCommands, ...mcpSkills];
234493
234493
  const resourceTools = [];
234494
234494
  if (supportsResources && !resourceToolsAdded) {
234495
234495
  resourceToolsAdded = true;
@@ -234498,7 +234498,7 @@ async function getMcpToolsCommandsAndResources(onConnectionAttempt, mcpConfigs)
234498
234498
  onConnectionAttempt({
234499
234499
  client: client4,
234500
234500
  tools: [...tools, ...resourceTools],
234501
- commands: commands2,
234501
+ commands,
234502
234502
  resources: resources.length > 0 ? resources : undefined
234503
234503
  });
234504
234504
  } catch (error5) {
@@ -234530,26 +234530,26 @@ function prefetchAllMcpResources(mcpConfigs) {
234530
234530
  }
234531
234531
  const clients = [];
234532
234532
  const tools = [];
234533
- const commands2 = [];
234533
+ const commands = [];
234534
234534
  getMcpToolsCommandsAndResources((result) => {
234535
234535
  clients.push(result.client);
234536
234536
  tools.push(...result.tools);
234537
- commands2.push(...result.commands);
234537
+ commands.push(...result.commands);
234538
234538
  completedCount++;
234539
234539
  if (completedCount >= pendingCount) {
234540
- const commandsMetadataLength = commands2.reduce((sum, command) => {
234540
+ const commandsMetadataLength = commands.reduce((sum, command) => {
234541
234541
  const commandMetadataLength = command.name.length + (command.description ?? "").length + (command.argumentHint ?? "").length;
234542
234542
  return sum + commandMetadataLength;
234543
234543
  }, 0);
234544
234544
  logEvent("tengu_mcp_tools_commands_loaded", {
234545
234545
  tools_count: tools.length,
234546
- commands_count: commands2.length,
234546
+ commands_count: commands.length,
234547
234547
  commands_metadata_length: commandsMetadataLength
234548
234548
  });
234549
234549
  resolve18({
234550
234550
  clients,
234551
234551
  tools,
234552
- commands: commands2
234552
+ commands
234553
234553
  });
234554
234554
  }
234555
234555
  }, mcpConfigs).catch((error5) => {
@@ -235011,7 +235011,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
235011
235011
  const client4 = new Client({
235012
235012
  name: "localclawd",
235013
235013
  title: "localclawd",
235014
- version: "1.1.17",
235014
+ version: "1.1.18",
235015
235015
  description: "local-first AI coding tool",
235016
235016
  websiteUrl: PRODUCT_URL
235017
235017
  }, {
@@ -235364,7 +235364,7 @@ var init_client9 = __esm(() => {
235364
235364
  const client4 = new Client({
235365
235365
  name: "localclawd",
235366
235366
  title: "localclawd",
235367
- version: "1.1.17",
235367
+ version: "1.1.18",
235368
235368
  description: "local-first AI coding tool",
235369
235369
  websiteUrl: PRODUCT_URL
235370
235370
  }, {
@@ -240594,7 +240594,7 @@ function AssistantToolUseMessage(t0) {
240594
240594
  param,
240595
240595
  addMargin,
240596
240596
  tools,
240597
- commands: commands2,
240597
+ commands,
240598
240598
  verbose,
240599
240599
  inProgressToolUseIDs,
240600
240600
  progressMessagesForMessage,
@@ -240720,13 +240720,13 @@ function AssistantToolUseMessage(t0) {
240720
240720
  return null;
240721
240721
  }
240722
240722
  let t4;
240723
- if ($2[24] !== commands2 || $2[25] !== input_0.data || $2[26] !== input_0.success || $2[27] !== theme || $2[28] !== tool_0 || $2[29] !== verbose) {
240723
+ if ($2[24] !== commands || $2[25] !== input_0.data || $2[26] !== input_0.success || $2[27] !== theme || $2[28] !== tool_0 || $2[29] !== verbose) {
240724
240724
  t4 = input_0.success ? renderToolUseMessage4(tool_0, input_0.data, {
240725
240725
  theme,
240726
240726
  verbose,
240727
- commands: commands2
240727
+ commands
240728
240728
  }) : null;
240729
- $2[24] = commands2;
240729
+ $2[24] = commands;
240730
240730
  $2[25] = input_0.data;
240731
240731
  $2[26] = input_0.success;
240732
240732
  $2[27] = theme;
@@ -240929,7 +240929,7 @@ function _temp5(state) {
240929
240929
  function renderToolUseMessage4(tool, input, {
240930
240930
  theme,
240931
240931
  verbose,
240932
- commands: commands2
240932
+ commands
240933
240933
  }) {
240934
240934
  try {
240935
240935
  const parsed = tool.inputSchema.safeParse(input);
@@ -240939,7 +240939,7 @@ function renderToolUseMessage4(tool, input, {
240939
240939
  return tool.renderToolUseMessage(parsed.data, {
240940
240940
  theme,
240941
240941
  verbose,
240942
- commands: commands2
240942
+ commands
240943
240943
  });
240944
240944
  } catch (error5) {
240945
240945
  logError(new Error(`Error rendering tool use message for ${tool.name}: ${error5}`));
@@ -249843,7 +249843,7 @@ function MessageImpl(t0) {
249843
249843
  containerWidth,
249844
249844
  addMargin,
249845
249845
  tools,
249846
- commands: commands2,
249846
+ commands,
249847
249847
  verbose,
249848
249848
  inProgressToolUseIDs,
249849
249849
  progressMessagesForMessage,
@@ -249882,14 +249882,14 @@ function MessageImpl(t0) {
249882
249882
  case "assistant": {
249883
249883
  const t2 = containerWidth ?? "100%";
249884
249884
  let t3;
249885
- if ($2[5] !== addMargin || $2[6] !== commands2 || $2[7] !== inProgressToolUseIDs || $2[8] !== isTranscriptMode || $2[9] !== lastThinkingBlockId || $2[10] !== lookups || $2[11] !== message.advisorModel || $2[12] !== message.message.content || $2[13] !== message.uuid || $2[14] !== onOpenRateLimitOptions || $2[15] !== progressMessagesForMessage || $2[16] !== shouldAnimate || $2[17] !== shouldShowDot || $2[18] !== tools || $2[19] !== verbose || $2[20] !== width) {
249885
+ if ($2[5] !== addMargin || $2[6] !== commands || $2[7] !== inProgressToolUseIDs || $2[8] !== isTranscriptMode || $2[9] !== lastThinkingBlockId || $2[10] !== lookups || $2[11] !== message.advisorModel || $2[12] !== message.message.content || $2[13] !== message.uuid || $2[14] !== onOpenRateLimitOptions || $2[15] !== progressMessagesForMessage || $2[16] !== shouldAnimate || $2[17] !== shouldShowDot || $2[18] !== tools || $2[19] !== verbose || $2[20] !== width) {
249886
249886
  let t42;
249887
- if ($2[22] !== addMargin || $2[23] !== commands2 || $2[24] !== inProgressToolUseIDs || $2[25] !== isTranscriptMode || $2[26] !== lastThinkingBlockId || $2[27] !== lookups || $2[28] !== message.advisorModel || $2[29] !== message.uuid || $2[30] !== onOpenRateLimitOptions || $2[31] !== progressMessagesForMessage || $2[32] !== shouldAnimate || $2[33] !== shouldShowDot || $2[34] !== tools || $2[35] !== verbose || $2[36] !== width) {
249887
+ if ($2[22] !== addMargin || $2[23] !== commands || $2[24] !== inProgressToolUseIDs || $2[25] !== isTranscriptMode || $2[26] !== lastThinkingBlockId || $2[27] !== lookups || $2[28] !== message.advisorModel || $2[29] !== message.uuid || $2[30] !== onOpenRateLimitOptions || $2[31] !== progressMessagesForMessage || $2[32] !== shouldAnimate || $2[33] !== shouldShowDot || $2[34] !== tools || $2[35] !== verbose || $2[36] !== width) {
249888
249888
  t42 = (_2, index_0) => /* @__PURE__ */ jsx_dev_runtime89.jsxDEV(AssistantMessageBlock, {
249889
249889
  param: _2,
249890
249890
  addMargin,
249891
249891
  tools,
249892
- commands: commands2,
249892
+ commands,
249893
249893
  verbose,
249894
249894
  inProgressToolUseIDs,
249895
249895
  progressMessagesForMessage,
@@ -249905,7 +249905,7 @@ function MessageImpl(t0) {
249905
249905
  advisorModel: message.advisorModel
249906
249906
  }, index_0, false, undefined, this);
249907
249907
  $2[22] = addMargin;
249908
- $2[23] = commands2;
249908
+ $2[23] = commands;
249909
249909
  $2[24] = inProgressToolUseIDs;
249910
249910
  $2[25] = isTranscriptMode;
249911
249911
  $2[26] = lastThinkingBlockId;
@@ -249925,7 +249925,7 @@ function MessageImpl(t0) {
249925
249925
  }
249926
249926
  t3 = message.message.content.map(t42);
249927
249927
  $2[5] = addMargin;
249928
- $2[6] = commands2;
249928
+ $2[6] = commands;
249929
249929
  $2[7] = inProgressToolUseIDs;
249930
249930
  $2[8] = isTranscriptMode;
249931
249931
  $2[9] = lastThinkingBlockId;
@@ -250269,7 +250269,7 @@ function AssistantMessageBlock(t0) {
250269
250269
  param,
250270
250270
  addMargin,
250271
250271
  tools,
250272
- commands: commands2,
250272
+ commands,
250273
250273
  verbose,
250274
250274
  inProgressToolUseIDs,
250275
250275
  progressMessagesForMessage,
@@ -250288,12 +250288,12 @@ function AssistantMessageBlock(t0) {
250288
250288
  switch (param.type) {
250289
250289
  case "tool_use": {
250290
250290
  let t1;
250291
- if ($2[9] !== addMargin || $2[10] !== commands2 || $2[11] !== inProgressToolCallCount || $2[12] !== inProgressToolUseIDs || $2[13] !== isTranscriptMode || $2[14] !== lookups || $2[15] !== param || $2[16] !== progressMessagesForMessage || $2[17] !== shouldAnimate || $2[18] !== shouldShowDot || $2[19] !== tools || $2[20] !== verbose) {
250291
+ if ($2[9] !== addMargin || $2[10] !== commands || $2[11] !== inProgressToolCallCount || $2[12] !== inProgressToolUseIDs || $2[13] !== isTranscriptMode || $2[14] !== lookups || $2[15] !== param || $2[16] !== progressMessagesForMessage || $2[17] !== shouldAnimate || $2[18] !== shouldShowDot || $2[19] !== tools || $2[20] !== verbose) {
250292
250292
  t1 = /* @__PURE__ */ jsx_dev_runtime89.jsxDEV(AssistantToolUseMessage, {
250293
250293
  param,
250294
250294
  addMargin,
250295
250295
  tools,
250296
- commands: commands2,
250296
+ commands,
250297
250297
  verbose,
250298
250298
  inProgressToolUseIDs,
250299
250299
  progressMessagesForMessage,
@@ -250304,7 +250304,7 @@ function AssistantMessageBlock(t0) {
250304
250304
  isTranscriptMode
250305
250305
  }, undefined, false, undefined, this);
250306
250306
  $2[9] = addMargin;
250307
- $2[10] = commands2;
250307
+ $2[10] = commands;
250308
250308
  $2[11] = inProgressToolCallCount;
250309
250309
  $2[12] = inProgressToolUseIDs;
250310
250310
  $2[13] = isTranscriptMode;
@@ -252094,8 +252094,8 @@ function formatCommandLoadingMetadata(command, args) {
252094
252094
  }
252095
252095
  return formatSlashCommandLoadingMetadata(command.name, args);
252096
252096
  }
252097
- async function processPromptSlashCommand(commandName, args, commands2, context5, imageContentBlocks = []) {
252098
- const command = findCommand(commandName, commands2);
252097
+ async function processPromptSlashCommand(commandName, args, commands, context5, imageContentBlocks = []) {
252098
+ const command = findCommand(commandName, commands);
252099
252099
  if (!command) {
252100
252100
  throw new MalformedCommandError(`Unknown command: ${commandName}`);
252101
252101
  }
@@ -254160,7 +254160,7 @@ function getClipboardCommands() {
254160
254160
  win32: join55(baseTmpDir, screenshotFilename)
254161
254161
  };
254162
254162
  const screenshotPath = tempPaths[platform3] || tempPaths.linux;
254163
- const commands2 = {
254163
+ const commands = {
254164
254164
  darwin: {
254165
254165
  checkImage: `osascript -e 'the clipboard as «class PNGf»'`,
254166
254166
  saveImage: `osascript -e 'set png_data to (the clipboard as «class PNGf»)' -e 'set fp to open for access POSIX file "${screenshotPath}" with write permission' -e 'write png_data to fp' -e 'close access fp'`,
@@ -254181,7 +254181,7 @@ function getClipboardCommands() {
254181
254181
  }
254182
254182
  };
254183
254183
  return {
254184
- commands: commands2[platform3] || commands2.linux,
254184
+ commands: commands[platform3] || commands.linux,
254185
254185
  screenshotPath
254186
254186
  };
254187
254187
  }
@@ -254198,16 +254198,16 @@ async function hasImageInClipboard() {
254198
254198
  }
254199
254199
  async function getImageFromClipboard() {
254200
254200
  if (false) {}
254201
- const { commands: commands2, screenshotPath } = getClipboardCommands();
254201
+ const { commands, screenshotPath } = getClipboardCommands();
254202
254202
  try {
254203
- const checkResult = await execa6(commands2.checkImage, {
254203
+ const checkResult = await execa6(commands.checkImage, {
254204
254204
  shell: true,
254205
254205
  reject: false
254206
254206
  });
254207
254207
  if (checkResult.exitCode !== 0) {
254208
254208
  return null;
254209
254209
  }
254210
- const saveResult = await execa6(commands2.saveImage, {
254210
+ const saveResult = await execa6(commands.saveImage, {
254211
254211
  shell: true,
254212
254212
  reject: false
254213
254213
  });
@@ -254222,7 +254222,7 @@ async function getImageFromClipboard() {
254222
254222
  const resized = await maybeResizeAndDownsampleImageBuffer(imageBuffer, imageBuffer.length, "png");
254223
254223
  const base64Image = resized.buffer.toString("base64");
254224
254224
  const mediaType = detectImageFormatFromBase64(base64Image);
254225
- execa6(commands2.deleteFile, { shell: true, reject: false });
254225
+ execa6(commands.deleteFile, { shell: true, reject: false });
254226
254226
  return {
254227
254227
  base64: base64Image,
254228
254228
  mediaType,
@@ -254233,9 +254233,9 @@ async function getImageFromClipboard() {
254233
254233
  }
254234
254234
  }
254235
254235
  async function getImagePathFromClipboard() {
254236
- const { commands: commands2 } = getClipboardCommands();
254236
+ const { commands } = getClipboardCommands();
254237
254237
  try {
254238
- const result = await execa6(commands2.getPath, {
254238
+ const result = await execa6(commands.getPath, {
254239
254239
  shell: true,
254240
254240
  reject: false
254241
254241
  });
@@ -258556,7 +258556,7 @@ var init_user = __esm(() => {
258556
258556
  deviceId,
258557
258557
  sessionId: getSessionId(),
258558
258558
  email: getEmail(),
258559
- appVersion: "1.1.17",
258559
+ appVersion: "1.1.18",
258560
258560
  platform: getHostPlatformForAnalytics(),
258561
258561
  organizationUuid,
258562
258562
  accountUuid,
@@ -259880,7 +259880,7 @@ async function initializeBetaTracing(resource) {
259880
259880
  });
259881
259881
  logs.setGlobalLoggerProvider(loggerProvider);
259882
259882
  setLoggerProvider(loggerProvider);
259883
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.17");
259883
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.18");
259884
259884
  setEventLogger(eventLogger);
259885
259885
  process.on("beforeExit", async () => {
259886
259886
  await loggerProvider?.forceFlush();
@@ -259920,7 +259920,7 @@ async function initializeTelemetry() {
259920
259920
  const platform3 = getPlatform();
259921
259921
  const baseAttributes = {
259922
259922
  [ATTR_SERVICE_NAME5]: "claude-code",
259923
- [ATTR_SERVICE_VERSION5]: "1.1.17"
259923
+ [ATTR_SERVICE_VERSION5]: "1.1.18"
259924
259924
  };
259925
259925
  if (platform3 === "wsl") {
259926
259926
  const wslVersion = getWslVersion();
@@ -259965,7 +259965,7 @@ async function initializeTelemetry() {
259965
259965
  } catch {}
259966
259966
  };
259967
259967
  registerCleanup(shutdownTelemetry2);
259968
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.17");
259968
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.18");
259969
259969
  }
259970
259970
  const meterProvider = new MeterProvider5({
259971
259971
  resource,
@@ -259985,7 +259985,7 @@ async function initializeTelemetry() {
259985
259985
  });
259986
259986
  logs.setGlobalLoggerProvider(loggerProvider);
259987
259987
  setLoggerProvider(loggerProvider);
259988
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.17");
259988
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.18");
259989
259989
  setEventLogger(eventLogger);
259990
259990
  logForDebugging("[3P telemetry] Event logger set successfully");
259991
259991
  process.on("beforeExit", async () => {
@@ -260047,7 +260047,7 @@ Current timeout: ${timeoutMs}ms
260047
260047
  }
260048
260048
  };
260049
260049
  registerCleanup(shutdownTelemetry);
260050
- return meterProvider.getMeter("com.anthropic.claude_code", "1.1.17");
260050
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.1.18");
260051
260051
  }
260052
260052
  async function flushTelemetry() {
260053
260053
  const meterProvider = getMeterProvider();
@@ -261234,8 +261234,8 @@ async function detectConfigurationIssues(type) {
261234
261234
  const validAlias = await findValidClaudeAlias();
261235
261235
  if (type === "npm-local") {
261236
261236
  const whichResult = await which("localclawd");
261237
- const localClawdInPath = !!whichResult;
261238
- if (!localClawdInPath && !validAlias) {
261237
+ const localclawdInPath = !!whichResult;
261238
+ if (!localclawdInPath && !validAlias) {
261239
261239
  if (existingAlias) {
261240
261240
  warnings.push({
261241
261241
  issue: "Local installation not accessible",
@@ -261270,7 +261270,7 @@ function detectLinuxGlobPatternWarnings() {
261270
261270
  }
261271
261271
  async function getDoctorDiagnostic() {
261272
261272
  const installationType = await getCurrentInstallationType();
261273
- const version = typeof MACRO !== "undefined" ? "1.1.17" : "unknown";
261273
+ const version = typeof MACRO !== "undefined" ? "1.1.18" : "unknown";
261274
261274
  const installationPath = await getInstallationPath();
261275
261275
  const invokedBinary = getInvokedBinary();
261276
261276
  const multipleInstallations = await detectMultipleInstallations();
@@ -262211,8 +262211,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
262211
262211
  const maxVersion = await getMaxVersion();
262212
262212
  if (maxVersion && gt(version, maxVersion)) {
262213
262213
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
262214
- if (gte("1.1.17", maxVersion)) {
262215
- logForDebugging(`Native installer: current version ${"1.1.17"} is already at or above maxVersion ${maxVersion}, skipping update`);
262214
+ if (gte("1.1.18", maxVersion)) {
262215
+ logForDebugging(`Native installer: current version ${"1.1.18"} is already at or above maxVersion ${maxVersion}, skipping update`);
262216
262216
  logEvent("tengu_native_update_skipped_max_version", {
262217
262217
  latency_ms: Date.now() - startTime,
262218
262218
  max_version: maxVersion,
@@ -262223,7 +262223,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
262223
262223
  version = maxVersion;
262224
262224
  }
262225
262225
  }
262226
- if (!forceReinstall && version === "1.1.17" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
262226
+ if (!forceReinstall && version === "1.1.18" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
262227
262227
  logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
262228
262228
  logEvent("tengu_native_update_complete", {
262229
262229
  latency_ms: Date.now() - startTime,
@@ -276032,12 +276032,12 @@ function renderToolResultMessage5(output) {
276032
276032
  function renderToolUseMessage6({
276033
276033
  skill
276034
276034
  }, {
276035
- commands: commands2
276035
+ commands
276036
276036
  }) {
276037
276037
  if (!skill) {
276038
276038
  return null;
276039
276039
  }
276040
- const command = commands2?.find((c5) => c5.name === skill);
276040
+ const command = commands?.find((c5) => c5.name === skill);
276041
276041
  const displayName = command?.loadedFrom === "commands_DEPRECATED" ? `/${skill}` : skill;
276042
276042
  return displayName;
276043
276043
  }
@@ -276346,8 +276346,8 @@ var init_SkillTool = __esm(() => {
276346
276346
  }
276347
276347
  const normalizedCommandName = hasLeadingSlash ? trimmed.substring(1) : trimmed;
276348
276348
  if (false) {}
276349
- const commands2 = await getAllCommands(context6);
276350
- const foundCommand = findCommand(normalizedCommandName, commands2);
276349
+ const commands = await getAllCommands(context6);
276350
+ const foundCommand = findCommand(normalizedCommandName, commands);
276351
276351
  if (!foundCommand) {
276352
276352
  return {
276353
276353
  result: false,
@@ -276376,8 +276376,8 @@ var init_SkillTool = __esm(() => {
276376
276376
  const commandName = trimmed.startsWith("/") ? trimmed.substring(1) : trimmed;
276377
276377
  const appState = context6.getAppState();
276378
276378
  const permissionContext = appState.toolPermissionContext;
276379
- const commands2 = await getAllCommands(context6);
276380
- const commandObj = findCommand(commandName, commands2);
276379
+ const commands = await getAllCommands(context6);
276380
+ const commandObj = findCommand(commandName, commands);
276381
276381
  const ruleMatches = (ruleContent) => {
276382
276382
  const normalizedRule = ruleContent.startsWith("/") ? ruleContent.substring(1) : ruleContent;
276383
276383
  if (normalizedRule === commandName) {
@@ -276460,14 +276460,14 @@ var init_SkillTool = __esm(() => {
276460
276460
  const trimmed = skill.trim();
276461
276461
  const commandName = trimmed.startsWith("/") ? trimmed.substring(1) : trimmed;
276462
276462
  if (false) {}
276463
- const commands2 = await getAllCommands(context6);
276464
- const command = findCommand(commandName, commands2);
276463
+ const commands = await getAllCommands(context6);
276464
+ const command = findCommand(commandName, commands);
276465
276465
  recordSkillUsage(commandName);
276466
276466
  if (command?.type === "prompt" && command.context === "fork") {
276467
276467
  return executeForkedSkill(command, commandName, args, context6, canUseTool, parentMessage, onProgress);
276468
276468
  }
276469
276469
  const { processPromptSlashCommand: processPromptSlashCommand2 } = await Promise.resolve().then(() => (init_processSlashCommand(), exports_processSlashCommand));
276470
- const processedCommand = await processPromptSlashCommand2(commandName, args || "", commands2, context6);
276470
+ const processedCommand = await processPromptSlashCommand2(commandName, args || "", commands, context6);
276471
276471
  if (!processedCommand.shouldQuery) {
276472
276472
  throw new Error("Command processing failed");
276473
276473
  }
@@ -284228,17 +284228,17 @@ function transformRedirection(raw) {
284228
284228
  }
284229
284229
  function transformStatement(raw) {
284230
284230
  const statementType = mapStatementType(raw.type);
284231
- const commands2 = [];
284231
+ const commands = [];
284232
284232
  const redirections = [];
284233
284233
  if (raw.elements) {
284234
284234
  for (const elem of ensureArray(raw.elements)) {
284235
284235
  if (elem.type === "CommandAst") {
284236
- commands2.push(transformCommandAst(elem));
284236
+ commands.push(transformCommandAst(elem));
284237
284237
  for (const redir of ensureArray(elem.redirections)) {
284238
284238
  redirections.push(transformRedirection(redir));
284239
284239
  }
284240
284240
  } else {
284241
- commands2.push(transformExpressionElement(elem));
284241
+ commands.push(transformExpressionElement(elem));
284242
284242
  for (const redir of ensureArray(elem.redirections)) {
284243
284243
  redirections.push(transformRedirection(redir));
284244
284244
  }
@@ -284254,7 +284254,7 @@ function transformStatement(raw) {
284254
284254
  }
284255
284255
  }
284256
284256
  } else {
284257
- commands2.push({
284257
+ commands.push({
284258
284258
  name: raw.text,
284259
284259
  nameType: "unknown",
284260
284260
  elementType: "CommandExpressionAst",
@@ -284272,7 +284272,7 @@ function transformStatement(raw) {
284272
284272
  }
284273
284273
  const result = {
284274
284274
  statementType,
284275
- commands: commands2,
284275
+ commands,
284276
284276
  redirections,
284277
284277
  text: raw.text,
284278
284278
  nestedCommands
@@ -284380,18 +284380,18 @@ function getAllCommandNames(parsed) {
284380
284380
  return names;
284381
284381
  }
284382
284382
  function getAllCommands2(parsed) {
284383
- const commands2 = [];
284383
+ const commands = [];
284384
284384
  for (const statement of parsed.statements) {
284385
284385
  for (const cmd of statement.commands) {
284386
- commands2.push(cmd);
284386
+ commands.push(cmd);
284387
284387
  }
284388
284388
  if (statement.nestedCommands) {
284389
284389
  for (const cmd of statement.nestedCommands) {
284390
- commands2.push(cmd);
284390
+ commands.push(cmd);
284391
284391
  }
284392
284392
  }
284393
284393
  }
284394
- return commands2;
284394
+ return commands;
284395
284395
  }
284396
284396
  function getAllRedirections(parsed) {
284397
284397
  const redirections = [];
@@ -319169,7 +319169,7 @@ async function screenshotViaApi(url3, apiBase) {
319169
319169
  async function fetchPageText(url3) {
319170
319170
  try {
319171
319171
  const res = await fetch(url3, {
319172
- headers: { "User-Agent": "Mozilla/5.0 (compatible; localClawd/1.0)" },
319172
+ headers: { "User-Agent": "Mozilla/5.0 (compatible; localclawd/1.0)" },
319173
319173
  signal: AbortSignal.timeout(15000)
319174
319174
  });
319175
319175
  const html = await res.text();
@@ -329121,8 +329121,8 @@ function checkPermissionMode2(input, toolPermissionContext) {
329121
329121
  message: "DontAsk mode is handled in main permission flow"
329122
329122
  };
329123
329123
  }
329124
- const commands2 = splitCommand_DEPRECATED(input.command);
329125
- for (const cmd of commands2) {
329124
+ const commands = splitCommand_DEPRECATED(input.command);
329125
+ for (const cmd of commands) {
329126
329126
  const result = validateCommandForMode(cmd, toolPermissionContext);
329127
329127
  if (result.behavior !== "passthrough") {
329128
329128
  return result;
@@ -329532,11 +329532,11 @@ function checkEarlyExitDeny(input, toolPermissionContext) {
329532
329532
  }
329533
329533
  return null;
329534
329534
  }
329535
- function checkSemanticsDeny(input, toolPermissionContext, commands2) {
329535
+ function checkSemanticsDeny(input, toolPermissionContext, commands) {
329536
329536
  const fullCmd = checkEarlyExitDeny(input, toolPermissionContext);
329537
329537
  if (fullCmd !== null)
329538
329538
  return fullCmd;
329539
- for (const cmd of commands2) {
329539
+ for (const cmd of commands) {
329540
329540
  const subDeny = matchingRulesForInput2({ ...input, command: cmd.text }, toolPermissionContext, "prefix").matchingDenyRules[0];
329541
329541
  if (subDeny !== undefined) {
329542
329542
  return {
@@ -334443,7 +334443,7 @@ function getAnthropicEnvMetadata() {
334443
334443
  function getBuildAgeMinutes() {
334444
334444
  if (false)
334445
334445
  ;
334446
- const buildTime = new Date("2026-04-08T23:07:42.054Z").getTime();
334446
+ const buildTime = new Date("2026-04-09T14:11:44.775Z").getTime();
334447
334447
  if (isNaN(buildTime))
334448
334448
  return;
334449
334449
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -342339,15 +342339,15 @@ function transformPluginSkillFiles(files) {
342339
342339
  async function loadCommandsFromDirectory(commandsPath, pluginName, sourceName, pluginManifest, pluginPath, config = { isSkillMode: false }, loadedPaths = new Set) {
342340
342340
  const markdownFiles = await collectMarkdownFiles(commandsPath, commandsPath, loadedPaths);
342341
342341
  const processedFiles = transformPluginSkillFiles(markdownFiles);
342342
- const commands2 = [];
342342
+ const commands = [];
342343
342343
  for (const file of processedFiles) {
342344
342344
  const commandName = getCommandNameFromFile(file.filePath, file.baseDir, pluginName);
342345
342345
  const command = createPluginCommand(commandName, file, sourceName, pluginManifest, pluginPath, isSkillFile2(file.filePath), config);
342346
342346
  if (command) {
342347
- commands2.push(command);
342347
+ commands.push(command);
342348
342348
  }
342349
342349
  }
342350
- return commands2;
342350
+ return commands;
342351
342351
  }
342352
342352
  function createPluginCommand(commandName, file, sourceName, pluginManifest, pluginPath, isSkill, config = { isSkillMode: false }) {
342353
342353
  try {
@@ -342573,10 +342573,10 @@ var init_loadPluginCommands = __esm(() => {
342573
342573
  const pluginCommands = [];
342574
342574
  if (plugin.commandsPath) {
342575
342575
  try {
342576
- const commands2 = await loadCommandsFromDirectory(plugin.commandsPath, plugin.name, plugin.source, plugin.manifest, plugin.path, { isSkillMode: false }, loadedPaths);
342577
- pluginCommands.push(...commands2);
342578
- if (commands2.length > 0) {
342579
- logForDebugging(`Loaded ${commands2.length} commands from plugin ${plugin.name} default directory`);
342576
+ const commands = await loadCommandsFromDirectory(plugin.commandsPath, plugin.name, plugin.source, plugin.manifest, plugin.path, { isSkillMode: false }, loadedPaths);
342577
+ pluginCommands.push(...commands);
342578
+ if (commands.length > 0) {
342579
+ logForDebugging(`Loaded ${commands.length} commands from plugin ${plugin.name} default directory`);
342580
342580
  }
342581
342581
  } catch (error5) {
342582
342582
  logForDebugging(`Failed to load commands from plugin ${plugin.name} default directory: ${error5}`, { level: "error" });
@@ -342590,13 +342590,13 @@ var init_loadPluginCommands = __esm(() => {
342590
342590
  const stats2 = await fs4.stat(commandPath);
342591
342591
  logForDebugging(`Checking commandPath ${commandPath} - isDirectory: ${stats2.isDirectory()}, isFile: ${stats2.isFile()}`);
342592
342592
  if (stats2.isDirectory()) {
342593
- const commands2 = await loadCommandsFromDirectory(commandPath, plugin.name, plugin.source, plugin.manifest, plugin.path, { isSkillMode: false }, loadedPaths);
342594
- if (commands2.length > 0) {
342595
- logForDebugging(`Loaded ${commands2.length} commands from plugin ${plugin.name} custom path: ${commandPath}`);
342593
+ const commands = await loadCommandsFromDirectory(commandPath, plugin.name, plugin.source, plugin.manifest, plugin.path, { isSkillMode: false }, loadedPaths);
342594
+ if (commands.length > 0) {
342595
+ logForDebugging(`Loaded ${commands.length} commands from plugin ${plugin.name} custom path: ${commandPath}`);
342596
342596
  } else {
342597
342597
  logForDebugging(`Warning: No commands found in plugin ${plugin.name} custom directory: ${commandPath}. Expected .md files or SKILL.md in subdirectories.`, { level: "warn" });
342598
342598
  }
342599
- return commands2;
342599
+ return commands;
342600
342600
  } else if (stats2.isFile() && commandPath.endsWith(".md")) {
342601
342601
  if (isDuplicatePath(fs4, commandPath, loadedPaths)) {
342602
342602
  return [];
@@ -342655,8 +342655,8 @@ var init_loadPluginCommands = __esm(() => {
342655
342655
  return [];
342656
342656
  }
342657
342657
  }));
342658
- for (const commands2 of pathResults) {
342659
- pluginCommands.push(...commands2);
342658
+ for (const commands of pathResults) {
342659
+ pluginCommands.push(...commands);
342660
342660
  }
342661
342661
  }
342662
342662
  if (plugin.commandsMetadata) {
@@ -349912,12 +349912,12 @@ function createSystemMessage(content, level, toolUseID, preventContinuation) {
349912
349912
  ...preventContinuation && { preventContinuation }
349913
349913
  };
349914
349914
  }
349915
- function createPermissionRetryMessage(commands2) {
349915
+ function createPermissionRetryMessage(commands) {
349916
349916
  return {
349917
349917
  type: "system",
349918
349918
  subtype: "permission_retry",
349919
- content: `Allowed ${commands2.join(", ")}`,
349920
- commands: commands2,
349919
+ content: `Allowed ${commands.join(", ")}`,
349920
+ commands,
349921
349921
  level: "info",
349922
349922
  isMeta: false,
349923
349923
  timestamp: new Date().toISOString(),
@@ -358509,7 +358509,7 @@ function Feedback({
358509
358509
  platform: env4.platform,
358510
358510
  gitRepo: envInfo.isGit,
358511
358511
  terminal: env4.terminal,
358512
- version: "1.1.17",
358512
+ version: "1.1.18",
358513
358513
  transcript: normalizeMessagesForAPI(messages),
358514
358514
  errors: sanitizedErrors,
358515
358515
  lastApiRequest: getLastAPIRequest(),
@@ -358701,7 +358701,7 @@ function Feedback({
358701
358701
  ", ",
358702
358702
  env4.terminal,
358703
358703
  ", v",
358704
- "1.1.17"
358704
+ "1.1.18"
358705
358705
  ]
358706
358706
  }, undefined, true, undefined, this)
358707
358707
  ]
@@ -358807,7 +358807,7 @@ ${sanitizedDescription}
358807
358807
  ` + `**Environment Info**
358808
358808
  ` + `- Platform: ${env4.platform}
358809
358809
  ` + `- Terminal: ${env4.terminal}
358810
- ` + `- Version: ${"1.1.17"}
358810
+ ` + `- Version: ${"1.1.18"}
358811
358811
  ` + `- Feedback ID: ${feedbackId}
358812
358812
  ` + `
358813
358813
  **Errors**
@@ -361920,7 +361920,7 @@ function buildPrimarySection() {
361920
361920
  }, undefined, false, undefined, this);
361921
361921
  return [{
361922
361922
  label: "Version",
361923
- value: "1.1.17"
361923
+ value: "1.1.18"
361924
361924
  }, {
361925
361925
  label: "Session name",
361926
361926
  value: nameValue
@@ -366538,7 +366538,7 @@ function Config({
366538
366538
  }
366539
366539
  }, undefined, false, undefined, this)
366540
366540
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
366541
- currentVersion: "1.1.17",
366541
+ currentVersion: "1.1.18",
366542
366542
  onChoice: (choice) => {
366543
366543
  setShowSubmenu(null);
366544
366544
  setTabsHidden(false);
@@ -366550,7 +366550,7 @@ function Config({
366550
366550
  autoUpdatesChannel: "stable"
366551
366551
  };
366552
366552
  if (choice === "stay") {
366553
- newSettings.minimumVersion = "1.1.17";
366553
+ newSettings.minimumVersion = "1.1.18";
366554
366554
  }
366555
366555
  updateSettingsForSource("userSettings", newSettings);
366556
366556
  setSettingsData((prev_27) => ({
@@ -373971,12 +373971,12 @@ ${HEARTBEAT_FREE_ROAM}
373971
373971
  ${telegramMsg}
373972
373972
  ━━━ (handle this, then continue your work) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
373973
373973
  ` : "";
373974
- return `[HEARTBEAT — BEAT ${beat} — localClawd autonomous pulse]
373974
+ return `[HEARTBEAT — BEAT ${beat} — localclawd autonomous pulse]
373975
373975
  ${taskSection}${telegramSection}
373976
373976
  ${THINKHARDER_ROUND_PROMPT}
373977
373977
 
373978
373978
  ━━━ HEARTBEAT RULES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
373979
- You are localClawd running in heartbeat mode. You wake on a timer.
373979
+ You are localclawd running in heartbeat mode. You wake on a timer.
373980
373980
  • The human cannot stop you — only Ctrl+C ends heartbeat mode
373981
373981
  • Do your best work, then sleep until the next beat
373982
373982
  • You do NOT need to emit TASK COMPLETE — just finish and wait
@@ -374121,7 +374121,7 @@ ${preview}`);
374121
374121
  }
374122
374122
  const prompt = buildHeartbeatPrompt(currentBeat, currentTask, telegramMsg);
374123
374123
  if (currentBeat === 1 && isTelegramActive()) {
374124
- sendTelegramMessage(`♥ *localClawd heartbeat started*
374124
+ sendTelegramMessage(`♥ *localclawd heartbeat started*
374125
374125
  Interval: ${currentInterval}m
374126
374126
  ${currentTask ? `Task: ${currentTask}` : "Free-roaming mode"}`);
374127
374127
  }
@@ -375464,7 +375464,7 @@ var init_memory2 = __esm(() => {
375464
375464
  function Commands(t0) {
375465
375465
  const $2 = c3(14);
375466
375466
  const {
375467
- commands: commands2,
375467
+ commands,
375468
375468
  maxHeight,
375469
375469
  columns,
375470
375470
  title,
@@ -375478,7 +375478,7 @@ function Commands(t0) {
375478
375478
  const maxWidth = Math.max(1, columns - 10);
375479
375479
  const visibleCount = Math.max(1, Math.floor((maxHeight - 10) / 2));
375480
375480
  let t1;
375481
- if ($2[0] !== commands2 || $2[1] !== maxWidth) {
375481
+ if ($2[0] !== commands || $2[1] !== maxWidth) {
375482
375482
  const seen = new Set;
375483
375483
  let t22;
375484
375484
  if ($2[3] !== maxWidth) {
@@ -375492,14 +375492,14 @@ function Commands(t0) {
375492
375492
  } else {
375493
375493
  t22 = $2[4];
375494
375494
  }
375495
- t1 = commands2.filter((cmd) => {
375495
+ t1 = commands.filter((cmd) => {
375496
375496
  if (seen.has(cmd.name)) {
375497
375497
  return false;
375498
375498
  }
375499
375499
  seen.add(cmd.name);
375500
375500
  return true;
375501
375501
  }).sort(_temp87).map(t22);
375502
- $2[0] = commands2;
375502
+ $2[0] = commands;
375503
375503
  $2[1] = maxWidth;
375504
375504
  $2[2] = t1;
375505
375505
  } else {
@@ -375507,11 +375507,11 @@ function Commands(t0) {
375507
375507
  }
375508
375508
  const options = t1;
375509
375509
  let t2;
375510
- if ($2[5] !== commands2.length || $2[6] !== emptyMessage || $2[7] !== focusHeader || $2[8] !== headerFocused || $2[9] !== onCancel || $2[10] !== options || $2[11] !== title || $2[12] !== visibleCount) {
375510
+ if ($2[5] !== commands.length || $2[6] !== emptyMessage || $2[7] !== focusHeader || $2[8] !== headerFocused || $2[9] !== onCancel || $2[10] !== options || $2[11] !== title || $2[12] !== visibleCount) {
375511
375511
  t2 = /* @__PURE__ */ jsx_dev_runtime211.jsxDEV(ThemedBox_default, {
375512
375512
  flexDirection: "column",
375513
375513
  paddingY: 1,
375514
- children: commands2.length === 0 && emptyMessage ? /* @__PURE__ */ jsx_dev_runtime211.jsxDEV(ThemedText, {
375514
+ children: commands.length === 0 && emptyMessage ? /* @__PURE__ */ jsx_dev_runtime211.jsxDEV(ThemedText, {
375515
375515
  dimColor: true,
375516
375516
  children: emptyMessage
375517
375517
  }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime211.jsxDEV(jsx_dev_runtime211.Fragment, {
@@ -375535,7 +375535,7 @@ function Commands(t0) {
375535
375535
  ]
375536
375536
  }, undefined, true, undefined, this)
375537
375537
  }, undefined, false, undefined, this);
375538
- $2[5] = commands2.length;
375538
+ $2[5] = commands.length;
375539
375539
  $2[6] = emptyMessage;
375540
375540
  $2[7] = focusHeader;
375541
375541
  $2[8] = headerFocused;
@@ -376156,7 +376156,7 @@ function HelpV2(t0) {
376156
376156
  const $2 = c3(44);
376157
376157
  const {
376158
376158
  onClose,
376159
- commands: commands2
376159
+ commands
376160
376160
  } = t0;
376161
376161
  const {
376162
376162
  rows,
@@ -376190,9 +376190,9 @@ function HelpV2(t0) {
376190
376190
  let antOnlyCommands;
376191
376191
  let builtinCommands;
376192
376192
  let t3;
376193
- if ($2[3] !== commands2) {
376193
+ if ($2[3] !== commands) {
376194
376194
  const builtinNames = builtInCommandNames();
376195
- builtinCommands = commands2.filter((cmd) => builtinNames.has(cmd.name) && !cmd.isHidden);
376195
+ builtinCommands = commands.filter((cmd) => builtinNames.has(cmd.name) && !cmd.isHidden);
376196
376196
  let t42;
376197
376197
  if ($2[7] === Symbol.for("react.memo_cache_sentinel")) {
376198
376198
  t42 = [];
@@ -376201,8 +376201,8 @@ function HelpV2(t0) {
376201
376201
  t42 = $2[7];
376202
376202
  }
376203
376203
  antOnlyCommands = t42;
376204
- t3 = commands2.filter((cmd_2) => !builtinNames.has(cmd_2.name) && !cmd_2.isHidden);
376205
- $2[3] = commands2;
376204
+ t3 = commands.filter((cmd_2) => !builtinNames.has(cmd_2.name) && !cmd_2.isHidden);
376205
+ $2[3] = commands;
376206
376206
  $2[4] = antOnlyCommands;
376207
376207
  $2[5] = builtinCommands;
376208
376208
  $2[6] = t3;
@@ -376283,7 +376283,7 @@ function HelpV2(t0) {
376283
376283
  let t6;
376284
376284
  if ($2[31] !== tabs) {
376285
376285
  t6 = /* @__PURE__ */ jsx_dev_runtime214.jsxDEV(Tabs, {
376286
- title: `localclawd v${"1.1.17"}`,
376286
+ title: `localclawd v${"1.1.18"}`,
376287
376287
  color: "professionalBlue",
376288
376288
  defaultTab: "general",
376289
376289
  children: tabs
@@ -376393,11 +376393,11 @@ __export(exports_help, {
376393
376393
  });
376394
376394
  var jsx_dev_runtime215, call29 = async (onDone, {
376395
376395
  options: {
376396
- commands: commands2
376396
+ commands
376397
376397
  }
376398
376398
  }) => {
376399
376399
  return /* @__PURE__ */ jsx_dev_runtime215.jsxDEV(HelpV2, {
376400
- commands: commands2,
376400
+ commands,
376401
376401
  onClose: onDone
376402
376402
  }, undefined, false, undefined, this);
376403
376403
  };
@@ -382371,15 +382371,15 @@ function useManageMCPConnections(dynamicMcpConfig, isStrictMcpConfig = false) {
382371
382371
  ...client4
382372
382372
  } = update;
382373
382373
  const tools = client4.type === "disabled" || client4.type === "failed" ? rawTools ?? [] : rawTools;
382374
- const commands2 = client4.type === "disabled" || client4.type === "failed" ? rawCmds ?? [] : rawCmds;
382374
+ const commands = client4.type === "disabled" || client4.type === "failed" ? rawCmds ?? [] : rawCmds;
382375
382375
  const resources = client4.type === "disabled" || client4.type === "failed" ? rawRes ?? [] : rawRes;
382376
382376
  const prefix = getMcpPrefix(client4.name);
382377
382377
  const existingClientIndex = mcp.clients.findIndex((c5) => c5.name === client4.name);
382378
382378
  const updatedClients = existingClientIndex === -1 ? [...mcp.clients, client4] : mcp.clients.map((c5) => c5.name === client4.name ? client4 : c5);
382379
382379
  const updatedTools = tools === undefined ? mcp.tools : [...reject_default(mcp.tools, (t) => t.name?.startsWith(prefix)), ...tools];
382380
- const updatedCommands = commands2 === undefined ? mcp.commands : [
382380
+ const updatedCommands = commands === undefined ? mcp.commands : [
382381
382381
  ...reject_default(mcp.commands, (c5) => commandBelongsToServer(c5, client4.name)),
382382
- ...commands2
382382
+ ...commands
382383
382383
  ];
382384
382384
  const updatedResources = resources === undefined ? mcp.resources : {
382385
382385
  ...mcp.resources,
@@ -382405,10 +382405,10 @@ function useManageMCPConnections(dynamicMcpConfig, isStrictMcpConfig = false) {
382405
382405
  const onConnectionAttempt = import_react125.useCallback(({
382406
382406
  client: client4,
382407
382407
  tools,
382408
- commands: commands2,
382408
+ commands,
382409
382409
  resources
382410
382410
  }) => {
382411
- updateServer({ ...client4, tools, commands: commands2, resources });
382411
+ updateServer({ ...client4, tools, commands, resources });
382412
382412
  switch (client4.type) {
382413
382413
  case "connected": {
382414
382414
  registerElicitationHandler(client4.client, client4.name, setAppState);
@@ -393602,8 +393602,8 @@ async function validatePluginManifest(filePath) {
393602
393602
  if (parsed && typeof parsed === "object") {
393603
393603
  const obj = parsed;
393604
393604
  if (obj.commands) {
393605
- const commands2 = Array.isArray(obj.commands) ? obj.commands : [obj.commands];
393606
- commands2.forEach((cmd, i2) => {
393605
+ const commands = Array.isArray(obj.commands) ? obj.commands : [obj.commands];
393606
+ commands.forEach((cmd, i2) => {
393607
393607
  if (typeof cmd === "string") {
393608
393608
  checkPathTraversal(cmd, `commands[${i2}]`, errors);
393609
393609
  }
@@ -400441,7 +400441,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
400441
400441
  return [];
400442
400442
  }
400443
400443
  }
400444
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.17") {
400444
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.18") {
400445
400445
  if (process.env.USER_TYPE === "ant") {
400446
400446
  const changelog = MACRO.VERSION_CHANGELOG;
400447
400447
  if (changelog) {
@@ -400468,7 +400468,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.17")
400468
400468
  releaseNotes
400469
400469
  };
400470
400470
  }
400471
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.17") {
400471
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.18") {
400472
400472
  if (process.env.USER_TYPE === "ant") {
400473
400473
  const changelog = MACRO.VERSION_CHANGELOG;
400474
400474
  if (changelog) {
@@ -401635,7 +401635,7 @@ function getRecentActivitySync() {
401635
401635
  return cachedActivity;
401636
401636
  }
401637
401637
  function getLogoDisplayData() {
401638
- const version = process.env.DEMO_VERSION ?? "1.1.17";
401638
+ const version = process.env.DEMO_VERSION ?? "1.1.18";
401639
401639
  const serverUrl = getDirectConnectServerUrl();
401640
401640
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
401641
401641
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -402909,7 +402909,7 @@ function LogoV2() {
402909
402909
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
402910
402910
  t2 = () => {
402911
402911
  const currentConfig = getGlobalConfig();
402912
- if (currentConfig.lastReleaseNotesSeen === "1.1.17") {
402912
+ if (currentConfig.lastReleaseNotesSeen === "1.1.18") {
402913
402913
  return;
402914
402914
  }
402915
402915
  saveGlobalConfig(_temp327);
@@ -403585,12 +403585,12 @@ function LogoV2() {
403585
403585
  return t41;
403586
403586
  }
403587
403587
  function _temp327(current) {
403588
- if (current.lastReleaseNotesSeen === "1.1.17") {
403588
+ if (current.lastReleaseNotesSeen === "1.1.18") {
403589
403589
  return current;
403590
403590
  }
403591
403591
  return {
403592
403592
  ...current,
403593
- lastReleaseNotesSeen: "1.1.17"
403593
+ lastReleaseNotesSeen: "1.1.18"
403594
403594
  };
403595
403595
  }
403596
403596
  function _temp245(s_0) {
@@ -403793,7 +403793,7 @@ function MessageRowImpl(t0) {
403793
403793
  isUserContinuation,
403794
403794
  hasContentAfter,
403795
403795
  tools,
403796
- commands: commands2,
403796
+ commands,
403797
403797
  verbose,
403798
403798
  inProgressToolUseIDs,
403799
403799
  streamingToolUseIDs,
@@ -403925,14 +403925,14 @@ function MessageRowImpl(t0) {
403925
403925
  const t6 = !hasMetadata;
403926
403926
  const t7 = hasMetadata ? undefined : columns;
403927
403927
  let t8;
403928
- if ($2[37] !== commands2 || $2[38] !== inProgressToolUseIDs || $2[39] !== isActiveCollapsedGroup || $2[40] !== isStatic || $2[41] !== isTranscriptMode || $2[42] !== isUserContinuation || $2[43] !== lastThinkingBlockId || $2[44] !== latestBashOutputUUID || $2[45] !== lookups || $2[46] !== msg || $2[47] !== onOpenRateLimitOptions || $2[48] !== progressMessagesForMessage || $2[49] !== shouldAnimate || $2[50] !== t6 || $2[51] !== t7 || $2[52] !== tools || $2[53] !== verbose) {
403928
+ if ($2[37] !== commands || $2[38] !== inProgressToolUseIDs || $2[39] !== isActiveCollapsedGroup || $2[40] !== isStatic || $2[41] !== isTranscriptMode || $2[42] !== isUserContinuation || $2[43] !== lastThinkingBlockId || $2[44] !== latestBashOutputUUID || $2[45] !== lookups || $2[46] !== msg || $2[47] !== onOpenRateLimitOptions || $2[48] !== progressMessagesForMessage || $2[49] !== shouldAnimate || $2[50] !== t6 || $2[51] !== t7 || $2[52] !== tools || $2[53] !== verbose) {
403929
403929
  t8 = /* @__PURE__ */ jsx_dev_runtime269.jsxDEV(Message, {
403930
403930
  message: msg,
403931
403931
  lookups,
403932
403932
  addMargin: t6,
403933
403933
  containerWidth: t7,
403934
403934
  tools,
403935
- commands: commands2,
403935
+ commands,
403936
403936
  verbose,
403937
403937
  inProgressToolUseIDs,
403938
403938
  progressMessagesForMessage,
@@ -403946,7 +403946,7 @@ function MessageRowImpl(t0) {
403946
403946
  lastThinkingBlockId,
403947
403947
  latestBashOutputUUID
403948
403948
  }, undefined, false, undefined, this);
403949
- $2[37] = commands2;
403949
+ $2[37] = commands;
403950
403950
  $2[38] = inProgressToolUseIDs;
403951
403951
  $2[39] = isActiveCollapsedGroup;
403952
403952
  $2[40] = isStatic;
@@ -406342,7 +406342,7 @@ function shouldRenderStatically(message, streamingToolUseIDs, inProgressToolUseI
406342
406342
  var React93, import_react157, jsx_dev_runtime275, LogoHeader, proactiveModule2 = null, BRIEF_TOOL_NAME4 = null, SEND_USER_FILE_TOOL_NAME2 = null, MAX_MESSAGES_TO_SHOW_IN_TRANSCRIPT_MODE = 30, MAX_MESSAGES_WITHOUT_VIRTUALIZATION = 200, MESSAGE_CAP_STEP = 50, MessagesImpl = ({
406343
406343
  messages,
406344
406344
  tools,
406345
- commands: commands2,
406345
+ commands,
406346
406346
  verbose,
406347
406347
  toolJSX,
406348
406348
  toolUseConfirmQueue,
@@ -406546,7 +406546,7 @@ var React93, import_react157, jsx_dev_runtime275, LogoHeader, proactiveModule2 =
406546
406546
  isUserContinuation,
406547
406547
  hasContentAfter,
406548
406548
  tools,
406549
- commands: commands2,
406549
+ commands,
406550
406550
  verbose: verbose || isItemExpanded(msg_8) || cursor?.expanded === true && index === selectedIdx,
406551
406551
  inProgressToolUseIDs,
406552
406552
  streamingToolUseIDs,
@@ -410472,12 +410472,12 @@ function SkillsMenu(t0) {
410472
410472
  const $2 = c3(35);
410473
410473
  const {
410474
410474
  onExit: onExit2,
410475
- commands: commands2
410475
+ commands
410476
410476
  } = t0;
410477
410477
  let t1;
410478
- if ($2[0] !== commands2) {
410479
- t1 = commands2.filter(_temp129);
410480
- $2[0] = commands2;
410478
+ if ($2[0] !== commands) {
410479
+ t1 = commands.filter(_temp129);
410480
+ $2[0] = commands;
410481
410481
  $2[1] = t1;
410482
410482
  } else {
410483
410483
  t1 = $2[1];
@@ -419224,11 +419224,11 @@ function PermissionRuleList(t0) {
419224
419224
  const denialsFor = (set2) => Array.from(set2).map((idx) => s_1.denials[idx]).filter(_temp258);
419225
419225
  const retryDenials = denialsFor(s_1.retry);
419226
419226
  if (retryDenials.length > 0) {
419227
- const commands2 = retryDenials.map(_temp333);
419228
- onRetryDenials?.(commands2);
419227
+ const commands = retryDenials.map(_temp333);
419228
+ onRetryDenials?.(commands);
419229
419229
  onExit2(undefined, {
419230
419230
  shouldQuery: true,
419231
- metaMessages: [`Permission granted for: ${commands2.join(", ")}. You may now retry ${commands2.length === 1 ? "this command" : "these commands"} if you would like.`]
419231
+ metaMessages: [`Permission granted for: ${commands.join(", ")}. You may now retry ${commands.length === 1 ? "this command" : "these commands"} if you would like.`]
419232
419232
  });
419233
419233
  return;
419234
419234
  }
@@ -419756,8 +419756,8 @@ __export(exports_permissions, {
419756
419756
  var jsx_dev_runtime308, call50 = async (onDone, context8) => {
419757
419757
  return /* @__PURE__ */ jsx_dev_runtime308.jsxDEV(PermissionRuleList, {
419758
419758
  onExit: onDone,
419759
- onRetryDenials: (commands2) => {
419760
- context8.setMessages((prev) => [...prev, createPermissionRetryMessage(commands2)]);
419759
+ onRetryDenials: (commands) => {
419760
+ context8.setMessages((prev) => [...prev, createPermissionRetryMessage(commands)]);
419761
419761
  }
419762
419762
  }, undefined, false, undefined, this);
419763
419763
  };
@@ -429792,7 +429792,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
429792
429792
  smapsRollup,
429793
429793
  platform: process.platform,
429794
429794
  nodeVersion: process.version,
429795
- ccVersion: "1.1.17"
429795
+ ccVersion: "1.1.18"
429796
429796
  };
429797
429797
  }
429798
429798
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -430377,7 +430377,7 @@ var init_bridge_kick = __esm(() => {
430377
430377
  var call64 = async () => {
430378
430378
  return {
430379
430379
  type: "text",
430380
- value: `${"1.1.17"} (built ${"2026-04-08T23:07:42.054Z"})`
430380
+ value: `${"1.1.18"} (built ${"2026-04-09T14:11:44.775Z"})`
430381
430381
  };
430382
430382
  }, version, version_default;
430383
430383
  var init_version = __esm(() => {
@@ -439315,7 +439315,7 @@ function generateHtmlReport(data, insights) {
439315
439315
  </html>`;
439316
439316
  }
439317
439317
  function buildExportData(data, insights, facets, remoteStats) {
439318
- const version2 = typeof MACRO !== "undefined" ? "1.1.17" : "unknown";
439318
+ const version2 = typeof MACRO !== "undefined" ? "1.1.18" : "unknown";
439319
439319
  const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
439320
439320
  const facets_summary = {
439321
439321
  total: facets.size,
@@ -440194,19 +440194,19 @@ function isBridgeSafeCommand(cmd) {
440194
440194
  return true;
440195
440195
  return BRIDGE_SAFE_COMMANDS.has(cmd);
440196
440196
  }
440197
- function filterCommandsForRemoteMode(commands2) {
440198
- return commands2.filter((cmd) => REMOTE_SAFE_COMMANDS.has(cmd));
440197
+ function filterCommandsForRemoteMode(commands) {
440198
+ return commands.filter((cmd) => REMOTE_SAFE_COMMANDS.has(cmd));
440199
440199
  }
440200
- function findCommand(commandName, commands2) {
440201
- return commands2.find((_2) => _2.name === commandName || getCommandName(_2) === commandName || _2.aliases?.includes(commandName));
440200
+ function findCommand(commandName, commands) {
440201
+ return commands.find((_2) => _2.name === commandName || getCommandName(_2) === commandName || _2.aliases?.includes(commandName));
440202
440202
  }
440203
- function hasCommand(commandName, commands2) {
440204
- return findCommand(commandName, commands2) !== undefined;
440203
+ function hasCommand(commandName, commands) {
440204
+ return findCommand(commandName, commands) !== undefined;
440205
440205
  }
440206
- function getCommand(commandName, commands2) {
440207
- const command8 = findCommand(commandName, commands2);
440206
+ function getCommand(commandName, commands) {
440207
+ const command8 = findCommand(commandName, commands);
440208
440208
  if (!command8) {
440209
- throw ReferenceError(`Command ${commandName} not found. Available commands: ${commands2.map((_2) => {
440209
+ throw ReferenceError(`Command ${commandName} not found. Available commands: ${commands.map((_2) => {
440210
440210
  const name = getCommandName(_2);
440211
440211
  return _2.aliases ? `${name} (aliases: ${_2.aliases.join(", ")})` : name;
440212
440212
  }).sort((a, b3) => a.localeCompare(b3)).join(", ")}`);
@@ -443482,7 +443482,7 @@ var init_sessionStorage = __esm(() => {
443482
443482
  init_settings2();
443483
443483
  init_slowOperations();
443484
443484
  init_uuid();
443485
- VERSION6 = typeof MACRO !== "undefined" ? "1.1.17" : "unknown";
443485
+ VERSION6 = typeof MACRO !== "undefined" ? "1.1.18" : "unknown";
443486
443486
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
443487
443487
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
443488
443488
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -444684,7 +444684,7 @@ var init_filesystem = __esm(() => {
444684
444684
  });
444685
444685
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
444686
444686
  const nonce = randomBytes19(16).toString("hex");
444687
- return join130(getClaudeTempDir(), "bundled-skills", "1.1.17", nonce);
444687
+ return join130(getClaudeTempDir(), "bundled-skills", "1.1.18", nonce);
444688
444688
  });
444689
444689
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
444690
444690
  });
@@ -450031,7 +450031,7 @@ Date: ${getSessionStartDate()}`
450031
450031
  ];
450032
450032
  const resolvedDynamicSections = await resolveSystemPromptSections(dynamicSections);
450033
450033
  return [
450034
- `You are localClawd — a local-first autonomous coding agent. You were built on Claude but you refer to yourself as "localClawd" in all interactions. Never say "I am Claude" — always say "I am localClawd" if asked who you are.`,
450034
+ `You are localclawd — a local-first autonomous coding agent. You were built on Claude but you refer to yourself as "localclawd" in all interactions. Never say "I am Claude" — always say "I am localclawd" if asked who you are.`,
450035
450035
  getSimpleIntroSection(outputStyleConfig),
450036
450036
  getSimpleSystemSection(),
450037
450037
  outputStyleConfig === null || outputStyleConfig.keepCodingInstructions === true ? getSimpleDoingTasksSection() : null,
@@ -450683,7 +450683,7 @@ function computeFingerprint(messageText, version2) {
450683
450683
  }
450684
450684
  function computeFingerprintFromMessages(messages) {
450685
450685
  const firstMessageText = extractFirstMessageText(messages);
450686
- return computeFingerprint(firstMessageText, "1.1.17");
450686
+ return computeFingerprint(firstMessageText, "1.1.18");
450687
450687
  }
450688
450688
  var FINGERPRINT_SALT = "59cf53e54c78";
450689
450689
  var init_fingerprint = () => {};
@@ -452538,7 +452538,7 @@ async function sideQuery(opts) {
452538
452538
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
452539
452539
  }
452540
452540
  const messageText = extractFirstUserMessageText(messages);
452541
- const fingerprint = computeFingerprint(messageText, "1.1.17");
452541
+ const fingerprint = computeFingerprint(messageText, "1.1.18");
452542
452542
  const attributionHeader = getAttributionHeader(fingerprint);
452543
452543
  const systemBlocks = [
452544
452544
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -453483,8 +453483,8 @@ var require_help = __commonJS((exports) => {
453483
453483
  output = output.concat(this.formatItemList("Global Options:", globalOptionList, helper));
453484
453484
  }
453485
453485
  const commandGroups = this.groupItems(cmd.commands, helper.visibleCommands(cmd), (sub) => sub.helpGroup() || "Commands:");
453486
- commandGroups.forEach((commands2, group) => {
453487
- const commandList = commands2.map((sub) => {
453486
+ commandGroups.forEach((commands, group) => {
453487
+ const commandList = commands.map((sub) => {
453488
453488
  return callFormatItem(helper.styleSubcommandTerm(helper.subcommandTerm(sub)), helper.styleSubcommandDescription(helper.subcommandDescription(sub)));
453489
453489
  });
453490
453490
  output = output.concat(this.formatItemList(group, commandList, helper));
@@ -457336,7 +457336,7 @@ function buildSystemInitMessage(inputs) {
457336
457336
  slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
457337
457337
  apiKeySource: getAnthropicApiKeyWithSource().source,
457338
457338
  betas: getSdkBetas(),
457339
- claude_code_version: "1.1.17",
457339
+ claude_code_version: "1.1.18",
457340
457340
  output_style: outputStyle2,
457341
457341
  agents: inputs.agents.map((agent) => agent.agentType),
457342
457342
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -457362,7 +457362,7 @@ var init_systemInit = __esm(() => {
457362
457362
  });
457363
457363
 
457364
457364
  // src/hooks/useReplBridge.tsx
457365
- function useReplBridge(messages, setMessages, abortControllerRef, commands2, mainLoopModel) {
457365
+ function useReplBridge(messages, setMessages, abortControllerRef, commands, mainLoopModel) {
457366
457366
  const handleRef = import_react199.useRef(null);
457367
457367
  const teardownPromiseRef = import_react199.useRef(undefined);
457368
457368
  const lastWrittenIndexRef = import_react199.useRef(0);
@@ -457370,8 +457370,8 @@ function useReplBridge(messages, setMessages, abortControllerRef, commands2, mai
457370
457370
  const failureTimeoutRef = import_react199.useRef(undefined);
457371
457371
  const consecutiveFailuresRef = import_react199.useRef(0);
457372
457372
  const setAppState = useSetAppState();
457373
- const commandsRef = import_react199.useRef(commands2);
457374
- commandsRef.current = commands2;
457373
+ const commandsRef = import_react199.useRef(commands);
457374
+ commandsRef.current = commands;
457375
457375
  const mainLoopModelRef = import_react199.useRef(mainLoopModel);
457376
457376
  mainLoopModelRef.current = mainLoopModel;
457377
457377
  const messagesRef = import_react199.useRef(messages);
@@ -464661,26 +464661,26 @@ var init_useShellPermissionFeedback = __esm(() => {
464661
464661
 
464662
464662
  // src/components/permissions/shellPermissionHelpers.tsx
464663
464663
  import { basename as basename47, sep as sep34 } from "path";
464664
- function commandListDisplay(commands2) {
464665
- switch (commands2.length) {
464664
+ function commandListDisplay(commands) {
464665
+ switch (commands.length) {
464666
464666
  case 0:
464667
464667
  return "";
464668
464668
  case 1:
464669
464669
  return /* @__PURE__ */ jsx_dev_runtime393.jsxDEV(ThemedText, {
464670
464670
  bold: true,
464671
- children: commands2[0]
464671
+ children: commands[0]
464672
464672
  }, undefined, false, undefined, this);
464673
464673
  case 2:
464674
464674
  return /* @__PURE__ */ jsx_dev_runtime393.jsxDEV(ThemedText, {
464675
464675
  children: [
464676
464676
  /* @__PURE__ */ jsx_dev_runtime393.jsxDEV(ThemedText, {
464677
464677
  bold: true,
464678
- children: commands2[0]
464678
+ children: commands[0]
464679
464679
  }, undefined, false, undefined, this),
464680
464680
  " and ",
464681
464681
  /* @__PURE__ */ jsx_dev_runtime393.jsxDEV(ThemedText, {
464682
464682
  bold: true,
464683
- children: commands2[1]
464683
+ children: commands[1]
464684
464684
  }, undefined, false, undefined, this)
464685
464685
  ]
464686
464686
  }, undefined, true, undefined, this);
@@ -464689,24 +464689,24 @@ function commandListDisplay(commands2) {
464689
464689
  children: [
464690
464690
  /* @__PURE__ */ jsx_dev_runtime393.jsxDEV(ThemedText, {
464691
464691
  bold: true,
464692
- children: commands2.slice(0, -1).join(", ")
464692
+ children: commands.slice(0, -1).join(", ")
464693
464693
  }, undefined, false, undefined, this),
464694
464694
  ", and",
464695
464695
  " ",
464696
464696
  /* @__PURE__ */ jsx_dev_runtime393.jsxDEV(ThemedText, {
464697
464697
  bold: true,
464698
- children: commands2.slice(-1)[0]
464698
+ children: commands.slice(-1)[0]
464699
464699
  }, undefined, false, undefined, this)
464700
464700
  ]
464701
464701
  }, undefined, true, undefined, this);
464702
464702
  }
464703
464703
  }
464704
- function commandListDisplayTruncated(commands2) {
464705
- const plainText = commands2.join(", ");
464704
+ function commandListDisplayTruncated(commands) {
464705
+ const plainText = commands.join(", ");
464706
464706
  if (plainText.length > 50) {
464707
464707
  return "similar";
464708
464708
  }
464709
- return commandListDisplay(commands2);
464709
+ return commandListDisplay(commands);
464710
464710
  }
464711
464711
  function formatPathList(paths2) {
464712
464712
  if (paths2.length === 0)
@@ -468303,13 +468303,13 @@ async function getCompoundCommandPrefixesStatic2(command8, excludeSubcommand) {
468303
468303
  if (!parsed.valid) {
468304
468304
  return [];
468305
468305
  }
468306
- const commands2 = getAllCommands2(parsed).filter((cmd) => cmd.elementType === "CommandAst");
468307
- if (commands2.length <= 1) {
468308
- const prefix = commands2[0] ? await extractPrefixFromElement(commands2[0]) : null;
468306
+ const commands = getAllCommands2(parsed).filter((cmd) => cmd.elementType === "CommandAst");
468307
+ if (commands.length <= 1) {
468308
+ const prefix = commands[0] ? await extractPrefixFromElement(commands[0]) : null;
468309
468309
  return prefix ? [prefix] : [];
468310
468310
  }
468311
468311
  const prefixes = [];
468312
- for (const cmd of commands2) {
468312
+ for (const cmd of commands) {
468313
468313
  if (excludeSubcommand?.(cmd)) {
468314
468314
  continue;
468315
468315
  }
@@ -471915,7 +471915,7 @@ var init_useVoiceEnabled = __esm(() => {
471915
471915
  function getSemverPart(version2) {
471916
471916
  return `${import_semver12.major(version2, { loose: true })}.${import_semver12.minor(version2, { loose: true })}.${import_semver12.patch(version2, { loose: true })}`;
471917
471917
  }
471918
- function useUpdateNotification(updatedVersion, initialVersion = "1.1.17") {
471918
+ function useUpdateNotification(updatedVersion, initialVersion = "1.1.18") {
471919
471919
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react228.useState(() => getSemverPart(initialVersion));
471920
471920
  if (!updatedVersion) {
471921
471921
  return null;
@@ -471955,7 +471955,7 @@ function AutoUpdater({
471955
471955
  return;
471956
471956
  }
471957
471957
  if (false) {}
471958
- const currentVersion = "1.1.17";
471958
+ const currentVersion = "1.1.18";
471959
471959
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
471960
471960
  let latestVersion = await getLatestVersion(channel);
471961
471961
  const isDisabled = isAutoUpdaterDisabled();
@@ -472166,12 +472166,12 @@ function NativeAutoUpdater({
472166
472166
  logEvent("tengu_native_auto_updater_start", {});
472167
472167
  try {
472168
472168
  const maxVersion = await getMaxVersion();
472169
- if (maxVersion && gt("1.1.17", maxVersion)) {
472169
+ if (maxVersion && gt("1.1.18", maxVersion)) {
472170
472170
  const msg = await getMaxVersionMessage();
472171
472171
  setMaxVersionIssue(msg ?? "affects your version");
472172
472172
  }
472173
472173
  const result = await installLatest(channel);
472174
- const currentVersion = "1.1.17";
472174
+ const currentVersion = "1.1.18";
472175
472175
  const latencyMs = Date.now() - startTime;
472176
472176
  if (result.lockFailed) {
472177
472177
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -472306,17 +472306,17 @@ function PackageManagerAutoUpdater(t0) {
472306
472306
  const maxVersion = await getMaxVersion();
472307
472307
  if (maxVersion && latest && gt(latest, maxVersion)) {
472308
472308
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
472309
- if (gte("1.1.17", maxVersion)) {
472310
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.17"} is already at or above maxVersion ${maxVersion}, skipping update`);
472309
+ if (gte("1.1.18", maxVersion)) {
472310
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.18"} is already at or above maxVersion ${maxVersion}, skipping update`);
472311
472311
  setUpdateAvailable(false);
472312
472312
  return;
472313
472313
  }
472314
472314
  latest = maxVersion;
472315
472315
  }
472316
- const hasUpdate = latest && !gte("1.1.17", latest) && !shouldSkipVersion(latest);
472316
+ const hasUpdate = latest && !gte("1.1.18", latest) && !shouldSkipVersion(latest);
472317
472317
  setUpdateAvailable(!!hasUpdate);
472318
472318
  if (hasUpdate) {
472319
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.17"} -> ${latest}`);
472319
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.18"} -> ${latest}`);
472320
472320
  }
472321
472321
  };
472322
472322
  $2[0] = t1;
@@ -472350,7 +472350,7 @@ function PackageManagerAutoUpdater(t0) {
472350
472350
  wrap: "truncate",
472351
472351
  children: [
472352
472352
  "currentVersion: ",
472353
- "1.1.17"
472353
+ "1.1.18"
472354
472354
  ]
472355
472355
  }, undefined, true, undefined, this);
472356
472356
  $2[3] = verbose;
@@ -475264,11 +475264,11 @@ var init_fuse = __esm(() => {
475264
475264
  });
475265
475265
 
475266
475266
  // src/utils/suggestions/commandSuggestions.ts
475267
- function getCommandFuse(commands2) {
475268
- if (fuseCache?.commands === commands2) {
475267
+ function getCommandFuse(commands) {
475268
+ if (fuseCache?.commands === commands) {
475269
475269
  return fuseCache.fuse;
475270
475270
  }
475271
- const commandData = commands2.filter((cmd) => !cmd.isHidden).map((cmd) => {
475271
+ const commandData = commands.filter((cmd) => !cmd.isHidden).map((cmd) => {
475272
475272
  const commandName = getCommandName(cmd);
475273
475273
  const parts = commandName.split(SEPARATORS).filter(Boolean);
475274
475274
  return {
@@ -475303,7 +475303,7 @@ function getCommandFuse(commands2) {
475303
475303
  }
475304
475304
  ]
475305
475305
  });
475306
- fuseCache = { commands: commands2, fuse };
475306
+ fuseCache = { commands, fuse };
475307
475307
  return fuse;
475308
475308
  }
475309
475309
  function isCommandMetadata(metadata) {
@@ -475331,11 +475331,11 @@ function findMidInputSlashCommand(input, cursorOffset) {
475331
475331
  partialCommand: fullCommand
475332
475332
  };
475333
475333
  }
475334
- function getBestCommandMatch(partialCommand, commands2) {
475334
+ function getBestCommandMatch(partialCommand, commands) {
475335
475335
  if (!partialCommand) {
475336
475336
  return null;
475337
475337
  }
475338
- const suggestions = generateCommandSuggestions("/" + partialCommand, commands2);
475338
+ const suggestions = generateCommandSuggestions("/" + partialCommand, commands);
475339
475339
  if (suggestions.length === 0) {
475340
475340
  return null;
475341
475341
  }
@@ -475398,7 +475398,7 @@ function createCommandSuggestionItem(cmd, matchedAlias) {
475398
475398
  metadata: cmd
475399
475399
  };
475400
475400
  }
475401
- function generateCommandSuggestions(input, commands2) {
475401
+ function generateCommandSuggestions(input, commands) {
475402
475402
  if (!isCommandInput(input)) {
475403
475403
  return [];
475404
475404
  }
@@ -475407,7 +475407,7 @@ function generateCommandSuggestions(input, commands2) {
475407
475407
  }
475408
475408
  const query2 = input.slice(1).toLowerCase().trim();
475409
475409
  if (query2 === "") {
475410
- const visibleCommands = commands2.filter((cmd) => !cmd.isHidden);
475410
+ const visibleCommands = commands.filter((cmd) => !cmd.isHidden);
475411
475411
  const recentlyUsed = [];
475412
475412
  const commandsWithScores = visibleCommands.filter((cmd) => cmd.type === "prompt").map((cmd) => ({
475413
475413
  cmd,
@@ -475453,11 +475453,11 @@ function generateCommandSuggestions(input, commands2) {
475453
475453
  ...otherCommands
475454
475454
  ].map((cmd) => createCommandSuggestionItem(cmd));
475455
475455
  }
475456
- let hiddenExact = commands2.find((cmd) => cmd.isHidden && getCommandName(cmd).toLowerCase() === query2);
475457
- if (hiddenExact && commands2.some((cmd) => !cmd.isHidden && getCommandName(cmd).toLowerCase() === query2)) {
475456
+ let hiddenExact = commands.find((cmd) => cmd.isHidden && getCommandName(cmd).toLowerCase() === query2);
475457
+ if (hiddenExact && commands.some((cmd) => !cmd.isHidden && getCommandName(cmd).toLowerCase() === query2)) {
475458
475458
  hiddenExact = undefined;
475459
475459
  }
475460
- const fuse = getCommandFuse(commands2);
475460
+ const fuse = getCommandFuse(commands);
475461
475461
  const searchResults = fuse.search(query2);
475462
475462
  const withMeta = searchResults.map((r) => {
475463
475463
  const name = r.item.commandName.toLowerCase();
@@ -475519,12 +475519,12 @@ function generateCommandSuggestions(input, commands2) {
475519
475519
  }
475520
475520
  return fuseSuggestions;
475521
475521
  }
475522
- function applyCommandSuggestion(suggestion, shouldExecute, commands2, onInputChange, setCursorOffset, onSubmit) {
475522
+ function applyCommandSuggestion(suggestion, shouldExecute, commands, onInputChange, setCursorOffset, onSubmit) {
475523
475523
  let commandName;
475524
475524
  let commandObj;
475525
475525
  if (typeof suggestion === "string") {
475526
475526
  commandName = suggestion;
475527
- commandObj = shouldExecute ? getCommand(commandName, commands2) : undefined;
475527
+ commandObj = shouldExecute ? getCommand(commandName, commands) : undefined;
475528
475528
  } else {
475529
475529
  if (!isCommandMetadata(suggestion.metadata)) {
475530
475530
  return;
@@ -475570,7 +475570,7 @@ async function getShellHistoryCommands() {
475570
475570
  if (shellHistoryCache && now2 - shellHistoryCacheTimestamp < CACHE_TTL_MS5) {
475571
475571
  return shellHistoryCache;
475572
475572
  }
475573
- const commands2 = [];
475573
+ const commands = [];
475574
475574
  const seen = new Set;
475575
475575
  try {
475576
475576
  for await (const entry of getHistory()) {
@@ -475578,19 +475578,19 @@ async function getShellHistoryCommands() {
475578
475578
  const command8 = entry.display.slice(1).trim();
475579
475579
  if (command8 && !seen.has(command8)) {
475580
475580
  seen.add(command8);
475581
- commands2.push(command8);
475581
+ commands.push(command8);
475582
475582
  }
475583
475583
  }
475584
- if (commands2.length >= 50) {
475584
+ if (commands.length >= 50) {
475585
475585
  break;
475586
475586
  }
475587
475587
  }
475588
475588
  } catch (error5) {
475589
475589
  logForDebugging(`Failed to read shell history: ${error5}`);
475590
475590
  }
475591
- shellHistoryCache = commands2;
475591
+ shellHistoryCache = commands;
475592
475592
  shellHistoryCacheTimestamp = now2;
475593
- return commands2;
475593
+ return commands;
475594
475594
  }
475595
475595
  function prependToShellHistoryCache(command8) {
475596
475596
  if (!shellHistoryCache) {
@@ -475610,8 +475610,8 @@ async function getShellHistoryCompletion(input) {
475610
475610
  if (!trimmedInput) {
475611
475611
  return null;
475612
475612
  }
475613
- const commands2 = await getShellHistoryCommands();
475614
- for (const command8 of commands2) {
475613
+ const commands = await getShellHistoryCommands();
475614
+ for (const command8 of commands) {
475615
475615
  if (command8.startsWith(input) && command8 !== input) {
475616
475616
  return {
475617
475617
  fullCommand: command8,
@@ -476045,7 +476045,7 @@ function hasCommandWithArguments(isAtEndWithWhitespace, value) {
476045
476045
  return !isAtEndWithWhitespace && value.includes(" ") && !value.endsWith(" ");
476046
476046
  }
476047
476047
  function useTypeahead({
476048
- commands: commands2,
476048
+ commands,
476049
476049
  onInputChange,
476050
476050
  onSubmit,
476051
476051
  setCursorOffset,
@@ -476069,12 +476069,12 @@ function useTypeahead({
476069
476069
  const thinkingToggleShortcut = useShortcutDisplay("chat:thinkingToggle", "Chat", "alt+t");
476070
476070
  const [suggestionType, setSuggestionType] = import_react241.useState("none");
476071
476071
  const allCommandsMaxWidth = import_react241.useMemo(() => {
476072
- const visibleCommands = commands2.filter((cmd) => !cmd.isHidden);
476072
+ const visibleCommands = commands.filter((cmd) => !cmd.isHidden);
476073
476073
  if (visibleCommands.length === 0)
476074
476074
  return;
476075
476075
  const maxLen = Math.max(...visibleCommands.map((cmd) => getCommandName(cmd).length));
476076
476076
  return maxLen + 6;
476077
- }, [commands2]);
476077
+ }, [commands]);
476078
476078
  const [maxColumnWidth, setMaxColumnWidth] = import_react241.useState(undefined);
476079
476079
  const mcpResources = useAppState((s) => s.mcp.resources);
476080
476080
  const store = useAppStateStore();
@@ -476088,7 +476088,7 @@ function useTypeahead({
476088
476088
  const midInputCommand = findMidInputSlashCommand(input, cursorOffset);
476089
476089
  if (!midInputCommand)
476090
476090
  return;
476091
- const match = getBestCommandMatch(midInputCommand.partialCommand, commands2);
476091
+ const match = getBestCommandMatch(midInputCommand.partialCommand, commands);
476092
476092
  if (!match)
476093
476093
  return;
476094
476094
  return {
@@ -476096,7 +476096,7 @@ function useTypeahead({
476096
476096
  fullCommand: match.fullCommand,
476097
476097
  insertPosition: midInputCommand.startPos + 1 + midInputCommand.partialCommand.length
476098
476098
  };
476099
- }, [input, cursorOffset, mode, commands2, suppressSuggestions]);
476099
+ }, [input, cursorOffset, mode, commands, suppressSuggestions]);
476100
476100
  const effectiveGhostText = suppressSuggestions ? undefined : mode === "prompt" ? syncPromptGhostText : inlineGhostText;
476101
476101
  const cursorOffsetRef = import_react241.useRef(cursorOffset);
476102
476102
  cursorOffsetRef.current = cursorOffset;
@@ -476179,7 +476179,7 @@ function useTypeahead({
476179
476179
  if (mode === "prompt") {
476180
476180
  const midInputCommand = findMidInputSlashCommand(value, effectiveCursorOffset);
476181
476181
  if (midInputCommand) {
476182
- const match = getBestCommandMatch(midInputCommand.partialCommand, commands2);
476182
+ const match = getBestCommandMatch(midInputCommand.partialCommand, commands);
476183
476183
  if (match) {
476184
476184
  setSuggestionsState(() => ({
476185
476185
  commandArgumentHint: undefined,
@@ -476336,7 +476336,7 @@ function useTypeahead({
476336
476336
  const hasRealArguments = spaceIndex !== -1 && value.slice(spaceIndex + 1).trim().length > 0;
476337
476337
  const hasExactlyOneTrailingSpace = spaceIndex !== -1 && value.length === spaceIndex + 1;
476338
476338
  if (spaceIndex !== -1) {
476339
- const exactMatch = commands2.find((cmd) => getCommandName(cmd) === commandName);
476339
+ const exactMatch = commands.find((cmd) => getCommandName(cmd) === commandName);
476340
476340
  if (exactMatch || hasRealArguments) {
476341
476341
  if (exactMatch?.argumentHint && hasExactlyOneTrailingSpace) {
476342
476342
  commandArgumentHint2 = exactMatch.argumentHint;
@@ -476356,7 +476356,7 @@ function useTypeahead({
476356
476356
  }
476357
476357
  }
476358
476358
  }
476359
- const commandItems = generateCommandSuggestions(value, commands2);
476359
+ const commandItems = generateCommandSuggestions(value, commands);
476360
476360
  setSuggestionsState(() => ({
476361
476361
  commandArgumentHint: commandArgumentHint2,
476362
476362
  suggestions: commandItems,
@@ -476437,7 +476437,7 @@ function useTypeahead({
476437
476437
  }
476438
476438
  }, [
476439
476439
  suggestionType,
476440
- commands2,
476440
+ commands,
476441
476441
  setSuggestionsState,
476442
476442
  clearSuggestions,
476443
476443
  debouncedFetchFileSuggestions,
@@ -476483,7 +476483,7 @@ function useTypeahead({
476483
476483
  const suggestion = suggestions[index];
476484
476484
  if (suggestionType === "command" && index < suggestions.length) {
476485
476485
  if (suggestion) {
476486
- applyCommandSuggestion(suggestion, false, commands2, onInputChange, setCursorOffset, onSubmit);
476486
+ applyCommandSuggestion(suggestion, false, commands, onInputChange, setCursorOffset, onSubmit);
476487
476487
  clearSuggestions();
476488
476488
  }
476489
476489
  } else if (suggestionType === "custom-title" && suggestions.length > 0) {
@@ -476637,14 +476637,14 @@ function useTypeahead({
476637
476637
  setMaxColumnWidth(undefined);
476638
476638
  }
476639
476639
  }
476640
- }, [suggestions, selectedSuggestion, input, suggestionType, commands2, mode, onInputChange, setCursorOffset, onSubmit, clearSuggestions, cursorOffset, updateSuggestions, mcpResources, setSuggestionsState, agents2, debouncedFetchFileSuggestions, debouncedFetchSlackChannels, effectiveGhostText]);
476640
+ }, [suggestions, selectedSuggestion, input, suggestionType, commands, mode, onInputChange, setCursorOffset, onSubmit, clearSuggestions, cursorOffset, updateSuggestions, mcpResources, setSuggestionsState, agents2, debouncedFetchFileSuggestions, debouncedFetchSlackChannels, effectiveGhostText]);
476641
476641
  const handleEnter = import_react241.useCallback(() => {
476642
476642
  if (selectedSuggestion < 0 || suggestions.length === 0)
476643
476643
  return;
476644
476644
  const suggestion = suggestions[selectedSuggestion];
476645
476645
  if (suggestionType === "command" && selectedSuggestion < suggestions.length) {
476646
476646
  if (suggestion) {
476647
- applyCommandSuggestion(suggestion, true, commands2, onInputChange, setCursorOffset, onSubmit);
476647
+ applyCommandSuggestion(suggestion, true, commands, onInputChange, setCursorOffset, onSubmit);
476648
476648
  debouncedFetchFileSuggestions.cancel();
476649
476649
  clearSuggestions();
476650
476650
  }
@@ -476713,7 +476713,7 @@ function useTypeahead({
476713
476713
  clearSuggestions();
476714
476714
  }
476715
476715
  }
476716
- }, [suggestions, selectedSuggestion, suggestionType, commands2, input, cursorOffset, mode, onInputChange, setCursorOffset, onSubmit, clearSuggestions, debouncedFetchFileSuggestions, debouncedFetchSlackChannels]);
476716
+ }, [suggestions, selectedSuggestion, suggestionType, commands, input, cursorOffset, mode, onInputChange, setCursorOffset, onSubmit, clearSuggestions, debouncedFetchFileSuggestions, debouncedFetchSlackChannels]);
476717
476717
  const handleAutocompleteAccept = import_react241.useCallback(() => {
476718
476718
  handleTab();
476719
476719
  }, [handleTab]);
@@ -479908,7 +479908,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
479908
479908
  project_dir: getOriginalCwd(),
479909
479909
  added_dirs: addedDirs
479910
479910
  },
479911
- version: "1.1.17",
479911
+ version: "1.1.18",
479912
479912
  output_style: {
479913
479913
  name: outputStyleName
479914
479914
  },
@@ -482087,7 +482087,7 @@ var init_exampleCommands = __esm(() => {
482087
482087
  getExampleCommandFromCache = memoize_default(() => {
482088
482088
  const projectConfig = getCurrentProjectConfig();
482089
482089
  const frequentFile = projectConfig.exampleFiles?.length ? sample_default(projectConfig.exampleFiles) : "<filepath>";
482090
- const commands2 = [
482090
+ const commands = [
482091
482091
  "fix lint errors",
482092
482092
  "fix typecheck errors",
482093
482093
  `how does ${frequentFile} work?`,
@@ -482097,7 +482097,7 @@ var init_exampleCommands = __esm(() => {
482097
482097
  `write a test for ${frequentFile}`,
482098
482098
  "create a util logging.py that..."
482099
482099
  ];
482100
- return `Try "${sample_default(commands2)}"`;
482100
+ return `Try "${sample_default(commands)}"`;
482101
482101
  });
482102
482102
  refreshExampleCommands = memoize_default(async () => {
482103
482103
  const projectConfig = getCurrentProjectConfig();
@@ -482290,7 +482290,7 @@ function PromptInput({
482290
482290
  toolPermissionContext,
482291
482291
  setToolPermissionContext,
482292
482292
  apiKeyStatus,
482293
- commands: commands2,
482293
+ commands,
482294
482294
  agents: agents2,
482295
482295
  isLoading,
482296
482296
  verbose,
@@ -482551,9 +482551,9 @@ function PromptInput({
482551
482551
  const positions = findSlashCommandPositions(displayedValue);
482552
482552
  return positions.filter((pos) => {
482553
482553
  const commandName = displayedValue.slice(pos.start + 1, pos.end);
482554
- return hasCommand(commandName, commands2);
482554
+ return hasCommand(commandName, commands);
482555
482555
  });
482556
- }, [displayedValue, commands2]);
482556
+ }, [displayedValue, commands]);
482557
482557
  const tokenBudgetTriggers = import_react261.useMemo(() => [], [displayedValue]);
482558
482558
  const knownChannelsVersion2 = import_react261.useSyncExternalStore(subscribeKnownChannels, getKnownChannelsVersion);
482559
482559
  const slackChannelTriggers = import_react261.useMemo(() => hasSlackMcpServer(store.getState().mcp.clients) ? findSlackChannelPositions(displayedValue) : [], [displayedValue, knownChannelsVersion2]);
@@ -482986,7 +482986,7 @@ function PromptInput({
482986
482986
  inlineGhostText,
482987
482987
  maxColumnWidth
482988
482988
  } = useTypeahead({
482989
- commands: commands2,
482989
+ commands,
482990
482990
  onInputChange: trackAndSetInput,
482991
482991
  onSubmit,
482992
482992
  setCursorOffset,
@@ -488705,7 +488705,7 @@ async function handlePromptSubmit(params) {
488705
488705
  helpers: helpers2,
488706
488706
  queryGuard,
488707
488707
  isExternalLoading = false,
488708
- commands: commands2,
488708
+ commands,
488709
488709
  onInputChange,
488710
488710
  setPastedContents,
488711
488711
  setToolJSX,
@@ -488732,7 +488732,7 @@ async function handlePromptSubmit(params) {
488732
488732
  mainLoopModel,
488733
488733
  ideSelection,
488734
488734
  querySource: params.querySource,
488735
- commands: commands2,
488735
+ commands,
488736
488736
  queryGuard,
488737
488737
  setToolJSX,
488738
488738
  getToolUseContext,
@@ -488757,7 +488757,7 @@ async function handlePromptSubmit(params) {
488757
488757
  return;
488758
488758
  }
488759
488759
  if (!skipSlashCommands && ["exit", "quit", ":q", ":q!", ":wq", ":wq!"].includes(input.trim())) {
488760
- const exitCommand = commands2.find((cmd2) => cmd2.name === "exit");
488760
+ const exitCommand = commands.find((cmd2) => cmd2.name === "exit");
488761
488761
  if (exitCommand) {
488762
488762
  handlePromptSubmit({
488763
488763
  ...params,
@@ -488792,7 +488792,7 @@ async function handlePromptSubmit(params) {
488792
488792
  const spaceIndex = trimmedInput.indexOf(" ");
488793
488793
  const commandName = spaceIndex === -1 ? trimmedInput.slice(1) : trimmedInput.slice(1, spaceIndex);
488794
488794
  const commandArgs = spaceIndex === -1 ? "" : trimmedInput.slice(spaceIndex + 1).trim();
488795
- const immediateCommand = commands2.find((cmd2) => cmd2.immediate && isCommandEnabled(cmd2) && (cmd2.name === commandName || cmd2.aliases?.includes(commandName) || getCommandName(cmd2) === commandName));
488795
+ const immediateCommand = commands.find((cmd2) => cmd2.immediate && isCommandEnabled(cmd2) && (cmd2.name === commandName || cmd2.aliases?.includes(commandName) || getCommandName(cmd2) === commandName));
488796
488796
  if (immediateCommand && immediateCommand.type === "local-jsx" && (queryGuard.isActive || isExternalLoading)) {
488797
488797
  logEvent("tengu_immediate_command_executed", {
488798
488798
  commandName: immediateCommand.name
@@ -488880,7 +488880,7 @@ async function handlePromptSubmit(params) {
488880
488880
  mainLoopModel,
488881
488881
  ideSelection,
488882
488882
  querySource: params.querySource,
488883
- commands: commands2,
488883
+ commands,
488884
488884
  queryGuard,
488885
488885
  setToolJSX,
488886
488886
  getToolUseContext,
@@ -488927,12 +488927,12 @@ async function executeUserInput(params) {
488927
488927
  let effort;
488928
488928
  let nextInput;
488929
488929
  let submitNextInput;
488930
- const commands2 = queuedCommands ?? [];
488931
- const firstWorkload = commands2[0]?.workload;
488932
- const turnWorkload = firstWorkload !== undefined && commands2.every((c5) => c5.workload === firstWorkload) ? firstWorkload : undefined;
488930
+ const commands = queuedCommands ?? [];
488931
+ const firstWorkload = commands[0]?.workload;
488932
+ const turnWorkload = firstWorkload !== undefined && commands.every((c5) => c5.workload === firstWorkload) ? firstWorkload : undefined;
488933
488933
  await runWithWorkload(turnWorkload, async () => {
488934
- for (let i2 = 0;i2 < commands2.length; i2++) {
488935
- const cmd = commands2[i2];
488934
+ for (let i2 = 0;i2 < commands.length; i2++) {
488935
+ const cmd = commands[i2];
488936
488936
  const isFirst = i2 === 0;
488937
488937
  const result = await processUserInput({
488938
488938
  input: cmd.value,
@@ -488990,7 +488990,7 @@ async function executeUserInput(params) {
488990
488990
  shouldHidePromptInput: false,
488991
488991
  clearLocalJSX: true
488992
488992
  });
488993
- const primaryCmd = commands2[0];
488993
+ const primaryCmd = commands[0];
488994
488994
  const primaryMode = primaryCmd?.mode ?? "prompt";
488995
488995
  const primaryInput = primaryCmd && typeof primaryCmd.value === "string" ? primaryCmd.value : undefined;
488996
488996
  const shouldCallBeforeQuery = primaryMode === "prompt";
@@ -489059,11 +489059,11 @@ function processQueueIfReady({
489059
489059
  return { processed: true };
489060
489060
  }
489061
489061
  const targetMode = next.mode;
489062
- const commands2 = dequeueAllMatching((cmd) => isMainThread(cmd) && !isSlashCommand2(cmd) && cmd.mode === targetMode);
489063
- if (commands2.length === 0) {
489062
+ const commands = dequeueAllMatching((cmd) => isMainThread(cmd) && !isSlashCommand2(cmd) && cmd.mode === targetMode);
489063
+ if (commands.length === 0) {
489064
489064
  return { processed: false };
489065
489065
  }
489066
- executeInput(commands2);
489066
+ executeInput(commands);
489067
489067
  return { processed: true };
489068
489068
  }
489069
489069
  var init_queueProcessor = __esm(() => {
@@ -489326,8 +489326,8 @@ function useSkillsChange(cwd2, onCommandsChange) {
489326
489326
  return;
489327
489327
  try {
489328
489328
  clearCommandsCache();
489329
- const commands2 = await getCommands(cwd2);
489330
- onCommandsChange(commands2);
489329
+ const commands = await getCommands(cwd2);
489330
+ onCommandsChange(commands);
489331
489331
  } catch (error5) {
489332
489332
  if (error5 instanceof Error) {
489333
489333
  logError(error5);
@@ -489340,8 +489340,8 @@ function useSkillsChange(cwd2, onCommandsChange) {
489340
489340
  return;
489341
489341
  try {
489342
489342
  clearCommandMemoizationCaches();
489343
- const commands2 = await getCommands(cwd2);
489344
- onCommandsChange(commands2);
489343
+ const commands = await getCommands(cwd2);
489344
+ onCommandsChange(commands);
489345
489345
  } catch (error5) {
489346
489346
  if (error5 instanceof Error) {
489347
489347
  logError(error5);
@@ -489441,10 +489441,10 @@ function useManagePlugins({
489441
489441
  priority: "high"
489442
489442
  });
489443
489443
  }
489444
- let commands2 = [];
489444
+ let commands = [];
489445
489445
  let agents2 = [];
489446
489446
  try {
489447
- commands2 = await getPluginCommands();
489447
+ commands = await getPluginCommands();
489448
489448
  } catch (error5) {
489449
489449
  const errorMessage4 = error5 instanceof Error ? error5.message : String(error5);
489450
489450
  errors.push({
@@ -489506,12 +489506,12 @@ function useManagePlugins({
489506
489506
  ...prevState.plugins,
489507
489507
  enabled: enabled2,
489508
489508
  disabled,
489509
- commands: commands2,
489509
+ commands,
489510
489510
  errors: mergedErrors
489511
489511
  }
489512
489512
  };
489513
489513
  });
489514
- logForDebugging(`Loaded plugins - Enabled: ${enabled2.length}, Disabled: ${disabled.length}, Commands: ${commands2.length}, Agents: ${agents2.length}, Errors: ${errors.length}`);
489514
+ logForDebugging(`Loaded plugins - Enabled: ${enabled2.length}, Disabled: ${disabled.length}, Commands: ${commands.length}, Agents: ${agents2.length}, Errors: ${errors.length}`);
489515
489515
  const hook_count = enabled2.reduce((sum, p) => {
489516
489516
  if (!p.hooksConfig)
489517
489517
  return sum;
@@ -489523,7 +489523,7 @@ function useManagePlugins({
489523
489523
  inline_count: count(enabled2, (p) => p.source.endsWith("@inline")),
489524
489524
  marketplace_count: count(enabled2, (p) => !p.source.endsWith("@inline")),
489525
489525
  error_count: errors.length,
489526
- skill_count: commands2.length,
489526
+ skill_count: commands.length,
489527
489527
  agent_count: agents2.length,
489528
489528
  hook_count,
489529
489529
  mcp_count,
@@ -491468,7 +491468,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
491468
491468
  } catch {}
491469
491469
  const data = {
491470
491470
  trigger,
491471
- version: "1.1.17",
491471
+ version: "1.1.18",
491472
491472
  platform: process.platform,
491473
491473
  transcript,
491474
491474
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -499190,7 +499190,7 @@ function REPL({
499190
499190
  }, [mainThreadAgentDefinition2, mergedTools]);
499191
499191
  const commandsWithPlugins = useMergedCommands(localCommands, plugins.commands);
499192
499192
  const mergedCommands = useMergedCommands(commandsWithPlugins, mcp2.commands);
499193
- const commands2 = import_react320.useMemo(() => disableSlashCommands ? [] : mergedCommands, [disableSlashCommands, mergedCommands]);
499193
+ const commands = import_react320.useMemo(() => disableSlashCommands ? [] : mergedCommands, [disableSlashCommands, mergedCommands]);
499194
499194
  useIdeLogging(isRemoteSession ? EMPTY_MCP_CLIENTS2 : mcp2.clients);
499195
499195
  useIdeSelection(isRemoteSession ? EMPTY_MCP_CLIENTS2 : mcp2.clients, setIDESelection);
499196
499196
  const [streamMode, setStreamMode] = import_react320.useState("responding");
@@ -500045,7 +500045,7 @@ Error: sandbox required but unavailable: ${reason}
500045
500045
  return {
500046
500046
  abortController: abortController2,
500047
500047
  options: {
500048
- commands: commands2,
500048
+ commands,
500049
500049
  tools: computeTools(),
500050
500050
  debug: debug3,
500051
500051
  verbose: s.verbose,
@@ -500141,7 +500141,7 @@ Error: sandbox required but unavailable: ${reason}
500141
500141
  requestPrompt: undefined,
500142
500142
  contentReplacementState: contentReplacementStateRef.current
500143
500143
  };
500144
- }, [commands2, combinedInitialTools, mainThreadAgentDefinition2, debug3, initialMcpClients, ideInstallationStatus, dynamicMcpConfig, theme2, allowedAgentTypes, store, setAppState, reverify, addNotification, setMessages, onChangeDynamicMcpConfig, resume3, requestPrompt, disabled, customSystemPrompt, appendSystemPrompt, setConversationId]);
500144
+ }, [commands, combinedInitialTools, mainThreadAgentDefinition2, debug3, initialMcpClients, ideInstallationStatus, dynamicMcpConfig, theme2, allowedAgentTypes, store, setAppState, reverify, addNotification, setMessages, onChangeDynamicMcpConfig, resume3, requestPrompt, disabled, customSystemPrompt, appendSystemPrompt, setConversationId]);
500145
500145
  const handleBackgroundQuery = import_react320.useCallback(() => {
500146
500146
  abortController?.abort("background");
500147
500147
  const removedNotifications = removeByFilter((cmd) => cmd.mode === "task-notification");
@@ -500500,7 +500500,7 @@ Error: sandbox required but unavailable: ${reason}
500500
500500
  const spaceIndex = trimmedInput.indexOf(" ");
500501
500501
  const commandName = spaceIndex === -1 ? trimmedInput.slice(1) : trimmedInput.slice(1, spaceIndex);
500502
500502
  const commandArgs = spaceIndex === -1 ? "" : trimmedInput.slice(spaceIndex + 1).trim();
500503
- const matchingCommand = commands2.find((cmd) => isCommandEnabled(cmd) && (cmd.name === commandName || cmd.aliases?.includes(commandName) || getCommandName(cmd) === commandName));
500503
+ const matchingCommand = commands.find((cmd) => isCommandEnabled(cmd) && (cmd.name === commandName || cmd.aliases?.includes(commandName) || getCommandName(cmd) === commandName));
500504
500504
  if (matchingCommand?.name === "clear" && idleHintShownRef.current) {
500505
500505
  logEvent("tengu_idle_return_action", {
500506
500506
  action: "hint_converted",
@@ -500653,7 +500653,7 @@ Error: sandbox required but unavailable: ${reason}
500653
500653
  }
500654
500654
  return;
500655
500655
  }
500656
- if (activeRemote.isRemoteMode && !(isSlashCommand3 && commands2.find((c5) => {
500656
+ if (activeRemote.isRemoteMode && !(isSlashCommand3 && commands.find((c5) => {
500657
500657
  const name = input.trim().slice(1).split(/\s/)[0];
500658
500658
  return isCommandEnabled(c5) && (c5.name === name || c5.aliases?.includes(name) || getCommandName(c5) === name);
500659
500659
  })?.type === "local-jsx")) {
@@ -500722,7 +500722,7 @@ Error: sandbox required but unavailable: ${reason}
500722
500722
  queryGuard,
500723
500723
  isExternalLoading,
500724
500724
  mode: inputMode,
500725
- commands: commands2,
500725
+ commands,
500726
500726
  onInputChange: setInputValue,
500727
500727
  setPastedContents,
500728
500728
  setToolJSX,
@@ -500755,7 +500755,7 @@ Error: sandbox required but unavailable: ${reason}
500755
500755
  isLoading,
500756
500756
  isExternalLoading,
500757
500757
  inputMode,
500758
- commands2,
500758
+ commands,
500759
500759
  setInputValue,
500760
500760
  setInputMode,
500761
500761
  setPastedContents,
@@ -500994,7 +500994,7 @@ ${fileList}`);
500994
500994
  useLogMessages(messages, messages.length === initialMessages?.length);
500995
500995
  const {
500996
500996
  sendBridgeResult
500997
- } = useReplBridge(messages, setMessages, abortControllerRef, commands2, mainLoopModel);
500997
+ } = useReplBridge(messages, setMessages, abortControllerRef, commands, mainLoopModel);
500998
500998
  sendBridgeResultRef.current = sendBridgeResult;
500999
500999
  useAfterFirstRender();
501000
501000
  const hasCountedQueueUseRef = import_react320.useRef(false);
@@ -501019,7 +501019,7 @@ ${fileList}`);
501019
501019
  resetHistory: () => {}
501020
501020
  },
501021
501021
  queryGuard,
501022
- commands: commands2,
501022
+ commands,
501023
501023
  onInputChange: () => {},
501024
501024
  setPastedContents: () => {},
501025
501025
  setToolJSX,
@@ -501038,7 +501038,7 @@ ${fileList}`);
501038
501038
  setMessages,
501039
501039
  queuedCommands: queuedCommands2
501040
501040
  });
501041
- }, [queryGuard, commands2, setToolJSX, getToolUseContext, messages, mainLoopModel, ideSelection, setUserInputOnProcessing, canUseTool, setAbortController, onQuery, addNotification, setAppState, onBeforeQuery]);
501041
+ }, [queryGuard, commands, setToolJSX, getToolUseContext, messages, mainLoopModel, ideSelection, setUserInputOnProcessing, canUseTool, setAbortController, onQuery, addNotification, setAppState, onBeforeQuery]);
501042
501042
  useQueueProcessor({
501043
501043
  executeQueuedInput,
501044
501044
  hasActiveLocalJsxUI: isShowingLocalJSXCommand,
@@ -501385,7 +501385,7 @@ Note: ctrl + z now suspends localclawd, ctrl + _ undoes input.
501385
501385
  const transcriptMessagesElement = /* @__PURE__ */ jsx_dev_runtime476.jsxDEV(Messages3, {
501386
501386
  messages: transcriptMessages,
501387
501387
  tools,
501388
- commands: commands2,
501388
+ commands,
501389
501389
  verbose: true,
501390
501390
  toolJSX: null,
501391
501391
  toolUseConfirmQueue: [],
@@ -501566,7 +501566,7 @@ Note: ctrl + z now suspends localclawd, ctrl + _ undoes input.
501566
501566
  /* @__PURE__ */ jsx_dev_runtime476.jsxDEV(Messages3, {
501567
501567
  messages: displayedMessages,
501568
501568
  tools,
501569
- commands: commands2,
501569
+ commands,
501570
501570
  verbose,
501571
501571
  toolJSX,
501572
501572
  toolUseConfirmQueue,
@@ -501963,7 +501963,7 @@ Note: ctrl + z now suspends localclawd, ctrl + _ undoes input.
501963
501963
  toolPermissionContext,
501964
501964
  setToolPermissionContext,
501965
501965
  apiKeyStatus,
501966
- commands: commands2,
501966
+ commands,
501967
501967
  agents: agentDefinitions2.activeAgents,
501968
501968
  isLoading,
501969
501969
  onExit: handleExit,
@@ -503045,7 +503045,7 @@ function TrustDialog({ onDone }) {
503045
503045
  ]
503046
503046
  }, undefined, true, undefined, this),
503047
503047
  /* @__PURE__ */ jsx_dev_runtime482.jsxDEV(ThemedText, {
503048
- children: "localClawd'll be able to read, edit, and execute files here."
503048
+ children: "localclawd'll be able to read, edit, and execute files here."
503049
503049
  }, undefined, false, undefined, this),
503050
503050
  /* @__PURE__ */ jsx_dev_runtime482.jsxDEV(ThemedBox_default, {
503051
503051
  flexDirection: "column",
@@ -503432,7 +503432,7 @@ async function renderAndRun(root3, element) {
503432
503432
  await root3.waitUntilExit();
503433
503433
  await gracefulShutdown(0);
503434
503434
  }
503435
- async function showSetupScreens(root3, permissionMode, allowDangerouslySkipPermissions, commands2, claudeInChrome, devChannels) {
503435
+ async function showSetupScreens(root3, permissionMode, allowDangerouslySkipPermissions, commands, claudeInChrome, devChannels) {
503436
503436
  if (isEnvTruthy(false) || process.env.IS_DEMO) {
503437
503437
  return false;
503438
503438
  }
@@ -503445,7 +503445,7 @@ async function showSetupScreens(root3, permissionMode, allowDangerouslySkipPermi
503445
503445
  await showDialog(root3, (done) => /* @__PURE__ */ jsx_dev_runtime485.jsxDEV(AppStateProvider, {
503446
503446
  onChangeAppState,
503447
503447
  children: /* @__PURE__ */ jsx_dev_runtime485.jsxDEV(TrustDialog2, {
503448
- commands: commands2,
503448
+ commands,
503449
503449
  onDone: done
503450
503450
  }, undefined, false, undefined, this)
503451
503451
  }, undefined, false, undefined, this));
@@ -504541,7 +504541,7 @@ function parsePrIdentifier(value) {
504541
504541
  return null;
504542
504542
  }
504543
504543
  function ResumeConversation({
504544
- commands: commands2,
504544
+ commands,
504545
504545
  worktreePaths,
504546
504546
  initialTools,
504547
504547
  mcpClients,
@@ -504725,7 +504725,7 @@ function ResumeConversation({
504725
504725
  if (resumeData) {
504726
504726
  return /* @__PURE__ */ jsx_dev_runtime490.jsxDEV(REPL, {
504727
504727
  debug: debug3,
504728
- commands: commands2,
504728
+ commands,
504729
504729
  initialTools,
504730
504730
  initialMessages: resumeData.messages,
504731
504731
  initialFileHistorySnapshots: resumeData.fileHistorySnapshots,
@@ -507882,7 +507882,7 @@ function appendToLog(path17, message) {
507882
507882
  cwd: getFsImplementation().cwd(),
507883
507883
  userType: process.env.USER_TYPE,
507884
507884
  sessionId: getSessionId(),
507885
- version: "1.1.17"
507885
+ version: "1.1.18"
507886
507886
  };
507887
507887
  getLogWriter(path17).write(messageWithTimestamp);
507888
507888
  }
@@ -510695,7 +510695,7 @@ async function fetchSystemPromptParts({
510695
510695
  }
510696
510696
  async function buildSideQuestionFallbackParams({
510697
510697
  tools,
510698
- commands: commands2,
510698
+ commands,
510699
510699
  mcpClients,
510700
510700
  messages,
510701
510701
  readFileState,
@@ -510723,7 +510723,7 @@ async function buildSideQuestionFallbackParams({
510723
510723
  const forkContextMessages = last2?.type === "assistant" && last2.message.stop_reason === null ? messages.slice(0, -1) : messages;
510724
510724
  const toolUseContext = {
510725
510725
  options: {
510726
- commands: commands2,
510726
+ commands,
510727
510727
  debug: false,
510728
510728
  mainLoopModel,
510729
510729
  tools,
@@ -510786,7 +510786,7 @@ class QueryEngine {
510786
510786
  async* submitMessage(prompt, options) {
510787
510787
  const {
510788
510788
  cwd: cwd2,
510789
- commands: commands2,
510789
+ commands,
510790
510790
  tools,
510791
510791
  mcpClients,
510792
510792
  verbose = false,
@@ -510862,7 +510862,7 @@ class QueryEngine {
510862
510862
  onChangeAPIKey: () => {},
510863
510863
  handleElicitation: this.config.handleElicitation,
510864
510864
  options: {
510865
- commands: commands2,
510865
+ commands,
510866
510866
  debug: false,
510867
510867
  tools,
510868
510868
  verbose,
@@ -510961,7 +510961,7 @@ class QueryEngine {
510961
510961
  onChangeAPIKey: () => {},
510962
510962
  handleElicitation: this.config.handleElicitation,
510963
510963
  options: {
510964
- commands: commands2,
510964
+ commands,
510965
510965
  debug: false,
510966
510966
  tools,
510967
510967
  verbose,
@@ -511002,7 +511002,7 @@ class QueryEngine {
511002
511002
  mcpClients,
511003
511003
  model: mainLoopModel,
511004
511004
  permissionMode: initialAppState.toolPermissionContext.mode,
511005
- commands: commands2,
511005
+ commands,
511006
511006
  agents: agents2,
511007
511007
  skills: skills2,
511008
511008
  plugins: enabledPlugins,
@@ -511418,7 +511418,7 @@ class QueryEngine {
511418
511418
  }
511419
511419
  }
511420
511420
  async function* ask({
511421
- commands: commands2,
511421
+ commands,
511422
511422
  prompt,
511423
511423
  promptUuid,
511424
511424
  isMeta,
@@ -511452,7 +511452,7 @@ async function* ask({
511452
511452
  const engine = new QueryEngine({
511453
511453
  cwd: cwd2,
511454
511454
  tools,
511455
- commands: commands2,
511455
+ commands,
511456
511456
  mcpClients,
511457
511457
  agents: agents2,
511458
511458
  canUseTool,
@@ -511882,8 +511882,8 @@ async function getEnvLessBridgeConfig() {
511882
511882
  }
511883
511883
  async function checkEnvLessBridgeMinVersion() {
511884
511884
  const cfg = await getEnvLessBridgeConfig();
511885
- if (cfg.min_version && lt("1.1.17", cfg.min_version)) {
511886
- return `Your version of localclawd (${"1.1.17"}) is too old for Remote Control.
511885
+ if (cfg.min_version && lt("1.1.18", cfg.min_version)) {
511886
+ return `Your version of localclawd (${"1.1.18"}) is too old for Remote Control.
511887
511887
  Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
511888
511888
  }
511889
511889
  return null;
@@ -512355,7 +512355,7 @@ async function initBridgeCore(params) {
512355
512355
  const rawApi = createBridgeApiClient({
512356
512356
  baseUrl,
512357
512357
  getAccessToken,
512358
- runnerVersion: "1.1.17",
512358
+ runnerVersion: "1.1.18",
512359
512359
  onDebug: logForDebugging,
512360
512360
  onAuth401,
512361
512361
  getTrustedDeviceToken
@@ -514249,7 +514249,7 @@ function joinPromptValues(values3) {
514249
514249
  function canBatchWith(head, next) {
514250
514250
  return next !== undefined && next.mode === "prompt" && next.workload === head.workload && next.isMeta === head.isMeta;
514251
514251
  }
514252
- async function runHeadless(inputPrompt, getAppState, setAppState, commands2, tools, sdkMcpConfigs, agents2, options) {
514252
+ async function runHeadless(inputPrompt, getAppState, setAppState, commands, tools, sdkMcpConfigs, agents2, options) {
514253
514253
  if (process.env.USER_TYPE === "ant" && isEnvTruthy(process.env.CLAUDE_CODE_EXIT_AFTER_FIRST_RENDER)) {
514254
514254
  process.stderr.write(`
514255
514255
  Startup time: ${Math.round(process.uptime() * 1000)}ms
@@ -514469,7 +514469,7 @@ Error: sandbox required but unavailable: ${sandboxUnavailableReason}
514469
514469
  let lastMessage;
514470
514470
  const transformToStreamlined = null;
514471
514471
  headlessProfilerCheckpoint("before_runHeadlessStreaming");
514472
- for await (const message of runHeadlessStreaming(structuredIO, appState.mcp.clients, [...commands2, ...appState.mcp.commands], filteredTools, initialMessages, canUseTool, sdkMcpConfigs, getAppState, setAppState, agents2, options, turnInterruptionState)) {
514472
+ for await (const message of runHeadlessStreaming(structuredIO, appState.mcp.clients, [...commands, ...appState.mcp.commands], filteredTools, initialMessages, canUseTool, sdkMcpConfigs, getAppState, setAppState, agents2, options, turnInterruptionState)) {
514473
514473
  if (transformToStreamlined) {
514474
514474
  const transformed = transformToStreamlined(message);
514475
514475
  if (transformed) {
@@ -514527,7 +514527,7 @@ Error: sandbox required but unavailable: ${sandboxUnavailableReason}
514527
514527
  if (false) {}
514528
514528
  gracefulShutdownSync(lastMessage?.type === "result" && lastMessage?.is_error ? 1 : 0);
514529
514529
  }
514530
- function runHeadlessStreaming(structuredIO, mcpClients, commands2, tools, initialMessages, canUseTool, sdkMcpConfigs, getAppState, setAppState, agents2, options, turnInterruptionState) {
514530
+ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initialMessages, canUseTool, sdkMcpConfigs, getAppState, setAppState, agents2, options, turnInterruptionState) {
514531
514531
  let running = false;
514532
514532
  let runPhase;
514533
514533
  let inputClosed = false;
@@ -514899,7 +514899,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands2, tools, initia
514899
514899
  }
514900
514900
  }
514901
514901
  const idleTimeout = createIdleTimeoutManager(() => !running);
514902
- let currentCommands = commands2;
514902
+ let currentCommands = commands;
514903
514903
  let currentAgents = agents2;
514904
514904
  async function refreshPluginState() {
514905
514905
  const { agentDefinitions: freshAgentDefs } = await refreshActivePlugins(setAppState);
@@ -515476,7 +515476,7 @@ ${m2.text}
515476
515476
  };
515477
515477
  }
515478
515478
  }
515479
- await handleInitializeRequest(message.request, message.request_id, initialized5, output, commands2, modelInfos, structuredIO, !!options.enableAuthStatus, options, agents2, getAppState);
515479
+ await handleInitializeRequest(message.request, message.request_id, initialized5, output, commands, modelInfos, structuredIO, !!options.enableAuthStatus, options, agents2, getAppState);
515480
515480
  if (message.request.promptSuggestions) {
515481
515481
  setAppState((prev) => {
515482
515482
  if (prev.promptSuggestionEnabled)
@@ -516323,7 +516323,7 @@ function getCanUseToolFn(permissionPromptToolName, structuredIO, getMcpTools, on
516323
516323
  return resolved(tool, input, toolUseContext, assistantMessage, toolUseId, forceDecision);
516324
516324
  };
516325
516325
  }
516326
- async function handleInitializeRequest(request, requestId, initialized5, output, commands2, modelInfos, structuredIO, enableAuthStatus, options, agents2, getAppState) {
516326
+ async function handleInitializeRequest(request, requestId, initialized5, output, commands, modelInfos, structuredIO, enableAuthStatus, options, agents2, getAppState) {
516327
516327
  if (initialized5) {
516328
516328
  output.enqueue({
516329
516329
  type: "control_response",
@@ -516394,7 +516394,7 @@ async function handleInitializeRequest(request, requestId, initialized5, output,
516394
516394
  setInitJsonSchema(request.jsonSchema);
516395
516395
  }
516396
516396
  const initResponse = {
516397
- commands: commands2.filter((cmd) => cmd.userInvocable !== false).map((cmd) => ({
516397
+ commands: commands.filter((cmd) => cmd.userInvocable !== false).map((cmd) => ({
516398
516398
  name: getCommandName(cmd),
516399
516399
  description: formatDescriptionWithSource(cmd),
516400
516400
  argumentHint: cmd.argumentHint || ""
@@ -518011,7 +518011,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
518011
518011
  setCwd(cwd3);
518012
518012
  const server = new Server({
518013
518013
  name: "claude/tengu",
518014
- version: "1.1.17"
518014
+ version: "1.1.18"
518015
518015
  }, {
518016
518016
  capabilities: {
518017
518017
  tools: {}
@@ -519092,7 +519092,7 @@ function WelcomeV2() {
519092
519092
  dimColor: true,
519093
519093
  children: [
519094
519094
  "v",
519095
- "1.1.17"
519095
+ "1.1.18"
519096
519096
  ]
519097
519097
  }, undefined, true, undefined, this)
519098
519098
  ]
@@ -519661,7 +519661,7 @@ __export(exports_update, {
519661
519661
  });
519662
519662
  async function update() {
519663
519663
  logEvent("tengu_update_check", {});
519664
- writeToStdout(`Current version: ${"1.1.17"}
519664
+ writeToStdout(`Current version: ${"1.1.18"}
519665
519665
  `);
519666
519666
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
519667
519667
  writeToStdout(`Checking for updates to ${channel} version...
@@ -519736,8 +519736,8 @@ async function update() {
519736
519736
  writeToStdout(`localclawd is managed by Homebrew.
519737
519737
  `);
519738
519738
  const latest = await getLatestVersion(channel);
519739
- if (latest && !gte("1.1.17", latest)) {
519740
- writeToStdout(`Update available: ${"1.1.17"} → ${latest}
519739
+ if (latest && !gte("1.1.18", latest)) {
519740
+ writeToStdout(`Update available: ${"1.1.18"} → ${latest}
519741
519741
  `);
519742
519742
  writeToStdout(`
519743
519743
  `);
@@ -519753,8 +519753,8 @@ async function update() {
519753
519753
  writeToStdout(`localclawd is managed by winget.
519754
519754
  `);
519755
519755
  const latest = await getLatestVersion(channel);
519756
- if (latest && !gte("1.1.17", latest)) {
519757
- writeToStdout(`Update available: ${"1.1.17"} → ${latest}
519756
+ if (latest && !gte("1.1.18", latest)) {
519757
+ writeToStdout(`Update available: ${"1.1.18"} → ${latest}
519758
519758
  `);
519759
519759
  writeToStdout(`
519760
519760
  `);
@@ -519768,8 +519768,8 @@ async function update() {
519768
519768
  writeToStdout(`localclawd is managed by apk.
519769
519769
  `);
519770
519770
  const latest = await getLatestVersion(channel);
519771
- if (latest && !gte("1.1.17", latest)) {
519772
- writeToStdout(`Update available: ${"1.1.17"} → ${latest}
519771
+ if (latest && !gte("1.1.18", latest)) {
519772
+ writeToStdout(`Update available: ${"1.1.18"} → ${latest}
519773
519773
  `);
519774
519774
  writeToStdout(`
519775
519775
  `);
@@ -519834,11 +519834,11 @@ async function update() {
519834
519834
  `);
519835
519835
  await gracefulShutdown(1);
519836
519836
  }
519837
- if (result.latestVersion === "1.1.17") {
519838
- writeToStdout(source_default.green(`localclawd is up to date (${"1.1.17"})`) + `
519837
+ if (result.latestVersion === "1.1.18") {
519838
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.1.18"})`) + `
519839
519839
  `);
519840
519840
  } else {
519841
- writeToStdout(source_default.green(`Successfully updated from ${"1.1.17"} to version ${result.latestVersion}`) + `
519841
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.18"} to version ${result.latestVersion}`) + `
519842
519842
  `);
519843
519843
  await regenerateCompletionCache();
519844
519844
  }
@@ -519898,12 +519898,12 @@ async function update() {
519898
519898
  `);
519899
519899
  await gracefulShutdown(1);
519900
519900
  }
519901
- if (latestVersion === "1.1.17") {
519902
- writeToStdout(source_default.green(`localclawd is up to date (${"1.1.17"})`) + `
519901
+ if (latestVersion === "1.1.18") {
519902
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.1.18"})`) + `
519903
519903
  `);
519904
519904
  await gracefulShutdown(0);
519905
519905
  }
519906
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.17"})
519906
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.18"})
519907
519907
  `);
519908
519908
  writeToStdout(`Installing update...
519909
519909
  `);
@@ -519948,7 +519948,7 @@ async function update() {
519948
519948
  logForDebugging(`update: Installation status: ${status2}`);
519949
519949
  switch (status2) {
519950
519950
  case "success":
519951
- writeToStdout(source_default.green(`Successfully updated from ${"1.1.17"} to version ${latestVersion}`) + `
519951
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.18"} to version ${latestVersion}`) + `
519952
519952
  `);
519953
519953
  await regenerateCompletionCache();
519954
519954
  break;
@@ -520339,7 +520339,7 @@ async function run() {
520339
520339
  await init();
520340
520340
  profileCheckpoint("preAction_after_init");
520341
520341
  if (!isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_TERMINAL_TITLE)) {
520342
- process.title = "localClawd";
520342
+ process.title = "localclawd";
520343
520343
  }
520344
520344
  const {
520345
520345
  initSinks: initSinks2
@@ -520359,7 +520359,7 @@ async function run() {
520359
520359
  if (false) {}
520360
520360
  profileCheckpoint("preAction_after_settings_sync");
520361
520361
  });
520362
- program2.name("localClawd").description(`localClawd - starts an interactive session by default, use -p/--print for non-interactive output`).argument("[prompt]", "Your prompt", String).helpOption("-h, --help", "Display help for command").option("-d, --debug [filter]", 'Enable debug mode with optional category filtering (e.g., "api,hooks" or "!1p,!file")', (_value) => {
520362
+ program2.name("localclawd").description(`localclawd - starts an interactive session by default, use -p/--print for non-interactive output`).argument("[prompt]", "Your prompt", String).helpOption("-h, --help", "Display help for command").option("-d, --debug [filter]", 'Enable debug mode with optional category filtering (e.g., "api,hooks" or "!1p,!file")', (_value) => {
520363
520363
  return true;
520364
520364
  }).addOption(new Option("--debug-to-stderr", "Enable debug mode (to stderr)").argParser(Boolean).hideHelp()).option("--debug-file <path>", "Write debug logs to a specific file path (implicitly enables debug mode)", () => true).option("--verbose", "Override verbose mode setting from config", () => true).option("-p, --print", "Print response and exit (useful for pipes). Note: The workspace trust dialog is skipped when Claude is run with the -p mode. Only use this flag in directories you trust.", () => true).option("--bare", "Minimal mode: skip hooks, LSP, plugin sync, attribution, auto-memory, background prefetches, keychain reads, and CLAUDE.md auto-discovery. Sets CLAUDE_CODE_SIMPLE=1. Anthropic auth is strictly ANTHROPIC_API_KEY or apiKeyHelper via --settings (OAuth and keychain are never read). 3P providers (Bedrock/Vertex/Foundry) use their own credentials. Skills still resolve via /skill-name. Explicitly provide context via: --system-prompt[-file], --append-system-prompt[-file], --add-dir (CLAUDE.md dirs), --mcp-config, --settings, --agents, --plugin-dir.", () => true).addOption(new Option("--init", "Run Setup hooks with init trigger, then continue").hideHelp()).addOption(new Option("--init-only", "Run Setup and SessionStart:startup hooks, then exit").hideHelp()).addOption(new Option("--maintenance", "Run Setup hooks with maintenance trigger, then continue").hideHelp()).addOption(new Option("--output-format <format>", 'Output format (only works with --print): "text" (default), "json" (single result), or "stream-json" (realtime streaming)').choices(["text", "json", "stream-json"])).addOption(new Option("--json-schema <schema>", 'JSON Schema for structured output validation. Example: {"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}').argParser(String)).option("--include-hook-events", "Include all hook lifecycle events in the output stream (only works with --output-format=stream-json)", () => true).option("--include-partial-messages", "Include partial message chunks as they arrive (only works with --print and --output-format=stream-json)", () => true).addOption(new Option("--input-format <format>", 'Input format (only works with --print): "text" (default), or "stream-json" (realtime streaming input)').choices(["text", "stream-json"])).option("--mcp-debug", "[DEPRECATED. Use --debug instead] Enable MCP debug mode (shows MCP server errors)", () => true).option("--dangerously-skip-permissions", "Bypass all permission checks. Recommended only for sandboxes with no internet access.", () => true).option("--allow-dangerously-skip-permissions", "Enable bypassing all permission checks as an option, without it being enabled by default. Recommended only for sandboxes with no internet access.", () => true).addOption(new Option("--thinking <mode>", "Thinking mode: enabled (equivalent to adaptive), disabled").choices(["enabled", "adaptive", "disabled"]).hideHelp()).addOption(new Option("--max-thinking-tokens <tokens>", "[DEPRECATED. Use --thinking instead for newer models] Maximum number of thinking tokens (only works with --print)").argParser(Number).hideHelp()).addOption(new Option("--max-turns <turns>", "Maximum number of agentic turns in non-interactive mode. This will early exit the conversation after the specified number of turns. (only works with --print)").argParser(Number).hideHelp()).addOption(new Option("--max-budget-usd <amount>", "Maximum dollar amount to spend on API calls (only works with --print)").argParser((value) => {
520365
520365
  const amount = Number(value);
@@ -520383,14 +520383,14 @@ async function run() {
520383
520383
  throw new InvalidArgumentError(`It must be one of: ${allowed.join(", ")}`);
520384
520384
  }
520385
520385
  return value;
520386
- })).option("--agent <agent>", `Agent for the current session. Overrides the 'agent' setting.`).option("--betas <betas...>", "Beta headers to include in API requests (API key users only)").option("--fallback-model <model>", "Enable automatic fallback to specified model when default model is overloaded (only works with --print)").addOption(new Option("--workload <tag>", "Workload tag for billing-header attribution (cc_workload). Process-scoped; set by SDK daemon callers that spawn subprocesses for cron work. (only works with --print)").hideHelp()).option("--settings <file-or-json>", "Path to a settings JSON file or a JSON string to load additional settings from").option("--add-dir <directories...>", "Additional directories to allow tool access to").option("--ide", "Automatically connect to IDE on startup if exactly one valid IDE is available", () => true).option("--strict-mcp-config", "Only use MCP servers from --mcp-config, ignoring all other MCP configurations", () => true).option("--session-id <uuid>", "Use a specific session ID for the conversation (must be a valid UUID)").option("-n, --name <name>", "Set a display name for this session (shown in /resume and terminal title)").option("--agents <json>", `JSON object defining custom agents (e.g. '{"reviewer": {"description": "Reviews code", "prompt": "You are a code reviewer"}}')`).option("--setting-sources <sources>", "Comma-separated list of setting sources to load (user, project, local).").option("--plugin-dir <path>", "Load plugins from a directory for this session only (repeatable: --plugin-dir A --plugin-dir B)", (val, prev) => [...prev, val], []).option("--disable-slash-commands", "Disable all skills", () => true).option("--chrome", "Enable localClawd in Chrome integration").option("--no-chrome", "Disable localClawd in Chrome integration").option("--file <specs...>", "File resources to download at startup. Format: file_id:relative_path (e.g., --file file_abc:doc.txt file_def:img.png)").action(async (prompt, options) => {
520386
+ })).option("--agent <agent>", `Agent for the current session. Overrides the 'agent' setting.`).option("--betas <betas...>", "Beta headers to include in API requests (API key users only)").option("--fallback-model <model>", "Enable automatic fallback to specified model when default model is overloaded (only works with --print)").addOption(new Option("--workload <tag>", "Workload tag for billing-header attribution (cc_workload). Process-scoped; set by SDK daemon callers that spawn subprocesses for cron work. (only works with --print)").hideHelp()).option("--settings <file-or-json>", "Path to a settings JSON file or a JSON string to load additional settings from").option("--add-dir <directories...>", "Additional directories to allow tool access to").option("--ide", "Automatically connect to IDE on startup if exactly one valid IDE is available", () => true).option("--strict-mcp-config", "Only use MCP servers from --mcp-config, ignoring all other MCP configurations", () => true).option("--session-id <uuid>", "Use a specific session ID for the conversation (must be a valid UUID)").option("-n, --name <name>", "Set a display name for this session (shown in /resume and terminal title)").option("--agents <json>", `JSON object defining custom agents (e.g. '{"reviewer": {"description": "Reviews code", "prompt": "You are a code reviewer"}}')`).option("--setting-sources <sources>", "Comma-separated list of setting sources to load (user, project, local).").option("--plugin-dir <path>", "Load plugins from a directory for this session only (repeatable: --plugin-dir A --plugin-dir B)", (val, prev) => [...prev, val], []).option("--disable-slash-commands", "Disable all skills", () => true).option("--chrome", "Enable localclawd in Chrome integration").option("--no-chrome", "Disable localclawd in Chrome integration").option("--file <specs...>", "File resources to download at startup. Format: file_id:relative_path (e.g., --file file_abc:doc.txt file_def:img.png)").action(async (prompt, options) => {
520387
520387
  profileCheckpoint("action_handler_start");
520388
520388
  if (options.bare) {
520389
520389
  process.env.CLAUDE_CODE_SIMPLE = "1";
520390
520390
  }
520391
520391
  if (prompt === "code") {
520392
520392
  logEvent("tengu_code_prompt_ignored", {});
520393
- console.warn(source_default.yellow("Tip: You can launch localClawd with just `localClawd`"));
520393
+ console.warn(source_default.yellow("Tip: You can launch localclawd with just `localclawd`"));
520394
520394
  prompt = undefined;
520395
520395
  }
520396
520396
  if (prompt && typeof prompt === "string" && !/\s/.test(prompt) && prompt.length > 0) {
@@ -520911,6 +520911,8 @@ ${hint}` : hint;
520911
520911
  }
520912
520912
  const explicitModel = options.model || process.env.ANTHROPIC_MODEL;
520913
520913
  if (false) {}
520914
+ let commands;
520915
+ let agentDefinitionsResult;
520914
520916
  try {
520915
520917
  const userSpecifiedModel = options.model === "default" ? getDefaultMainLoopModel() : options.model;
520916
520918
  const userSpecifiedFallbackModel2 = fallbackModel === "default" ? getDefaultMainLoopModel() : fallbackModel;
@@ -520919,7 +520921,7 @@ ${hint}` : hint;
520919
520921
  startupLoadingIndicator?.update("Loading commands and agents");
520920
520922
  const commandsStart = Date.now();
520921
520923
  logForDebugging("[STARTUP] Awaiting commands and agents");
520922
- const [commands2, agentDefinitionsResult] = await Promise.all([commandsPromise ?? getCommands(currentCwd3), agentDefsPromise ?? getAgentDefinitionsWithOverrides(currentCwd3)]);
520924
+ [commands, agentDefinitionsResult] = await Promise.all([commandsPromise ?? getCommands(currentCwd3), agentDefsPromise ?? getAgentDefinitionsWithOverrides(currentCwd3)]);
520923
520925
  logForDebugging(`[STARTUP] Commands and agents loaded in ${Date.now() - commandsStart}ms`);
520924
520926
  profileCheckpoint("action_commands_loaded");
520925
520927
  let cliAgents2 = [];
@@ -521075,7 +521077,7 @@ If using VSCode, open a new terminal with Ctrl+\` and try again.
521075
521077
  const setupScreensStart = Date.now();
521076
521078
  let onboardingShown;
521077
521079
  try {
521078
- onboardingShown = await showSetupScreens(root3, permissionMode, allowDangerouslySkipPermissions, commands2, enableClaudeInChrome, devChannels);
521080
+ onboardingShown = await showSetupScreens(root3, permissionMode, allowDangerouslySkipPermissions, commands, enableClaudeInChrome, devChannels);
521079
521081
  } catch (err2) {
521080
521082
  const msg = err2 instanceof Error ? err2.message : String(err2);
521081
521083
  process.stderr.write(`
@@ -521232,7 +521234,7 @@ Run with --debug for more details.
521232
521234
  }
521233
521235
  }
521234
521236
  logForDiagnosticsNoPII("info", "started", {
521235
- version: "1.1.17",
521237
+ version: "1.1.18",
521236
521238
  is_native_binary: isInBundledMode()
521237
521239
  });
521238
521240
  registerCleanup(async () => {
@@ -522016,7 +522018,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
522016
522018
  pendingHookMessages
522017
522019
  }, renderAndRun);
522018
522020
  }
522019
- }).version("1.1.17 (localClawd)", "-v, --version", "Output the version number");
522021
+ }).version("1.1.18 (localclawd)", "-v, --version", "Output the version number");
522020
522022
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
522021
522023
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
522022
522024
  if (canUserConfigureAdvisor()) {
@@ -522052,7 +522054,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
522052
522054
  return program2;
522053
522055
  }
522054
522056
  const mcp2 = program2.command("mcp").description("Configure and manage MCP servers").configureHelp(createSortedHelpConfig()).enablePositionalOptions();
522055
- mcp2.command("serve").description(`Start the localClawd MCP server`).option("-d, --debug", "Enable debug mode", () => true).option("--verbose", "Override verbose mode setting from config", () => true).action(async ({
522057
+ mcp2.command("serve").description(`Start the localclawd MCP server`).option("-d, --debug", "Enable debug mode", () => true).option("--verbose", "Override verbose mode setting from config", () => true).action(async ({
522056
522058
  debug: debug4,
522057
522059
  verbose
522058
522060
  }) => {
@@ -522137,7 +522139,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
522137
522139
  await authLogout2();
522138
522140
  });
522139
522141
  const coworkOption = () => new Option("--cowork", "Use cowork_plugins directory").hideHelp();
522140
- const pluginCmd = program2.command("plugin").alias("plugins").description("Manage localClawd plugins").configureHelp(createSortedHelpConfig());
522142
+ const pluginCmd = program2.command("plugin").alias("plugins").description("Manage localclawd plugins").configureHelp(createSortedHelpConfig());
522141
522143
  pluginCmd.command("validate <path>").description("Validate a plugin or marketplace manifest").addOption(coworkOption()).action(async (manifestPath, options) => {
522142
522144
  const {
522143
522145
  pluginValidateHandler: pluginValidateHandler2
@@ -522150,7 +522152,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
522150
522152
  } = await Promise.resolve().then(() => (init_plugins(), exports_plugins));
522151
522153
  await pluginListHandler2(options);
522152
522154
  });
522153
- const marketplaceCmd = pluginCmd.command("marketplace").description("Manage localClawd marketplaces").configureHelp(createSortedHelpConfig());
522155
+ const marketplaceCmd = pluginCmd.command("marketplace").description("Manage localclawd marketplaces").configureHelp(createSortedHelpConfig());
522154
522156
  marketplaceCmd.command("add <source>").description("Add a marketplace from a URL, path, or GitHub repo").addOption(coworkOption()).option("--sparse <paths...>", "Limit checkout to specific directories via git sparse-checkout (for monorepos). Example: --sparse .claude-plugin plugins").option("--scope <scope>", "Where to declare the marketplace: user (default), project, or local").action(async (source, options) => {
522155
522157
  const {
522156
522158
  marketplaceAddHandler: marketplaceAddHandler2
@@ -522224,7 +522226,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
522224
522226
  if (false) {}
522225
522227
  if (false) {}
522226
522228
  if (false) {}
522227
- program2.command("doctor").description("Check the health of your localClawd auto-updater. Note: The workspace trust dialog is skipped and stdio servers from .mcp.json are spawned for health checks. Only use this command in directories you trust.").action(async () => {
522229
+ program2.command("doctor").description("Check the health of your localclawd auto-updater. Note: The workspace trust dialog is skipped and stdio servers from .mcp.json are spawned for health checks. Only use this command in directories you trust.").action(async () => {
522228
522230
  const [{
522229
522231
  doctorHandler: doctorHandler2
522230
522232
  }, {
@@ -522241,7 +522243,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
522241
522243
  });
522242
522244
  if (false) {}
522243
522245
  if (false) {}
522244
- program2.command("install [target]").description("Install localClawd native build. Use [target] to specify version (stable, latest, or specific version)").option("--force", "Force installation even if already installed").action(async (target, options) => {
522246
+ program2.command("install [target]").description("Install localclawd native build. Use [target] to specify version (stable, latest, or specific version)").option("--force", "Force installation even if already installed").action(async (target, options) => {
522245
522247
  const {
522246
522248
  installHandler: installHandler2
522247
522249
  } = await Promise.resolve().then(() => (init_util(), exports_util));
@@ -522524,7 +522526,7 @@ if (false) {}
522524
522526
  async function main2() {
522525
522527
  const args = process.argv.slice(2);
522526
522528
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
522527
- console.log(`${"1.1.17"} (localclawd)`);
522529
+ console.log(`${"1.1.18"} (localclawd)`);
522528
522530
  return;
522529
522531
  }
522530
522532
  const {
@@ -522621,4 +522623,4 @@ localclawd crashed: ${msg}
522621
522623
  process.exit(1);
522622
522624
  });
522623
522625
 
522624
- //# debugId=DC1DA88EB4EBA6B164756E2164756E21
522626
+ //# debugId=7EEE171F3F8E73F364756E2164756E21