@remnic/core 10.0.87 → 10.0.88

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 (69) hide show
  1. package/dist/access-admin-ops-surface.js +1 -1
  2. package/dist/access-authorization-probe.js +2 -2
  3. package/dist/access-boundary.js +1 -1
  4. package/dist/access-cli.js +16 -16
  5. package/dist/access-extraction-force-flush.js +1 -1
  6. package/dist/access-http-briefing.js +2 -2
  7. package/dist/access-http-query.js +1 -1
  8. package/dist/access-http.js +13 -13
  9. package/dist/access-identity-continuity-surface.js +1 -1
  10. package/dist/access-lcm-surface.js +1 -1
  11. package/dist/access-mcp.js +8 -8
  12. package/dist/access-namespace-preflight.js +1 -1
  13. package/dist/access-observe-write-surface.js +1 -1
  14. package/dist/access-operations-batch.js +2 -2
  15. package/dist/access-operations.js +7 -7
  16. package/dist/access-recall-concurrency.js +1 -1
  17. package/dist/access-recall-response.js +1 -1
  18. package/dist/access-recall-surface.js +1 -1
  19. package/dist/access-service.d.ts.map +1 -1
  20. package/dist/access-service.js +1 -1
  21. package/dist/access-surface-catalog.js +3 -3
  22. package/dist/{chunk-GULUWOA5.js → chunk-25Q52SOT.js} +2 -2
  23. package/dist/{chunk-FF3EFLUT.js → chunk-3TKX2RYK.js} +2 -2
  24. package/dist/{chunk-73UZZFJC.js → chunk-5MF6LMUY.js} +2 -2
  25. package/dist/{chunk-XU37EJTW.js → chunk-5UBXIV3N.js} +2 -2
  26. package/dist/{chunk-UAUV3BWS.js → chunk-ATWFYXEN.js} +6 -2
  27. package/dist/chunk-ATWFYXEN.js.map +1 -0
  28. package/dist/{chunk-7GSL4LBG.js → chunk-G6HWNPZA.js} +2 -2
  29. package/dist/{chunk-4LCVA2LW.js → chunk-H3WAT6BR.js} +2 -2
  30. package/dist/{chunk-2JG2NI7C.js → chunk-IHJZSRDM.js} +4 -4
  31. package/dist/{chunk-2NUDHVYM.js → chunk-LEEAO2TX.js} +2 -2
  32. package/dist/{chunk-6BCWFCDG.js → chunk-LHGPU6DQ.js} +3 -3
  33. package/dist/{chunk-IBGU6AN6.js → chunk-M5O2ANZD.js} +2 -2
  34. package/dist/{chunk-3CTKEXXF.js → chunk-N7EKND7S.js} +4 -4
  35. package/dist/{chunk-EUBDYOLD.js → chunk-OXQ7F45O.js} +2 -2
  36. package/dist/{chunk-US7KPQA5.js → chunk-Q5XJYCFE.js} +2 -2
  37. package/dist/{chunk-YL4UKMD7.js → chunk-SO4DZIVF.js} +8 -8
  38. package/dist/{chunk-HFUKXOUW.js → chunk-TNW6BOMM.js} +2 -2
  39. package/dist/{chunk-IJ3OEECW.js → chunk-TX6EHB2Q.js} +2 -2
  40. package/dist/cli.js +14 -14
  41. package/dist/external-wiki-access.js +2 -2
  42. package/dist/index.js +16 -16
  43. package/dist/memory-browse-operations.js +2 -2
  44. package/dist/orchestration/backlog-scheduler.js +17 -17
  45. package/dist/orchestration/buffer-drain-runner.js +17 -17
  46. package/dist/orchestrator.js +16 -16
  47. package/dist/recall-navigation-operations.js +2 -2
  48. package/dist/recall-navigation.js +1 -1
  49. package/dist/support-passport/index.js +4 -4
  50. package/package.json +2 -2
  51. package/src/access-service-observe-idempotency.test.ts +22 -0
  52. package/src/access-service.ts +5 -1
  53. package/dist/chunk-UAUV3BWS.js.map +0 -1
  54. /package/dist/{chunk-GULUWOA5.js.map → chunk-25Q52SOT.js.map} +0 -0
  55. /package/dist/{chunk-FF3EFLUT.js.map → chunk-3TKX2RYK.js.map} +0 -0
  56. /package/dist/{chunk-73UZZFJC.js.map → chunk-5MF6LMUY.js.map} +0 -0
  57. /package/dist/{chunk-XU37EJTW.js.map → chunk-5UBXIV3N.js.map} +0 -0
  58. /package/dist/{chunk-7GSL4LBG.js.map → chunk-G6HWNPZA.js.map} +0 -0
  59. /package/dist/{chunk-4LCVA2LW.js.map → chunk-H3WAT6BR.js.map} +0 -0
  60. /package/dist/{chunk-2JG2NI7C.js.map → chunk-IHJZSRDM.js.map} +0 -0
  61. /package/dist/{chunk-2NUDHVYM.js.map → chunk-LEEAO2TX.js.map} +0 -0
  62. /package/dist/{chunk-6BCWFCDG.js.map → chunk-LHGPU6DQ.js.map} +0 -0
  63. /package/dist/{chunk-IBGU6AN6.js.map → chunk-M5O2ANZD.js.map} +0 -0
  64. /package/dist/{chunk-3CTKEXXF.js.map → chunk-N7EKND7S.js.map} +0 -0
  65. /package/dist/{chunk-EUBDYOLD.js.map → chunk-OXQ7F45O.js.map} +0 -0
  66. /package/dist/{chunk-US7KPQA5.js.map → chunk-Q5XJYCFE.js.map} +0 -0
  67. /package/dist/{chunk-YL4UKMD7.js.map → chunk-SO4DZIVF.js.map} +0 -0
  68. /package/dist/{chunk-HFUKXOUW.js.map → chunk-TNW6BOMM.js.map} +0 -0
  69. /package/dist/{chunk-IJ3OEECW.js.map → chunk-TX6EHB2Q.js.map} +0 -0
@@ -4,9 +4,9 @@ import {
4
4
  graphPathRelativeToStorage,
5
5
  mergeGraphExpandedResults,
6
6
  qmdStartupCollectionChecksWithTimeout
7
- } from "./chunk-3CTKEXXF.js";
7
+ } from "./chunk-N7EKND7S.js";
8
8
  import "./chunk-IUKYFTGW.js";
9
- import "./chunk-2NUDHVYM.js";
9
+ import "./chunk-LEEAO2TX.js";
10
10
  import {
11
11
  formatCompressionGuidelinesForRecall
12
12
  } from "./chunk-5PHOU5QI.js";
@@ -120,7 +120,7 @@ import "./chunk-SBRUTD5O.js";
120
120
  import "./chunk-VEWZZM3H.js";
121
121
  import "./chunk-7G5NTS7F.js";
122
122
  import "./chunk-F74G4KIH.js";
123
- import "./chunk-2JG2NI7C.js";
123
+ import "./chunk-IHJZSRDM.js";
124
124
  import "./chunk-MMACM5G2.js";
125
125
  import "./chunk-54BGIBCR.js";
126
126
  import "./chunk-H4CKS5B2.js";
@@ -240,7 +240,7 @@ import "./chunk-MI2OTWV5.js";
240
240
  import "./chunk-43HUVDTD.js";
241
241
  import "./chunk-4RA3C3EV.js";
242
242
  import "./chunk-B32WYRXX.js";
243
- import "./chunk-YL4UKMD7.js";
243
+ import "./chunk-SO4DZIVF.js";
244
244
  import "./chunk-V7IZKJI3.js";
245
245
  import "./chunk-XW2T4QAW.js";
246
246
  import "./chunk-64S6X4IU.js";
@@ -254,26 +254,26 @@ import "./chunk-WXDTOE6F.js";
254
254
  import "./chunk-UYHDMCY2.js";
255
255
  import "./chunk-3HSRWJTC.js";
256
256
  import "./chunk-CN7Q3T2J.js";
257
- import "./chunk-US7KPQA5.js";
258
- import "./chunk-7GSL4LBG.js";
257
+ import "./chunk-Q5XJYCFE.js";
258
+ import "./chunk-G6HWNPZA.js";
259
259
  import "./chunk-SRT6SHVZ.js";
260
- import "./chunk-IBGU6AN6.js";
260
+ import "./chunk-M5O2ANZD.js";
261
261
  import "./chunk-TE6S7KDF.js";
262
262
  import "./chunk-MZUQVWVC.js";
263
263
  import "./chunk-EIB4FJVR.js";
264
264
  import "./chunk-A5KNZSNA.js";
265
265
  import "./chunk-HUSTM6PU.js";
266
266
  import "./chunk-D24OXEPB.js";
267
- import "./chunk-6BCWFCDG.js";
267
+ import "./chunk-LHGPU6DQ.js";
268
268
  import "./chunk-ZBFLV657.js";
269
- import "./chunk-GULUWOA5.js";
269
+ import "./chunk-25Q52SOT.js";
270
270
  import "./chunk-NIVKG3DS.js";
271
- import "./chunk-FF3EFLUT.js";
272
- import "./chunk-4LCVA2LW.js";
273
- import "./chunk-HFUKXOUW.js";
271
+ import "./chunk-3TKX2RYK.js";
272
+ import "./chunk-H3WAT6BR.js";
273
+ import "./chunk-TNW6BOMM.js";
274
274
  import "./chunk-7T4TOGMS.js";
275
275
  import "./chunk-7YQ6ESEA.js";
276
- import "./chunk-XU37EJTW.js";
276
+ import "./chunk-5UBXIV3N.js";
277
277
  import "./chunk-GOZXQNIM.js";
278
278
  import "./chunk-PQM3B54K.js";
279
279
  import "./chunk-S7GJNA3K.js";
@@ -290,14 +290,14 @@ import "./chunk-C2HORX76.js";
290
290
  import "./chunk-HLN2HOXX.js";
291
291
  import "./chunk-AB3A7EFH.js";
292
292
  import "./chunk-KIUVEMBI.js";
293
- import "./chunk-73UZZFJC.js";
293
+ import "./chunk-5MF6LMUY.js";
294
294
  import "./chunk-2BPPGNAQ.js";
295
295
  import "./chunk-DJSJ4ULL.js";
296
- import "./chunk-IJ3OEECW.js";
296
+ import "./chunk-TX6EHB2Q.js";
297
297
  import {
298
298
  hasIdentityRecoveryIntent,
299
299
  resolveEffectiveIdentityInjectionMode
300
- } from "./chunk-UAUV3BWS.js";
300
+ } from "./chunk-ATWFYXEN.js";
301
301
  import "./chunk-W4F3C7N7.js";
302
302
  import "./chunk-MPC7TYTZ.js";
303
303
  import "./chunk-G67EUQAB.js";
@@ -1,5 +1,5 @@
1
- import "./chunk-FF3EFLUT.js";
2
- import "./chunk-UAUV3BWS.js";
1
+ import "./chunk-3TKX2RYK.js";
2
+ import "./chunk-ATWFYXEN.js";
3
3
  import "./chunk-W4F3C7N7.js";
4
4
  import "./chunk-MPC7TYTZ.js";
5
5
  import "./chunk-G67EUQAB.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runRecallNavigation
3
- } from "./chunk-UAUV3BWS.js";
3
+ } from "./chunk-ATWFYXEN.js";
4
4
  import "./chunk-W4F3C7N7.js";
5
5
  import "./chunk-MPC7TYTZ.js";
6
6
  import "./chunk-G67EUQAB.js";
@@ -4,7 +4,7 @@ import {
4
4
  SUPPORT_PASSPORT_MODEL_RESULT_PATH,
5
5
  SupportPassportModelBridge,
6
6
  parseSupportPassportModelJob
7
- } from "../chunk-2NUDHVYM.js";
7
+ } from "../chunk-LEEAO2TX.js";
8
8
  import {
9
9
  DEFAULT_SUPPORT_PASSPORT_CONFIG,
10
10
  parseSupportPassportConfig
@@ -14,8 +14,8 @@ import {
14
14
  buildSupportPassportPublicRequestHandler,
15
15
  composeSupportPassportExternalRequestHandlers,
16
16
  normalizeSupportPassportNetworkAddress
17
- } from "../chunk-7GSL4LBG.js";
18
- import "../chunk-GULUWOA5.js";
17
+ } from "../chunk-G6HWNPZA.js";
18
+ import "../chunk-25Q52SOT.js";
19
19
  import {
20
20
  SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS,
21
21
  SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES,
@@ -56,7 +56,7 @@ import {
56
56
  notifySupportPassportCommitted,
57
57
  resolveSupportPassportModelRoutePlan,
58
58
  syncDirectoryForDurability
59
- } from "../chunk-UAUV3BWS.js";
59
+ } from "../chunk-ATWFYXEN.js";
60
60
  import "../chunk-W4F3C7N7.js";
61
61
  import "../chunk-MPC7TYTZ.js";
62
62
  import "../chunk-G67EUQAB.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "10.0.87",
3
+ "version": "10.0.88",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -3386,7 +3386,7 @@
3386
3386
  "core"
3387
3387
  ],
3388
3388
  "peerDependencies": {
3389
- "@remnic/coding-graph": "^10.0.87"
3389
+ "@remnic/coding-graph": "^10.0.88"
3390
3390
  },
3391
3391
  "peerDependenciesMeta": {
3392
3392
  "@remnic/coding-graph": {
@@ -20,6 +20,7 @@ import test from "node:test";
20
20
 
21
21
  import { EngramAccessService } from "./access-service.js";
22
22
  import { EngramAccessInputError } from "./access-service.js";
23
+ import { initLogger } from "./logger.js";
23
24
  import { Orchestrator } from "./orchestrator.js";
24
25
  import type { EngramAccessObserveRequest } from "./access-service.js";
25
26
  import type { CodingContext, PluginConfig } from "./types.js";
@@ -138,6 +139,27 @@ test("#1649 a retried observe with the same idempotencyKey is deduplicated to a
138
139
  }
139
140
  });
140
141
 
142
+ test("a replayed observe logs access-observe-replay and a first attempt does not", async () => {
143
+ const memoryDir = mkdtempSync(join(tmpdir(), "remnic-observe-replay-log-"));
144
+ const lines: string[] = [];
145
+ initLogger({ info: (msg) => lines.push(msg), warn() {}, error() {}, debug() {} }, false, { timestamps: false });
146
+ try {
147
+ const service = new EngramAccessService(makeObserveProbe(memoryDir).orch);
148
+ const key = "observe-replay-log-key";
149
+
150
+ await service.observe(observeRequest({ idempotencyKey: key }));
151
+ assert.deepEqual(lines.filter((line) => line.includes("access-observe-replay")), []);
152
+
153
+ await service.observe(observeRequest({ idempotencyKey: key }));
154
+ assert.deepEqual(lines.filter((line) => line.includes("access-observe-replay")), [
155
+ "remnic: access-observe-replay sessionKey=pi-geek:abc123 messages=2",
156
+ ]);
157
+ } finally {
158
+ initLogger({ info() {}, warn() {}, error() {}, debug() {} }, false);
159
+ rmSync(memoryDir, { recursive: true, force: true });
160
+ }
161
+ });
162
+
141
163
  test("#1649 observe without an idempotencyKey is never deduplicated (backward compatible)", async () => {
142
164
  const memoryDir = mkdtempSync(join(tmpdir(), "remnic-observe-nokey-"));
143
165
  try {
@@ -4122,7 +4122,7 @@ export class EngramAccessService extends SupportPassportAccessServiceBase {
4122
4122
  // ignored by runObserve cannot change the retry fingerprint.
4123
4123
  effectiveCodingContext = (await this.resolveCodingScopeInputs(request)).codingContext;
4124
4124
  }
4125
- return this.handleIdempotentWrite<EngramAccessObserveResponse>({
4125
+ const response = await this.handleIdempotentWrite<EngramAccessObserveResponse>({
4126
4126
  operation: "observe",
4127
4127
  idempotencyKey: request.idempotencyKey,
4128
4128
  // Shared builder (issue #1989 PR3): byte-parity with the historical
@@ -4141,6 +4141,10 @@ export class EngramAccessService extends SupportPassportAccessServiceBase {
4141
4141
  beforeExecute: hooks?.enforceWriteQuota,
4142
4142
  execute: () => this.runObserve(request),
4143
4143
  });
4144
+ if (response.idempotencyReplay) {
4145
+ log.info(`access-observe-replay sessionKey=${request.sessionKey} messages=${request.messages.length}`);
4146
+ }
4147
+ return response;
4144
4148
  }
4145
4149
 
4146
4150
  private async runObserve(request: EngramAccessObserveRequest): Promise<EngramAccessObserveResponse> {