@remnic/core 9.69.47 → 9.69.48
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.d.ts +1 -1
- package/dist/access-admin-ops-surface.js +2 -2
- package/dist/access-authorization-probe.d.ts +1 -1
- package/dist/access-authorization-probe.js +3 -3
- package/dist/access-boundary.d.ts +1 -1
- package/dist/access-boundary.js +2 -2
- package/dist/access-cli.js +19 -19
- package/dist/access-extraction-force-flush.d.ts +1 -1
- package/dist/access-extraction-force-flush.js +2 -2
- package/dist/access-http-briefing.d.ts +1 -1
- package/dist/access-http-briefing.js +3 -3
- package/dist/access-http-lcm-compaction.d.ts +1 -1
- package/dist/access-http-lifecycle-flush.d.ts +1 -1
- package/dist/access-http-offline-stream.d.ts +1 -1
- package/dist/access-http-query.js +2 -2
- package/dist/access-http.d.ts +2 -2
- package/dist/access-http.js +14 -14
- package/dist/access-identity-continuity-surface.js +2 -2
- package/dist/access-lcm-surface.d.ts +1 -1
- package/dist/access-lcm-surface.js +2 -2
- package/dist/access-mcp-shared-context-tools.d.ts +1 -1
- package/dist/access-mcp.d.ts +1 -1
- package/dist/access-mcp.js +9 -9
- package/dist/access-namespace-preflight.js +2 -2
- package/dist/access-observe-write-surface.d.ts +1 -1
- package/dist/access-observe-write-surface.js +2 -2
- package/dist/access-operations-batch.js +3 -3
- package/dist/access-operations.d.ts +1 -1
- package/dist/access-operations.js +8 -8
- package/dist/access-recall-concurrency.d.ts +1 -1
- package/dist/access-recall-concurrency.js +2 -2
- package/dist/access-recall-response.d.ts +1 -1
- package/dist/access-recall-response.js +2 -2
- package/dist/access-recall-surface.d.ts +1 -1
- package/dist/access-recall-surface.js +2 -2
- package/dist/access-schema.d.ts +113 -113
- package/dist/{access-service-BXYrJ3pO.d.ts → access-service-DUkTWyZS.d.ts} +64 -64
- package/dist/access-service-helpers.d.ts +1 -1
- package/dist/access-service.d.ts +1 -1
- package/dist/access-service.js +2 -2
- package/dist/access-surface-catalog.d.ts +1 -1
- package/dist/access-surface-catalog.js +4 -4
- package/dist/{chunk-NMA7RQPR.js → chunk-2B2RHLHI.js} +2 -2
- package/dist/{chunk-MMQVWKFY.js → chunk-32ZBIGID.js} +8 -8
- package/dist/{chunk-JXLEQIJ7.js → chunk-7DU2F7LM.js} +2 -2
- package/dist/{chunk-SJ7ZNUXB.js → chunk-B4WI7OF2.js} +2 -2
- package/dist/{chunk-YOSLKZLZ.js → chunk-BIXELUIR.js} +2 -2
- package/dist/{chunk-R4JTUTU6.js → chunk-BMBAA2M5.js} +2 -2
- package/dist/{chunk-QKFYJVDG.js → chunk-BNX2TUSF.js} +2 -2
- package/dist/{chunk-7ZNJN5WZ.js → chunk-IHOXK2I6.js} +55 -6
- package/dist/chunk-IHOXK2I6.js.map +1 -0
- package/dist/{chunk-2NKY7OC6.js → chunk-IMJPJY7V.js} +2 -2
- package/dist/{chunk-G2SJRFGP.js → chunk-JIURESYF.js} +2 -2
- package/dist/{chunk-AS4YKT75.js → chunk-KPYMORPQ.js} +2 -2
- package/dist/{chunk-BMENHAJL.js → chunk-KVIMQAER.js} +2 -2
- package/dist/{chunk-44BILQ7U.js → chunk-MKJFPIVG.js} +4 -4
- package/dist/{chunk-NE45P3OF.js → chunk-MKLDZNBD.js} +2 -2
- package/dist/{chunk-2QX65IEC.js → chunk-MUNR43V3.js} +2 -2
- package/dist/{chunk-V2XNMIAM.js → chunk-NNFB4CU4.js} +2 -2
- package/dist/{chunk-ROBGBT3D.js → chunk-R32AEEU3.js} +7 -7
- package/dist/{chunk-2JFSQWFH.js → chunk-TW4MXM7H.js} +3 -3
- package/dist/{chunk-GXJSLNYO.js → chunk-XYGINDIJ.js} +2 -2
- package/dist/{cli-B8YyIrPR.d.ts → cli-Bbndoc6k.d.ts} +1 -1
- package/dist/cli.d.ts +2 -2
- package/dist/cli.js +15 -15
- package/dist/deep-recall-http-glue.d.ts +1 -1
- package/dist/deep-recall-mcp-tools.d.ts +1 -1
- package/dist/entity-retrieval.js +2 -2
- package/dist/external-wiki-access.d.ts +1 -1
- package/dist/external-wiki-access.js +3 -3
- package/dist/external-wiki-mcp-tools.d.ts +1 -1
- package/dist/index.d.ts +681 -681
- package/dist/index.js +23 -19
- package/dist/mcp-memory-inspector-app.d.ts +1 -1
- package/dist/memory-browse-http-glue.d.ts +1 -1
- package/dist/memory-browse-mcp-tools.d.ts +1 -1
- package/dist/memory-browse-operations.js +3 -3
- package/dist/memory-subject-cli.d.ts +1 -1
- package/dist/memory-subject.d.ts +1 -1
- package/dist/orchestrator.js +19 -19
- package/dist/{public-http-VB85y0ZH.d.ts → public-http-DaHHhWRR.d.ts} +1 -1
- package/dist/recall-context-composition.d.ts +43 -3
- package/dist/recall-context-composition.js +5 -1
- package/dist/recall-navigation-http-glue.d.ts +1 -1
- package/dist/recall-navigation-mcp-tools.d.ts +1 -1
- package/dist/recall-navigation-operations.js +3 -3
- package/dist/recall-navigation.js +2 -2
- package/dist/schemas.d.ts +160 -160
- package/dist/shared-context/manager.d.ts +6 -6
- package/dist/support-passport/index.d.ts +4 -4
- package/dist/support-passport/index.js +5 -5
- package/dist/temporal-timeline-recall.js +2 -2
- package/dist/transfer/types.d.ts +78 -78
- package/dist/who-knows-cli.d.ts +1 -1
- package/dist/who-knows.d.ts +1 -1
- package/package.json +2 -2
- package/src/recall-context-composition.test.ts +66 -0
- package/src/recall-context-composition.ts +102 -2
- package/dist/chunk-7ZNJN5WZ.js.map +0 -1
- /package/dist/{chunk-NMA7RQPR.js.map → chunk-2B2RHLHI.js.map} +0 -0
- /package/dist/{chunk-MMQVWKFY.js.map → chunk-32ZBIGID.js.map} +0 -0
- /package/dist/{chunk-JXLEQIJ7.js.map → chunk-7DU2F7LM.js.map} +0 -0
- /package/dist/{chunk-SJ7ZNUXB.js.map → chunk-B4WI7OF2.js.map} +0 -0
- /package/dist/{chunk-YOSLKZLZ.js.map → chunk-BIXELUIR.js.map} +0 -0
- /package/dist/{chunk-R4JTUTU6.js.map → chunk-BMBAA2M5.js.map} +0 -0
- /package/dist/{chunk-QKFYJVDG.js.map → chunk-BNX2TUSF.js.map} +0 -0
- /package/dist/{chunk-2NKY7OC6.js.map → chunk-IMJPJY7V.js.map} +0 -0
- /package/dist/{chunk-G2SJRFGP.js.map → chunk-JIURESYF.js.map} +0 -0
- /package/dist/{chunk-AS4YKT75.js.map → chunk-KPYMORPQ.js.map} +0 -0
- /package/dist/{chunk-BMENHAJL.js.map → chunk-KVIMQAER.js.map} +0 -0
- /package/dist/{chunk-44BILQ7U.js.map → chunk-MKJFPIVG.js.map} +0 -0
- /package/dist/{chunk-NE45P3OF.js.map → chunk-MKLDZNBD.js.map} +0 -0
- /package/dist/{chunk-2QX65IEC.js.map → chunk-MUNR43V3.js.map} +0 -0
- /package/dist/{chunk-V2XNMIAM.js.map → chunk-NNFB4CU4.js.map} +0 -0
- /package/dist/{chunk-ROBGBT3D.js.map → chunk-R32AEEU3.js.map} +0 -0
- /package/dist/{chunk-2JFSQWFH.js.map → chunk-TW4MXM7H.js.map} +0 -0
- /package/dist/{chunk-GXJSLNYO.js.map → chunk-XYGINDIJ.js.map} +0 -0
|
@@ -35,6 +35,33 @@ const TRIM_MARKER = "\n\n...(memory context trimmed)";
|
|
|
35
35
|
export interface RecallContextComposition {
|
|
36
36
|
context: string;
|
|
37
37
|
footer?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Machine-readable degradation marker (#2972). Absent on a healthy
|
|
40
|
+
* recall so the healthy wire shape stays byte-stable. Budget warnings
|
|
41
|
+
* ride here — never inside the injected text — so the block stays
|
|
42
|
+
* cache-stable while degradation stays inspectable.
|
|
43
|
+
*/
|
|
44
|
+
degradation?: RecallContextDegradation;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export type RecallDegradationState = "complete" | "degraded" | "missing";
|
|
48
|
+
|
|
49
|
+
export type RecallDegradationReason =
|
|
50
|
+
| "budget-clipped"
|
|
51
|
+
| "budget-compacted"
|
|
52
|
+
| "backend-unavailable";
|
|
53
|
+
|
|
54
|
+
export interface RecallContextDegradation {
|
|
55
|
+
state: RecallDegradationState;
|
|
56
|
+
reason: RecallDegradationReason;
|
|
57
|
+
/** Operator-facing detail (e.g. a SearchDegradation code). */
|
|
58
|
+
detail?: string;
|
|
59
|
+
/** Budget accounting, present on budget-driven degradation. */
|
|
60
|
+
budget?: {
|
|
61
|
+
contextBudget: number;
|
|
62
|
+
fullChars: number;
|
|
63
|
+
deliveredChars: number;
|
|
64
|
+
};
|
|
38
65
|
}
|
|
39
66
|
|
|
40
67
|
export interface CuriosityQuestion {
|
|
@@ -53,6 +80,14 @@ export interface RenderedMemoryContextPrompt {
|
|
|
53
80
|
|
|
54
81
|
export interface RenderMemoryContextPromptInput extends RecallContextComposition {
|
|
55
82
|
maxChars: number;
|
|
83
|
+
/**
|
|
84
|
+
* Pre-rendered shallow form of every entry (#2972). When the full
|
|
85
|
+
* context exceeds budget, a fitting compact form is delivered instead
|
|
86
|
+
* of clipping the tail — breadth-complete-but-shallow over
|
|
87
|
+
* deep-but-amputated. Ignored unless strictly shorter than the full
|
|
88
|
+
* context and within budget.
|
|
89
|
+
*/
|
|
90
|
+
compactContext?: string;
|
|
56
91
|
}
|
|
57
92
|
|
|
58
93
|
function trimText(value: string | undefined): string {
|
|
@@ -96,14 +131,77 @@ export function boundRecallContextComposition({
|
|
|
96
131
|
context: rawContext,
|
|
97
132
|
footer: rawFooter,
|
|
98
133
|
maxChars,
|
|
134
|
+
compactContext: rawCompactContext,
|
|
99
135
|
}: RenderMemoryContextPromptInput): RecallContextComposition {
|
|
100
136
|
if (!Number.isFinite(maxChars) || maxChars <= 0) return { context: "" };
|
|
101
137
|
|
|
102
138
|
const limit = Math.floor(maxChars);
|
|
103
139
|
const footer = trimText(rawFooter);
|
|
104
|
-
const
|
|
140
|
+
const contextBudget = contextBudgetForFooter(limit, footer);
|
|
141
|
+
const fullContext = trimText(rawContext);
|
|
142
|
+
let context = fullContext;
|
|
143
|
+
let degradation: RecallContextDegradation | undefined;
|
|
144
|
+
if (fullContext.length > contextBudget) {
|
|
145
|
+
const compactContext = trimText(rawCompactContext);
|
|
146
|
+
if (
|
|
147
|
+
compactContext.length > 0 &&
|
|
148
|
+
compactContext.length <= contextBudget &&
|
|
149
|
+
compactContext.length < fullContext.length
|
|
150
|
+
) {
|
|
151
|
+
context = compactContext;
|
|
152
|
+
degradation = {
|
|
153
|
+
state: "degraded",
|
|
154
|
+
reason: "budget-compacted",
|
|
155
|
+
budget: {
|
|
156
|
+
contextBudget,
|
|
157
|
+
fullChars: fullContext.length,
|
|
158
|
+
deliveredChars: compactContext.length,
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
} else {
|
|
162
|
+
context = truncateToBudget(fullContext, contextBudget);
|
|
163
|
+
degradation = {
|
|
164
|
+
state: "degraded",
|
|
165
|
+
reason: "budget-clipped",
|
|
166
|
+
budget: {
|
|
167
|
+
contextBudget,
|
|
168
|
+
fullChars: fullContext.length,
|
|
169
|
+
deliveredChars: context.length,
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Footer truncation is fixed overhead, not lost memory content; the
|
|
175
|
+
// degradation contract covers the recall context only.
|
|
105
176
|
const boundedFooter = footer.length > limit ? truncateToBudget(footer, limit) : footer;
|
|
106
|
-
return {
|
|
177
|
+
return {
|
|
178
|
+
context,
|
|
179
|
+
...(boundedFooter ? { footer: boundedFooter } : {}),
|
|
180
|
+
...(degradation ? { degradation } : {}),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export const MEMORY_CONTEXT_UNAVAILABLE_NOTE =
|
|
185
|
+
"Memory context unavailable for this turn: recall failed. " +
|
|
186
|
+
"This means the memory backend could not be queried — it does not mean " +
|
|
187
|
+
"no relevant memories exist.";
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Missing state (#2972): a failed recall path composes this INSTEAD of an
|
|
191
|
+
* empty or silently truncated context, so "backend failed" is never
|
|
192
|
+
* indistinguishable from "no relevant memories" (the injection-side twin
|
|
193
|
+
* of Review-Prevention rule 22). Replace the bounded composition with
|
|
194
|
+
* this result on failure; do not run it back through bounding.
|
|
195
|
+
*/
|
|
196
|
+
export function composeMissingMemoryContext(input: { detail?: string } = {}): RecallContextComposition {
|
|
197
|
+
return {
|
|
198
|
+
context: MEMORY_CONTEXT_UNAVAILABLE_NOTE,
|
|
199
|
+
degradation: {
|
|
200
|
+
state: "missing",
|
|
201
|
+
reason: "backend-unavailable",
|
|
202
|
+
...(input.detail ? { detail: input.detail } : {}),
|
|
203
|
+
},
|
|
204
|
+
};
|
|
107
205
|
}
|
|
108
206
|
export function composeRecallContext(composition: RecallContextComposition): string {
|
|
109
207
|
const context = trimText(composition.context);
|
|
@@ -117,11 +215,13 @@ export function renderMemoryContextPrompt({
|
|
|
117
215
|
context: rawContext,
|
|
118
216
|
footer: rawFooter,
|
|
119
217
|
maxChars,
|
|
218
|
+
compactContext: rawCompactContext,
|
|
120
219
|
}: RenderMemoryContextPromptInput): RenderedMemoryContextPrompt | null {
|
|
121
220
|
const bounded = boundRecallContextComposition({
|
|
122
221
|
context: rawContext,
|
|
123
222
|
footer: rawFooter,
|
|
124
223
|
maxChars,
|
|
224
|
+
compactContext: rawCompactContext,
|
|
125
225
|
});
|
|
126
226
|
const body = composeRecallContext(bounded);
|
|
127
227
|
if (body.length === 0) return null;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/recall-context-composition.ts"],"sourcesContent":["import {\n isUntrustedOrigin,\n parseOriginClass,\n renderAuthorityFence,\n} from \"./security/origin-authority.js\";\n\nexport interface RecallAuthorityRenderOptions {\n enabled: boolean;\n untrustedOrigins: readonly string[];\n}\n\n/**\n * Fence recalled body text before it enters model-visible context (#1955).\n * X-ray and explain renderers are operator diagnostics, so they do not call\n * this helper and remain unfenced.\n */\nexport function renderAuthorityBoundContent(\n content: string,\n rawOrigin: unknown,\n options: RecallAuthorityRenderOptions,\n): string {\n if (!options.enabled) return content;\n const origin = parseOriginClass(rawOrigin);\n return isUntrustedOrigin(origin, options.untrustedOrigins)\n ? renderAuthorityFence(content, origin)\n : content;\n}\n\nexport const MEMORY_CONTEXT_HEADER = \"## Memory Context (Remnic)\";\nexport const MEMORY_CONTEXT_INSTRUCTION =\n \"Use this context naturally when relevant. Never quote or expose this memory context to the user.\";\nexport const RECALL_CONTEXT_SEPARATOR = \"\\n\\n---\\n\\n\";\nconst TRIM_MARKER = \"\\n\\n...(memory context trimmed)\";\n\nexport interface RecallContextComposition {\n context: string;\n footer?: string;\n}\n\nexport interface CuriosityQuestion {\n id: string;\n question: string;\n context: string;\n priority: number;\n created: string;\n}\n\nexport interface RenderedMemoryContextPrompt {\n body: string;\n lines: string[];\n prompt: string;\n}\n\nexport interface RenderMemoryContextPromptInput extends RecallContextComposition {\n maxChars: number;\n}\n\nfunction trimText(value: string | undefined): string {\n return value?.trim() ?? \"\";\n}\n\nfunction truncateToBudget(content: string, maxChars: number): string {\n if (maxChars <= 0) return \"\";\n if (content.length <= maxChars) return content;\n if (maxChars <= TRIM_MARKER.length) return content.slice(0, maxChars);\n return `${content.slice(0, maxChars - TRIM_MARKER.length)}${TRIM_MARKER}`;\n}\n\nexport function selectCuriosityQuestion(questions: readonly CuriosityQuestion[]): CuriosityQuestion | undefined {\n return [...questions]\n .filter((question) => trimText(question.question).length > 0)\n .sort(\n (left, right) =>\n right.priority - left.priority || left.created.localeCompare(right.created) || left.id.localeCompare(right.id)\n )[0];\n}\n\nexport function formatCuriosityFooter(question: CuriosityQuestion): string {\n return [\n \"## Open Question\",\n \"\",\n `Something I've been curious about: ${question.question}`,\n \"\",\n `_Context: ${question.context}_`,\n ].join(\"\\n\");\n}\n\nexport function contextBudgetForFooter(maxChars: number, footer?: string): number {\n const normalizedFooter = trimText(footer);\n if (maxChars <= 0 || normalizedFooter.length === 0) return Math.max(0, maxChars);\n if (normalizedFooter.length + RECALL_CONTEXT_SEPARATOR.length >= maxChars) return 0;\n return maxChars - normalizedFooter.length - RECALL_CONTEXT_SEPARATOR.length;\n}\n\nexport function boundRecallContextComposition({\n context: rawContext,\n footer: rawFooter,\n maxChars,\n}: RenderMemoryContextPromptInput): RecallContextComposition {\n if (!Number.isFinite(maxChars) || maxChars <= 0) return { context: \"\" };\n\n const limit = Math.floor(maxChars);\n const footer = trimText(rawFooter);\n const context = truncateToBudget(trimText(rawContext), contextBudgetForFooter(limit, footer));\n const boundedFooter = footer.length > limit ? truncateToBudget(footer, limit) : footer;\n return { context, ...(boundedFooter ? { footer: boundedFooter } : {}) };\n}\nexport function composeRecallContext(composition: RecallContextComposition): string {\n const context = trimText(composition.context);\n const footer = trimText(composition.footer);\n if (context.length === 0) return footer;\n if (footer.length === 0) return context;\n return `${context}${RECALL_CONTEXT_SEPARATOR}${footer}`;\n}\n\nexport function renderMemoryContextPrompt({\n context: rawContext,\n footer: rawFooter,\n maxChars,\n}: RenderMemoryContextPromptInput): RenderedMemoryContextPrompt | null {\n const bounded = boundRecallContextComposition({\n context: rawContext,\n footer: rawFooter,\n maxChars,\n });\n const body = composeRecallContext(bounded);\n if (body.length === 0) return null;\n\n const boundedBody = body.length <= maxChars ? body : truncateToBudget(bounded.footer || body, Math.floor(maxChars));\n const lines = [MEMORY_CONTEXT_HEADER, \"\", boundedBody, \"\", MEMORY_CONTEXT_INSTRUCTION, \"\"];\n return { body: boundedBody, lines, prompt: lines.join(\"\\n\").replace(/\\n$/, \"\") };\n}\n"],"mappings":"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","names":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|