@mnemonik/shared 7.170.6 → 7.171.0

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.
@@ -1,5 +1,24 @@
1
1
  export declare const AMBIENT_ID_PREFIX_LENGTH = 8;
2
- /** Current full UUID pointers plus cached eight-character pointers from older hooks. */
2
+ /**
3
+ * What a recalled memory's line carries when memories learned later relate to
4
+ * it (RETRIEVAL_LAYER §2.0.3): how many, and the closest one's id. It follows
5
+ * the line's own `memory_get <id>` pointer and carries no text from the
6
+ * later memory. The one place the wording lives: the renderer and the pattern
7
+ * that finds (and sheds) it are both built from it. Agent-facing wording; it
8
+ * changes only with the owner's approval.
9
+ */
10
+ export declare const RECALL_LATER_MARKER = " \u00B7 you learned {count} related {memories} later; closest: memory_get {laterId}";
11
+ /** The marker for one recalled memory: `laterCount` later related memories, `laterId` the closest. */
12
+ export declare function renderRecallLaterMarker(laterCount: number, laterId: string): string;
13
+ /** Pattern source of one marker, derived from {@link RECALL_LATER_MARKER}; no capture groups. */
14
+ export declare const RECALL_LATER_MARKER_SOURCE: string;
15
+ /** The text without any later-memory marker: what the line was before one was added. */
16
+ export declare function stripRecallLaterMarkers(text: string): string;
17
+ /**
18
+ * Current full UUID pointers plus cached eight-character pointers from older
19
+ * hooks. A later-memory marker right after the pointer belongs to the same
20
+ * item, so an item split on pointers keeps its marker.
21
+ */
3
22
  export declare const AMBIENT_ITEM_POINTER_SOURCE: string;
4
23
  export declare function ambientItemPointerRegex(flags?: string): RegExp;
5
24
  //# sourceMappingURL=ambientPointer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ambientPointer.d.ts","sourceRoot":"","sources":["../src/ambientPointer.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAY1C,wFAAwF;AACxF,eAAO,MAAM,2BAA2B,QAEnB,CAAC;AAEtB,wBAAgB,uBAAuB,CAAC,KAAK,SAAM,GAAG,MAAM,CAE3D"}
1
+ {"version":3,"file":"ambientPointer.d.ts","sourceRoot":"","sources":["../src/ambientPointer.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAY1C;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,wFACuD,CAAC;AAExF,sGAAsG;AACtG,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAInF;AAMD,iGAAiG;AACjG,eAAO,MAAM,0BAA0B,QAGwC,CAAC;AAEhF,wFAAwF;AACxF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,QAEe,CAAC;AAExD,wBAAgB,uBAAuB,CAAC,KAAK,SAAM,GAAG,MAAM,CAE3D"}
@@ -7,9 +7,40 @@ const LEGACY_MEMORY_ID_SOURCE = `[0-9A-Za-z_-]{${AMBIENT_ID_PREFIX_LENGTH}}`;
7
7
  * exactly as before.
8
8
  */
9
9
  const FIRST_PERSON_POINTER_LEAD_SOURCE = '(?:to recall it in full:\\s*)?';
10
- /** Current full UUID pointers plus cached eight-character pointers from older hooks. */
10
+ /**
11
+ * What a recalled memory's line carries when memories learned later relate to
12
+ * it (RETRIEVAL_LAYER §2.0.3): how many, and the closest one's id. It follows
13
+ * the line's own `memory_get <id>` pointer and carries no text from the
14
+ * later memory. The one place the wording lives: the renderer and the pattern
15
+ * that finds (and sheds) it are both built from it. Agent-facing wording; it
16
+ * changes only with the owner's approval.
17
+ */
18
+ export const RECALL_LATER_MARKER = ' \u00b7 you learned {count} related {memories} later; closest: memory_get {laterId}';
19
+ /** The marker for one recalled memory: `laterCount` later related memories, `laterId` the closest. */
20
+ export function renderRecallLaterMarker(laterCount, laterId) {
21
+ return RECALL_LATER_MARKER.replace('{count}', String(laterCount))
22
+ .replace('{memories}', laterCount === 1 ? 'memory' : 'memories')
23
+ .replace('{laterId}', laterId);
24
+ }
25
+ function escapeRegExp(text) {
26
+ return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
27
+ }
28
+ /** Pattern source of one marker, derived from {@link RECALL_LATER_MARKER}; no capture groups. */
29
+ export const RECALL_LATER_MARKER_SOURCE = escapeRegExp(RECALL_LATER_MARKER)
30
+ .replace(escapeRegExp('{count}'), '\\d+')
31
+ .replace(escapeRegExp('{memories}'), 'memor(?:y|ies)')
32
+ .replace(escapeRegExp('{laterId}'), `${MEMORY_UUID_SOURCE}(?![0-9A-Za-z_-])`);
33
+ /** The text without any later-memory marker: what the line was before one was added. */
34
+ export function stripRecallLaterMarkers(text) {
35
+ return text.replace(new RegExp(RECALL_LATER_MARKER_SOURCE, 'g'), '');
36
+ }
37
+ /**
38
+ * Current full UUID pointers plus cached eight-character pointers from older
39
+ * hooks. A later-memory marker right after the pointer belongs to the same
40
+ * item, so an item split on pointers keeps its marker.
41
+ */
11
42
  export const AMBIENT_ITEM_POINTER_SOURCE = `\\u2014\\s*${FIRST_PERSON_POINTER_LEAD_SOURCE}memory_get\\s+(${MEMORY_UUID_SOURCE}|${LEGACY_MEMORY_ID_SOURCE})` +
12
- '(?![0-9A-Za-z_-])';
43
+ `(?![0-9A-Za-z_-])(?:${RECALL_LATER_MARKER_SOURCE})?`;
13
44
  export function ambientItemPointerRegex(flags = 'g') {
14
45
  return new RegExp(AMBIENT_ITEM_POINTER_SOURCE, flags);
15
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ambientPointer.js","sourceRoot":"","sources":["../src/ambientPointer.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,MAAM,kBAAkB,GAAG,sDAAsD,CAAC;AAClF,MAAM,uBAAuB,GAAG,iBAAiB,wBAAwB,GAAG,CAAC;AAE7E;;;;GAIG;AACH,MAAM,gCAAgC,GAAG,gCAAgC,CAAC;AAE1E,wFAAwF;AACxF,MAAM,CAAC,MAAM,2BAA2B,GACtC,cAAc,gCAAgC,kBAAkB,kBAAkB,IAAI,uBAAuB,GAAG;IAChH,mBAAmB,CAAC;AAEtB,MAAM,UAAU,uBAAuB,CAAC,KAAK,GAAG,GAAG;IACjD,OAAO,IAAI,MAAM,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"ambientPointer.js","sourceRoot":"","sources":["../src/ambientPointer.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,MAAM,kBAAkB,GAAG,sDAAsD,CAAC;AAClF,MAAM,uBAAuB,GAAG,iBAAiB,wBAAwB,GAAG,CAAC;AAE7E;;;;GAIG;AACH,MAAM,gCAAgC,GAAG,gCAAgC,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC9B,qFAAqF,CAAC;AAExF,sGAAsG;AACtG,MAAM,UAAU,uBAAuB,CAAC,UAAkB,EAAE,OAAe;IACzE,OAAO,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;SAC9D,OAAO,CAAC,YAAY,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;SAC/D,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAY,CAAC,mBAAmB,CAAC;KACxE,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;KACxC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;KACrD,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,GAAG,kBAAkB,mBAAmB,CAAC,CAAC;AAEhF,wFAAwF;AACxF,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GACtC,cAAc,gCAAgC,kBAAkB,kBAAkB,IAAI,uBAAuB,GAAG;IAChH,uBAAuB,0BAA0B,IAAI,CAAC;AAExD,MAAM,UAAU,uBAAuB,CAAC,KAAK,GAAG,GAAG;IACjD,OAAO,IAAI,MAAM,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC"}
@@ -36,8 +36,12 @@ export declare function measureContext(text: string, units?: ContextBudgetUnits)
36
36
  * shed memory keeps a bounded head plus its retrieval marker; later shed items
37
37
  * share one trailing marker containing only their explicit retrieval routes.
38
38
  * Items without a route leave no agent-visible stub.
39
+ *
40
+ * Before anything is shed, the later-memory markers go (ambientPointer.ts
41
+ * RECALL_LATER_MARKER), the last item's first: a marker never costs a memory
42
+ * its place or any of its text.
39
43
  */
40
- export declare function fitContextItems(items: readonly ContextBudgetItem[], opts: {
44
+ export declare function fitContextItems(givenItems: readonly ContextBudgetItem[], opts: {
41
45
  budget: number;
42
46
  units?: ContextBudgetUnits;
43
47
  reservedSuffix?: readonly ContextBudgetItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"contextBudget.d.ts","sourceRoot":"","sources":["../src/contextBudget.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,YAAY,CAAC;AAE7D,eAAO,MAAM,wBAAwB;aACnC,WAAW,EAAE,IAAK;aAClB,KAAK,EAAE,IAAK;aACZ,MAAM,EAAE,IAAK;aACb,IAAI,EAAE,IAAK;aACX,MAAM,EAAE,IAAK;CACL,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,0EAA0E;IAC1E,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AA8CD,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,kBAAiC,GAAG,MAAM,CAE7F;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,iBAAiB,EAAE,EACnC,IAAI,EAAE;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,cAAc,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC/C,GACA,kBAAkB,CA6FpB;AA4BD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,SAAS,MAAM,EAAO,GAChC,iBAAiB,EAAE,CAMrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG7E;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAClF,MAAM,CAIR;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAExD"}
1
+ {"version":3,"file":"contextBudget.d.ts","sourceRoot":"","sources":["../src/contextBudget.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,YAAY,CAAC;AAE7D,eAAO,MAAM,wBAAwB;aACnC,WAAW,EAAE,IAAK;aAClB,KAAK,EAAE,IAAK;aACZ,MAAM,EAAE,IAAK;aACb,IAAI,EAAE,IAAK;aACX,MAAM,EAAE,IAAK;CACL,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,0EAA0E;IAC1E,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AA8CD,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,kBAAiC,GAAG,MAAM,CAE7F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,SAAS,iBAAiB,EAAE,EACxC,IAAI,EAAE;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,cAAc,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC/C,GACA,kBAAkB,CAsGpB;AA4BD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,SAAS,MAAM,EAAO,GAChC,iBAAiB,EAAE,CAMrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG7E;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAClF,MAAM,CAIR;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAExD"}
@@ -1,4 +1,4 @@
1
- import { AMBIENT_ITEM_POINTER_SOURCE } from './ambientPointer.js';
1
+ import { AMBIENT_ITEM_POINTER_SOURCE, stripRecallLaterMarkers } from './ambientPointer.js';
2
2
  export { AMBIENT_ITEM_POINTER_SOURCE } from './ambientPointer.js';
3
3
  export const REFLEX_NOTE_BUDGET_BYTES = {
4
4
  claude_code: 6_000,
@@ -59,18 +59,32 @@ export function measureContext(text, units = 'characters') {
59
59
  * shed memory keeps a bounded head plus its retrieval marker; later shed items
60
60
  * share one trailing marker containing only their explicit retrieval routes.
61
61
  * Items without a route leave no agent-visible stub.
62
+ *
63
+ * Before anything is shed, the later-memory markers go (ambientPointer.ts
64
+ * RECALL_LATER_MARKER), the last item's first: a marker never costs a memory
65
+ * its place or any of its text.
62
66
  */
63
- export function fitContextItems(items, opts) {
67
+ export function fitContextItems(givenItems, opts) {
64
68
  const units = opts.units ?? 'characters';
65
69
  const suffix = opts.reservedSuffix ?? [];
66
- const fullValue = [...items, ...suffix].map((item) => item.text).join(JOINER);
67
- if (measureContext(fullValue, units) <= opts.budget) {
68
- return {
69
- value: fullValue,
70
- fullyDeliveredItems: items.length,
71
- partialItemIndex: null,
72
- partialUnitsDelivered: 0,
73
- };
70
+ const valueOf = (entries) => [...entries, ...suffix].map((item) => item.text).join(JOINER);
71
+ const items = [...givenItems];
72
+ for (let index = items.length;; index -= 1) {
73
+ const value = valueOf(items);
74
+ if (measureContext(value, units) <= opts.budget) {
75
+ return {
76
+ value,
77
+ fullyDeliveredItems: items.length,
78
+ partialItemIndex: null,
79
+ partialUnitsDelivered: 0,
80
+ };
81
+ }
82
+ const item = items[index - 1];
83
+ if (item === undefined)
84
+ break;
85
+ const text = stripRecallLaterMarkers(item.text);
86
+ if (text !== item.text)
87
+ items[index - 1] = { ...item, text };
74
88
  }
75
89
  const accepted = [];
76
90
  for (let index = 0; index < items.length; index += 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"contextBudget.js","sourceRoot":"","sources":["../src/contextBudget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contextBudget.js","sourceRoot":"","sources":["../src/contextBudget.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mnemonik/shared",
3
- "version": "7.170.6",
3
+ "version": "7.171.0",
4
4
  "description": "Shared constants and utilities for Mnemonik packages",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,10 +10,47 @@ const LEGACY_MEMORY_ID_SOURCE = `[0-9A-Za-z_-]{${AMBIENT_ID_PREFIX_LENGTH}}`;
10
10
  */
11
11
  const FIRST_PERSON_POINTER_LEAD_SOURCE = '(?:to recall it in full:\\s*)?';
12
12
 
13
- /** Current full UUID pointers plus cached eight-character pointers from older hooks. */
13
+ /**
14
+ * What a recalled memory's line carries when memories learned later relate to
15
+ * it (RETRIEVAL_LAYER §2.0.3): how many, and the closest one's id. It follows
16
+ * the line's own `memory_get <id>` pointer and carries no text from the
17
+ * later memory. The one place the wording lives: the renderer and the pattern
18
+ * that finds (and sheds) it are both built from it. Agent-facing wording; it
19
+ * changes only with the owner's approval.
20
+ */
21
+ export const RECALL_LATER_MARKER =
22
+ ' \u00b7 you learned {count} related {memories} later; closest: memory_get {laterId}';
23
+
24
+ /** The marker for one recalled memory: `laterCount` later related memories, `laterId` the closest. */
25
+ export function renderRecallLaterMarker(laterCount: number, laterId: string): string {
26
+ return RECALL_LATER_MARKER.replace('{count}', String(laterCount))
27
+ .replace('{memories}', laterCount === 1 ? 'memory' : 'memories')
28
+ .replace('{laterId}', laterId);
29
+ }
30
+
31
+ function escapeRegExp(text: string): string {
32
+ return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
33
+ }
34
+
35
+ /** Pattern source of one marker, derived from {@link RECALL_LATER_MARKER}; no capture groups. */
36
+ export const RECALL_LATER_MARKER_SOURCE = escapeRegExp(RECALL_LATER_MARKER)
37
+ .replace(escapeRegExp('{count}'), '\\d+')
38
+ .replace(escapeRegExp('{memories}'), 'memor(?:y|ies)')
39
+ .replace(escapeRegExp('{laterId}'), `${MEMORY_UUID_SOURCE}(?![0-9A-Za-z_-])`);
40
+
41
+ /** The text without any later-memory marker: what the line was before one was added. */
42
+ export function stripRecallLaterMarkers(text: string): string {
43
+ return text.replace(new RegExp(RECALL_LATER_MARKER_SOURCE, 'g'), '');
44
+ }
45
+
46
+ /**
47
+ * Current full UUID pointers plus cached eight-character pointers from older
48
+ * hooks. A later-memory marker right after the pointer belongs to the same
49
+ * item, so an item split on pointers keeps its marker.
50
+ */
14
51
  export const AMBIENT_ITEM_POINTER_SOURCE =
15
52
  `\\u2014\\s*${FIRST_PERSON_POINTER_LEAD_SOURCE}memory_get\\s+(${MEMORY_UUID_SOURCE}|${LEGACY_MEMORY_ID_SOURCE})` +
16
- '(?![0-9A-Za-z_-])';
53
+ `(?![0-9A-Za-z_-])(?:${RECALL_LATER_MARKER_SOURCE})?`;
17
54
 
18
55
  export function ambientItemPointerRegex(flags = 'g'): RegExp {
19
56
  return new RegExp(AMBIENT_ITEM_POINTER_SOURCE, flags);
@@ -1,4 +1,4 @@
1
- import { AMBIENT_ITEM_POINTER_SOURCE } from './ambientPointer.js';
1
+ import { AMBIENT_ITEM_POINTER_SOURCE, stripRecallLaterMarkers } from './ambientPointer.js';
2
2
 
3
3
  export { AMBIENT_ITEM_POINTER_SOURCE } from './ambientPointer.js';
4
4
 
@@ -91,9 +91,13 @@ export function measureContext(text: string, units: ContextBudgetUnits = 'charac
91
91
  * shed memory keeps a bounded head plus its retrieval marker; later shed items
92
92
  * share one trailing marker containing only their explicit retrieval routes.
93
93
  * Items without a route leave no agent-visible stub.
94
+ *
95
+ * Before anything is shed, the later-memory markers go (ambientPointer.ts
96
+ * RECALL_LATER_MARKER), the last item's first: a marker never costs a memory
97
+ * its place or any of its text.
94
98
  */
95
99
  export function fitContextItems(
96
- items: readonly ContextBudgetItem[],
100
+ givenItems: readonly ContextBudgetItem[],
97
101
  opts: {
98
102
  budget: number;
99
103
  units?: ContextBudgetUnits;
@@ -102,14 +106,23 @@ export function fitContextItems(
102
106
  ): BudgetedContextFit {
103
107
  const units = opts.units ?? 'characters';
104
108
  const suffix = opts.reservedSuffix ?? [];
105
- const fullValue = [...items, ...suffix].map((item) => item.text).join(JOINER);
106
- if (measureContext(fullValue, units) <= opts.budget) {
107
- return {
108
- value: fullValue,
109
- fullyDeliveredItems: items.length,
110
- partialItemIndex: null,
111
- partialUnitsDelivered: 0,
112
- };
109
+ const valueOf = (entries: readonly ContextBudgetItem[]): string =>
110
+ [...entries, ...suffix].map((item) => item.text).join(JOINER);
111
+ const items = [...givenItems];
112
+ for (let index = items.length; ; index -= 1) {
113
+ const value = valueOf(items);
114
+ if (measureContext(value, units) <= opts.budget) {
115
+ return {
116
+ value,
117
+ fullyDeliveredItems: items.length,
118
+ partialItemIndex: null,
119
+ partialUnitsDelivered: 0,
120
+ };
121
+ }
122
+ const item = items[index - 1];
123
+ if (item === undefined) break;
124
+ const text = stripRecallLaterMarkers(item.text);
125
+ if (text !== item.text) items[index - 1] = { ...item, text };
113
126
  }
114
127
 
115
128
  const accepted: string[] = [];