@qlingzzy/qling 1.1.1 → 1.2.1
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/CHANGELOG.md +23 -0
- package/README.en.md +3 -3
- package/README.md +3 -3
- package/dist/agent/durable-session-supervisor.d.ts.map +1 -0
- package/dist/{session → agent}/durable-session-supervisor.js +3 -3
- package/dist/channels/types.d.ts +2 -12
- package/dist/channels/types.d.ts.map +1 -1
- package/dist/commands/runtime.d.ts +1 -62
- package/dist/commands/runtime.d.ts.map +1 -1
- package/dist/commands/runtime.js +2 -22
- package/dist/context-report.d.ts +1 -1
- package/dist/context-report.d.ts.map +1 -1
- package/dist/daemon.js +1 -1
- package/dist/doctor.d.ts +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/eval/tasks.d.ts.map +1 -1
- package/dist/eval/tasks.js +8 -4
- package/dist/guard/approval.d.ts +1 -1
- package/dist/guard/approval.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/local-storage-report.d.ts +1 -1
- package/dist/local-storage-report.d.ts.map +1 -1
- package/dist/pipeline/sections.d.ts +1 -1
- package/dist/pipeline/sections.d.ts.map +1 -1
- package/dist/privacy-report.d.ts +1 -1
- package/dist/privacy-report.d.ts.map +1 -1
- package/dist/recap.d.ts +1 -1
- package/dist/recap.d.ts.map +1 -1
- package/dist/repl.d.ts +3 -0
- package/dist/repl.d.ts.map +1 -1
- package/dist/repl.js +4 -1
- package/dist/session-export-index.d.ts +1 -1
- package/dist/session-export-index.d.ts.map +1 -1
- package/dist/session-export.d.ts +1 -1
- package/dist/session-export.d.ts.map +1 -1
- package/dist/skills/types.d.ts +1 -8
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skills/types.js +1 -1
- package/dist/slash-context.d.ts +63 -0
- package/dist/slash-context.d.ts.map +1 -0
- package/dist/slash-context.js +26 -0
- package/dist/slash-ports.d.ts +24 -0
- package/dist/slash-ports.d.ts.map +1 -0
- package/dist/slash-ports.js +31 -0
- package/dist/statusline.d.ts +1 -1
- package/dist/statusline.d.ts.map +1 -1
- package/dist/tui/streaming-repl.d.ts +4 -0
- package/dist/tui/streaming-repl.d.ts.map +1 -1
- package/dist/tui/streaming-repl.js +5 -2
- package/dist/tui/streaming-tui.d.ts +4 -0
- package/dist/tui/streaming-tui.d.ts.map +1 -1
- package/dist/tui/streaming-tui.js +34 -6
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/install.md +30 -27
- package/package.json +7 -2
- package/scripts/build-portable-win.mjs +193 -0
- package/scripts/dep-layers.mjs +50 -0
- package/scripts/sync-scoop-bucket.mjs +12 -0
- package/scripts/sync-winget-sha.mjs +56 -0
- package/scripts/validate-packaging.mjs +52 -14
- package/scripts/write-scoop-manifest.mjs +69 -0
- package/dist/session/durable-session-supervisor.d.ts.map +0 -1
- /package/dist/{session → agent}/durable-session-supervisor.d.ts +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Slash / adapter shared context (adapters layer)
|
|
3
|
+
// Kept out of cli/ so reports & TUI can import without reverse deps.
|
|
4
|
+
// ============================================================
|
|
5
|
+
export function withDefaultWriters(context) {
|
|
6
|
+
return {
|
|
7
|
+
scheduler: context.scheduler,
|
|
8
|
+
goalController: context.goalController,
|
|
9
|
+
inputQueue: context.inputQueue,
|
|
10
|
+
workspaceDir: context.workspaceDir,
|
|
11
|
+
homeDir: context.homeDir,
|
|
12
|
+
listSavedSessions: context.listSavedSessions,
|
|
13
|
+
switchSession: context.switchSession,
|
|
14
|
+
daemonSessionApi: context.daemonSessionApi,
|
|
15
|
+
statusLine: context.statusLine,
|
|
16
|
+
toolOutput: context.toolOutput,
|
|
17
|
+
setImmediatePrompt: context.setImmediatePrompt,
|
|
18
|
+
setInputDraft: context.setInputDraft,
|
|
19
|
+
onRecoveryStateChanged: context.onRecoveryStateChanged,
|
|
20
|
+
onModelChanged: context.onModelChanged,
|
|
21
|
+
writeClipboard: context.writeClipboard,
|
|
22
|
+
writeLine: context.writeLine ?? ((line = "") => console.log(line)),
|
|
23
|
+
writeError: context.writeError ?? ((line = "") => console.error(line)),
|
|
24
|
+
agentLoop: context.agentLoop,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { SlashCommandContext } from "./slash-context.js";
|
|
2
|
+
export type SlashCommandHandler = (input: string, context: SlashCommandContext | Record<string, any>) => Promise<boolean>;
|
|
3
|
+
export interface SlashCatalogItem {
|
|
4
|
+
name: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
aliases?: string[];
|
|
7
|
+
}
|
|
8
|
+
export type FindSlashCompletion = (prefix: string, limit?: number) => SlashCatalogItem[];
|
|
9
|
+
export type FormatSlashPanel = (prefix: string, selectedIndex?: number, width?: number, limit?: number) => string[];
|
|
10
|
+
export type FormatGroupedSlashPanel = (width?: number) => string[];
|
|
11
|
+
export interface SlashUiPorts {
|
|
12
|
+
findSlashCompletion: FindSlashCompletion;
|
|
13
|
+
formatSlashCommandPanel: FormatSlashPanel;
|
|
14
|
+
formatGroupedSlashPanel: FormatGroupedSlashPanel;
|
|
15
|
+
}
|
|
16
|
+
export interface SlashRuntimePorts {
|
|
17
|
+
handleSlashCommand: SlashCommandHandler;
|
|
18
|
+
ui?: SlashUiPorts;
|
|
19
|
+
}
|
|
20
|
+
export declare function installSlashPorts(ports: SlashRuntimePorts): void;
|
|
21
|
+
export declare function getInstalledSlashPorts(): SlashRuntimePorts | null;
|
|
22
|
+
export declare function resolveSlashHandler(override?: SlashCommandHandler): Promise<SlashCommandHandler>;
|
|
23
|
+
export declare function resolveSlashUiPorts(override?: SlashUiPorts): Promise<SlashUiPorts>;
|
|
24
|
+
//# sourceMappingURL=slash-ports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-ports.d.ts","sourceRoot":"","sources":["../src/slash-ports.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAAG,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC/C,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,gBAAgB,EAAE,CAAC;AACzF,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;AACpH,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,uBAAuB,EAAE,gBAAgB,CAAC;IAC1C,uBAAuB,EAAE,uBAAuB,CAAC;CAClD;AAED,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,mBAAmB,CAAC;IACxC,EAAE,CAAC,EAAE,YAAY,CAAC;CACnB;AAKD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAEhE;AAED,wBAAgB,sBAAsB,IAAI,iBAAiB,GAAG,IAAI,CAEjE;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CAK9B;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CASxF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// Slash ports — agent-runtime / presentation 依赖的抽象,避免直接 import cli/commands
|
|
3
|
+
// ============================================================
|
|
4
|
+
/** 由 cli 入口注入;未注入时 runtime 使用动态 import 回退(不形成静态分层边) */
|
|
5
|
+
let installedPorts = null;
|
|
6
|
+
export function installSlashPorts(ports) {
|
|
7
|
+
installedPorts = ports;
|
|
8
|
+
}
|
|
9
|
+
export function getInstalledSlashPorts() {
|
|
10
|
+
return installedPorts;
|
|
11
|
+
}
|
|
12
|
+
export async function resolveSlashHandler(override) {
|
|
13
|
+
if (override)
|
|
14
|
+
return override;
|
|
15
|
+
if (installedPorts?.handleSlashCommand)
|
|
16
|
+
return installedPorts.handleSlashCommand;
|
|
17
|
+
const mod = await import("./commands/index.js");
|
|
18
|
+
return mod.handleSlashCommand;
|
|
19
|
+
}
|
|
20
|
+
export async function resolveSlashUiPorts(override) {
|
|
21
|
+
if (override)
|
|
22
|
+
return override;
|
|
23
|
+
if (installedPorts?.ui)
|
|
24
|
+
return installedPorts.ui;
|
|
25
|
+
const mod = await import("./commands/index.js");
|
|
26
|
+
return {
|
|
27
|
+
findSlashCompletion: mod.findSlashCompletion,
|
|
28
|
+
formatSlashCommandPanel: mod.formatSlashCommandPanel,
|
|
29
|
+
formatGroupedSlashPanel: mod.formatGroupedSlashPanel,
|
|
30
|
+
};
|
|
31
|
+
}
|
package/dist/statusline.d.ts
CHANGED
package/dist/statusline.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"statusline.d.ts","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,CAAC,EAAE,4BAA4B,CAAC;CAC3C;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,8BAA8B;IAC7C,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AA4BD,wBAAgB,gBAAgB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWrE;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAa5E;AAiBD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEpE;AAqBD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CA4BrE;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,8BAA8B,GAAG,kBAAkB,CAe1G;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmDzG;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AgentLoop } from "../agent-loop.js";
|
|
2
|
+
import { type SlashCommandHandler, type SlashUiPorts } from "../slash-ports.js";
|
|
2
3
|
export declare class StreamingREPL {
|
|
3
4
|
private ui;
|
|
4
5
|
private agent;
|
|
@@ -13,9 +14,12 @@ export declare class StreamingREPL {
|
|
|
13
14
|
private closed;
|
|
14
15
|
private onClose;
|
|
15
16
|
private lastExecutionStatus;
|
|
17
|
+
private readonly handleSlashCommandOverride?;
|
|
16
18
|
constructor(agent?: AgentLoop, options?: {
|
|
17
19
|
resumeSession?: string;
|
|
18
20
|
continueSession?: boolean;
|
|
21
|
+
handleSlashCommand?: SlashCommandHandler;
|
|
22
|
+
slashUi?: SlashUiPorts;
|
|
19
23
|
});
|
|
20
24
|
start(): Promise<void>;
|
|
21
25
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-repl.d.ts","sourceRoot":"","sources":["../../src/tui/streaming-repl.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"streaming-repl.d.ts","sourceRoot":"","sources":["../../src/tui/streaming-repl.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAS3B,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,mBAAmB,CAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAsB;gBAGhE,KAAK,CAAC,EAAE,SAAS,EACjB,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;QACzC,OAAO,CAAC,EAAE,YAAY,CAAC;KACnB;IA0BF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAIb,KAAK;IAkBnB,OAAO,CAAC,eAAe;IA8DvB,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,kBAAkB;YAqDZ,gBAAgB;YAKhB,iBAAiB;YAoBjB,qBAAqB;YAQrB,uBAAuB;YAQvB,aAAa;YAsEb,eAAe;YASf,2BAA2B;IA4BzC,OAAO,CAAC,0BAA0B;YAkCpB,qBAAqB;IAiCnC,OAAO,CAAC,kBAAkB;YAWZ,6BAA6B;YAU7B,yBAAyB;YA2BzB,aAAa;CAsB5B"}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
// ============================================================
|
|
11
11
|
import { AgentLoop } from "../agent-loop.js";
|
|
12
12
|
import { StreamUI } from "./streaming-tui.js";
|
|
13
|
-
import { handleSlashCommand } from "../commands/index.js";
|
|
14
13
|
import { SessionScheduler } from "../session/session-scheduler.js";
|
|
14
|
+
import { resolveSlashHandler, } from "../slash-ports.js";
|
|
15
15
|
import { SessionGoalManager } from "../session/session-goal-manager.js";
|
|
16
16
|
import { SessionGoalController } from "../session/goal-controller.js";
|
|
17
17
|
import { DaemonSessionApi } from "../session/daemon-session-api.js";
|
|
@@ -32,14 +32,16 @@ export class StreamingREPL {
|
|
|
32
32
|
closed = false;
|
|
33
33
|
onClose = null;
|
|
34
34
|
lastExecutionStatus = "";
|
|
35
|
+
handleSlashCommandOverride;
|
|
35
36
|
constructor(agent, options = {}) {
|
|
36
37
|
this.agent = agent ?? new AgentLoop();
|
|
37
38
|
const model = this.agent.getModel();
|
|
38
39
|
const toolsCount = this.agent.getToolCount();
|
|
39
|
-
this.ui = new StreamUI(model, toolsCount);
|
|
40
|
+
this.ui = new StreamUI(model, toolsCount, { slashUi: options.slashUi });
|
|
40
41
|
this.daemonSessionApi = new DaemonSessionApi();
|
|
41
42
|
this.startupResumeTarget = options.resumeSession;
|
|
42
43
|
this.startupContinue = options.continueSession ?? false;
|
|
44
|
+
this.handleSlashCommandOverride = options.handleSlashCommand;
|
|
43
45
|
this.inputQueue = new SerialInputQueue({
|
|
44
46
|
maxPending: 20,
|
|
45
47
|
onQueued: ({ pendingCount }) => {
|
|
@@ -402,6 +404,7 @@ export class StreamingREPL {
|
|
|
402
404
|
}
|
|
403
405
|
// v0.4 Slash Commands
|
|
404
406
|
this.immediatePrompt = null;
|
|
407
|
+
const handleSlashCommand = await resolveSlashHandler(this.handleSlashCommandOverride);
|
|
405
408
|
const handled = await handleSlashCommand(input, this.createSlashContext());
|
|
406
409
|
if (handled) {
|
|
407
410
|
// plan/model/permissions 等变更后刷新 chrome + statusline
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type SlashUiPorts } from "../slash-ports.js";
|
|
1
2
|
import type { RecoveryState } from "../execution/types.js";
|
|
2
3
|
export type AgentEvent = {
|
|
3
4
|
type: "tool_start";
|
|
@@ -73,8 +74,11 @@ export declare class StreamUI {
|
|
|
73
74
|
private recoveryState;
|
|
74
75
|
private readonly now;
|
|
75
76
|
private readonly doubleCtrlCExitWindowMs;
|
|
77
|
+
private slashUi;
|
|
78
|
+
private readonly slashUiPromise;
|
|
76
79
|
constructor(model?: string, tools?: number, options?: {
|
|
77
80
|
now?: () => number;
|
|
81
|
+
slashUi?: SlashUiPorts;
|
|
78
82
|
});
|
|
79
83
|
start(): void;
|
|
80
84
|
stop(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-tui.d.ts","sourceRoot":"","sources":["../../src/tui/streaming-tui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"streaming-tui.d.ts","sourceRoot":"","sources":["../../src/tui/streaming-tui.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// appendFinal / appendError / appendState / appendDone
|
|
16
16
|
// ============================================================
|
|
17
17
|
import { default as stringWidth } from "string-width";
|
|
18
|
-
import {
|
|
18
|
+
import { resolveSlashUiPorts, } from "../slash-ports.js";
|
|
19
19
|
import { InputBuffer } from "./input-buffer.js";
|
|
20
20
|
import { formatProgressPulse } from "./progress.js";
|
|
21
21
|
import { formatWelcomeGuide, formatRoleHeader, formatResultHighlight, formatToolOutputCard, formatToolTimelineRow, formatTopBar, padVisible, truncateVisible, } from "./shell.js";
|
|
@@ -104,13 +104,26 @@ export class StreamUI {
|
|
|
104
104
|
recoveryState = null;
|
|
105
105
|
now;
|
|
106
106
|
doubleCtrlCExitWindowMs = 2_000;
|
|
107
|
+
slashUi = null;
|
|
108
|
+
slashUiPromise;
|
|
107
109
|
constructor(model = "deepseek-chat", tools = 0, options = {}) {
|
|
108
110
|
this.model = model;
|
|
109
111
|
this.tools = tools;
|
|
110
112
|
this.now = options.now ?? (() => Date.now());
|
|
113
|
+
if (options.slashUi) {
|
|
114
|
+
this.slashUi = options.slashUi;
|
|
115
|
+
this.slashUiPromise = Promise.resolve(options.slashUi);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.slashUiPromise = resolveSlashUiPorts().then((ports) => {
|
|
119
|
+
this.slashUi = ports;
|
|
120
|
+
return ports;
|
|
121
|
+
});
|
|
122
|
+
}
|
|
111
123
|
}
|
|
112
124
|
start() {
|
|
113
125
|
this.running = true;
|
|
126
|
+
void this.slashUiPromise;
|
|
114
127
|
this.printHeader();
|
|
115
128
|
this.printInputBar();
|
|
116
129
|
this.setupInput();
|
|
@@ -486,15 +499,20 @@ export class StreamUI {
|
|
|
486
499
|
formatCurrentSlashCompletionHints() {
|
|
487
500
|
if (!this.isSlashCompletionActive(this.input.value))
|
|
488
501
|
return [];
|
|
489
|
-
const
|
|
502
|
+
const ports = this.slashUi;
|
|
503
|
+
if (!ports) {
|
|
504
|
+
void this.slashUiPromise;
|
|
505
|
+
return [];
|
|
506
|
+
}
|
|
507
|
+
const matches = ports.findSlashCompletion(this.input.value, 8);
|
|
490
508
|
if (matches.length > 0 && this.slashCompletionSelectedIndex >= matches.length) {
|
|
491
509
|
this.slashCompletionSelectedIndex = 0;
|
|
492
510
|
}
|
|
493
511
|
const inputVal = this.input.value || "";
|
|
494
512
|
if (inputVal === "/" || inputVal === "") {
|
|
495
|
-
return formatGroupedSlashPanel(process.stdout.columns || 80);
|
|
513
|
+
return ports.formatGroupedSlashPanel(process.stdout.columns || 80);
|
|
496
514
|
}
|
|
497
|
-
return formatSlashCommandPanel(inputVal, this.slashCompletionSelectedIndex, process.stdout.columns || 80, 8);
|
|
515
|
+
return ports.formatSlashCommandPanel(inputVal, this.slashCompletionSelectedIndex, process.stdout.columns || 80, 8);
|
|
498
516
|
}
|
|
499
517
|
isSlashCompletionPrefix(value) {
|
|
500
518
|
const text = value.trim();
|
|
@@ -506,7 +524,12 @@ export class StreamUI {
|
|
|
506
524
|
acceptSlashCompletion() {
|
|
507
525
|
if (!this.isSlashCompletionPrefix(this.input.value))
|
|
508
526
|
return false;
|
|
509
|
-
const
|
|
527
|
+
const ports = this.slashUi;
|
|
528
|
+
if (!ports) {
|
|
529
|
+
void this.slashUiPromise;
|
|
530
|
+
return false;
|
|
531
|
+
}
|
|
532
|
+
const matches = ports.findSlashCompletion(this.input.value, 8);
|
|
510
533
|
const completion = matches[this.slashCompletionSelectedIndex] ?? matches[0];
|
|
511
534
|
if (!completion)
|
|
512
535
|
return false;
|
|
@@ -521,7 +544,12 @@ export class StreamUI {
|
|
|
521
544
|
moveSlashCompletionSelection(delta) {
|
|
522
545
|
if (!this.isSlashCompletionPrefix(this.input.value))
|
|
523
546
|
return false;
|
|
524
|
-
const
|
|
547
|
+
const ports = this.slashUi;
|
|
548
|
+
if (!ports) {
|
|
549
|
+
void this.slashUiPromise;
|
|
550
|
+
return false;
|
|
551
|
+
}
|
|
552
|
+
const matches = ports.findSlashCompletion(this.input.value, 8);
|
|
525
553
|
if (matches.length <= 1)
|
|
526
554
|
return false;
|
|
527
555
|
this.slashCompletionSelectedIndex =
|
package/dist/types.d.ts
CHANGED
|
@@ -186,6 +186,26 @@ export interface LLMDreamConfig {
|
|
|
186
186
|
apiKey: string;
|
|
187
187
|
endpoint: string;
|
|
188
188
|
}
|
|
189
|
+
export interface SkillMeta {
|
|
190
|
+
name: string;
|
|
191
|
+
description: string;
|
|
192
|
+
tags: string[];
|
|
193
|
+
/** 触发关键词/场景,仅进入索引,不进正文 */
|
|
194
|
+
triggers: string[];
|
|
195
|
+
path: string;
|
|
196
|
+
}
|
|
197
|
+
export interface ApprovalRequest {
|
|
198
|
+
id: string;
|
|
199
|
+
toolName: string;
|
|
200
|
+
arguments: Record<string, unknown>;
|
|
201
|
+
reason: string;
|
|
202
|
+
timestamp: number;
|
|
203
|
+
}
|
|
204
|
+
export interface ApprovalResponse {
|
|
205
|
+
requestId: string;
|
|
206
|
+
decision: "allow" | "deny";
|
|
207
|
+
timestamp: number;
|
|
208
|
+
}
|
|
189
209
|
export interface MCPServerConfig {
|
|
190
210
|
name: string;
|
|
191
211
|
command: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/docs/install.md
CHANGED
|
@@ -34,7 +34,7 @@ qling --help
|
|
|
34
34
|
|
|
35
35
|
`bootstrap` 会:检查 Node/npm → 安装依赖 → 构建 → 创建 `~/.qling/` → 给出 `doctor`/`setup` 下一步。默认**不**安装浏览器、**不**自动开 dashboard。
|
|
36
36
|
|
|
37
|
-
## 方式 B:npm 全局安装(已发布 1.
|
|
37
|
+
## 方式 B:npm 全局安装(已发布 1.2.0)
|
|
38
38
|
|
|
39
39
|
包名因 npm 相似度策略使用作用域 **`@qlingzzy/qling`**(安装后命令仍是 `qling`)。
|
|
40
40
|
包页:https://www.npmjs.com/package/@qlingzzy/qling
|
|
@@ -84,53 +84,56 @@ qling doctor
|
|
|
84
84
|
qling
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
-
## 方式 D:Scoop
|
|
87
|
+
## 方式 D:Scoop(自建 bucket)
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
本地校验(不安装到官方 bucket):
|
|
89
|
+
### D1. 本仓库自建 bucket(推荐试用)
|
|
92
90
|
|
|
93
91
|
```powershell
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
```
|
|
92
|
+
# 公共 bucket(推荐)
|
|
93
|
+
scoop bucket add qling https://github.com/Zzy-min/scoop-qling
|
|
94
|
+
scoop install qling
|
|
98
95
|
|
|
99
|
-
|
|
96
|
+
# 或从本仓库本地路径
|
|
97
|
+
# scoop bucket add qling "$PWD\packaging\scoop-bucket"
|
|
98
|
+
# scoop install qling/qling
|
|
100
99
|
|
|
101
|
-
|
|
102
|
-
# 示例:私有 bucket 放好 manifest 后
|
|
103
|
-
scoop install qling
|
|
100
|
+
qling --version
|
|
104
101
|
```
|
|
105
102
|
|
|
106
|
-
|
|
103
|
+
便携包内嵌 Node 运行时,**无需系统安装 Node**。公共 bucket:https://github.com/Zzy-min/scoop-qling
|
|
104
|
+
官方 Extras PR:https://github.com/ScoopInstaller/Extras/pull/18307
|
|
105
|
+
|
|
106
|
+
### D2. 校验与同步
|
|
107
107
|
|
|
108
108
|
```powershell
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
scoop install qling
|
|
109
|
+
npm run validate:packaging
|
|
110
|
+
npm run sync:scoop-bucket # packaging/scoop → scoop-bucket
|
|
112
111
|
```
|
|
113
112
|
|
|
113
|
+
**仍未**提交到官方 Scoop 目录;社区 PR 需另开。
|
|
114
|
+
|
|
114
115
|
**推荐**用户路径仍是:`npm install -g @qlingzzy/qling --registry https://registry.npmjs.org/` 或源码 bootstrap。
|
|
115
116
|
|
|
116
|
-
## 方式 E:winget
|
|
117
|
+
## 方式 E:winget / 便携 zip
|
|
118
|
+
|
|
119
|
+
### 构建 Windows 便携包
|
|
120
|
+
|
|
121
|
+
```powershell
|
|
122
|
+
npm run build:portable-win
|
|
123
|
+
# → dist-portable/qling-win-x64.zip + portable-meta.json (sha256)
|
|
124
|
+
```
|
|
117
125
|
|
|
118
|
-
|
|
126
|
+
Release 资产示例:`https://github.com/Zzy-min/qling/releases/download/v1.2.1/qling-win-x64.zip`
|
|
127
|
+
清单:`packaging/winget/Zzy-min.qling.yaml`(含 InstallerSha256)。
|
|
119
128
|
|
|
120
|
-
|
|
129
|
+
### 本地校验
|
|
121
130
|
|
|
122
131
|
```powershell
|
|
123
132
|
npm run validate:packaging
|
|
124
133
|
Select-String -Path packaging/winget/Zzy-min.qling.yaml -Pattern 'PackageVersion|InstallerUrl|InstallerSha256'
|
|
125
134
|
```
|
|
126
135
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
1. 稳定版本的安装包 URL(msi/zip 或 portable;当前示例为 GitHub Release zip)
|
|
130
|
-
2. 真实 `InstallerSha256`(草案里为全零占位)
|
|
131
|
-
3. 通过 [winget-pkgs](https://github.com/microsoft/winget-pkgs) 审核
|
|
132
|
-
|
|
133
|
-
当前文件仅为**结构样例**,不可直接 `winget install`。发布 zip 前可先用 npm 全局安装路径。
|
|
136
|
+
正式提交 [winget-pkgs](https://github.com/microsoft/winget-pkgs) 仍需 PR;在此之前可用 zip 解压 + `qling.cmd`(便携 zip 已内嵌 Node 运行时(亦可使用系统 Node))。
|
|
134
137
|
|
|
135
138
|
## 配置与安全
|
|
136
139
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qlingzzy/qling",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "轻灵 Qling - 本地优先的中文 AI Agent CLI 工作台 / Local-first Chinese AI Agent CLI workbench",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/sdk.js",
|
|
@@ -88,7 +88,12 @@
|
|
|
88
88
|
"validate:packaging": "node scripts/validate-packaging.mjs",
|
|
89
89
|
"dep:layers": "node scripts/dep-layers.mjs",
|
|
90
90
|
"dep:layers:json": "node scripts/dep-layers.mjs --json",
|
|
91
|
-
"
|
|
91
|
+
"dep:layers:baseline": "node scripts/dep-layers.mjs --baseline",
|
|
92
|
+
"dep:layers:write-baseline": "node scripts/dep-layers.mjs --write-baseline",
|
|
93
|
+
"sync:scoop-bucket": "node scripts/sync-scoop-bucket.mjs",
|
|
94
|
+
"build:portable-win": "node scripts/build-portable-win.mjs",
|
|
95
|
+
"sync:winget-sha": "node scripts/sync-winget-sha.mjs",
|
|
96
|
+
"ci:check": "npm run build && node --experimental-test-module-mocks --test \"tests/unit/**/*.test.mjs\" && node --test \"tests/smoke/**/*.test.mjs\" && node scripts/eval-smoke.mjs && node scripts/eval-tasks.mjs && node scripts/validate-packaging.mjs && node scripts/dep-layers.mjs --strict"
|
|
92
97
|
},
|
|
93
98
|
"dependencies": {
|
|
94
99
|
"axios": "^1.7.0",
|