@pentoshi/clai 5.1.4 → 5.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/README.md +2 -0
- package/dist/agent/context/compaction-recent-history.js +1 -3
- package/dist/agent/context/compaction-recent-history.js.map +1 -1
- package/dist/agent/goal/goal-evaluator.d.ts +22 -0
- package/dist/agent/goal/goal-evaluator.js +146 -0
- package/dist/agent/goal/goal-evaluator.js.map +1 -0
- package/dist/agent/goal/goal-failure.d.ts +7 -0
- package/dist/agent/goal/goal-failure.js +41 -0
- package/dist/agent/goal/goal-failure.js.map +1 -0
- package/dist/agent/goal/goal-prompts.d.ts +14 -0
- package/dist/agent/goal/goal-prompts.js +107 -0
- package/dist/agent/goal/goal-prompts.js.map +1 -0
- package/dist/agent/goal/goal-verdict.d.ts +7 -0
- package/dist/agent/goal/goal-verdict.js +99 -0
- package/dist/agent/goal/goal-verdict.js.map +1 -0
- package/dist/agent/runner.js +6 -0
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/tool-output-formatting.d.ts +1 -1
- package/dist/agent/tool-output-formatting.js +8 -5
- package/dist/agent/tool-output-formatting.js.map +1 -1
- package/dist/agent/turn/compaction-coordinator.js +2 -3
- package/dist/agent/turn/compaction-coordinator.js.map +1 -1
- package/dist/agent/turn/finalizer.d.ts +1 -0
- package/dist/agent/turn/finalizer.js +2 -0
- package/dist/agent/turn/finalizer.js.map +1 -1
- package/dist/agent/turn/responder-claims.d.ts +3 -0
- package/dist/agent/turn/responder-claims.js +35 -0
- package/dist/agent/turn/responder-claims.js.map +1 -1
- package/dist/agent/turn/responder-read-tool.js +4 -10
- package/dist/agent/turn/responder-read-tool.js.map +1 -1
- package/dist/app/adapters/current-store-adapter.js +3 -0
- package/dist/app/adapters/current-store-adapter.js.map +1 -1
- package/dist/app/commands/catalog.js +5 -0
- package/dist/app/commands/catalog.js.map +1 -1
- package/dist/app/controllers/cancel-coordinator.d.ts +3 -0
- package/dist/app/controllers/cancel-coordinator.js +8 -3
- package/dist/app/controllers/cancel-coordinator.js.map +1 -1
- package/dist/app/controllers/goal-types.d.ts +47 -0
- package/dist/app/controllers/goal-types.js +2 -0
- package/dist/app/controllers/goal-types.js.map +1 -0
- package/dist/app/controllers/session-compact-helper.d.ts +1 -0
- package/dist/app/controllers/session-compact-helper.js +24 -1
- package/dist/app/controllers/session-compact-helper.js.map +1 -1
- package/dist/app/controllers/session-controller.d.ts +16 -0
- package/dist/app/controllers/session-controller.js +157 -8
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/app/controllers/session-goal.d.ts +93 -0
- package/dist/app/controllers/session-goal.js +556 -0
- package/dist/app/controllers/session-goal.js.map +1 -0
- package/dist/app/controllers/session-responder.d.ts +1 -0
- package/dist/app/controllers/session-responder.js +7 -4
- package/dist/app/controllers/session-responder.js.map +1 -1
- package/dist/app/events/app-event.d.ts +2 -0
- package/dist/app/events/app-event.js.map +1 -1
- package/dist/app/ports/persistence-port.d.ts +13 -0
- package/dist/classic/app/ClassicApp.js +4 -0
- package/dist/classic/app/ClassicApp.js.map +1 -1
- package/dist/classic/app/paint-pacing.js +1 -5
- package/dist/classic/app/paint-pacing.js.map +1 -1
- package/dist/classic/app/wiring-interactions.js +1 -0
- package/dist/classic/app/wiring-interactions.js.map +1 -1
- package/dist/classic/blocks/notice-lines.js +17 -3
- package/dist/classic/blocks/notice-lines.js.map +1 -1
- package/dist/classic/chrome/Chrome.d.ts +1 -1
- package/dist/classic/chrome/Chrome.js +1 -0
- package/dist/classic/chrome/Chrome.js.map +1 -1
- package/dist/classic/chrome/GoalStrip.d.ts +3 -0
- package/dist/classic/chrome/GoalStrip.js +9 -0
- package/dist/classic/chrome/GoalStrip.js.map +1 -0
- package/dist/classic/chrome/goal-row.d.ts +11 -0
- package/dist/classic/chrome/goal-row.js +24 -0
- package/dist/classic/chrome/goal-row.js.map +1 -0
- package/dist/classic/chrome/row-budget.d.ts +2 -0
- package/dist/classic/chrome/row-budget.js +4 -1
- package/dist/classic/chrome/row-budget.js.map +1 -1
- package/dist/llm/capability/vision-patterns.js +7 -1
- package/dist/llm/capability/vision-patterns.js.map +1 -1
- package/dist/llm/provider-info-text.js +7 -2
- package/dist/llm/provider-info-text.js.map +1 -1
- package/dist/llm/river-docs.d.ts +18 -0
- package/dist/llm/river-docs.js +170 -0
- package/dist/llm/river-docs.js.map +1 -0
- package/dist/llm/river-models.d.ts +2 -1
- package/dist/llm/river-models.js +78 -13
- package/dist/llm/river-models.js.map +1 -1
- package/dist/llm/river.js +9 -5
- package/dist/llm/river.js.map +1 -1
- package/dist/llm/wire/effort-preflight.js +1 -1
- package/dist/llm/wire/effort-preflight.js.map +1 -1
- package/dist/os/sgr-state.d.ts +3 -0
- package/dist/os/sgr-state.js +80 -0
- package/dist/os/sgr-state.js.map +1 -0
- package/dist/os/terminal-sgr-compactor.d.ts +17 -0
- package/dist/os/terminal-sgr-compactor.js +164 -0
- package/dist/os/terminal-sgr-compactor.js.map +1 -0
- package/dist/session-runtime/client.js +7 -2
- package/dist/session-runtime/client.js.map +1 -1
- package/dist/store/session-goal.d.ts +4 -0
- package/dist/store/session-goal.js +75 -0
- package/dist/store/session-goal.js.map +1 -0
- package/dist/tui-v2/app/App.js +2 -1
- package/dist/tui-v2/app/App.js.map +1 -1
- package/dist/tui-v2/bootstrap/patch-opentui-frame-loop.d.ts +1 -0
- package/dist/tui-v2/bootstrap/patch-opentui-frame-loop.js +17 -0
- package/dist/tui-v2/bootstrap/patch-opentui-frame-loop.js.map +1 -0
- package/dist/tui-v2/bootstrap/runtime-view.js +2 -0
- package/dist/tui-v2/bootstrap/runtime-view.js.map +1 -1
- package/dist/tui-v2/bootstrap/start-tui-v2.js +2 -0
- package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
- package/dist/tui-v2/components/goal/goal-panel.d.ts +11 -0
- package/dist/tui-v2/components/goal/goal-panel.js +54 -0
- package/dist/tui-v2/components/goal/goal-panel.js.map +1 -0
- package/dist/tui-v2/components/transcript/notice-row.js +11 -9
- package/dist/tui-v2/components/transcript/notice-row.js.map +1 -1
- package/dist/tui-v2/components/transcript/tool-card.js +34 -10
- package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-scroll-port.d.ts +8 -2
- package/dist/tui-v2/components/transcript/transcript-scroll-port.js +41 -19
- package/dist/tui-v2/components/transcript/transcript-scroll-port.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-view.js +11 -8
- package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/ui-core/commands/command-handlers.js +2 -0
- package/dist/ui-core/commands/command-handlers.js.map +1 -1
- package/dist/ui-core/commands/goal-commands.d.ts +3 -0
- package/dist/ui-core/commands/goal-commands.js +48 -0
- package/dist/ui-core/commands/goal-commands.js.map +1 -0
- package/dist/ui-core/commands/pickers/search-reasoning.js +6 -2
- package/dist/ui-core/commands/pickers/search-reasoning.js.map +1 -1
- package/dist/ui-core/motion/wheel-scroll.d.ts +5 -2
- package/dist/ui-core/motion/wheel-scroll.js +17 -13
- package/dist/ui-core/motion/wheel-scroll.js.map +1 -1
- package/dist/ui-core/rendering/format-help.js +1 -1
- package/dist/ui-core/rendering/format-help.js.map +1 -1
- package/dist/ui-core/rendering/goal-format.d.ts +20 -0
- package/dist/ui-core/rendering/goal-format.js +136 -0
- package/dist/ui-core/rendering/goal-format.js.map +1 -0
- package/dist/ui-core/rendering/open-tool-output.js +18 -8
- package/dist/ui-core/rendering/open-tool-output.js.map +1 -1
- package/dist/ui-core/rendering/tool-presenter.d.ts +8 -2
- package/dist/ui-core/rendering/tool-presenter.js +40 -18
- package/dist/ui-core/rendering/tool-presenter.js.map +1 -1
- package/dist/ui-core/state/transcript/apply-app-event.js +8 -2
- package/dist/ui-core/state/transcript/apply-app-event.js.map +1 -1
- package/dist/ui-core/state/transcript-types.d.ts +1 -0
- package/dist/ui-core/state/transcript-types.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export type GoalStatus = "active" | "paused";
|
|
2
|
+
export type GoalPhase = "evaluating" | "waiting" | "retrying";
|
|
3
|
+
export interface GoalView {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly objective: string;
|
|
6
|
+
readonly status: GoalStatus;
|
|
7
|
+
readonly phase?: GoalPhase | undefined;
|
|
8
|
+
readonly startedAt: number;
|
|
9
|
+
readonly turns: number;
|
|
10
|
+
readonly lastReason?: string | undefined;
|
|
11
|
+
readonly pauseReason?: string | undefined;
|
|
12
|
+
readonly resumeOnPrompt?: boolean | undefined;
|
|
13
|
+
readonly retryAt?: number | undefined;
|
|
14
|
+
readonly waitingFor?: readonly string[] | undefined;
|
|
15
|
+
}
|
|
16
|
+
export type GoalReportStatus = GoalStatus | "achieved";
|
|
17
|
+
export interface GoalReport {
|
|
18
|
+
readonly objective: string;
|
|
19
|
+
readonly status: GoalReportStatus;
|
|
20
|
+
readonly phase?: GoalPhase | undefined;
|
|
21
|
+
readonly durationMs: number;
|
|
22
|
+
readonly turns: number;
|
|
23
|
+
readonly tokens: number;
|
|
24
|
+
readonly lastReason?: string | undefined;
|
|
25
|
+
readonly pauseReason?: string | undefined;
|
|
26
|
+
readonly resumeOnPrompt?: boolean | undefined;
|
|
27
|
+
}
|
|
28
|
+
export type GoalUpdateKind = "continuing" | "achieved" | "failed" | "paused" | "resumed" | "cleared" | "replaced" | "unrecoverable" | "retrying" | "waiting";
|
|
29
|
+
export interface GoalUpdate {
|
|
30
|
+
readonly kind: GoalUpdateKind;
|
|
31
|
+
readonly objective: string;
|
|
32
|
+
readonly reason?: string | undefined;
|
|
33
|
+
readonly turns?: number | undefined;
|
|
34
|
+
readonly durationMs?: number | undefined;
|
|
35
|
+
readonly tokens?: number | undefined;
|
|
36
|
+
readonly delayMs?: number | undefined;
|
|
37
|
+
readonly resumeOnPrompt?: boolean | undefined;
|
|
38
|
+
}
|
|
39
|
+
export type GoalSetResult = {
|
|
40
|
+
readonly ok: true;
|
|
41
|
+
readonly objective: string;
|
|
42
|
+
readonly replaced?: string | undefined;
|
|
43
|
+
readonly deferred: boolean;
|
|
44
|
+
} | {
|
|
45
|
+
readonly ok: false;
|
|
46
|
+
readonly error: string;
|
|
47
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goal-types.js","sourceRoot":"","sources":["../../../src/app/controllers/goal-types.ts"],"names":[],"mappings":""}
|
|
@@ -46,5 +46,6 @@ export interface ReportedCompaction {
|
|
|
46
46
|
readonly measurement: "provider-reported" | "estimated";
|
|
47
47
|
readonly scope: "message-history" | "assembled-request";
|
|
48
48
|
}
|
|
49
|
+
export declare function retainedRequestOverheadTokens(request: SuccessfulRequestSnapshot | undefined, history: readonly ChatMessage[]): number | undefined;
|
|
49
50
|
export declare function runSessionCompaction(options: RunSessionCompactionOptions): Promise<CompactResult>;
|
|
50
51
|
export {};
|
|
@@ -3,6 +3,8 @@ import { executeCompactionSummary, isCompactionOverLimitError, planCompactionRep
|
|
|
3
3
|
import { compactMessagesWithSummary, estimateMessagesTokens, isCompactionMemoryMessage, } from "../../agent/context-manager.js";
|
|
4
4
|
import { projectToolHistory } from "../../agent/tool-history.js";
|
|
5
5
|
import { buildContextBreakdown } from "../../agent/context-breakdown.js";
|
|
6
|
+
import { estimateToolSchemaTokens } from "../../agent/request-accounting.js";
|
|
7
|
+
import { isRequestContextSystemMessage } from "../../llm/system-messages.js";
|
|
6
8
|
import { calibratedRequestTokens } from "../../llm/token-estimate-calibration.js";
|
|
7
9
|
import { effectiveContextWindowTokens } from "../../llm/context-windows.js";
|
|
8
10
|
import { contextAttemptFromOperationUsage } from "../../llm/context-snapshot.js";
|
|
@@ -36,6 +38,18 @@ export async function summarizeForSessionCompact(prompt, opts) {
|
|
|
36
38
|
onUsage: opts.onUsage,
|
|
37
39
|
});
|
|
38
40
|
}
|
|
41
|
+
export function retainedRequestOverheadTokens(request, history) {
|
|
42
|
+
if (!request)
|
|
43
|
+
return undefined;
|
|
44
|
+
const historyHead = history[0];
|
|
45
|
+
const fixed = request.messages.filter((message, index) => index === 0
|
|
46
|
+
? message.role === "system" &&
|
|
47
|
+
!(historyHead?.role === "system" && historyHead.content === message.content)
|
|
48
|
+
: isRequestContextSystemMessage(message));
|
|
49
|
+
if (fixed.length === 0 && !request.tools?.length)
|
|
50
|
+
return undefined;
|
|
51
|
+
return estimateMessagesTokens(fixed) + estimateToolSchemaTokens(request.tools);
|
|
52
|
+
}
|
|
39
53
|
export async function runSessionCompaction(options) {
|
|
40
54
|
const emit = (type, payload) => {
|
|
41
55
|
options.emit(options.sequencer.build(type, payload, undefined));
|
|
@@ -80,10 +94,19 @@ export async function runSessionCompaction(options) {
|
|
|
80
94
|
const calibrationModel = successfulRequest?.model ?? options.model;
|
|
81
95
|
const calibrated = (tokens) => calibratedRequestTokens(calibrationProvider, calibrationModel, Math.max(0, tokens));
|
|
82
96
|
const beforeTokens = requestTokensBefore ?? calibrated(historyTokensBefore);
|
|
97
|
+
const retainedOverheadTokens = retainedRequestOverheadTokens(successfulRequest, history);
|
|
83
98
|
const reportedFor = (result) => {
|
|
99
|
+
const measurement = options.requestTokensBeforeMeasurement ?? "estimated";
|
|
100
|
+
if (retainedOverheadTokens !== undefined) {
|
|
101
|
+
return {
|
|
102
|
+
beforeTokens,
|
|
103
|
+
afterTokens: calibrated(result.afterTokens + retainedOverheadTokens),
|
|
104
|
+
measurement,
|
|
105
|
+
scope: "assembled-request",
|
|
106
|
+
};
|
|
107
|
+
}
|
|
84
108
|
const retainedHistoryTokens = calibrated(result.afterTokens);
|
|
85
109
|
const overheadTokens = (assembledTokens) => Math.max(0, assembledTokens - calibrated(result.beforeTokens));
|
|
86
|
-
const measurement = options.requestTokensBeforeMeasurement ?? "estimated";
|
|
87
110
|
const afterTokens = useContinuationAccounting && continuationAccounting
|
|
88
111
|
? retainedHistoryTokens +
|
|
89
112
|
overheadTokens(calibrated(continuationAccounting.rawRequestTokens))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-compact-helper.js","sourceRoot":"","sources":["../../../src/app/controllers/session-compact-helper.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,2BAA2B,EAC3B,yCAAyC,EACzC,gCAAgC,EAChC,oCAAoC,EACpC,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,GAE1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EACL,eAAe,EACf,8BAA8B,GAC/B,MAAM,+BAA+B,CAAC;AAOvC,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAc,EACd,IAcC;IAED,MAAM,SAAS,GACb,IAAI,CAAC,KAAK,KAAK,KAAK;QAClB,CAAC,CAAC,oCAAoC;QACtC,CAAC,CAAC,gCAAgC,CAAC;IACvC,OAAO,wBAAwB,CAAC;QAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,aAAa,EAAE,wBAAwB;QACvC,MAAM;QACN,SAAS;QACT,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,kBAAkB,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;YACjD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B,kBAAkB,EAAE,KAAK;QACzB,iBAAiB,EAAE,KAAK;QACxB,4BAA4B,EAAE,KAAK;QACnC,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC;AAmCD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAoC;IAQpC,MAAM,IAAI,GAAG,CACX,IAAO,EACP,OAA4B,EACtB,EAAE;QACR,OAAO,CAAC,IAAI,CACV,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAgB,CACjE,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;IAC7D,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACpD,MAAM,aAAa,GAAG,iBAAiB;QACrC,CAAC,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,OAAO;YACtD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,iBAAiB;QACrB,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,kBAAkB,GAAG,4BAA4B,CACrD,iBAAiB,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAC/C,iBAAiB,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,EACzC,OAAO,CAAC,kBAAkB,CAC3B,CAAC;IACF,MAAM,WAAW,GAAG,2BAA2B,CAAC;QAC9C,QAAQ,EAAE,OAAO;QACjB,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,aAAa;QAC9B,CAAC,CAAC,oBAAoB,CAAC;YACnB,WAAW,EAAE,aAAa;YAC1B,OAAO;YACP,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,gCAAgC;YAC3C,kBAAkB;YAClB,MAAM,EAAE,IAAI;SACb,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,sBAAsB,GAAG,UAAU,EAAE,sBAAsB,CAAC;IAClE,MAAM,2BAA2B,GAC/B,OAAO,OAAO,CAAC,mBAAmB,KAAK,QAAQ;QAC/C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAC5C,OAAO,CAAC,mBAAmB,GAAG,CAAC;QAC7B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACzC,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,yBAAyB,GAC7B,2BAA2B,KAAK,SAAS;QACzC,sBAAsB,KAAK,SAAS,CAAC;IACvC,MAAM,mBAAmB,GACvB,2BAA2B,IAAI,sBAAsB,EAAE,aAAa,CAAC;IACvE,MAAM,KAAK,GACT,mBAAmB,KAAK,SAAS;QAC/B,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,mBAAmB,CAAC;IAC1B,MAAM,mBAAmB,GAAG,iBAAiB,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IAC5E,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IACnE,MAAM,UAAU,GAAG,CAAC,MAAc,EAAU,EAAE,CAC5C,uBAAuB,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,mBAAmB,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,CAAC,MAAqB,EAAsB,EAAE;QAChE,MAAM,qBAAqB,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,CAAC,eAAuB,EAAU,EAAE,CACzD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACjE,MAAM,WAAW,GACf,OAAO,CAAC,8BAA8B,IAAI,WAAW,CAAC;QACxD,MAAM,WAAW,GACf,yBAAyB,IAAI,sBAAsB;YACjD,CAAC,CAAC,qBAAqB;gBACrB,cAAc,CAAC,UAAU,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;YACrE,CAAC,CAAC,mBAAmB,KAAK,SAAS;gBACjC,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,qBAAqB,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAC;QACpE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC3D,CAAC,CAAC;IACF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC,oBAAoB,EAAE;YACzB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,YAAY;YACZ,GAAG,CAAC,OAAO,CAAC,8BAA8B,KAAK,mBAAmB;gBAChE,CAAC,CAAC,EAAE,WAAW,EAAE,mBAA4B,EAAE;gBAC/C,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,eAAe,CACnC,8BAA8B,CAAC,YAAY,CAAC,CAC7C,CAAC;IACF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,CAAC,gBAAyB,EAA0B,EAAE;YACpE,MAAM,MAAM,GACV,CAAC,gBAAgB,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS;gBACjE,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,eAAe,GAAG,iBAAiB,IAAI,OAAO,CAAC,eAAe,CAAC;YACrE,MAAM,eAAe,GAAG,eAAe,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;YACtE,MAAM,YAAY,GAAG,eAAe,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;YAC7D,OAAO,0BAA0B,CAC/B,OAAO,EACP,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAChB,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE;gBACxD,QAAQ,EAAE,eAAe;gBACzB,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,KAAK,EAAE,KAAK;gBACnB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,GAAG,CAAC,MAAM;oBACR,CAAC,CAAC;wBACE,WAAW,EAAE,MAAM;wBACnB,OAAO;qBACR;oBACH,CAAC,CAAC;wBACE,GAAG,CAAC,KAAK,EAAE,cAAc;4BACvB,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;4BAC1C,CAAC,CAAC,EAAE,CAAC;qBACR,CAAC;gBACN,kBAAkB;gBAClB,SAAS;gBACT,OAAO,EAAE,CAAC,UAAU,EAAE,EAAE;oBACtB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;wBAAE,OAAO;oBACjC,KAAK,MAAM,SAAS,IAAI,0BAA0B,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;wBAC9E,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACrH,CAAC;oBACD,IAAI,CAAC,UAAU,CAAC,KAAK;wBAAE,OAAO;oBAC9B,MAAM,OAAO,GAAG,gCAAgC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;oBAC5E,IAAI,CAAC,aAAa,EAAE;wBAClB,GAAG,UAAU,CAAC,KAAK;wBACnB,QAAQ,EAAE,UAAU,CAAC,QAAQ;wBAC7B,KAAK,EAAE,UAAU,CAAC,KAAK;wBACvB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClD,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrD,SAAS,EAAE,IAAI;qBAChB,CAAC,CAAC;gBACL,CAAC;gBACD,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,EAAE,KAAK,KAAK,KAAK;oBAC3C,CAAC,CAAC;wBACE,OAAO,EAAE,CAAC,IAAY,EAAE,OAAiB,EAAE,EAAE;4BAC3C,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;gCACxB,IAAI,CAAC,kBAAkB,EAAE;oCACvB,YAAY,EAAE,OAAO,CAAC,YAAY;oCAClC,IAAI;oCACJ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iCACtC,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,EACJ;gBACE,YAAY,EAAE,CAAC;gBACf,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChF,eAAe,EAAE,IAAI;gBACrB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,2BAA2B,EACzB,IAAI,CAAC,GAAG,CACN,CAAC,EACD,yCAAyC,CACvC,kBAAkB,EAClB,eAAe,EACf,YAAY,CACb,GAAG,qBAAqB,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,oBAAoB,CAC3E;aACJ,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,MAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YACpD,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjC,IAAI,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,OAAO,GACX,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;iBACjB,OAAO,EAAE;iBACT,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO;gBACjE,mBAAmB,CAAC;YACtB,IAAI,CAAC,sBAAsB,EAAE;gBAC3B,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,OAAO;gBACP,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,GAAG,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS;oBACpC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE;oBACvC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,QAAQ,CAAC,WAAW,KAAK,mBAAmB;oBAC9C,CAAC,CAAC,EAAE,WAAW,EAAE,mBAA4B,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;gBACP,YAAY,EAAE,QAAQ,CAAC,KAAK;aAC7B,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,mBAAmB,EAAE;gBACxB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,OAAO,EAAE,yCAAyC;gBAClD,cAAc,EAAE,YAAY;gBAC5B,GAAG,CAAC,OAAO,CAAC,8BAA8B,KAAK,mBAAmB;oBAChE,CAAC,CAAC,EAAE,WAAW,EAAE,mBAA4B,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,GAAG,IAAI,CAAC;QACpC,IAAI,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,mBAAmB,EAAE;gBACxB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,OAAO;gBACzE,cAAc,EAAE,YAAY;gBAC5B,GAAG,CAAC,OAAO,CAAC,8BAA8B,KAAK,mBAAmB;oBAChE,CAAC,CAAC,EAAE,WAAW,EAAE,mBAA4B,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"session-compact-helper.js","sourceRoot":"","sources":["../../../src/app/controllers/session-compact-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,8 @@ import { type SessionUsageReport } from "./session-usage-ledger.js";
|
|
|
24
24
|
import { SessionPromptStore } from "../../store/session-prompts.js";
|
|
25
25
|
import { type FileLineChanges, type SessionChangesReport } from "./session-changes.js";
|
|
26
26
|
import { type GenerationProgress } from "../../llm/generation-metrics.js";
|
|
27
|
+
import { type GoalTimers } from "./session-goal.js";
|
|
28
|
+
import type { GoalReport, GoalSetResult, GoalView } from "./goal-types.js";
|
|
27
29
|
export interface SubagentsRuntimeState {
|
|
28
30
|
readonly enabled: boolean;
|
|
29
31
|
readonly running: number;
|
|
@@ -48,6 +50,7 @@ export interface SessionState {
|
|
|
48
50
|
readonly contextChip: string | undefined;
|
|
49
51
|
readonly contextLimit?: ContextSnapshotLimit | undefined;
|
|
50
52
|
readonly generation?: GenerationProgress | undefined;
|
|
53
|
+
readonly goal?: GoalView | undefined;
|
|
51
54
|
}
|
|
52
55
|
export type NoticeLevel = "info" | "warn";
|
|
53
56
|
export interface SessionControllerDeps {
|
|
@@ -71,6 +74,7 @@ export interface SessionControllerDeps {
|
|
|
71
74
|
readonly noHistory?: boolean | undefined;
|
|
72
75
|
readonly notifyResponderDelivery?: ((summary: string) => void) | undefined;
|
|
73
76
|
readonly titleCompleter?: ((messages: ChatMessage[]) => Promise<string>) | undefined;
|
|
77
|
+
readonly goalTimers?: GoalTimers | undefined;
|
|
74
78
|
}
|
|
75
79
|
export type TurnEndListener = (result: TurnResult) => void;
|
|
76
80
|
export type SessionStateListener = () => void;
|
|
@@ -90,6 +94,7 @@ export declare class SessionController implements Disposable {
|
|
|
90
94
|
private history;
|
|
91
95
|
private readonly prompts;
|
|
92
96
|
private readonly loopRecovery;
|
|
97
|
+
private readonly goal;
|
|
93
98
|
private readonly responder;
|
|
94
99
|
private provider;
|
|
95
100
|
private model;
|
|
@@ -166,6 +171,17 @@ export declare class SessionController implements Disposable {
|
|
|
166
171
|
}): void;
|
|
167
172
|
private applyRestoredModel;
|
|
168
173
|
notice(level: NoticeLevel, text: string): void;
|
|
174
|
+
setGoal(objective: string): GoalSetResult;
|
|
175
|
+
pauseGoal(): GoalView | undefined;
|
|
176
|
+
resumeGoal(): GoalView | undefined;
|
|
177
|
+
clearGoal(): string | undefined;
|
|
178
|
+
goalReport(): GoalReport | undefined;
|
|
179
|
+
private activateUserWork;
|
|
180
|
+
private goalBackgroundWork;
|
|
181
|
+
private evaluateGoal;
|
|
182
|
+
private emitAuxiliaryUsage;
|
|
183
|
+
private loadGoal;
|
|
184
|
+
private saveGoal;
|
|
169
185
|
allowTool(name: string): void;
|
|
170
186
|
disallowTool(name: string): void;
|
|
171
187
|
allowedTools(): readonly string[];
|
|
@@ -4,7 +4,7 @@ import { isProviderMeasuredPrecision, } from "../../llm/context-snapshot.js";
|
|
|
4
4
|
import { compactedContextSnapshot, recordAuxiliaryUsageSnapshot, recordContextUsageSnapshot, resolveContextSnapshot as resolveSnapshot, contextSnapshotForRoute, restoredContextSnapshot, createContextProjector, } from "./session-context-usage.js";
|
|
5
5
|
import { createSessionPolicy } from "../../agent/session-policy.js";
|
|
6
6
|
import { SubagentManager } from "../../agent/subagents/manager.js";
|
|
7
|
-
import { knownAttemptUsage } from "../../llm/operation-usage.js";
|
|
7
|
+
import { claimDiscardedAttemptUsage, knownAttemptUsage } from "../../llm/operation-usage.js";
|
|
8
8
|
import { getActiveProjectRoot } from "../../agent/project-root.js";
|
|
9
9
|
import { collectCompactionEnvelopeInput, createCompactionDurableEnvelopeBuilder, } from "../../agent/turn/compaction-durable-envelope.js";
|
|
10
10
|
import { summarizeCarriedWork } from "../../agent/durable-envelope.js";
|
|
@@ -42,6 +42,10 @@ import { SessionChanges } from "./session-changes.js";
|
|
|
42
42
|
import { SessionLateWork } from "./session-late-work.js";
|
|
43
43
|
import { isInternalChatMessage } from "../../types.js";
|
|
44
44
|
import { generationTokensPerSecond } from "../../llm/generation-metrics.js";
|
|
45
|
+
import { randomUUID } from "node:crypto";
|
|
46
|
+
import { evaluateGoal } from "../../agent/goal/goal-evaluator.js";
|
|
47
|
+
import { effectiveContextWindowTokens } from "../../llm/context-windows.js";
|
|
48
|
+
import { SessionGoal } from "./session-goal.js";
|
|
45
49
|
export class SessionController {
|
|
46
50
|
deps;
|
|
47
51
|
spool = new OutputSpool();
|
|
@@ -58,6 +62,7 @@ export class SessionController {
|
|
|
58
62
|
history = [];
|
|
59
63
|
prompts;
|
|
60
64
|
loopRecovery;
|
|
65
|
+
goal;
|
|
61
66
|
responder;
|
|
62
67
|
provider;
|
|
63
68
|
model;
|
|
@@ -156,16 +161,43 @@ export class SessionController {
|
|
|
156
161
|
notice: (text) => this.notice("warn", text),
|
|
157
162
|
enqueue: (prompt, label) => this.prompts.enqueuePriority(prompt, label),
|
|
158
163
|
});
|
|
164
|
+
this.goal = new SessionGoal({
|
|
165
|
+
now: () => this.contextTimestamp(),
|
|
166
|
+
mintId: () => randomUUID(),
|
|
167
|
+
isBusy: () => this.closing || this.turn.running || this.compactingFlag || this.unsettledTurns > 0,
|
|
168
|
+
hasQueuedWork: () => this.prompts.hasPending(),
|
|
169
|
+
mode: () => this.mode,
|
|
170
|
+
background: () => this.goalBackgroundWork(),
|
|
171
|
+
tokens: () => this.usageLedger.report().totals.totalTokens,
|
|
172
|
+
evaluate: (objective, signal) => this.evaluateGoal(objective, signal),
|
|
173
|
+
runTurn: (prompt, options) => {
|
|
174
|
+
if (options.kickoff)
|
|
175
|
+
this.activateUserWork();
|
|
176
|
+
return this.runTurn(prompt, { displayPrompt: options.displayPrompt });
|
|
177
|
+
},
|
|
178
|
+
load: () => this.loadGoal(),
|
|
179
|
+
save: (goal) => this.saveGoal(goal),
|
|
180
|
+
emit: (update) => this.deps.emit(this.sequencer.build("goal-updated", update, undefined)),
|
|
181
|
+
notifyState: () => this.notifyState(),
|
|
182
|
+
idle: () => {
|
|
183
|
+
this.responder?.scheduleWake();
|
|
184
|
+
this.subagentDelivery.scheduleWake();
|
|
185
|
+
},
|
|
186
|
+
timers: deps.goalTimers,
|
|
187
|
+
});
|
|
159
188
|
this.subagentDelivery = new SessionSubagents({
|
|
160
189
|
sessionId: () => this.sessionIdValue,
|
|
161
|
-
isBusy: () => this.turn.running || this.compactingFlag || this.unsettledTurns > 0,
|
|
190
|
+
isBusy: () => this.turn.running || this.compactingFlag || this.unsettledTurns > 0 || this.goal.evaluating,
|
|
162
191
|
hasQueuedWork: () => this.prompts.hasPending(),
|
|
163
192
|
continueQueue: () => this.prompts.continue(),
|
|
164
193
|
runTurn: (prompt) => this.runTurn(prompt, {
|
|
165
194
|
displayPrompt: null,
|
|
166
195
|
materializeHistoryImages: false,
|
|
167
196
|
}),
|
|
168
|
-
notifyState: () =>
|
|
197
|
+
notifyState: () => {
|
|
198
|
+
this.notifyState();
|
|
199
|
+
this.goal.scheduleWake();
|
|
200
|
+
},
|
|
169
201
|
});
|
|
170
202
|
this.subagentDelivery.bind(this.subagentsValue);
|
|
171
203
|
this.namer = new SessionNamer({
|
|
@@ -184,7 +216,7 @@ export class SessionController {
|
|
|
184
216
|
jobs: deps.jobs,
|
|
185
217
|
persistence: deps.persistence,
|
|
186
218
|
sessionId: () => this.sessionIdValue,
|
|
187
|
-
isBusy: () => this.turn.running || this.compactingFlag || this.unsettledTurns > 0,
|
|
219
|
+
isBusy: () => this.turn.running || this.compactingFlag || this.unsettledTurns > 0 || this.goal.evaluating,
|
|
188
220
|
hasQueuedWork: () => this.prompts.hasPending(),
|
|
189
221
|
continueQueue: () => this.prompts.continue(),
|
|
190
222
|
runTurn: (prompt, onStarted) => this.runTurn(prompt, {
|
|
@@ -199,6 +231,7 @@ export class SessionController {
|
|
|
199
231
|
});
|
|
200
232
|
const unsubscribe = deps.jobs.subscribe((change) => {
|
|
201
233
|
this.responder?.handleChange(change);
|
|
234
|
+
this.goal.scheduleWake();
|
|
202
235
|
});
|
|
203
236
|
this.disposables.add({ dispose: unsubscribe });
|
|
204
237
|
}
|
|
@@ -273,6 +306,7 @@ export class SessionController {
|
|
|
273
306
|
contextChip,
|
|
274
307
|
contextLimit,
|
|
275
308
|
generation: this.generation,
|
|
309
|
+
goal: this.goal.view(),
|
|
276
310
|
};
|
|
277
311
|
}
|
|
278
312
|
contextUsageProjection() {
|
|
@@ -408,6 +442,7 @@ export class SessionController {
|
|
|
408
442
|
setMode(mode) {
|
|
409
443
|
this.mode = mode;
|
|
410
444
|
this.notifyState();
|
|
445
|
+
this.goal.scheduleWake();
|
|
411
446
|
}
|
|
412
447
|
loadHistory(messages, options = {}) {
|
|
413
448
|
this.beginLifecycleGeneration();
|
|
@@ -454,6 +489,7 @@ export class SessionController {
|
|
|
454
489
|
code: options.workspaceCode,
|
|
455
490
|
});
|
|
456
491
|
this.settlePersistedResponderResults();
|
|
492
|
+
this.goal.restore();
|
|
457
493
|
this.notifyState();
|
|
458
494
|
}
|
|
459
495
|
applyRestoredModel(provider, model) {
|
|
@@ -468,6 +504,104 @@ export class SessionController {
|
|
|
468
504
|
notice(level, text) {
|
|
469
505
|
this.deps.emit(this.sequencer.build("notice", { level, text }, undefined));
|
|
470
506
|
}
|
|
507
|
+
setGoal(objective) {
|
|
508
|
+
return this.goal.set(objective);
|
|
509
|
+
}
|
|
510
|
+
pauseGoal() {
|
|
511
|
+
return this.goal.pause();
|
|
512
|
+
}
|
|
513
|
+
resumeGoal() {
|
|
514
|
+
if (this.goal.view()?.status === "paused")
|
|
515
|
+
this.activateUserWork();
|
|
516
|
+
return this.goal.resume();
|
|
517
|
+
}
|
|
518
|
+
clearGoal() {
|
|
519
|
+
return this.goal.clear();
|
|
520
|
+
}
|
|
521
|
+
goalReport() {
|
|
522
|
+
return this.goal.report();
|
|
523
|
+
}
|
|
524
|
+
activateUserWork() {
|
|
525
|
+
this.responder?.activate();
|
|
526
|
+
this.subagentDelivery.activate();
|
|
527
|
+
this.loopRecovery.clear();
|
|
528
|
+
}
|
|
529
|
+
goalBackgroundWork() {
|
|
530
|
+
const sessionId = this.sessionIdValue;
|
|
531
|
+
const jobs = this.deps.jobs;
|
|
532
|
+
const live = this.subagentsValue.list().filter((run) => run.status === "running" || run.status === "stopping");
|
|
533
|
+
const undeliveredRuns = this.subagentsValue.enabled ? this.subagentsValue.pendingResults().length : 0;
|
|
534
|
+
const undeliveredJobs = this.responder?.getState().ready ?? 0;
|
|
535
|
+
return {
|
|
536
|
+
running: [
|
|
537
|
+
...(jobs?.running(sessionId) ?? []).map((job) => `background job ${job.name ?? job.commandDisplay}`),
|
|
538
|
+
...live.map((run) => `subagent ${run.title}`),
|
|
539
|
+
],
|
|
540
|
+
pendingDeliveries: undeliveredRuns + undeliveredJobs,
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
async evaluateGoal(objective, signal) {
|
|
544
|
+
const config = getConfig();
|
|
545
|
+
const base = this.lastMainRequestSnapshot;
|
|
546
|
+
const provider = base?.provider ?? this.provider ?? config.defaultProvider;
|
|
547
|
+
const model = base?.model ?? this.model ?? getProviderModel(provider);
|
|
548
|
+
const generation = this.lifecycleGeneration;
|
|
549
|
+
const evaluation = await withSessionAffinity(this.sessionIdValue, () => evaluateGoal({
|
|
550
|
+
objective,
|
|
551
|
+
history: this.history,
|
|
552
|
+
baseRequest: base,
|
|
553
|
+
provider,
|
|
554
|
+
model,
|
|
555
|
+
...(provider === "codex" ? { thinking: { ...config.thinking } } : {}),
|
|
556
|
+
contextLimitTokens: effectiveContextWindowTokens(provider, model, customContextLimit(provider, model)),
|
|
557
|
+
signal,
|
|
558
|
+
onUsage: (result) => {
|
|
559
|
+
if (generation === this.lifecycleGeneration)
|
|
560
|
+
this.emitAuxiliaryUsage(result);
|
|
561
|
+
},
|
|
562
|
+
}));
|
|
563
|
+
return evaluation.verdict;
|
|
564
|
+
}
|
|
565
|
+
emitAuxiliaryUsage(result) {
|
|
566
|
+
for (const discarded of claimDiscardedAttemptUsage(result.operationUsage)) {
|
|
567
|
+
this.deps.emit(this.sequencer.build("token-usage", {
|
|
568
|
+
...discarded.usage,
|
|
569
|
+
provider: discarded.provider,
|
|
570
|
+
model: discarded.model,
|
|
571
|
+
auxiliary: true,
|
|
572
|
+
}, undefined));
|
|
573
|
+
}
|
|
574
|
+
if (!result.usage)
|
|
575
|
+
return;
|
|
576
|
+
this.deps.emit(this.sequencer.build("token-usage", {
|
|
577
|
+
...result.usage,
|
|
578
|
+
provider: result.provider,
|
|
579
|
+
model: result.model,
|
|
580
|
+
...(result.api ? { api: result.api } : {}),
|
|
581
|
+
auxiliary: true,
|
|
582
|
+
}, undefined));
|
|
583
|
+
}
|
|
584
|
+
loadGoal() {
|
|
585
|
+
if (!this.isPromptHistoryEnabled())
|
|
586
|
+
return undefined;
|
|
587
|
+
try {
|
|
588
|
+
return this.deps.persistence.loadGoal?.(this.sessionIdValue);
|
|
589
|
+
}
|
|
590
|
+
catch (error) {
|
|
591
|
+
this.notice("warn", `could not restore the session goal: ${error instanceof Error ? error.message : String(error)}`);
|
|
592
|
+
return undefined;
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
saveGoal(goal) {
|
|
596
|
+
if (!this.isPromptHistoryEnabled())
|
|
597
|
+
return;
|
|
598
|
+
try {
|
|
599
|
+
this.deps.persistence.saveGoal?.(this.sessionIdValue, goal);
|
|
600
|
+
}
|
|
601
|
+
catch (error) {
|
|
602
|
+
this.notice("warn", `could not save the session goal: ${error instanceof Error ? error.message : String(error)}`);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
471
605
|
allowTool(name) {
|
|
472
606
|
this.policy.allow.add(name);
|
|
473
607
|
}
|
|
@@ -627,6 +761,7 @@ export class SessionController {
|
|
|
627
761
|
this.notifyState();
|
|
628
762
|
this.responder?.scheduleWake();
|
|
629
763
|
this.subagentDelivery.scheduleWake();
|
|
764
|
+
this.goal.scheduleWake();
|
|
630
765
|
}
|
|
631
766
|
}
|
|
632
767
|
compactionEnvelopePorts(history) {
|
|
@@ -671,6 +806,7 @@ export class SessionController {
|
|
|
671
806
|
this.closing = true;
|
|
672
807
|
this.responder?.deactivate();
|
|
673
808
|
this.subagentDelivery.deactivate();
|
|
809
|
+
this.goal.halt();
|
|
674
810
|
this.abort("session is closing");
|
|
675
811
|
this.prompts.detach();
|
|
676
812
|
if (this.unsettledTurns > 0) {
|
|
@@ -744,6 +880,7 @@ export class SessionController {
|
|
|
744
880
|
async cancelAll() {
|
|
745
881
|
this.responder?.invalidateWake();
|
|
746
882
|
this.subagentDelivery.deactivate();
|
|
883
|
+
this.goal.interrupt(this.turn.running);
|
|
747
884
|
this.prompts.preservePendingPriority();
|
|
748
885
|
this.turn.abort();
|
|
749
886
|
this.compactAbort?.abort();
|
|
@@ -766,6 +903,7 @@ export class SessionController {
|
|
|
766
903
|
.catch(() => undefined);
|
|
767
904
|
}
|
|
768
905
|
enqueue(prompt, opts) {
|
|
906
|
+
this.goal.noteUserPrompt();
|
|
769
907
|
this.prompts.enqueue(prompt, opts);
|
|
770
908
|
}
|
|
771
909
|
queued() {
|
|
@@ -787,8 +925,11 @@ export class SessionController {
|
|
|
787
925
|
this.prompts.sendNow(index);
|
|
788
926
|
}
|
|
789
927
|
abort(reason) {
|
|
928
|
+
const turnRunning = this.turn.running;
|
|
790
929
|
this.turn.abort(reason);
|
|
791
930
|
this.compactAbort?.abort();
|
|
931
|
+
if (reason !== "steer" && !this.closing)
|
|
932
|
+
this.goal.interrupt(turnRunning);
|
|
792
933
|
}
|
|
793
934
|
async continueQueue() {
|
|
794
935
|
await this.prompts.continue();
|
|
@@ -804,9 +945,8 @@ export class SessionController {
|
|
|
804
945
|
return () => this.turnEndListeners.delete(listener);
|
|
805
946
|
}
|
|
806
947
|
async submit(prompt, opts) {
|
|
807
|
-
this.
|
|
808
|
-
this.
|
|
809
|
-
this.loopRecovery.clear();
|
|
948
|
+
this.activateUserWork();
|
|
949
|
+
this.goal.noteUserPrompt();
|
|
810
950
|
return this.prompts.submit(prompt, opts);
|
|
811
951
|
}
|
|
812
952
|
async drain() {
|
|
@@ -911,8 +1051,10 @@ export class SessionController {
|
|
|
911
1051
|
if (sameGeneration) {
|
|
912
1052
|
this.lastTurnResult = result;
|
|
913
1053
|
this.restoredPreviousTurn = undefined;
|
|
914
|
-
if (!this.closing)
|
|
1054
|
+
if (!this.closing) {
|
|
915
1055
|
this.loopRecovery.handle(result);
|
|
1056
|
+
this.goal.handleTurnEnd(result);
|
|
1057
|
+
}
|
|
916
1058
|
}
|
|
917
1059
|
if (sameGeneration &&
|
|
918
1060
|
(result.status === "completed" ||
|
|
@@ -935,6 +1077,7 @@ export class SessionController {
|
|
|
935
1077
|
}
|
|
936
1078
|
this.responder?.scheduleWake();
|
|
937
1079
|
this.subagentDelivery.scheduleWake();
|
|
1080
|
+
this.goal.scheduleWake();
|
|
938
1081
|
}
|
|
939
1082
|
}
|
|
940
1083
|
scheduleAutosave() {
|
|
@@ -1006,9 +1149,11 @@ export class SessionController {
|
|
|
1006
1149
|
this.activeCompactions.clear();
|
|
1007
1150
|
this.responder?.invalidateWake();
|
|
1008
1151
|
this.subagentDelivery.deactivate();
|
|
1152
|
+
this.goal.reset();
|
|
1009
1153
|
}
|
|
1010
1154
|
dispose() {
|
|
1011
1155
|
this.beginLifecycleGeneration();
|
|
1156
|
+
this.goal.dispose();
|
|
1012
1157
|
this.prompts.detach();
|
|
1013
1158
|
this.namer.reset();
|
|
1014
1159
|
this.subagentDelivery.dispose();
|
|
@@ -1028,6 +1173,10 @@ export class SessionController {
|
|
|
1028
1173
|
this.activeTurnGeneration === this.lifecycleGeneration) {
|
|
1029
1174
|
this.changeLedger.record(`${event.turnId}:${event.payload.toolCallId}`, event.payload.fileChanges);
|
|
1030
1175
|
}
|
|
1176
|
+
if (event.type === "turn-started")
|
|
1177
|
+
this.goal.noteTurnStarted();
|
|
1178
|
+
else if (event.type === "tool-call")
|
|
1179
|
+
this.goal.noteToolCall();
|
|
1031
1180
|
if (event.type === "compaction-started") {
|
|
1032
1181
|
this.activeCompactions.add(event.payload.compactionId);
|
|
1033
1182
|
this.notifyState();
|