@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
|
@@ -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();
|
|
@@ -15311,10 +15311,21 @@ var harnessCommandDescriptorSchema = external_exports.object({
|
|
|
15311
15311
|
invocation: commandInvocationSchema,
|
|
15312
15312
|
label: commandLabelSchema,
|
|
15313
15313
|
description: commandDescriptionSchema.optional(),
|
|
15314
|
-
argumentMode: external_exports.enum(["none", "text"])
|
|
15314
|
+
argumentMode: external_exports.enum(["none", "text"]),
|
|
15315
|
+
/**
|
|
15316
|
+
* Native distinction reported by the Harness. Omitted when the Harness does
|
|
15317
|
+
* not tell skills and commands apart; consumers treat that as "command".
|
|
15318
|
+
*/
|
|
15319
|
+
kind: external_exports.enum(["command", "skill"]).optional()
|
|
15315
15320
|
}).strict();
|
|
15316
15321
|
var harnessCommandCatalogSchema = external_exports.object({
|
|
15317
|
-
commands: external_exports.array(harnessCommandDescriptorSchema)
|
|
15322
|
+
commands: external_exports.array(harnessCommandDescriptorSchema),
|
|
15323
|
+
/**
|
|
15324
|
+
* `live` when the catalog includes what a native Session reports for its
|
|
15325
|
+
* workspace (custom commands, skills); `static` for Adapter built-ins only.
|
|
15326
|
+
* Omitted by Adapters; set by the Host on inspection results.
|
|
15327
|
+
*/
|
|
15328
|
+
source: external_exports.enum(["live", "static"]).optional()
|
|
15318
15329
|
}).strict().superRefine((catalog, context) => {
|
|
15319
15330
|
const ids = /* @__PURE__ */ new Set();
|
|
15320
15331
|
for (const [index, command] of catalog.commands.entries()) {
|
|
@@ -15328,7 +15339,11 @@ var harnessCommandCatalogSchema = external_exports.object({
|
|
|
15328
15339
|
ids.add(command.id);
|
|
15329
15340
|
}
|
|
15330
15341
|
});
|
|
15331
|
-
var harnessCommandsInspectParamsSchema = external_exports.object({
|
|
15342
|
+
var harnessCommandsInspectParamsSchema = external_exports.object({
|
|
15343
|
+
harnessId: harnessIdSchema,
|
|
15344
|
+
/** Workspace of a draft without a Thread, for its live catalog when known. */
|
|
15345
|
+
cwd: external_exports.string().min(1).optional()
|
|
15346
|
+
}).strict();
|
|
15332
15347
|
var threadCommandsInspectParamsSchema = external_exports.object({
|
|
15333
15348
|
threadId: hostThreadIdSchema
|
|
15334
15349
|
}).strict();
|
|
@@ -17665,6 +17680,124 @@ function parseHostUsage(value) {
|
|
|
17665
17680
|
return { ...value };
|
|
17666
17681
|
}
|
|
17667
17682
|
|
|
17683
|
+
// ../../harness-adapter/dist/live-command-catalog.js
|
|
17684
|
+
var COMMON_EXCLUDED_LIVE_COMMANDS = /* @__PURE__ */ new Set([
|
|
17685
|
+
// Session lifecycle
|
|
17686
|
+
"branch",
|
|
17687
|
+
"clear",
|
|
17688
|
+
"exit",
|
|
17689
|
+
"fork",
|
|
17690
|
+
"fresh",
|
|
17691
|
+
"new",
|
|
17692
|
+
"quit",
|
|
17693
|
+
"rename",
|
|
17694
|
+
"rename-chat",
|
|
17695
|
+
"reset",
|
|
17696
|
+
"resume",
|
|
17697
|
+
"rewind",
|
|
17698
|
+
"session",
|
|
17699
|
+
"sessions",
|
|
17700
|
+
// Desktop-owned configuration
|
|
17701
|
+
"autocompact",
|
|
17702
|
+
"color",
|
|
17703
|
+
"config",
|
|
17704
|
+
"effort",
|
|
17705
|
+
"fast",
|
|
17706
|
+
"keybindings",
|
|
17707
|
+
"model",
|
|
17708
|
+
"models",
|
|
17709
|
+
"output-style",
|
|
17710
|
+
"permissions",
|
|
17711
|
+
"settings",
|
|
17712
|
+
"statusline",
|
|
17713
|
+
"terminal-setup",
|
|
17714
|
+
"theme",
|
|
17715
|
+
"vim",
|
|
17716
|
+
// Trust and approval policy
|
|
17717
|
+
"always-approve",
|
|
17718
|
+
"auto-mode-setup",
|
|
17719
|
+
// Native login
|
|
17720
|
+
"login",
|
|
17721
|
+
"logout",
|
|
17722
|
+
// Work outliving the Turn
|
|
17723
|
+
"autopilot",
|
|
17724
|
+
"background",
|
|
17725
|
+
"bg",
|
|
17726
|
+
"goal",
|
|
17727
|
+
"jobs",
|
|
17728
|
+
"loop",
|
|
17729
|
+
"multitask",
|
|
17730
|
+
"queue",
|
|
17731
|
+
"remote-control",
|
|
17732
|
+
"schedule",
|
|
17733
|
+
"steer",
|
|
17734
|
+
// Native terminal UI
|
|
17735
|
+
"copy",
|
|
17736
|
+
"debug",
|
|
17737
|
+
"feedback",
|
|
17738
|
+
"heapdump",
|
|
17739
|
+
"share",
|
|
17740
|
+
"shell",
|
|
17741
|
+
// Plugin and MCP management
|
|
17742
|
+
"marketplace",
|
|
17743
|
+
"mcp",
|
|
17744
|
+
"plugins",
|
|
17745
|
+
"reload-plugins"
|
|
17746
|
+
]);
|
|
17747
|
+
var COMMON_EXCLUDED_LIVE_COMMAND_PREFIXES = ["__", "hooks-"];
|
|
17748
|
+
function isExcludedLiveCommand(name, kind, extra = {}) {
|
|
17749
|
+
const normalized = name.trim().replace(/^\//u, "");
|
|
17750
|
+
if (new Set(extra.names ?? []).has(normalized))
|
|
17751
|
+
return true;
|
|
17752
|
+
if (extra.prefixes?.some((prefix) => normalized.startsWith(prefix)))
|
|
17753
|
+
return true;
|
|
17754
|
+
if (kind === "skill")
|
|
17755
|
+
return false;
|
|
17756
|
+
return COMMON_EXCLUDED_LIVE_COMMANDS.has(normalized) || COMMON_EXCLUDED_LIVE_COMMAND_PREFIXES.some((prefix) => normalized.startsWith(prefix));
|
|
17757
|
+
}
|
|
17758
|
+
function liveHarnessCommandPrompt(catalog, idPrefix, commandId, argumentText) {
|
|
17759
|
+
if (!commandId.startsWith(idPrefix))
|
|
17760
|
+
return null;
|
|
17761
|
+
const descriptor = catalog.commands.find(({ id }) => id === commandId);
|
|
17762
|
+
if (!descriptor)
|
|
17763
|
+
return null;
|
|
17764
|
+
const text2 = typeof argumentText === "string" ? argumentText.trim() : "";
|
|
17765
|
+
return text2 ? `${descriptor.invocation} ${text2}` : descriptor.invocation;
|
|
17766
|
+
}
|
|
17767
|
+
function mergeLiveHarnessCommands(builtIns, idPrefix, live, exclusions = {}) {
|
|
17768
|
+
if (!live)
|
|
17769
|
+
return builtIns;
|
|
17770
|
+
const invocations = new Set(builtIns.commands.map(({ invocation }) => invocation));
|
|
17771
|
+
const ids = new Set(builtIns.commands.map(({ id }) => id));
|
|
17772
|
+
const dynamic = [];
|
|
17773
|
+
for (const command of live) {
|
|
17774
|
+
const name = command.name.trim().replace(/^\//u, "");
|
|
17775
|
+
if (!name || /\s/u.test(name))
|
|
17776
|
+
continue;
|
|
17777
|
+
if (isExcludedLiveCommand(name, command.kind, exclusions))
|
|
17778
|
+
continue;
|
|
17779
|
+
const invocation = `/${name}`;
|
|
17780
|
+
const id = `${idPrefix}${name.replace(/[^A-Za-z0-9._:-]/gu, "-")}`.slice(0, 128);
|
|
17781
|
+
if (invocations.has(invocation) || ids.has(id))
|
|
17782
|
+
continue;
|
|
17783
|
+
const description = command.description?.trim().slice(0, 512);
|
|
17784
|
+
const parsed = harnessCommandDescriptorSchema.safeParse({
|
|
17785
|
+
id,
|
|
17786
|
+
invocation,
|
|
17787
|
+
label: name.slice(0, 128),
|
|
17788
|
+
...description ? { description } : {},
|
|
17789
|
+
argumentMode: "text",
|
|
17790
|
+
kind: command.kind
|
|
17791
|
+
});
|
|
17792
|
+
if (!parsed.success)
|
|
17793
|
+
continue;
|
|
17794
|
+
invocations.add(invocation);
|
|
17795
|
+
ids.add(id);
|
|
17796
|
+
dynamic.push(parsed.data);
|
|
17797
|
+
}
|
|
17798
|
+
return harnessCommandCatalogSchema.parse({ commands: [...builtIns.commands, ...dynamic] });
|
|
17799
|
+
}
|
|
17800
|
+
|
|
17668
17801
|
// dist/pi-workflow-child-history.js
|
|
17669
17802
|
import { createHash as createHash2 } from "node:crypto";
|
|
17670
17803
|
import { constants } from "node:fs";
|
|
@@ -18150,6 +18283,50 @@ import { spawn, spawnSync } from "node:child_process";
|
|
|
18150
18283
|
import { randomUUID as randomUUID4 } from "node:crypto";
|
|
18151
18284
|
import path8 from "node:path";
|
|
18152
18285
|
|
|
18286
|
+
// dist/pi-slash-commands.js
|
|
18287
|
+
var DYNAMIC_ID_PREFIX = "pi.slash.";
|
|
18288
|
+
var PI_EXCLUDED_COMMANDS = [
|
|
18289
|
+
"subagents-detach",
|
|
18290
|
+
"subagents-fleet",
|
|
18291
|
+
"subagents-generate-profiles",
|
|
18292
|
+
"subagents-inspect-rpc",
|
|
18293
|
+
"subagents-load-profile",
|
|
18294
|
+
"subagents-refresh-provider-models",
|
|
18295
|
+
"subagents-steer",
|
|
18296
|
+
"subagents-stop",
|
|
18297
|
+
"subagents-watchdog"
|
|
18298
|
+
];
|
|
18299
|
+
function parsePiNativeCommands(response) {
|
|
18300
|
+
const data = typeof response === "object" && response !== null ? response.data : void 0;
|
|
18301
|
+
if (!Array.isArray(data?.commands))
|
|
18302
|
+
return [];
|
|
18303
|
+
return data.commands.flatMap((entry) => {
|
|
18304
|
+
if (typeof entry !== "object" || entry === null)
|
|
18305
|
+
return [];
|
|
18306
|
+
const record6 = entry;
|
|
18307
|
+
const name = typeof record6.name === "string" ? record6.name.trim().replace(/^\//u, "") : "";
|
|
18308
|
+
if (!name)
|
|
18309
|
+
return [];
|
|
18310
|
+
return [
|
|
18311
|
+
{
|
|
18312
|
+
name,
|
|
18313
|
+
...typeof record6.description === "string" ? { description: record6.description } : {},
|
|
18314
|
+
...typeof record6.source === "string" ? { source: record6.source } : {}
|
|
18315
|
+
}
|
|
18316
|
+
];
|
|
18317
|
+
});
|
|
18318
|
+
}
|
|
18319
|
+
function piLiveCommandCatalog(builtIns, native) {
|
|
18320
|
+
return mergeLiveHarnessCommands(builtIns, DYNAMIC_ID_PREFIX, native?.map((command) => ({
|
|
18321
|
+
name: command.name,
|
|
18322
|
+
...command.description ? { description: command.description } : {},
|
|
18323
|
+
kind: command.source === "skill" ? "skill" : "command"
|
|
18324
|
+
})) ?? null, { names: PI_EXCLUDED_COMMANDS });
|
|
18325
|
+
}
|
|
18326
|
+
function piDynamicCommandPrompt(catalog, commandId, argumentText) {
|
|
18327
|
+
return liveHarnessCommandPrompt(catalog, DYNAMIC_ID_PREFIX, commandId, argumentText);
|
|
18328
|
+
}
|
|
18329
|
+
|
|
18153
18330
|
// dist/pi-usage.js
|
|
18154
18331
|
function isRecord5(value) {
|
|
18155
18332
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -18629,6 +18806,10 @@ var PiRpcSession = class {
|
|
|
18629
18806
|
}
|
|
18630
18807
|
return this;
|
|
18631
18808
|
}
|
|
18809
|
+
/** Live slash commands, prompt templates and skills of the running Pi Session. */
|
|
18810
|
+
async getCommands() {
|
|
18811
|
+
return parsePiNativeCommands(await this.#send("get_commands", {}));
|
|
18812
|
+
}
|
|
18632
18813
|
async getEntries() {
|
|
18633
18814
|
try {
|
|
18634
18815
|
return parseSessionHistory(await this.#send("get_entries", {}));
|
|
@@ -19810,6 +19991,7 @@ var PiHarnessSession = class {
|
|
|
19810
19991
|
#starting = null;
|
|
19811
19992
|
#state = {};
|
|
19812
19993
|
#transport = null;
|
|
19994
|
+
#liveCommands = piCommandCatalog;
|
|
19813
19995
|
#usage;
|
|
19814
19996
|
#usageGeneration = 0;
|
|
19815
19997
|
#usageRefreshSequence = 0;
|
|
@@ -19833,7 +20015,7 @@ var PiHarnessSession = class {
|
|
|
19833
20015
|
subagents: { observe: true, readTranscript: true }
|
|
19834
20016
|
};
|
|
19835
20017
|
this.commands = {
|
|
19836
|
-
list: async () => ({ ok: true, value:
|
|
20018
|
+
list: async () => ({ ok: true, value: await this.#refreshLiveCommands() }),
|
|
19837
20019
|
execute: (command) => this.#executeHarnessCommand(command)
|
|
19838
20020
|
};
|
|
19839
20021
|
this.#transport = options.startedTransport ?? null;
|
|
@@ -20243,7 +20425,31 @@ var PiHarnessSession = class {
|
|
|
20243
20425
|
return { ok: false, error: normalized };
|
|
20244
20426
|
}
|
|
20245
20427
|
}
|
|
20428
|
+
/**
|
|
20429
|
+
* Built-ins plus the running Session's commands. Never starts the process
|
|
20430
|
+
* just to list commands; an unstarted Session reports the built-ins.
|
|
20431
|
+
*/
|
|
20432
|
+
async #refreshLiveCommands() {
|
|
20433
|
+
const transport = this.#transport;
|
|
20434
|
+
if (this.#phase === "open" && transport?.getCommands) {
|
|
20435
|
+
try {
|
|
20436
|
+
this.#liveCommands = piLiveCommandCatalog(piCommandCatalog, await transport.getCommands());
|
|
20437
|
+
} catch {
|
|
20438
|
+
}
|
|
20439
|
+
}
|
|
20440
|
+
return this.#liveCommands;
|
|
20441
|
+
}
|
|
20246
20442
|
async #executeHarnessCommand(command) {
|
|
20443
|
+
const argumentText = command.arguments?.text;
|
|
20444
|
+
const dynamicPrompt = piDynamicCommandPrompt(this.#liveCommands, command.commandId, typeof argumentText === "string" ? argumentText : void 0);
|
|
20445
|
+
if (dynamicPrompt !== null) {
|
|
20446
|
+
const started = await this.execute({
|
|
20447
|
+
type: "turn.start",
|
|
20448
|
+
turnId: command.turnId,
|
|
20449
|
+
input: [{ type: "text", text: dynamicPrompt }]
|
|
20450
|
+
});
|
|
20451
|
+
return started.ok ? { ok: true, value: { turnId: command.turnId } } : started;
|
|
20452
|
+
}
|
|
20247
20453
|
if (command.commandId !== "pi.compact") {
|
|
20248
20454
|
return {
|
|
20249
20455
|
ok: false,
|
|
@@ -20969,6 +21175,7 @@ var PiHarnessSession = class {
|
|
|
20969
21175
|
var PiAdapter = class {
|
|
20970
21176
|
credentialImports;
|
|
20971
21177
|
commandCatalog = piCommandCatalog;
|
|
21178
|
+
liveCommandCatalog = true;
|
|
20972
21179
|
harnessId = piHarnessId2;
|
|
20973
21180
|
subagents = {
|
|
20974
21181
|
readSnapshot: async ({ parent, nativeSubagentId, cwd }) => {
|