openhorse 0.1.20 → 0.1.22
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 +11 -3
- package/dist/cli.js +181 -31
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +84 -31
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/types.d.ts +6 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js.map +1 -1
- package/dist/framework/prompt.d.ts +2 -0
- package/dist/framework/prompt.d.ts.map +1 -1
- package/dist/framework/prompt.js +9 -0
- package/dist/framework/prompt.js.map +1 -1
- package/dist/framework/query.d.ts.map +1 -1
- package/dist/framework/query.js +25 -7
- package/dist/framework/query.js.map +1 -1
- package/dist/harness/context-harness.d.ts +5 -0
- package/dist/harness/context-harness.d.ts.map +1 -1
- package/dist/harness/context-harness.js +19 -0
- package/dist/harness/context-harness.js.map +1 -1
- package/dist/harness/types.d.ts +1 -1
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/runtime/turn-controller.d.ts +37 -0
- package/dist/runtime/turn-controller.d.ts.map +1 -0
- package/dist/runtime/turn-controller.js +84 -0
- package/dist/runtime/turn-controller.js.map +1 -0
- package/dist/services/config.d.ts +3 -0
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +4 -2
- package/dist/services/config.js.map +1 -1
- package/dist/services/global-config.d.ts +1 -1
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/global-config.js +13 -8
- package/dist/services/global-config.js.map +1 -1
- package/dist/services/llm.d.ts +4 -1
- package/dist/services/llm.d.ts.map +1 -1
- package/dist/services/llm.js +15 -2
- package/dist/services/llm.js.map +1 -1
- package/dist/services/session-storage.d.ts +5 -0
- package/dist/services/session-storage.d.ts.map +1 -1
- package/dist/services/session-storage.js +12 -0
- package/dist/services/session-storage.js.map +1 -1
- package/dist/skills/index.d.ts +1 -0
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +1 -0
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +33 -15
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/runtime.d.ts +36 -0
- package/dist/skills/runtime.d.ts.map +1 -0
- package/dist/skills/runtime.js +102 -0
- package/dist/skills/runtime.js.map +1 -0
- package/dist/skills/types.d.ts +4 -0
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skills/types.js.map +1 -1
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +13 -10
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +38 -19
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lsp.d.ts.map +1 -1
- package/dist/tools/lsp.js +33 -0
- package/dist/tools/lsp.js.map +1 -1
- package/dist/tools/mcp.d.ts +18 -5
- package/dist/tools/mcp.d.ts.map +1 -1
- package/dist/tools/mcp.js +160 -27
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/todo.d.ts.map +1 -1
- package/dist/tools/todo.js +14 -6
- package/dist/tools/todo.js.map +1 -1
- package/dist/ui/command-panel.d.ts +3 -0
- package/dist/ui/command-panel.d.ts.map +1 -1
- package/dist/ui/command-panel.js +75 -3
- package/dist/ui/command-panel.js.map +1 -1
- package/dist/ui/user-input.d.ts +1 -0
- package/dist/ui/user-input.d.ts.map +1 -1
- package/dist/ui/user-input.js +6 -0
- package/dist/ui/user-input.js.map +1 -1
- package/dist/ui-v2/components/shell.d.ts +2 -0
- package/dist/ui-v2/components/shell.d.ts.map +1 -1
- package/dist/ui-v2/components/shell.js +37 -11
- package/dist/ui-v2/components/shell.js.map +1 -1
- package/package.json +1 -1
package/dist/framework/query.js
CHANGED
|
@@ -14,6 +14,16 @@ exports.query = query;
|
|
|
14
14
|
const tool_1 = require("./tool");
|
|
15
15
|
const strategy_tracker_1 = require("../core/strategy-tracker");
|
|
16
16
|
const auto_compact_1 = require("../services/compact/auto-compact");
|
|
17
|
+
function isAborted(signal) {
|
|
18
|
+
return signal?.aborted === true;
|
|
19
|
+
}
|
|
20
|
+
function cancelledEvent(llm) {
|
|
21
|
+
return {
|
|
22
|
+
type: 'complete',
|
|
23
|
+
content: 'Operation cancelled.',
|
|
24
|
+
model: llm.getModel(),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
17
27
|
// ============================================================================
|
|
18
28
|
// query() — async generator
|
|
19
29
|
// ============================================================================
|
|
@@ -42,12 +52,8 @@ async function* query(params) {
|
|
|
42
52
|
while (true) {
|
|
43
53
|
turn++;
|
|
44
54
|
// Check abort
|
|
45
|
-
if (abortSignal
|
|
46
|
-
yield
|
|
47
|
-
type: 'complete',
|
|
48
|
-
content: 'Operation cancelled.',
|
|
49
|
-
model: llm.getModel(),
|
|
50
|
-
};
|
|
55
|
+
if (isAborted(abortSignal)) {
|
|
56
|
+
yield cancelledEvent(llm);
|
|
51
57
|
return;
|
|
52
58
|
}
|
|
53
59
|
// Request start
|
|
@@ -64,7 +70,11 @@ async function* query(params) {
|
|
|
64
70
|
// Stream the LLM response. Harness context is injected into a cloned
|
|
65
71
|
// request payload so the durable conversation history stays clean.
|
|
66
72
|
const requestMessages = harness ? harness.assembleMessages(messages) : messages;
|
|
67
|
-
const response = await llm.chatStream(requestMessages, streamCallbacks, openaiTools);
|
|
73
|
+
const response = await llm.chatStream(requestMessages, streamCallbacks, openaiTools, { abortSignal });
|
|
74
|
+
if (isAborted(abortSignal)) {
|
|
75
|
+
yield cancelledEvent(llm);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
68
78
|
// Save assistant message to history
|
|
69
79
|
const assistantMsg = {
|
|
70
80
|
role: 'assistant',
|
|
@@ -83,6 +93,10 @@ async function* query(params) {
|
|
|
83
93
|
toolCalls: response.toolCalls,
|
|
84
94
|
};
|
|
85
95
|
for (let i = 0; i < response.toolCalls.length; i++) {
|
|
96
|
+
if (isAborted(abortSignal)) {
|
|
97
|
+
yield cancelledEvent(llm);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
86
100
|
const tc = response.toolCalls[i];
|
|
87
101
|
// Ensure arguments is valid JSON (some APIs like DashScope require this)
|
|
88
102
|
let args = {};
|
|
@@ -196,6 +210,10 @@ async function* query(params) {
|
|
|
196
210
|
success: toolSuccess, // Issue #21: 添加 success 字段
|
|
197
211
|
error: toolError, // Issue #21: 添加 error 字段
|
|
198
212
|
};
|
|
213
|
+
if (isAborted(abortSignal)) {
|
|
214
|
+
yield cancelledEvent(llm);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
199
217
|
messages.push({
|
|
200
218
|
role: 'tool',
|
|
201
219
|
content: result,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/framework/query.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/framework/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,11 @@ export declare class ContextHarness {
|
|
|
18
18
|
updateContractFromUserInput(input: string): void;
|
|
19
19
|
assembleMessages(messages: Message[]): Message[];
|
|
20
20
|
recordAssistantResponse(response: LLMResponse): void;
|
|
21
|
+
recordAppliedSkills(skills: Array<{
|
|
22
|
+
name: string;
|
|
23
|
+
source?: string;
|
|
24
|
+
tools?: string[];
|
|
25
|
+
}>): void;
|
|
21
26
|
beforeToolUse(params: {
|
|
22
27
|
name: string;
|
|
23
28
|
args: Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-harness.d.ts","sourceRoot":"","sources":["../../src/harness/context-harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM5D,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AAcjB,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,OAAO,EAAE,qBAAqB;IAU1C,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAShD,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAIhD,uBAAuB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAQpD,aAAa,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,gBAAgB;IAsBxF,gBAAgB,CAAC,MAAM,EAAE;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI;IAMR,cAAc,IAAI,oBAAoB;IAgCtC,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO;IAOjE,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAQrD,UAAU,IAAI,cAAc,GAAG,SAAS;IAKxC,MAAM,IAAI,YAAY;IAUtB,OAAO,CAAC,cAAc;CAIvB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAEnF"}
|
|
1
|
+
{"version":3,"file":"context-harness.d.ts","sourceRoot":"","sources":["../../src/harness/context-harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM5D,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AAcjB,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,OAAO,EAAE,qBAAqB;IAU1C,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAShD,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAIhD,uBAAuB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAQpD,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,GAAG,IAAI;IAmB7F,aAAa,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,gBAAgB;IAsBxF,gBAAgB,CAAC,MAAM,EAAE;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI;IAMR,cAAc,IAAI,oBAAoB;IAgCtC,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO;IAOjE,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAQrD,UAAU,IAAI,cAAc,GAAG,SAAS;IAKxC,MAAM,IAAI,YAAY;IAUtB,OAAO,CAAC,cAAc;CAIvB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAEnF"}
|
|
@@ -46,6 +46,25 @@ class ContextHarness {
|
|
|
46
46
|
}
|
|
47
47
|
this.refreshCapsule();
|
|
48
48
|
}
|
|
49
|
+
recordAppliedSkills(skills) {
|
|
50
|
+
if (this.config.enabled === false || skills.length === 0)
|
|
51
|
+
return;
|
|
52
|
+
this.ledger.add({
|
|
53
|
+
type: 'skill',
|
|
54
|
+
content: `Applied skills: ${skills.map(skill => skill.name).join(', ')}`,
|
|
55
|
+
source: { kind: 'system', ref: 'skills' },
|
|
56
|
+
importance: 4,
|
|
57
|
+
ttl: 'turn',
|
|
58
|
+
metadata: {
|
|
59
|
+
skills: skills.map(skill => ({
|
|
60
|
+
name: skill.name,
|
|
61
|
+
source: skill.source,
|
|
62
|
+
tools: skill.tools,
|
|
63
|
+
})),
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
this.refreshCapsule();
|
|
67
|
+
}
|
|
49
68
|
beforeToolUse(params) {
|
|
50
69
|
const mode = this.config.driftGuard ?? 'warn';
|
|
51
70
|
const result = (0, drift_guard_1.checkToolDrift)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-harness.js","sourceRoot":"","sources":["../../src/harness/context-harness.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"context-harness.js","sourceRoot":"","sources":["../../src/harness/context-harness.ts"],"names":[],"mappings":"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"}
|
package/dist/harness/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type LedgerEntryType = 'user_requirement' | 'decision' | 'file_fact' | 'tool_result' | 'test_result' | 'risk' | 'todo' | 'blocker' | 'verification';
|
|
1
|
+
export type LedgerEntryType = 'user_requirement' | 'decision' | 'file_fact' | 'tool_result' | 'test_result' | 'risk' | 'todo' | 'skill' | 'blocker' | 'verification';
|
|
2
2
|
export interface TaskContract {
|
|
3
3
|
id: string;
|
|
4
4
|
objective: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type TurnStatus = 'idle' | 'running' | 'aborting';
|
|
2
|
+
export interface TurnHandle {
|
|
3
|
+
id: number;
|
|
4
|
+
input: string;
|
|
5
|
+
abortController: AbortController;
|
|
6
|
+
abortSignal: AbortSignal;
|
|
7
|
+
}
|
|
8
|
+
export interface TurnSnapshot {
|
|
9
|
+
status: TurnStatus;
|
|
10
|
+
activeTurnId?: number;
|
|
11
|
+
pendingRevision?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface TurnControllerOptions {
|
|
14
|
+
exitConfirmWindowMs?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Owns the single active CLI turn. It prevents concurrent agent runs and keeps
|
|
18
|
+
* live revision semantics independent from terminal rendering details.
|
|
19
|
+
*/
|
|
20
|
+
export declare class TurnController {
|
|
21
|
+
private nextTurnId;
|
|
22
|
+
private activeTurn;
|
|
23
|
+
private status;
|
|
24
|
+
private pendingRevision;
|
|
25
|
+
private lastExitIntentAt;
|
|
26
|
+
private readonly exitConfirmWindowMs;
|
|
27
|
+
constructor(options?: TurnControllerOptions);
|
|
28
|
+
beginTurn(input: string): TurnHandle;
|
|
29
|
+
requestRevision(input: string): boolean;
|
|
30
|
+
interruptActiveTurn(): boolean;
|
|
31
|
+
finishTurn(turnId: number): string | undefined;
|
|
32
|
+
hasActiveTurn(): boolean;
|
|
33
|
+
getSnapshot(): TurnSnapshot;
|
|
34
|
+
registerExitIntent(now?: number): boolean;
|
|
35
|
+
clearExitIntent(): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=turn-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-controller.d.ts","sourceRoot":"","sources":["../../src/runtime/turn-controller.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAID;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAEjC,OAAO,GAAE,qBAA0B;IAI/C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAoBpC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAWvC,mBAAmB,IAAI,OAAO;IAU9B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAY9C,aAAa,IAAI,OAAO;IAIxB,WAAW,IAAI,YAAY;IAQ3B,kBAAkB,CAAC,GAAG,SAAa,GAAG,OAAO;IAS7C,eAAe,IAAI,IAAI;CAGxB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TurnController = void 0;
|
|
4
|
+
const DEFAULT_EXIT_CONFIRM_WINDOW_MS = 2000;
|
|
5
|
+
/**
|
|
6
|
+
* Owns the single active CLI turn. It prevents concurrent agent runs and keeps
|
|
7
|
+
* live revision semantics independent from terminal rendering details.
|
|
8
|
+
*/
|
|
9
|
+
class TurnController {
|
|
10
|
+
constructor(options = {}) {
|
|
11
|
+
this.nextTurnId = 1;
|
|
12
|
+
this.activeTurn = null;
|
|
13
|
+
this.status = 'idle';
|
|
14
|
+
this.lastExitIntentAt = 0;
|
|
15
|
+
this.exitConfirmWindowMs = options.exitConfirmWindowMs ?? DEFAULT_EXIT_CONFIRM_WINDOW_MS;
|
|
16
|
+
}
|
|
17
|
+
beginTurn(input) {
|
|
18
|
+
if (this.activeTurn) {
|
|
19
|
+
throw new Error('A turn is already running');
|
|
20
|
+
}
|
|
21
|
+
const abortController = new AbortController();
|
|
22
|
+
const turn = {
|
|
23
|
+
id: this.nextTurnId++,
|
|
24
|
+
input,
|
|
25
|
+
abortController,
|
|
26
|
+
abortSignal: abortController.signal,
|
|
27
|
+
};
|
|
28
|
+
this.activeTurn = turn;
|
|
29
|
+
this.status = 'running';
|
|
30
|
+
this.pendingRevision = undefined;
|
|
31
|
+
this.clearExitIntent();
|
|
32
|
+
return turn;
|
|
33
|
+
}
|
|
34
|
+
requestRevision(input) {
|
|
35
|
+
if (!this.activeTurn)
|
|
36
|
+
return false;
|
|
37
|
+
this.pendingRevision = input;
|
|
38
|
+
this.status = 'aborting';
|
|
39
|
+
if (!this.activeTurn.abortController.signal.aborted) {
|
|
40
|
+
this.activeTurn.abortController.abort();
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
interruptActiveTurn() {
|
|
45
|
+
if (!this.activeTurn)
|
|
46
|
+
return false;
|
|
47
|
+
this.status = 'aborting';
|
|
48
|
+
if (!this.activeTurn.abortController.signal.aborted) {
|
|
49
|
+
this.activeTurn.abortController.abort();
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
finishTurn(turnId) {
|
|
54
|
+
if (!this.activeTurn || this.activeTurn.id !== turnId) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
this.activeTurn = null;
|
|
58
|
+
this.status = 'idle';
|
|
59
|
+
const revision = this.pendingRevision;
|
|
60
|
+
this.pendingRevision = undefined;
|
|
61
|
+
return revision;
|
|
62
|
+
}
|
|
63
|
+
hasActiveTurn() {
|
|
64
|
+
return this.activeTurn !== null;
|
|
65
|
+
}
|
|
66
|
+
getSnapshot() {
|
|
67
|
+
return {
|
|
68
|
+
status: this.status,
|
|
69
|
+
activeTurnId: this.activeTurn?.id,
|
|
70
|
+
pendingRevision: this.pendingRevision,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
registerExitIntent(now = Date.now()) {
|
|
74
|
+
const shouldExit = this.lastExitIntentAt > 0 &&
|
|
75
|
+
now - this.lastExitIntentAt <= this.exitConfirmWindowMs;
|
|
76
|
+
this.lastExitIntentAt = shouldExit ? 0 : now;
|
|
77
|
+
return shouldExit;
|
|
78
|
+
}
|
|
79
|
+
clearExitIntent() {
|
|
80
|
+
this.lastExitIntentAt = 0;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.TurnController = TurnController;
|
|
84
|
+
//# sourceMappingURL=turn-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-controller.js","sourceRoot":"","sources":["../../src/runtime/turn-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
* 2. ~/.openhorse/openhorse.json (GlobalConfig)
|
|
9
9
|
* 3. 环境变量
|
|
10
10
|
* 4. Agent 内部默认值
|
|
11
|
+
*
|
|
12
|
+
* UI renderer is intentionally not read from openhorse.json. The new UI is the
|
|
13
|
+
* default, and startup flags such as --ui legacy are the supported fallback.
|
|
11
14
|
*/
|
|
12
15
|
import { type ToolConfirmationPolicy, type UIConfig, type UIRenderer, type UIConfirmationMode, type WebSearchMcpConfig } from './global-config';
|
|
13
16
|
export type { ToolConfirmationPolicy, UIConfig, UIRenderer, UIConfirmationMode, WebSearchMcpConfig };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,sBAAsB,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;AAMrG;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAEjC,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,6CAA6C;IAC7C,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,sFAAsF;IACtF,EAAE,CAAC,EAAE,QAAQ,CAAC;IAGd,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,WAAW;IACX,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC/C;AAsGD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAAG,kBAAkB,CA+B1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAEhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAMpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAenF"}
|
package/dist/services/config.js
CHANGED
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
* 2. ~/.openhorse/openhorse.json (GlobalConfig)
|
|
10
10
|
* 3. 环境变量
|
|
11
11
|
* 4. Agent 内部默认值
|
|
12
|
+
*
|
|
13
|
+
* UI renderer is intentionally not read from openhorse.json. The new UI is the
|
|
14
|
+
* default, and startup flags such as --ui legacy are the supported fallback.
|
|
12
15
|
*/
|
|
13
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
17
|
exports.loadConfig = loadConfig;
|
|
@@ -30,7 +33,7 @@ const INTERNAL_DEFAULTS = {
|
|
|
30
33
|
logLevel: 'info',
|
|
31
34
|
toolConfirmation: 'allow',
|
|
32
35
|
ui: {
|
|
33
|
-
renderer: '
|
|
36
|
+
renderer: 'v2',
|
|
34
37
|
confirmations: 'config',
|
|
35
38
|
},
|
|
36
39
|
};
|
|
@@ -92,7 +95,6 @@ function loadUIConfig(globalConfig, overrides) {
|
|
|
92
95
|
const envConfirmations = process.env.OPENHORSE_UI_CONFIRMATIONS;
|
|
93
96
|
return {
|
|
94
97
|
renderer: normalizeUIRenderer(overrides.ui?.renderer)
|
|
95
|
-
?? normalizeUIRenderer(globalConfig.ui?.renderer)
|
|
96
98
|
?? normalizeUIRenderer(envRenderer)
|
|
97
99
|
?? INTERNAL_DEFAULTS.ui.renderer,
|
|
98
100
|
confirmations: normalizeUIConfirmationMode(overrides.ui?.confirmations)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export type UIRenderer = 'legacy' | 'v2';
|
|
|
24
24
|
export type UIConfirmationMode = 'config' | 'interactive';
|
|
25
25
|
/** Terminal UI configuration. */
|
|
26
26
|
export interface UIConfig {
|
|
27
|
-
/**
|
|
27
|
+
/** Runtime-only renderer override. This is ignored in openhorse.json. */
|
|
28
28
|
renderer?: UIRenderer;
|
|
29
29
|
/** Whether confirmations are handled by config fallback or interactive UI. */
|
|
30
30
|
confirmations?: UIConfirmationMode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-config.d.ts","sourceRoot":"","sources":["../../src/services/global-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,YAAY;AACZ,MAAM,WAAW,aAAa;IAC5B,cAAc;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,kFAAkF;AAClF,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9D,sCAAsC;AACtC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEzC,mDAAmD;AACnD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE1D,iCAAiC;AACjC,MAAM,WAAW,QAAQ;IACvB,
|
|
1
|
+
{"version":3,"file":"global-config.d.ts","sourceRoot":"","sources":["../../src/services/global-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,14 +29,19 @@ const config_dir_1 = require("./config-dir");
|
|
|
29
29
|
const DEFAULT_CONFIG = {
|
|
30
30
|
defaultModel: 'gpt-4o',
|
|
31
31
|
toolConfirmation: 'allow',
|
|
32
|
-
ui: {
|
|
33
|
-
renderer: 'legacy',
|
|
34
|
-
confirmations: 'config',
|
|
35
|
-
},
|
|
36
32
|
totalSessions: 0,
|
|
37
33
|
totalTokens: 0,
|
|
38
34
|
totalCost: 0,
|
|
39
35
|
};
|
|
36
|
+
function sanitizeGlobalConfig(config) {
|
|
37
|
+
const { ui, ...rest } = config;
|
|
38
|
+
const sanitized = { ...rest };
|
|
39
|
+
// UI renderer is a runtime choice, not persisted global configuration.
|
|
40
|
+
if (ui?.confirmations && ui.confirmations !== 'config') {
|
|
41
|
+
sanitized.ui = { confirmations: ui.confirmations };
|
|
42
|
+
}
|
|
43
|
+
return sanitized;
|
|
44
|
+
}
|
|
40
45
|
// ============================================================================
|
|
41
46
|
// 加载/保存
|
|
42
47
|
// ============================================================================
|
|
@@ -48,15 +53,15 @@ function loadGlobalConfig() {
|
|
|
48
53
|
(0, config_dir_1.ensureConfigDir)();
|
|
49
54
|
const path = (0, config_dir_1.getGlobalConfigPath)();
|
|
50
55
|
if (!(0, fs_1.existsSync)(path)) {
|
|
51
|
-
return { ...DEFAULT_CONFIG };
|
|
56
|
+
return sanitizeGlobalConfig({ ...DEFAULT_CONFIG });
|
|
52
57
|
}
|
|
53
58
|
try {
|
|
54
59
|
const content = (0, fs_1.readFileSync)(path, 'utf-8');
|
|
55
60
|
const parsed = JSON.parse(content);
|
|
56
|
-
return { ...DEFAULT_CONFIG, ...parsed };
|
|
61
|
+
return sanitizeGlobalConfig({ ...DEFAULT_CONFIG, ...parsed });
|
|
57
62
|
}
|
|
58
63
|
catch {
|
|
59
|
-
return { ...DEFAULT_CONFIG };
|
|
64
|
+
return sanitizeGlobalConfig({ ...DEFAULT_CONFIG });
|
|
60
65
|
}
|
|
61
66
|
}
|
|
62
67
|
/**
|
|
@@ -65,7 +70,7 @@ function loadGlobalConfig() {
|
|
|
65
70
|
function saveGlobalConfig(config) {
|
|
66
71
|
(0, config_dir_1.ensureConfigDir)();
|
|
67
72
|
const path = (0, config_dir_1.getGlobalConfigPath)();
|
|
68
|
-
(0, fs_1.writeFileSync)(path, JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
73
|
+
(0, fs_1.writeFileSync)(path, JSON.stringify(sanitizeGlobalConfig(config), null, 2), { mode: 0o600 });
|
|
69
74
|
}
|
|
70
75
|
/**
|
|
71
76
|
* 更新全局配置(部分更新)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-config.js","sourceRoot":"","sources":["../../src/services/global-config.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"global-config.js","sourceRoot":"","sources":["../../src/services/global-config.ts"],"names":[],"mappings":"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"}
|
package/dist/services/llm.d.ts
CHANGED
|
@@ -89,6 +89,9 @@ export interface StreamCallbacks {
|
|
|
89
89
|
/** 思考提示回调(流式开始前) */
|
|
90
90
|
onThinking?: () => void;
|
|
91
91
|
}
|
|
92
|
+
export interface StreamOptions {
|
|
93
|
+
abortSignal?: AbortSignal;
|
|
94
|
+
}
|
|
92
95
|
export declare class LLMService {
|
|
93
96
|
private client;
|
|
94
97
|
private config;
|
|
@@ -108,7 +111,7 @@ export declare class LLMService {
|
|
|
108
111
|
/**
|
|
109
112
|
* 流式对话(带重试)
|
|
110
113
|
*/
|
|
111
|
-
chatStream(messages: Message[], callbacks?: StreamCallbacks | StreamCallback, tools?: Tool[]): Promise<LLMResponse>;
|
|
114
|
+
chatStream(messages: Message[], callbacks?: StreamCallbacks | StreamCallback, tools?: Tool[], options?: StreamOptions): Promise<LLMResponse>;
|
|
112
115
|
/**
|
|
113
116
|
* 带工具调用的 agentic 循环
|
|
114
117
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/services/llm.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,0BAA0B;AAC1B,MAAM,WAAW,SAAS;IACxB,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAKlB;AAED,WAAW;AACX,MAAM,WAAW,WAAW;IAC1B,aAAa;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpE;AAED,oBAAoB;AACpB,qBAAa,sBAAuB,SAAQ,KAAK;aAE7B,aAAa,EAAE,MAAM;aACrB,aAAa,EAAE,MAAM;gBADrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM;CAKxC;AAED,WAAW;AACX,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,WAAW;AACX,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC;CACH;AAED,aAAa;AACb,MAAM,WAAW,WAAW;IAC1B,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC,CAAC;CACJ;AAED,WAAW;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAErD,0BAA0B;AAC1B,MAAM,WAAW,eAAe;IAC9B,YAAY;IACZ,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,oBAAoB;IACpB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/services/llm.ts"],"names":[],"mappings":"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"}
|
package/dist/services/llm.js
CHANGED
|
@@ -52,6 +52,16 @@ function isRetryableError(error) {
|
|
|
52
52
|
function is529Error(error) {
|
|
53
53
|
return error instanceof openai_1.default.APIError && error.status === 529;
|
|
54
54
|
}
|
|
55
|
+
function createAbortError() {
|
|
56
|
+
const error = new Error('Operation cancelled');
|
|
57
|
+
error.name = 'AbortError';
|
|
58
|
+
return error;
|
|
59
|
+
}
|
|
60
|
+
function throwIfAborted(signal) {
|
|
61
|
+
if (signal?.aborted) {
|
|
62
|
+
throw createAbortError();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
55
65
|
/** 从错误中提取 retry-after 时间 */
|
|
56
66
|
function getRetryAfterMs(error) {
|
|
57
67
|
if (error instanceof openai_1.default.APIError && error.headers) {
|
|
@@ -197,7 +207,7 @@ class LLMService {
|
|
|
197
207
|
/**
|
|
198
208
|
* 流式对话(带重试)
|
|
199
209
|
*/
|
|
200
|
-
async chatStream(messages, callbacks, tools) {
|
|
210
|
+
async chatStream(messages, callbacks, tools, options) {
|
|
201
211
|
const onChunk = typeof callbacks === 'function' ? callbacks : callbacks?.onChunk;
|
|
202
212
|
const onThinking = typeof callbacks === 'object' ? callbacks?.onThinking : undefined;
|
|
203
213
|
const retryConfig = {
|
|
@@ -215,6 +225,7 @@ class LLMService {
|
|
|
215
225
|
},
|
|
216
226
|
};
|
|
217
227
|
return withRetry(async () => {
|
|
228
|
+
throwIfAborted(options?.abortSignal);
|
|
218
229
|
const params = {
|
|
219
230
|
model: this.config.model,
|
|
220
231
|
messages: this.toOpenAIMessages(messages),
|
|
@@ -227,12 +238,14 @@ class LLMService {
|
|
|
227
238
|
params.tools = tools;
|
|
228
239
|
}
|
|
229
240
|
onThinking?.();
|
|
230
|
-
const
|
|
241
|
+
const requestOptions = options?.abortSignal ? { signal: options.abortSignal } : undefined;
|
|
242
|
+
const stream = await this.client.chat.completions.create(params, requestOptions);
|
|
231
243
|
let content = '';
|
|
232
244
|
let usedModel = this.config.model;
|
|
233
245
|
let usage;
|
|
234
246
|
const toolCallsMap = new Map();
|
|
235
247
|
for await (const chunk of stream) {
|
|
248
|
+
throwIfAborted(options?.abortSignal);
|
|
236
249
|
// Debug: log raw chunk when tool_calls present (for diagnosing API compatibility)
|
|
237
250
|
if (process.env.OPENHORSE_DEBUG_TOOLS === 'true') {
|
|
238
251
|
const delta = chunk.choices?.[0]?.delta;
|