@liberseek/boft-cli-win32-arm64 0.7.1 → 0.7.3

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.
@@ -15310,10 +15310,21 @@ var harnessCommandDescriptorSchema = external_exports.object({
15310
15310
  invocation: commandInvocationSchema,
15311
15311
  label: commandLabelSchema,
15312
15312
  description: commandDescriptionSchema.optional(),
15313
- argumentMode: external_exports.enum(["none", "text"])
15313
+ argumentMode: external_exports.enum(["none", "text"]),
15314
+ /**
15315
+ * Native distinction reported by the Harness. Omitted when the Harness does
15316
+ * not tell skills and commands apart; consumers treat that as "command".
15317
+ */
15318
+ kind: external_exports.enum(["command", "skill"]).optional()
15314
15319
  }).strict();
15315
15320
  var harnessCommandCatalogSchema = external_exports.object({
15316
- commands: external_exports.array(harnessCommandDescriptorSchema)
15321
+ commands: external_exports.array(harnessCommandDescriptorSchema),
15322
+ /**
15323
+ * `live` when the catalog includes what a native Session reports for its
15324
+ * workspace (custom commands, skills); `static` for Adapter built-ins only.
15325
+ * Omitted by Adapters; set by the Host on inspection results.
15326
+ */
15327
+ source: external_exports.enum(["live", "static"]).optional()
15317
15328
  }).strict().superRefine((catalog, context) => {
15318
15329
  const ids = /* @__PURE__ */ new Set();
15319
15330
  for (const [index, command] of catalog.commands.entries()) {
@@ -15327,7 +15338,11 @@ var harnessCommandCatalogSchema = external_exports.object({
15327
15338
  ids.add(command.id);
15328
15339
  }
15329
15340
  });
15330
- var harnessCommandsInspectParamsSchema = external_exports.object({ harnessId: harnessIdSchema }).strict();
15341
+ var harnessCommandsInspectParamsSchema = external_exports.object({
15342
+ harnessId: harnessIdSchema,
15343
+ /** Workspace of a draft without a Thread, for its live catalog when known. */
15344
+ cwd: external_exports.string().min(1).optional()
15345
+ }).strict();
15331
15346
  var threadCommandsInspectParamsSchema = external_exports.object({
15332
15347
  threadId: hostThreadIdSchema
15333
15348
  }).strict();
@@ -15306,10 +15306,21 @@ var harnessCommandDescriptorSchema = external_exports.object({
15306
15306
  invocation: commandInvocationSchema,
15307
15307
  label: commandLabelSchema,
15308
15308
  description: commandDescriptionSchema.optional(),
15309
- argumentMode: external_exports.enum(["none", "text"])
15309
+ argumentMode: external_exports.enum(["none", "text"]),
15310
+ /**
15311
+ * Native distinction reported by the Harness. Omitted when the Harness does
15312
+ * not tell skills and commands apart; consumers treat that as "command".
15313
+ */
15314
+ kind: external_exports.enum(["command", "skill"]).optional()
15310
15315
  }).strict();
15311
15316
  var harnessCommandCatalogSchema = external_exports.object({
15312
- commands: external_exports.array(harnessCommandDescriptorSchema)
15317
+ commands: external_exports.array(harnessCommandDescriptorSchema),
15318
+ /**
15319
+ * `live` when the catalog includes what a native Session reports for its
15320
+ * workspace (custom commands, skills); `static` for Adapter built-ins only.
15321
+ * Omitted by Adapters; set by the Host on inspection results.
15322
+ */
15323
+ source: external_exports.enum(["live", "static"]).optional()
15313
15324
  }).strict().superRefine((catalog, context) => {
15314
15325
  const ids = /* @__PURE__ */ new Set();
15315
15326
  for (const [index, command] of catalog.commands.entries()) {
@@ -15323,7 +15334,11 @@ var harnessCommandCatalogSchema = external_exports.object({
15323
15334
  ids.add(command.id);
15324
15335
  }
15325
15336
  });
15326
- var harnessCommandsInspectParamsSchema = external_exports.object({ harnessId: harnessIdSchema }).strict();
15337
+ var harnessCommandsInspectParamsSchema = external_exports.object({
15338
+ harnessId: harnessIdSchema,
15339
+ /** Workspace of a draft without a Thread, for its live catalog when known. */
15340
+ cwd: external_exports.string().min(1).optional()
15341
+ }).strict();
15327
15342
  var threadCommandsInspectParamsSchema = external_exports.object({
15328
15343
  threadId: hostThreadIdSchema
15329
15344
  }).strict();
@@ -15668,6 +15683,124 @@ function parseHostUsage(value) {
15668
15683
  return { ...value };
15669
15684
  }
15670
15685
 
15686
+ // ../../harness-adapter/dist/live-command-catalog.js
15687
+ var COMMON_EXCLUDED_LIVE_COMMANDS = /* @__PURE__ */ new Set([
15688
+ // Session lifecycle
15689
+ "branch",
15690
+ "clear",
15691
+ "exit",
15692
+ "fork",
15693
+ "fresh",
15694
+ "new",
15695
+ "quit",
15696
+ "rename",
15697
+ "rename-chat",
15698
+ "reset",
15699
+ "resume",
15700
+ "rewind",
15701
+ "session",
15702
+ "sessions",
15703
+ // Desktop-owned configuration
15704
+ "autocompact",
15705
+ "color",
15706
+ "config",
15707
+ "effort",
15708
+ "fast",
15709
+ "keybindings",
15710
+ "model",
15711
+ "models",
15712
+ "output-style",
15713
+ "permissions",
15714
+ "settings",
15715
+ "statusline",
15716
+ "terminal-setup",
15717
+ "theme",
15718
+ "vim",
15719
+ // Trust and approval policy
15720
+ "always-approve",
15721
+ "auto-mode-setup",
15722
+ // Native login
15723
+ "login",
15724
+ "logout",
15725
+ // Work outliving the Turn
15726
+ "autopilot",
15727
+ "background",
15728
+ "bg",
15729
+ "goal",
15730
+ "jobs",
15731
+ "loop",
15732
+ "multitask",
15733
+ "queue",
15734
+ "remote-control",
15735
+ "schedule",
15736
+ "steer",
15737
+ // Native terminal UI
15738
+ "copy",
15739
+ "debug",
15740
+ "feedback",
15741
+ "heapdump",
15742
+ "share",
15743
+ "shell",
15744
+ // Plugin and MCP management
15745
+ "marketplace",
15746
+ "mcp",
15747
+ "plugins",
15748
+ "reload-plugins"
15749
+ ]);
15750
+ var COMMON_EXCLUDED_LIVE_COMMAND_PREFIXES = ["__", "hooks-"];
15751
+ function isExcludedLiveCommand(name, kind, extra = {}) {
15752
+ const normalized = name.trim().replace(/^\//u, "");
15753
+ if (new Set(extra.names ?? []).has(normalized))
15754
+ return true;
15755
+ if (extra.prefixes?.some((prefix) => normalized.startsWith(prefix)))
15756
+ return true;
15757
+ if (kind === "skill")
15758
+ return false;
15759
+ return COMMON_EXCLUDED_LIVE_COMMANDS.has(normalized) || COMMON_EXCLUDED_LIVE_COMMAND_PREFIXES.some((prefix) => normalized.startsWith(prefix));
15760
+ }
15761
+ function liveHarnessCommandPrompt(catalog, idPrefix, commandId, argumentText) {
15762
+ if (!commandId.startsWith(idPrefix))
15763
+ return null;
15764
+ const descriptor = catalog.commands.find(({ id }) => id === commandId);
15765
+ if (!descriptor)
15766
+ return null;
15767
+ const text = typeof argumentText === "string" ? argumentText.trim() : "";
15768
+ return text ? `${descriptor.invocation} ${text}` : descriptor.invocation;
15769
+ }
15770
+ function mergeLiveHarnessCommands(builtIns, idPrefix, live, exclusions = {}) {
15771
+ if (!live)
15772
+ return builtIns;
15773
+ const invocations = new Set(builtIns.commands.map(({ invocation }) => invocation));
15774
+ const ids = new Set(builtIns.commands.map(({ id }) => id));
15775
+ const dynamic = [];
15776
+ for (const command of live) {
15777
+ const name = command.name.trim().replace(/^\//u, "");
15778
+ if (!name || /\s/u.test(name))
15779
+ continue;
15780
+ if (isExcludedLiveCommand(name, command.kind, exclusions))
15781
+ continue;
15782
+ const invocation = `/${name}`;
15783
+ const id = `${idPrefix}${name.replace(/[^A-Za-z0-9._:-]/gu, "-")}`.slice(0, 128);
15784
+ if (invocations.has(invocation) || ids.has(id))
15785
+ continue;
15786
+ const description = command.description?.trim().slice(0, 512);
15787
+ const parsed = harnessCommandDescriptorSchema.safeParse({
15788
+ id,
15789
+ invocation,
15790
+ label: name.slice(0, 128),
15791
+ ...description ? { description } : {},
15792
+ argumentMode: "text",
15793
+ kind: command.kind
15794
+ });
15795
+ if (!parsed.success)
15796
+ continue;
15797
+ invocations.add(invocation);
15798
+ ids.add(id);
15799
+ dynamic.push(parsed.data);
15800
+ }
15801
+ return harnessCommandCatalogSchema.parse({ commands: [...builtIns.commands, ...dynamic] });
15802
+ }
15803
+
15671
15804
  // ../../harness-broker/dist/protocol.js
15672
15805
  var HARNESS_BROKER_PROTOCOL_VERSION = 1;
15673
15806
  var HARNESS_BROKER_MAX_FRAME_BYTES = 8 * 1024 * 1024;
@@ -16487,6 +16620,7 @@ var BrokeredHarnessSession = class {
16487
16620
  var BrokeredHarnessAdapter = class {
16488
16621
  #sessions = /* @__PURE__ */ new Set();
16489
16622
  commandCatalog;
16623
+ liveCommandCatalog;
16490
16624
  harnessId;
16491
16625
  #descriptorPath;
16492
16626
  #forwardEnvironment;
@@ -16588,6 +16722,8 @@ var BrokeredHarnessAdapter = class {
16588
16722
  this.#forwardEnvironment = input.forwardDelegationEnvironment === true;
16589
16723
  if (input.commandCatalog)
16590
16724
  this.commandCatalog = input.commandCatalog;
16725
+ if (input.liveCommandCatalog)
16726
+ this.liveCommandCatalog = true;
16591
16727
  this.#descriptorPath = input.descriptorPath ?? defaultHarnessBrokerDescriptorPath(input.environment, this.harnessId);
16592
16728
  }
16593
16729
  async inspectAccount() {
@@ -44197,6 +44333,51 @@ function isClaudePermissionMode(value) {
44197
44333
  // dist/sdk-transport.js
44198
44334
  import { spawn } from "node:child_process";
44199
44335
 
44336
+ // dist/slash-commands.js
44337
+ var DYNAMIC_ID_PREFIX = "claude.slash.";
44338
+ var CLAUDE_EXCLUDED_COMMANDS = [
44339
+ "advisor",
44340
+ "agents",
44341
+ "design-consent",
44342
+ "design-revoke",
44343
+ "doctor",
44344
+ "extra-usage",
44345
+ "import",
44346
+ "team-onboarding",
44347
+ "ultrareview",
44348
+ "usage-credits",
44349
+ "workflow-launch-exec"
44350
+ ];
44351
+ function parseClaudeSlashCommands(value) {
44352
+ if (!Array.isArray(value))
44353
+ return [];
44354
+ return value.flatMap((entry) => {
44355
+ if (typeof entry !== "object" || entry === null)
44356
+ return [];
44357
+ const record2 = entry;
44358
+ const name = typeof record2.name === "string" ? record2.name.trim().replace(/^\//u, "") : "";
44359
+ if (!name)
44360
+ return [];
44361
+ return [
44362
+ {
44363
+ name,
44364
+ description: typeof record2.description === "string" ? record2.description : "",
44365
+ argumentHint: typeof record2.argumentHint === "string" ? record2.argumentHint : ""
44366
+ }
44367
+ ];
44368
+ });
44369
+ }
44370
+ function claudeLiveCommandCatalog(builtIns, snapshot) {
44371
+ return mergeLiveHarnessCommands(builtIns, DYNAMIC_ID_PREFIX, snapshot?.commands.map((command) => ({
44372
+ name: command.name,
44373
+ description: command.description,
44374
+ kind: snapshot.skillNames.has(command.name) ? "skill" : "command"
44375
+ })) ?? null, { names: CLAUDE_EXCLUDED_COMMANDS });
44376
+ }
44377
+ function claudeDynamicCommandPrompt(catalog, commandId, argumentText) {
44378
+ return liveHarnessCommandPrompt(catalog, DYNAMIC_ID_PREFIX, commandId, argumentText);
44379
+ }
44380
+
44200
44381
  // dist/account-usage.js
44201
44382
  function projectClaudeAccountUsage(usage, account) {
44202
44383
  if (!usage.rate_limits_available || !usage.rate_limits)
@@ -45497,6 +45678,8 @@ var ClaudeSdkTransport = class {
45497
45678
  #interactionOrdinal = 0;
45498
45679
  #provider;
45499
45680
  #query = null;
45681
+ #slashCommands = null;
45682
+ #skillNames = /* @__PURE__ */ new Set();
45500
45683
  #started = false;
45501
45684
  #backgroundTasks = /* @__PURE__ */ new Set();
45502
45685
  constructor(options) {
@@ -45569,7 +45752,8 @@ var ClaudeSdkTransport = class {
45569
45752
  });
45570
45753
  this.#query = activeQuery;
45571
45754
  try {
45572
- await activeQuery.initializationResult();
45755
+ const initialization = await activeQuery.initializationResult();
45756
+ this.#slashCommands = parseClaudeSlashCommands(initialization.commands);
45573
45757
  this.#provider = (await activeQuery.accountInfo().catch(() => void 0))?.apiProvider;
45574
45758
  } catch (error52) {
45575
45759
  activeQuery.close();
@@ -45579,6 +45763,20 @@ var ClaudeSdkTransport = class {
45579
45763
  this.#started = true;
45580
45764
  this.#consumeTask = this.#consume(activeQuery);
45581
45765
  }
45766
+ slashCommands() {
45767
+ if (!this.#started || this.#slashCommands === null)
45768
+ return null;
45769
+ return { commands: this.#slashCommands, skillNames: this.#skillNames };
45770
+ }
45771
+ #observeSlashCommands(message) {
45772
+ if (!isRecord6(message) || message.type !== "system")
45773
+ return;
45774
+ if (message.subtype === "init" && Array.isArray(message.skills)) {
45775
+ this.#skillNames = new Set(message.skills.filter((name) => typeof name === "string"));
45776
+ } else if (message.subtype === "commands_changed") {
45777
+ this.#slashCommands = parseClaudeSlashCommands(message.commands);
45778
+ }
45779
+ }
45582
45780
  async getContextUsage() {
45583
45781
  const activeQuery = this.#query;
45584
45782
  if (!this.#started || !activeQuery)
@@ -45869,6 +46067,7 @@ var ClaudeSdkTransport = class {
45869
46067
  try {
45870
46068
  for await (const message of activeQuery) {
45871
46069
  this.#observeBackgroundTasks(message);
46070
+ this.#observeSlashCommands(message);
45872
46071
  const permissionMode = permissionModeFromMessage(message);
45873
46072
  if (permissionMode && permissionMode !== this.#permissionMode) {
45874
46073
  this.#permissionMode = permissionMode;
@@ -46840,7 +47039,7 @@ var ClaudeHarnessSession = class {
46840
47039
  formatVersion: 1
46841
47040
  });
46842
47041
  this.commands = {
46843
- list: async () => ({ ok: true, value: claudeCommandCatalog }),
47042
+ list: async () => ({ ok: true, value: this.#liveCommandCatalog() }),
46844
47043
  execute: (command) => this.#executeHarnessCommand(command)
46845
47044
  };
46846
47045
  const durable = this.#openMode === "resume" || options.nativeRef !== void 0;
@@ -47090,11 +47289,17 @@ var ClaudeHarnessSession = class {
47090
47289
  }
47091
47290
  return { ok: true, value: { turnId: command.turnId } };
47092
47291
  }
47292
+ /** Built-ins plus the live commands and skills of the started native Session. */
47293
+ #liveCommandCatalog() {
47294
+ return claudeLiveCommandCatalog(claudeCommandCatalog, this.#transport?.slashCommands?.() ?? null);
47295
+ }
47093
47296
  async #executeHarnessCommand(command) {
47094
47297
  if (this.#phase !== "open") {
47095
47298
  return { ok: false, error: invalidState("Claude Code Session is not open") };
47096
47299
  }
47097
- const parsed = parseClaudeHarnessCommand(command);
47300
+ const argumentText = command.arguments?.text;
47301
+ const dynamicPrompt = claudeDynamicCommandPrompt(this.#liveCommandCatalog(), command.commandId, typeof argumentText === "string" ? argumentText : void 0);
47302
+ const parsed = dynamicPrompt === null ? parseClaudeHarnessCommand(command) : { ok: true, value: { id: "slash", text: dynamicPrompt } };
47098
47303
  if (!parsed.ok)
47099
47304
  return parsed;
47100
47305
  if (this.#acceptingTurn || this.#active || this.#configurationTask || this.#readingHistory) {
@@ -47183,7 +47388,7 @@ var ClaudeHarnessSession = class {
47183
47388
  this.#event({ type: "turn.started", turnId: command.turnId });
47184
47389
  if (item)
47185
47390
  this.#event({ type: "item.started", turnId: command.turnId, item });
47186
- const running = parsed.value.id === "claude.compact" ? transport.compact(nativeTurnKey, parsed.value.text, (event) => this.#handleTurnEvent(active, event)) : parsed.value.id === "claude.init" ? transport.init(nativeTurnKey, (event) => this.#handleTurnEvent(active, event)) : transport.recap(nativeTurnKey, (event) => this.#handleTurnEvent(active, event));
47391
+ const running = parsed.value.id === "claude.compact" ? transport.compact(nativeTurnKey, parsed.value.text, (event) => this.#handleTurnEvent(active, event)) : parsed.value.id === "claude.init" ? transport.init(nativeTurnKey, (event) => this.#handleTurnEvent(active, event)) : parsed.value.id === "slash" ? transport.runTurn(parsed.value.text, nativeTurnKey, (event) => this.#handleTurnEvent(active, event)) : transport.recap(nativeTurnKey, (event) => this.#handleTurnEvent(active, event));
47187
47392
  try {
47188
47393
  void running.then((result) => this.#finishResult(active, result), () => this.#handleTurnTransportFailure(active));
47189
47394
  } catch {
@@ -48580,6 +48785,7 @@ var ClaudeHarnessSession = class {
48580
48785
  };
48581
48786
  var ClaudeCodeAdapter = class {
48582
48787
  commandCatalog = claudeCommandCatalog;
48788
+ liveCommandCatalog = true;
48583
48789
  harnessId = claudeCodeHarnessId2;
48584
48790
  subagents = {
48585
48791
  readSnapshot: async (input) => {
@@ -49140,6 +49346,7 @@ async function createHarnessAdapter(context) {
49140
49346
  if (context.platform === "darwin" && context.managedRemoteHost) {
49141
49347
  return new BrokeredHarnessAdapter({
49142
49348
  commandCatalog: claudeCommandCatalog,
49349
+ liveCommandCatalog: true,
49143
49350
  environment,
49144
49351
  ...context.brokerDescriptorPath ? { descriptorPath: context.brokerDescriptorPath } : {}
49145
49352
  });
@@ -15301,10 +15301,21 @@ var harnessCommandDescriptorSchema = external_exports.object({
15301
15301
  invocation: commandInvocationSchema,
15302
15302
  label: commandLabelSchema,
15303
15303
  description: commandDescriptionSchema.optional(),
15304
- argumentMode: external_exports.enum(["none", "text"])
15304
+ argumentMode: external_exports.enum(["none", "text"]),
15305
+ /**
15306
+ * Native distinction reported by the Harness. Omitted when the Harness does
15307
+ * not tell skills and commands apart; consumers treat that as "command".
15308
+ */
15309
+ kind: external_exports.enum(["command", "skill"]).optional()
15305
15310
  }).strict();
15306
15311
  var harnessCommandCatalogSchema = external_exports.object({
15307
- commands: external_exports.array(harnessCommandDescriptorSchema)
15312
+ commands: external_exports.array(harnessCommandDescriptorSchema),
15313
+ /**
15314
+ * `live` when the catalog includes what a native Session reports for its
15315
+ * workspace (custom commands, skills); `static` for Adapter built-ins only.
15316
+ * Omitted by Adapters; set by the Host on inspection results.
15317
+ */
15318
+ source: external_exports.enum(["live", "static"]).optional()
15308
15319
  }).strict().superRefine((catalog, context) => {
15309
15320
  const ids = /* @__PURE__ */ new Set();
15310
15321
  for (const [index, command] of catalog.commands.entries()) {
@@ -15318,7 +15329,11 @@ var harnessCommandCatalogSchema = external_exports.object({
15318
15329
  ids.add(command.id);
15319
15330
  }
15320
15331
  });
15321
- var harnessCommandsInspectParamsSchema = external_exports.object({ harnessId: harnessIdSchema }).strict();
15332
+ var harnessCommandsInspectParamsSchema = external_exports.object({
15333
+ harnessId: harnessIdSchema,
15334
+ /** Workspace of a draft without a Thread, for its live catalog when known. */
15335
+ cwd: external_exports.string().min(1).optional()
15336
+ }).strict();
15322
15337
  var threadCommandsInspectParamsSchema = external_exports.object({
15323
15338
  threadId: hostThreadIdSchema
15324
15339
  }).strict();
@@ -15680,6 +15695,82 @@ function parseHostUsage(value) {
15680
15695
  return { ...value };
15681
15696
  }
15682
15697
 
15698
+ // ../../harness-adapter/dist/live-command-catalog.js
15699
+ var COMMON_EXCLUDED_LIVE_COMMANDS = /* @__PURE__ */ new Set([
15700
+ // Session lifecycle
15701
+ "branch",
15702
+ "clear",
15703
+ "exit",
15704
+ "fork",
15705
+ "fresh",
15706
+ "new",
15707
+ "quit",
15708
+ "rename",
15709
+ "rename-chat",
15710
+ "reset",
15711
+ "resume",
15712
+ "rewind",
15713
+ "session",
15714
+ "sessions",
15715
+ // Desktop-owned configuration
15716
+ "autocompact",
15717
+ "color",
15718
+ "config",
15719
+ "effort",
15720
+ "fast",
15721
+ "keybindings",
15722
+ "model",
15723
+ "models",
15724
+ "output-style",
15725
+ "permissions",
15726
+ "settings",
15727
+ "statusline",
15728
+ "terminal-setup",
15729
+ "theme",
15730
+ "vim",
15731
+ // Trust and approval policy
15732
+ "always-approve",
15733
+ "auto-mode-setup",
15734
+ // Native login
15735
+ "login",
15736
+ "logout",
15737
+ // Work outliving the Turn
15738
+ "autopilot",
15739
+ "background",
15740
+ "bg",
15741
+ "goal",
15742
+ "jobs",
15743
+ "loop",
15744
+ "multitask",
15745
+ "queue",
15746
+ "remote-control",
15747
+ "schedule",
15748
+ "steer",
15749
+ // Native terminal UI
15750
+ "copy",
15751
+ "debug",
15752
+ "feedback",
15753
+ "heapdump",
15754
+ "share",
15755
+ "shell",
15756
+ // Plugin and MCP management
15757
+ "marketplace",
15758
+ "mcp",
15759
+ "plugins",
15760
+ "reload-plugins"
15761
+ ]);
15762
+ var COMMON_EXCLUDED_LIVE_COMMAND_PREFIXES = ["__", "hooks-"];
15763
+ function isExcludedLiveCommand(name, kind, extra = {}) {
15764
+ const normalized = name.trim().replace(/^\//u, "");
15765
+ if (new Set(extra.names ?? []).has(normalized))
15766
+ return true;
15767
+ if (extra.prefixes?.some((prefix) => normalized.startsWith(prefix)))
15768
+ return true;
15769
+ if (kind === "skill")
15770
+ return false;
15771
+ return COMMON_EXCLUDED_LIVE_COMMANDS.has(normalized) || COMMON_EXCLUDED_LIVE_COMMAND_PREFIXES.some((prefix) => normalized.startsWith(prefix));
15772
+ }
15773
+
15683
15774
  // dist/common.js
15684
15775
  var CODEBUDDY_ID = harnessIdSchema.parse("codebuddy");
15685
15776
  var CODEBUDDY_RUNTIME_PROFILE = {
@@ -15771,7 +15862,8 @@ function commandCatalog(value, profile = CODEBUDDY_RUNTIME_PROFILE) {
15771
15862
  return {
15772
15863
  commands: rows(value).flatMap((entry) => {
15773
15864
  const name = text(entry.name).replace(/^\//u, "");
15774
- if (excluded.has(name) || seen.has(name))
15865
+ const skill = record2(entry._meta).type === "skill";
15866
+ if (excluded.has(name) || seen.has(name) || isExcludedLiveCommand(name, skill ? "skill" : "command"))
15775
15867
  return [];
15776
15868
  const parsed = harnessCommandCatalogSchema.safeParse({
15777
15869
  commands: [
@@ -15780,7 +15872,8 @@ function commandCatalog(value, profile = CODEBUDDY_RUNTIME_PROFILE) {
15780
15872
  invocation: `/${name}`,
15781
15873
  label: name,
15782
15874
  ...text(entry.description).trim() ? { description: text(entry.description).trim().slice(0, 512) } : {},
15783
- argumentMode: name === "compact" || record2(entry.input).hint || record2(entry._meta).type === "skill" ? "text" : "none"
15875
+ argumentMode: name === "compact" || record2(entry.input).hint || record2(entry._meta).type === "skill" ? "text" : "none",
15876
+ ...record2(entry._meta).type === "skill" ? { kind: "skill" } : {}
15784
15877
  }
15785
15878
  ]
15786
15879
  });
@@ -23420,6 +23513,7 @@ var CodeBuddyAdapter = class {
23420
23513
  options;
23421
23514
  harnessId;
23422
23515
  commandCatalog;
23516
+ liveCommandCatalog = true;
23423
23517
  subagents = {
23424
23518
  readSnapshot: async ({ parent, nativeSubagentId, cwd }) => {
23425
23519
  try {
@@ -24416,6 +24510,7 @@ var BrokeredHarnessSession = class {
24416
24510
  var BrokeredHarnessAdapter = class {
24417
24511
  #sessions = /* @__PURE__ */ new Set();
24418
24512
  commandCatalog;
24513
+ liveCommandCatalog;
24419
24514
  harnessId;
24420
24515
  #descriptorPath;
24421
24516
  #forwardEnvironment;
@@ -24517,6 +24612,8 @@ var BrokeredHarnessAdapter = class {
24517
24612
  this.#forwardEnvironment = input.forwardDelegationEnvironment === true;
24518
24613
  if (input.commandCatalog)
24519
24614
  this.commandCatalog = input.commandCatalog;
24615
+ if (input.liveCommandCatalog)
24616
+ this.liveCommandCatalog = true;
24520
24617
  this.#descriptorPath = input.descriptorPath ?? defaultHarnessBrokerDescriptorPath(input.environment, this.harnessId);
24521
24618
  }
24522
24619
  async inspectAccount() {
@@ -24611,6 +24708,7 @@ function createHarnessAdapter(context) {
24611
24708
  harnessId: "codebuddy",
24612
24709
  forwardDelegationEnvironment: true,
24613
24710
  commandCatalog: CODEBUDDY_COMMAND_CATALOG,
24711
+ liveCommandCatalog: true,
24614
24712
  environment: { ...context.environment }
24615
24713
  });
24616
24714
  return new CodeBuddyAdapter({ environment: { ...context.environment } });