@remnic/core 9.8.0 → 9.9.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 (56) hide show
  1. package/dist/access-admin-ops-surface.d.ts +1 -1
  2. package/dist/access-admin-ops-surface.js +2 -2
  3. package/dist/access-boundary.d.ts +1 -1
  4. package/dist/access-boundary.js +2 -2
  5. package/dist/access-cli.js +6 -6
  6. package/dist/access-http.d.ts +1 -1
  7. package/dist/access-http.js +4 -4
  8. package/dist/access-identity-continuity-surface.js +2 -2
  9. package/dist/access-lcm-surface.d.ts +1 -1
  10. package/dist/access-lcm-surface.js +2 -2
  11. package/dist/access-mcp.d.ts +1 -1
  12. package/dist/access-mcp.js +3 -3
  13. package/dist/access-observe-write-surface.d.ts +1 -1
  14. package/dist/access-observe-write-surface.js +2 -2
  15. package/dist/access-operations-batch.js +2 -2
  16. package/dist/access-operations.d.ts +1 -1
  17. package/dist/access-operations.js +3 -3
  18. package/dist/access-recall-concurrency.d.ts +1 -1
  19. package/dist/access-recall-concurrency.js +2 -2
  20. package/dist/access-recall-response.d.ts +1 -1
  21. package/dist/access-recall-response.js +2 -2
  22. package/dist/access-recall-surface.d.ts +1 -1
  23. package/dist/access-recall-surface.js +2 -2
  24. package/dist/{access-service-DEL4qCrc.d.ts → access-service-DbZ1G3zV.d.ts} +4 -4
  25. package/dist/access-service.d.ts +1 -1
  26. package/dist/access-service.js +2 -2
  27. package/dist/access-surface-catalog.d.ts +1 -1
  28. package/dist/{chunk-2EJOEICD.js → chunk-BI2OJF6J.js} +2 -2
  29. package/dist/{chunk-IDZFBSHN.js → chunk-OGCAYLNA.js} +2 -2
  30. package/dist/{chunk-SICXL4MK.js → chunk-PJSK6OJM.js} +44 -8
  31. package/dist/chunk-PJSK6OJM.js.map +1 -0
  32. package/dist/{chunk-76GLCM57.js → chunk-PMUD7ERF.js} +3 -3
  33. package/dist/{chunk-TDTXKOAJ.js → chunk-XQDRKZ7V.js} +7 -5
  34. package/dist/chunk-XQDRKZ7V.js.map +1 -0
  35. package/dist/{chunk-IYNGIMVG.js → chunk-ZVAYK7GU.js} +3 -3
  36. package/dist/{cli-C_pqqTCw.d.ts → cli-5tNLVTvJ.d.ts} +1 -1
  37. package/dist/cli.d.ts +2 -2
  38. package/dist/cli.js +5 -5
  39. package/dist/index.d.ts +3 -3
  40. package/dist/index.js +6 -6
  41. package/dist/mcp-memory-inspector-app.d.ts +1 -1
  42. package/dist/orchestrator.js +6 -6
  43. package/dist/write-quarantine.d.ts +18 -3
  44. package/dist/write-quarantine.js +1 -1
  45. package/package.json +2 -2
  46. package/src/access-observe-quarantine.test.ts +52 -0
  47. package/src/access-observe-write-surface.ts +12 -5
  48. package/src/access-service.ts +4 -4
  49. package/src/write-quarantine.test.ts +52 -0
  50. package/src/write-quarantine.ts +56 -7
  51. package/dist/chunk-SICXL4MK.js.map +0 -1
  52. package/dist/chunk-TDTXKOAJ.js.map +0 -1
  53. /package/dist/{chunk-2EJOEICD.js.map → chunk-BI2OJF6J.js.map} +0 -0
  54. /package/dist/{chunk-IDZFBSHN.js.map → chunk-OGCAYLNA.js.map} +0 -0
  55. /package/dist/{chunk-76GLCM57.js.map → chunk-PMUD7ERF.js.map} +0 -0
  56. /package/dist/{chunk-IYNGIMVG.js.map → chunk-ZVAYK7GU.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { E as EngramAccessReviewQueueResponse, A as AccessProfilingReportRequest, a as AccessProfilingReportResponse, b as EngramAccessCapsuleListResponse, M as MemoryPromotionTargetKind, c as MemoryPromotionResult } from './access-service-DEL4qCrc.js';
1
+ import { E as EngramAccessReviewQueueResponse, A as AccessProfilingReportRequest, a as AccessProfilingReportResponse, b as EngramAccessCapsuleListResponse, M as MemoryPromotionTargetKind, c as MemoryPromotionResult } from './access-service-DbZ1G3zV.js';
2
2
  import { D as DreamsPhase, a as DreamsRunResult } from './types-D_fG2ix8.js';
3
3
  import { GraphSnapshotRequest, GraphSnapshotResponse } from './graph-snapshot.js';
4
4
  import { O as Orchestrator } from './orchestrator-CQJ8U7En.js';
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AccessAdminOpsSurface
3
- } from "./chunk-TDTXKOAJ.js";
3
+ } from "./chunk-XQDRKZ7V.js";
4
4
  import "./chunk-GDASG7NC.js";
5
5
  import "./chunk-GDB4J2H3.js";
6
6
  import "./chunk-AJ7QCSIS.js";
7
7
  import "./chunk-VQ7B2Q6M.js";
8
- import "./chunk-SICXL4MK.js";
8
+ import "./chunk-PJSK6OJM.js";
9
9
  import "./chunk-GNVZQ5JN.js";
10
10
  import "./chunk-YN2UN7N3.js";
11
11
  import "./chunk-JGSKJHF7.js";
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { F as EngramAccessService } from './access-service-DEL4qCrc.js';
2
+ import { F as EngramAccessService } from './access-service-DbZ1G3zV.js';
3
3
  import './catalog-BWqHb5HT.js';
4
4
  import './types-D_fG2ix8.js';
5
5
  import './message-parts/index.js';
@@ -9,12 +9,12 @@ import {
9
9
  listRegisteredOperations,
10
10
  normalizeOptionalPath
11
11
  } from "./chunk-KF5EUVKQ.js";
12
- import "./chunk-TDTXKOAJ.js";
12
+ import "./chunk-XQDRKZ7V.js";
13
13
  import "./chunk-GDASG7NC.js";
14
14
  import "./chunk-GDB4J2H3.js";
15
15
  import "./chunk-AJ7QCSIS.js";
16
16
  import "./chunk-VQ7B2Q6M.js";
17
- import "./chunk-SICXL4MK.js";
17
+ import "./chunk-PJSK6OJM.js";
18
18
  import "./chunk-GNVZQ5JN.js";
19
19
  import "./chunk-YN2UN7N3.js";
20
20
  import "./chunk-JGSKJHF7.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Orchestrator
3
- } from "./chunk-2EJOEICD.js";
3
+ } from "./chunk-BI2OJF6J.js";
4
4
  import "./chunk-5SB7SC2G.js";
5
5
  import "./chunk-I74SUMNI.js";
6
6
  import "./chunk-ILNPU5W5.js";
@@ -82,7 +82,7 @@ import "./chunk-6HEM6HTQ.js";
82
82
  import "./chunk-6QYST5XN.js";
83
83
  import "./chunk-YROFNEG5.js";
84
84
  import "./chunk-S2FSBU4H.js";
85
- import "./chunk-76GLCM57.js";
85
+ import "./chunk-PMUD7ERF.js";
86
86
  import "./chunk-MMACM5G2.js";
87
87
  import "./chunk-54BGIBCR.js";
88
88
  import "./chunk-H4CKS5B2.js";
@@ -179,7 +179,7 @@ import "./chunk-KD3QD3A5.js";
179
179
  import "./chunk-MYVPLJOO.js";
180
180
  import "./chunk-H3FZVNRN.js";
181
181
  import "./chunk-KFZY2OFH.js";
182
- import "./chunk-IYNGIMVG.js";
182
+ import "./chunk-ZVAYK7GU.js";
183
183
  import "./chunk-V7IZKJI3.js";
184
184
  import "./chunk-SEDEKFYQ.js";
185
185
  import "./chunk-RKNJBZ55.js";
@@ -192,7 +192,7 @@ import "./chunk-MKQBXQKU.js";
192
192
  import "./chunk-CXZQOVIE.js";
193
193
  import "./chunk-IC2TCZJ2.js";
194
194
  import "./chunk-D24OXEPB.js";
195
- import "./chunk-IDZFBSHN.js";
195
+ import "./chunk-OGCAYLNA.js";
196
196
  import "./chunk-OQJIB32H.js";
197
197
  import "./chunk-HNZKVLAN.js";
198
198
  import "./chunk-EQWEIIKQ.js";
@@ -209,12 +209,12 @@ import {
209
209
  } from "./chunk-KF5EUVKQ.js";
210
210
  import {
211
211
  EngramAccessService
212
- } from "./chunk-TDTXKOAJ.js";
212
+ } from "./chunk-XQDRKZ7V.js";
213
213
  import "./chunk-GDASG7NC.js";
214
214
  import "./chunk-GDB4J2H3.js";
215
215
  import "./chunk-AJ7QCSIS.js";
216
216
  import "./chunk-VQ7B2Q6M.js";
217
- import "./chunk-SICXL4MK.js";
217
+ import "./chunk-PJSK6OJM.js";
218
218
  import "./chunk-GNVZQ5JN.js";
219
219
  import "./chunk-YN2UN7N3.js";
220
220
  import "./chunk-JGSKJHF7.js";
@@ -1,5 +1,5 @@
1
1
  import { IncomingMessage, ServerResponse } from 'node:http';
2
- import { F as EngramAccessService } from './access-service-DEL4qCrc.js';
2
+ import { F as EngramAccessService } from './access-service-DbZ1G3zV.js';
3
3
  import { ResolvedIdentity } from './adapters/types.js';
4
4
  import { AdapterRegistry } from './adapters/registry.js';
5
5
  import { TokenCapabilities } from './access-token-capabilities.js';
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EngramAccessHttpServer
3
- } from "./chunk-IYNGIMVG.js";
3
+ } from "./chunk-ZVAYK7GU.js";
4
4
  import "./chunk-V7IZKJI3.js";
5
5
  import "./chunk-SEDEKFYQ.js";
6
6
  import "./chunk-RKNJBZ55.js";
@@ -13,7 +13,7 @@ import "./chunk-MKQBXQKU.js";
13
13
  import "./chunk-CXZQOVIE.js";
14
14
  import "./chunk-IC2TCZJ2.js";
15
15
  import "./chunk-D24OXEPB.js";
16
- import "./chunk-IDZFBSHN.js";
16
+ import "./chunk-OGCAYLNA.js";
17
17
  import "./chunk-OQJIB32H.js";
18
18
  import "./chunk-HNZKVLAN.js";
19
19
  import "./chunk-EQWEIIKQ.js";
@@ -25,12 +25,12 @@ import "./chunk-T4WDJPEZ.js";
25
25
  import "./chunk-2VEOKUPP.js";
26
26
  import "./chunk-5RUE3GHQ.js";
27
27
  import "./chunk-KF5EUVKQ.js";
28
- import "./chunk-TDTXKOAJ.js";
28
+ import "./chunk-XQDRKZ7V.js";
29
29
  import "./chunk-GDASG7NC.js";
30
30
  import "./chunk-GDB4J2H3.js";
31
31
  import "./chunk-AJ7QCSIS.js";
32
32
  import "./chunk-VQ7B2Q6M.js";
33
- import "./chunk-SICXL4MK.js";
33
+ import "./chunk-PJSK6OJM.js";
34
34
  import "./chunk-GNVZQ5JN.js";
35
35
  import "./chunk-YN2UN7N3.js";
36
36
  import "./chunk-JGSKJHF7.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AccessIdentityContinuitySurface
3
- } from "./chunk-TDTXKOAJ.js";
3
+ } from "./chunk-XQDRKZ7V.js";
4
4
  import "./chunk-GDASG7NC.js";
5
5
  import "./chunk-GDB4J2H3.js";
6
6
  import "./chunk-AJ7QCSIS.js";
7
7
  import "./chunk-VQ7B2Q6M.js";
8
- import "./chunk-SICXL4MK.js";
8
+ import "./chunk-PJSK6OJM.js";
9
9
  import "./chunk-GNVZQ5JN.js";
10
10
  import "./chunk-YN2UN7N3.js";
11
11
  import "./chunk-JGSKJHF7.js";
@@ -1,5 +1,5 @@
1
1
  import { O as Orchestrator } from './orchestrator-CQJ8U7En.js';
2
- import { d as EngramAccessLcmSearchRequest, e as EngramAccessLcmSearchResponse } from './access-service-DEL4qCrc.js';
2
+ import { d as EngramAccessLcmSearchRequest, e as EngramAccessLcmSearchResponse } from './access-service-DbZ1G3zV.js';
3
3
  import './recall-state.js';
4
4
  import './utils/serialize-mutations.js';
5
5
  import './search/port.js';
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AccessLcmSurface
3
- } from "./chunk-TDTXKOAJ.js";
3
+ } from "./chunk-XQDRKZ7V.js";
4
4
  import "./chunk-GDASG7NC.js";
5
5
  import "./chunk-GDB4J2H3.js";
6
6
  import "./chunk-AJ7QCSIS.js";
7
7
  import "./chunk-VQ7B2Q6M.js";
8
- import "./chunk-SICXL4MK.js";
8
+ import "./chunk-PJSK6OJM.js";
9
9
  import "./chunk-GNVZQ5JN.js";
10
10
  import "./chunk-YN2UN7N3.js";
11
11
  import "./chunk-JGSKJHF7.js";
@@ -1,5 +1,5 @@
1
1
  import { Readable, Writable } from 'node:stream';
2
- import { F as EngramAccessService } from './access-service-DEL4qCrc.js';
2
+ import { F as EngramAccessService } from './access-service-DbZ1G3zV.js';
3
3
  import './catalog-BWqHb5HT.js';
4
4
  import './types-D_fG2ix8.js';
5
5
  import './message-parts/index.js';
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-CXZQOVIE.js";
5
5
  import "./chunk-IC2TCZJ2.js";
6
6
  import "./chunk-D24OXEPB.js";
7
- import "./chunk-IDZFBSHN.js";
7
+ import "./chunk-OGCAYLNA.js";
8
8
  import "./chunk-OQJIB32H.js";
9
9
  import "./chunk-HNZKVLAN.js";
10
10
  import "./chunk-EQWEIIKQ.js";
@@ -16,12 +16,12 @@ import "./chunk-T4WDJPEZ.js";
16
16
  import "./chunk-2VEOKUPP.js";
17
17
  import "./chunk-5RUE3GHQ.js";
18
18
  import "./chunk-KF5EUVKQ.js";
19
- import "./chunk-TDTXKOAJ.js";
19
+ import "./chunk-XQDRKZ7V.js";
20
20
  import "./chunk-GDASG7NC.js";
21
21
  import "./chunk-GDB4J2H3.js";
22
22
  import "./chunk-AJ7QCSIS.js";
23
23
  import "./chunk-VQ7B2Q6M.js";
24
- import "./chunk-SICXL4MK.js";
24
+ import "./chunk-PJSK6OJM.js";
25
25
  import "./chunk-GNVZQ5JN.js";
26
26
  import "./chunk-YN2UN7N3.js";
27
27
  import "./chunk-JGSKJHF7.js";
@@ -1,6 +1,6 @@
1
1
  import { ValidExplicitCapture } from './explicit-capture.js';
2
2
  import { O as Orchestrator } from './orchestrator-CQJ8U7En.js';
3
- import { C as CodingScopedWriteInput, f as MemoryScopePlan, g as EngramAccessQmdHealthResponse, h as EngramAccessQmdCollectionState, i as EngramAccessMemoryStoreRequest, j as EngramAccessSuggestionSubmitRequest, k as EngramAccessBriefingRequest, l as EngramAccessBriefingResponse, m as EngramAccessWriteResponse, n as EngramAccessObserveRequest, o as EngramAccessObserveResponse } from './access-service-DEL4qCrc.js';
3
+ import { C as CodingScopedWriteInput, f as MemoryScopePlan, g as EngramAccessQmdHealthResponse, h as EngramAccessQmdCollectionState, i as EngramAccessMemoryStoreRequest, j as EngramAccessSuggestionSubmitRequest, k as EngramAccessBriefingRequest, l as EngramAccessBriefingResponse, m as EngramAccessWriteResponse, n as EngramAccessObserveRequest, o as EngramAccessObserveResponse } from './access-service-DbZ1G3zV.js';
4
4
  import './types-D_fG2ix8.js';
5
5
  import './message-parts/index.js';
6
6
  import './bounded-jsonl-state.js';
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AccessObserveWriteSurface
3
- } from "./chunk-TDTXKOAJ.js";
3
+ } from "./chunk-XQDRKZ7V.js";
4
4
  import "./chunk-GDASG7NC.js";
5
5
  import "./chunk-GDB4J2H3.js";
6
6
  import "./chunk-AJ7QCSIS.js";
7
7
  import "./chunk-VQ7B2Q6M.js";
8
- import "./chunk-SICXL4MK.js";
8
+ import "./chunk-PJSK6OJM.js";
9
9
  import "./chunk-GNVZQ5JN.js";
10
10
  import "./chunk-YN2UN7N3.js";
11
11
  import "./chunk-JGSKJHF7.js";
@@ -7,12 +7,12 @@ import "./chunk-35NN3ZFA.js";
7
7
  import "./chunk-CEN6DW6X.js";
8
8
  import "./chunk-T4WDJPEZ.js";
9
9
  import "./chunk-KF5EUVKQ.js";
10
- import "./chunk-TDTXKOAJ.js";
10
+ import "./chunk-XQDRKZ7V.js";
11
11
  import "./chunk-GDASG7NC.js";
12
12
  import "./chunk-GDB4J2H3.js";
13
13
  import "./chunk-AJ7QCSIS.js";
14
14
  import "./chunk-VQ7B2Q6M.js";
15
- import "./chunk-SICXL4MK.js";
15
+ import "./chunk-PJSK6OJM.js";
16
16
  import "./chunk-GNVZQ5JN.js";
17
17
  import "./chunk-YN2UN7N3.js";
18
18
  import "./chunk-JGSKJHF7.js";
@@ -1,6 +1,6 @@
1
1
  import { BoundOperation } from './access-boundary.js';
2
2
  import { MemoryStoreRequest } from './access-schema.js';
3
- import { p as ArchitectureSurfaceRequest, q as ArchitectureSurfaceResponse, D as DecisionSurfaceRequest, r as DecisionSurfaceResponse, s as DeltaSurfaceRequest, t as DeltaSurfaceResponse, u as EngramAccessMemoryResponse, m as EngramAccessWriteResponse, v as CodegraphSurfaceRequest, w as CodegraphSurfaceResponse } from './access-service-DEL4qCrc.js';
3
+ import { p as ArchitectureSurfaceRequest, q as ArchitectureSurfaceResponse, D as DecisionSurfaceRequest, r as DecisionSurfaceResponse, s as DeltaSurfaceRequest, t as DeltaSurfaceResponse, u as EngramAccessMemoryResponse, m as EngramAccessWriteResponse, v as CodegraphSurfaceRequest, w as CodegraphSurfaceResponse } from './access-service-DbZ1G3zV.js';
4
4
  import 'zod';
5
5
  import './catalog-BWqHb5HT.js';
6
6
  import './types-D_fG2ix8.js';
@@ -22,7 +22,7 @@ import {
22
22
  memoryGetOperation,
23
23
  memorySearchOperation,
24
24
  memoryStoreOperation
25
- } from "./chunk-IDZFBSHN.js";
25
+ } from "./chunk-OGCAYLNA.js";
26
26
  import "./chunk-OQJIB32H.js";
27
27
  import "./chunk-HNZKVLAN.js";
28
28
  import "./chunk-EQWEIIKQ.js";
@@ -33,12 +33,12 @@ import "./chunk-CEN6DW6X.js";
33
33
  import "./chunk-T4WDJPEZ.js";
34
34
  import "./chunk-2VEOKUPP.js";
35
35
  import "./chunk-KF5EUVKQ.js";
36
- import "./chunk-TDTXKOAJ.js";
36
+ import "./chunk-XQDRKZ7V.js";
37
37
  import "./chunk-GDASG7NC.js";
38
38
  import "./chunk-GDB4J2H3.js";
39
39
  import "./chunk-AJ7QCSIS.js";
40
40
  import "./chunk-VQ7B2Q6M.js";
41
- import "./chunk-SICXL4MK.js";
41
+ import "./chunk-PJSK6OJM.js";
42
42
  import "./chunk-GNVZQ5JN.js";
43
43
  import "./chunk-YN2UN7N3.js";
44
44
  import "./chunk-JGSKJHF7.js";
@@ -1,4 +1,4 @@
1
- import { x as EngramAccessRecallResponse, y as EngramAccessRecallRequest } from './access-service-DEL4qCrc.js';
1
+ import { x as EngramAccessRecallResponse, y as EngramAccessRecallRequest } from './access-service-DbZ1G3zV.js';
2
2
  import { BudgetReservation, CrossNamespaceBudget } from './cross-namespace-budget.js';
3
3
  import './catalog-BWqHb5HT.js';
4
4
  import './types-D_fG2ix8.js';
@@ -5,12 +5,12 @@ import {
5
5
  leadRecallFlight,
6
6
  raceAbort,
7
7
  withRecallConcurrency
8
- } from "./chunk-TDTXKOAJ.js";
8
+ } from "./chunk-XQDRKZ7V.js";
9
9
  import "./chunk-GDASG7NC.js";
10
10
  import "./chunk-GDB4J2H3.js";
11
11
  import "./chunk-AJ7QCSIS.js";
12
12
  import "./chunk-VQ7B2Q6M.js";
13
- import "./chunk-SICXL4MK.js";
13
+ import "./chunk-PJSK6OJM.js";
14
14
  import "./chunk-GNVZQ5JN.js";
15
15
  import "./chunk-YN2UN7N3.js";
16
16
  import "./chunk-JGSKJHF7.js";
@@ -1,5 +1,5 @@
1
1
  import { AccessRecallSurfaceDeps } from './access-recall-surface.js';
2
- import { y as EngramAccessRecallRequest, x as EngramAccessRecallResponse } from './access-service-DEL4qCrc.js';
2
+ import { y as EngramAccessRecallRequest, x as EngramAccessRecallResponse } from './access-service-DbZ1G3zV.js';
3
3
  import { BudgetDecision } from './cross-namespace-budget.js';
4
4
  import { R as RecallPlanMode, b as RecallDisclosure } from './types-D_fG2ix8.js';
5
5
  import './access-audit.js';
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  assembleRecallResponse
3
- } from "./chunk-TDTXKOAJ.js";
3
+ } from "./chunk-XQDRKZ7V.js";
4
4
  import "./chunk-GDASG7NC.js";
5
5
  import "./chunk-GDB4J2H3.js";
6
6
  import "./chunk-AJ7QCSIS.js";
7
7
  import "./chunk-VQ7B2Q6M.js";
8
- import "./chunk-SICXL4MK.js";
8
+ import "./chunk-PJSK6OJM.js";
9
9
  import "./chunk-GNVZQ5JN.js";
10
10
  import "./chunk-YN2UN7N3.js";
11
11
  import "./chunk-JGSKJHF7.js";
@@ -5,7 +5,7 @@ import { LastRecallSnapshot } from './recall-state.js';
5
5
  import { RecallXraySnapshot } from './recall-xray.js';
6
6
  import { b as RecallDisclosure, R as RecallPlanMode, M as MemoryFile } from './types-D_fG2ix8.js';
7
7
  import { S as StorageManager } from './storage-NIyKYD8g.js';
8
- import { x as EngramAccessRecallResponse, z as EngramAccessMemorySummary, B as EngramAccessSetCodingContextRequest, y as EngramAccessRecallRequest } from './access-service-DEL4qCrc.js';
8
+ import { x as EngramAccessRecallResponse, z as EngramAccessMemorySummary, B as EngramAccessSetCodingContextRequest, y as EngramAccessRecallRequest } from './access-service-DbZ1G3zV.js';
9
9
  import './recall-audit.js';
10
10
  import './recall-audit-anomaly.js';
11
11
  import './briefing.js';
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AccessRecallSurface
3
- } from "./chunk-TDTXKOAJ.js";
3
+ } from "./chunk-XQDRKZ7V.js";
4
4
  import "./chunk-GDASG7NC.js";
5
5
  import "./chunk-GDB4J2H3.js";
6
6
  import "./chunk-AJ7QCSIS.js";
7
7
  import "./chunk-VQ7B2Q6M.js";
8
- import "./chunk-SICXL4MK.js";
8
+ import "./chunk-PJSK6OJM.js";
9
9
  import "./chunk-GNVZQ5JN.js";
10
10
  import "./chunk-YN2UN7N3.js";
11
11
  import "./chunk-JGSKJHF7.js";
@@ -1502,11 +1502,10 @@ interface EngramAccessWriteEnvelope {
1502
1502
  idempotencyKey?: string;
1503
1503
  dryRun?: boolean;
1504
1504
  sessionKey?: string;
1505
- /**
1506
- * Trusted transport-bound principal. This must never come from untrusted client payloads.
1507
- * When present, write authorization is evaluated against this principal instead of sessionKey.
1508
- */
1505
+ /** Trusted transport-bound principal (never from client payloads); authorizes writes instead of sessionKey. */
1509
1506
  authenticatedPrincipal?: string;
1507
+ /** When set, an ACL rejection is NOT dead-lettered (#1888) so `remnic quarantine replay` can re-submit through this same surface without re-quarantining and duplicating the parked record. */
1508
+ readonly suppressQuarantine?: boolean;
1510
1509
  }
1511
1510
  /**
1512
1511
  * Optional git/project context for project-scoped writes (#1434). When no
@@ -1616,6 +1615,7 @@ interface EngramAccessObserveRequest extends SourceConnectorProvenance {
1616
1615
  * Creates a `CodingContext` with `projectId: "tag:<projectTag>"`.
1617
1616
  */
1618
1617
  projectTag?: string;
1618
+ readonly suppressQuarantine?: boolean;
1619
1619
  }
1620
1620
  /**
1621
1621
  * Additive diagnostic view of the effective {@link MemoryScopePlan} resolved for
@@ -1,4 +1,4 @@
1
- export { A as AccessProfilingReportRequest, a as AccessProfilingReportResponse, C as CodingScopedWriteInput, L as ENGRAM_ACCESS_WRITE_SCHEMA_VERSION, N as EngramAccessActionConfidenceRequest, O as EngramAccessActionConfidenceResponse, k as EngramAccessBriefingRequest, l as EngramAccessBriefingResponse, b as EngramAccessCapsuleListResponse, Q as EngramAccessDaySummaryRequest, R as EngramAccessEntityListResponse, S as EngramAccessEntityResponse, T as EngramAccessEntitySummary, U as EngramAccessHealthResponse, V as EngramAccessLcmCompactionFlushRequest, W as EngramAccessLcmCompactionFlushResponse, X as EngramAccessLcmCompactionRecordRequest, Y as EngramAccessLcmCompactionRecordResponse, d as EngramAccessLcmSearchRequest, e as EngramAccessLcmSearchResponse, Z as EngramAccessLcmStatusResponse, _ as EngramAccessMaintenanceResponse, $ as EngramAccessMemoryBrowseRequest, a0 as EngramAccessMemoryBrowseResponse, a1 as EngramAccessMemoryRecord, u as EngramAccessMemoryResponse, i as EngramAccessMemoryStoreRequest, z as EngramAccessMemorySummary, a2 as EngramAccessObserveMessage, n as EngramAccessObserveRequest, o as EngramAccessObserveResponse, a3 as EngramAccessOfflineSyncApplyFileContentRequest, a4 as EngramAccessOfflineSyncApplyFileContentResponse, a5 as EngramAccessOfflineSyncApplyRequest, a6 as EngramAccessOfflineSyncApplyResponse, a7 as EngramAccessOfflineSyncFileContentRequest, a8 as EngramAccessOfflineSyncFileContentResponse, a9 as EngramAccessOfflineSyncFilesRequest, aa as EngramAccessOfflineSyncFilesResponse, ab as EngramAccessOfflineSyncSnapshotRequest, ac as EngramAccessOfflineSyncSnapshotResponse, ad as EngramAccessOfflineSyncSnapshotStreamResponse, h as EngramAccessQmdCollectionState, g as EngramAccessQmdHealthResponse, ae as EngramAccessQualityResponse, af as EngramAccessRecallExplainRequest, ag as EngramAccessRecallExplainResponse, y as EngramAccessRecallRequest, x as EngramAccessRecallResponse, ah as EngramAccessReviewDispositionRequest, ai as EngramAccessReviewDispositionResponse, E as EngramAccessReviewQueueResponse, aj as EngramAccessScopeDebug, F as EngramAccessService, B as EngramAccessSetCodingContextRequest, j as EngramAccessSuggestionSubmitRequest, ak as EngramAccessTimelineResponse, al as EngramAccessTrustZoneBrowseRequest, am as EngramAccessTrustZoneBrowseResponse, an as EngramAccessTrustZoneDemoSeedRequest, ao as EngramAccessTrustZoneDemoSeedResponse, ap as EngramAccessTrustZonePromoteRequest, aq as EngramAccessTrustZonePromoteResponse, ar as EngramAccessTrustZoneRecordSummary, as as EngramAccessTrustZoneStatusResponse, at as EngramAccessWriteEnvelope, m as EngramAccessWriteResponse, f as MemoryScopePlan, au as buildProjectedGovernanceProposedActions, av as hasGroupedGovernanceActions, aw as shapeMemorySummary } from './access-service-DEL4qCrc.js';
1
+ export { A as AccessProfilingReportRequest, a as AccessProfilingReportResponse, C as CodingScopedWriteInput, L as ENGRAM_ACCESS_WRITE_SCHEMA_VERSION, N as EngramAccessActionConfidenceRequest, O as EngramAccessActionConfidenceResponse, k as EngramAccessBriefingRequest, l as EngramAccessBriefingResponse, b as EngramAccessCapsuleListResponse, Q as EngramAccessDaySummaryRequest, R as EngramAccessEntityListResponse, S as EngramAccessEntityResponse, T as EngramAccessEntitySummary, U as EngramAccessHealthResponse, V as EngramAccessLcmCompactionFlushRequest, W as EngramAccessLcmCompactionFlushResponse, X as EngramAccessLcmCompactionRecordRequest, Y as EngramAccessLcmCompactionRecordResponse, d as EngramAccessLcmSearchRequest, e as EngramAccessLcmSearchResponse, Z as EngramAccessLcmStatusResponse, _ as EngramAccessMaintenanceResponse, $ as EngramAccessMemoryBrowseRequest, a0 as EngramAccessMemoryBrowseResponse, a1 as EngramAccessMemoryRecord, u as EngramAccessMemoryResponse, i as EngramAccessMemoryStoreRequest, z as EngramAccessMemorySummary, a2 as EngramAccessObserveMessage, n as EngramAccessObserveRequest, o as EngramAccessObserveResponse, a3 as EngramAccessOfflineSyncApplyFileContentRequest, a4 as EngramAccessOfflineSyncApplyFileContentResponse, a5 as EngramAccessOfflineSyncApplyRequest, a6 as EngramAccessOfflineSyncApplyResponse, a7 as EngramAccessOfflineSyncFileContentRequest, a8 as EngramAccessOfflineSyncFileContentResponse, a9 as EngramAccessOfflineSyncFilesRequest, aa as EngramAccessOfflineSyncFilesResponse, ab as EngramAccessOfflineSyncSnapshotRequest, ac as EngramAccessOfflineSyncSnapshotResponse, ad as EngramAccessOfflineSyncSnapshotStreamResponse, h as EngramAccessQmdCollectionState, g as EngramAccessQmdHealthResponse, ae as EngramAccessQualityResponse, af as EngramAccessRecallExplainRequest, ag as EngramAccessRecallExplainResponse, y as EngramAccessRecallRequest, x as EngramAccessRecallResponse, ah as EngramAccessReviewDispositionRequest, ai as EngramAccessReviewDispositionResponse, E as EngramAccessReviewQueueResponse, aj as EngramAccessScopeDebug, F as EngramAccessService, B as EngramAccessSetCodingContextRequest, j as EngramAccessSuggestionSubmitRequest, ak as EngramAccessTimelineResponse, al as EngramAccessTrustZoneBrowseRequest, am as EngramAccessTrustZoneBrowseResponse, an as EngramAccessTrustZoneDemoSeedRequest, ao as EngramAccessTrustZoneDemoSeedResponse, ap as EngramAccessTrustZonePromoteRequest, aq as EngramAccessTrustZonePromoteResponse, ar as EngramAccessTrustZoneRecordSummary, as as EngramAccessTrustZoneStatusResponse, at as EngramAccessWriteEnvelope, m as EngramAccessWriteResponse, f as MemoryScopePlan, au as buildProjectedGovernanceProposedActions, av as hasGroupedGovernanceActions, aw as shapeMemorySummary } from './access-service-DbZ1G3zV.js';
2
2
  import './storage-NIyKYD8g.js';
3
3
  import './types-B1VHaf2w.js';
4
4
  import './recall-explain-renderer.js';
@@ -4,12 +4,12 @@ import {
4
4
  buildProjectedGovernanceProposedActions,
5
5
  hasGroupedGovernanceActions,
6
6
  shapeMemorySummary
7
- } from "./chunk-TDTXKOAJ.js";
7
+ } from "./chunk-XQDRKZ7V.js";
8
8
  import "./chunk-GDASG7NC.js";
9
9
  import "./chunk-GDB4J2H3.js";
10
10
  import "./chunk-AJ7QCSIS.js";
11
11
  import "./chunk-VQ7B2Q6M.js";
12
- import "./chunk-SICXL4MK.js";
12
+ import "./chunk-PJSK6OJM.js";
13
13
  import "./chunk-GNVZQ5JN.js";
14
14
  import "./chunk-YN2UN7N3.js";
15
15
  import "./chunk-JGSKJHF7.js";
@@ -1,6 +1,6 @@
1
1
  import { OperationName } from './access-boundary.js';
2
2
  import 'zod';
3
- import './access-service-DEL4qCrc.js';
3
+ import './access-service-DbZ1G3zV.js';
4
4
  import './catalog-BWqHb5HT.js';
5
5
  import './types-D_fG2ix8.js';
6
6
  import './message-parts/index.js';
@@ -329,7 +329,7 @@ import {
329
329
  clusterByKey,
330
330
  createCorrectionService,
331
331
  detectPassiveCorrections
332
- } from "./chunk-TDTXKOAJ.js";
332
+ } from "./chunk-XQDRKZ7V.js";
333
333
  import {
334
334
  importCapsule
335
335
  } from "./chunk-AJ7QCSIS.js";
@@ -24002,4 +24002,4 @@ export {
24002
24002
  blendGraphExpandedRecallScore,
24003
24003
  Orchestrator
24004
24004
  };
24005
- //# sourceMappingURL=chunk-2EJOEICD.js.map
24005
+ //# sourceMappingURL=chunk-BI2OJF6J.js.map
@@ -9,7 +9,7 @@ import {
9
9
  DECISION_SUBCOMMANDS,
10
10
  DELTA_SUBCOMMANDS,
11
11
  isCodegraphToolName
12
- } from "./chunk-TDTXKOAJ.js";
12
+ } from "./chunk-XQDRKZ7V.js";
13
13
  import {
14
14
  serializeMutations,
15
15
  withHeldFileLock
@@ -1807,4 +1807,4 @@ export {
1807
1807
  codegraphIngestTracesOperation,
1808
1808
  REGISTERED_OPERATIONS
1809
1809
  };
1810
- //# sourceMappingURL=chunk-IDZFBSHN.js.map
1810
+ //# sourceMappingURL=chunk-OGCAYLNA.js.map
@@ -75,12 +75,13 @@ var WriteQuarantineStore = class {
75
75
  }
76
76
  /**
77
77
  * All valid, non-expired quarantined records across every principal, oldest
78
- * first. Expired records are deleted on read (lazy GC), so an inactive
79
- * principal bucket with no follow-up write is still bounded by age.
78
+ * first, each paired with its absolute on-disk path. Expired records are
79
+ * deleted on read (lazy GC), so an inactive principal bucket with no
80
+ * follow-up write is still bounded by age.
80
81
  */
81
- async list() {
82
+ async entries() {
82
83
  const now = Date.now();
83
- const records = [];
84
+ const entries = [];
84
85
  for (const dir of await this.principalDirs()) {
85
86
  for (const file of await this.entryFiles(dir)) {
86
87
  const info = await stat(file).catch(() => null);
@@ -96,11 +97,46 @@ var WriteQuarantineStore = class {
96
97
  } catch {
97
98
  continue;
98
99
  }
99
- if (isQuarantinedRecord(parsed)) records.push(parsed);
100
+ if (isQuarantinedRecord(parsed)) entries.push({ record: parsed, path: file });
100
101
  }
101
102
  }
102
- records.sort((a, b) => a.timestamp < b.timestamp ? -1 : a.timestamp > b.timestamp ? 1 : 0);
103
- return records;
103
+ entries.sort((a, b) => {
104
+ const at = a.record.timestamp;
105
+ const bt = b.record.timestamp;
106
+ return at < bt ? -1 : at > bt ? 1 : 0;
107
+ });
108
+ return entries;
109
+ }
110
+ /** As {@link entries} but projected to records only (backward-compatible view). */
111
+ async list() {
112
+ return (await this.entries()).map((entry) => entry.record);
113
+ }
114
+ /**
115
+ * Delete one quarantined entry by its absolute on-disk path (as returned by
116
+ * {@link entries}). The path MUST resolve inside the quarantine root, mirroring
117
+ * the store's containment posture; a path outside the root — or one already
118
+ * absent — removes nothing. Returns true only when a file was actually deleted.
119
+ */
120
+ async removeEntry(entryPath) {
121
+ const rootAbs = path.resolve(this.root);
122
+ const rel = path.relative(rootAbs, path.resolve(entryPath));
123
+ if (rel === "" || rel === ".." || rel.startsWith(`..${path.sep}`) || path.isAbsolute(rel)) {
124
+ return false;
125
+ }
126
+ let safe;
127
+ try {
128
+ safe = await resolveSafeStoragePath(rootAbs, rel);
129
+ } catch {
130
+ return false;
131
+ }
132
+ try {
133
+ await rm(safe, { force: false });
134
+ return true;
135
+ } catch (err) {
136
+ const errno = err;
137
+ if (errno?.code === "ENOENT") return false;
138
+ throw err;
139
+ }
104
140
  }
105
141
  /** Total valid, non-expired quarantined record count across every principal. */
106
142
  async count() {
@@ -162,4 +198,4 @@ export {
162
198
  DEFAULT_QUARANTINE_CAPS,
163
199
  WriteQuarantineStore
164
200
  };
165
- //# sourceMappingURL=chunk-SICXL4MK.js.map
201
+ //# sourceMappingURL=chunk-PJSK6OJM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/write-quarantine.ts"],"sourcesContent":["/**\n * Dead-letter quarantine for writes rejected by the namespace write-ACL\n * (issue #1888).\n *\n * When `observe` / `memory_store` / `suggestion_submit` fail namespace\n * authorization, the payload used to be dropped with no recoverable copy: a\n * client configured with a namespace that matches no policy (and is not the\n * default/shared namespace) had every write in the window silently destroyed.\n * The ACL rejection is CORRECT and stays fail-closed; this store only\n * preserves the payload so it can be replayed after the config is fixed,\n * following the AGENTS.md \"reject loudly but never destroy state\" posture\n * (patterns 14/42).\n *\n * Records live OUTSIDE any memory namespace at\n * `<memoryDir>/state/quarantine/<principalSafe>/<timestamp>-<id>.json`, keyed\n * by the encoded principal, and are bounded per principal by count and age.\n * Every path is resolved from `memoryDir` through `resolveSafeStoragePath`, so\n * a symlinked `state`/`quarantine` cannot redirect writes outside the memory\n * directory. The store never re-routes a payload into a writable namespace.\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport type { Dirent } from \"node:fs\";\nimport { lstat, mkdir, readFile, readdir, rename, rm, stat, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { encodeStoragePathSegment, resolveSafeStoragePath } from \"./storage-paths.js\";\n\nexport type QuarantineOperation = \"observe\" | \"memory_store\" | \"suggestion_submit\";\n\nexport interface QuarantineEntryInput {\n operation: QuarantineOperation;\n /** Authenticated principal the write was attributed to, if any. */\n principal: string | undefined;\n /** Namespace the caller attempted to write and was denied. */\n attemptedNamespace: string;\n /** The original request payload, preserved verbatim for replay. */\n payload: unknown;\n /** ISO timestamp; defaults to now. Injectable for deterministic tests. */\n timestamp?: string;\n}\n\nexport interface QuarantinedRecord {\n operation: QuarantineOperation;\n principal: string | null;\n attemptedNamespace: string;\n timestamp: string;\n payload: unknown;\n}\n\n/** A quarantined record paired with the absolute on-disk path it was read from. */\nexport interface QuarantineEntry {\n record: QuarantinedRecord;\n path: string;\n}\n\nexport interface QuarantineCaps {\n /** Keep at most this many records per principal (newest win). */\n maxEntriesPerPrincipal: number;\n /** Drop records older than this many milliseconds. */\n maxAgeMs: number;\n}\n\nexport const DEFAULT_QUARANTINE_CAPS: QuarantineCaps = {\n maxEntriesPerPrincipal: 500,\n maxAgeMs: 14 * 24 * 60 * 60 * 1000,\n};\n\nconst QUARANTINE_DIRNAME = \"quarantine\";\n\nfunction validateCaps(caps: QuarantineCaps): void {\n if (!Number.isInteger(caps.maxEntriesPerPrincipal) || caps.maxEntriesPerPrincipal < 1) {\n throw new Error(\n `WriteQuarantineStore: maxEntriesPerPrincipal must be a positive integer (got ${caps.maxEntriesPerPrincipal})`\n );\n }\n if (!Number.isFinite(caps.maxAgeMs) || caps.maxAgeMs <= 0) {\n throw new Error(\n `WriteQuarantineStore: maxAgeMs must be a positive finite number of milliseconds (got ${caps.maxAgeMs})`\n );\n }\n}\n\nfunction isQuarantinedRecord(value: unknown): value is QuarantinedRecord {\n if (!value || typeof value !== \"object\") return false;\n const record = value as Record<string, unknown>;\n return (\n (record.operation === \"observe\" ||\n record.operation === \"memory_store\" ||\n record.operation === \"suggestion_submit\") &&\n (record.principal === null || typeof record.principal === \"string\") &&\n typeof record.attemptedNamespace === \"string\" &&\n typeof record.timestamp === \"string\" &&\n \"payload\" in record\n );\n}\n\nexport class WriteQuarantineStore {\n private readonly memoryDir: string;\n\n constructor(\n memoryDir: string,\n private readonly caps: QuarantineCaps = DEFAULT_QUARANTINE_CAPS\n ) {\n validateCaps(caps);\n this.memoryDir = path.resolve(memoryDir);\n }\n\n /** Absolute quarantine root (`<memoryDir>/state/quarantine`). */\n get root(): string {\n return path.join(this.memoryDir, \"state\", QUARANTINE_DIRNAME);\n }\n\n /**\n * Resolve a path under the quarantine root, checked for containment and\n * symlink traversal from `memoryDir` down — so a symlinked `state` or\n * `quarantine` component that escapes the memory directory is rejected.\n */\n private safeDir(...segments: string[]): Promise<string> {\n return resolveSafeStoragePath(this.memoryDir, \"state\", QUARANTINE_DIRNAME, ...segments);\n }\n\n /**\n * Park a rejected write. Returns the absolute path of the record written.\n * Prunes the principal's bucket to the configured caps afterward.\n */\n async quarantine(input: QuarantineEntryInput): Promise<string> {\n const timestamp = input.timestamp ?? new Date().toISOString();\n const record: QuarantinedRecord = {\n operation: input.operation,\n principal: input.principal ?? null,\n attemptedNamespace: input.attemptedNamespace,\n timestamp,\n payload: input.payload,\n };\n const principalSegment = encodeStoragePathSegment(input.principal ?? \"unknown\");\n const fileName = `${timestamp.replace(/[:.]/g, \"-\")}-${randomUUID().slice(0, 8)}.json`;\n\n const dir = await this.safeDir(principalSegment);\n await mkdir(dir, { recursive: true });\n // The temp write uses the exclusive `wx` flag so a pre-planted symlink at\n // the temp name can never be followed (O_EXCL); rename is atomic (rule 42).\n const finalPath = await this.safeDir(principalSegment, fileName);\n const tmpPath = await this.safeDir(principalSegment, `${fileName}.tmp`);\n await writeFile(tmpPath, JSON.stringify(record, null, 2), { encoding: \"utf8\", flag: \"wx\" });\n await rename(tmpPath, finalPath);\n\n await this.pruneDir(dir);\n return finalPath;\n }\n\n /**\n * All valid, non-expired quarantined records across every principal, oldest\n * first, each paired with its absolute on-disk path. Expired records are\n * deleted on read (lazy GC), so an inactive principal bucket with no\n * follow-up write is still bounded by age.\n */\n async entries(): Promise<QuarantineEntry[]> {\n const now = Date.now();\n const entries: QuarantineEntry[] = [];\n for (const dir of await this.principalDirs()) {\n for (const file of await this.entryFiles(dir)) {\n const info = await stat(file).catch(() => null);\n if (!info) continue;\n if (now - info.mtimeMs > this.caps.maxAgeMs) {\n await rm(file, { force: true }).catch(() => {});\n continue;\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(await readFile(file, \"utf8\"));\n } catch {\n continue;\n }\n if (isQuarantinedRecord(parsed)) entries.push({ record: parsed, path: file });\n }\n }\n entries.sort((a, b) => {\n const at = a.record.timestamp;\n const bt = b.record.timestamp;\n return at < bt ? -1 : at > bt ? 1 : 0;\n });\n return entries;\n }\n\n /** As {@link entries} but projected to records only (backward-compatible view). */\n async list(): Promise<QuarantinedRecord[]> {\n return (await this.entries()).map((entry) => entry.record);\n }\n\n /**\n * Delete one quarantined entry by its absolute on-disk path (as returned by\n * {@link entries}). The path MUST resolve inside the quarantine root, mirroring\n * the store's containment posture; a path outside the root — or one already\n * absent — removes nothing. Returns true only when a file was actually deleted.\n */\n async removeEntry(entryPath: string): Promise<boolean> {\n const rootAbs = path.resolve(this.root);\n const rel = path.relative(rootAbs, path.resolve(entryPath));\n if (rel === \"\" || rel === \"..\" || rel.startsWith(`..${path.sep}`) || path.isAbsolute(rel)) {\n return false;\n }\n // Symlink-race-safe resolution (issue #1888): resolveSafeStoragePath rejects\n // any symlinked path component and verifies the REAL path stays inside the\n // real quarantine root before we touch it, so a swapped component cannot\n // redirect the deletion outside the store — lexical containment alone is not\n // sufficient against a TOCTOU symlink swap.\n let safe: string;\n try {\n safe = await resolveSafeStoragePath(rootAbs, rel);\n } catch {\n return false;\n }\n try {\n await rm(safe, { force: false });\n return true;\n } catch (err) {\n const errno = err as NodeJS.ErrnoException;\n if (errno?.code === \"ENOENT\") return false;\n throw err;\n }\n }\n\n /** Total valid, non-expired quarantined record count across every principal. */\n async count(): Promise<number> {\n return (await this.list()).length;\n }\n\n /** lstat (no symlink follow): true only for a real directory. */\n private async isRealDir(dir: string): Promise<boolean> {\n const info = await lstat(dir).catch(() => null);\n return info?.isDirectory() === true;\n }\n\n private async principalDirs(): Promise<string[]> {\n // safeDir() rejects a symlinked/containment-escaping root — let that\n // propagate instead of masquerading as an empty store.\n const root = await this.safeDir();\n if (!(await this.isRealDir(root))) return [];\n let entries: Dirent[];\n try {\n entries = await readdir(root, { withFileTypes: true });\n } catch (err) {\n // Root vanished mid-scan → legitimately empty. Any other failure\n // (permissions, IO) is a genuine inspection failure and must surface.\n if ((err as NodeJS.ErrnoException)?.code === \"ENOENT\") return [];\n throw err;\n }\n return entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => path.join(root, entry.name))\n .sort();\n }\n\n private async entryFiles(dir: string): Promise<string[]> {\n if (!(await this.isRealDir(dir))) return [];\n let entries: Dirent[];\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch (err) {\n if ((err as NodeJS.ErrnoException)?.code === \"ENOENT\") return [];\n throw err;\n }\n return entries\n .filter((entry) => entry.isFile() && entry.name.endsWith(\".json\"))\n .map((entry) => path.join(dir, entry.name))\n .sort();\n }\n\n private async pruneDir(dir: string): Promise<void> {\n const files = await this.entryFiles(dir);\n const now = Date.now();\n const survivors: Array<{ path: string; mtimeMs: number }> = [];\n for (const file of files) {\n const info = await stat(file).catch(() => null);\n if (!info) continue;\n if (now - info.mtimeMs > this.caps.maxAgeMs) {\n await rm(file, { force: true }).catch(() => {});\n continue;\n }\n survivors.push({ path: file, mtimeMs: info.mtimeMs });\n }\n const surplus = survivors.length - this.caps.maxEntriesPerPrincipal;\n if (surplus <= 0) return;\n survivors.sort((a, b) => a.mtimeMs - b.mtimeMs || (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));\n for (const victim of survivors.slice(0, surplus)) {\n await rm(victim.path, { force: true }).catch(() => {});\n }\n }\n}\n"],"mappings":"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","names":[]}
@@ -210,7 +210,7 @@ import {
210
210
  } from "./chunk-EEC7UJPX.js";
211
211
  import {
212
212
  EngramAccessHttpServer
213
- } from "./chunk-IYNGIMVG.js";
213
+ } from "./chunk-ZVAYK7GU.js";
214
214
  import {
215
215
  WearablesInputError
216
216
  } from "./chunk-V7IZKJI3.js";
@@ -229,7 +229,7 @@ import {
229
229
  } from "./chunk-OADWQ5CR.js";
230
230
  import {
231
231
  EngramAccessService
232
- } from "./chunk-TDTXKOAJ.js";
232
+ } from "./chunk-XQDRKZ7V.js";
233
233
  import {
234
234
  WorkStorage
235
235
  } from "./chunk-GDB4J2H3.js";
@@ -7650,4 +7650,4 @@ export {
7650
7650
  listMemoryMarkdownFilePaths,
7651
7651
  registerCli
7652
7652
  };
7653
- //# sourceMappingURL=chunk-76GLCM57.js.map
7653
+ //# sourceMappingURL=chunk-PMUD7ERF.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-AJ7QCSIS.js";
12
12
  import {
13
13
  WriteQuarantineStore
14
- } from "./chunk-SICXL4MK.js";
14
+ } from "./chunk-PJSK6OJM.js";
15
15
  import {
16
16
  trustResultFor
17
17
  } from "./chunk-GNVZQ5JN.js";
@@ -5464,7 +5464,7 @@ var AccessObserveWriteSurface = class {
5464
5464
  try {
5465
5465
  namespace = await this.deps.resolveCodingScopedWriteNamespace(request);
5466
5466
  } catch (err) {
5467
- if (request.dryRun !== true) {
5467
+ if (request.dryRun !== true && request.suppressQuarantine !== true) {
5468
5468
  await this.parkRejectedWrite(err, "memory_store", request);
5469
5469
  }
5470
5470
  throw err;
@@ -5534,7 +5534,7 @@ var AccessObserveWriteSurface = class {
5534
5534
  try {
5535
5535
  namespace = await this.deps.resolveCodingScopedWriteNamespace(request);
5536
5536
  } catch (err) {
5537
- if (request.dryRun !== true) {
5537
+ if (request.dryRun !== true && request.suppressQuarantine !== true) {
5538
5538
  await this.parkRejectedWrite(err, "suggestion_submit", request);
5539
5539
  }
5540
5540
  throw err;
@@ -5622,7 +5622,9 @@ var AccessObserveWriteSurface = class {
5622
5622
  try {
5623
5623
  scope = await this.deps.resolveMemoryScopePlan(request);
5624
5624
  } catch (err) {
5625
- await this.parkRejectedWrite(err, "observe", request);
5625
+ if (request.suppressQuarantine !== true) {
5626
+ await this.parkRejectedWrite(err, "observe", request);
5627
+ }
5626
5628
  throw err;
5627
5629
  }
5628
5630
  const writeNamespace = scope.writeNamespace;
@@ -11977,4 +11979,4 @@ export {
11977
11979
  EngramAccessService,
11978
11980
  AccessAdminOpsSurface
11979
11981
  };
11980
- //# sourceMappingURL=chunk-TDTXKOAJ.js.map
11982
+ //# sourceMappingURL=chunk-XQDRKZ7V.js.map