qlogicagent 2.15.9 → 2.16.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/dist/agent.js +34 -16
- package/dist/cli.js +585 -514
- package/dist/index.js +584 -513
- package/dist/orchestration.js +9 -9
- package/dist/protocol.js +1 -1
- package/dist/types/agent/tool-loop/artifact-final-contract.d.ts +86 -0
- package/dist/types/agent/tool-loop/completion-action-policy.d.ts +1 -9
- package/dist/types/agent/tool-loop/tool-failure-policy.d.ts +2 -0
- package/dist/types/agent/tool-loop.d.ts +4 -10
- package/dist/types/agent/types.d.ts +9 -131
- package/dist/types/cli/acp-extended-handlers.d.ts +1 -0
- package/dist/types/cli/agent-config-coordinator.d.ts +11 -0
- package/dist/types/cli/core-tools/agent-tool-service.d.ts +1 -0
- package/dist/types/cli/handlers/agents-handler.d.ts +15 -6
- package/dist/types/cli/handlers/product-handler.d.ts +21 -2
- package/dist/types/cli/handlers/project-handler.d.ts +8 -0
- package/dist/types/cli/handlers/workflow-handler.d.ts +5 -0
- package/dist/types/cli/tool-bootstrap-core-registration.d.ts +5 -0
- package/dist/types/cli/turn-core.d.ts +4 -0
- package/dist/types/contracts/index.d.ts +1 -0
- package/dist/types/contracts/turn-event.d.ts +235 -0
- package/dist/types/orchestration/agent-instance.d.ts +45 -2
- package/dist/types/orchestration/agent-roster.d.ts +17 -0
- package/dist/types/orchestration/dag-scheduler.d.ts +27 -0
- package/dist/types/orchestration/product-budget.d.ts +7 -1
- package/dist/types/orchestration/product-persistence.d.ts +31 -0
- package/dist/types/orchestration/product-planner.d.ts +123 -0
- package/dist/types/orchestration/product-run-coordinator.d.ts +17 -1
- package/dist/types/orchestration/product-worktree.d.ts +3 -0
- package/dist/types/orchestration/skill-improvement.d.ts +2 -19
- package/dist/types/orchestration/solo-evaluator.d.ts +11 -6
- package/dist/types/orchestration/solo-spec-builder.d.ts +4 -0
- package/dist/types/orchestration/workflow/n8n-import.d.ts +26 -32
- package/dist/types/orchestration/workflow/n8n-template-compat.d.ts +5 -0
- package/dist/types/orchestration/workflow/node-registry.d.ts +13 -0
- package/dist/types/orchestration/workflow/node-schema.d.ts +10 -0
- package/dist/types/orchestration/workflow/qla-executor-host.d.ts +7 -1
- package/dist/types/protocol/methods.d.ts +8 -1
- package/dist/types/protocol/notifications.d.ts +1 -1
- package/dist/types/protocol/wire/acp-agent-management.d.ts +51 -0
- package/dist/types/protocol/wire/acp-protocol.d.ts +1 -0
- package/dist/types/protocol/wire/agent-events.d.ts +3 -3
- package/dist/types/protocol/wire/agent-methods.d.ts +14 -2
- package/dist/types/protocol/wire/index.d.ts +1 -1
- package/dist/types/protocol/wire/notification-payloads.d.ts +120 -11
- package/dist/types/runtime/infra/acp-detector.d.ts +37 -2
- package/dist/types/runtime/infra/acp-protocol-adapter.d.ts +9 -0
- package/dist/types/runtime/infra/agent-install-runner.d.ts +23 -0
- package/dist/types/runtime/infra/agent-process.d.ts +10 -0
- package/dist/types/runtime/ports/agent-execution-contracts.d.ts +4 -128
- package/dist/types/runtime/ports/tool-contracts.d.ts +6 -0
- package/dist/types/runtime/prompt/environment-context.d.ts +20 -1
- package/dist/types/skills/tools/ask-user-tool.d.ts +4 -2
- package/dist/types/skills/tools/shell/command-classification.d.ts +1 -0
- package/dist/types/skills/tools/tool-search-tool.d.ts +13 -0
- package/dist/types/skills/tools/tool-selection-eval.d.ts +49 -0
- package/dist/types/skills/tools/tool-selection-eval.dataset.d.ts +5 -0
- package/dist/types/skills/tools/write-tool.d.ts +2 -0
- package/dist/types/skills/tools.d.ts +21 -0
- package/dist/types/transport/acp-server.d.ts +1 -0
- package/package.json +2 -1
|
@@ -1,138 +1,12 @@
|
|
|
1
1
|
import type { HookRegistry } from "../../contracts/hooks.js";
|
|
2
2
|
import type { ChatMessage as WireChatMessage, ToolDefinition as WireToolDefinition, WireTokenUsage } from "../../protocol/wire/index.js";
|
|
3
|
+
import type { TurnEvent } from "../../contracts/turn-event.js";
|
|
4
|
+
export type { TurnEvent } from "../../contracts/turn-event.js";
|
|
3
5
|
export type ChatMessage = WireChatMessage;
|
|
4
6
|
export type TokenUsage = WireTokenUsage;
|
|
5
7
|
export interface ToolDefinition extends WireToolDefinition {
|
|
6
8
|
backfillObservableInput?: (input: Record<string, unknown>) => void;
|
|
7
9
|
}
|
|
8
|
-
export type TurnEvent = {
|
|
9
|
-
type: "start";
|
|
10
|
-
turnId: string;
|
|
11
|
-
} | {
|
|
12
|
-
type: "delta";
|
|
13
|
-
turnId: string;
|
|
14
|
-
text: string;
|
|
15
|
-
} | {
|
|
16
|
-
type: "tool_call";
|
|
17
|
-
turnId: string;
|
|
18
|
-
callId: string;
|
|
19
|
-
name: string;
|
|
20
|
-
arguments: string;
|
|
21
|
-
inputSummary?: string;
|
|
22
|
-
} | {
|
|
23
|
-
type: "end";
|
|
24
|
-
turnId: string;
|
|
25
|
-
content: string;
|
|
26
|
-
usage?: TokenUsage;
|
|
27
|
-
model?: string;
|
|
28
|
-
provider?: string;
|
|
29
|
-
} | {
|
|
30
|
-
type: "error";
|
|
31
|
-
turnId: string;
|
|
32
|
-
error: string;
|
|
33
|
-
code?: string;
|
|
34
|
-
usage?: TokenUsage;
|
|
35
|
-
} | {
|
|
36
|
-
type: "skill_instruction";
|
|
37
|
-
turnId: string;
|
|
38
|
-
instruction: unknown;
|
|
39
|
-
} | {
|
|
40
|
-
type: "tool_result";
|
|
41
|
-
turnId: string;
|
|
42
|
-
callId: string;
|
|
43
|
-
name: string;
|
|
44
|
-
ok: boolean;
|
|
45
|
-
error?: string;
|
|
46
|
-
outputPreview?: string;
|
|
47
|
-
durationMs?: number;
|
|
48
|
-
exitCode?: number;
|
|
49
|
-
stdout?: string;
|
|
50
|
-
stderr?: string;
|
|
51
|
-
details?: Record<string, unknown>;
|
|
52
|
-
} | {
|
|
53
|
-
type: "tool_blocked";
|
|
54
|
-
turnId: string;
|
|
55
|
-
callId: string;
|
|
56
|
-
name: string;
|
|
57
|
-
reason: string;
|
|
58
|
-
} | {
|
|
59
|
-
type: "recovery";
|
|
60
|
-
turnId: string;
|
|
61
|
-
action: string;
|
|
62
|
-
detail?: string;
|
|
63
|
-
} | {
|
|
64
|
-
type: "plan_update";
|
|
65
|
-
turnId: string;
|
|
66
|
-
slug: string;
|
|
67
|
-
content: string;
|
|
68
|
-
} | {
|
|
69
|
-
type: "heartbeat";
|
|
70
|
-
turnId: string;
|
|
71
|
-
message: string;
|
|
72
|
-
} | {
|
|
73
|
-
type: "tool_use_summary";
|
|
74
|
-
turnId: string;
|
|
75
|
-
summary: string;
|
|
76
|
-
} | {
|
|
77
|
-
type: "reasoning_delta";
|
|
78
|
-
turnId: string;
|
|
79
|
-
text: string;
|
|
80
|
-
} | {
|
|
81
|
-
type: "suggestions";
|
|
82
|
-
turnId: string;
|
|
83
|
-
items: Array<{
|
|
84
|
-
text: string;
|
|
85
|
-
icon?: string;
|
|
86
|
-
action?: string;
|
|
87
|
-
}>;
|
|
88
|
-
} | {
|
|
89
|
-
type: "media_result";
|
|
90
|
-
turnId: string;
|
|
91
|
-
mediaType: "image" | "tts" | "video" | "music" | "3d";
|
|
92
|
-
url: string;
|
|
93
|
-
model?: string;
|
|
94
|
-
provider?: string;
|
|
95
|
-
durationSeconds?: number;
|
|
96
|
-
width?: number;
|
|
97
|
-
height?: number;
|
|
98
|
-
mimeType?: string;
|
|
99
|
-
billingUnit?: string;
|
|
100
|
-
billingQuantity?: number;
|
|
101
|
-
taskId?: string;
|
|
102
|
-
} | {
|
|
103
|
-
type: "artifact";
|
|
104
|
-
turnId: string;
|
|
105
|
-
artifactId: string;
|
|
106
|
-
artifactType: "code" | "file" | "image" | "document" | "diagram" | "table";
|
|
107
|
-
title: string;
|
|
108
|
-
filePath?: string;
|
|
109
|
-
language?: string;
|
|
110
|
-
content?: string;
|
|
111
|
-
mimeType?: string;
|
|
112
|
-
} | {
|
|
113
|
-
type: "annotations";
|
|
114
|
-
turnId: string;
|
|
115
|
-
annotations: Array<{
|
|
116
|
-
type: string;
|
|
117
|
-
url?: string;
|
|
118
|
-
title?: string;
|
|
119
|
-
[key: string]: unknown;
|
|
120
|
-
}>;
|
|
121
|
-
} | {
|
|
122
|
-
type: "subagent_started";
|
|
123
|
-
turnId: string;
|
|
124
|
-
subagentId: string;
|
|
125
|
-
agentType: string;
|
|
126
|
-
prompt?: string;
|
|
127
|
-
} | {
|
|
128
|
-
type: "subagent_ended";
|
|
129
|
-
turnId: string;
|
|
130
|
-
subagentId: string;
|
|
131
|
-
agentType: string;
|
|
132
|
-
ok: boolean;
|
|
133
|
-
outputPreview?: string;
|
|
134
|
-
error?: string;
|
|
135
|
-
};
|
|
136
10
|
export interface ToolInvoker {
|
|
137
11
|
invoke(turnId: string, name: string, args: string, signal?: AbortSignal): Promise<{
|
|
138
12
|
result: string;
|
|
@@ -146,6 +20,8 @@ export interface AgentRunRequest {
|
|
|
146
20
|
turnId: string;
|
|
147
21
|
sessionId: string;
|
|
148
22
|
messages: ChatMessage[];
|
|
23
|
+
/** Full registered tool surface before per-turn policy filtering. */
|
|
24
|
+
availableTools?: ToolDefinition[];
|
|
149
25
|
tools: ToolDefinition[];
|
|
150
26
|
systemPrompt?: string;
|
|
151
27
|
config?: {
|
|
@@ -48,6 +48,12 @@ export interface ToolCatalog {
|
|
|
48
48
|
removeTool(name: string): boolean;
|
|
49
49
|
activateTool(name: string): boolean;
|
|
50
50
|
clearActivatedTools(): void;
|
|
51
|
+
/** SSOT for the deferred-tool set consumed by the prompt index and the tool_search corpus. */
|
|
52
|
+
listDeferredTools(): Array<{
|
|
53
|
+
name: string;
|
|
54
|
+
description: string;
|
|
55
|
+
searchHint?: string;
|
|
56
|
+
}>;
|
|
51
57
|
}
|
|
52
58
|
export interface ToolBootstrapProgress {
|
|
53
59
|
output: string;
|
|
@@ -35,6 +35,23 @@ export declare function createTaskGuidanceSection(domain?: TaskDomain): SystemPr
|
|
|
35
35
|
* Tells the LLM when to use specialized tools vs. primitives.
|
|
36
36
|
*/
|
|
37
37
|
export declare function createToolGuidanceSection(): SystemPromptSection;
|
|
38
|
+
/**
|
|
39
|
+
* Render the deferred-tool listing with accuracy-aware token discipline.
|
|
40
|
+
*
|
|
41
|
+
* Dropping ALL descriptions to save tokens trades away tool-SELECTION accuracy:
|
|
42
|
+
* the model cannot tell `mcp__exa__search` from `mcp__github__search` by name.
|
|
43
|
+
* So spend the description budget exactly where confusion lives:
|
|
44
|
+
* - small set (<= richHintLimit): every tool rich.
|
|
45
|
+
* - built-in deferred tools (no server): always rich — small, bounded set.
|
|
46
|
+
* - MCP tools whose leaf name collides with another tool: keep the hint.
|
|
47
|
+
* - MCP tools with a unique leaf: name only (unambiguous; tool_search recovers
|
|
48
|
+
* details on demand).
|
|
49
|
+
* Names are ALWAYS listed so any capability can be `select:`ed directly.
|
|
50
|
+
*/
|
|
51
|
+
export declare function buildDeferredToolIndexBody(deferred: Array<{
|
|
52
|
+
name: string;
|
|
53
|
+
description: string;
|
|
54
|
+
}>, richHintLimit: number): string[];
|
|
38
55
|
/**
|
|
39
56
|
* Index of deferred tools so the model KNOWS these capabilities exist even
|
|
40
57
|
* though their schemas are not loaded. Without this the model sees only the
|
|
@@ -47,7 +64,9 @@ export declare function createToolGuidanceSection(): SystemPromptSection;
|
|
|
47
64
|
export declare function createDeferredToolIndexSection(listDeferredTools: () => Array<{
|
|
48
65
|
name: string;
|
|
49
66
|
description: string;
|
|
50
|
-
}
|
|
67
|
+
}>, options?: {
|
|
68
|
+
richHintLimit?: number;
|
|
69
|
+
}): SystemPromptSection;
|
|
51
70
|
/**
|
|
52
71
|
* Create a system prompt section that instructs the model on response language.
|
|
53
72
|
* CC parity: only injected when language is explicitly set; when absent,
|
|
@@ -34,7 +34,9 @@ export declare const ASK_USER_TOOL_SCHEMA: {
|
|
|
34
34
|
};
|
|
35
35
|
readonly options: {
|
|
36
36
|
readonly type: "array";
|
|
37
|
-
readonly
|
|
37
|
+
readonly minItems: 2;
|
|
38
|
+
readonly maxItems: 8;
|
|
39
|
+
readonly description: "2-8 options for the user to choose from. Omit for free text.";
|
|
38
40
|
readonly items: {
|
|
39
41
|
readonly type: "object";
|
|
40
42
|
readonly properties: {
|
|
@@ -52,7 +54,7 @@ export declare const ASK_USER_TOOL_SCHEMA: {
|
|
|
52
54
|
};
|
|
53
55
|
readonly multiSelect: {
|
|
54
56
|
readonly type: "boolean";
|
|
55
|
-
readonly description:
|
|
57
|
+
readonly description: string;
|
|
56
58
|
};
|
|
57
59
|
};
|
|
58
60
|
readonly required: readonly ["question", "header"];
|
|
@@ -42,3 +42,4 @@ export declare function commandHasAnyCd(command: string): boolean;
|
|
|
42
42
|
* Mirrors cc's `isSearchOrReadBashCommand()` + `isSilentBashCommand()`.
|
|
43
43
|
*/
|
|
44
44
|
export declare function classifyCommand(command: string): CommandClassification;
|
|
45
|
+
export declare function requiresDedicatedReadSearchTool(classification: CommandClassification): boolean;
|
|
@@ -23,6 +23,11 @@ export interface DeferredToolInfo {
|
|
|
23
23
|
description: string;
|
|
24
24
|
/** Optional search hint for better discovery */
|
|
25
25
|
searchHint?: string;
|
|
26
|
+
/** Compact parameter signature (e.g. "query, maxResults?") to disambiguate similar tools. */
|
|
27
|
+
paramSummary?: string;
|
|
28
|
+
score?: number;
|
|
29
|
+
matchedTerms?: string[];
|
|
30
|
+
matchedFields?: string[];
|
|
26
31
|
}
|
|
27
32
|
export interface ToolSearchOutput {
|
|
28
33
|
matches: DeferredToolInfo[];
|
|
@@ -52,7 +57,15 @@ export interface ToolSearchCorpusEntry {
|
|
|
52
57
|
name: string;
|
|
53
58
|
description: string;
|
|
54
59
|
searchHint?: string;
|
|
60
|
+
paramSummary?: string;
|
|
55
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Compact parameter signature for a JSON-Schema tool, e.g. "query, maxResults?".
|
|
64
|
+
* Required params are plain, optional ones suffixed "?". Surfacing this in search
|
|
65
|
+
* results raises tool-SELECTION accuracy: two lexically similar tools (e.g. two
|
|
66
|
+
* `search` tools) are told apart by their inputs, not guessed by name.
|
|
67
|
+
*/
|
|
68
|
+
export declare function summarizeToolParams(parameters: unknown): string;
|
|
56
69
|
/**
|
|
57
70
|
* Score a keyword query against a tool corpus (CC-aligned weights).
|
|
58
71
|
* Query syntax: plain terms rank, "+term" is required (must appear in
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type ToolSearchCorpusEntry } from "./tool-search-tool.js";
|
|
2
|
+
export type EvalLang = "en" | "zh";
|
|
3
|
+
export interface ToolSelectionCase {
|
|
4
|
+
id: string;
|
|
5
|
+
/** Natural-language / keyword intent issued to tool_search. */
|
|
6
|
+
query: string;
|
|
7
|
+
lang: EvalLang;
|
|
8
|
+
/** Tool names that count as a correct selection (one or more acceptable). */
|
|
9
|
+
expected: string[];
|
|
10
|
+
/** Optional note on what weakness this case probes. */
|
|
11
|
+
note?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CaseResult {
|
|
14
|
+
id: string;
|
|
15
|
+
lang: EvalLang;
|
|
16
|
+
query: string;
|
|
17
|
+
expected: string[];
|
|
18
|
+
topMatch: string | null;
|
|
19
|
+
hitAt1: boolean;
|
|
20
|
+
hitAtK: boolean;
|
|
21
|
+
/** 1-based rank of the first expected tool among results, or null if absent. */
|
|
22
|
+
firstExpectedRank: number | null;
|
|
23
|
+
}
|
|
24
|
+
export interface EvalReport {
|
|
25
|
+
k: number;
|
|
26
|
+
total: number;
|
|
27
|
+
/** Share of cases whose #1 result is an expected tool. */
|
|
28
|
+
precisionAt1: number;
|
|
29
|
+
/** Share of cases with an expected tool anywhere in the top-k. */
|
|
30
|
+
recallAtK: number;
|
|
31
|
+
/** Mean reciprocal rank of the first expected tool. */
|
|
32
|
+
mrr: number;
|
|
33
|
+
byLang: Record<EvalLang, {
|
|
34
|
+
total: number;
|
|
35
|
+
precisionAt1: number;
|
|
36
|
+
recallAtK: number;
|
|
37
|
+
}>;
|
|
38
|
+
failures: CaseResult[];
|
|
39
|
+
results: CaseResult[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Run the deterministic search-ranking eval: feed each case's query through
|
|
43
|
+
* searchToolCorpus and score whether the expected tool is surfaced (and where).
|
|
44
|
+
*/
|
|
45
|
+
export declare function evalSearchSelection(corpus: ToolSearchCorpusEntry[], cases: ToolSelectionCase[], options?: {
|
|
46
|
+
k?: number;
|
|
47
|
+
}): EvalReport;
|
|
48
|
+
/** Human-readable report — printed on gate failure so CI logs name the regressed cases. */
|
|
49
|
+
export declare function formatEvalReport(report: EvalReport): string;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ToolSearchCorpusEntry } from "./tool-search-tool.js";
|
|
2
|
+
import type { ToolSelectionCase } from "./tool-selection-eval.js";
|
|
3
|
+
/** Representative deferred corpus: built-in media/dev tools + colliding MCP tools. */
|
|
4
|
+
export declare const SEED_CORPUS: ToolSearchCorpusEntry[];
|
|
5
|
+
export declare const SEED_CASES: ToolSelectionCase[];
|
|
@@ -22,6 +22,8 @@ export declare const WRITE_TOOL_SCHEMA: {
|
|
|
22
22
|
export interface WriteToolDeps {
|
|
23
23
|
/** Write content to a file. Create parent dirs as needed. */
|
|
24
24
|
writeFile(path: string, content: string): Promise<void>;
|
|
25
|
+
/** Check whether the resolved path already exists. */
|
|
26
|
+
fileExists?(path: string): Promise<boolean> | boolean;
|
|
25
27
|
/** Resolve a relative path to absolute. */
|
|
26
28
|
resolvePath(input: string): string;
|
|
27
29
|
/**
|
|
@@ -13,6 +13,10 @@ export { AGENT_DISALLOWED_TOOLS, CUSTOM_AGENT_DISALLOWED_TOOLS, filterToolsForAg
|
|
|
13
13
|
export declare class ToolRegistry {
|
|
14
14
|
private readonly toolPool;
|
|
15
15
|
private readonly activatedTools;
|
|
16
|
+
private readonly maxActivatedDeferred;
|
|
17
|
+
constructor(options?: {
|
|
18
|
+
maxActivatedDeferred?: number;
|
|
19
|
+
});
|
|
16
20
|
setTools(tools: PortableTool[]): void;
|
|
17
21
|
addTool(tool: PortableTool<any>): void;
|
|
18
22
|
addTools(tools: PortableTool<any>[]): void;
|
|
@@ -26,6 +30,18 @@ export declare class ToolRegistry {
|
|
|
26
30
|
activateTool(name: string): boolean;
|
|
27
31
|
isToolActivated(name: string): boolean;
|
|
28
32
|
clearActivatedTools(): void;
|
|
33
|
+
/**
|
|
34
|
+
* SSOT for "which tools are deferred". Both the deferred-tool index (system
|
|
35
|
+
* prompt) and the tool_search corpus consume this — never re-derive the
|
|
36
|
+
* deferred set inline. Lists every deferred+enabled tool regardless of
|
|
37
|
+
* activation, so the model can always see/search a capability that exists.
|
|
38
|
+
* searchHint is carried for the search corpus; the prompt index ignores it.
|
|
39
|
+
*/
|
|
40
|
+
listDeferredTools(): Array<{
|
|
41
|
+
name: string;
|
|
42
|
+
description: string;
|
|
43
|
+
searchHint?: string;
|
|
44
|
+
}>;
|
|
29
45
|
getToolManifest(includeDeferred?: boolean): ToolDefinition[];
|
|
30
46
|
}
|
|
31
47
|
export declare function getDefaultToolRegistry(): ToolRegistry;
|
|
@@ -42,4 +58,9 @@ export declare function getTools(): PortableTool[];
|
|
|
42
58
|
export declare function activateTool(name: string): boolean;
|
|
43
59
|
export declare function isToolActivated(name: string): boolean;
|
|
44
60
|
export declare function clearActivatedTools(): void;
|
|
61
|
+
export declare function listDeferredTools(): Array<{
|
|
62
|
+
name: string;
|
|
63
|
+
description: string;
|
|
64
|
+
searchHint?: string;
|
|
65
|
+
}>;
|
|
45
66
|
export declare function getToolManifest(includeDeferred?: boolean): ToolDefinition[];
|
|
@@ -91,6 +91,7 @@ export interface AcpRequestHandler {
|
|
|
91
91
|
handleAcpProductResume(params: Record<string, unknown>): Promise<unknown>;
|
|
92
92
|
handleAcpProductCancel(params: Record<string, unknown>): Promise<unknown>;
|
|
93
93
|
handleAcpProductRollback(params: Record<string, unknown>): Promise<unknown>;
|
|
94
|
+
handleAcpProductReplay(params: Record<string, unknown>): Promise<unknown>;
|
|
94
95
|
handleAcpProductStatus(params: Record<string, unknown>): Promise<unknown>;
|
|
95
96
|
handleAcpProductSubscribe(params: Record<string, unknown>): Promise<unknown>;
|
|
96
97
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qlogicagent",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.16.1",
|
|
4
4
|
"description": "XiaozhiClaw Agent CLI — subprocess architecture (JSON-RPC over stdio)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -95,6 +95,7 @@
|
|
|
95
95
|
"better-sqlite3": "^12.10.0",
|
|
96
96
|
"dotenv": "^17.3.1",
|
|
97
97
|
"ioredis": "^5.11.1",
|
|
98
|
+
"jsonrepair": "^3.14.0",
|
|
98
99
|
"mcporter": "^0.12.0",
|
|
99
100
|
"nanoid": "^5.1.5",
|
|
100
101
|
"pino": "^9.6.0",
|