@remnic/core 9.6.29 → 9.6.30
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-admin-ops-surface.js +2 -1
- package/dist/access-boundary.js +3 -2
- package/dist/access-cli.js +16 -15
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.js +7 -6
- package/dist/access-identity-continuity-surface.js +2 -1
- package/dist/access-lcm-surface.js +2 -1
- package/dist/access-mcp.js +6 -5
- package/dist/access-observe-write-surface.js +2 -1
- package/dist/access-operations-batch.js +4 -3
- package/dist/access-operations.js +5 -4
- package/dist/access-recall-surface.js +2 -1
- package/dist/access-service.js +2 -1
- package/dist/{chunk-5WJ4LBFR.js → chunk-3VSTTB74.js} +7 -7
- package/dist/{chunk-4463LUIE.js → chunk-77UPM7P3.js} +22 -11
- package/dist/chunk-77UPM7P3.js.map +1 -0
- package/dist/{chunk-FV5FVO2J.js → chunk-7O2JL5RY.js} +9 -5
- package/dist/chunk-7O2JL5RY.js.map +1 -0
- package/dist/{chunk-LZTFCAKE.js → chunk-BFU7H32D.js} +28 -15
- package/dist/chunk-BFU7H32D.js.map +1 -0
- package/dist/chunk-C37ZRXX7.js +36 -0
- package/dist/chunk-C37ZRXX7.js.map +1 -0
- package/dist/{chunk-SGYTQKC2.js → chunk-C6TKSI35.js} +3 -3
- package/dist/{chunk-C2SEH754.js → chunk-DAAJUA6Q.js} +4 -4
- package/dist/{chunk-EAREADWV.js → chunk-GQURC4B7.js} +2 -2
- package/dist/{chunk-4SBW47WK.js → chunk-IRMLYBMU.js} +28 -15
- package/dist/chunk-IRMLYBMU.js.map +1 -0
- package/dist/{chunk-XA4PWKBW.js → chunk-MXAGJHTA.js} +3 -3
- package/dist/{chunk-5BHIGBHQ.js → chunk-OXVKR5OU.js} +6 -3
- package/dist/{chunk-5BHIGBHQ.js.map → chunk-OXVKR5OU.js.map} +1 -1
- package/dist/{chunk-IF7THCGJ.js → chunk-PUQZIS6A.js} +3 -3
- package/dist/{chunk-PYPOFEMK.js → chunk-R26WO46Z.js} +1 -1
- package/dist/chunk-R26WO46Z.js.map +1 -0
- package/dist/chunk-VDC6RZI4.js +1 -0
- package/dist/{chunk-3RROR5KV.js → chunk-VJRJTRYF.js} +4 -4
- package/dist/{chunk-L6W77GWW.js → chunk-XGSOXFD4.js} +25 -13
- package/dist/chunk-XGSOXFD4.js.map +1 -0
- package/dist/cli.js +8 -7
- package/dist/event-order-recall.js +3 -2
- package/dist/evidence-pack.d.ts +2 -0
- package/dist/evidence-pack.js +1 -1
- package/dist/explicit-cue-recall.d.ts +3 -0
- package/dist/explicit-cue-recall.js +3 -2
- package/dist/focused-list-recall.js +3 -2
- package/dist/index.js +16 -15
- package/dist/lcm/index.d.ts +22 -0
- package/dist/lcm/index.js +9 -1
- package/dist/orchestrator.js +16 -15
- package/dist/response-guidance-recall.js +3 -2
- package/dist/targeted-fact-recall.js +3 -2
- package/package.json +2 -2
- package/src/access-lcm-surface.ts +20 -5
- package/src/access-recall-surface.ts +2 -1
- package/src/event-order-recall.ts +5 -3
- package/src/evidence-pack.ts +2 -0
- package/src/explicit-cue-recall.ts +67 -66
- package/src/focused-list-recall.ts +25 -16
- package/src/lcm/evidence-identity.ts +59 -0
- package/src/lcm/index.ts +7 -0
- package/src/lcm-retrieval-lineage.test.ts +236 -0
- package/src/response-guidance-recall.ts +22 -14
- package/src/targeted-fact-recall.ts +25 -16
- package/dist/chunk-4463LUIE.js.map +0 -1
- package/dist/chunk-4SBW47WK.js.map +0 -1
- package/dist/chunk-FV5FVO2J.js.map +0 -1
- package/dist/chunk-HHLLAQGZ.js +0 -1
- package/dist/chunk-L6W77GWW.js.map +0 -1
- package/dist/chunk-LZTFCAKE.js.map +0 -1
- package/dist/chunk-PYPOFEMK.js.map +0 -1
- /package/dist/{chunk-5WJ4LBFR.js.map → chunk-3VSTTB74.js.map} +0 -0
- /package/dist/{chunk-SGYTQKC2.js.map → chunk-C6TKSI35.js.map} +0 -0
- /package/dist/{chunk-C2SEH754.js.map → chunk-DAAJUA6Q.js.map} +0 -0
- /package/dist/{chunk-EAREADWV.js.map → chunk-GQURC4B7.js.map} +0 -0
- /package/dist/{chunk-XA4PWKBW.js.map → chunk-MXAGJHTA.js.map} +0 -0
- /package/dist/{chunk-IF7THCGJ.js.map → chunk-PUQZIS6A.js.map} +0 -0
- /package/dist/{chunk-HHLLAQGZ.js.map → chunk-VDC6RZI4.js.map} +0 -0
- /package/dist/{chunk-3RROR5KV.js.map → chunk-VJRJTRYF.js.map} +0 -0
|
@@ -26,14 +26,14 @@ import {
|
|
|
26
26
|
} from "./chunk-T4WDJPEZ.js";
|
|
27
27
|
import {
|
|
28
28
|
defineOperation
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-GQURC4B7.js";
|
|
30
30
|
import {
|
|
31
31
|
enforceNamespaceAllowList,
|
|
32
32
|
tokenCapabilityStore
|
|
33
33
|
} from "./chunk-D7FOKIY5.js";
|
|
34
34
|
import {
|
|
35
35
|
EngramAccessInputError
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-OXVKR5OU.js";
|
|
37
37
|
import {
|
|
38
38
|
projectTagProjectId
|
|
39
39
|
} from "./chunk-BAVVI5GP.js";
|
|
@@ -453,4 +453,4 @@ defineOperation({ name: "graph_events", description: "SSE graph events.", schema
|
|
|
453
453
|
defineOperation({ name: "chat_message", description: "Chat message.", schema: strictSchema({ message: S.str, chatSessionId: S.str }), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
|
|
454
454
|
defineOperation({ name: "chat_events", description: "SSE chat events.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { stream: "sse" } }) });
|
|
455
455
|
defineOperation({ name: "adapters_status", description: "Adapter registry metadata (issue #1850 round 5). Marker op: the HTTP transport builds the response from its own adapterRegistry, but the op still must be registered so it appears in listRegisteredOperations and enforceTokenOp can gate it for scoped tokens.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
|
|
456
|
-
//# sourceMappingURL=chunk-
|
|
456
|
+
//# sourceMappingURL=chunk-PUQZIS6A.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/evidence-pack.ts"],"sourcesContent":["export interface EvidencePackItem {\n id?: string;\n /** Stable SQLite row lineage for diagnostics; intentionally not rendered. */\n archiveRowId?: number;\n sessionId?: string;\n turnIndex?: number;\n role?: string;\n content: string;\n score?: number;\n}\n\nexport interface EvidencePackOptions {\n title?: string;\n maxChars: number;\n maxItemChars?: number;\n query?: string;\n}\n\nconst DEFAULT_MAX_ITEM_CHARS = 1_200;\nconst QUERY_FOCUS_STOPWORDS = new Set([\n \"about\",\n \"after\",\n \"again\",\n \"also\",\n \"and\",\n \"are\",\n \"between\",\n \"can\",\n \"could\",\n \"did\",\n \"does\",\n \"during\",\n \"for\",\n \"from\",\n \"have\",\n \"how\",\n \"into\",\n \"many\",\n \"should\",\n \"that\",\n \"the\",\n \"this\",\n \"till\",\n \"until\",\n \"want\",\n \"was\",\n \"were\",\n \"what\",\n \"when\",\n \"which\",\n \"with\",\n \"would\",\n \"you\",\n]);\n\nexport function buildEvidencePack(\n items: readonly EvidencePackItem[],\n options: EvidencePackOptions,\n): string {\n const budget = normalizePositiveInteger(options.maxChars);\n if (budget <= 0 || items.length === 0) {\n return \"\";\n }\n\n const maxItemChars = normalizePositiveInteger(\n options.maxItemChars ?? DEFAULT_MAX_ITEM_CHARS,\n );\n if (maxItemChars <= 0) {\n return \"\";\n }\n\n const title = options.title ?? \"Evidence\";\n const lines: string[] = [`## ${title}`];\n const seenIds = new Set<string>();\n const seenContent = new Set<string>();\n let used = lines[0]!.length;\n\n for (const item of items) {\n const content = item.content.trim();\n if (!content) continue;\n\n const id = item.id ?? evidenceItemFallbackId(item);\n if (id && seenIds.has(id)) continue;\n\n const contentKey = normalizeEvidenceContent(content);\n if (seenContent.has(contentKey)) continue;\n\n const label = formatEvidenceLabel(item);\n const clipped = clipEvidenceContent(content, maxItemChars, options.query);\n const block = `${label}: ${clipped}`;\n const separatorLength = lines.length > 0 ? 2 : 0;\n const remaining = budget - used - separatorLength;\n if (remaining <= 0) break;\n\n const finalBlock =\n block.length > remaining ? clipText(block, remaining) : block;\n if (!finalBlock.trim()) break;\n\n lines.push(finalBlock);\n used += separatorLength + finalBlock.length;\n if (id) seenIds.add(id);\n seenContent.add(contentKey);\n }\n\n return lines.length === 1 ? \"\" : lines.join(\"\\n\\n\");\n}\n\nexport function insertAfterEvidenceHeading(\n evidence: string,\n title: string,\n insert: string,\n): string {\n const heading = `## ${title}`;\n if (!evidence.startsWith(heading)) {\n return evidence;\n }\n return `${heading}${insert}${evidence.slice(heading.length)}`;\n}\n\nfunction normalizePositiveInteger(value: number): number {\n if (!Number.isFinite(value) || value <= 0) {\n return 0;\n }\n return Math.floor(value);\n}\n\nfunction evidenceItemFallbackId(item: EvidencePackItem): string | undefined {\n if (item.sessionId && typeof item.turnIndex === \"number\") {\n return `${item.sessionId}:${item.turnIndex}`;\n }\n return undefined;\n}\n\nfunction normalizeEvidenceContent(content: string): string {\n return content.toLowerCase().replace(/\\s+/g, \" \").trim();\n}\n\nfunction formatEvidenceLabel(item: EvidencePackItem): string {\n const parts: string[] = [];\n if (item.sessionId) parts.push(item.sessionId);\n if (typeof item.turnIndex === \"number\") parts.push(`turn ${item.turnIndex}`);\n if (item.role) parts.push(item.role);\n if (typeof item.score === \"number\" && Number.isFinite(item.score)) {\n parts.push(`score ${item.score.toFixed(3)}`);\n }\n return parts.length > 0 ? `[${parts.join(\", \")}]` : \"[evidence]\";\n}\n\nfunction clipText(text: string, maxChars: number): string {\n if (text.length <= maxChars) {\n return text;\n }\n if (maxChars <= 1) {\n return text.slice(0, maxChars);\n }\n if (maxChars <= 3) {\n return text.slice(0, maxChars);\n }\n return `${text.slice(0, maxChars - 3).trimEnd()}...`;\n}\n\nfunction clipEvidenceContent(\n content: string,\n maxChars: number,\n query?: string,\n): string {\n if (content.length <= maxChars) {\n return content;\n }\n\n const focused = buildQueryFocusedExcerpt(content, maxChars, query);\n return focused ?? clipText(content, maxChars);\n}\n\nfunction buildQueryFocusedExcerpt(\n content: string,\n maxChars: number,\n query?: string,\n): string | undefined {\n const cues = collectQueryFocusCues(query ?? \"\");\n if (cues.length === 0) {\n return undefined;\n }\n\n const lines = content\n .replaceAll(\"\\r\\n\", \"\\n\")\n .replaceAll(\"\\r\", \"\\n\")\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n if (lines.length < 2) {\n return undefined;\n }\n\n const temporalIntent = hasTemporalFocusIntent(query ?? \"\");\n const scored = lines\n .map((line, index) => ({\n index,\n score: scoreEvidenceLine(line, cues, temporalIntent, index),\n }))\n .filter((entry) => entry.score > 0)\n .sort((left, right) => right.score - left.score || left.index - right.index);\n\n if (scored.length === 0) {\n return undefined;\n }\n\n let selected = new Set<number>();\n for (let index = 0; index < Math.min(3, lines.length); index += 1) {\n if (isEvidenceMetadataLine(lines[index]!)) {\n selected.add(index);\n }\n }\n\n for (const entry of scored.slice(0, 8)) {\n const candidate = new Set(selected);\n const radius = lineWindowRadius(lines[entry.index]!, temporalIntent);\n for (\n let index = Math.max(0, entry.index - radius);\n index <= Math.min(lines.length - 1, entry.index + radius);\n index += 1\n ) {\n candidate.add(index);\n }\n if (renderSelectedEvidenceLines(lines, candidate).length <= maxChars) {\n selected = candidate;\n }\n }\n\n const excerpt = buildExcerptFromLineSelection(lines, selected, maxChars);\n return excerpt.length > 0 ? excerpt : undefined;\n}\n\nfunction collectQueryFocusCues(query: string): string[] {\n const words = (query.toLowerCase().match(/[a-z][a-z0-9-]{2,}/g) ?? [])\n .map(trimBoundaryHyphens)\n .filter(\n (word) =>\n word.length >= 3 &&\n !/^\\d+$/.test(word) &&\n !QUERY_FOCUS_STOPWORDS.has(word),\n );\n const cues = new Set<string>();\n for (const word of words) {\n cues.add(word);\n }\n for (let index = 0; index < words.length - 1; index += 1) {\n const left = words[index]!;\n const right = words[index + 1]!;\n if (left.length >= 4 && right.length >= 4) {\n cues.add(`${left} ${right}`);\n }\n }\n for (let index = 0; index < words.length - 2; index += 1) {\n const left = words[index]!;\n const middle = words[index + 1]!;\n const right = words[index + 2]!;\n if (left.length >= 4 && middle.length >= 4 && right.length >= 4) {\n cues.add(`${left} ${middle} ${right}`);\n }\n }\n return [...cues].sort((left, right) => right.length - left.length || left.localeCompare(right));\n}\n\nfunction trimBoundaryHyphens(value: string): string {\n let start = 0;\n let end = value.length;\n while (start < end && value[start] === \"-\") {\n start += 1;\n }\n while (end > start && value[end - 1] === \"-\") {\n end -= 1;\n }\n return start === 0 && end === value.length ? value : value.slice(start, end);\n}\n\nfunction hasTemporalFocusIntent(query: string): boolean {\n return /\\b(?:after|before|between|date|deadline|during|finish(?:ing|ed)?|how many|timeline|week|weeks|when)\\b/i.test(\n query,\n );\n}\n\nfunction scoreEvidenceLine(\n line: string,\n cues: readonly string[],\n temporalIntent: boolean,\n index: number,\n): number {\n const normalized = line.toLowerCase();\n let score = 0;\n for (const cue of cues) {\n if (!normalized.includes(cue)) {\n continue;\n }\n score += cue.includes(\" \") ? 8 : 3;\n }\n if (temporalIntent && hasDateLikeEvidence(line)) {\n score += 6;\n }\n if (\n temporalIntent &&\n /\\b(?:deadline|deployment|finish(?:ing|ed)?|milestones?|schedule|timeline)\\b/i.test(line)\n ) {\n score += 5;\n }\n if (/^\\s{0,3}(?:#{1,6}\\s*)?(?:milestones?|schedule|timeline)\\b/i.test(line)) {\n score += 3;\n }\n if (isEvidenceMetadataLine(line)) {\n score += Math.max(0, 3 - index);\n }\n return score;\n}\n\nfunction hasDateLikeEvidence(line: string): boolean {\n return /\\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\\.?\\s+\\d{1,2}\\b/i.test(\n line,\n ) || /\\b\\d{4}-\\d{2}-\\d{2}\\b/.test(line);\n}\n\nfunction isEvidenceMetadataLine(line: string): boolean {\n return /\\b(?:chat_id|source_chat_id|session_id|plan_id|task_id|ability)=/.test(\n line,\n );\n}\n\nfunction lineWindowRadius(line: string, temporalIntent: boolean): number {\n if (temporalIntent && hasDateLikeEvidence(line)) {\n return 0;\n }\n if (temporalIntent && /^\\s{0,3}(?:#{1,6}\\s*)?(?:milestones?|schedule|timeline)\\b/i.test(line)) {\n return 2;\n }\n return 1;\n}\n\nfunction buildExcerptFromLineSelection(\n lines: readonly string[],\n selected: ReadonlySet<number>,\n maxChars: number,\n): string {\n const ordered = [...selected].sort((left, right) => left - right);\n const output: string[] = [];\n let used = 0;\n let lastIndex = -1;\n\n const append = (text: string): boolean => {\n const separator = output.length === 0 ? \"\" : \"\\n\";\n const remaining = maxChars - used - separator.length;\n if (remaining <= 0) {\n return false;\n }\n const value = text.length > remaining ? clipText(text, remaining) : text;\n if (!value.trim()) {\n return false;\n }\n output.push(value);\n used += separator.length + value.length;\n return text.length <= remaining;\n };\n\n for (const index of ordered) {\n if (lastIndex >= 0 && index > lastIndex + 1 && !append(\"...\")) {\n break;\n }\n if (!append(lines[index]!)) {\n break;\n }\n lastIndex = index;\n }\n\n return output.join(\"\\n\");\n}\n\nfunction renderSelectedEvidenceLines(\n lines: readonly string[],\n selected: ReadonlySet<number>,\n): string {\n const ordered = [...selected].sort((left, right) => left - right);\n const output: string[] = [];\n let lastIndex = -1;\n for (const index of ordered) {\n if (lastIndex >= 0 && index > lastIndex + 1) {\n output.push(\"...\");\n }\n output.push(lines[index]!);\n lastIndex = index;\n }\n return output.join(\"\\n\");\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-VDC6RZI4.js.map
|
|
@@ -213,7 +213,7 @@ import {
|
|
|
213
213
|
} from "./chunk-OADWQ5CR.js";
|
|
214
214
|
import {
|
|
215
215
|
EngramAccessHttpServer
|
|
216
|
-
} from "./chunk-
|
|
216
|
+
} from "./chunk-DAAJUA6Q.js";
|
|
217
217
|
import {
|
|
218
218
|
WearablesInputError
|
|
219
219
|
} from "./chunk-V7IZKJI3.js";
|
|
@@ -226,10 +226,10 @@ import {
|
|
|
226
226
|
createProductionChatLlmAdapter,
|
|
227
227
|
loadChatSession,
|
|
228
228
|
sessionBelongsToPrincipal
|
|
229
|
-
} from "./chunk-
|
|
229
|
+
} from "./chunk-MXAGJHTA.js";
|
|
230
230
|
import {
|
|
231
231
|
EngramAccessService
|
|
232
|
-
} from "./chunk-
|
|
232
|
+
} from "./chunk-OXVKR5OU.js";
|
|
233
233
|
import {
|
|
234
234
|
WorkStorage
|
|
235
235
|
} from "./chunk-GDB4J2H3.js";
|
|
@@ -7608,4 +7608,4 @@ export {
|
|
|
7608
7608
|
listMemoryMarkdownFilePaths,
|
|
7609
7609
|
registerCli
|
|
7610
7610
|
};
|
|
7611
|
-
//# sourceMappingURL=chunk-
|
|
7611
|
+
//# sourceMappingURL=chunk-VJRJTRYF.js.map
|
|
@@ -7,7 +7,11 @@ import {
|
|
|
7
7
|
} from "./chunk-LUPVCGYK.js";
|
|
8
8
|
import {
|
|
9
9
|
buildEvidencePack
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-R26WO46Z.js";
|
|
11
|
+
import {
|
|
12
|
+
isSameLcmRow,
|
|
13
|
+
lcmEvidenceIdentity
|
|
14
|
+
} from "./chunk-C37ZRXX7.js";
|
|
11
15
|
|
|
12
16
|
// src/response-guidance-recall.ts
|
|
13
17
|
var DEFAULT_MAX_SEARCH_RESULTS = 48;
|
|
@@ -90,15 +94,23 @@ async function collectGuidanceItems(options, intents) {
|
|
|
90
94
|
result.turn_index + searchWindowAfter,
|
|
91
95
|
searchWindowTokens
|
|
92
96
|
);
|
|
93
|
-
const candidates = expanded.length > 0 ? expanded.map((message) =>
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
const candidates = expanded.length > 0 ? expanded.map((message) => {
|
|
98
|
+
const matchesSearchHit = isSameLcmRow(
|
|
99
|
+
message,
|
|
100
|
+
result.session_id,
|
|
101
|
+
result,
|
|
102
|
+
result.session_id
|
|
103
|
+
);
|
|
104
|
+
return {
|
|
105
|
+
...lcmEvidenceIdentity(message, result.session_id),
|
|
106
|
+
sessionId: message.session_id ?? result.session_id,
|
|
107
|
+
turnIndex: message.turn_index,
|
|
108
|
+
role: message.role,
|
|
109
|
+
content: message.content,
|
|
110
|
+
...matchesSearchHit && typeof result.score === "number" ? { score: result.score } : {}
|
|
111
|
+
};
|
|
112
|
+
}) : [{
|
|
113
|
+
...lcmEvidenceIdentity(result, result.session_id),
|
|
102
114
|
sessionId: result.session_id,
|
|
103
115
|
turnIndex: result.turn_index,
|
|
104
116
|
role: result.role,
|
|
@@ -146,8 +158,8 @@ async function collectGuidanceScanItems(options, intents) {
|
|
|
146
158
|
for (const message of messages) {
|
|
147
159
|
if (!isGuidanceEvidence(message.content, options.query, intents, options.forceGeneric === true)) continue;
|
|
148
160
|
items.push({
|
|
149
|
-
|
|
150
|
-
sessionId: options.sessionId,
|
|
161
|
+
...lcmEvidenceIdentity(message, options.sessionId),
|
|
162
|
+
sessionId: message.session_id ?? options.sessionId,
|
|
151
163
|
turnIndex: message.turn_index,
|
|
152
164
|
role: message.role,
|
|
153
165
|
content: message.content
|
|
@@ -3719,4 +3731,4 @@ export {
|
|
|
3719
3731
|
shouldRecallResponseGuidance,
|
|
3720
3732
|
buildResponseGuidanceRecallSection
|
|
3721
3733
|
};
|
|
3722
|
-
//# sourceMappingURL=chunk-
|
|
3734
|
+
//# sourceMappingURL=chunk-XGSOXFD4.js.map
|