@vinhnt-sdk/step-executor 0.6.4 → 0.11.0
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 +3 -2
- package/dist/approval-handler.d.ts +2 -1
- package/dist/approval-handler.d.ts.map +1 -1
- package/dist/approval-handler.js +10 -4
- package/dist/approval-handler.js.map +1 -1
- package/dist/file-snapshot.d.ts +162 -0
- package/dist/file-snapshot.d.ts.map +1 -0
- package/dist/file-snapshot.js +233 -0
- package/dist/file-snapshot.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/kernel-error.d.ts +2 -9
- package/dist/kernel-error.d.ts.map +1 -1
- package/dist/kernel-error.js +1 -11
- package/dist/kernel-error.js.map +1 -1
- package/dist/permission-gate.d.ts +48 -3
- package/dist/permission-gate.d.ts.map +1 -1
- package/dist/permission-gate.js +83 -21
- package/dist/permission-gate.js.map +1 -1
- package/dist/run-state.d.ts +35 -0
- package/dist/run-state.d.ts.map +1 -1
- package/dist/run-state.js +59 -0
- package/dist/run-state.js.map +1 -1
- package/dist/self-correction.d.ts.map +1 -1
- package/dist/self-correction.js +4 -4
- package/dist/self-correction.js.map +1 -1
- package/dist/step-executor.d.ts +22 -0
- package/dist/step-executor.d.ts.map +1 -1
- package/dist/step-executor.js +107 -9
- package/dist/step-executor.js.map +1 -1
- package/dist/tool-context-builder.d.ts +4 -0
- package/dist/tool-context-builder.d.ts.map +1 -1
- package/dist/tool-context-builder.js +6 -1
- package/dist/tool-context-builder.js.map +1 -1
- package/dist/tool-error-router.d.ts.map +1 -1
- package/dist/tool-error-router.js +2 -2
- package/dist/tool-error-router.js.map +1 -1
- package/dist/tool-result-processor.d.ts.map +1 -1
- package/dist/tool-result-processor.js +28 -9
- package/dist/tool-result-processor.js.map +1 -1
- package/package.json +8 -8
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RunId, AgentConfig } from "@vinhnt-sdk/schema";
|
|
2
2
|
import type { ToolRisk, PermissionReply } from "@vinhnt-sdk/tools";
|
|
3
3
|
import type { StepExecutorPluginHooks } from "./hooks.js";
|
|
4
|
-
import type { ApprovalStore } from "@vinhnt-sdk/permission";
|
|
4
|
+
import type { ApprovalStore, PermissionMode, PermissionClassifier, ModeEffectSource } from "@vinhnt-sdk/permission";
|
|
5
5
|
import type { RunEventStore } from "@vinhnt-sdk/session";
|
|
6
6
|
import type { EventBus } from "@vinhnt-sdk/event";
|
|
7
7
|
/** Result of an approval check: allow, deny, or needs approval. */
|
|
@@ -17,6 +17,12 @@ export interface PermissionCheckResult {
|
|
|
17
17
|
allowed: boolean;
|
|
18
18
|
reason?: string;
|
|
19
19
|
needsApproval?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Set on needsApproval results (G5): whether the ask came from an explicit
|
|
22
|
+
* `rules` decision or the `risk` floor. The `auto` classifier only ever
|
|
23
|
+
* auto-approves risk-floor asks — explicit rule asks always prompt.
|
|
24
|
+
*/
|
|
25
|
+
source?: ModeEffectSource;
|
|
20
26
|
}
|
|
21
27
|
/** Optional ask options for non-standard permission keys (e.g. doom_loop). */
|
|
22
28
|
export interface AskForToolOptions {
|
|
@@ -27,6 +33,18 @@ export interface AskForToolOptions {
|
|
|
27
33
|
readonly forceAsk?: boolean;
|
|
28
34
|
/** Permission key reported to hooks/events. Default: `tool.<name>`. */
|
|
29
35
|
readonly permissionKey?: string;
|
|
36
|
+
/**
|
|
37
|
+
* G5: risk of the tool, passed to the `auto` classifier.
|
|
38
|
+
* Missing risk makes the default classifier fail closed to the dialog.
|
|
39
|
+
*/
|
|
40
|
+
readonly risk?: string | undefined;
|
|
41
|
+
/** G5: tool args handed to the `auto` classifier (semantic classification). */
|
|
42
|
+
readonly args?: Record<string, unknown> | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* G5: origin of the ask (`checkTool` result source). The classifier only
|
|
45
|
+
* runs for `"risk"` asks — absent/`"rules"` asks always open the dialog.
|
|
46
|
+
*/
|
|
47
|
+
readonly source?: ModeEffectSource | undefined;
|
|
30
48
|
}
|
|
31
49
|
/** Dependencies required by {@link PermissionGate}. */
|
|
32
50
|
export interface PermissionGateDeps {
|
|
@@ -47,6 +65,16 @@ export interface PermissionGateDeps {
|
|
|
47
65
|
* re-requesting variants after timeouts) must not run unbounded.
|
|
48
66
|
*/
|
|
49
67
|
readonly maxApprovalAsksPerRun?: number | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* G5: Claude-style approval mode (`default`/`acceptEdits`/`plan`/`bypass`/
|
|
70
|
+
* `auto` + legacy aliases). Undefined = no mode overlay (legacy behavior).
|
|
71
|
+
*/
|
|
72
|
+
readonly permissionMode?: PermissionMode | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* G5: classifier consulted by `auto` mode for risk-floor asks. Defaults to
|
|
75
|
+
* {@link createRiskPermissionClassifier} (pure, fail-closed).
|
|
76
|
+
*/
|
|
77
|
+
readonly permissionClassifier?: PermissionClassifier | undefined;
|
|
50
78
|
}
|
|
51
79
|
/** Enforces 4-phase permission gating: global rules, agent perms, dynamic rules, risk defaults. */
|
|
52
80
|
export declare class PermissionGate {
|
|
@@ -56,6 +84,12 @@ export declare class PermissionGate {
|
|
|
56
84
|
private riskOverrides?;
|
|
57
85
|
private topLevelRules;
|
|
58
86
|
private autoApproval;
|
|
87
|
+
/** G5: Claude-style mode overlay (undefined = legacy pipeline, no overlay). */
|
|
88
|
+
private mode;
|
|
89
|
+
/** G5: injected classifier for `auto` mode; falls back to the risk classifier. */
|
|
90
|
+
private classifier;
|
|
91
|
+
/** G5: default `auto` classifier — pure, deterministic, fail-closed. */
|
|
92
|
+
private readonly fallbackClassifier;
|
|
59
93
|
/** Per-approval hard timeout — separate from agent stale threshold. */
|
|
60
94
|
private readonly approvalTimeoutMs;
|
|
61
95
|
/** Safety valve — max approval dialogs per run. */
|
|
@@ -67,6 +101,10 @@ export declare class PermissionGate {
|
|
|
67
101
|
constructor(deps: PermissionGateDeps);
|
|
68
102
|
/** Toggle auto-approval at runtime (mirrors config.autoApprovalEnabled). */
|
|
69
103
|
setAutoApprovalEnabled(enabled: boolean): void;
|
|
104
|
+
/** G5: set/replace the permission mode at runtime (undefined = no overlay). */
|
|
105
|
+
setPermissionMode(mode: PermissionMode | undefined): void;
|
|
106
|
+
/** G5: set/replace the `auto` classifier at runtime (undefined = risk default). */
|
|
107
|
+
setPermissionClassifier(classifier: PermissionClassifier | undefined): void;
|
|
70
108
|
/**
|
|
71
109
|
* Parse and apply config-level permission rules (OpenCode-style nested `{ tool: "allow|deny|ask" }`).
|
|
72
110
|
* Bare keys are stored as `tool.<name>` so they match {@link checkTool}'s
|
|
@@ -87,10 +125,17 @@ export declare class PermissionGate {
|
|
|
87
125
|
addDoomLoopBypass(toolName: string): void;
|
|
88
126
|
/** Override risk-level defaults (read→allow, write→approval, destructive→deny). */
|
|
89
127
|
setRiskOverrides(overrides?: Partial<Record<ToolRisk, ApprovalDecision>>): void;
|
|
128
|
+
/**
|
|
129
|
+
* Map a final effect to the check result, applying the G5 mode overlay
|
|
130
|
+
* first. With no mode configured the overlay passes through — behavior is
|
|
131
|
+
* byte-identical to the legacy pipeline.
|
|
132
|
+
*/
|
|
133
|
+
private decide;
|
|
90
134
|
/**
|
|
91
135
|
* Evaluate whether a tool call is allowed.
|
|
92
|
-
* 4-phase gate: global rules → agent permissions → dynamic rules → risk defaults
|
|
93
|
-
*
|
|
136
|
+
* 4-phase gate: global rules → agent permissions → dynamic rules → risk defaults,
|
|
137
|
+
* then the G5 permission-mode overlay (applied inside {@link decide}).
|
|
138
|
+
* Returns { allowed, reason, needsApproval, source }.
|
|
94
139
|
*/
|
|
95
140
|
checkTool(name: string, risk: ToolRisk, args?: Record<string, unknown>, agent?: AgentConfig): PermissionCheckResult;
|
|
96
141
|
/** Check whether combined token count stays within agent's maxTokens limit. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-gate.d.ts","sourceRoot":"","sources":["../src/permission-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAa,WAAW,EAA0C,MAAM,oBAAoB,CAAC;AAChH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"permission-gate.d.ts","sourceRoot":"","sources":["../src/permission-gate.ts"],"names":[],"mappings":"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"}
|
package/dist/permission-gate.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { evaluatePermission, checkRiskAllowed } from "@vinhnt-sdk/permission";
|
|
2
1
|
import { wildcardMatch } from "@vinhnt-sdk/schema";
|
|
3
|
-
import { buildPermissionRules } from "@vinhnt-sdk/permission";
|
|
2
|
+
import { evaluatePermission, checkRiskAllowed, buildPermissionRules, applyPermissionMode, createRiskPermissionClassifier } from "@vinhnt-sdk/permission";
|
|
4
3
|
import { commandPattern } from "@vinhnt-sdk/tools";
|
|
5
4
|
import { PermissionRequested, PermissionReplied } from "@vinhnt-sdk/event";
|
|
6
5
|
const RISK_DECISIONS = {
|
|
@@ -41,6 +40,12 @@ export class PermissionGate {
|
|
|
41
40
|
riskOverrides;
|
|
42
41
|
topLevelRules = [];
|
|
43
42
|
autoApproval;
|
|
43
|
+
/** G5: Claude-style mode overlay (undefined = legacy pipeline, no overlay). */
|
|
44
|
+
mode;
|
|
45
|
+
/** G5: injected classifier for `auto` mode; falls back to the risk classifier. */
|
|
46
|
+
classifier;
|
|
47
|
+
/** G5: default `auto` classifier — pure, deterministic, fail-closed. */
|
|
48
|
+
fallbackClassifier = createRiskPermissionClassifier();
|
|
44
49
|
/** Per-approval hard timeout — separate from agent stale threshold. */
|
|
45
50
|
approvalTimeoutMs;
|
|
46
51
|
/** Safety valve — max approval dialogs per run. */
|
|
@@ -52,6 +57,8 @@ export class PermissionGate {
|
|
|
52
57
|
constructor(deps) {
|
|
53
58
|
this.deps = deps;
|
|
54
59
|
this.autoApproval = deps.autoApprovalEnabled ?? false;
|
|
60
|
+
this.mode = deps.permissionMode;
|
|
61
|
+
this.classifier = deps.permissionClassifier;
|
|
55
62
|
this.approvalTimeoutMs = deps.approvalTimeoutMs ?? 120_000;
|
|
56
63
|
this.maxApprovalAsksPerRun = deps.maxApprovalAsksPerRun ?? 20;
|
|
57
64
|
}
|
|
@@ -59,6 +66,14 @@ export class PermissionGate {
|
|
|
59
66
|
setAutoApprovalEnabled(enabled) {
|
|
60
67
|
this.autoApproval = enabled;
|
|
61
68
|
}
|
|
69
|
+
/** G5: set/replace the permission mode at runtime (undefined = no overlay). */
|
|
70
|
+
setPermissionMode(mode) {
|
|
71
|
+
this.mode = mode;
|
|
72
|
+
}
|
|
73
|
+
/** G5: set/replace the `auto` classifier at runtime (undefined = risk default). */
|
|
74
|
+
setPermissionClassifier(classifier) {
|
|
75
|
+
this.classifier = classifier;
|
|
76
|
+
}
|
|
62
77
|
/**
|
|
63
78
|
* Parse and apply config-level permission rules (OpenCode-style nested `{ tool: "allow|deny|ask" }`).
|
|
64
79
|
* Bare keys are stored as `tool.<name>` so they match {@link checkTool}'s
|
|
@@ -107,19 +122,47 @@ export class PermissionGate {
|
|
|
107
122
|
if (overrides !== undefined)
|
|
108
123
|
this.riskOverrides = overrides;
|
|
109
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Map a final effect to the check result, applying the G5 mode overlay
|
|
127
|
+
* first. With no mode configured the overlay passes through — behavior is
|
|
128
|
+
* byte-identical to the legacy pipeline.
|
|
129
|
+
*/
|
|
130
|
+
decide(effect, source, name, risk, reason) {
|
|
131
|
+
let finalEffect = effect;
|
|
132
|
+
let finalReason = reason;
|
|
133
|
+
if (this.mode !== undefined) {
|
|
134
|
+
const decision = applyPermissionMode({ mode: this.mode, effect, source, toolName: name, risk });
|
|
135
|
+
finalEffect = decision.effect;
|
|
136
|
+
if (decision.overridden && decision.reason !== undefined)
|
|
137
|
+
finalReason = decision.reason;
|
|
138
|
+
}
|
|
139
|
+
if (finalEffect === "allow") {
|
|
140
|
+
return { allowed: true, ...(finalReason !== undefined ? { reason: finalReason } : {}) };
|
|
141
|
+
}
|
|
142
|
+
if (finalEffect === "ask") {
|
|
143
|
+
return {
|
|
144
|
+
allowed: false,
|
|
145
|
+
needsApproval: true,
|
|
146
|
+
source,
|
|
147
|
+
...(finalReason !== undefined ? { reason: finalReason } : {}),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return { allowed: false, ...(finalReason !== undefined ? { reason: finalReason } : {}) };
|
|
151
|
+
}
|
|
110
152
|
/**
|
|
111
153
|
* Evaluate whether a tool call is allowed.
|
|
112
|
-
* 4-phase gate: global rules → agent permissions → dynamic rules → risk defaults
|
|
113
|
-
*
|
|
154
|
+
* 4-phase gate: global rules → agent permissions → dynamic rules → risk defaults,
|
|
155
|
+
* then the G5 permission-mode overlay (applied inside {@link decide}).
|
|
156
|
+
* Returns { allowed, reason, needsApproval, source }.
|
|
114
157
|
*/
|
|
115
158
|
checkTool(name, risk, args, agent) {
|
|
116
159
|
// Phase 1: Global config-level rules (OpenCode-style nested patterns)
|
|
117
160
|
if (this.globalPermissionRules && this.globalPermissionRules.length > 0) {
|
|
118
161
|
const globalResult = evaluatePermission({ rules: this.globalPermissionRules }, `tool.${name}`, args);
|
|
119
162
|
if (globalResult.decision === "deny")
|
|
120
|
-
return
|
|
163
|
+
return this.decide("deny", "rules", name, risk, globalResult.reason);
|
|
121
164
|
if (globalResult.decision === "ask")
|
|
122
|
-
return
|
|
165
|
+
return this.decide("ask", "rules", name, risk, globalResult.reason);
|
|
123
166
|
}
|
|
124
167
|
// Phase 1.5: Top-level allow/deny/ask pattern lists ("Tool(glob)")
|
|
125
168
|
if (this.topLevelRules.length > 0) {
|
|
@@ -132,10 +175,10 @@ export class PermissionGate {
|
|
|
132
175
|
}
|
|
133
176
|
if (matched) {
|
|
134
177
|
if (matched.decision === "deny")
|
|
135
|
-
return
|
|
178
|
+
return this.decide("deny", "rules", name, risk, `Tool "${name}" is denied`);
|
|
136
179
|
if (matched.decision === "ask")
|
|
137
|
-
return
|
|
138
|
-
return
|
|
180
|
+
return this.decide("ask", "rules", name, risk, `Tool "${name}" requires approval`);
|
|
181
|
+
return this.decide("allow", "rules", name, risk, "Allowed by configured rule");
|
|
139
182
|
}
|
|
140
183
|
}
|
|
141
184
|
// Phase 2: Agent-specific permissions
|
|
@@ -144,22 +187,22 @@ export class PermissionGate {
|
|
|
144
187
|
if (perms.ruleset) {
|
|
145
188
|
const result = evaluatePermission(perms.ruleset, `tool.${name}`, args);
|
|
146
189
|
if (result.decision === "deny")
|
|
147
|
-
return
|
|
190
|
+
return this.decide("deny", "rules", name, risk, result.reason);
|
|
148
191
|
if (result.decision === "ask")
|
|
149
|
-
return
|
|
192
|
+
return this.decide("ask", "rules", name, risk, result.reason);
|
|
150
193
|
if (perms.ruleset.allowedRisks && !checkRiskAllowed(perms.ruleset, risk)) {
|
|
151
|
-
return
|
|
194
|
+
return this.decide("deny", "rules", name, risk, `Tool "${name}" has risk "${risk}" which exceeds agent's allowed risks`);
|
|
152
195
|
}
|
|
153
|
-
return
|
|
196
|
+
return this.decide("allow", "rules", name, risk);
|
|
154
197
|
}
|
|
155
198
|
if (perms.deniedTools?.some((p) => wildcardMatch(p, name))) {
|
|
156
|
-
return
|
|
199
|
+
return this.decide("deny", "rules", name, risk, `Tool "${name}" is denied for this agent`);
|
|
157
200
|
}
|
|
158
201
|
if (perms.allowedTools && !perms.allowedTools.some((p) => wildcardMatch(p, name))) {
|
|
159
|
-
return
|
|
202
|
+
return this.decide("deny", "rules", name, risk, `Tool "${name}" is not in the allowed tools list`);
|
|
160
203
|
}
|
|
161
204
|
if (perms.allowedRisks && !perms.allowedRisks.includes(risk)) {
|
|
162
|
-
return
|
|
205
|
+
return this.decide("deny", "rules", name, risk, `Tool "${name}" has risk "${risk}" which exceeds agent's allowed risks`);
|
|
163
206
|
}
|
|
164
207
|
}
|
|
165
208
|
// Phase 3: Dynamic rules (last-match-wins, same as ToolPolicy)
|
|
@@ -169,8 +212,8 @@ export class PermissionGate {
|
|
|
169
212
|
const rule = this.dynamicRules[i];
|
|
170
213
|
if (rule.toolName === name && wildcardMatch(rule.pattern, pattern)) {
|
|
171
214
|
if (rule.decision === "deny")
|
|
172
|
-
return
|
|
173
|
-
return
|
|
215
|
+
return this.decide("deny", "rules", name, risk, `Tool "${name}" denied by dynamic rule`);
|
|
216
|
+
return this.decide("allow", "rules", name, risk);
|
|
174
217
|
}
|
|
175
218
|
}
|
|
176
219
|
}
|
|
@@ -180,10 +223,10 @@ export class PermissionGate {
|
|
|
180
223
|
RISK_DECISIONS[risk] ??
|
|
181
224
|
"approval_required";
|
|
182
225
|
if (decision === "deny")
|
|
183
|
-
return
|
|
226
|
+
return this.decide("deny", "risk", name, risk, `Tool "${name}" (risk: ${risk}) is denied`);
|
|
184
227
|
if (decision === "approval_required")
|
|
185
|
-
return
|
|
186
|
-
return
|
|
228
|
+
return this.decide("ask", "risk", name, risk, `Tool "${name}" (risk: ${risk}) requires approval`);
|
|
229
|
+
return this.decide("allow", "risk", name, risk);
|
|
187
230
|
}
|
|
188
231
|
/** Check whether combined token count stays within agent's maxTokens limit. */
|
|
189
232
|
checkMaxTokens(inputTokens, outputTokens, agent) {
|
|
@@ -209,6 +252,25 @@ export class PermissionGate {
|
|
|
209
252
|
async askForTool(toolName, _toolId, runId, _sessionId, reason, _agentId, traceId, pluginManager, savePatterns, signal, options) {
|
|
210
253
|
if (this.autoApproval && !options?.forceAsk)
|
|
211
254
|
return "once";
|
|
255
|
+
// G5 `auto`: classify risk-floor asks before opening the dialog. Explicit
|
|
256
|
+
// rule asks (and callers that did not report a source) always prompt — a
|
|
257
|
+
// throwing classifier fails closed to the dialog.
|
|
258
|
+
if (this.mode === "auto" && options?.source === "risk" && !options?.forceAsk) {
|
|
259
|
+
let classification = "ask";
|
|
260
|
+
try {
|
|
261
|
+
classification = await (this.classifier ?? this.fallbackClassifier).classify({
|
|
262
|
+
toolName,
|
|
263
|
+
risk: options?.risk,
|
|
264
|
+
args: options?.args,
|
|
265
|
+
source: options?.source,
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
classification = "ask";
|
|
270
|
+
}
|
|
271
|
+
if (classification === "allow")
|
|
272
|
+
return "once";
|
|
273
|
+
}
|
|
212
274
|
// Safety valve: cap the number of dialogs per run — beyond the limit the
|
|
213
275
|
// ask fails fast as "reject" instead of opening yet another dialog.
|
|
214
276
|
const askCount = (this.approvalAskCounts.get(runId) ?? 0) + 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-gate.js","sourceRoot":"","sources":["../src/permission-gate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"permission-gate.js","sourceRoot":"","sources":["../src/permission-gate.ts"],"names":[],"mappings":"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"}
|
package/dist/run-state.d.ts
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import type { RunId } from "@vinhnt-sdk/schema";
|
|
2
2
|
/** Lifecycle state of a run. */
|
|
3
3
|
export type RunState = "pending" | "running" | "paused" | "completed" | "failed" | "cancelled";
|
|
4
|
+
/**
|
|
5
|
+
* Default number of cleaned-up run states kept for post-mortem inspection.
|
|
6
|
+
*
|
|
7
|
+
* `runStates` is the ONE map `cleanupRun()` deliberately keeps (UI / getRunState
|
|
8
|
+
* still report how a run finished), so it is bounded FIFO instead of growing
|
|
9
|
+
* forever — P5.10 eviction.
|
|
10
|
+
*/
|
|
11
|
+
export declare const MAX_RETAINED_RUN_STATES = 1000;
|
|
12
|
+
/** Tuning for {@link RunStateMachine}. */
|
|
13
|
+
export interface RunStateMachineOptions {
|
|
14
|
+
/** Retained cleaned-up run states (default {@link MAX_RETAINED_RUN_STATES}). */
|
|
15
|
+
readonly retainedTerminalStates?: number;
|
|
16
|
+
}
|
|
4
17
|
/** Tracks per-run state, abort signals and input queues. */
|
|
5
18
|
export declare class RunStateMachine {
|
|
6
19
|
private readonly runStates;
|
|
@@ -9,15 +22,37 @@ export declare class RunStateMachine {
|
|
|
9
22
|
private readonly busySessions;
|
|
10
23
|
private readonly modelForRun;
|
|
11
24
|
private readonly stateSubscribers;
|
|
25
|
+
/** Cleanup order of finished runs — head = next eviction candidate (FIFO). */
|
|
26
|
+
private readonly retiredRuns;
|
|
27
|
+
private readonly retainedStates;
|
|
12
28
|
readonly runIdStack: RunId[];
|
|
29
|
+
constructor(options?: RunStateMachineOptions);
|
|
13
30
|
getState(runId: RunId): RunState | undefined;
|
|
14
31
|
setState(runId: RunId, state: RunState): void;
|
|
15
32
|
onStateChange(listener: (runId: RunId, state: RunState) => void): () => void;
|
|
16
33
|
createRun(runId: RunId, sessionId?: string, parentRunId?: RunId): AbortController | null;
|
|
34
|
+
/**
|
|
35
|
+
* Remove a run's entry from the run stack BY IDENTITY.
|
|
36
|
+
*
|
|
37
|
+
* Unlike a plain `pop()`, this only removes the given run — a concurrent
|
|
38
|
+
* sibling that happens to sit on top of the stack is never discarded
|
|
39
|
+
* (S3: blind `pop()` corrupted the stack when runs finished out of order).
|
|
40
|
+
*/
|
|
41
|
+
exitRun(runId: RunId): void;
|
|
42
|
+
/** True while the run still has a live abort controller (not finished/cleaned up). */
|
|
43
|
+
isActiveRun(runId: RunId): boolean;
|
|
17
44
|
getAbort(runId: RunId): AbortController | undefined;
|
|
18
45
|
isAborted(runId: RunId): boolean;
|
|
19
46
|
getSignal(runId: RunId): AbortSignal;
|
|
20
47
|
cleanupRun(runId: RunId, sessionId?: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* Mark a finished/rejected run as post-mortem-only state and enforce the
|
|
50
|
+
* retention bound (FIFO: oldest cleaned-up run loses its state first).
|
|
51
|
+
*
|
|
52
|
+
* Active runs are never evicted — a run re-created after cleanup was
|
|
53
|
+
* un-retired by createRun() and skipped here as a safety net.
|
|
54
|
+
*/
|
|
55
|
+
private retire;
|
|
21
56
|
cancelAll(): void;
|
|
22
57
|
sendInput(runId: RunId, text: string): void;
|
|
23
58
|
drainInputs(runId: RunId): string[];
|
package/dist/run-state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/F,4DAA4D;AAC5D,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsD;IACvF,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAM;
|
|
1
|
+
{"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/F;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,0CAA0C;AAC1C,MAAM,WAAW,sBAAsB;IACrC,gFAAgF;IAChF,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED,4DAA4D;AAC5D,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsD;IACvF,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAM;gBAEtB,OAAO,GAAE,sBAA2B;IAIhD,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS;IAI5C,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAO7C,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,IAAI;IAK5E,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,GAAG,eAAe,GAAG,IAAI;IA4BxF;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAK3B,sFAAsF;IACtF,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIlC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS;IAInD,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIhC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW;IAIpC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAWlD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM;IAWd,SAAS,IAAI,IAAI;IAIjB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAS3C,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE;IAMnC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAIlD,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,SAAS;CAI/C"}
|
package/dist/run-state.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default number of cleaned-up run states kept for post-mortem inspection.
|
|
3
|
+
*
|
|
4
|
+
* `runStates` is the ONE map `cleanupRun()` deliberately keeps (UI / getRunState
|
|
5
|
+
* still report how a run finished), so it is bounded FIFO instead of growing
|
|
6
|
+
* forever — P5.10 eviction.
|
|
7
|
+
*/
|
|
8
|
+
export const MAX_RETAINED_RUN_STATES = 1000;
|
|
1
9
|
/** Tracks per-run state, abort signals and input queues. */
|
|
2
10
|
export class RunStateMachine {
|
|
3
11
|
runStates = new Map();
|
|
@@ -6,7 +14,13 @@ export class RunStateMachine {
|
|
|
6
14
|
busySessions = new Set();
|
|
7
15
|
modelForRun = new Map();
|
|
8
16
|
stateSubscribers = new Set();
|
|
17
|
+
/** Cleanup order of finished runs — head = next eviction candidate (FIFO). */
|
|
18
|
+
retiredRuns = [];
|
|
19
|
+
retainedStates;
|
|
9
20
|
runIdStack = [];
|
|
21
|
+
constructor(options = {}) {
|
|
22
|
+
this.retainedStates = options.retainedTerminalStates ?? MAX_RETAINED_RUN_STATES;
|
|
23
|
+
}
|
|
10
24
|
getState(runId) {
|
|
11
25
|
return this.runStates.get(runId);
|
|
12
26
|
}
|
|
@@ -24,6 +38,11 @@ export class RunStateMachine {
|
|
|
24
38
|
return () => { this.stateSubscribers.delete(listener); };
|
|
25
39
|
}
|
|
26
40
|
createRun(runId, sessionId, parentRunId) {
|
|
41
|
+
// A re-created run is live again — un-retire it so its state is not
|
|
42
|
+
// treated as an eviction candidate by the FIFO below.
|
|
43
|
+
const retiredIndex = this.retiredRuns.indexOf(runId);
|
|
44
|
+
if (retiredIndex !== -1)
|
|
45
|
+
this.retiredRuns.splice(retiredIndex, 1);
|
|
27
46
|
const abort = new AbortController();
|
|
28
47
|
this.runAborts.set(runId, abort);
|
|
29
48
|
this.setState(runId, "pending");
|
|
@@ -34,6 +53,9 @@ export class RunStateMachine {
|
|
|
34
53
|
}
|
|
35
54
|
else if (this.busySessions.has(sessionId)) {
|
|
36
55
|
this.runAborts.delete(runId);
|
|
56
|
+
// Rejected run: its "pending" state would otherwise sit in runStates
|
|
57
|
+
// forever — retire it so the FIFO can evict it too.
|
|
58
|
+
this.retire(runId);
|
|
37
59
|
return null;
|
|
38
60
|
}
|
|
39
61
|
else {
|
|
@@ -42,6 +64,22 @@ export class RunStateMachine {
|
|
|
42
64
|
}
|
|
43
65
|
return abort;
|
|
44
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Remove a run's entry from the run stack BY IDENTITY.
|
|
69
|
+
*
|
|
70
|
+
* Unlike a plain `pop()`, this only removes the given run — a concurrent
|
|
71
|
+
* sibling that happens to sit on top of the stack is never discarded
|
|
72
|
+
* (S3: blind `pop()` corrupted the stack when runs finished out of order).
|
|
73
|
+
*/
|
|
74
|
+
exitRun(runId) {
|
|
75
|
+
const index = this.runIdStack.lastIndexOf(runId);
|
|
76
|
+
if (index !== -1)
|
|
77
|
+
this.runIdStack.splice(index, 1);
|
|
78
|
+
}
|
|
79
|
+
/** True while the run still has a live abort controller (not finished/cleaned up). */
|
|
80
|
+
isActiveRun(runId) {
|
|
81
|
+
return this.runAborts.has(runId);
|
|
82
|
+
}
|
|
45
83
|
getAbort(runId) {
|
|
46
84
|
return this.runAborts.get(runId);
|
|
47
85
|
}
|
|
@@ -59,6 +97,27 @@ export class RunStateMachine {
|
|
|
59
97
|
this.busySessions.delete(sessionId);
|
|
60
98
|
// Keep the terminal run state so post-mortem getRunState()/UI can still
|
|
61
99
|
// report how the run finished; only volatile resources are freed above.
|
|
100
|
+
// Retention is bounded by the retire() FIFO below.
|
|
101
|
+
this.retire(runId);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Mark a finished/rejected run as post-mortem-only state and enforce the
|
|
105
|
+
* retention bound (FIFO: oldest cleaned-up run loses its state first).
|
|
106
|
+
*
|
|
107
|
+
* Active runs are never evicted — a run re-created after cleanup was
|
|
108
|
+
* un-retired by createRun() and skipped here as a safety net.
|
|
109
|
+
*/
|
|
110
|
+
retire(runId) {
|
|
111
|
+
if (!this.retiredRuns.includes(runId))
|
|
112
|
+
this.retiredRuns.push(runId);
|
|
113
|
+
while (this.retiredRuns.length > this.retainedStates) {
|
|
114
|
+
const oldest = this.retiredRuns.shift();
|
|
115
|
+
if (oldest === undefined)
|
|
116
|
+
break;
|
|
117
|
+
if (this.isActiveRun(oldest))
|
|
118
|
+
continue;
|
|
119
|
+
this.runStates.delete(oldest);
|
|
120
|
+
}
|
|
62
121
|
}
|
|
63
122
|
cancelAll() {
|
|
64
123
|
for (const a of this.runAborts.values())
|
package/dist/run-state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-state.js","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"AAKA,4DAA4D;AAC5D,MAAM,OAAO,eAAe;IACT,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IACvC,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9C,aAAa,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC3C,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,gBAAgB,GAAG,IAAI,GAAG,EAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"run-state.js","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-correction.d.ts","sourceRoot":"","sources":["../src/self-correction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAqB,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,oBAAoB,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACrI,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,OAAO,mBAAmB,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3G,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC5D,YAAY,EAAE,WAAW,GAAG,SAAS,CAAC;CACvC;AAED,oDAAoD;AACpD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,iBAAiB,EACrB,QAAQ,EAAE,WAAW,EAAE,EACvB,WAAW,EAAE,UAAU,EAAE,EACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,kBAAkB,EACxB,iBAAiB,EAAE,oBAAoB,GACtC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"self-correction.d.ts","sourceRoot":"","sources":["../src/self-correction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAqB,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,oBAAoB,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACrI,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,OAAO,mBAAmB,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3G,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC5D,YAAY,EAAE,WAAW,GAAG,SAAS,CAAC;CACvC;AAED,oDAAoD;AACpD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,iBAAiB,EACrB,QAAQ,EAAE,WAAW,EAAE,EACvB,WAAW,EAAE,UAAU,EAAE,EACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,kBAAkB,EACxB,iBAAiB,EAAE,oBAAoB,GACtC,OAAO,CAAC,IAAI,CAAC,CA+Jf"}
|
package/dist/self-correction.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getTextContent } from "@vinhnt-sdk/schema";
|
|
1
|
+
import { getTextContent, getLogger } from "@vinhnt-sdk/schema";
|
|
2
2
|
import { detectDoomLoop, SELF_CORRECT_PROMPT, raceWithAbort, withToolTimeout, toolDomain, toolSource } from "./kernel-utils.js";
|
|
3
3
|
import { resolveLoopPolicy } from "./loop-policy.js";
|
|
4
4
|
import { hasErrorCode } from "@vinhnt-sdk/schema";
|
|
@@ -80,7 +80,7 @@ export async function runSelfCorrection(tc, messages, recentCalls, step, runId,
|
|
|
80
80
|
continue;
|
|
81
81
|
}
|
|
82
82
|
if (!deps.permissionGate.checkSavedApproval(ct.name, ct.args, deps.currentAgent?.id)) {
|
|
83
|
-
const reply = await deps.permissionGate.askForTool(ct.name, ct.id, runId, "", cpermResult.reason ?? `Tool "${ct.name}" requires approval for self-correction`, deps.currentAgent?.id ?? "", ctx.traceId, deps.pluginManager, undefined, runAbort.signal);
|
|
83
|
+
const reply = await deps.permissionGate.askForTool(ct.name, ct.id, runId, "", cpermResult.reason ?? `Tool "${ct.name}" requires approval for self-correction`, deps.currentAgent?.id ?? "", ctx.traceId, deps.pluginManager, undefined, runAbort.signal, { risk: ctool.risk, args: ct.args, source: cpermResult.source });
|
|
84
84
|
if (reply === "reject") {
|
|
85
85
|
messages.push({ role: "tool", toolCallId: ct.id, content: `Error: Tool "${ct.name}" rejected by user` });
|
|
86
86
|
continue;
|
|
@@ -148,13 +148,13 @@ export async function runSelfCorrection(tc, messages, recentCalls, step, runId,
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
catch (err) {
|
|
151
|
-
|
|
151
|
+
getLogger().warn(`[kernel] Self-correction attempt ${attempt}/${deps.maxSelfCorrectAttempts} failed:`, err instanceof Error ? err.message : String(err));
|
|
152
152
|
}
|
|
153
153
|
if (corrected)
|
|
154
154
|
break;
|
|
155
155
|
}
|
|
156
156
|
if (!corrected) {
|
|
157
|
-
|
|
157
|
+
getLogger().warn(`[kernel] Self-correction exhausted after ${deps.maxSelfCorrectAttempts} attempts for tool "${tc.toolName}"`);
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
//# sourceMappingURL=self-correction.js.map
|