pi-mega-compact 0.13.1 → 0.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extensions/dashboard-server/api-contracts/embedder-health.js +11 -0
- package/dist/extensions/dashboard-server/api-contracts/endpoints/registry.js +225 -0
- package/dist/extensions/dashboard-server/api-contracts/endpoints/types.js +1 -0
- package/dist/extensions/dashboard-server/api-contracts/endpoints.js +5 -224
- package/dist/extensions/dashboard-server/api-contracts/raptor.js +8 -0
- package/dist/extensions/dashboard-server/api-contracts.test/_helpers.js +32 -0
- package/dist/extensions/dashboard-server/routes-cache.test/_helpers.js +48 -0
- package/dist/extensions/dashboard-server/routes-embedder-health.js +67 -0
- package/dist/extensions/dashboard-server/routes-raptor.js +88 -0
- package/dist/extensions/dashboard-server/routes-setup.js +1 -1
- package/dist/extensions/dashboard-server/routes.js +2 -0
- package/dist/extensions/dashboard-server/server.js +5 -1
- package/dist/extensions/mega-cache-replay.test/_helpers.js +175 -0
- package/dist/extensions/mega-commands/dataCommands.js +151 -0
- package/dist/extensions/mega-commands/helpers.js +61 -0
- package/dist/extensions/mega-commands/historyCommands.js +97 -0
- package/dist/extensions/mega-commands/setupCommand.js +200 -0
- package/dist/extensions/mega-commands.js +14 -499
- package/dist/extensions/mega-compact-s38.test/_helpers.js +194 -0
- package/dist/extensions/mega-compact.test/_helpers.js +225 -0
- package/dist/extensions/mega-events/agent-handlers/agentEndHandler.js +211 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/cacheStripe.js +49 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/contextHealth.js +33 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/errorRetry.js +387 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/event.js +7 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/gameScoring.js +55 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/lengthStop.js +12 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/memoryReview.js +22 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler/recordTurnRow.js +38 -0
- package/dist/extensions/mega-events/agent-handlers/turnEndHandler.js +36 -0
- package/dist/extensions/mega-events/agent-handlers.js +4 -799
- package/dist/extensions/mega-events/context-handler/afterCompact.js +163 -0
- package/dist/extensions/mega-events/context-handler/messageText.js +12 -0
- package/dist/extensions/mega-events/context-handler/tailResult.js +46 -0
- package/dist/extensions/mega-events/context-handler.js +11 -198
- package/dist/extensions/mega-events/separated-prompt.test/_helpers.js +25 -0
- package/dist/src/config.js +2 -0
- package/dist/src/dedup-engine.test/_helpers.js +55 -0
- package/dist/src/e2e.test/_helpers.js +52 -0
- package/dist/src/embedder.js +1 -0
- package/dist/src/httpEmbedder.js +6 -0
- package/dist/src/hyde.js +146 -0
- package/dist/src/importance.test/_helpers.js +5 -0
- package/dist/src/memoryGraph/sources/checkpoints.js +78 -0
- package/dist/src/memoryGraph/sources/edges.js +17 -0
- package/dist/src/memoryGraph/sources/flags.js +22 -0
- package/dist/src/memoryGraph/sources/helpers.js +14 -0
- package/dist/src/memoryGraph/sources/memories.js +88 -0
- package/dist/src/memoryGraph/sources/raptor.js +26 -0
- package/dist/src/memoryGraph/sources/turns.js +176 -0
- package/dist/src/memoryGraph/sources.js +15 -441
- package/dist/src/memoryGraph-gates.test/_helpers.js +120 -0
- package/dist/src/ratio.bench.test/_helpers.js +198 -0
- package/dist/src/recall/async.js +112 -0
- package/dist/src/recall/format.js +149 -0
- package/dist/src/recall/memory.js +62 -0
- package/dist/src/recall/reformulate.js +82 -0
- package/dist/src/recall/sync.js +169 -0
- package/dist/src/recall/types.js +1 -0
- package/dist/src/recall.js +13 -530
- package/dist/src/store/sqlite/schema/core.js +232 -0
- package/dist/src/store/sqlite/schema/game.js +65 -0
- package/dist/src/store/sqlite/schema/plan-v2.js +107 -0
- package/dist/src/store/sqlite/schema/turns.js +59 -0
- package/dist/src/store/sqlite/schema.js +8 -441
- package/dist/src/store/turns/contract-compliance.test/_helpers.js +21 -0
- package/dist/src/store/turns/sqlite-store/admin.js +171 -0
- package/dist/src/store/turns/sqlite-store/ctx.js +1 -0
- package/dist/src/store/turns/sqlite-store/read.js +111 -0
- package/dist/src/store/turns/sqlite-store/rows.js +42 -0
- package/dist/src/store/turns/sqlite-store/write.js +102 -0
- package/dist/src/store/turns/sqlite-store.js +31 -367
- package/dist/src/vectorStore/class.js +356 -0
- package/dist/src/vectorStore/hash.js +10 -0
- package/dist/src/vectorStore/types.js +2 -0
- package/dist/src/vectorStore.js +8 -359
- package/dist/src/vectorStore.test/_helpers.js +17 -0
- package/extensions/dashboard-client/dist/assets/{CacheTab-8HRroK9K.js → CacheTab-DPRHjYZ0.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{CacheTab-8HRroK9K.js.map → CacheTab-DPRHjYZ0.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{EventsTab-ncobZw-I.js → EventsTab-CgwYq-Qf.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{EventsTab-ncobZw-I.js.map → EventsTab-CgwYq-Qf.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{HealthTab-C6BI1EZG.js → HealthTab-BgOCjVzR.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{HealthTab-C6BI1EZG.js.map → HealthTab-BgOCjVzR.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-Yw1yFpsy.js +2 -0
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-Yw1yFpsy.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/MemoryMapTab-yHUX7Yzi.js +2 -0
- package/extensions/dashboard-client/dist/assets/MemoryMapTab-yHUX7Yzi.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{MetricsTab-B88XTCMk.js → MetricsTab-CcH9fP8P.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{MetricsTab-B88XTCMk.js.map → MetricsTab-CcH9fP8P.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{OverviewTab-CGZrSia-.js → OverviewTab-BOs8ZNev.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{OverviewTab-CGZrSia-.js.map → OverviewTab-BOs8ZNev.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{ReposTab-BZo5cNS1.js → ReposTab-B-MfSPvg.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{ReposTab-BZo5cNS1.js.map → ReposTab-B-MfSPvg.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{SessionsTab-C2RokJcw.js → SessionsTab-BmeN649Q.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{SessionsTab-C2RokJcw.js.map → SessionsTab-BmeN649Q.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/SetupTab-nOknoph5.js +2 -0
- package/extensions/dashboard-client/dist/assets/SetupTab-nOknoph5.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{TimeSavedCard-CewYB2aA.js → TimeSavedCard-DnPg0L0z.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TimeSavedCard-CewYB2aA.js.map → TimeSavedCard-DnPg0L0z.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{TopicsTab-DpVNIuaL.js → TopicsTab-BODHOg_b.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TopicsTab-DpVNIuaL.js.map → TopicsTab-BODHOg_b.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{TurnsTab-KeuKKVC9.js → TurnsTab-BK0I7hKr.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{TurnsTab-KeuKKVC9.js.map → TurnsTab-BK0I7hKr.js.map} +1 -1
- package/extensions/dashboard-client/dist/assets/{index-Cucgohga.js → index-mOlljTFI.js} +9 -9
- package/extensions/dashboard-client/dist/assets/index-mOlljTFI.js.map +1 -0
- package/extensions/dashboard-client/dist/assets/{useSSE-DJsqdPXC.js → useSSE-BYOtv1-3.js} +2 -2
- package/extensions/dashboard-client/dist/assets/{useSSE-DJsqdPXC.js.map → useSSE-BYOtv1-3.js.map} +1 -1
- package/extensions/dashboard-client/dist/index.html +1 -1
- package/extensions/dashboard-client/src/api/client.ts +16 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab/ActionsCard.tsx +178 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab/DbStatsCard.tsx +140 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab/DebugBundleCard.tsx +109 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab/HealthMitigationCard.tsx +98 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab/SchemaHealthCard.tsx +108 -0
- package/extensions/dashboard-client/src/tabs/MaintenanceTab.tsx +12 -598
- package/extensions/dashboard-client/src/tabs/MemoryMapTab/MemoryMapView.tsx +476 -0
- package/extensions/dashboard-client/src/tabs/MemoryMapTab/RaptorTreeView.tsx +163 -0
- package/extensions/dashboard-client/src/tabs/MemoryMapTab.tsx +56 -466
- package/extensions/dashboard-client/src/tabs/SetupTab/EmbedderHealthCard.tsx +109 -0
- package/extensions/dashboard-client/src/tabs/SetupTab/EmbedderSetup.tsx +468 -0
- package/extensions/dashboard-client/src/tabs/SetupTab.tsx +13 -483
- package/extensions/dashboard-server/api-contracts/embedder-health.ts +32 -0
- package/extensions/dashboard-server/api-contracts/endpoints/registry.ts +360 -0
- package/extensions/dashboard-server/api-contracts/endpoints/types.ts +350 -0
- package/extensions/dashboard-server/api-contracts/endpoints.ts +27 -648
- package/extensions/dashboard-server/api-contracts/index.ts +6 -0
- package/extensions/dashboard-server/api-contracts/raptor.ts +49 -0
- package/extensions/dashboard-server/api-contracts.test/_helpers.ts +47 -0
- package/extensions/dashboard-server/routes-cache.test/_helpers.ts +94 -0
- package/extensions/dashboard-server/routes-embedder-health.ts +77 -0
- package/extensions/dashboard-server/routes-raptor.ts +128 -0
- package/extensions/dashboard-server/routes-setup.ts +1 -1
- package/extensions/dashboard-server/routes.ts +2 -0
- package/extensions/dashboard-server/server.ts +4 -0
- package/extensions/mega-cache-replay.test/_helpers.ts +188 -0
- package/extensions/mega-commands/dataCommands.ts +169 -0
- package/extensions/mega-commands/helpers.ts +62 -0
- package/extensions/mega-commands/historyCommands.ts +117 -0
- package/extensions/mega-commands/setupCommand.ts +235 -0
- package/extensions/mega-commands.ts +25 -538
- package/extensions/mega-compact-s38.test/_helpers.ts +201 -0
- package/extensions/mega-compact.test/_helpers.ts +237 -0
- package/extensions/mega-events/agent-handlers/agentEndHandler.ts +238 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/cacheStripe.ts +74 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/contextHealth.ts +50 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/errorRetry.ts +421 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/event.ts +16 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/gameScoring.ts +73 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/lengthStop.ts +29 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/memoryReview.ts +42 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler/recordTurnRow.ts +61 -0
- package/extensions/mega-events/agent-handlers/turnEndHandler.ts +64 -0
- package/extensions/mega-events/agent-handlers.ts +15 -861
- package/extensions/mega-events/context-handler/afterCompact.ts +213 -0
- package/extensions/mega-events/context-handler/messageText.ts +20 -0
- package/extensions/mega-events/context-handler/tailResult.ts +63 -0
- package/extensions/mega-events/context-handler.ts +17 -235
- package/extensions/mega-events/separated-prompt.test/_helpers.ts +35 -0
- package/package.json +1 -1
- package/src/config.ts +4 -0
- package/src/dedup-engine.test/_helpers.ts +79 -0
- package/src/e2e.test/_helpers.ts +59 -0
- package/src/embedder.ts +4 -0
- package/src/httpEmbedder.ts +7 -0
- package/src/hyde.ts +162 -0
- package/src/importance.test/_helpers.ts +5 -0
- package/src/memoryGraph/sources/checkpoints.ts +99 -0
- package/src/memoryGraph/sources/edges.ts +23 -0
- package/src/memoryGraph/sources/flags.ts +26 -0
- package/src/memoryGraph/sources/helpers.ts +13 -0
- package/src/memoryGraph/sources/memories.ts +108 -0
- package/src/memoryGraph/sources/raptor.ts +37 -0
- package/src/memoryGraph/sources/turns.ts +226 -0
- package/src/memoryGraph/sources.ts +19 -544
- package/src/memoryGraph-gates.test/_helpers.ts +164 -0
- package/src/ratio.bench.test/_helpers.ts +268 -0
- package/src/recall/async.ts +142 -0
- package/src/recall/format.ts +173 -0
- package/src/recall/memory.ts +90 -0
- package/src/recall/reformulate.ts +111 -0
- package/src/recall/sync.ts +196 -0
- package/src/recall/types.ts +63 -0
- package/src/recall.ts +25 -712
- package/src/store/sqlite/schema/core.ts +233 -0
- package/src/store/sqlite/schema/game.ts +66 -0
- package/src/store/sqlite/schema/plan-v2.ts +108 -0
- package/src/store/sqlite/schema/turns.ts +60 -0
- package/src/store/sqlite/schema.ts +13 -441
- package/src/store/turns/contract-compliance.test/_helpers.ts +38 -0
- package/src/store/turns/sqlite-store/admin.ts +249 -0
- package/src/store/turns/sqlite-store/ctx.ts +14 -0
- package/src/store/turns/sqlite-store/read.ts +174 -0
- package/src/store/turns/sqlite-store/rows.ts +55 -0
- package/src/store/turns/sqlite-store/write.ts +193 -0
- package/src/store/turns/sqlite-store.ts +33 -514
- package/src/vectorStore/class.ts +433 -0
- package/src/vectorStore/hash.ts +11 -0
- package/src/vectorStore/types.ts +58 -0
- package/src/vectorStore.test/_helpers.ts +20 -0
- package/src/vectorStore.ts +13 -489
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-DZi1MnZI.js +0 -2
- package/extensions/dashboard-client/dist/assets/MaintenanceTab-DZi1MnZI.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/MemoryMapTab-CjUa9zzw.js +0 -2
- package/extensions/dashboard-client/dist/assets/MemoryMapTab-CjUa9zzw.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/SetupTab-C_BwmebC.js +0 -2
- package/extensions/dashboard-client/dist/assets/SetupTab-C_BwmebC.js.map +0 -1
- package/extensions/dashboard-client/dist/assets/index-Cucgohga.js.map +0 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* turnEndHandler/memoryReview.ts — S20+S24 memory auto-review.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from turnEndHandler.ts (delegate-shell split) to keep every source
|
|
5
|
+
* file under the extensions limit. Auto-reviews the conversation and persists
|
|
6
|
+
* durable memories. Best-effort + non-fatal: a review failure must never break
|
|
7
|
+
* the agent loop. Debounced by the pressure-adjusted interval.
|
|
8
|
+
*/
|
|
9
|
+
import type { ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
10
|
+
import type { MegaRuntime } from "../../../mega-runtime.js";
|
|
11
|
+
import { runMemoryReview } from "../../../mega-pipeline.js";
|
|
12
|
+
import { memoryReviewCadence, type MegaConfig } from "../../../mega-config.js";
|
|
13
|
+
|
|
14
|
+
/** S20+S24: auto-review the conversation and persist durable memories. */
|
|
15
|
+
export async function memoryReview(
|
|
16
|
+
ctx: ExtensionContext,
|
|
17
|
+
runtime: MegaRuntime,
|
|
18
|
+
config: MegaConfig,
|
|
19
|
+
): Promise<void> {
|
|
20
|
+
// S20+S24: auto-review the conversation and persist durable memories. The
|
|
21
|
+
// review cadence scales with pressure (memoryReviewCadence): as context
|
|
22
|
+
// fills, the conversation is reviewed more often so memories keep pace with
|
|
23
|
+
// faster churn. Best-effort + non-fatal: a review failure must never break
|
|
24
|
+
// the agent loop. Debounced by the pressure-adjusted interval.
|
|
25
|
+
if (config.memoryAutoReview && runtime.currentTurn > 0) {
|
|
26
|
+
const cadence = memoryReviewCadence(
|
|
27
|
+
runtime.pressureBand,
|
|
28
|
+
config.memoryReviewInterval,
|
|
29
|
+
);
|
|
30
|
+
if (runtime.currentTurn % cadence === 0) {
|
|
31
|
+
// S20+S24: review the conversation and persist durable memories. The
|
|
32
|
+
// cadence scales with pressure (memoryReviewCadence): as context fills,
|
|
33
|
+
// the conversation is reviewed more often so memories keep pace with
|
|
34
|
+
// faster churn. Shared runMemoryReview body (also used on compact).
|
|
35
|
+
const entries = ctx.sessionManager.getEntries();
|
|
36
|
+
const view = runtime.engineView(
|
|
37
|
+
entries.flatMap((e: any) => (e.message ? [e.message] : [])),
|
|
38
|
+
);
|
|
39
|
+
await runMemoryReview(runtime, view, "turn");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* turnEndHandler/recordTurnRow.ts — S43 per-turn tracking.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from turnEndHandler.ts (delegate-shell split) to keep every source
|
|
5
|
+
* file under the extensions limit. Records one turn row with the cached metrics
|
|
6
|
+
* so the turn layer is queryable + forkable. Best-effort + non-fatal: a write
|
|
7
|
+
* failure never breaks the agent loop.
|
|
8
|
+
*/
|
|
9
|
+
import type { MegaRuntime } from "../../../mega-runtime.js";
|
|
10
|
+
import type { MegaConfig } from "../../../mega-config.js";
|
|
11
|
+
import { ensureConversationIdFor, recordTurnWrite } from "../../../mega-turn-store.js";
|
|
12
|
+
import type { TurnEndEvent } from "./event.js";
|
|
13
|
+
|
|
14
|
+
/** S43: record one turn row with the cached metrics. Best-effort + non-fatal. */
|
|
15
|
+
export function recordTurnRow(
|
|
16
|
+
event: TurnEndEvent,
|
|
17
|
+
runtime: MegaRuntime,
|
|
18
|
+
config: MegaConfig,
|
|
19
|
+
): void {
|
|
20
|
+
// S43 (per-turn tracking): record one turn row with the cached metrics so
|
|
21
|
+
// the turn layer is queryable + forkable. Best-effort + non-fatal: a write
|
|
22
|
+
// failure never breaks the agent loop. The catch logs the error (structured
|
|
23
|
+
// JSON line to events.log) so a recurring turn-write failure is diagnosable
|
|
24
|
+
// instead of silently producing a blank Turns tab.
|
|
25
|
+
try {
|
|
26
|
+
const convId = ensureConversationIdFor(
|
|
27
|
+
config,
|
|
28
|
+
runtime.rt.sessionId,
|
|
29
|
+
runtime.currentStateDir,
|
|
30
|
+
);
|
|
31
|
+
recordTurnWrite(
|
|
32
|
+
config,
|
|
33
|
+
{
|
|
34
|
+
conversationId: convId,
|
|
35
|
+
sessionId: runtime.rt.sessionId,
|
|
36
|
+
turnIndex: event.turnIndex,
|
|
37
|
+
role: (event as { role?: string }).role ?? "assistant",
|
|
38
|
+
endedAt: Date.now(),
|
|
39
|
+
startedAt: undefined,
|
|
40
|
+
ctxTokens: runtime.lastCtxTokens ?? undefined,
|
|
41
|
+
ctxPercent: runtime.lastCtxPercent ?? undefined,
|
|
42
|
+
pressureBand: runtime.pressureBand ?? undefined,
|
|
43
|
+
modelId: runtime.currentModel?.modelId ?? undefined,
|
|
44
|
+
},
|
|
45
|
+
runtime.currentStateDir,
|
|
46
|
+
);
|
|
47
|
+
runtime.dashboard.event("turn_written", {
|
|
48
|
+
turnIndex: event.turnIndex,
|
|
49
|
+
conversationId: convId,
|
|
50
|
+
pressureBand: runtime.pressureBand ?? null,
|
|
51
|
+
turnsDbEnabled: config.turnsDbEnabled,
|
|
52
|
+
});
|
|
53
|
+
} catch (e) {
|
|
54
|
+
runtime.dashboard.event("turn_write_failed", {
|
|
55
|
+
turnIndex: event.turnIndex,
|
|
56
|
+
turnsDbEnabled: config.turnsDbEnabled,
|
|
57
|
+
error: e instanceof Error ? e.message : String(e),
|
|
58
|
+
stack: e instanceof Error ? e.stack?.split("\n").slice(0, 3).join(" | ") : undefined,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-handlers/turnEndHandler.ts — the pi `turn_end` handler body.
|
|
3
|
+
*
|
|
4
|
+
* Delegate-shell (extensions split): extracts each concern into a helper in
|
|
5
|
+
* ./turnEndHandler/* so every source file stays under the extensions limit.
|
|
6
|
+
* The heavy sections live in sibling files: recordTurnRow (S43 persistence),
|
|
7
|
+
* gameScoring (S33/S35), memoryReview (S20/S24), lengthStop (S28), errorRetry
|
|
8
|
+
* (S38/R1-R11 safety net), cacheStripe (P3.5), and contextHealth (v0.12).
|
|
9
|
+
*/
|
|
10
|
+
import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
11
|
+
import type { MegaRuntime } from "../../mega-runtime.js";
|
|
12
|
+
import type { MegaConfig } from "../../mega-config.js";
|
|
13
|
+
import type { TurnEndEvent } from "./turnEndHandler/event.js";
|
|
14
|
+
import { recordTurnRow } from "./turnEndHandler/recordTurnRow.js";
|
|
15
|
+
import { gameScoring } from "./turnEndHandler/gameScoring.js";
|
|
16
|
+
import { memoryReview } from "./turnEndHandler/memoryReview.js";
|
|
17
|
+
import { lengthStop } from "./turnEndHandler/lengthStop.js";
|
|
18
|
+
import { errorRetry } from "./turnEndHandler/errorRetry.js";
|
|
19
|
+
import { cacheStripe } from "./turnEndHandler/cacheStripe.js";
|
|
20
|
+
import { contextHealth } from "./turnEndHandler/contextHealth.js";
|
|
21
|
+
|
|
22
|
+
/** Handle the `turn_end` pi event. Non-fatal end-to-end. */
|
|
23
|
+
export async function handleTurnEnd(
|
|
24
|
+
event: TurnEndEvent,
|
|
25
|
+
ctx: ExtensionContext,
|
|
26
|
+
pi: ExtensionAPI,
|
|
27
|
+
runtime: MegaRuntime,
|
|
28
|
+
config: MegaConfig,
|
|
29
|
+
): Promise<void> {
|
|
30
|
+
runtime.dashboard.event("turn_end", { turnIndex: event.turnIndex });
|
|
31
|
+
runtime.snapshot(ctx);
|
|
32
|
+
runtime.lastErrorCategory = null;
|
|
33
|
+
|
|
34
|
+
// S53: consume staged recall blocks ONLY if they were actually injected
|
|
35
|
+
// into a view this turn. If no context event fired (edge: turn ended
|
|
36
|
+
// before any LLM call), recallInjectedThisTurn stays false and the blocks
|
|
37
|
+
// remain staged for the next turn's first context event.
|
|
38
|
+
if (config.recallTailInject && runtime.rt.recallInjectedThisTurn) {
|
|
39
|
+
runtime.pendingRecallBlock = undefined;
|
|
40
|
+
runtime.pendingMemoryRecallBlock = undefined;
|
|
41
|
+
runtime.rt.recallInjectedThisTurn = false;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// S43 (per-turn tracking): record one turn row. Best-effort + non-fatal.
|
|
45
|
+
recordTurnRow(event, runtime, config);
|
|
46
|
+
|
|
47
|
+
// S33/S35: game-mode scoring + achievements. Best-effort + non-fatal (G6).
|
|
48
|
+
gameScoring(event, ctx, runtime);
|
|
49
|
+
|
|
50
|
+
// S20+S24: auto-review the conversation, persist durable memories.
|
|
51
|
+
await memoryReview(ctx, runtime, config);
|
|
52
|
+
|
|
53
|
+
// S28: detect max-output-token truncation, arm the agent_end nudge.
|
|
54
|
+
lengthStop(event, runtime, config);
|
|
55
|
+
|
|
56
|
+
// S38/R1-R11: broader error-retry safety net. Non-fatal end-to-end.
|
|
57
|
+
await errorRetry(event, ctx, pi, runtime, config);
|
|
58
|
+
|
|
59
|
+
// P3.5: topic-shift cache stripe refresh. Best-effort + non-fatal.
|
|
60
|
+
cacheStripe(event, runtime, config);
|
|
61
|
+
|
|
62
|
+
// v0.12: context-health score + mitigation. Non-fatal.
|
|
63
|
+
contextHealth(event, ctx, runtime, config);
|
|
64
|
+
}
|