@namzu/sdk 48.3.0 → 49.0.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 (153) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/config/registry.d.ts +2 -0
  3. package/dist/config/registry.d.ts.map +1 -1
  4. package/dist/config/registry.js +23 -3
  5. package/dist/config/registry.js.map +1 -1
  6. package/dist/connector/mcp/discovery.d.ts +9 -5
  7. package/dist/connector/mcp/discovery.d.ts.map +1 -1
  8. package/dist/connector/mcp/discovery.js +16 -8
  9. package/dist/connector/mcp/discovery.js.map +1 -1
  10. package/dist/connector/mcp/mcp-toolset.d.ts +3 -0
  11. package/dist/connector/mcp/mcp-toolset.d.ts.map +1 -1
  12. package/dist/connector/mcp/mcp-toolset.js +20 -2
  13. package/dist/connector/mcp/mcp-toolset.js.map +1 -1
  14. package/dist/connector/mcp/reconnect.d.ts +2 -0
  15. package/dist/connector/mcp/reconnect.d.ts.map +1 -1
  16. package/dist/connector/mcp/reconnect.js +36 -5
  17. package/dist/connector/mcp/reconnect.js.map +1 -1
  18. package/dist/plugin/lifecycle.d.ts +14 -10
  19. package/dist/plugin/lifecycle.d.ts.map +1 -1
  20. package/dist/plugin/lifecycle.js +178 -41
  21. package/dist/plugin/lifecycle.js.map +1 -1
  22. package/dist/prompt/resident-learning.js +2 -2
  23. package/dist/prompt/resident-learning.js.map +1 -1
  24. package/dist/prompt/resident-step.d.ts +2 -2
  25. package/dist/prompt/resident-step.js +4 -4
  26. package/dist/prompt/resident-step.js.map +1 -1
  27. package/dist/public-runtime.d.ts +2 -2
  28. package/dist/public-runtime.d.ts.map +1 -1
  29. package/dist/public-runtime.js +2 -2
  30. package/dist/public-runtime.js.map +1 -1
  31. package/dist/registry/tool/screen.d.ts.map +1 -1
  32. package/dist/registry/tool/screen.js +33 -2
  33. package/dist/registry/tool/screen.js.map +1 -1
  34. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  35. package/dist/runtime/jobs/registry.js +41 -12
  36. package/dist/runtime/jobs/registry.js.map +1 -1
  37. package/dist/runtime/query/index.d.ts +6 -0
  38. package/dist/runtime/query/index.d.ts.map +1 -1
  39. package/dist/runtime/query/index.js +20 -1
  40. package/dist/runtime/query/index.js.map +1 -1
  41. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  42. package/dist/runtime/query/iteration/index.js +32 -8
  43. package/dist/runtime/query/iteration/index.js.map +1 -1
  44. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  45. package/dist/runtime/query/iteration/outstanding-work.js +2 -0
  46. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  47. package/dist/runtime/query/iteration/phases/context.d.ts +4 -0
  48. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  49. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  50. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  51. package/dist/runtime/query/iteration/phases/tool-review.js +7 -1
  52. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  53. package/dist/runtime/query/iteration/step-shaping.d.ts +2 -0
  54. package/dist/runtime/query/iteration/step-shaping.d.ts.map +1 -1
  55. package/dist/runtime/query/iteration/step-shaping.js +5 -1
  56. package/dist/runtime/query/iteration/step-shaping.js.map +1 -1
  57. package/dist/store/index.d.ts +1 -0
  58. package/dist/store/index.d.ts.map +1 -1
  59. package/dist/store/index.js +1 -0
  60. package/dist/store/index.js.map +1 -1
  61. package/dist/store/memory/disk.d.ts +7 -2
  62. package/dist/store/memory/disk.d.ts.map +1 -1
  63. package/dist/store/memory/disk.js +58 -5
  64. package/dist/store/memory/disk.js.map +1 -1
  65. package/dist/store/memory/index.d.ts +9 -0
  66. package/dist/store/memory/index.d.ts.map +1 -1
  67. package/dist/store/memory/index.js +43 -5
  68. package/dist/store/memory/index.js.map +1 -1
  69. package/dist/store/memory/markdown.d.ts +7 -2
  70. package/dist/store/memory/markdown.d.ts.map +1 -1
  71. package/dist/store/memory/markdown.js +33 -0
  72. package/dist/store/memory/markdown.js.map +1 -1
  73. package/dist/store/memory/memory.d.ts +7 -2
  74. package/dist/store/memory/memory.d.ts.map +1 -1
  75. package/dist/store/memory/memory.js +34 -0
  76. package/dist/store/memory/memory.js.map +1 -1
  77. package/dist/store/memory/revision.d.ts +16 -0
  78. package/dist/store/memory/revision.d.ts.map +1 -0
  79. package/dist/store/memory/revision.js +144 -0
  80. package/dist/store/memory/revision.js.map +1 -0
  81. package/dist/tools/builtins/wait-for-job-bounds.d.ts +6 -4
  82. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  83. package/dist/tools/builtins/wait-for-job-bounds.js +46 -8
  84. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  85. package/dist/tools/builtins/wait-for-job.d.ts +1 -0
  86. package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
  87. package/dist/tools/builtins/wait-for-job.js +24 -10
  88. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  89. package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -1
  90. package/dist/tools/coordinator/wait-with-idle-bound.js +4 -0
  91. package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -1
  92. package/dist/tools/memory/delete.d.ts.map +1 -1
  93. package/dist/tools/memory/delete.js +38 -3
  94. package/dist/tools/memory/delete.js.map +1 -1
  95. package/dist/tools/memory/read.d.ts.map +1 -1
  96. package/dist/tools/memory/read.js +38 -2
  97. package/dist/tools/memory/read.js.map +1 -1
  98. package/dist/tools/memory/search.d.ts.map +1 -1
  99. package/dist/tools/memory/search.js +38 -7
  100. package/dist/tools/memory/search.js.map +1 -1
  101. package/dist/tools/memory/update.d.ts.map +1 -1
  102. package/dist/tools/memory/update.js +30 -3
  103. package/dist/tools/memory/update.js.map +1 -1
  104. package/dist/toolsets/manager.d.ts +13 -0
  105. package/dist/toolsets/manager.d.ts.map +1 -1
  106. package/dist/toolsets/manager.js +60 -1
  107. package/dist/toolsets/manager.js.map +1 -1
  108. package/dist/turn/memory-recall.d.ts +2 -0
  109. package/dist/turn/memory-recall.d.ts.map +1 -1
  110. package/dist/turn/memory-recall.js +3 -1
  111. package/dist/turn/memory-recall.js.map +1 -1
  112. package/dist/types/memory/index.d.ts +29 -0
  113. package/dist/types/memory/index.d.ts.map +1 -1
  114. package/dist/types/memory/index.js +6 -0
  115. package/dist/types/memory/index.js.map +1 -1
  116. package/dist/types/plugin/index.d.ts +12 -2
  117. package/dist/types/plugin/index.d.ts.map +1 -1
  118. package/dist/types/plugin/index.js +5 -2
  119. package/dist/types/plugin/index.js.map +1 -1
  120. package/package.json +1 -1
  121. package/src/config/registry.ts +24 -3
  122. package/src/connector/mcp/discovery.ts +29 -8
  123. package/src/connector/mcp/mcp-toolset.ts +25 -4
  124. package/src/connector/mcp/reconnect.ts +34 -4
  125. package/src/plugin/lifecycle.ts +217 -46
  126. package/src/prompt/resident-learning.ts +2 -2
  127. package/src/prompt/resident-step.ts +4 -4
  128. package/src/public-runtime.ts +2 -0
  129. package/src/registry/tool/screen.ts +34 -2
  130. package/src/runtime/jobs/registry.ts +39 -15
  131. package/src/runtime/query/index.ts +24 -1
  132. package/src/runtime/query/iteration/index.ts +35 -10
  133. package/src/runtime/query/iteration/outstanding-work.ts +2 -0
  134. package/src/runtime/query/iteration/phases/context.ts +4 -0
  135. package/src/runtime/query/iteration/phases/tool-review.ts +6 -1
  136. package/src/runtime/query/iteration/step-shaping.ts +9 -1
  137. package/src/store/index.ts +1 -0
  138. package/src/store/memory/disk.ts +82 -7
  139. package/src/store/memory/index.ts +66 -7
  140. package/src/store/memory/markdown.ts +54 -2
  141. package/src/store/memory/memory.ts +52 -2
  142. package/src/store/memory/revision.ts +158 -0
  143. package/src/tools/builtins/wait-for-job-bounds.ts +45 -7
  144. package/src/tools/builtins/wait-for-job.ts +25 -11
  145. package/src/tools/coordinator/wait-with-idle-bound.ts +3 -0
  146. package/src/tools/memory/delete.ts +33 -3
  147. package/src/tools/memory/read.ts +35 -2
  148. package/src/tools/memory/search.ts +38 -7
  149. package/src/tools/memory/update.ts +28 -3
  150. package/src/toolsets/manager.ts +74 -1
  151. package/src/turn/memory-recall.ts +5 -1
  152. package/src/types/memory/index.ts +43 -0
  153. package/src/types/plugin/index.ts +11 -6
@@ -30,6 +30,12 @@ const DEFAULT_IDLE_TIMEOUT_MS = readPositiveIntEnv('NAMZU_JOB_WAIT_IDLE_MS', 2 *
30
30
  const MAX_WAIT_MS = readPositiveIntEnv('NAMZU_JOB_WAIT_MAX_MS', 60 * 60 * 1000);
31
31
  const inputSchema = z.object({
32
32
  id: z.string().describe('The job id, as returned by bash with run_in_background.'),
33
+ from_offset: z
34
+ .number()
35
+ .int()
36
+ .nonnegative()
37
+ .optional()
38
+ .describe('Resume after a previous wait: pass its next_offset to receive only new output.'),
33
39
  timeout_ms: z
34
40
  .number()
35
41
  .int()
@@ -47,7 +53,7 @@ const inputSchema = z.object({
47
53
  });
48
54
  export const WaitForJobTool = defineTool({
49
55
  name: 'wait_for_job',
50
- description: 'Block until a background job started by bash with run_in_background ends, and return its accumulated output in one call. Use this instead of calling job with action "read" in a loop: it costs one call and no waiting turns. Gives up — WITHOUT stopping the job — if it runs too long or goes quiet for too long; either outcome says so, and the job keeps running either way.',
56
+ description: 'Block until a background job started by bash with run_in_background ends, and return its bounded output in one call. Use this instead of calling job with action "read" in a loop: it costs one call and no waiting turns. A wait that runs too long or goes quiet returns its output and next_offset without stopping the job; pass that offset as from_offset on the next wait to avoid repeats.',
51
57
  inputSchema,
52
58
  category: 'shell',
53
59
  permissions: ['shell_execute'],
@@ -109,6 +115,7 @@ export const WaitForJobTool = defineTool({
109
115
  outcome = await waitForJobWithBounds(jobs, input.id, {
110
116
  wallMs: input.timeout_ms ?? DEFAULT_TIMEOUT_MS,
111
117
  idleMs: input.idle_timeout_ms ?? DEFAULT_IDLE_TIMEOUT_MS,
118
+ ...(input.from_offset === undefined ? {} : { fromOffset: input.from_offset }),
112
119
  signal: context.abortSignal,
113
120
  });
114
121
  }
@@ -125,35 +132,42 @@ export const WaitForJobTool = defineTool({
125
132
  data: { jobId: input.id, abandoned: true },
126
133
  };
127
134
  }
135
+ const notices = [
136
+ ...(outcome.droppedBytes > 0
137
+ ? [`[${outcome.droppedBytes} bytes were dropped by the job's output retention cap]`]
138
+ : []),
139
+ ...(outcome.omittedOutputBytes > 0
140
+ ? [`[${outcome.omittedOutputBytes} earlier bytes omitted from this bounded wait result]`]
141
+ : []),
142
+ ];
143
+ const observed = `${notices.length > 0 ? `${notices.join('\n')}\n` : ''}${outcome.output || '(no new output)'}`;
128
144
  if (outcome.kind === 'timeout') {
129
145
  return {
130
- success: false,
131
- output: describeJobWaitTimeout(input.id, outcome),
146
+ // The wait observed a bound, not a failed command. A tool error
147
+ // would also be promoted as a durable failure by the turn's memory.
148
+ success: true,
149
+ output: `${describeJobWaitTimeout(input.id, outcome)}\n\n${observed}\n\n[next_offset ${outcome.nextOffset}]`,
132
150
  data: {
133
151
  jobId: input.id,
134
152
  timedOut: outcome.cause,
135
153
  nextOffset: outcome.nextOffset,
136
154
  droppedBytes: outcome.droppedBytes,
155
+ omittedOutputBytes: outcome.omittedOutputBytes,
137
156
  },
138
157
  };
139
158
  }
140
- // The dropped count is stated, never absorbed — same rule `job read`
141
- // follows, for the same reason: a job whose middle vanished quietly
142
- // reads as a complete result that happens to be short.
143
- const notice = outcome.droppedBytes > 0
144
- ? `[${outcome.droppedBytes} bytes were dropped before this point — the job produced output faster than the retention cap holds]\n`
145
- : '';
146
159
  const status = outcome.exitCode === undefined
147
160
  ? outcome.status
148
161
  : `${outcome.status} with code ${outcome.exitCode}`;
149
162
  return {
150
163
  success: true,
151
- output: `${notice}${outcome.output || '(no output)'}\n\n[job ${input.id} is ${status}; next_offset ${outcome.nextOffset}]`,
164
+ output: `${observed}\n\n[job ${input.id} is ${status}; next_offset ${outcome.nextOffset}]`,
152
165
  data: {
153
166
  jobId: input.id,
154
167
  status: outcome.status,
155
168
  nextOffset: outcome.nextOffset,
156
169
  droppedBytes: outcome.droppedBytes,
170
+ omittedOutputBytes: outcome.omittedOutputBytes,
157
171
  ...(outcome.exitCode === undefined ? {} : { exitCode: outcome.exitCode }),
158
172
  },
159
173
  };
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-job.js","sourceRoot":"","sources":["../../../src/tools/builtins/wait-for-job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wait-for-job.js","sourceRoot":"","sources":["../../../src/tools/builtins/wait-for-job.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wait-with-idle-bound.d.ts","sourceRoot":"","sources":["../../../src/tools/coordinator/wait-with-idle-bound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,WAAW,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAC3D;IACA,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,qFAAqF;IACrF,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;CAC/B,CAAA;AAEJ,MAAM,WAAW,UAAU;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,GAAG,GAAE,MAAM,MAAiB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAsDtB;AAWD,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,GAAG,MAAM,CAQ9F"}
1
+ {"version":3,"file":"wait-with-idle-bound.d.ts","sourceRoot":"","sources":["../../../src/tools/coordinator/wait-with-idle-bound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,WAAW,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAC3D;IACA,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,qFAAqF;IACrF,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;CAC/B,CAAA;AAEJ,MAAM,WAAW,UAAU;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,GAAG,GAAE,MAAM,MAAiB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAyDtB;AAWD,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,GAAG,MAAM,CAQ9F"}
@@ -13,6 +13,7 @@ export async function waitForTaskWithBounds(gateway, taskId, bounds, now = Date.
13
13
  const startedAt = now();
14
14
  let lastProgressAt = startedAt;
15
15
  let settled = false;
16
+ let poll;
16
17
  const detach = gateway.onTaskProgress?.((id) => {
17
18
  if (id === taskId)
18
19
  lastProgressAt = now();
@@ -48,12 +49,15 @@ export async function waitForTaskWithBounds(gateway, taskId, bounds, now = Date.
48
49
  }
49
50
  }
50
51
  }, POLL_INTERVAL_MS);
52
+ poll = tick;
51
53
  tick.unref?.();
52
54
  });
53
55
  return await Promise.race([completion, expiry]);
54
56
  }
55
57
  finally {
56
58
  settled = true;
59
+ if (poll !== undefined)
60
+ clearInterval(poll);
57
61
  detach?.();
58
62
  }
59
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wait-with-idle-bound.js","sourceRoot":"","sources":["../../../src/tools/coordinator/wait-with-idle-bound.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wait-with-idle-bound.js","sourceRoot":"","sources":["../../../src/tools/coordinator/wait-with-idle-bound.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/delete.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI/D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAsBxE"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/delete.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI/D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAkDxE"}
@@ -1,20 +1,55 @@
1
1
  import { z } from 'zod';
2
+ import { MemoryRevisionConflictError } from '../../store/memory/revision.js';
3
+ import { hasConditionalMemoryWrites } from '../../types/memory/index.js';
2
4
  import { asMemoryId } from '../../utils/id.js';
3
5
  import { defineTool } from '../defineTool.js';
4
6
  export function buildDeleteMemoryTool(store) {
5
7
  return defineTool({
6
8
  name: 'delete_memory',
7
- description: 'Permanently delete a stored memory by ID. Use update_memory with status archived when the record should remain available for inspection. Deletion does not erase past conversation transcripts.',
9
+ description: 'Permanently delete a stored memory by ID. Use update_memory with status archived when the record should remain available for inspection. Deletion does not erase past conversation transcripts. Pass the revision from read_memory when available to refuse a stale deletion.',
8
10
  inputSchema: z.object({
9
11
  id: z.string().describe('Memory ID to permanently delete'),
12
+ revision: z
13
+ .string()
14
+ .min(1)
15
+ .optional()
16
+ .describe('Opaque revision from read_memory; refuse deletion if the record changed'),
10
17
  }),
11
18
  category: 'custom',
12
19
  permissions: [],
13
20
  readOnly: false,
14
21
  destructive: true,
15
22
  concurrencySafe: true,
16
- async execute({ id }) {
17
- const removed = await store.delete(asMemoryId(id));
23
+ async execute({ id, revision }) {
24
+ if (revision !== undefined && !hasConditionalMemoryWrites(store)) {
25
+ return {
26
+ success: false,
27
+ output: 'This memory store does not support revision-checked deletion.',
28
+ error: 'Conditional memory deletion unavailable',
29
+ };
30
+ }
31
+ let removed;
32
+ try {
33
+ if (revision === undefined) {
34
+ removed = await store.delete(asMemoryId(id));
35
+ }
36
+ else if (hasConditionalMemoryWrites(store)) {
37
+ await store.deleteIfRevision(asMemoryId(id), revision);
38
+ removed = true;
39
+ }
40
+ else
41
+ throw new Error('Conditional memory support changed during the deletion.');
42
+ }
43
+ catch (error) {
44
+ if (!(error instanceof MemoryRevisionConflictError))
45
+ throw error;
46
+ return {
47
+ success: false,
48
+ output: error.message,
49
+ error: 'Memory changed since read',
50
+ data: { reason: 'revision_conflict' },
51
+ };
52
+ }
18
53
  return {
19
54
  success: removed,
20
55
  output: removed ? `Memory deleted: ${id}.` : `Memory ${id} not found.`,
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/tools/memory/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,UAAU,qBAAqB,CAAC,KAAkB;IACvD,OAAO,UAAU,CAAC;QACjB,IAAI,EAAE,eAAe;QACrB,WAAW,EACV,iMAAiM;QAClM,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;SAC1D,CAAC;QACF,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,IAAI;QACrB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;YAClD,OAAO;gBACN,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,aAAa;gBACtE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;aACjD,CAAA;QACF,CAAC;KACD,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/tools/memory/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AAE5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,UAAU,qBAAqB,CAAC,KAAkB;IACvD,OAAO,UAAU,CAAC;QACjB,IAAI,EAAE,eAAe;QACrB,WAAW,EACV,+QAA+Q;QAChR,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAC1D,QAAQ,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,yEAAyE,CAAC;SACrF,CAAC;QACF,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,IAAI;QACrB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE;YAC7B,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClE,OAAO;oBACN,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,+DAA+D;oBACvE,KAAK,EAAE,yCAAyC;iBAChD,CAAA;YACF,CAAC;YACD,IAAI,OAAgB,CAAA;YACpB,IAAI,CAAC;gBACJ,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC5B,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC7C,CAAC;qBAAM,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9C,MAAM,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;oBACtD,OAAO,GAAG,IAAI,CAAA;gBACf,CAAC;;oBAAM,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;YAClF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,CAAC,KAAK,YAAY,2BAA2B,CAAC;oBAAE,MAAM,KAAK,CAAA;gBAChE,OAAO;oBACN,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,KAAK,CAAC,OAAO;oBACrB,KAAK,EAAE,2BAA2B;oBAClC,IAAI,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;iBACrC,CAAA;YACF,CAAC;YACD,OAAO;gBACN,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,aAAa;gBACtE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;aACjD,CAAA;QACF,CAAC;KACD,CAAC,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/read.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAmC,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI/D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAiGtE"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/read.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAmC,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAE/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI/D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAgItE"}
@@ -1,5 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { MEMORY_VERIFY_NOTICE, describeMemoryAge, memoryLinkNames, } from '../../store/memory/links.js';
3
+ import { MemoryRevisionUnavailableError } from '../../store/memory/revision.js';
4
+ import { hasConditionalMemoryWrites } from '../../types/memory/index.js';
3
5
  import { defineTool } from '../defineTool.js';
4
6
  import { allMemoryEntries, resolveMemoryReference } from './resolve.js';
5
7
  export function buildReadMemoryTool(store) {
@@ -31,7 +33,25 @@ export function buildReadMemoryTool(store) {
31
33
  let entries = reference.entries;
32
34
  let entry;
33
35
  let content;
34
- if (store.getRecord) {
36
+ let revision;
37
+ if (hasConditionalMemoryWrites(store)) {
38
+ try {
39
+ const record = await store.getVersionedRecord(memoryId);
40
+ entry = record?.entry;
41
+ content = record?.content;
42
+ revision = record?.revision;
43
+ }
44
+ catch (error) {
45
+ if (!(error instanceof MemoryRevisionUnavailableError))
46
+ throw error;
47
+ // Legacy in-memory records may hold cloneable host objects with
48
+ // inaccessible bytes. Read them without claiming CAS support.
49
+ const record = await store.getRecord?.(memoryId);
50
+ entry = record?.entry;
51
+ content = record?.content ?? (await store.get(memoryId));
52
+ }
53
+ }
54
+ else if (store.getRecord) {
35
55
  const record = await store.getRecord(memoryId);
36
56
  entry = record?.entry;
37
57
  content = record?.content;
@@ -73,9 +93,24 @@ export function buildReadMemoryTool(store) {
73
93
  // A JSON body stays exactly the stored text, parseable as it was
74
94
  // before these notes existed; its age and links are in `data`.
75
95
  const annotate = notes.length > 0 && content.format !== 'json';
96
+ const output = annotate ? `${content.content}\n\n---\n${notes.join('\n')}` : content.content;
76
97
  return {
77
98
  success: true,
78
- output: annotate ? `${content.content}\n\n---\n${notes.join('\n')}` : content.content,
99
+ output,
100
+ // The executor sends output or content to the model, not data. Keep
101
+ // output byte-compatible (including JSON) while exposing the token
102
+ // in a separate model-visible text block.
103
+ ...(revision !== undefined
104
+ ? {
105
+ content: [
106
+ { type: 'text', text: output },
107
+ {
108
+ type: 'text',
109
+ text: `Memory revision: ${revision}. Pass it as revision to update_memory or delete_memory to reject stale changes.`,
110
+ },
111
+ ],
112
+ }
113
+ : {}),
79
114
  data: {
80
115
  id: content.id,
81
116
  format: content.format,
@@ -83,6 +118,7 @@ export function buildReadMemoryTool(store) {
83
118
  ...(entry?.name !== undefined ? { name: entry.name } : {}),
84
119
  ...(entry?.type !== undefined ? { type: entry.type } : {}),
85
120
  ...(entry ? { updatedAt: entry.updatedAt } : {}),
121
+ ...(revision !== undefined ? { revision } : {}),
86
122
  ...(resolved.length > 0 ? { links: resolved } : {}),
87
123
  },
88
124
  };
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/memory/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/memory/read.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,WAAW,EAGX,WAAW,EACX,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAkE/D,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAExE;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAE7E"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,WAAW,EAGX,WAAW,EACX,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAiG/D,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAExE;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAE7E"}
@@ -1,10 +1,11 @@
1
1
  import { z } from 'zod';
2
2
  import { describeMemoryAge } from '../../store/memory/links.js';
3
3
  import { defineTool } from '../defineTool.js';
4
+ const MAX_MEMORY_SCAN = 256;
4
5
  function defineSearchMemoryTool(search) {
5
6
  return defineTool({
6
7
  name: 'search_memory',
7
- description: 'Search active stored memories by relevant words or tags. The built-in store ranks matches in names, titles, descriptions, summaries and full content. Returns the title, name, type, age and description of each match; use read_memory for evidence. Set status to archived to inspect obsolete records.',
8
+ description: 'Search active stored memories by relevant words or tags. The built-in stores rank matches in names, titles, descriptions, summaries and full content. Built-in search examines at most 256 recent candidates per call; if incomplete, continue with the returned scan_offset. Use read_memory for evidence. Set status to archived to inspect obsolete records.',
8
9
  inputSchema: z.object({
9
10
  query: z.string().optional().describe('Relevant words or identifiers to search'),
10
11
  tags: z.array(z.string()).optional().describe('Filter by tags (all must match)'),
@@ -19,19 +20,46 @@ function defineSearchMemoryTool(search) {
19
20
  .max(50)
20
21
  .default(10)
21
22
  .describe('Maximum results to return (1–50)'),
23
+ scan_offset: z
24
+ .number()
25
+ .int()
26
+ .min(0)
27
+ .default(0)
28
+ .describe('Candidate offset from an earlier incomplete search; starts at 0'),
22
29
  }),
23
30
  category: 'analysis',
24
31
  permissions: [],
25
32
  readOnly: true,
26
33
  destructive: false,
27
34
  concurrencySafe: true,
28
- async execute({ query, tags, status, limit }) {
29
- const result = await search({ query, tags, status, limit });
35
+ async execute({ query, tags, status, limit, scan_offset }) {
36
+ const result = await search({
37
+ query,
38
+ tags,
39
+ status,
40
+ limit,
41
+ maxScanned: MAX_MEMORY_SCAN,
42
+ scanOffset: scan_offset,
43
+ });
44
+ const continuation = result.truncated
45
+ ? result.nextScanOffset === undefined
46
+ ? ' Search incomplete; narrow the query or read a known ID.'
47
+ : ` Search incomplete; continue with scan_offset ${result.nextScanOffset}.`
48
+ : '';
49
+ const page = scan_offset > 0 || result.truncated ? ' in this scan page' : '';
30
50
  if (result.entries.length === 0) {
31
51
  return {
32
52
  success: true,
33
- output: 'No memories found.',
34
- data: { entries: [], totalCount: 0 },
53
+ output: `No memories found${page}.${continuation}`,
54
+ data: {
55
+ entries: [],
56
+ totalCount: result.totalCount,
57
+ truncated: result.truncated === true,
58
+ ...(result.scannedCount !== undefined ? { scannedCount: result.scannedCount } : {}),
59
+ ...(result.nextScanOffset !== undefined
60
+ ? { nextScanOffset: result.nextScanOffset }
61
+ : {}),
62
+ },
35
63
  };
36
64
  }
37
65
  const now = Date.now();
@@ -42,14 +70,17 @@ function defineSearchMemoryTool(search) {
42
70
  return `${i + 1}. [${e.id}] ${e.title} (${kind}) — ${e.description ?? e.summary}${e.tags.length > 0 ? ` [${e.tags.join(', ')}]` : ''}`;
43
71
  });
44
72
  const output = result.totalCount > result.entries.length
45
- ? `Found ${result.totalCount} memories (showing ${result.entries.length}):\n${lines.join('\n')}`
46
- : `Found ${result.totalCount} memories:\n${lines.join('\n')}`;
73
+ ? `Found ${result.totalCount} memories${page} (showing ${result.entries.length}):\n${lines.join('\n')}${continuation}`
74
+ : `Found ${result.totalCount} memories${page}:\n${lines.join('\n')}${continuation}`;
47
75
  return {
48
76
  success: true,
49
77
  output,
50
78
  data: {
51
79
  entries: result.entries,
52
80
  totalCount: result.totalCount,
81
+ truncated: result.truncated === true,
82
+ ...(result.scannedCount !== undefined ? { scannedCount: result.scannedCount } : {}),
83
+ ...(result.nextScanOffset !== undefined ? { nextScanOffset: result.nextScanOffset } : {}),
53
84
  },
54
85
  };
55
86
  },
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/tools/memory/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/tools/memory/search.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK/D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAgFxE"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/update.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK/D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAuGxE"}
@@ -1,16 +1,23 @@
1
1
  import { z } from 'zod';
2
2
  import { MemoryContentRejectedError, MemoryNameConflictError } from '../../store/memory/naming.js';
3
+ import { MemoryRevisionConflictError } from '../../store/memory/revision.js';
4
+ import { hasConditionalMemoryWrites } from '../../types/memory/index.js';
3
5
  import { defineTool } from '../defineTool.js';
4
6
  import { memoryFieldsSchema } from './fields.js';
5
7
  import { resolveMemoryReference } from './resolve.js';
6
8
  export function buildUpdateMemoryTool(store) {
7
9
  return defineTool({
8
10
  name: 'update_memory',
9
- description: 'Correct an existing memory in place, or archive an obsolete claim so it is no longer recalled. Prefer this to saving a second memory about the same thing. Identify it by the ID from search_memory or by its name from the memory index; current evidence should determine corrections.',
11
+ description: 'Correct an existing memory in place, or archive an obsolete claim so it is no longer recalled. Prefer this to saving a second memory about the same thing. Identify it by the ID from search_memory or by its name from the memory index; current evidence should determine corrections. Pass the revision from read_memory when available to refuse a stale correction.',
10
12
  inputSchema: z.object({
11
13
  id: z
12
14
  .string()
13
15
  .describe('Memory ID, or the memory name from the index, to correct or archive'),
16
+ revision: z
17
+ .string()
18
+ .min(1)
19
+ .optional()
20
+ .describe('Opaque revision from read_memory; refuse the update if the record changed'),
14
21
  title: z.string().min(1).optional().describe('Corrected short descriptive title'),
15
22
  summary: z.string().min(1).optional().describe('Corrected brief summary (1-2 sentences)'),
16
23
  content: z.string().min(1).optional().describe('Corrected full content'),
@@ -26,7 +33,7 @@ export function buildUpdateMemoryTool(store) {
26
33
  readOnly: false,
27
34
  destructive: false,
28
35
  concurrencySafe: true,
29
- async execute({ id, ...updates }) {
36
+ async execute({ id, revision, ...updates }) {
30
37
  if (Object.values(updates).every((value) => value === undefined)) {
31
38
  return {
32
39
  success: false,
@@ -34,6 +41,13 @@ export function buildUpdateMemoryTool(store) {
34
41
  error: 'No memory update supplied',
35
42
  };
36
43
  }
44
+ if (revision !== undefined && !hasConditionalMemoryWrites(store)) {
45
+ return {
46
+ success: false,
47
+ output: 'This memory store does not support revision-checked updates.',
48
+ error: 'Conditional memory update unavailable',
49
+ };
50
+ }
37
51
  const reference = await resolveMemoryReference(store, id);
38
52
  if (!reference.found) {
39
53
  return {
@@ -47,9 +61,22 @@ export function buildUpdateMemoryTool(store) {
47
61
  // provenance here would overwrite metadata from a concurrent writer.
48
62
  let entry;
49
63
  try {
50
- entry = await store.update(memoryId, updates);
64
+ if (revision === undefined)
65
+ entry = await store.update(memoryId, updates);
66
+ else if (hasConditionalMemoryWrites(store))
67
+ entry = await store.updateIfRevision(memoryId, updates, revision);
68
+ else
69
+ throw new Error('Conditional memory support changed during the update.');
51
70
  }
52
71
  catch (error) {
72
+ if (error instanceof MemoryRevisionConflictError) {
73
+ return {
74
+ success: false,
75
+ output: error.message,
76
+ error: 'Memory changed since read',
77
+ data: { reason: 'revision_conflict' },
78
+ };
79
+ }
53
80
  if (error instanceof MemoryContentRejectedError) {
54
81
  return {
55
82
  success: false,
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/memory/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/tools/memory/update.ts"],"names":[],"mappings":"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"}
@@ -188,6 +188,19 @@ export declare class ToolManager {
188
188
  private searchByAvailability;
189
189
  toLLMTools(names?: readonly string[]): LLMToolSchema[];
190
190
  toPromptSection(names?: readonly string[]): string;
191
+ /**
192
+ * Freeze server-authored hints before step preparation. Each rendering is
193
+ * bounded independently, so a step that permits only a late catalogue entry
194
+ * still receives that entry's hint. `maxRenderedChars` prices the largest
195
+ * possible filtered rendering without rereading server-authored text.
196
+ */
197
+ snapshotUntrustedDeferredContext(): {
198
+ readonly all: string;
199
+ readonly maxRenderedChars: number;
200
+ readonly forNames: (names?: readonly string[]) => string;
201
+ };
202
+ /** Server-authored deferred hints for request context, never SYSTEM. */
203
+ toUntrustedDeferredContext(names?: readonly string[]): string;
191
204
  toTierGuidance(): string | null;
192
205
  /** What `ToolContext` gives a running tool: read-only, no mutation. */
193
206
  view(): ToolsView;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/toolsets/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/toolsets/manager.ts"],"names":[],"mappings":"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"}