@namzu/sdk 62.8.0 → 62.10.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.
Files changed (110) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/compaction/plan.d.ts +12 -0
  3. package/dist/compaction/plan.d.ts.map +1 -1
  4. package/dist/compaction/plan.js +39 -11
  5. package/dist/compaction/plan.js.map +1 -1
  6. package/dist/compaction/salience/minhash.d.ts +9 -0
  7. package/dist/compaction/salience/minhash.d.ts.map +1 -1
  8. package/dist/compaction/salience/minhash.js +20 -0
  9. package/dist/compaction/salience/minhash.js.map +1 -1
  10. package/dist/compaction/salience/score.d.ts.map +1 -1
  11. package/dist/compaction/salience/score.js +87 -45
  12. package/dist/compaction/salience/score.js.map +1 -1
  13. package/dist/compaction/salience/working-set.d.ts +14 -0
  14. package/dist/compaction/salience/working-set.d.ts.map +1 -1
  15. package/dist/compaction/salience/working-set.js +84 -33
  16. package/dist/compaction/salience/working-set.js.map +1 -1
  17. package/dist/config/runtime.d.ts +2 -0
  18. package/dist/config/runtime.d.ts.map +1 -1
  19. package/dist/config/runtime.js +14 -0
  20. package/dist/config/runtime.js.map +1 -1
  21. package/dist/connector/http-operation.d.ts +1 -0
  22. package/dist/connector/http-operation.d.ts.map +1 -1
  23. package/dist/connector/http-operation.js +1 -1
  24. package/dist/connector/http-operation.js.map +1 -1
  25. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  26. package/dist/connector/mcp/adapter.js +10 -0
  27. package/dist/connector/mcp/adapter.js.map +1 -1
  28. package/dist/connector/mcp/client.d.ts +12 -0
  29. package/dist/connector/mcp/client.d.ts.map +1 -1
  30. package/dist/connector/mcp/client.js +59 -10
  31. package/dist/connector/mcp/client.js.map +1 -1
  32. package/dist/constants/mcp/index.d.ts +15 -0
  33. package/dist/constants/mcp/index.d.ts.map +1 -1
  34. package/dist/constants/mcp/index.js +15 -0
  35. package/dist/constants/mcp/index.js.map +1 -1
  36. package/dist/manager/session/turn-recorder.d.ts +25 -0
  37. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  38. package/dist/manager/session/turn-recorder.js +193 -17
  39. package/dist/manager/session/turn-recorder.js.map +1 -1
  40. package/dist/public-runtime.d.ts +1 -1
  41. package/dist/public-runtime.d.ts.map +1 -1
  42. package/dist/public-runtime.js +1 -1
  43. package/dist/public-runtime.js.map +1 -1
  44. package/dist/runtime/query/cancelled-before-start.js +1 -1
  45. package/dist/runtime/query/cancelled-before-start.js.map +1 -1
  46. package/dist/runtime/query/checkpoint.js +2 -1
  47. package/dist/runtime/query/checkpoint.js.map +1 -1
  48. package/dist/runtime/query/index.d.ts.map +1 -1
  49. package/dist/runtime/query/index.js +4 -1
  50. package/dist/runtime/query/index.js.map +1 -1
  51. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  52. package/dist/runtime/query/iteration/phases/compaction.js +15 -1
  53. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  54. package/dist/runtime/query/prepare-turn.js +10 -4
  55. package/dist/runtime/query/prepare-turn.js.map +1 -1
  56. package/dist/store/session-log/core.d.ts +31 -1
  57. package/dist/store/session-log/core.d.ts.map +1 -1
  58. package/dist/store/session-log/core.js +95 -9
  59. package/dist/store/session-log/core.js.map +1 -1
  60. package/dist/store/session-log/disk.d.ts +2 -0
  61. package/dist/store/session-log/disk.d.ts.map +1 -1
  62. package/dist/store/session-log/disk.js +37 -0
  63. package/dist/store/session-log/disk.js.map +1 -1
  64. package/dist/store/session-log/fold.d.ts +9 -1
  65. package/dist/store/session-log/fold.d.ts.map +1 -1
  66. package/dist/store/session-log/fold.js +18 -2
  67. package/dist/store/session-log/fold.js.map +1 -1
  68. package/dist/store/session-log/incremental.d.ts +8 -0
  69. package/dist/store/session-log/incremental.d.ts.map +1 -1
  70. package/dist/store/session-log/incremental.js +7 -2
  71. package/dist/store/session-log/incremental.js.map +1 -1
  72. package/dist/store/session-log/index.d.ts +1 -0
  73. package/dist/store/session-log/index.d.ts.map +1 -1
  74. package/dist/store/session-log/index.js +1 -0
  75. package/dist/store/session-log/index.js.map +1 -1
  76. package/dist/store/session-log/verified-prefix.d.ts +46 -0
  77. package/dist/store/session-log/verified-prefix.d.ts.map +1 -0
  78. package/dist/store/session-log/verified-prefix.js +233 -0
  79. package/dist/store/session-log/verified-prefix.js.map +1 -0
  80. package/dist/types/connector/mcp.d.ts +19 -0
  81. package/dist/types/connector/mcp.d.ts.map +1 -1
  82. package/dist/types/session/records.d.ts +80 -1
  83. package/dist/types/session/records.d.ts.map +1 -1
  84. package/dist/types/session/records.js +22 -0
  85. package/dist/types/session/records.js.map +1 -1
  86. package/package.json +1 -1
  87. package/src/compaction/plan.ts +53 -11
  88. package/src/compaction/salience/minhash.ts +20 -0
  89. package/src/compaction/salience/score.ts +112 -43
  90. package/src/compaction/salience/working-set.ts +102 -31
  91. package/src/config/runtime.ts +14 -0
  92. package/src/connector/http-operation.ts +1 -1
  93. package/src/connector/mcp/adapter.ts +11 -0
  94. package/src/connector/mcp/client.ts +75 -12
  95. package/src/constants/mcp/index.ts +17 -0
  96. package/src/manager/session/turn-recorder.ts +218 -15
  97. package/src/public-runtime.ts +1 -0
  98. package/src/runtime/query/cancelled-before-start.ts +1 -1
  99. package/src/runtime/query/checkpoint.ts +2 -1
  100. package/src/runtime/query/index.ts +4 -1
  101. package/src/runtime/query/iteration/phases/compaction.ts +18 -0
  102. package/src/runtime/query/prepare-turn.ts +10 -3
  103. package/src/store/session-log/core.ts +129 -10
  104. package/src/store/session-log/disk.ts +32 -0
  105. package/src/store/session-log/fold.ts +19 -2
  106. package/src/store/session-log/incremental.ts +15 -2
  107. package/src/store/session-log/index.ts +1 -0
  108. package/src/store/session-log/verified-prefix.ts +243 -0
  109. package/src/types/connector/mcp.ts +19 -0
  110. package/src/types/session/records.ts +25 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## 62.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 1ff7974: An MCP tool call that reports progress can now outlive `requestTimeoutMs`, as an opt-in. New `MCPClientConfig.resetTimeoutOnProgress` (and the same key per server in `namzu.config.json`, `~/.namzu/config.yaml` and `.mcp.json`): when `true`, each progress report whose value rose restarts the request deadline for that call, so a server that works for a minute and reports throughout is no longer cut off at 30 seconds. New `maxTotalTimeoutMs` is the most such a call may take in total, counted from when it was issued and never extended; it defaults to ten times `requestTimeoutMs` (5 minutes at the default 30 seconds) and may not be below `requestTimeoutMs`. A call that stops reporting fails after `requestTimeoutMs` of silence, and one that never stops fails at the cap; the error says which. Nothing changes unless `resetTimeoutOnProgress` is set; with it set, the server's bridged tools carry a `timeoutMs` of the cap plus 5 seconds so the executor's 120-second tool deadline does not cut the call first. `mcp test` now also names a bad `requestTimeoutMs`. `MCPClient` now throws at construction for a `maxTotalTimeoutMs` that is not an integer from 1 to 2,147,483,647 or is below `requestTimeoutMs`, even when the option is off; a CLI server with such a value fails by name.
8
+
9
+ ## 62.9.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 0efef98: A long session costs less each turn: taking a session's log for writing no longer parses every record it already verified. Nothing is trusted that was not checked: the first claim of a log in a process verifies it in full as before, and every later claim in that process still reads and hashes every byte, so a byte altered anywhere is refused at the next claim with the same `SessionLogIntegrityError`. What it skips, for a line whose length and SHA-256 equal what the process verified, is parsing, schema validation and keeping the record; records appended since (by this or another writer) and a log that differs in any way (a changed byte, a shorter or replaced file) are verified in full from byte 0.
14
+
15
+ New and optional, nothing to change unless you implement them: `LogMedium.identity()` (a medium that does not provide it is verified in full each time) and `LogMedium.scan()` (reads through one reused buffer; `stream` is used without it), `ReadSessionLogOptions.reverify` (with `after`, strict mode: re-check the bytes before the cursor by hash), and `foldSessionLog` / `IncrementalFold` are now exported. The on-disk record shapes are unchanged, and a log written by this version reads on the previous one.
16
+
17
+ In the CLI, `readConversationFacts` keeps only the facts it answers (a first record, title, archive flag, open turn, last timestamp and a few typed queries) instead of every record of the log; `ConversationFacts.records` is gone from that function's result, and callers that fold messages use the new `readConversationRecords`. This is CLI-internal.
18
+
19
+ - b5ded5b: A compaction pass that edits a message in place (a long narration cut to its first sentence, a large tool result cleared) now appends one small `message_edited` record per edited message. Before, the session log held a `compaction` record plus a new copy of every message after the first edited one, on every turn: in a long session held at its soft target that was most of the log. The context a reader folds from the log is the same and the original text stays in the log. New record type `message_edited` (`MessageEditedRecordSchema`), flagged `ignorable`: an earlier release reading a log this version wrote skips it and folds the original, unedited text of those messages (the same messages, order and ids), and the next compaction pass cuts them down again. No existing record gains a field or a value. A host that sends back history it cached before a pass is still accepted, at no extra read of the log per message. A pass that swaps a message for a copy with the same text appends nothing. `@namzu/cli` reads a session's first record, not its whole log, to start a turn.
20
+
21
+ A turn resumed from a log no longer loses recorded messages: before, any restored message without an id that arrived ahead of the recorded ones (a compaction summary, the working-memory slot, a message the host added) re-based the fold on a context holding only it, and the recorded messages after it dropped out of the fold and the next resume. The runtime now marks the restored history (`pushMessage` takes `restored: true`) and re-bases once, on the whole restored context. A resume from a checkpoint older than an edit also puts that edit's text back when the fold holds a summary.
22
+
23
+ - d753bf0: New option `softTargetHeadroom` for the `salience` compaction strategy (`compactionConfig.softTargetHeadroom` in the SDK, `compaction.softTargetHeadroom` in `namzu.config.json` and `~/.namzu/config.yaml`): a fraction of the window from 0 to 1 that a pass sheds below the soft target. A pass still starts when the context reaches the soft target, but it then keeps shortening until the context is that much lower, so the next pass comes after the room is used instead of on the next turn, and a provider that caches the start of the request keeps its cache for longer. The messages shortened are the same ones in the same order, only earlier; the cost is that much less history kept whole. Off unless set: absent or `0` is the previous behaviour exactly, so nothing changes on upgrade.
24
+
25
+ ### Patch Changes
26
+
27
+ - d753bf0: The salience compaction pass is cheaper and chooses exactly what it chose before. Each message's tokens, term frequencies and signature are computed once and kept with the message, so a pass no longer re-reads the whole history (at about 1,600 messages a pass fell from about 100 ms to about 20 ms of one uninterrupted block, 4x to 12x depending on message length; the first pass in a process gains little), and a pass skips scoring when nothing outside the leading system run and the recent window is a clearable result or a long narration. Scores, the messages stubbed or cleared and their order are unchanged; nothing to do on upgrade. A salience pass that cannot shed anything and is below the summary trigger no longer starts at all: its `pre_compact` and `post_compact` hooks and its `compaction_started` event no longer fire for a pass that did nothing. At the trigger, when forced, and with a host reducer, the pass starts as before. A host that counted those hook calls or events as "compactions" now sees only the passes that could act.
28
+
3
29
  ## 62.8.0
4
30
 
5
31
  ### Minor Changes
@@ -110,6 +110,18 @@ export declare function naiveKeepStartByTokens(messages: readonly Message[], bud
110
110
  */
111
111
  /** Where the salience pass holds the context, as a fraction of the window. */
112
112
  export declare const DEFAULT_SOFT_TARGET = 0.5;
113
+ /**
114
+ * The context size, in tokens, a salience pass sheds down to: the soft
115
+ * target less the configured headroom. With no headroom (the default) this
116
+ * is the soft target, computed exactly as it always was.
117
+ */
118
+ export declare function salienceTargetTokens(config: CompactionConfig, windowTokens: number): number;
119
+ /**
120
+ * Whether a salience pass could shed anything from `messages` at all: false
121
+ * is exact (the pass would make no action whatever the scores are), true is
122
+ * "go and score". See {@link hasEvictableMessage}.
123
+ */
124
+ export declare function canShedSalienceWorkingSet(messages: readonly Message[], config: CompactionConfig): boolean;
113
125
  export declare function planSalienceWorkingSet(input: {
114
126
  readonly messages: readonly Message[];
115
127
  readonly config: CompactionConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/compaction/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/compaction/plan.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { resolveTriggerThreshold } from './context-window.js';
2
2
  import { findSafeTrimIndex } from './dangling.js';
3
3
  import { buildGoal } from './salience/goal.js';
4
4
  import { scoreMessages } from './salience/score.js';
5
- import { planWorkingSet } from './salience/working-set.js';
5
+ import { hasEvictableMessage, planNothingToShed, planWorkingSet, } from './salience/working-set.js';
6
6
  import { estimateMessageTokens, estimateMessagesTokens } from './token-estimate.js';
7
7
  import { clearStaleToolResults } from './tool-result-editing.js';
8
8
  /**
@@ -46,21 +46,49 @@ export function naiveKeepStartByTokens(messages, budgetTokens) {
46
46
  */
47
47
  /** Where the salience pass holds the context, as a fraction of the window. */
48
48
  export const DEFAULT_SOFT_TARGET = 0.5;
49
- export function planSalienceWorkingSet(input) {
50
- const { config, estimatedTokens, contextWindowTokens: budget } = input;
51
- const goal = buildGoal(input.messages, {
52
- ...(input.openTasks ? { openTasks: input.openTasks } : {}),
53
- });
54
- const scored = scoreMessages(input.messages, {
55
- goal,
49
+ /**
50
+ * The context size, in tokens, a salience pass sheds down to: the soft
51
+ * target less the configured headroom. With no headroom (the default) this
52
+ * is the soft target, computed exactly as it always was.
53
+ */
54
+ export function salienceTargetTokens(config, windowTokens) {
55
+ const soft = config.softTarget ?? DEFAULT_SOFT_TARGET;
56
+ const headroom = config.softTargetHeadroom ?? 0;
57
+ return Math.floor(windowTokens * (headroom > 0 ? Math.max(0, soft - headroom) : soft));
58
+ }
59
+ /**
60
+ * Whether a salience pass could shed anything from `messages` at all: false
61
+ * is exact (the pass would make no action whatever the scores are), true is
62
+ * "go and score". See {@link hasEvictableMessage}.
63
+ */
64
+ export function canShedSalienceWorkingSet(messages, config) {
65
+ return hasEvictableMessage(messages, {
66
+ minToolResultChars: config.minToolResultCharsToClear,
67
+ ...(config.preserveToolResultsFrom ? { preserveTools: config.preserveToolResultsFrom } : {}),
56
68
  keepRecentMessages: config.keepRecentMessages,
57
69
  });
58
- const working = planWorkingSet(input.messages, scored, {
70
+ }
71
+ export function planSalienceWorkingSet(input) {
72
+ const { config, estimatedTokens, contextWindowTokens: budget } = input;
73
+ const workingOptions = {
59
74
  estimatedTokens,
60
- targetTokens: Math.floor(budget * (config.softTarget ?? DEFAULT_SOFT_TARGET)),
75
+ targetTokens: salienceTargetTokens(config, budget),
61
76
  minToolResultChars: config.minToolResultCharsToClear,
62
77
  ...(config.preserveToolResultsFrom ? { preserveTools: config.preserveToolResultsFrom } : {}),
63
- });
78
+ };
79
+ // Nothing the pass may shed, whatever the scores say: every tool result
80
+ // is small, cleared, an error or from a preserved tool, and every
81
+ // narration is short or already cut. Scoring every message to learn that
82
+ // is the whole cost of a pass that can do nothing, and it ran on every
83
+ // turn from the soft target until the summary trigger.
84
+ const working = canShedSalienceWorkingSet(input.messages, config)
85
+ ? planWorkingSet(input.messages, scoreMessages(input.messages, {
86
+ goal: buildGoal(input.messages, {
87
+ ...(input.openTasks ? { openTasks: input.openTasks } : {}),
88
+ }),
89
+ keepRecentMessages: config.keepRecentMessages,
90
+ }), workingOptions)
91
+ : planNothingToShed(input.messages, workingOptions);
64
92
  return {
65
93
  kind: 'cleared',
66
94
  messages: working.messages,
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/compaction/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/compaction/plan.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,14 @@
13
13
  export declare function minhash(tokens: readonly string[]): Uint32Array;
14
14
  /** Estimated Jaccard similarity of two signatures, 0..1. */
15
15
  export declare function similarity(a: Uint32Array, b: Uint32Array): number;
16
+ /**
17
+ * {@link similarity}, or 0 when it is below `floor`.
18
+ *
19
+ * The scorer reads a similarity below one half as no similarity at all, so
20
+ * a comparison that has already missed enough slots to land under the floor
21
+ * can stop there. For a pair that reaches the floor the answer is the same
22
+ * number `similarity` returns, slot for slot.
23
+ */
24
+ export declare function similarityAtLeast(a: Uint32Array, b: Uint32Array, floor: number): number;
16
25
  export declare function isEmptySignature(signature: Uint32Array): boolean;
17
26
  //# sourceMappingURL=minhash.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"minhash.d.ts","sourceRoot":"","sources":["../../../src/compaction/salience/minhash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAgB9D;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,MAAM,CAIjE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAEhE"}
1
+ {"version":3,"file":"minhash.d.ts","sourceRoot":"","sources":["../../../src/compaction/salience/minhash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAgB9D;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,MAAM,CAIjE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAUvF;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAEhE"}
@@ -48,6 +48,26 @@ export function similarity(a, b) {
48
48
  same += 1;
49
49
  return same / HASHES;
50
50
  }
51
+ /**
52
+ * {@link similarity}, or 0 when it is below `floor`.
53
+ *
54
+ * The scorer reads a similarity below one half as no similarity at all, so
55
+ * a comparison that has already missed enough slots to land under the floor
56
+ * can stop there. For a pair that reaches the floor the answer is the same
57
+ * number `similarity` returns, slot for slot.
58
+ */
59
+ export function similarityAtLeast(a, b, floor) {
60
+ const allowedMisses = HASHES - Math.ceil(floor * HASHES);
61
+ let misses = 0;
62
+ for (let slot = 0; slot < HASHES; slot += 1) {
63
+ if (a[slot] !== b[slot]) {
64
+ misses += 1;
65
+ if (misses > allowedMisses)
66
+ return 0;
67
+ }
68
+ }
69
+ return (HASHES - misses) / HASHES;
70
+ }
51
71
  export function isEmptySignature(signature) {
52
72
  return signature.every((h) => h === 0xffffffff);
53
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"minhash.js","sourceRoot":"","sources":["../../../src/compaction/salience/minhash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,GAAG,EAAE,CAAA;AACjB,MAAM,OAAO,GAAG,CAAC,CAAA;AAEjB,SAAS,KAAK,CAAC,IAAY,EAAE,IAAY;IACxC,IAAI,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,OAAO,CAAC,MAAyB;IAChD,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC1D,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC/B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAClF,OAAO,SAAS,CAAA;IACjB,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;QAChE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAC9B,IAAI,CAAC,GAAI,SAAS,CAAC,IAAI,CAAY;gBAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACzD,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,CAAc,EAAE,CAAc;IACxD,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,CAAC;QAAE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YAAE,IAAI,IAAI,CAAC,CAAA;IAC/E,OAAO,IAAI,GAAG,MAAM,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAsB;IACtD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"minhash.js","sourceRoot":"","sources":["../../../src/compaction/salience/minhash.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../../src/compaction/salience/score.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAoB,OAAO,EAAe,MAAM,8BAA8B,CAAA;AAO1F,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC3B;AAED,eAAO,MAAM,wBAAwB,EAAE,eAKtC,CAAA;AAED,MAAM,WAAW,cAAc;IAC9B,+CAA+C;IAC/C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;CACjC;AAED,eAAO,MAAM,uBAAuB,EAAE,cAIrC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;AAE3E,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAA;CAC1C;AAED,MAAM,WAAW,YAAY;IAC5B,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CACzC;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAcpD;AAuBD,wBAAgB,aAAa,CAC5B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,YAAY,GACnB,aAAa,EAAE,CAsLjB"}
1
+ {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../../src/compaction/salience/score.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAoB,OAAO,EAAe,MAAM,8BAA8B,CAAA;AAO1F,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC3B;AAED,eAAO,MAAM,wBAAwB,EAAE,eAKtC,CAAA;AAED,MAAM,WAAW,cAAc;IAC9B,+CAA+C;IAC/C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;CACjC;AAED,eAAO,MAAM,uBAAuB,EAAE,cAIrC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;AAE3E,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAA;CAC1C;AAED,MAAM,WAAW,YAAY;IAC5B,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CACzC;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAcpD;AAuED,wBAAgB,aAAa,CAC5B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,YAAY,GACnB,aAAa,EAAE,CA2MjB"}
@@ -24,7 +24,7 @@
24
24
  import { findRetainedIndices } from '../retention.js';
25
25
  import { estimateMessageTokens } from '../token-estimate.js';
26
26
  import { bm25Score, buildIndex, indexDocument } from './bm25.js';
27
- import { isEmptySignature, minhash, similarity } from './minhash.js';
27
+ import { isEmptySignature, minhash, similarityAtLeast } from './minhash.js';
28
28
  import { tokenize } from './tokenize.js';
29
29
  export const DEFAULT_SALIENCE_WEIGHTS = {
30
30
  recency: 1,
@@ -70,6 +70,24 @@ function citable(tokens) {
70
70
  }
71
71
  return out;
72
72
  }
73
+ const FEATURES = new WeakMap();
74
+ function featuresOf(message, text) {
75
+ const cached = FEATURES.get(message);
76
+ if (cached !== undefined && cached.text === text)
77
+ return cached;
78
+ const tokens = tokenize(text);
79
+ const signature = minhash(tokens);
80
+ const features = {
81
+ text,
82
+ tokenCount: tokens.length,
83
+ document: indexDocument(text, tokens),
84
+ citable: citable(tokens),
85
+ signature,
86
+ signatureKey: String.fromCharCode(...new Uint16Array(signature.buffer)),
87
+ };
88
+ FEATURES.set(message, features);
89
+ return features;
90
+ }
73
91
  export function scoreMessages(messages, options) {
74
92
  const config = {
75
93
  ...DEFAULT_SALIENCE_CONFIG,
@@ -77,10 +95,9 @@ export function scoreMessages(messages, options) {
77
95
  weights: { ...DEFAULT_SALIENCE_WEIGHTS, ...options.config?.weights },
78
96
  };
79
97
  const n = messages.length;
80
- const texts = messages.map(messageText);
98
+ const features = messages.map((message) => featuresOf(message, messageText(message)));
81
99
  const richContent = messages.map(hasRichContent);
82
- const tokenLists = texts.map(tokenize);
83
- const documents = texts.map((text, i) => indexDocument(text, tokenLists[i]));
100
+ const documents = features.map((f) => f.document);
84
101
  const index = buildIndex(documents);
85
102
  const goalTokens = tokenize(options.goal);
86
103
  // Relevance, normalised to the best message of the pass so weights mean
@@ -97,30 +114,66 @@ export function scoreMessages(messages, options) {
97
114
  return m.role === 'tool' || (m.role === 'assistant' && !isAssistantWithCalls(m));
98
115
  }));
99
116
  // Citation index: everything a LATER assistant turn or tool input names.
100
- // Built once, suffix-wise, so each message asks "does anything after me
101
- // cite my identifiers" in one lookup.
102
- const citedAfter = new Array(n);
103
- let running = new Set();
104
- for (let i = n - 1; i >= 0; i -= 1) {
105
- citedAfter[i] = running;
117
+ // For each identifier, the last message that names it: a message asks
118
+ // "does anything after me cite my identifiers" as "is the last citation
119
+ // of this identifier after me". The same answer as a set of everything
120
+ // after each message, without building n sets of up to n identifiers.
121
+ const lastCited = new Map();
122
+ for (let i = 0; i < n; i += 1) {
106
123
  const message = messages[i];
107
- if (message.role === 'assistant' || message.role === 'user') {
108
- running = new Set([...running, ...citable(tokenLists[i])]);
109
- }
124
+ if (message.role !== 'assistant' && message.role !== 'user')
125
+ continue;
126
+ for (const token of features[i].citable)
127
+ lastCited.set(token, i);
110
128
  }
111
- // Redundancy: the highest similarity to any later message of the same
112
- // role, and a full demotion when a later assistant turn repeats this
113
- // message's tool call exactly.
114
- const signatures = tokenLists.map(minhash);
129
+ // A full demotion when a later assistant turn repeats this message's
130
+ // tool call exactly: for each call, the last message that makes it.
115
131
  const callKeys = messages.map((m) => isAssistantWithCalls(m)
116
132
  ? (m.toolCalls ?? []).map((c) => `${c.function.name}:${c.function.arguments}`)
117
133
  : []);
118
- const laterCallKeys = new Array(n);
119
- let calls = new Set();
134
+ const lastCalled = new Map();
135
+ for (let i = 0; i < n; i += 1) {
136
+ for (const key of callKeys[i])
137
+ lastCalled.set(key, i);
138
+ }
139
+ // Redundancy: the highest similarity to any later message of the same
140
+ // role. Walked from the end so the later messages of each role are the
141
+ // ones already seen; a signature identical to one of them is a
142
+ // similarity of exactly 1, the most there is, and ends the scan.
143
+ // Below the lower of one half and the duplicate threshold a similarity
144
+ // is read as none (see the redundancy step of the score), so the
145
+ // comparison need not finish it.
146
+ const floor = Math.min(0.5, config.duplicateThreshold);
147
+ const redundancyOf = new Array(n).fill(0);
148
+ const laterSignatures = new Map();
149
+ const laterKeys = new Map();
120
150
  for (let i = n - 1; i >= 0; i -= 1) {
121
- laterCallKeys[i] = calls;
122
- if (callKeys[i].length > 0)
123
- calls = new Set([...calls, ...callKeys[i]]);
151
+ const message = messages[i];
152
+ // A caption or a repeated call cannot prove that two screenshots or
153
+ // documents contain the same evidence. The lexical scorer has no
154
+ // access to their meaning, so it must not call those messages duplicates.
155
+ if (richContent[i])
156
+ continue;
157
+ const own = features[i];
158
+ const sameRole = laterSignatures.get(message.role) ?? [];
159
+ const sameRoleKeys = laterKeys.get(message.role) ?? new Set();
160
+ let redundancy = 0;
161
+ if (!isEmptySignature(own.signature)) {
162
+ if (sameRoleKeys.has(own.signatureKey))
163
+ redundancy = 1;
164
+ else {
165
+ for (const other of sameRole) {
166
+ const sim = similarityAtLeast(own.signature, other, floor);
167
+ if (sim > redundancy)
168
+ redundancy = sim;
169
+ }
170
+ }
171
+ }
172
+ redundancyOf[i] = redundancy;
173
+ sameRole.push(own.signature);
174
+ sameRoleKeys.add(own.signatureKey);
175
+ laterSignatures.set(message.role, sameRole);
176
+ laterKeys.set(message.role, sameRoleKeys);
124
177
  }
125
178
  // Protection.
126
179
  const protectedBy = new Array(n).fill(null);
@@ -181,8 +234,8 @@ export function scoreMessages(messages, options) {
181
234
  // An instruction is used by everything after it; an acknowledgment
182
235
  // ("ok, go on") is not an instruction. The difference is whether it
183
236
  // names anything or says more than a few words.
184
- const tokens = tokenLists[i];
185
- utility = citable(tokens).size > 0 || tokens.length >= 6 ? 1 : 0.2;
237
+ const own = features[i];
238
+ utility = own.citable.size > 0 || own.tokenCount >= 6 ? 1 : 0.2;
186
239
  }
187
240
  else if (message.role === 'tool') {
188
241
  // Used is used: one identifier from this result named by a later
@@ -191,29 +244,18 @@ export function scoreMessages(messages, options) {
191
244
  // for. The eval that placed the account id deep in an early dump
192
245
  // and cited it later watched the salience pass clear it under a
193
246
  // thirds rule.
194
- const mine = citable(tokenLists[i]);
195
- let hits = 0;
196
- for (const token of mine)
197
- if (citedAfter[i].has(token))
198
- hits += 1;
199
- utility = hits > 0 ? 1 : 0;
247
+ let cited = false;
248
+ for (const token of features[i].citable) {
249
+ if ((lastCited.get(token) ?? -1) > i) {
250
+ cited = true;
251
+ break;
252
+ }
253
+ }
254
+ utility = cited ? 1 : 0;
200
255
  }
201
256
  else if (isAssistantWithCalls(message))
202
257
  utility = 0.5;
203
- let redundancy = 0;
204
- const signature = signatures[i];
205
- // A caption or a repeated call cannot prove that two screenshots or
206
- // documents contain the same evidence. The lexical scorer has no
207
- // access to their meaning, so it must not call those messages duplicates.
208
- if (!richContent[i] && !isEmptySignature(signature)) {
209
- for (let j = i + 1; j < n; j += 1) {
210
- if (richContent[j] || messages[j].role !== message.role)
211
- continue;
212
- const sim = similarity(signature, signatures[j]);
213
- if (sim > redundancy)
214
- redundancy = sim;
215
- }
216
- }
258
+ let redundancy = redundancyOf[i];
217
259
  if (redundancy < config.duplicateThreshold)
218
260
  redundancy = redundancy >= 0.5 ? redundancy : 0;
219
261
  else
@@ -228,7 +270,7 @@ export function scoreMessages(messages, options) {
228
270
  const call = (producer.toolCalls ?? []).find((c) => c.id === message.toolCallId);
229
271
  if (call) {
230
272
  const key = `${call.function.name}:${call.function.arguments}`;
231
- if (laterCallKeys[i].has(key))
273
+ if ((lastCalled.get(key) ?? -1) > i)
232
274
  redundancy = 1;
233
275
  break;
234
276
  }
@@ -1 +1 @@
1
- {"version":3,"file":"score.js","sourceRoot":"","sources":["../../../src/compaction/salience/score.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAqB,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACnF,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AASxC,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACxD,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;CACb,CAAA;AAUD,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACtD,gBAAgB,EAAE,EAAE;IACpB,kBAAkB,EAAE,GAAG;IACvB,OAAO,EAAE,wBAAwB;CACjC,CAAA;AA0BD,4EAA4E;AAC5E,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;YACzC,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9F,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACpE,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAK,OAA4B,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACxD,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,SAAS,cAAc,CAAC,OAAgB;IACvC,OAAO,CACN,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACnE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;YACvB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;YACnC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CACxD,CAAA;AACF,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAU,EAAyB,EAAE,CAClE,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAE,CAAsB,CAAC,SAAS,CAAC,CAAA;AAE3E,gGAAgG;AAChG,SAAS,OAAO,CAAC,MAAyB;IACzC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAA;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACpF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,MAAM,UAAU,aAAa,CAC5B,QAA4B,EAC5B,OAAqB;IAErB,MAAM,MAAM,GAAmB;QAC9B,GAAG,uBAAuB;QAC1B,GAAG,OAAO,CAAC,MAAM;QACjB,OAAO,EAAE,EAAE,GAAG,wBAAwB,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;KACpE,CAAA;IACD,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAA;IACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,SAAS,GAAmB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACvD,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAa,CAAC,CAC9C,CAAA;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;IACnC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzC,wEAAwE;IACxE,gDAAgD;IAChD,uEAAuE;IACvE,uEAAuE;IACvE,iEAAiE;IACjE,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAA;IAC9E,uEAAuE;IACvE,iEAAiE;IACjE,2DAA2D;IAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC5B,CAAC,EACD,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAY,CAAA;QAChC,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAA;IACjF,CAAC,CAAC,CACF,CAAA;IAED,yEAAyE;IACzE,wEAAwE;IACxE,sCAAsC;IACtC,MAAM,UAAU,GAAkB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;IAC9C,IAAI,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;QACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAY,CAAA;QACtC,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7D,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAa,CAAC,CAAC,CAAC,CAAA;QACvE,CAAC;IACF,CAAC;IAED,sEAAsE;IACtE,qEAAqE;IACrE,+BAA+B;IAC/B,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnC,oBAAoB,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC9E,CAAC,CAAC,EAAE,CACL,CAAA;IACD,MAAM,aAAa,GAAkB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;IACjD,IAAI,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;QACxB,IAAK,QAAQ,CAAC,CAAC,CAAc,CAAC,MAAM,GAAG,CAAC;YACvC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAI,QAAQ,CAAC,CAAC,CAAc,CAAC,CAAC,CAAA;IAC3D,CAAC;IAED,cAAc;IACd,MAAM,WAAW,GAA+B,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvE,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,OAAO,QAAQ,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9D,WAAW,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAA;QACtC,QAAQ,IAAI,CAAC,CAAA;IACd,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC;QAC5C,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA;IACvD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChF,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA;IACvD,CAAC;IACD,sDAAsD;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAY,CAAA;QACtC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,SAAQ;QACvE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAY,CAAA;YACxC,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC/B,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW;oBAAE,MAAK;gBACzC,SAAQ;YACT,CAAC;YACD,IAAI,GAAG,CAAC,GAAG,CAAE,SAAyB,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,MAAM,CAAE,SAAyB,CAAC,UAAU,CAAC,CAAA;gBACjD,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI;oBAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;YACrD,CAAC;QACF,CAAC;IACF,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAY,CAAA;QACtC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,SAAQ;QAChE,MAAM,EAAE,GAAI,OAAuB,CAAC,UAAU,CAAA;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAY,CAAA;YACxC,IAAI,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC7F,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI;oBAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;gBACpD,MAAK;YACN,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,MAAM,GAAoB,EAAE,CAAA;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAY,CAAA;QACtC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1B,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAA;QACvE,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAE,YAAY,CAAC,CAAC,CAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;QAEnF,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,mEAAmE;YACnE,oEAAoE;YACpE,gDAAgD;YAChD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAa,CAAA;YACxC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACnE,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACpC,iEAAiE;YACjE,6DAA6D;YAC7D,gEAAgE;YAChE,iEAAiE;YACjE,gEAAgE;YAChE,eAAe;YACf,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAa,CAAC,CAAA;YAC/C,IAAI,IAAI,GAAG,CAAC,CAAA;YACZ,KAAK,MAAM,KAAK,IAAI,IAAI;gBAAE,IAAK,UAAU,CAAC,CAAC,CAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,IAAI,IAAI,CAAC,CAAA;YAClF,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,CAAC;aAAM,IAAI,oBAAoB,CAAC,OAAO,CAAC;YAAE,OAAO,GAAG,GAAG,CAAA;QAEvD,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAgB,CAAA;QAC9C,oEAAoE;QACpE,iEAAiE;QACjE,0EAA0E;QAC1E,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,IAAI,WAAW,CAAC,CAAC,CAAC,IAAK,QAAQ,CAAC,CAAC,CAAa,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;oBAAE,SAAQ;gBAC9E,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAgB,CAAC,CAAA;gBAC/D,IAAI,GAAG,GAAG,UAAU;oBAAE,UAAU,GAAG,GAAG,CAAA;YACvC,CAAC;QACF,CAAC;QACD,IAAI,UAAU,GAAG,MAAM,CAAC,kBAAkB;YAAE,UAAU,GAAG,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;;YACtF,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,+DAA+D;YAC/D,iCAAiC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAY,CAAA;gBACvC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;oBAAE,SAAQ;gBAC7C,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAM,OAAuB,CAAC,UAAU,CACnD,CAAA;gBACD,IAAI,IAAI,EAAE,CAAC;oBACV,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;oBAC9D,IAAK,aAAa,CAAC,CAAC,CAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,UAAU,GAAG,CAAC,CAAA;oBAC9D,MAAK;gBACN,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAA;QACxB,MAAM,QAAQ,GACb,CAAC,CAAC,OAAO,GAAG,OAAO;YACnB,CAAC,CAAC,SAAS,GAAG,SAAS;YACvB,CAAC,CAAC,OAAO,GAAG,OAAO;YACnB,CAAC,CAAC,UAAU,GAAG,UAAU,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC;YACtC,OAAO;YACP,SAAS;YACT,OAAO;YACP,UAAU;YACV,QAAQ;YACR,SAAS,EAAE,WAAW,CAAC,CAAC,CAA2B;SACnD,CAAC,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"score.js","sourceRoot":"","sources":["../../../src/compaction/salience/score.ts"],"names":[],"mappings":"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"}
@@ -55,5 +55,19 @@ export interface WorkingSetOptions {
55
55
  readonly keepAboveFraction?: number;
56
56
  }
57
57
  export declare function isStubbedNarration(content: unknown): boolean;
58
+ /**
59
+ * A cheap count of whether anything at all is left for the pass to shed:
60
+ * false means {@link planWorkingSet} would return no action whatever the
61
+ * scores are, so scoring can be skipped. It leaves out the two protections
62
+ * that are only a position (the leading system run and the last
63
+ * `keepRecentMessages`); retained turns, tool-call pairs and the goal floor
64
+ * are not looked at. True is therefore only "go and look", and a false is
65
+ * exact.
66
+ */
67
+ export declare function hasEvictableMessage(messages: readonly Message[], options: Pick<WorkingSetOptions, 'minToolResultChars' | 'minNarrationChars' | 'preserveTools'> & {
68
+ readonly keepRecentMessages: number;
69
+ }): boolean;
70
+ /** The plan of a pass that sheds nothing: every message as it was. */
71
+ export declare function planNothingToShed(messages: readonly Message[], options: Pick<WorkingSetOptions, 'estimatedTokens' | 'targetTokens'>): WorkingSetPlan;
58
72
  export declare function planWorkingSet(messages: readonly Message[], scored: readonly ScoredMessage[], options: WorkingSetOptions): WorkingSetPlan;
59
73
  //# sourceMappingURL=working-set.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"working-set.d.ts","sourceRoot":"","sources":["../../../src/compaction/salience/working-set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAoB,OAAO,EAAe,MAAM,8BAA8B,CAAA;AAG1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;CAC/B;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC,oEAAoE;IACpE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1C;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CACnC;AASD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE5D;AAED,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,OAAO,EAAE,iBAAiB,GACxB,cAAc,CA2GhB"}
1
+ {"version":3,"file":"working-set.d.ts","sourceRoot":"","sources":["../../../src/compaction/salience/working-set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAoB,OAAO,EAAe,MAAM,8BAA8B,CAAA;AAG1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;CAC/B;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC,oEAAoE;IACpE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1C;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CACnC;AASD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE5D;AAqDD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,GAAG,mBAAmB,GAAG,eAAe,CAAC,GAAG;IAChG,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;CACnC,GACC,OAAO,CAUT;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,cAAc,CAAC,GAClE,cAAc,CAUhB;AAED,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,OAAO,EAAE,iBAAiB,GACxB,cAAc,CAqFhB"}