@remnic/core 1.1.9 → 1.1.10
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/access-cli.js +35 -32
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +8 -7
- package/dist/access-http.js +17 -14
- package/dist/access-mcp.d.ts +8 -7
- package/dist/access-mcp.js +16 -13
- package/dist/{access-service-BJCIjVRY.d.ts → access-service-BTTNyo1i.d.ts} +5 -3
- package/dist/access-service.d.ts +8 -7
- package/dist/access-service.js +15 -12
- package/dist/active-memory-bridge.d.ts +2 -1
- package/dist/active-recall.d.ts +2 -1
- package/dist/behavior-learner.d.ts +2 -1
- package/dist/behavior-signals.d.ts +2 -1
- package/dist/bootstrap.d.ts +7 -6
- package/dist/briefing.d.ts +3 -2
- package/dist/briefing.js +3 -3
- package/dist/buffer-surprise-report.d.ts +2 -1
- package/dist/buffer.d.ts +3 -2
- package/dist/calibration.d.ts +4 -1
- package/dist/calibration.js +10 -5
- package/dist/calibration.js.map +1 -1
- package/dist/causal-behavior.d.ts +2 -1
- package/dist/causal-consolidation.d.ts +5 -2
- package/dist/causal-consolidation.js +14 -8
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/{chunk-ICULSMDG.js → chunk-2YMTO4ZJ.js} +2 -2
- package/dist/{chunk-XL3UCAZA.js → chunk-363MWCD3.js} +35 -35
- package/dist/{chunk-PHQH2VUO.js → chunk-36CTNQY7.js} +7 -7
- package/dist/{chunk-XN4D6Z7X.js → chunk-4DXC6HQQ.js} +5 -3
- package/dist/chunk-4DXC6HQQ.js.map +1 -0
- package/dist/{chunk-OWGGXPKV.js → chunk-57QNCUEZ.js} +5 -5
- package/dist/{chunk-FPWUENQH.js → chunk-5GCNE7CN.js} +90 -486
- package/dist/chunk-5GCNE7CN.js.map +1 -0
- package/dist/{chunk-LOBRX7VD.js → chunk-5UM2VJ6D.js} +12 -1
- package/dist/chunk-5UM2VJ6D.js.map +1 -0
- package/dist/{chunk-KMWZXT5T.js → chunk-6XA7UN4Z.js} +2 -2
- package/dist/{chunk-G6NX57V2.js → chunk-C5HUWVH2.js} +2 -2
- package/dist/{chunk-NN3TS5BM.js → chunk-D54LZC5L.js} +4 -4
- package/dist/{chunk-3VRIIII5.js → chunk-ERUDW6DU.js} +65 -5
- package/dist/chunk-ERUDW6DU.js.map +1 -0
- package/dist/{chunk-U4SZXGEO.js → chunk-EYNQTST2.js} +2 -2
- package/dist/chunk-HJYHRE4S.js +647 -0
- package/dist/chunk-HJYHRE4S.js.map +1 -0
- package/dist/{chunk-M3DK45UM.js → chunk-I6BQZSML.js} +4 -4
- package/dist/chunk-IBX3VFOM.js +446 -0
- package/dist/chunk-IBX3VFOM.js.map +1 -0
- package/dist/{chunk-G3G3LY22.js → chunk-KBYWQWSB.js} +7 -7
- package/dist/chunk-KWBPHZUU.js +83 -0
- package/dist/chunk-KWBPHZUU.js.map +1 -0
- package/dist/{chunk-CTYRIJ5E.js → chunk-LIO5X3CM.js} +2 -2
- package/dist/{chunk-MJLUHRSF.js → chunk-MCC6KDQF.js} +2 -2
- package/dist/{chunk-J3P6WSFZ.js → chunk-O4XJUPSF.js} +2 -2
- package/dist/{chunk-6OAQEOGV.js → chunk-PB5KW5PL.js} +2 -2
- package/dist/{chunk-Y3VT6ZCP.js → chunk-PHNGXFQ6.js} +5 -3
- package/dist/chunk-PHNGXFQ6.js.map +1 -0
- package/dist/{chunk-2MVUXO4H.js → chunk-RXTFCYQF.js} +2 -2
- package/dist/{chunk-Q7FJ5ZHM.js → chunk-S3IP6R6K.js} +8 -2
- package/dist/{chunk-Q7FJ5ZHM.js.map → chunk-S3IP6R6K.js.map} +1 -1
- package/dist/{chunk-ET4BL42V.js → chunk-VQXK37XA.js} +1 -1
- package/dist/{chunk-ET4BL42V.js.map → chunk-VQXK37XA.js.map} +1 -1
- package/dist/{chunk-FLBYSB2V.js → chunk-VX2IUQFE.js} +94 -8
- package/dist/chunk-VX2IUQFE.js.map +1 -0
- package/dist/{chunk-QPLYTPYL.js → chunk-WGK4VHGP.js} +77 -15
- package/dist/chunk-WGK4VHGP.js.map +1 -0
- package/dist/{chunk-7SFAENUZ.js → chunk-WTFWLUSX.js} +2 -2
- package/dist/{chunk-A6PGANSE.js → chunk-Y5KDIOKF.js} +3 -3
- package/dist/{chunk-KIF7QNKL.js → chunk-Z5S5HNGY.js} +5 -3
- package/dist/chunk-Z5S5HNGY.js.map +1 -0
- package/dist/{chunk-BIHCWSWA.js → chunk-ZL4S7ARC.js} +3 -3
- package/dist/{cli-BojuyOOp.d.ts → cli-BrEwQTnW.d.ts} +4 -4
- package/dist/cli.d.ts +9 -8
- package/dist/cli.js +27 -25
- package/dist/codex-cli-fallback.d.ts +44 -0
- package/dist/codex-cli-fallback.js +12 -0
- package/dist/{codex-materialize-YVC2wb6n.d.ts → codex-materialize-CQlLTzke.d.ts} +1 -1
- package/dist/compression-optimizer.d.ts +2 -1
- package/dist/config.d.ts +2 -1
- package/dist/consolidation-provenance-check.d.ts +3 -2
- package/dist/consolidation-undo.d.ts +3 -2
- package/dist/day-summary.d.ts +2 -1
- package/dist/delinearize.d.ts +2 -1
- package/dist/direct-answer-wiring.d.ts +2 -1
- package/dist/direct-answer.d.ts +2 -1
- package/dist/embedding-fallback.d.ts +2 -1
- package/dist/{engine-EDFFOWDD.js → engine-FOC3IJLA.js} +4 -4
- package/dist/entity-retrieval.d.ts +3 -2
- package/dist/entity-retrieval.js +3 -3
- package/dist/entity-schema.d.ts +2 -1
- package/dist/explicit-capture.d.ts +7 -6
- package/dist/explicit-cue-recall.js +1 -1
- package/dist/extraction-judge-telemetry.d.ts +2 -1
- package/dist/extraction-judge-training.d.ts +2 -1
- package/dist/extraction-judge.d.ts +2 -1
- package/dist/extraction.d.ts +2 -1
- package/dist/extraction.js +6 -4
- package/dist/fallback-llm.d.ts +8 -1
- package/dist/fallback-llm.js +5 -3
- package/dist/identity-continuity.d.ts +2 -1
- package/dist/importance.d.ts +2 -1
- package/dist/index-1qIcnbG1.d.ts +34 -0
- package/dist/index.d.ts +15 -13
- package/dist/index.js +57 -50
- package/dist/index.js.map +1 -1
- package/dist/intent.d.ts +2 -1
- package/dist/lifecycle.d.ts +2 -1
- package/dist/live-connectors-runner.d.ts +2 -1
- package/dist/local-llm.d.ts +2 -1
- package/dist/memory-action-policy.d.ts +2 -1
- package/dist/memory-cache.d.ts +2 -1
- package/dist/{memory-governance-AAQPBZEP.js → memory-governance-F3QOJGEY.js} +4 -4
- package/dist/memory-governance-F3QOJGEY.js.map +1 -0
- package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
- package/dist/{memory-projection-store-BW8u5U0u.d.ts → memory-projection-store-CY8TU40w.d.ts} +1 -1
- package/dist/memory-projection-store.d.ts +3 -2
- package/dist/memory-worth-outcomes.d.ts +3 -2
- package/dist/models-json.d.ts +2 -1
- package/dist/native-knowledge.d.ts +2 -1
- package/dist/objective-state-writers.d.ts +23 -1
- package/dist/objective-state-writers.js +10 -306
- package/dist/objective-state-writers.js.map +1 -1
- package/dist/objective-state.d.ts +7 -1
- package/dist/objective-state.js +3 -1
- package/dist/operator-toolkit.d.ts +3 -2
- package/dist/operator-toolkit.js +6 -6
- package/dist/{orchestrator-CYqmqxco.d.ts → orchestrator-6IvQ-Phj.d.ts} +4 -3
- package/dist/orchestrator.d.ts +7 -6
- package/dist/orchestrator.js +29 -27
- package/dist/patterns-cli.d.ts +2 -1
- package/dist/policy-runtime.d.ts +2 -1
- package/dist/{port-Br27H8dy.d.ts → port-B6VEDIkC.d.ts} +1 -1
- package/dist/qmd-recall-cache.d.ts +3 -2
- package/dist/qmd.d.ts +3 -2
- package/dist/recall-disclosure-escalation.d.ts +2 -1
- package/dist/recall-explain-renderer.d.ts +2 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-state.d.ts +2 -1
- package/dist/recall-tag-filter.d.ts +2 -1
- package/dist/recall-xray-cli.d.ts +2 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +2 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +2 -1
- package/dist/recall-xray.js +2 -2
- package/dist/resolve-auth-token.d.ts +2 -1
- package/dist/resolve-provider-secret.d.ts +2 -1
- package/dist/resolve-provider-secret.js +3 -1
- package/dist/resume-bundles.js +3 -3
- package/dist/retrieval-agents.d.ts +3 -2
- package/dist/retrieval-tiers.d.ts +2 -1
- package/dist/{semantic-consolidation-GPcLr9BQ.d.ts → semantic-consolidation-ByBXb-sf.d.ts} +2 -2
- package/dist/semantic-consolidation.d.ts +4 -3
- package/dist/semantic-consolidation.js +3 -3
- package/dist/semantic-rule-promotion.js +3 -3
- package/dist/semantic-rule-verifier.d.ts +2 -1
- package/dist/semantic-rule-verifier.js +3 -3
- package/dist/session-observer-bands.d.ts +2 -1
- package/dist/session-observer-state.d.ts +2 -1
- package/dist/signal.d.ts +2 -1
- package/dist/storage.d.ts +3 -2
- package/dist/storage.js +2 -2
- package/dist/summarizer.d.ts +2 -1
- package/dist/summarizer.js +6 -4
- package/dist/summary-snapshot.d.ts +2 -1
- package/dist/temporal-supersession.d.ts +3 -2
- package/dist/temporal-validity.d.ts +2 -1
- package/dist/threading.d.ts +2 -1
- package/dist/tier-migration.d.ts +4 -3
- package/dist/tier-routing.d.ts +2 -1
- package/dist/topics.d.ts +2 -1
- package/dist/transcript.d.ts +2 -1
- package/dist/types.d.ts +2693 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +2 -1
- package/dist/verified-recall.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-3VRIIII5.js.map +0 -1
- package/dist/chunk-FLBYSB2V.js.map +0 -1
- package/dist/chunk-FPWUENQH.js.map +0 -1
- package/dist/chunk-KIF7QNKL.js.map +0 -1
- package/dist/chunk-LOBRX7VD.js.map +0 -1
- package/dist/chunk-QPLYTPYL.js.map +0 -1
- package/dist/chunk-XN4D6Z7X.js.map +0 -1
- package/dist/chunk-Y3VT6ZCP.js.map +0 -1
- package/dist/types-Bmp9ssU2.d.ts +0 -2714
- /package/dist/{chunk-ICULSMDG.js.map → chunk-2YMTO4ZJ.js.map} +0 -0
- /package/dist/{chunk-XL3UCAZA.js.map → chunk-363MWCD3.js.map} +0 -0
- /package/dist/{chunk-PHQH2VUO.js.map → chunk-36CTNQY7.js.map} +0 -0
- /package/dist/{chunk-OWGGXPKV.js.map → chunk-57QNCUEZ.js.map} +0 -0
- /package/dist/{chunk-KMWZXT5T.js.map → chunk-6XA7UN4Z.js.map} +0 -0
- /package/dist/{chunk-G6NX57V2.js.map → chunk-C5HUWVH2.js.map} +0 -0
- /package/dist/{chunk-NN3TS5BM.js.map → chunk-D54LZC5L.js.map} +0 -0
- /package/dist/{chunk-U4SZXGEO.js.map → chunk-EYNQTST2.js.map} +0 -0
- /package/dist/{chunk-M3DK45UM.js.map → chunk-I6BQZSML.js.map} +0 -0
- /package/dist/{chunk-G3G3LY22.js.map → chunk-KBYWQWSB.js.map} +0 -0
- /package/dist/{chunk-CTYRIJ5E.js.map → chunk-LIO5X3CM.js.map} +0 -0
- /package/dist/{chunk-MJLUHRSF.js.map → chunk-MCC6KDQF.js.map} +0 -0
- /package/dist/{chunk-J3P6WSFZ.js.map → chunk-O4XJUPSF.js.map} +0 -0
- /package/dist/{chunk-6OAQEOGV.js.map → chunk-PB5KW5PL.js.map} +0 -0
- /package/dist/{chunk-2MVUXO4H.js.map → chunk-RXTFCYQF.js.map} +0 -0
- /package/dist/{chunk-7SFAENUZ.js.map → chunk-WTFWLUSX.js.map} +0 -0
- /package/dist/{chunk-A6PGANSE.js.map → chunk-Y5KDIOKF.js.map} +0 -0
- /package/dist/{chunk-BIHCWSWA.js.map → chunk-ZL4S7ARC.js.map} +0 -0
- /package/dist/{engine-EDFFOWDD.js.map → codex-cli-fallback.js.map} +0 -0
- /package/dist/{memory-governance-AAQPBZEP.js.map → engine-FOC3IJLA.js.map} +0 -0
|
@@ -36,6 +36,16 @@ function resolveObjectiveStateStoreDir(memoryDir, overrideDir) {
|
|
|
36
36
|
}
|
|
37
37
|
return path.join(memoryDir, "state", "objective-state");
|
|
38
38
|
}
|
|
39
|
+
function objectiveStateStoreOverrideForNamespace(options) {
|
|
40
|
+
const configured = options.configuredStoreDir?.trim();
|
|
41
|
+
if (!configured) return void 0;
|
|
42
|
+
if (!options.namespacesEnabled) return configured;
|
|
43
|
+
const defaultStoreDir = path.join(options.memoryDir, "state", "objective-state");
|
|
44
|
+
if (path.resolve(configured) === path.resolve(defaultStoreDir)) {
|
|
45
|
+
return void 0;
|
|
46
|
+
}
|
|
47
|
+
return path.join(configured, "namespaces", options.namespace);
|
|
48
|
+
}
|
|
39
49
|
function validateObjectiveStateSnapshot(raw) {
|
|
40
50
|
if (!isRecord(raw)) throw new Error("objective-state snapshot must be an object");
|
|
41
51
|
if (raw.schemaVersion !== 1) throw new Error("schemaVersion must be 1");
|
|
@@ -192,9 +202,10 @@ async function searchObjectiveStateSnapshots(options) {
|
|
|
192
202
|
|
|
193
203
|
export {
|
|
194
204
|
resolveObjectiveStateStoreDir,
|
|
205
|
+
objectiveStateStoreOverrideForNamespace,
|
|
195
206
|
validateObjectiveStateSnapshot,
|
|
196
207
|
recordObjectiveStateSnapshot,
|
|
197
208
|
getObjectiveStateStoreStatus,
|
|
198
209
|
searchObjectiveStateSnapshots
|
|
199
210
|
};
|
|
200
|
-
//# sourceMappingURL=chunk-
|
|
211
|
+
//# sourceMappingURL=chunk-5UM2VJ6D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/objective-state.ts"],"sourcesContent":["import path from \"node:path\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { listJsonFiles, readJsonFile } from \"./json-store.js\";\nimport {\n assertIsoRecordedAt,\n assertSafePathSegment,\n assertString,\n isRecord,\n optionalString,\n optionalStringArray,\n recordStoreDay,\n validateStringRecord,\n} from \"./store-contract.js\";\n\nexport type ObjectiveStateSnapshotSource = \"tool_result\" | \"cli\" | \"system\" | \"manual\";\nexport type ObjectiveStateSnapshotKind = \"tool\" | \"file\" | \"process\" | \"record\" | \"workspace\";\nexport type ObjectiveStateChangeKind = \"created\" | \"updated\" | \"deleted\" | \"observed\" | \"executed\" | \"failed\";\nexport type ObjectiveStateOutcome = \"success\" | \"failure\" | \"partial\" | \"unknown\";\n\nexport interface ObjectiveStateValueRef {\n exists?: boolean;\n ref?: string;\n valueHash?: string;\n}\n\nexport interface ObjectiveStateSnapshot {\n schemaVersion: 1;\n snapshotId: string;\n recordedAt: string;\n sessionKey: string;\n source: ObjectiveStateSnapshotSource;\n kind: ObjectiveStateSnapshotKind;\n changeKind: ObjectiveStateChangeKind;\n scope: string;\n summary: string;\n toolName?: string;\n command?: string;\n outcome?: ObjectiveStateOutcome;\n before?: ObjectiveStateValueRef;\n after?: ObjectiveStateValueRef;\n entityRefs?: string[];\n tags?: string[];\n metadata?: Record<string, string>;\n}\n\nexport interface ObjectiveStateStoreStatus {\n enabled: boolean;\n writesEnabled: boolean;\n rootDir: string;\n snapshotsDir: string;\n snapshots: {\n total: number;\n valid: number;\n invalid: number;\n byKind: Partial<Record<ObjectiveStateSnapshotKind, number>>;\n byOutcome: Partial<Record<ObjectiveStateOutcome, number>>;\n latestSnapshotId?: string;\n latestRecordedAt?: string;\n latestSessionKey?: string;\n };\n latestSnapshot?: ObjectiveStateSnapshot;\n invalidSnapshots: Array<{\n path: string;\n error: string;\n }>;\n}\n\nexport interface ObjectiveStateSearchResult {\n snapshot: ObjectiveStateSnapshot;\n score: number;\n}\n\nfunction validateValueRef(raw: unknown, field: string): ObjectiveStateValueRef | undefined {\n if (raw === undefined) return undefined;\n if (!isRecord(raw)) throw new Error(`${field} must be an object`);\n const exists = typeof raw.exists === \"boolean\" ? raw.exists : undefined;\n const ref = optionalString(raw.ref);\n const valueHash = optionalString(raw.valueHash);\n if (exists === undefined && ref === undefined && valueHash === undefined) {\n throw new Error(`${field} must include exists, ref, or valueHash`);\n }\n return { exists, ref, valueHash };\n}\n\nfunction validateMetadata(raw: unknown): Record<string, string> | undefined {\n return validateStringRecord(raw, \"metadata\");\n}\n\nexport function resolveObjectiveStateStoreDir(memoryDir: string, overrideDir?: string): string {\n if (typeof overrideDir === \"string\" && overrideDir.trim().length > 0) {\n return overrideDir.trim();\n }\n return path.join(memoryDir, \"state\", \"objective-state\");\n}\n\nexport function objectiveStateStoreOverrideForNamespace(options: {\n memoryDir: string;\n configuredStoreDir?: string;\n namespacesEnabled: boolean;\n namespace: string;\n}): string | undefined {\n const configured = options.configuredStoreDir?.trim();\n if (!configured) return undefined;\n if (!options.namespacesEnabled) return configured;\n\n const defaultStoreDir = path.join(options.memoryDir, \"state\", \"objective-state\");\n if (path.resolve(configured) === path.resolve(defaultStoreDir)) {\n return undefined;\n }\n return path.join(configured, \"namespaces\", options.namespace);\n}\n\nexport function validateObjectiveStateSnapshot(raw: unknown): ObjectiveStateSnapshot {\n if (!isRecord(raw)) throw new Error(\"objective-state snapshot must be an object\");\n if (raw.schemaVersion !== 1) throw new Error(\"schemaVersion must be 1\");\n\n const source = assertString(raw.source, \"source\");\n if (![\"tool_result\", \"cli\", \"system\", \"manual\"].includes(source)) {\n throw new Error(\"source must be one of tool_result|cli|system|manual\");\n }\n\n const kind = assertString(raw.kind, \"kind\");\n if (![\"tool\", \"file\", \"process\", \"record\", \"workspace\"].includes(kind)) {\n throw new Error(\"kind must be one of tool|file|process|record|workspace\");\n }\n\n const changeKind = assertString(raw.changeKind, \"changeKind\");\n if (![\"created\", \"updated\", \"deleted\", \"observed\", \"executed\", \"failed\"].includes(changeKind)) {\n throw new Error(\"changeKind must be one of created|updated|deleted|observed|executed|failed\");\n }\n\n const outcomeRaw = optionalString(raw.outcome);\n if (outcomeRaw !== undefined && ![\"success\", \"failure\", \"partial\", \"unknown\"].includes(outcomeRaw)) {\n throw new Error(\"outcome must be one of success|failure|partial|unknown\");\n }\n\n return {\n schemaVersion: 1,\n snapshotId: assertSafePathSegment(assertString(raw.snapshotId, \"snapshotId\"), \"snapshotId\"),\n recordedAt: assertIsoRecordedAt(assertString(raw.recordedAt, \"recordedAt\")),\n sessionKey: assertString(raw.sessionKey, \"sessionKey\"),\n source: source as ObjectiveStateSnapshotSource,\n kind: kind as ObjectiveStateSnapshotKind,\n changeKind: changeKind as ObjectiveStateChangeKind,\n scope: assertString(raw.scope, \"scope\"),\n summary: assertString(raw.summary, \"summary\"),\n toolName: optionalString(raw.toolName),\n command: optionalString(raw.command),\n outcome: outcomeRaw as ObjectiveStateOutcome | undefined,\n before: validateValueRef(raw.before, \"before\"),\n after: validateValueRef(raw.after, \"after\"),\n entityRefs: optionalStringArray(raw.entityRefs, \"entityRefs\"),\n tags: optionalStringArray(raw.tags, \"tags\"),\n metadata: validateMetadata(raw.metadata),\n };\n}\n\nexport async function recordObjectiveStateSnapshot(options: {\n memoryDir: string;\n objectiveStateStoreDir?: string;\n snapshot: ObjectiveStateSnapshot;\n}): Promise<string> {\n const rootDir = resolveObjectiveStateStoreDir(options.memoryDir, options.objectiveStateStoreDir);\n const validated = validateObjectiveStateSnapshot(options.snapshot);\n const day = recordStoreDay(validated.recordedAt);\n const snapshotsDir = path.join(rootDir, \"snapshots\", day);\n const filePath = path.join(snapshotsDir, `${validated.snapshotId}.json`);\n await mkdir(snapshotsDir, { recursive: true });\n await writeFile(filePath, JSON.stringify(validated, null, 2), \"utf8\");\n return filePath;\n}\n\nexport async function getObjectiveStateStoreStatus(options: {\n memoryDir: string;\n objectiveStateStoreDir?: string;\n enabled: boolean;\n writesEnabled: boolean;\n}): Promise<ObjectiveStateStoreStatus> {\n const rootDir = resolveObjectiveStateStoreDir(options.memoryDir, options.objectiveStateStoreDir);\n const snapshotsDir = path.join(rootDir, \"snapshots\");\n const { files, snapshots, invalidSnapshots } = await readObjectiveStateSnapshots(options);\n\n snapshots.sort((a, b) => b.recordedAt.localeCompare(a.recordedAt));\n const byKind: Partial<Record<ObjectiveStateSnapshotKind, number>> = {};\n const byOutcome: Partial<Record<ObjectiveStateOutcome, number>> = {};\n for (const snapshot of snapshots) {\n byKind[snapshot.kind] = (byKind[snapshot.kind] ?? 0) + 1;\n const outcome = snapshot.outcome ?? \"unknown\";\n byOutcome[outcome] = (byOutcome[outcome] ?? 0) + 1;\n }\n\n return {\n enabled: options.enabled,\n writesEnabled: options.writesEnabled,\n rootDir,\n snapshotsDir,\n snapshots: {\n total: files.length,\n valid: snapshots.length,\n invalid: invalidSnapshots.length,\n byKind,\n byOutcome,\n latestSnapshotId: snapshots[0]?.snapshotId,\n latestRecordedAt: snapshots[0]?.recordedAt,\n latestSessionKey: snapshots[0]?.sessionKey,\n },\n latestSnapshot: snapshots[0],\n invalidSnapshots,\n };\n}\n\nasync function readObjectiveStateSnapshots(options: {\n memoryDir: string;\n objectiveStateStoreDir?: string;\n}): Promise<{\n files: string[];\n snapshots: ObjectiveStateSnapshot[];\n invalidSnapshots: Array<{ path: string; error: string }>;\n}> {\n const rootDir = resolveObjectiveStateStoreDir(options.memoryDir, options.objectiveStateStoreDir);\n const files = await listJsonFiles(path.join(rootDir, \"snapshots\"));\n const snapshots: ObjectiveStateSnapshot[] = [];\n const invalidSnapshots: Array<{ path: string; error: string }> = [];\n for (const filePath of files) {\n try {\n snapshots.push(validateObjectiveStateSnapshot(await readJsonFile(filePath)));\n } catch (error) {\n invalidSnapshots.push({\n path: filePath,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return { files, snapshots, invalidSnapshots };\n}\n\nfunction normalizeTokens(value: string): string[] {\n return value\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .map((token) => token.trim())\n .filter((token) => token.length >= 2);\n}\n\nfunction overlapScore(queryTokens: Set<string>, value: string | undefined, weight: number): number {\n if (!value) return 0;\n const tokens = new Set(normalizeTokens(value));\n let matches = 0;\n for (const token of queryTokens) {\n if (tokens.has(token)) matches += 1;\n }\n return matches * weight;\n}\n\nfunction lexicalScoreObjectiveStateSnapshot(\n snapshot: ObjectiveStateSnapshot,\n queryTokens: Set<string>,\n): number {\n let score = 0;\n score += overlapScore(queryTokens, snapshot.scope, 4);\n score += overlapScore(queryTokens, snapshot.summary, 3);\n score += overlapScore(queryTokens, snapshot.command, 3);\n score += overlapScore(queryTokens, snapshot.toolName, 2);\n score += overlapScore(queryTokens, snapshot.tags?.join(\" \"), 2);\n score += overlapScore(queryTokens, snapshot.entityRefs?.join(\" \"), 2);\n score += overlapScore(queryTokens, snapshot.kind, 1);\n score += overlapScore(queryTokens, snapshot.changeKind, 1);\n score += overlapScore(queryTokens, snapshot.outcome, 1);\n return score;\n}\n\nfunction scoreObjectiveStateSnapshot(\n snapshot: ObjectiveStateSnapshot,\n lexicalScore: number,\n sessionKey?: string,\n): number {\n let score = lexicalScore;\n if (sessionKey && snapshot.sessionKey === sessionKey) score += 1.5;\n\n const recordedAtMs = Date.parse(snapshot.recordedAt);\n if (Number.isFinite(recordedAtMs)) {\n const ageHours = Math.max(0, (Date.now() - recordedAtMs) / 3_600_000);\n score += 1 / (1 + ageHours);\n }\n return score;\n}\n\nexport async function searchObjectiveStateSnapshots(options: {\n memoryDir: string;\n objectiveStateStoreDir?: string;\n query: string;\n maxResults: number;\n sessionKey?: string;\n}): Promise<ObjectiveStateSearchResult[]> {\n const maxResults = Math.max(0, Math.floor(options.maxResults));\n if (maxResults === 0) return [];\n\n const { snapshots } = await readObjectiveStateSnapshots(options);\n if (snapshots.length === 0) return [];\n\n const queryTokens = new Set(normalizeTokens(options.query));\n const scored = snapshots.map((snapshot) => {\n const lexicalScore = lexicalScoreObjectiveStateSnapshot(snapshot, queryTokens);\n return {\n snapshot,\n lexicalScore,\n score: scoreObjectiveStateSnapshot(snapshot, lexicalScore, options.sessionKey),\n };\n });\n\n const filtered = queryTokens.size === 0\n ? scored\n : scored.filter((result) => result.lexicalScore > 0);\n\n filtered.sort((left, right) => {\n if (right.score !== left.score) return right.score - left.score;\n return right.snapshot.recordedAt.localeCompare(left.snapshot.recordedAt);\n });\n return filtered.slice(0, maxResults);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StorageManager
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MCC6KDQF.js";
|
|
4
4
|
|
|
5
5
|
// src/semantic-rule-promotion.ts
|
|
6
6
|
function normalizeRuleWhitespace(value) {
|
|
@@ -132,4 +132,4 @@ async function promoteSemanticRuleFromMemory(options) {
|
|
|
132
132
|
export {
|
|
133
133
|
promoteSemanticRuleFromMemory
|
|
134
134
|
};
|
|
135
|
-
//# sourceMappingURL=chunk-
|
|
135
|
+
//# sourceMappingURL=chunk-6XA7UN4Z.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./chunk-DT5TVLJE.js";
|
|
10
10
|
import {
|
|
11
11
|
StorageManager
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-MCC6KDQF.js";
|
|
13
13
|
import {
|
|
14
14
|
isSemanticConsolidationLlmOperator
|
|
15
15
|
} from "./chunk-G7D6GZ5J.js";
|
|
@@ -888,4 +888,4 @@ export {
|
|
|
888
888
|
buildExtensionsBlockForConsolidation,
|
|
889
889
|
materializeAfterSemanticConsolidation
|
|
890
890
|
};
|
|
891
|
-
//# sourceMappingURL=chunk-
|
|
891
|
+
//# sourceMappingURL=chunk-C5HUWVH2.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
expandTildePath
|
|
3
|
-
} from "./chunk-IXEJRKCZ.js";
|
|
4
1
|
import {
|
|
5
2
|
launchProcessSync
|
|
6
3
|
} from "./chunk-OR64ZGRZ.js";
|
|
4
|
+
import {
|
|
5
|
+
expandTildePath
|
|
6
|
+
} from "./chunk-IXEJRKCZ.js";
|
|
7
7
|
|
|
8
8
|
// src/coding/git-context.ts
|
|
9
9
|
import path from "path";
|
|
@@ -144,4 +144,4 @@ export {
|
|
|
144
144
|
normalizeOriginUrl,
|
|
145
145
|
resolveGitContext
|
|
146
146
|
};
|
|
147
|
-
//# sourceMappingURL=chunk-
|
|
147
|
+
//# sourceMappingURL=chunk-D54LZC5L.js.map
|
|
@@ -238,6 +238,7 @@ async function collectTurnReferenceEvidence(options) {
|
|
|
238
238
|
await collectContentLabelReferenceEvidence({
|
|
239
239
|
engine: options.engine,
|
|
240
240
|
sessionId: options.sessionId,
|
|
241
|
+
query: options.query,
|
|
241
242
|
references,
|
|
242
243
|
evidenceItems: options.evidenceItems,
|
|
243
244
|
seenTurns: options.seenTurns
|
|
@@ -290,7 +291,9 @@ async function collectContentLabelReferenceEvidence(options) {
|
|
|
290
291
|
if (appendedWindows >= CONTENT_LABEL_MAX_PAIRED_WINDOWS_PER_REFERENCE) {
|
|
291
292
|
break;
|
|
292
293
|
}
|
|
293
|
-
const { fromTurn, toTurn } = contentLabelEvidenceWindow(hit
|
|
294
|
+
const { fromTurn, toTurn } = contentLabelEvidenceWindow(hit, {
|
|
295
|
+
includeSuccessor: hasSuccessorTrajectoryIntent(options.query)
|
|
296
|
+
});
|
|
294
297
|
const expanded = await options.engine.expandContext(
|
|
295
298
|
hit.session_id,
|
|
296
299
|
fromTurn,
|
|
@@ -369,18 +372,75 @@ function nearestTurnDistance(turnIndex, candidates) {
|
|
|
369
372
|
}
|
|
370
373
|
return nearest;
|
|
371
374
|
}
|
|
372
|
-
function contentLabelEvidenceWindow(hit) {
|
|
375
|
+
function contentLabelEvidenceWindow(hit, options = {}) {
|
|
376
|
+
const successorTurns = options.includeSuccessor === true ? 2 : 0;
|
|
373
377
|
if (hit.labelKind === "action") {
|
|
374
378
|
return {
|
|
375
379
|
fromTurn: Math.max(0, hit.turn_index - 1),
|
|
376
|
-
toTurn: hit.turn_index + 1
|
|
380
|
+
toTurn: hit.turn_index + 1 + successorTurns
|
|
377
381
|
};
|
|
378
382
|
}
|
|
379
383
|
return {
|
|
380
384
|
fromTurn: Math.max(0, hit.turn_index - 1),
|
|
381
|
-
toTurn: hit.turn_index
|
|
385
|
+
toTurn: hit.turn_index + successorTurns
|
|
382
386
|
};
|
|
383
387
|
}
|
|
388
|
+
function hasSuccessorTrajectoryIntent(query) {
|
|
389
|
+
const raw = query.toLowerCase();
|
|
390
|
+
const normalized = raw.replace(/[^a-z0-9]+/g, " ").trim();
|
|
391
|
+
if ([
|
|
392
|
+
/\bafter\s+(?:step|action|observation|turn)\s+\d+\b/,
|
|
393
|
+
/\b(?:next|following|subsequent|successor)\s+(?:step|action|observation|turn)\b/,
|
|
394
|
+
/\b(?:step|action|observation|turn)\s+\d+\s+(?:then|and then)\b/,
|
|
395
|
+
/\bwhat\s+(?:happened|came|occurred)\s+next\b/
|
|
396
|
+
].some((pattern) => pattern.test(normalized))) {
|
|
397
|
+
return true;
|
|
398
|
+
}
|
|
399
|
+
if (!hasLoopExitIntent(normalized)) {
|
|
400
|
+
return false;
|
|
401
|
+
}
|
|
402
|
+
if (!hasBoundedTrajectoryReference(raw)) {
|
|
403
|
+
return true;
|
|
404
|
+
}
|
|
405
|
+
return !asksForActionInsideBoundedRange(normalized) && hasNamedTrajectoryActionCue(normalized);
|
|
406
|
+
}
|
|
407
|
+
function hasBoundedTrajectoryReference(query) {
|
|
408
|
+
return hasBoundedTrajectoryRange(query) || hasSingleTrajectoryReference(query);
|
|
409
|
+
}
|
|
410
|
+
function hasLoopExitIntent(normalizedQuery) {
|
|
411
|
+
const exitVerbs = "(?:breaks?|breaking|broke|ends?|ending|ended|stops?|stopping|stopped)";
|
|
412
|
+
const loopNouns = "(?:loop|cycle|pattern|sequence)";
|
|
413
|
+
return [
|
|
414
|
+
new RegExp(
|
|
415
|
+
`\\b${exitVerbs}\\s+(?:out\\s+of\\s+)?(?:this|that|the|a|an)?\\s*${loopNouns}\\b`
|
|
416
|
+
),
|
|
417
|
+
new RegExp(
|
|
418
|
+
`\\b${loopNouns}\\s+(?:${exitVerbs}|is\\s+${exitVerbs}|was\\s+${exitVerbs})\\b`
|
|
419
|
+
)
|
|
420
|
+
].some((pattern) => pattern.test(normalizedQuery));
|
|
421
|
+
}
|
|
422
|
+
function hasBoundedTrajectoryRange(query) {
|
|
423
|
+
return [
|
|
424
|
+
/\b(?:between|from|in|during|within)\s+(?:steps?|actions?|observations?|turns?)\s+#?\d+\s*(?:-|\u2013|\u2014|\bto\b|\bthrough\b|\bthru\b|\band\b)\s*#?\d+\b/,
|
|
425
|
+
/\b(?:steps?|actions?|observations?|turns?)\s+#?\d+\s*(?:-|\u2013|\u2014|\bto\b|\bthrough\b|\bthru\b)\s*#?\d+\b/
|
|
426
|
+
].some((pattern) => pattern.test(query));
|
|
427
|
+
}
|
|
428
|
+
function hasSingleTrajectoryReference(query) {
|
|
429
|
+
return /\b(?:in|during|within|at|on)?\s*(?:steps?|actions?|observations?|turns?)\s+#?\d+\b/.test(
|
|
430
|
+
query
|
|
431
|
+
);
|
|
432
|
+
}
|
|
433
|
+
function asksForActionInsideBoundedRange(normalizedQuery) {
|
|
434
|
+
return /\b(?:which|what)\s+(?:single\s+)?(?:action|move|step|maneuver)\s+(?:broke|breaks|breaking|ended|ends|stopped|stops|mattered|accomplished|advanced)\b/.test(
|
|
435
|
+
normalizedQuery
|
|
436
|
+
);
|
|
437
|
+
}
|
|
438
|
+
function hasNamedTrajectoryActionCue(normalizedQuery) {
|
|
439
|
+
const actions = "(?:up|down|left|right|wait|stay|push|pull|open|close|use|enter|exit)";
|
|
440
|
+
return new RegExp(
|
|
441
|
+
`\\b(?:${actions}\\s+(?:action|move|step|maneuver)|(?:action|move|step|maneuver)\\s+${actions})\\b`
|
|
442
|
+
).test(normalizedQuery);
|
|
443
|
+
}
|
|
384
444
|
function contentHasReferenceLabel(content, labelKind, referenceNumber) {
|
|
385
445
|
const label = labelKind === "action" ? "Action" : "Observation";
|
|
386
446
|
const escapedNumber = String(referenceNumber).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
@@ -902,4 +962,4 @@ export {
|
|
|
902
962
|
collectStructuredPlanCues,
|
|
903
963
|
collectTemporalLexicalCues
|
|
904
964
|
};
|
|
905
|
-
//# sourceMappingURL=chunk-
|
|
965
|
+
//# sourceMappingURL=chunk-ERUDW6DU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/explicit-cue-recall.ts"],"sourcesContent":["import { buildEvidencePack } from \"./evidence-pack.js\";\n\nexport interface ExplicitCueRecallEngine {\n expandContext(\n sessionId: string,\n fromTurn: number,\n toTurn: number,\n maxTokens: number,\n ): Promise<Array<{ turn_index: number; role: string; content: string }>>;\n searchContextFull(\n query: string,\n limit: number,\n sessionId?: string,\n ): Promise<\n Array<{\n turn_index: number;\n role: string;\n content: string;\n session_id: string;\n score?: number;\n }>\n >;\n}\n\nexport interface ExplicitCueRecallOptions {\n engine: ExplicitCueRecallEngine | null | undefined;\n sessionId?: string;\n query: string;\n maxChars: number;\n maxItemChars?: number;\n maxReferences?: number;\n includeBenchmarkAnchorCues?: boolean;\n includeStructuredPlanCues?: boolean;\n}\n\nexport type ExplicitTurnReference = {\n number: number;\n includeDirectTurn: boolean;\n};\n\nconst DEFAULT_MAX_CHARS = 2_400;\nconst DEFAULT_MAX_ITEM_CHARS = 1_200;\nconst DEFAULT_MAX_REFERENCES = 24;\nconst REFERENCE_SCAN_TOKEN_FACTOR = 3;\nconst TURN_REFERENCE_WINDOW_RADIUS = 0;\nconst LEXICAL_CUE_WINDOW_RADIUS = 1;\nconst LEXICAL_CUE_SEARCH_LIMIT = 3;\nconst LEXICAL_CUE_MAX_TOKENS = 400;\nconst CONTENT_LABEL_SEARCH_LIMIT = 64;\nconst CONTENT_LABEL_MAX_TOKENS = 2_000;\nconst CONTENT_LABEL_MAX_PAIRED_WINDOWS_PER_REFERENCE = 1;\nconst LATEST_STATE_CUES = new Set([\n \"as of\",\n \"currently\",\n \"latest\",\n \"most recent\",\n \"newest\",\n \"now\",\n \"updated\",\n \"changed\",\n \"change\",\n]);\nconst STRUCTURED_PLAN_FIELD_CUES = new Set([\n \"accommodation\",\n \"attraction\",\n \"breakfast\",\n \"current city\",\n \"dinner\",\n \"flight\",\n \"flights\",\n \"hotel\",\n \"lunch\",\n \"restaurant\",\n \"restaurants\",\n \"transportation\",\n \"traveler\",\n \"travelers\",\n]);\nconst STRUCTURED_PLAN_DEPENDENCY_CUES = new Set([\n \"comparison\",\n \"constraint\",\n \"constraints\",\n \"dependency\",\n \"dependencies\",\n \"join\",\n \"same\",\n \"shared\",\n]);\nconst BENCHMARK_ABILITY_CUES = new Map([\n [\"information extraction\", \"ability=information_extraction\"],\n [\"knowledge update\", \"ability=knowledge_update\"],\n [\"multi session reasoning\", \"ability=multi_session_reasoning\"],\n [\"multi-session reasoning\", \"ability=multi_session_reasoning\"],\n [\"instruction following\", \"ability=instruction_following\"],\n]);\nconst BENCHMARK_ANCHOR_VALUE_STOPWORDS = new Set([\n \"a\",\n \"about\",\n \"an\",\n \"for\",\n \"from\",\n \"in\",\n \"on\",\n \"the\",\n \"to\",\n \"use\",\n \"using\",\n \"with\",\n]);\nconst RELATIVE_TEMPORAL_CUES = [\n \"as of\",\n \"most recent\",\n \"last time\",\n \"last week\",\n \"last month\",\n \"last year\",\n \"last session\",\n \"last conversation\",\n \"next time\",\n \"next week\",\n \"next month\",\n \"next year\",\n \"next session\",\n \"next conversation\",\n \"previous time\",\n \"previous week\",\n \"previous month\",\n \"previous year\",\n \"previous session\",\n \"previous conversation\",\n \"prior time\",\n \"prior week\",\n \"prior month\",\n \"prior year\",\n \"prior session\",\n \"prior conversation\",\n \"today\",\n \"yesterday\",\n \"tomorrow\",\n \"tonight\",\n \"earlier\",\n \"later\",\n \"recently\",\n \"previously\",\n \"currently\",\n \"now\",\n \"latest\",\n \"newest\",\n \"oldest\",\n \"earliest\",\n \"before\",\n \"after\",\n \"since\",\n \"updated\",\n \"changed\",\n \"change\",\n];\nconst SPEAKER_NAME_STOPWORDS = new Set([\n \"A\",\n \"According\",\n \"An\",\n \"And\",\n \"Are\",\n \"As\",\n \"At\",\n \"Before\",\n \"Can\",\n \"Compare\",\n \"Could\",\n \"Did\",\n \"Do\",\n \"Does\",\n \"For\",\n \"From\",\n \"Had\",\n \"Has\",\n \"Have\",\n \"How\",\n \"In\",\n \"Is\",\n \"It\",\n \"Join\",\n \"Of\",\n \"On\",\n \"Or\",\n \"Please\",\n \"Review\",\n \"Step\",\n \"Tell\",\n \"The\",\n \"To\",\n \"Turn\",\n \"Use\",\n \"Was\",\n \"Were\",\n \"What\",\n \"When\",\n \"Where\",\n \"Which\",\n \"Who\",\n \"Why\",\n \"Will\",\n \"Would\",\n]);\nconst QUESTION_SLOT_STOPWORDS = new Set([\n \"answer\",\n \"choice\",\n \"did\",\n \"does\",\n \"do\",\n \"is\",\n \"should\",\n \"single\",\n \"the\",\n \"user\",\n \"was\",\n \"were\",\n]);\n\nexport async function buildExplicitCueRecallSection(\n options: ExplicitCueRecallOptions,\n): Promise<string> {\n const engine = options.engine;\n const query = options.query.trim();\n const maxChars = normalizePositiveInteger(options.maxChars, DEFAULT_MAX_CHARS);\n if (!engine || query.length === 0 || maxChars <= 0) {\n return \"\";\n }\n\n const maxReferences = normalizePositiveInteger(\n options.maxReferences,\n DEFAULT_MAX_REFERENCES,\n );\n if (maxReferences <= 0) {\n return \"\";\n }\n\n const evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n score?: number;\n }> = [];\n const seenTurns = new Set<string>();\n\n await collectTurnReferenceEvidence({\n engine,\n sessionId: options.sessionId,\n query,\n maxReferences,\n evidenceItems,\n seenTurns,\n });\n\n await collectLexicalCueEvidence({\n engine,\n sessionId: options.sessionId,\n query,\n maxReferences,\n includeBenchmarkAnchorCues: options.includeBenchmarkAnchorCues,\n includeStructuredPlanCues: options.includeStructuredPlanCues,\n evidenceItems,\n seenTurns,\n });\n\n return buildEvidencePack(evidenceItems, {\n title: \"Explicit Cue Evidence\",\n maxChars,\n maxItemChars: normalizePositiveInteger(\n options.maxItemChars,\n DEFAULT_MAX_ITEM_CHARS,\n ),\n });\n}\n\nasync function collectTurnReferenceEvidence(options: {\n engine: ExplicitCueRecallEngine;\n sessionId?: string;\n query: string;\n maxReferences: number;\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n }>;\n seenTurns: Set<string>;\n}): Promise<void> {\n if (!options.sessionId) {\n return;\n }\n\n const references = collectExplicitTurnReferences(options.query).slice(\n 0,\n options.maxReferences,\n );\n if (references.length === 0) {\n return;\n }\n\n await collectContentLabelReferenceEvidence({\n engine: options.engine,\n sessionId: options.sessionId,\n query: options.query,\n references,\n evidenceItems: options.evidenceItems,\n seenTurns: options.seenTurns,\n });\n\n const windows = new Map<string, { fromTurn: number; toTurn: number }>();\n for (const reference of references) {\n for (const center of candidateTurnIndexesForReference(reference)) {\n if (center < 0) {\n continue;\n }\n\n const fromTurn = Math.max(0, center - TURN_REFERENCE_WINDOW_RADIUS);\n const toTurn = center + TURN_REFERENCE_WINDOW_RADIUS;\n windows.set(`${fromTurn}:${toTurn}`, { fromTurn, toTurn });\n }\n }\n\n for (const window of [...windows.values()].sort(\n (left, right) => left.fromTurn - right.fromTurn || left.toTurn - right.toTurn,\n )) {\n const expanded = await options.engine.expandContext(\n options.sessionId,\n window.fromTurn,\n window.toTurn,\n 2_000,\n );\n appendExpandedEvidence(\n options.evidenceItems,\n options.seenTurns,\n options.sessionId,\n expanded,\n );\n }\n}\n\nasync function collectContentLabelReferenceEvidence(options: {\n engine: ExplicitCueRecallEngine;\n sessionId?: string;\n query: string;\n references: ExplicitTurnReference[];\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n }>;\n seenTurns: Set<string>;\n}): Promise<Set<number>> {\n const resolved = new Set<number>();\n\n for (const reference of options.references) {\n if (reference.includeDirectTurn) {\n continue;\n }\n\n const hits = await searchReferenceContentLabels(\n options.engine,\n reference.number,\n options.sessionId,\n );\n if (hits.length === 0) {\n continue;\n }\n\n resolved.add(reference.number);\n let appendedWindows = 0;\n for (const hit of hits) {\n if (appendedWindows >= CONTENT_LABEL_MAX_PAIRED_WINDOWS_PER_REFERENCE) {\n break;\n }\n\n const { fromTurn, toTurn } = contentLabelEvidenceWindow(hit, {\n includeSuccessor: hasSuccessorTrajectoryIntent(options.query),\n });\n const expanded = await options.engine.expandContext(\n hit.session_id,\n fromTurn,\n toTurn,\n CONTENT_LABEL_MAX_TOKENS,\n );\n if (!expandedHasPairedTrajectoryLabels(expanded, reference.number)) {\n continue;\n }\n if (expanded.length === 0) {\n appendEvidenceItem(options.evidenceItems, options.seenTurns, {\n id: `${hit.session_id}:${hit.turn_index}`,\n sessionId: hit.session_id,\n turnIndex: hit.turn_index,\n role: hit.role,\n content: hit.content,\n });\n continue;\n }\n appendExpandedEvidence(\n options.evidenceItems,\n options.seenTurns,\n hit.session_id,\n expanded,\n );\n appendedWindows += 1;\n }\n }\n\n return resolved;\n}\n\nasync function searchReferenceContentLabels(\n engine: ExplicitCueRecallEngine,\n referenceNumber: number,\n sessionId?: string,\n): Promise<\n Array<{\n turn_index: number;\n role: string;\n content: string;\n session_id: string;\n labelKind: \"action\" | \"observation\";\n }>\n> {\n const hits = new Map<\n string,\n {\n turn_index: number;\n role: string;\n content: string;\n session_id: string;\n labelKind: \"action\" | \"observation\";\n }\n >();\n\n for (const labelKind of [\"action\", \"observation\"] as const) {\n const label = labelKind === \"action\" ? \"Action\" : \"Observation\";\n for (const query of [`[${label} ${referenceNumber}]`, `${label} ${referenceNumber}`]) {\n const results = await engine.searchContextFull(\n query,\n CONTENT_LABEL_SEARCH_LIMIT,\n sessionId,\n );\n for (const result of results) {\n if (\n !isReferenceLabelRole(result.role, labelKind) ||\n !contentHasReferenceLabel(result.content, labelKind, referenceNumber)\n ) {\n continue;\n }\n hits.set(`${result.session_id}:${result.turn_index}:${labelKind}`, {\n turn_index: result.turn_index,\n role: result.role,\n content: result.content,\n session_id: result.session_id,\n labelKind,\n });\n }\n }\n }\n\n const numericCandidates = candidateTurnIndexesForReference({\n number: referenceNumber,\n includeDirectTurn: false,\n });\n return [...hits.values()].sort((left, right) => {\n const sessionOrder = left.session_id.localeCompare(right.session_id);\n if (sessionOrder !== 0) {\n return sessionOrder;\n }\n const leftDistance = nearestTurnDistance(left.turn_index, numericCandidates);\n const rightDistance = nearestTurnDistance(right.turn_index, numericCandidates);\n if (leftDistance !== rightDistance) {\n return leftDistance - rightDistance;\n }\n return left.turn_index - right.turn_index || left.labelKind.localeCompare(right.labelKind);\n });\n}\n\nfunction nearestTurnDistance(turnIndex: number, candidates: readonly number[]): number {\n let nearest = Number.POSITIVE_INFINITY;\n for (const candidate of candidates) {\n nearest = Math.min(nearest, Math.abs(turnIndex - candidate));\n }\n return nearest;\n}\n\nfunction contentLabelEvidenceWindow(hit: {\n turn_index: number;\n labelKind: \"action\" | \"observation\";\n}, options: { includeSuccessor?: boolean } = {}): { fromTurn: number; toTurn: number } {\n const successorTurns = options.includeSuccessor === true ? 2 : 0;\n if (hit.labelKind === \"action\") {\n return {\n fromTurn: Math.max(0, hit.turn_index - 1),\n toTurn: hit.turn_index + 1 + successorTurns,\n };\n }\n\n return {\n fromTurn: Math.max(0, hit.turn_index - 1),\n toTurn: hit.turn_index + successorTurns,\n };\n}\n\nfunction hasSuccessorTrajectoryIntent(query: string): boolean {\n const raw = query.toLowerCase();\n const normalized = raw.replace(/[^a-z0-9]+/g, \" \").trim();\n if ([\n /\\bafter\\s+(?:step|action|observation|turn)\\s+\\d+\\b/,\n /\\b(?:next|following|subsequent|successor)\\s+(?:step|action|observation|turn)\\b/,\n /\\b(?:step|action|observation|turn)\\s+\\d+\\s+(?:then|and then)\\b/,\n /\\bwhat\\s+(?:happened|came|occurred)\\s+next\\b/,\n ].some((pattern) => pattern.test(normalized))) {\n return true;\n }\n\n if (!hasLoopExitIntent(normalized)) {\n return false;\n }\n\n if (!hasBoundedTrajectoryReference(raw)) {\n return true;\n }\n\n return !asksForActionInsideBoundedRange(normalized) &&\n hasNamedTrajectoryActionCue(normalized);\n}\n\nfunction hasBoundedTrajectoryReference(query: string): boolean {\n return hasBoundedTrajectoryRange(query) || hasSingleTrajectoryReference(query);\n}\n\nfunction hasLoopExitIntent(normalizedQuery: string): boolean {\n const exitVerbs = \"(?:breaks?|breaking|broke|ends?|ending|ended|stops?|stopping|stopped)\";\n const loopNouns = \"(?:loop|cycle|pattern|sequence)\";\n return [\n new RegExp(\n `\\\\b${exitVerbs}\\\\s+(?:out\\\\s+of\\\\s+)?(?:this|that|the|a|an)?\\\\s*${loopNouns}\\\\b`,\n ),\n new RegExp(\n `\\\\b${loopNouns}\\\\s+(?:${exitVerbs}|is\\\\s+${exitVerbs}|was\\\\s+${exitVerbs})\\\\b`,\n ),\n ].some((pattern) => pattern.test(normalizedQuery));\n}\n\nfunction hasBoundedTrajectoryRange(query: string): boolean {\n return [\n /\\b(?:between|from|in|during|within)\\s+(?:steps?|actions?|observations?|turns?)\\s+#?\\d+\\s*(?:-|\\u2013|\\u2014|\\bto\\b|\\bthrough\\b|\\bthru\\b|\\band\\b)\\s*#?\\d+\\b/,\n /\\b(?:steps?|actions?|observations?|turns?)\\s+#?\\d+\\s*(?:-|\\u2013|\\u2014|\\bto\\b|\\bthrough\\b|\\bthru\\b)\\s*#?\\d+\\b/,\n ].some((pattern) => pattern.test(query));\n}\n\nfunction hasSingleTrajectoryReference(query: string): boolean {\n return /\\b(?:in|during|within|at|on)?\\s*(?:steps?|actions?|observations?|turns?)\\s+#?\\d+\\b/.test(\n query,\n );\n}\n\nfunction asksForActionInsideBoundedRange(normalizedQuery: string): boolean {\n return /\\b(?:which|what)\\s+(?:single\\s+)?(?:action|move|step|maneuver)\\s+(?:broke|breaks|breaking|ended|ends|stopped|stops|mattered|accomplished|advanced)\\b/.test(\n normalizedQuery,\n );\n}\n\nfunction hasNamedTrajectoryActionCue(normalizedQuery: string): boolean {\n const actions = \"(?:up|down|left|right|wait|stay|push|pull|open|close|use|enter|exit)\";\n return new RegExp(\n `\\\\b(?:${actions}\\\\s+(?:action|move|step|maneuver)|(?:action|move|step|maneuver)\\\\s+${actions})\\\\b`,\n ).test(normalizedQuery);\n}\n\nfunction contentHasReferenceLabel(\n content: string,\n labelKind: \"action\" | \"observation\",\n referenceNumber: number,\n): boolean {\n const label = labelKind === \"action\" ? \"Action\" : \"Observation\";\n const escapedNumber = String(referenceNumber).replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n return new RegExp(\n `^\\\\s*\\\\[\\\\s*${label}\\\\s+${escapedNumber}\\\\s*\\\\]\\\\s*(?::\\\\s*)?`,\n \"i\",\n ).test(content);\n}\n\nfunction isReferenceLabelRole(\n role: string,\n labelKind: \"action\" | \"observation\",\n): boolean {\n if (labelKind === \"action\") {\n return role === \"user\";\n }\n return role === \"assistant\";\n}\n\nfunction expandedHasPairedTrajectoryLabels(\n expanded: Array<{ role: string; content: string }>,\n referenceNumber: number,\n): boolean {\n let hasAction = false;\n let hasObservation = false;\n for (const message of expanded) {\n if (\n isReferenceLabelRole(message.role, \"action\") &&\n contentHasReferenceLabel(message.content, \"action\", referenceNumber)\n ) {\n hasAction = true;\n }\n if (\n isReferenceLabelRole(message.role, \"observation\") &&\n contentHasReferenceLabel(message.content, \"observation\", referenceNumber)\n ) {\n hasObservation = true;\n }\n }\n return hasAction && hasObservation;\n}\n\nasync function collectLexicalCueEvidence(options: {\n engine: ExplicitCueRecallEngine;\n sessionId?: string;\n query: string;\n maxReferences: number;\n includeBenchmarkAnchorCues?: boolean;\n includeStructuredPlanCues?: boolean;\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n score?: number;\n }>;\n seenTurns: Set<string>;\n}): Promise<void> {\n const cues = collectLexicalCues(options.query, {\n includeBenchmarkAnchorCues: options.includeBenchmarkAnchorCues,\n includeStructuredPlanCues: options.includeStructuredPlanCues,\n }).slice(0, options.maxReferences);\n const preferLatest = hasLatestStateIntent(options.query);\n for (const cue of cues) {\n const results = sortLexicalCueResults(\n await options.engine.searchContextFull(\n cue,\n LEXICAL_CUE_SEARCH_LIMIT,\n options.sessionId,\n ),\n preferLatest,\n );\n for (const result of results) {\n const windowRadius = preferLatest ? 0 : LEXICAL_CUE_WINDOW_RADIUS;\n const fromTurn = Math.max(0, result.turn_index - windowRadius);\n const toTurn = result.turn_index + windowRadius;\n const expanded = await options.engine.expandContext(\n result.session_id,\n fromTurn,\n toTurn,\n LEXICAL_CUE_MAX_TOKENS,\n );\n if (expanded.length === 0) {\n appendEvidenceItem(options.evidenceItems, options.seenTurns, {\n id: `${result.session_id}:${result.turn_index}`,\n sessionId: result.session_id,\n turnIndex: result.turn_index,\n role: result.role,\n content: result.content,\n ...(typeof result.score === \"number\" ? { score: result.score } : {}),\n });\n continue;\n }\n appendExpandedEvidence(\n options.evidenceItems,\n options.seenTurns,\n result.session_id,\n expanded,\n );\n }\n }\n}\n\nfunction appendExpandedEvidence(\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n }>,\n seenTurns: Set<string>,\n sessionId: string,\n expanded: Array<{ turn_index: number; role: string; content: string }>,\n): void {\n for (const message of expanded) {\n appendEvidenceItem(evidenceItems, seenTurns, {\n id: `${sessionId}:${message.turn_index}`,\n sessionId,\n turnIndex: message.turn_index,\n role: message.role,\n content: message.content,\n });\n }\n}\n\nfunction appendEvidenceItem<T extends { id: string }>(\n evidenceItems: T[],\n seenTurns: Set<string>,\n item: T,\n): void {\n if (seenTurns.has(item.id)) {\n return;\n }\n seenTurns.add(item.id);\n evidenceItems.push(item);\n}\n\nexport function collectExplicitTurnReferences(\n query: string,\n): ExplicitTurnReference[] {\n const references = new Map<string, ExplicitTurnReference>();\n const addReference = (value: number, label: string) => {\n const existing = references.get(String(value));\n references.set(String(value), {\n number: value,\n includeDirectTurn:\n (existing?.includeDirectTurn ?? false) || label === \"turn\",\n });\n };\n\n const tokens = tokenizeReferenceQuery(query);\n for (let index = 0; index < tokens.length; index += 1) {\n const label = normalizeReferenceLabel(tokens[index]);\n if (!label) {\n continue;\n }\n\n const parsed = parseReferenceNumbers(tokens, index + 1);\n for (const number of parsed.numbers) {\n addReference(number, label);\n }\n index = Math.max(index, parsed.nextIndex - 1);\n }\n\n return [...references.values()].sort((left, right) => left.number - right.number);\n}\n\nexport function collectLexicalCues(\n query: string,\n options: {\n includeBenchmarkAnchorCues?: boolean;\n includeStructuredPlanCues?: boolean;\n } = {},\n): string[] {\n const cues = new Set<string>();\n\n for (const match of query.matchAll(/\\b[A-Za-z][A-Za-z0-9]{0,12}\\d+:\\d+\\b/g)) {\n cues.add(match[0]);\n }\n for (const match of query.matchAll(/\\b\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2})?Z?)?\\b/g)) {\n cues.add(match[0]);\n }\n for (const cue of collectTemporalLexicalCues(query)) {\n cues.add(cue);\n }\n for (const cue of collectQuestionSlotCues(query)) {\n cues.add(cue);\n }\n if (options.includeBenchmarkAnchorCues) {\n for (const cue of collectBenchmarkAnchorCues(query)) {\n cues.add(cue);\n }\n }\n if (options.includeStructuredPlanCues) {\n for (const cue of collectStructuredPlanCues(query)) {\n cues.add(cue);\n }\n }\n for (const match of query.matchAll(/\\b(?:session|source|chat|plan|task|event|file|tool)[_-][A-Za-z0-9][A-Za-z0-9_.:-]{0,80}\\b/gi)) {\n cues.add(match[0]);\n }\n for (const match of query.matchAll(/\\b[A-Z][a-z]{1,30}(?:\\s+[A-Z][a-z]{1,30}){0,2}\\b/g)) {\n const value = normalizeSpeakerNameCue(match[0]);\n if (value) {\n cues.add(value);\n }\n }\n for (const match of query.matchAll(/\\[([A-Za-z0-9][A-Za-z0-9_.:/ -]{1,80})\\]/g)) {\n const value = match[1]?.trim();\n if (value) {\n cues.add(value);\n }\n }\n\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nexport function collectQuestionSlotCues(query: string): string[] {\n const cues = new Set<string>();\n for (const match of query.matchAll(\n /\\b(?:what|which)\\s+([a-z][a-z0-9_-]{2,30})\\s+(?:does|do|did|is|are|was|were|should|would|could|can|will)\\b/gi,\n )) {\n const value = match[1]?.toLowerCase();\n if (value && !QUESTION_SLOT_STOPWORDS.has(value)) {\n cues.add(value);\n }\n }\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nexport function collectBenchmarkAnchorCues(query: string): string[] {\n const cues = new Set<string>();\n const normalizedQuery = query.toLowerCase().replace(/\\s+/g, \" \");\n for (const [phrase, cue] of BENCHMARK_ABILITY_CUES) {\n if (containsBoundedPhrase(normalizedQuery, phrase)) {\n cues.add(cue);\n }\n }\n\n const tokens = tokenizeAnchorQuery(query);\n for (let index = 0; index < tokens.length; index += 1) {\n let prefix = normalizeBenchmarkAnchorPrefix(tokens[index]);\n if (!prefix) {\n continue;\n }\n\n let valueIndex = index + 1;\n if (\n prefix === \"source\" &&\n tokens[valueIndex]?.toLowerCase() === \"chat\"\n ) {\n prefix = \"source_chat\";\n valueIndex += 1;\n }\n const maybeIdLabel = tokens[valueIndex]?.toLowerCase();\n if (maybeIdLabel === \"id\" || maybeIdLabel === \"ids\") {\n valueIndex += 1;\n }\n\n let consumedValue = false;\n for (\n let currentValueIndex = valueIndex;\n currentValueIndex < tokens.length;\n currentValueIndex += 1\n ) {\n const rawValue = tokens[currentValueIndex];\n const normalizedValue = rawValue?.toLowerCase();\n if (!rawValue || normalizeBenchmarkAnchorPrefix(rawValue)) {\n break;\n }\n if (normalizedValue === \"and\" || normalizedValue === \"or\") {\n continue;\n }\n if (BENCHMARK_ANCHOR_VALUE_STOPWORDS.has(normalizedValue)) {\n break;\n }\n if (!isBenchmarkAnchorValue(rawValue)) {\n break;\n }\n addBenchmarkAnchorCues(cues, prefix, rawValue);\n consumedValue = true;\n index = currentValueIndex;\n }\n if (!consumedValue) {\n continue;\n }\n }\n\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nfunction addBenchmarkAnchorCues(\n cues: Set<string>,\n prefix: string,\n rawValue: string,\n): void {\n cues.add(`${prefix}_id=${rawValue}`);\n cues.add(`${prefix}-${rawValue}`);\n if (prefix === \"source_chat\") {\n cues.add(`chat_id=${rawValue}`);\n }\n}\n\nfunction isBenchmarkAnchorValue(token: string): boolean {\n for (const char of token) {\n if (isAsciiDigitChar(char)) {\n return true;\n }\n }\n return false;\n}\n\nfunction isAsciiDigitChar(char: string): boolean {\n const code = char.charCodeAt(0);\n return code >= 48 && code <= 57;\n}\n\nfunction normalizeBenchmarkAnchorPrefix(token: string | undefined): string | undefined {\n switch (token?.toLowerCase()) {\n case \"ability\":\n case \"chat\":\n case \"plan\":\n case \"rubric\":\n case \"source\":\n return token.toLowerCase();\n default:\n return undefined;\n }\n}\n\nfunction tokenizeAnchorQuery(query: string): string[] {\n const tokens: string[] = [];\n let current = \"\";\n const push = () => {\n const token = trimTrailingAnchorTokenPunctuation(current);\n if (token.length > 0) {\n tokens.push(token);\n }\n current = \"\";\n };\n\n for (const char of query) {\n if (\n isAsciiLetterOrDigit(char) ||\n char === \"_\" ||\n char === \"-\" ||\n char === \".\" ||\n char === \":\"\n ) {\n current += char;\n continue;\n }\n push();\n }\n push();\n return tokens;\n}\n\nfunction trimTrailingAnchorTokenPunctuation(token: string): string {\n let end = token.length;\n while (end > 0) {\n const char = token[end - 1];\n if (\n char !== \".\" &&\n char !== \":\" &&\n char !== \";\" &&\n char !== \"!\" &&\n char !== \"?\"\n ) {\n break;\n }\n end -= 1;\n }\n return token.slice(0, end);\n}\n\nexport function collectStructuredPlanCues(query: string): string[] {\n const cues = new Set<string>();\n const normalizedQuery = query.toLowerCase().replace(/\\s+/g, \" \");\n for (const cue of STRUCTURED_PLAN_FIELD_CUES) {\n if (containsBoundedPhrase(normalizedQuery, cue)) {\n cues.add(cue);\n }\n }\n if (cues.size === 0) {\n return [];\n }\n for (const cue of STRUCTURED_PLAN_DEPENDENCY_CUES) {\n if (containsBoundedPhrase(normalizedQuery, cue)) {\n cues.add(cue);\n }\n }\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nfunction containsBoundedPhrase(normalizedHaystack: string, phrase: string): boolean {\n let searchFrom = 0;\n while (searchFrom < normalizedHaystack.length) {\n const index = normalizedHaystack.indexOf(phrase, searchFrom);\n if (index < 0) {\n return false;\n }\n const afterIndex = index + phrase.length;\n if (\n isTemporalCueBoundary(normalizedHaystack[index - 1]) &&\n isTemporalCueBoundary(normalizedHaystack[afterIndex])\n ) {\n return true;\n }\n searchFrom = afterIndex;\n }\n return false;\n}\n\nexport function collectTemporalLexicalCues(query: string): string[] {\n const cues = new Set<string>();\n const normalizedQuery = query.toLowerCase().replace(/\\s+/g, \" \");\n for (const cue of RELATIVE_TEMPORAL_CUES) {\n if (containsBoundedPhrase(normalizedQuery, cue)) {\n cues.add(cue);\n }\n }\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nfunction hasLatestStateIntent(query: string): boolean {\n return collectTemporalLexicalCues(query).some((cue) =>\n LATEST_STATE_CUES.has(cue),\n );\n}\n\nfunction sortLexicalCueResults<\n T extends { session_id: string; turn_index: number; score?: number },\n>(results: T[], preferLatest: boolean): T[] {\n return [...results].sort((left, right) => {\n if (preferLatest) {\n const sessionOrder = left.session_id.localeCompare(right.session_id);\n if (sessionOrder !== 0) {\n return sessionOrder;\n }\n const turnOrder = right.turn_index - left.turn_index;\n if (turnOrder !== 0) {\n return turnOrder;\n }\n return (right.score ?? 0) - (left.score ?? 0);\n }\n const scoreDelta = (right.score ?? 0) - (left.score ?? 0);\n if (scoreDelta !== 0) {\n return scoreDelta;\n }\n const sessionOrder = left.session_id.localeCompare(right.session_id);\n if (sessionOrder !== 0) {\n return sessionOrder;\n }\n return left.turn_index - right.turn_index;\n });\n}\n\nfunction normalizeSpeakerNameCue(value: string): string | undefined {\n const words = value.trim().split(/\\s+/).filter(Boolean);\n while (words.length > 0 && SPEAKER_NAME_STOPWORDS.has(words[0]!)) {\n words.shift();\n }\n while (words.length > 0 && SPEAKER_NAME_STOPWORDS.has(words[words.length - 1]!)) {\n words.pop();\n }\n return words.length > 0 ? words.join(\" \") : undefined;\n}\n\nfunction isTemporalCueBoundary(char: string | undefined): boolean {\n if (!char) {\n return true;\n }\n return !isAsciiLetterOrDigit(char);\n}\n\nfunction tokenizeReferenceQuery(query: string): string[] {\n const tokens: string[] = [];\n let current = \"\";\n\n const flushCurrent = () => {\n if (current) {\n tokens.push(current);\n current = \"\";\n }\n };\n\n for (const char of query) {\n if (isAsciiLetterOrDigit(char)) {\n current += char;\n continue;\n }\n\n flushCurrent();\n if (char === \"#\" || char === \",\") {\n tokens.push(char);\n } else if (isReferenceDash(char)) {\n tokens.push(\"-\");\n }\n }\n flushCurrent();\n\n return tokens;\n}\n\nfunction parseReferenceNumbers(\n tokens: readonly string[],\n startIndex: number,\n): { numbers: number[]; nextIndex: number } {\n const numbers: number[] = [];\n let lastNumber: number | undefined;\n let pendingRangeStart: number | undefined;\n let index = startIndex;\n const scanEnd = Math.min(\n tokens.length,\n startIndex + DEFAULT_MAX_REFERENCES * REFERENCE_SCAN_TOKEN_FACTOR,\n );\n\n for (; index < scanEnd; index += 1) {\n const token = tokens[index]!;\n const normalized = token.toLowerCase();\n const value = parseNonNegativeIntegerToken(token);\n if (value !== undefined) {\n if (pendingRangeStart !== undefined) {\n numbers.push(...expandReferenceRange(pendingRangeStart, value));\n pendingRangeStart = undefined;\n } else {\n numbers.push(value);\n }\n lastNumber = value;\n continue;\n }\n\n if (normalized === \"#\" || normalized === \"number\" || normalized === \",\") {\n continue;\n }\n\n if (\n normalized === \"-\" ||\n normalized === \"to\" ||\n normalized === \"through\" ||\n normalized === \"thru\"\n ) {\n if (lastNumber !== undefined) {\n if (numbers[numbers.length - 1] === lastNumber) {\n numbers.pop();\n }\n pendingRangeStart = lastNumber;\n }\n continue;\n }\n\n if (normalized === \"and\" && numbers.length > 0) {\n continue;\n }\n\n if (normalizeReferenceLabel(token)) {\n break;\n }\n\n break;\n }\n\n if (pendingRangeStart !== undefined) {\n numbers.push(pendingRangeStart);\n }\n\n return {\n numbers: [...new Set(numbers)],\n nextIndex: index,\n };\n}\n\nfunction expandReferenceRange(start: number, end: number): number[] {\n const low = Math.min(start, end);\n const high = Math.max(start, end);\n if (high - low + 1 > DEFAULT_MAX_REFERENCES) {\n return [start, end];\n }\n\n const values: number[] = [];\n for (let value = low; value <= high; value += 1) {\n values.push(value);\n }\n return values;\n}\n\nfunction normalizeReferenceLabel(token: string | undefined): string | undefined {\n const normalized = token?.toLowerCase();\n switch (normalized) {\n case \"step\":\n case \"steps\":\n return \"step\";\n case \"turn\":\n case \"turns\":\n return \"turn\";\n case \"action\":\n case \"actions\":\n return \"action\";\n case \"observation\":\n case \"observations\":\n return \"observation\";\n default:\n return undefined;\n }\n}\n\nfunction candidateTurnIndexesForReference(\n reference: ExplicitTurnReference,\n): number[] {\n const candidates = new Set<number>();\n if (reference.includeDirectTurn) {\n for (let offset = -1; offset <= 1; offset += 1) {\n candidates.add(reference.number + offset);\n }\n }\n\n const pairedBase = reference.number * 2;\n // Action/observation traces are stored as paired turns:\n // turn 2N => [Action N]\n // turn 2N + 1 => [Observation N]\n // Include the preceding observation so transition questions can compare the\n // state before and after the action, but avoid pulling in Action N+1. Future\n // actions caused explicit step questions to drift to the next step.\n for (let offset = -1; offset <= 1; offset += 1) {\n candidates.add(pairedBase + offset);\n }\n\n return [...candidates].sort((left, right) => left - right);\n}\n\nfunction parseNonNegativeIntegerToken(token: string): number | undefined {\n if (token.length === 0) {\n return undefined;\n }\n\n let value = 0;\n for (const char of token) {\n const code = char.charCodeAt(0);\n if (code < 48 || code > 57) {\n return undefined;\n }\n value = value * 10 + (code - 48);\n }\n return value;\n}\n\nfunction normalizePositiveInteger(value: number | undefined, fallback: number): number {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n return fallback;\n }\n return Math.max(0, Math.floor(value));\n}\n\nfunction isAsciiLetterOrDigit(char: string): boolean {\n const code = char.charCodeAt(0);\n return (code >= 48 && code <= 57)\n || (code >= 65 && code <= 90)\n || (code >= 97 && code <= 122);\n}\n\nfunction isReferenceDash(char: string): boolean {\n return char === \"-\"\n || char === \"\\u2010\"\n || char === \"\\u2011\"\n || char === \"\\u2012\"\n || char === \"\\u2013\"\n || char === \"\\u2014\"\n || char === \"\\u2015\";\n}\n"],"mappings":"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","names":["sessionOrder"]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-TBBDFYXW.js";
|
|
4
4
|
import {
|
|
5
5
|
StorageManager
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MCC6KDQF.js";
|
|
7
7
|
|
|
8
8
|
// src/maintenance/memory-governance.ts
|
|
9
9
|
import path from "path";
|
|
@@ -718,4 +718,4 @@ export {
|
|
|
718
718
|
listMemoryGovernanceRuns,
|
|
719
719
|
readMemoryGovernanceRunArtifact
|
|
720
720
|
};
|
|
721
|
-
//# sourceMappingURL=chunk-
|
|
721
|
+
//# sourceMappingURL=chunk-EYNQTST2.js.map
|