@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.
- package/README.md +1 -1
- package/app/codexhost-distribution.json +1 -1
- package/app/desktop-controller.mjs +49 -18
- package/app/host-runtime.mjs +1025 -671
- package/app/plugins/antigravity/plugin.mjs +18 -3
- package/app/plugins/claude-code/plugin.mjs +214 -7
- package/app/plugins/codebuddy/plugin.mjs +103 -5
- package/app/plugins/cursor-cli/plugin.mjs +152 -53
- package/app/plugins/deepseek-harness/plugin.mjs +34 -21
- package/app/plugins/enabled.json +2 -1
- package/app/plugins/grok/plugin.mjs +281 -88
- package/app/plugins/hermes/plugin.mjs +162 -63
- package/app/plugins/kimi-code/manifest.json +11 -0
- package/app/plugins/kimi-code/plugin.mjs +24259 -0
- package/app/plugins/kiro-cli/plugin.mjs +257 -65
- package/app/plugins/muse/plugin.mjs +18 -3
- package/app/plugins/omp/plugin.mjs +258 -67
- package/app/plugins/opencode/plugin.mjs +18 -3
- package/app/plugins/pi/plugin.mjs +211 -4
- package/app/plugins/qoder/plugin.mjs +285 -193
- package/app/plugins/qoder-cn/plugin.mjs +285 -193
- package/app/plugins/workbuddy/plugin.mjs +102 -5
- package/app/renderer-extension.js +1304 -468
- package/bin/boft.exe +0 -0
- package/libexec/boft-node-repl.exe +0 -0
- package/libexec/boft-shim.exe +0 -0
- package/libexec/boft-updater.exe +0 -0
- package/package.json +1 -1
|
@@ -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({
|
|
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({
|
|
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:
|
|
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
|
|
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({
|
|
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
|
-
|
|
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 } });
|