@kenkaiiii/ggcoder 5.74.3 → 5.75.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/README.md +1 -1
- package/assets/skills/bulletproof/SKILL.md +1 -1
- package/assets/skills/clarify/SKILL.md +1 -1
- package/assets/skills/code-review/SKILL.md +1 -1
- package/assets/skills/compliance-guard/SKILL.md +1 -1
- package/assets/skills/durable/SKILL.md +1 -1
- package/assets/skills/evidence-led-ui/SKILL.md +1 -1
- package/assets/skills/lean/SKILL.md +1 -1
- package/assets/skills/refactoring/SKILL.md +1 -1
- package/assets/skills/root-cause/SKILL.md +1 -1
- package/assets/skills/shared-language/SKILL.md +1 -1
- package/assets/skills/tdd/SKILL.md +1 -1
- package/dist/app-sidecar/app-settings.d.ts +65 -0
- package/dist/app-sidecar/app-settings.js +147 -0
- package/dist/app-sidecar/app-settings.js.map +1 -0
- package/dist/app-sidecar/attachments.d.ts +11 -0
- package/dist/app-sidecar/attachments.js +47 -0
- package/dist/app-sidecar/attachments.js.map +1 -0
- package/dist/app-sidecar/auth-routes.d.ts +3 -0
- package/dist/app-sidecar/auth-routes.js +290 -0
- package/dist/app-sidecar/auth-routes.js.map +1 -0
- package/dist/app-sidecar/autopilot-runner.d.ts +61 -0
- package/dist/app-sidecar/autopilot-runner.js +367 -0
- package/dist/app-sidecar/autopilot-runner.js.map +1 -0
- package/dist/app-sidecar/file-search.d.ts +15 -0
- package/dist/app-sidecar/file-search.js +103 -0
- package/dist/app-sidecar/file-search.js.map +1 -0
- package/dist/app-sidecar/hf-pull-manager.d.ts +20 -0
- package/dist/app-sidecar/hf-pull-manager.js +224 -0
- package/dist/app-sidecar/hf-pull-manager.js.map +1 -0
- package/dist/app-sidecar/history-routes.d.ts +3 -0
- package/dist/app-sidecar/history-routes.js +375 -0
- package/dist/app-sidecar/history-routes.js.map +1 -0
- package/dist/app-sidecar/history.d.ts +67 -0
- package/dist/app-sidecar/history.js +23 -0
- package/dist/app-sidecar/history.js.map +1 -0
- package/dist/app-sidecar/http.d.ts +5 -0
- package/dist/app-sidecar/http.js +27 -0
- package/dist/app-sidecar/http.js.map +1 -0
- package/dist/app-sidecar/integration-routes.d.ts +3 -0
- package/dist/app-sidecar/integration-routes.js +286 -0
- package/dist/app-sidecar/integration-routes.js.map +1 -0
- package/dist/app-sidecar/json-mode.d.ts +10 -0
- package/dist/app-sidecar/json-mode.js +73 -0
- package/dist/app-sidecar/json-mode.js.map +1 -0
- package/dist/app-sidecar/keep-awake.d.ts +4 -0
- package/dist/app-sidecar/keep-awake.js +5 -0
- package/dist/app-sidecar/keep-awake.js.map +1 -0
- package/dist/app-sidecar/ken-context.d.ts +20 -0
- package/dist/app-sidecar/ken-context.js +55 -0
- package/dist/app-sidecar/ken-context.js.map +1 -0
- package/dist/app-sidecar/mcp-routes.d.ts +3 -0
- package/dist/app-sidecar/mcp-routes.js +185 -0
- package/dist/app-sidecar/mcp-routes.js.map +1 -0
- package/dist/app-sidecar/mcp-rows.d.ts +31 -0
- package/dist/app-sidecar/mcp-rows.js +77 -0
- package/dist/app-sidecar/mcp-rows.js.map +1 -0
- package/dist/app-sidecar/progress-manager.d.ts +10 -0
- package/dist/app-sidecar/progress-manager.js +116 -0
- package/dist/app-sidecar/progress-manager.js.map +1 -0
- package/dist/app-sidecar/prompt-routes.d.ts +3 -0
- package/dist/app-sidecar/prompt-routes.js +354 -0
- package/dist/app-sidecar/prompt-routes.js.map +1 -0
- package/dist/app-sidecar/repo-polls.d.ts +15 -0
- package/dist/app-sidecar/repo-polls.js +25 -0
- package/dist/app-sidecar/repo-polls.js.map +1 -0
- package/dist/app-sidecar/route-context.d.ts +145 -0
- package/dist/app-sidecar/route-context.js +2 -0
- package/dist/app-sidecar/route-context.js.map +1 -0
- package/dist/app-sidecar/run-control-routes.d.ts +3 -0
- package/dist/app-sidecar/run-control-routes.js +430 -0
- package/dist/app-sidecar/run-control-routes.js.map +1 -0
- package/dist/app-sidecar/session-routes.d.ts +3 -0
- package/dist/app-sidecar/session-routes.js +115 -0
- package/dist/app-sidecar/session-routes.js.map +1 -0
- package/dist/app-sidecar/session-types.d.ts +39 -0
- package/dist/app-sidecar/session-types.js +5 -0
- package/dist/app-sidecar/session-types.js.map +1 -0
- package/dist/app-sidecar/task-routes.d.ts +3 -0
- package/dist/app-sidecar/task-routes.js +149 -0
- package/dist/app-sidecar/task-routes.js.map +1 -0
- package/dist/app-sidecar/usage.d.ts +19 -0
- package/dist/app-sidecar/usage.js +153 -0
- package/dist/app-sidecar/usage.js.map +1 -0
- package/dist/app-sidecar/workspace-routes.d.ts +3 -0
- package/dist/app-sidecar/workspace-routes.js +244 -0
- package/dist/app-sidecar/workspace-routes.js.map +1 -0
- package/dist/app-sidecar.js +467 -3775
- package/dist/app-sidecar.js.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.js +1 -1
- package/dist/core/acceptance-checks.js +3 -9
- package/dist/core/acceptance-checks.js.map +1 -1
- package/dist/core/agent-session/helpers.d.ts +26 -0
- package/dist/core/agent-session/helpers.js +47 -0
- package/dist/core/agent-session/helpers.js.map +1 -0
- package/dist/core/agent-session/mcp-tools.d.ts +68 -0
- package/dist/core/agent-session/mcp-tools.js +195 -0
- package/dist/core/agent-session/mcp-tools.js.map +1 -0
- package/dist/core/agent-session/run-loop-monitor.d.ts +63 -0
- package/dist/core/agent-session/run-loop-monitor.js +164 -0
- package/dist/core/agent-session/run-loop-monitor.js.map +1 -0
- package/dist/core/agent-session/transcript-markers.d.ts +57 -0
- package/dist/core/agent-session/transcript-markers.js +166 -0
- package/dist/core/agent-session/transcript-markers.js.map +1 -0
- package/dist/core/agent-session/verification-tracker.d.ts +46 -0
- package/dist/core/agent-session/verification-tracker.js +246 -0
- package/dist/core/agent-session/verification-tracker.js.map +1 -0
- package/dist/core/agent-session.d.ts +21 -87
- package/dist/core/agent-session.js +141 -712
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-providers.js +3 -3
- package/dist/core/auth-providers.js.map +1 -1
- package/dist/core/bundled-agents.js +6 -6
- package/dist/core/bundled-agents.js.map +1 -1
- package/dist/core/checklist-git.d.ts +19 -0
- package/dist/core/checklist-git.js +54 -0
- package/dist/core/checklist-git.js.map +1 -0
- package/dist/core/checklist-items.d.ts +10 -1
- package/dist/core/checklist-items.js +22 -0
- package/dist/core/checklist-items.js.map +1 -1
- package/dist/core/checklist-prompt.d.ts +5 -1
- package/dist/core/checklist-prompt.js +16 -5
- package/dist/core/checklist-prompt.js.map +1 -1
- package/dist/core/checklist-snapshot.d.ts +5 -1
- package/dist/core/checklist-snapshot.js +19 -2
- package/dist/core/checklist-snapshot.js.map +1 -1
- package/dist/core/context-limits.js +1 -1
- package/dist/core/context-limits.js.map +1 -1
- package/dist/core/skills.js +6 -9
- package/dist/core/skills.js.map +1 -1
- package/dist/core/style-packs/index.js +2 -11
- package/dist/core/style-packs/index.js.map +1 -1
- package/dist/core/style-packs/packs.d.ts +3 -12
- package/dist/core/style-packs/packs.js +132 -173
- package/dist/core/style-packs/packs.js.map +1 -1
- package/dist/system-prompt.js +55 -78
- package/dist/system-prompt.js.map +1 -1
- package/dist/tools/ask-user.js +13 -74
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/bash.js +13 -78
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/checklist.d.ts +2 -10
- package/dist/tools/checklist.js +7 -39
- package/dist/tools/checklist.js.map +1 -1
- package/dist/tools/code-nav.js +7 -29
- package/dist/tools/code-nav.js.map +1 -1
- package/dist/tools/edit.d.ts +3 -9
- package/dist/tools/edit.js +92 -65
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/enter-plan.js +2 -7
- package/dist/tools/enter-plan.js.map +1 -1
- package/dist/tools/exit-plan.js +2 -3
- package/dist/tools/exit-plan.js.map +1 -1
- package/dist/tools/find.js +3 -4
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/grep.js +6 -18
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/ls.js +3 -3
- package/dist/tools/ls.js.map +1 -1
- package/dist/tools/prompt-hints.js +34 -47
- package/dist/tools/prompt-hints.js.map +1 -1
- package/dist/tools/read.js +8 -20
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/search-code.js +4 -12
- package/dist/tools/search-code.js.map +1 -1
- package/dist/tools/skill.js +13 -7
- package/dist/tools/skill.js.map +1 -1
- package/dist/tools/subagent-control.js +7 -22
- package/dist/tools/subagent-control.js.map +1 -1
- package/dist/tools/subagent.js +4 -7
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/task-output.js +4 -15
- package/dist/tools/task-output.js.map +1 -1
- package/dist/tools/task-send.js +5 -17
- package/dist/tools/task-send.js.map +1 -1
- package/dist/tools/task-stop.js +2 -2
- package/dist/tools/task-stop.js.map +1 -1
- package/dist/tools/tool-search.js +2 -7
- package/dist/tools/tool-search.js.map +1 -1
- package/dist/tools/tool-tiers.d.ts +17 -4
- package/dist/tools/tool-tiers.js +38 -15
- package/dist/tools/tool-tiers.js.map +1 -1
- package/dist/tools/web-fetch.js +7 -33
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/write.js +3 -4
- package/dist/tools/write.js.map +1 -1
- package/dist/ui/components/Footer.js +1 -2
- package/dist/ui/components/Footer.js.map +1 -1
- package/dist/utils/shared-poll.d.ts +37 -0
- package/dist/utils/shared-poll.js +104 -0
- package/dist/utils/shared-poll.js.map +1 -0
- package/package.json +7 -4
- package/dist/core/api-benchmark.d.ts +0 -63
- package/dist/core/api-benchmark.js +0 -381
- package/dist/core/api-benchmark.js.map +0 -1
- package/dist/core/bash-spawn-benchmark.d.ts +0 -1
- package/dist/core/bash-spawn-benchmark.js +0 -139
- package/dist/core/bash-spawn-benchmark.js.map +0 -1
- package/dist/core/cache-warm-benchmark.d.ts +0 -21
- package/dist/core/cache-warm-benchmark.js +0 -170
- package/dist/core/cache-warm-benchmark.js.map +0 -1
- package/dist/core/fast-apply-benchmark.d.ts +0 -25
- package/dist/core/fast-apply-benchmark.js +0 -284
- package/dist/core/fast-apply-benchmark.js.map +0 -1
- package/dist/core/hashline-edit-benchmark.d.ts +0 -88
- package/dist/core/hashline-edit-benchmark.js +0 -518
- package/dist/core/hashline-edit-benchmark.js.map +0 -1
- package/dist/core/semantic-search-benchmark.d.ts +0 -36
- package/dist/core/semantic-search-benchmark.js +0 -211
- package/dist/core/semantic-search-benchmark.js.map +0 -1
- package/dist/core/speed-benchmark.d.ts +0 -132
- package/dist/core/speed-benchmark.js +0 -410
- package/dist/core/speed-benchmark.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-markers.js","sourceRoot":"","sources":["../../../src/core/agent-session/transcript-markers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { AgentToolCallEndEvent, AgentToolCallStartEvent } from "@kenkaiiii/gg-agent";
|
|
2
|
+
import type { BackgroundProcess } from "../process-manager.js";
|
|
3
|
+
import { type VerificationGate } from "../verification-gate.js";
|
|
4
|
+
/** A tool call observed between its start and end events. */
|
|
5
|
+
export interface TrackedToolCall {
|
|
6
|
+
name: string;
|
|
7
|
+
args: Record<string, unknown>;
|
|
8
|
+
revision: number;
|
|
9
|
+
sourceSnapshot?: string | null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Host-observed verification evidence: which files this run mutated, which
|
|
13
|
+
* tool calls are in flight (with their pre-run workspace snapshot), and which
|
|
14
|
+
* background checks still owe an exit code. Feeds the session's
|
|
15
|
+
* {@link VerificationGate}; persistence stays with the session.
|
|
16
|
+
*/
|
|
17
|
+
export declare class VerificationTracker {
|
|
18
|
+
private readonly gate;
|
|
19
|
+
private readonly cwd;
|
|
20
|
+
private readonly listProcesses;
|
|
21
|
+
private readonly fileEditCounts;
|
|
22
|
+
private readonly toolCalls;
|
|
23
|
+
private readonly backgroundVerification;
|
|
24
|
+
constructor(gate: VerificationGate, cwd: string, listProcesses: () => BackgroundProcess[]);
|
|
25
|
+
recordFileMutated(relative: string): void;
|
|
26
|
+
/** Per-run reset of mutated files and in-flight calls. */
|
|
27
|
+
resetRun(): void;
|
|
28
|
+
/** Drop background checks whose process no longer exists. */
|
|
29
|
+
pruneBackground(liveProcessIds: ReadonlySet<string>): void;
|
|
30
|
+
clearBackground(): void;
|
|
31
|
+
getToolCall(toolCallId: string): TrackedToolCall | undefined;
|
|
32
|
+
/** Track a starting call. Resolves true when verification state must be persisted. */
|
|
33
|
+
recordToolCallStart(event: AgentToolCallStartEvent): Promise<boolean>;
|
|
34
|
+
/**
|
|
35
|
+
* Fold a finished call into the gate. Only host-observed successful
|
|
36
|
+
* mutations and trustworthy check results affect approval. The model's text
|
|
37
|
+
* is never evidence. Resolves true when verification state changed.
|
|
38
|
+
*/
|
|
39
|
+
recordToolCallEnd(event: AgentToolCallEndEvent, call: TrackedToolCall | undefined, planMode: boolean): Promise<boolean>;
|
|
40
|
+
/** Settle every background check whose process has exited. Resolves true if any changed. */
|
|
41
|
+
settleFinishedBackground(): Promise<boolean>;
|
|
42
|
+
/** In-flight or unconfirmed evidence, else the gate's own problem. */
|
|
43
|
+
verificationProblem(): string | null;
|
|
44
|
+
private recordFinishedBackgroundVerification;
|
|
45
|
+
private finishSnapshotVerification;
|
|
46
|
+
}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { autoBackgroundedId, REVIEW_REJECTED_BEFORE_START } from "../../tools/bash.js";
|
|
2
|
+
import { editTargetPaths } from "../../tools/edit-targets.js";
|
|
3
|
+
import { isCheckOwnFile, isCodeFilePath, isVerificationCommand, } from "../verification-gate.js";
|
|
4
|
+
import { classifyVerificationCommand } from "../verification-evidence.js";
|
|
5
|
+
import { captureVerificationSnapshot } from "../verification-snapshot.js";
|
|
6
|
+
/**
|
|
7
|
+
* Host-observed verification evidence: which files this run mutated, which
|
|
8
|
+
* tool calls are in flight (with their pre-run workspace snapshot), and which
|
|
9
|
+
* background checks still owe an exit code. Feeds the session's
|
|
10
|
+
* {@link VerificationGate}; persistence stays with the session.
|
|
11
|
+
*/
|
|
12
|
+
export class VerificationTracker {
|
|
13
|
+
gate;
|
|
14
|
+
cwd;
|
|
15
|
+
listProcesses;
|
|
16
|
+
fileEditCounts = new Map();
|
|
17
|
+
toolCalls = new Map();
|
|
18
|
+
backgroundVerification = new Map();
|
|
19
|
+
constructor(gate, cwd, listProcesses) {
|
|
20
|
+
this.gate = gate;
|
|
21
|
+
this.cwd = cwd;
|
|
22
|
+
this.listProcesses = listProcesses;
|
|
23
|
+
}
|
|
24
|
+
recordFileMutated(relative) {
|
|
25
|
+
this.fileEditCounts.set(relative, (this.fileEditCounts.get(relative) ?? 0) + 1);
|
|
26
|
+
}
|
|
27
|
+
/** Per-run reset of mutated files and in-flight calls. */
|
|
28
|
+
resetRun() {
|
|
29
|
+
this.fileEditCounts.clear();
|
|
30
|
+
this.toolCalls.clear();
|
|
31
|
+
}
|
|
32
|
+
/** Drop background checks whose process no longer exists. */
|
|
33
|
+
pruneBackground(liveProcessIds) {
|
|
34
|
+
for (const id of this.backgroundVerification.keys()) {
|
|
35
|
+
if (!liveProcessIds.has(id))
|
|
36
|
+
this.backgroundVerification.delete(id);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
clearBackground() {
|
|
40
|
+
this.backgroundVerification.clear();
|
|
41
|
+
}
|
|
42
|
+
getToolCall(toolCallId) {
|
|
43
|
+
return this.toolCalls.get(toolCallId);
|
|
44
|
+
}
|
|
45
|
+
/** Track a starting call. Resolves true when verification state must be persisted. */
|
|
46
|
+
async recordToolCallStart(event) {
|
|
47
|
+
const tracked = {
|
|
48
|
+
name: event.name,
|
|
49
|
+
args: event.args ?? {},
|
|
50
|
+
revision: this.gate.revision,
|
|
51
|
+
};
|
|
52
|
+
this.toolCalls.set(event.toolCallId, tracked);
|
|
53
|
+
const startClassification = event.name === "bash" && typeof event.args?.command === "string"
|
|
54
|
+
? classifyVerificationCommand(event.args.command)
|
|
55
|
+
: null;
|
|
56
|
+
if (startClassification &&
|
|
57
|
+
typeof event.args?.command === "string" &&
|
|
58
|
+
(isVerificationCommand(event.args.command) ||
|
|
59
|
+
startClassification.accepted ||
|
|
60
|
+
// Must match the tool_call_end predicate: a snapshot-eligible
|
|
61
|
+
// command that never captured a "before" snapshot is misread at
|
|
62
|
+
// the end as an uncomparable workspace and re-arms the gate.
|
|
63
|
+
startClassification.snapshotEligible === true)) {
|
|
64
|
+
// A check that can rewrite files (--fix, build scripts, emitters)
|
|
65
|
+
// invalidates earlier in-flight evidence AND marks the run as
|
|
66
|
+
// touched. A check that is merely UNRECOGNIZED (`make test`, `deno
|
|
67
|
+
// test`) rewrites nothing we can point to: bumping the revision for
|
|
68
|
+
// it poisoned the gate on green output and re-armed the hook into
|
|
69
|
+
// every later question turn.
|
|
70
|
+
this.gate.recordVerificationAttempt();
|
|
71
|
+
const classification = startClassification;
|
|
72
|
+
if (classification.snapshotEligible && event.args.persist !== true) {
|
|
73
|
+
const call = tracked;
|
|
74
|
+
call.sourceSnapshot = await captureVerificationSnapshot(this.cwd, [
|
|
75
|
+
...this.fileEditCounts.keys(),
|
|
76
|
+
]);
|
|
77
|
+
if (call.sourceSnapshot === null)
|
|
78
|
+
this.gate.requireFreshVerification(true);
|
|
79
|
+
}
|
|
80
|
+
else if ((classification.accepted && event.args.persist !== true) ||
|
|
81
|
+
(!classification.accepted && classification.mayMutate)) {
|
|
82
|
+
// Flag the workspace unknown only when tool_call_end can resolve
|
|
83
|
+
// it: a bounded check records pass/fail, a file-rewriting command
|
|
84
|
+
// bumps the revision. An unrecognized read-only check (`biome ci`)
|
|
85
|
+
// or a persistent-shell run records nothing at the end, so
|
|
86
|
+
// flagging it left verified work Unverified forever — and
|
|
87
|
+
// autopilot silently refused every later turn.
|
|
88
|
+
this.gate.requireFreshVerification(!classification.accepted && classification.mayMutate);
|
|
89
|
+
}
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Fold a finished call into the gate. Only host-observed successful
|
|
96
|
+
* mutations and trustworthy check results affect approval. The model's text
|
|
97
|
+
* is never evidence. Resolves true when verification state changed.
|
|
98
|
+
*/
|
|
99
|
+
async recordToolCallEnd(event, call, planMode) {
|
|
100
|
+
const name = call?.name ?? "";
|
|
101
|
+
const args = call?.args;
|
|
102
|
+
let verificationChanged = false;
|
|
103
|
+
// In plan mode write/edit can only touch `.gg/plans/*.md`; a code-file
|
|
104
|
+
// write there was refused (refusals return text, not isError). Counting
|
|
105
|
+
// it as a change left "unverified" work that blocked plan approval.
|
|
106
|
+
if (!event.isError && args && !planMode) {
|
|
107
|
+
if (name === "edit" || name === "write") {
|
|
108
|
+
// Check-owning files (tsconfig.json, pytest.ini, vitest.config.ts …)
|
|
109
|
+
// are tracked even when they are not source code: editing one
|
|
110
|
+
// invalidates earlier check results. A multi-file edit records every file.
|
|
111
|
+
for (const filePath of editTargetPaths(args)) {
|
|
112
|
+
if (isCodeFilePath(filePath) || isCheckOwnFile(filePath)) {
|
|
113
|
+
this.gate.recordMutation(filePath);
|
|
114
|
+
verificationChanged = true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (args && call && name === "bash") {
|
|
120
|
+
const command = typeof args.command === "string" ? args.command : "";
|
|
121
|
+
const classification = classifyVerificationCommand(command);
|
|
122
|
+
if (args.review === true && event.result === REVIEW_REJECTED_BEFORE_START) {
|
|
123
|
+
// The core tool rejected its arguments BEFORE spawning. Never mint
|
|
124
|
+
// a pass, or poison the failed-check ledger with an unexecuted check.
|
|
125
|
+
// A child's output cannot match: bash always prefixes it with Exit code.
|
|
126
|
+
this.gate.recordRejectedCheck(command, REVIEW_REJECTED_BEFORE_START);
|
|
127
|
+
delete call.sourceSnapshot;
|
|
128
|
+
verificationChanged = true;
|
|
129
|
+
}
|
|
130
|
+
else if (classification.accepted || classification.snapshotEligible) {
|
|
131
|
+
// A foreground check that outlived the default budget was moved to
|
|
132
|
+
// the background, not failed: track it to its real exit the same way.
|
|
133
|
+
const autoBackgroundId = event.isError ? undefined : autoBackgroundedId(event.result);
|
|
134
|
+
if ((autoBackgroundId !== undefined || args.run_in_background === true) &&
|
|
135
|
+
!event.isError &&
|
|
136
|
+
args.persist !== true) {
|
|
137
|
+
const id = autoBackgroundId ?? /^ID:\s*(\S+)/m.exec(event.result)?.[1];
|
|
138
|
+
// No parseable ID means the check cannot be tracked to a real exit
|
|
139
|
+
// code — no evidence either way. Recording a FAILURE here made
|
|
140
|
+
// every later green run of a different spelling look owed.
|
|
141
|
+
if (id)
|
|
142
|
+
this.backgroundVerification.set(id, {
|
|
143
|
+
revision: call.revision,
|
|
144
|
+
command,
|
|
145
|
+
...(classification.snapshotEligible
|
|
146
|
+
? { sourceSnapshot: call.sourceSnapshot ?? null }
|
|
147
|
+
: {}),
|
|
148
|
+
});
|
|
149
|
+
else if (classification.snapshotEligible)
|
|
150
|
+
this.gate.requireFreshVerification(true);
|
|
151
|
+
}
|
|
152
|
+
else if (args.persist === true) {
|
|
153
|
+
// Persistent-shell checks are not bounded evidence (steering can
|
|
154
|
+
// interleave): neither a pass nor a failure. A recorded failure
|
|
155
|
+
// here blocked approval for sessions that prefer the shell.
|
|
156
|
+
}
|
|
157
|
+
else if (classification.snapshotEligible) {
|
|
158
|
+
await this.finishSnapshotVerification({ command, revision: call.revision, sourceSnapshot: call.sourceSnapshot ?? null }, !event.isError && /^Exit code:\s*0(?:\s|$)/i.test(event.result.trim()));
|
|
159
|
+
verificationChanged = true;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
if (!event.isError && /^Exit code:\s*0(?:\s|$)/i.test(event.result.trim())) {
|
|
163
|
+
this.gate.recordVerification(call.revision, command);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
this.gate.recordFailedVerification(command, call.revision);
|
|
167
|
+
}
|
|
168
|
+
verificationChanged = true;
|
|
169
|
+
}
|
|
170
|
+
delete call.sourceSnapshot;
|
|
171
|
+
}
|
|
172
|
+
else if (classification.candidate) {
|
|
173
|
+
// Green but untrusted: remember WHY so the demand can tell the
|
|
174
|
+
// agent which command shape actually clears the gate.
|
|
175
|
+
this.gate.recordRejectedCheck(command, classification.reason);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (!event.isError && args && name === "task_output" && typeof args.id === "string") {
|
|
179
|
+
verificationChanged =
|
|
180
|
+
(await this.recordFinishedBackgroundVerification(args.id)) || verificationChanged;
|
|
181
|
+
}
|
|
182
|
+
return verificationChanged;
|
|
183
|
+
}
|
|
184
|
+
/** Settle every background check whose process has exited. Resolves true if any changed. */
|
|
185
|
+
async settleFinishedBackground() {
|
|
186
|
+
let backgroundChanged = false;
|
|
187
|
+
for (const id of this.backgroundVerification.keys()) {
|
|
188
|
+
backgroundChanged =
|
|
189
|
+
(await this.recordFinishedBackgroundVerification(id)) || backgroundChanged;
|
|
190
|
+
}
|
|
191
|
+
return backgroundChanged;
|
|
192
|
+
}
|
|
193
|
+
/** In-flight or unconfirmed evidence, else the gate's own problem. */
|
|
194
|
+
verificationProblem() {
|
|
195
|
+
if ([...this.toolCalls.values()].some((call) => call.sourceSnapshot !== undefined)) {
|
|
196
|
+
return "Unverified: a build is still running or its workspace comparison is pending.";
|
|
197
|
+
}
|
|
198
|
+
return (this.gate.verificationProblem() ??
|
|
199
|
+
(this.backgroundVerification.size > 0
|
|
200
|
+
? "Unverified: a background check is still running or its result has not been confirmed."
|
|
201
|
+
: null));
|
|
202
|
+
}
|
|
203
|
+
async recordFinishedBackgroundVerification(id) {
|
|
204
|
+
const started = this.backgroundVerification.get(id);
|
|
205
|
+
const proc = this.listProcesses().find((entry) => entry.id === id);
|
|
206
|
+
if (!started || !proc || proc.exitCode === null)
|
|
207
|
+
return false;
|
|
208
|
+
if (started.sourceSnapshot !== undefined) {
|
|
209
|
+
await this.finishSnapshotVerification(started, proc.exitCode === 0);
|
|
210
|
+
}
|
|
211
|
+
else if (proc.exitCode === 0) {
|
|
212
|
+
this.gate.recordVerification(started.revision, started.command);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
this.gate.recordFailedVerification(started.command, started.revision);
|
|
216
|
+
}
|
|
217
|
+
this.backgroundVerification.delete(id);
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
async finishSnapshotVerification(check, passed) {
|
|
221
|
+
const after = check.sourceSnapshot
|
|
222
|
+
? await captureVerificationSnapshot(this.cwd, [...this.fileEditCounts.keys()])
|
|
223
|
+
: null;
|
|
224
|
+
if (after === null || after !== check.sourceSnapshot) {
|
|
225
|
+
this.gate.requireFreshVerification(true);
|
|
226
|
+
this.gate.recordRejectedCheck(check.command, after === null
|
|
227
|
+
? "Workspace inputs could not be compared; run a read-only check after the command"
|
|
228
|
+
: "Command changed workspace inputs; run checks against the changed source");
|
|
229
|
+
if (!passed)
|
|
230
|
+
this.gate.recordFailedVerification(check.command);
|
|
231
|
+
}
|
|
232
|
+
else if (passed) {
|
|
233
|
+
const classification = classifyVerificationCommand(check.command);
|
|
234
|
+
if (classification.snapshotPreserveOnly) {
|
|
235
|
+
this.gate.recordRejectedCheck(check.command, classification.reason);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
this.gate.recordVerification(check.revision, check.command);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
this.gate.recordFailedVerification(check.command, check.revision);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=verification-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification-tracker.js","sourceRoot":"","sources":["../../../src/core/agent-session/verification-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import { type ContextLimits } from "./context-limits.js";
|
|
|
11
11
|
import { type ImportForeignTranscriptResult } from "./foreign-session-import.js";
|
|
12
12
|
import { type CacheExpiryStatus } from "./cache-expiry.js";
|
|
13
13
|
import { type EnhanceResult } from "../utils/prompt-enhancer.js";
|
|
14
|
-
import {
|
|
14
|
+
import type { VerificationEvidence } from "./verification-evidence.js";
|
|
15
15
|
/** A chat attachment (image / video / other file) prepared for the model. The
|
|
16
16
|
* raw base64 `data` rides native blocks; `path` (when persisted to disk) lets
|
|
17
17
|
* the agent's tools open the file directly. */
|
|
@@ -193,17 +193,7 @@ export interface AgentSessionOptions {
|
|
|
193
193
|
* nothing to review. See plan-submission-gate.ts. */
|
|
194
194
|
planSubmissionGate?: boolean;
|
|
195
195
|
}
|
|
196
|
-
|
|
197
|
-
export declare function resolveSessionToolResultCharLimit(model: string, provider: Provider, accountId?: string): number;
|
|
198
|
-
/**
|
|
199
|
-
* Aggregate budget for ALL tool results produced in one assistant turn.
|
|
200
|
-
* Individual results are already capped, but wide parallel fan-outs (GPT-5.6's
|
|
201
|
-
* signature behavior) were observed injecting 100k+ uncached tokens in a single
|
|
202
|
-
* turn. ~15% of the context window in chars (1 token ≈ 3.5 chars), floored at
|
|
203
|
-
* 100KB so small windows still fit two full-size reads, ceilinged at 240KB so
|
|
204
|
-
* 1M-context models don't waive the budget entirely.
|
|
205
|
-
*/
|
|
206
|
-
export declare function resolveSessionTurnToolResultCharLimit(model: string, provider: Provider, accountId?: string): number;
|
|
196
|
+
export { resolveSessionToolResultCharLimit, resolveSessionTurnToolResultCharLimit, } from "./agent-session/helpers.js";
|
|
207
197
|
export interface AgentSessionState {
|
|
208
198
|
provider: Provider;
|
|
209
199
|
model: string;
|
|
@@ -225,10 +215,7 @@ export declare class AgentSession {
|
|
|
225
215
|
private sessionManager;
|
|
226
216
|
private extensionLoader;
|
|
227
217
|
private messages;
|
|
228
|
-
private
|
|
229
|
-
private autopilotMarkers;
|
|
230
|
-
private appMarkers;
|
|
231
|
-
private turnMetrics;
|
|
218
|
+
private readonly markers;
|
|
232
219
|
private readonly cacheDiagnostics;
|
|
233
220
|
/** Internal-only (GG_INTERNAL): live per-session cost/reliability recorder.
|
|
234
221
|
* Absent entirely in public builds — see core/internal-diagnostics.ts. */
|
|
@@ -244,25 +231,8 @@ export declare class AgentSession {
|
|
|
244
231
|
private recordBashReads;
|
|
245
232
|
private skills;
|
|
246
233
|
private cacheKeyLogged;
|
|
247
|
-
private
|
|
248
|
-
private hookText;
|
|
249
|
-
private hookConsecutiveFailures;
|
|
250
|
-
private hookRepeatedNoProgressCalls;
|
|
251
|
-
private hookProgressTracker;
|
|
252
|
-
private hookCycleDetector;
|
|
253
|
-
private hookCyclicPattern;
|
|
254
|
-
private hookFileEditCounts;
|
|
255
|
-
private hookToolCalls;
|
|
256
|
-
private backgroundVerification;
|
|
257
|
-
/** 0 = none; 1 = first nudge sent; 2 = final stop-and-report injected. */
|
|
258
|
-
private loopBreakInjected;
|
|
234
|
+
private readonly loopMonitor;
|
|
259
235
|
private regroundingInjected;
|
|
260
|
-
/** Recent tool-call digests for the semantic loop judge — bounded ring. */
|
|
261
|
-
private hookRecentCalls;
|
|
262
|
-
/** LLM-judged loop detection state. `verdict` holds a LOOP verdict awaiting
|
|
263
|
-
* injection at the next steering poll; judge failures fail open (no
|
|
264
|
-
* injection) and still consume budget + cooldown. */
|
|
265
|
-
private semanticLoop;
|
|
266
236
|
/**
|
|
267
237
|
* The environment as the cached system prompt currently describes it.
|
|
268
238
|
* Re-recorded on every prompt build, so a rebuild (e.g. `/add-dir`) needs no
|
|
@@ -278,6 +248,8 @@ export declare class AgentSession {
|
|
|
278
248
|
/** Verification evidence: code edited this run, and what has proved it since.
|
|
279
249
|
* Passive tracking only — it feeds run status and autopilot, never a turn. */
|
|
280
250
|
private readonly verificationGate;
|
|
251
|
+
/** Host-observed evidence (edited files, in-flight and background checks) feeding the gate. */
|
|
252
|
+
private readonly verificationTracker;
|
|
281
253
|
/** Mirror of the last `hook_armed` value, so the event fires only on an edge. */
|
|
282
254
|
private preFinalArmed;
|
|
283
255
|
private compactionOccurred;
|
|
@@ -319,9 +291,8 @@ export declare class AgentSession {
|
|
|
319
291
|
private readonly notifications;
|
|
320
292
|
private managerAbortSignal?;
|
|
321
293
|
private readonly managerAbortHandler;
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
private mcpCatalog?;
|
|
294
|
+
/** MCP client, deferred tool_search catalog and cached-stub reconcile state. */
|
|
295
|
+
private readonly mcp;
|
|
325
296
|
/** Resolved prompt-injection byte budgets (contextLimits setting). */
|
|
326
297
|
private contextLimits;
|
|
327
298
|
/**
|
|
@@ -330,11 +301,6 @@ export declare class AgentSession {
|
|
|
330
301
|
* can discover and promote them; a promoted name drops out of this list.
|
|
331
302
|
*/
|
|
332
303
|
private deferredBuiltinToolNames;
|
|
333
|
-
/** Live (connected) MCP tools by name — the reconcile target for cached stubs. */
|
|
334
|
-
private liveMcpTools;
|
|
335
|
-
/** Server name for each cached-only tool, so a stub knows what to wait on. */
|
|
336
|
-
private cachedMcpToolServers;
|
|
337
|
-
private readonly mcpCatalogCache;
|
|
338
304
|
private provider;
|
|
339
305
|
private model;
|
|
340
306
|
private cwd;
|
|
@@ -443,43 +409,27 @@ export declare class AgentSession {
|
|
|
443
409
|
* pushed eagerly when the user opted out.
|
|
444
410
|
* Allow-listed sessions (Ken) always get the eager path — their fixed tool
|
|
445
411
|
* expectations predate the catalog, and tool_search isn't allow-listed.
|
|
446
|
-
* Promotion pushes onto the live `this.tools` array the running agent loop
|
|
447
|
-
* re-reads every turn, so promoted tools are callable on the next step.
|
|
448
412
|
*/
|
|
449
413
|
private addMcpTools;
|
|
450
414
|
/**
|
|
451
|
-
*
|
|
452
|
-
*
|
|
453
|
-
*
|
|
454
|
-
*
|
|
455
|
-
*
|
|
456
|
-
*
|
|
457
|
-
*
|
|
458
|
-
|
|
459
|
-
private ensureToolSearchTool;
|
|
460
|
-
/**
|
|
461
|
-
* `wait_agent` is deferred, yet nearly every `spawn_agent` is followed by it,
|
|
462
|
-
* so the model spent a whole turn on `tool_search` just to load it (bench 41:
|
|
463
|
-
* ~6 s per fan-out). Promote it as soon as a spawn succeeds instead: the tool
|
|
464
|
-
* list grows exactly as it would after that `tool_search`, one turn earlier,
|
|
465
|
-
* and sessions that never spawn keep the smaller prefix.
|
|
415
|
+
* Deferred follow-up tools whose need is certain once a trigger succeeds.
|
|
416
|
+
* `wait_agent` follows nearly every `spawn_agent`, and loading it through
|
|
417
|
+
* `tool_search` cost a whole turn (bench 41: ~6 s per fan-out). Likewise a
|
|
418
|
+
* background `bash` is always followed by `task_output` (and sometimes
|
|
419
|
+
* `task_send`/`task_stop`). Promote them as soon as the trigger succeeds: the
|
|
420
|
+
* tool list grows exactly as it would after that `tool_search`, one turn
|
|
421
|
+
* earlier, and sessions that never trigger keep the smaller prefix.
|
|
422
|
+
* Call before tier partitioning so a deferred trigger is wrapped too.
|
|
466
423
|
*/
|
|
467
|
-
private
|
|
468
|
-
/** Append
|
|
469
|
-
private
|
|
470
|
-
|
|
471
|
-
private replaceLivePromotedTools;
|
|
424
|
+
private promoteFollowUpTools;
|
|
425
|
+
/** Append a deferred built-in to the live tool list (append-only). */
|
|
426
|
+
private promoteDeferredBuiltin;
|
|
427
|
+
private wrapToPromote;
|
|
472
428
|
/**
|
|
473
429
|
* Publish cached tool definitions into the deferred catalog so `tool_search`
|
|
474
|
-
* answers correctly on turn 1
|
|
475
|
-
* description and input schema; calling it waits for the live connection and
|
|
476
|
-
* then dispatches against the real client, or returns a clear error when that
|
|
477
|
-
* server ultimately failed. Live tools replace stubs on connect.
|
|
430
|
+
* answers correctly on turn 1 (see {@link McpToolRegistry.seedFromCache}).
|
|
478
431
|
*/
|
|
479
432
|
private seedMcpCatalogFromCache;
|
|
480
|
-
/** Catalog-only registration for cached stubs — never marks them live. */
|
|
481
|
-
private addCachedMcpTools;
|
|
482
|
-
private buildCachedMcpTool;
|
|
483
433
|
/**
|
|
484
434
|
* Resolve a `/name [args]` input to the prompt template it expands into, or
|
|
485
435
|
* null when it isn't a prompt-template command for THIS session (an ordinary
|
|
@@ -832,7 +782,6 @@ export declare class AgentSession {
|
|
|
832
782
|
getMessages(): Message[];
|
|
833
783
|
getTurnMetrics(): TurnMetricPayload[];
|
|
834
784
|
private persistTurnMetric;
|
|
835
|
-
private rePersistTurnMetrics;
|
|
836
785
|
/** Ken Kai (mentor) turns recorded against this session, in record order. Used
|
|
837
786
|
* by the host to interleave Ken's advisory exchanges back into the transcript
|
|
838
787
|
* on resume. Never part of the LLM message history. */
|
|
@@ -863,11 +812,6 @@ export declare class AgentSession {
|
|
|
863
812
|
* appendEntry's own handling.
|
|
864
813
|
*/
|
|
865
814
|
persistKenTurn(question: string, reply: string): Promise<void>;
|
|
866
|
-
/** Re-append the in-memory Ken turns to the current session file. Called after
|
|
867
|
-
* a continuation/compaction file is created so Ken's advisory history isn't
|
|
868
|
-
* lost when the session is rewritten (those rewrites only re-persist
|
|
869
|
-
* messages). Each turn keeps its original `afterMessageCount` anchor. */
|
|
870
|
-
private rePersistKenTurns;
|
|
871
815
|
/**
|
|
872
816
|
* Record one autopilot verdict marker (prompted / done / human / capped)
|
|
873
817
|
* against this build session. Kept in memory for the live transcript and
|
|
@@ -876,7 +820,6 @@ export declare class AgentSession {
|
|
|
876
820
|
* instead of dropping the marker or falling back to a raw verdict string.
|
|
877
821
|
* No-op persistence for transient sessions (kept in memory only).
|
|
878
822
|
*/
|
|
879
|
-
private recordFinishedBackgroundVerification;
|
|
880
823
|
getVerificationEvidence(): VerificationEvidence[];
|
|
881
824
|
/** Current request activity, separate from persistent workspace verification debt. */
|
|
882
825
|
getRunVerificationActivity(): {
|
|
@@ -884,7 +827,6 @@ export declare class AgentSession {
|
|
|
884
827
|
checked: boolean;
|
|
885
828
|
evidence: VerificationEvidence[];
|
|
886
829
|
};
|
|
887
|
-
private finishSnapshotVerification;
|
|
888
830
|
getVerificationProblem(): string | null;
|
|
889
831
|
private persistCompletionReviewState;
|
|
890
832
|
private persistVerificationState;
|
|
@@ -892,10 +834,6 @@ export declare class AgentSession {
|
|
|
892
834
|
reason?: string;
|
|
893
835
|
body?: string;
|
|
894
836
|
}): Promise<void>;
|
|
895
|
-
/** Re-append the in-memory autopilot markers to the current session file.
|
|
896
|
-
* Mirrors `rePersistKenTurns` — called after a continuation/compaction file
|
|
897
|
-
* is created so the auto-review history survives the rewrite. */
|
|
898
|
-
private rePersistAutopilotMarkers;
|
|
899
837
|
/** App transcript markers recorded against this session, in record order.
|
|
900
838
|
* Used by the host to interleave display-only rows (plan banner, task
|
|
901
839
|
* header, errors, user-bubble hints) back into the transcript on resume. */
|
|
@@ -920,10 +858,6 @@ export declare class AgentSession {
|
|
|
920
858
|
persistRunStarted(generation: number): Promise<void>;
|
|
921
859
|
/** Close the run journal. Its absence is what marks a run as crashed. */
|
|
922
860
|
persistRunFinished(generation: number, outcome: RunOutcome): Promise<void>;
|
|
923
|
-
/** Re-append the in-memory app markers to the current session file. Mirrors
|
|
924
|
-
* `rePersistKenTurns` — called after a continuation/compaction file is
|
|
925
|
-
* created so display-only rows survive the rewrite. */
|
|
926
|
-
private rePersistAppMarkers;
|
|
927
861
|
/**
|
|
928
862
|
* Rewrite a draft prompt into a tighter, terminology-correct version using
|
|
929
863
|
* the ACTIVE provider/model. A stateless one-off LLM call (no agent loop, no
|