@remnic/core 9.6.28 → 9.6.29

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 (62) hide show
  1. package/dist/access-admin-ops-surface.d.ts +2 -2
  2. package/dist/access-admin-ops-surface.js +1 -1
  3. package/dist/access-boundary.d.ts +2 -2
  4. package/dist/access-boundary.js +2 -2
  5. package/dist/access-cli.js +8 -8
  6. package/dist/access-http.d.ts +2 -2
  7. package/dist/access-http.js +6 -6
  8. package/dist/access-identity-continuity-surface.d.ts +1 -1
  9. package/dist/access-identity-continuity-surface.js +1 -1
  10. package/dist/access-lcm-surface.d.ts +2 -2
  11. package/dist/access-lcm-surface.js +1 -1
  12. package/dist/access-mcp.d.ts +2 -2
  13. package/dist/access-mcp.js +5 -5
  14. package/dist/access-observe-write-surface.d.ts +2 -2
  15. package/dist/access-observe-write-surface.js +1 -1
  16. package/dist/access-operations-batch.js +3 -3
  17. package/dist/access-operations.d.ts +2 -2
  18. package/dist/access-operations.js +4 -4
  19. package/dist/access-recall-surface.d.ts +4 -3
  20. package/dist/access-recall-surface.js +1 -1
  21. package/dist/{access-service-DK7s3wMj.d.ts → access-service-BofDzaPT.d.ts} +3 -2
  22. package/dist/access-service.d.ts +2 -2
  23. package/dist/access-service.js +1 -1
  24. package/dist/access-surface-catalog.d.ts +2 -2
  25. package/dist/bootstrap.d.ts +1 -1
  26. package/dist/{chunk-43VNWTBB.js → chunk-3RROR5KV.js} +4 -4
  27. package/dist/chunk-3RROR5KV.js.map +1 -0
  28. package/dist/{chunk-YDF4HL3W.js → chunk-5BHIGBHQ.js} +30 -37
  29. package/dist/chunk-5BHIGBHQ.js.map +1 -0
  30. package/dist/{chunk-4273YO6I.js → chunk-5WJ4LBFR.js} +106 -6
  31. package/dist/chunk-5WJ4LBFR.js.map +1 -0
  32. package/dist/{chunk-N6VIXDT7.js → chunk-C2SEH754.js} +4 -4
  33. package/dist/{chunk-MRQN5Q3I.js → chunk-EAREADWV.js} +2 -2
  34. package/dist/{chunk-GXLFDLX2.js → chunk-IF7THCGJ.js} +3 -3
  35. package/dist/{chunk-ARDRBJHD.js → chunk-SGYTQKC2.js} +3 -3
  36. package/dist/{chunk-QLYLTKUG.js → chunk-XA4PWKBW.js} +3 -3
  37. package/dist/{cli-CLSdmOVU.d.ts → cli-3_x5sJTL.d.ts} +2 -2
  38. package/dist/cli.d.ts +3 -3
  39. package/dist/cli.js +7 -7
  40. package/dist/explicit-capture.d.ts +1 -1
  41. package/dist/index.d.ts +4 -4
  42. package/dist/index.js +8 -8
  43. package/dist/mcp-memory-inspector-app.d.ts +2 -2
  44. package/dist/{orchestrator-BzXGNHco.d.ts → orchestrator-CAH5-PKN.d.ts} +20 -3
  45. package/dist/orchestrator.d.ts +1 -1
  46. package/dist/orchestrator.js +8 -8
  47. package/package.json +2 -2
  48. package/src/access-recall-surface.ts +46 -49
  49. package/src/access-service.ts +2 -7
  50. package/src/cli.ts +4 -10
  51. package/src/orchestration/xray-capture-queue.test.ts +42 -0
  52. package/src/orchestration/xray-capture-queue.ts +78 -0
  53. package/src/orchestrator-xray-capture.test.ts +319 -0
  54. package/src/orchestrator.ts +76 -8
  55. package/dist/chunk-4273YO6I.js.map +0 -1
  56. package/dist/chunk-43VNWTBB.js.map +0 -1
  57. package/dist/chunk-YDF4HL3W.js.map +0 -1
  58. /package/dist/{chunk-N6VIXDT7.js.map → chunk-C2SEH754.js.map} +0 -0
  59. /package/dist/{chunk-MRQN5Q3I.js.map → chunk-EAREADWV.js.map} +0 -0
  60. /package/dist/{chunk-GXLFDLX2.js.map → chunk-IF7THCGJ.js.map} +0 -0
  61. /package/dist/{chunk-ARDRBJHD.js.map → chunk-SGYTQKC2.js.map} +0 -0
  62. /package/dist/{chunk-QLYLTKUG.js.map → chunk-XA4PWKBW.js.map} +0 -0
@@ -13,7 +13,7 @@ import {
13
13
  processChatMessage,
14
14
  sessionBelongsToPrincipal,
15
15
  subscribeChatTranscript
16
- } from "./chunk-QLYLTKUG.js";
16
+ } from "./chunk-XA4PWKBW.js";
17
17
  import {
18
18
  validateRequest
19
19
  } from "./chunk-2MR3MFQB.js";
@@ -28,7 +28,7 @@ import {
28
28
  } from "./chunk-35NN3ZFA.js";
29
29
  import {
30
30
  getOperation
31
- } from "./chunk-MRQN5Q3I.js";
31
+ } from "./chunk-EAREADWV.js";
32
32
  import {
33
33
  assertOperationAllowed,
34
34
  enforceNamespaceAllowList,
@@ -38,7 +38,7 @@ import {
38
38
  import {
39
39
  CorrectionContractError,
40
40
  EngramAccessInputError
41
- } from "./chunk-YDF4HL3W.js";
41
+ } from "./chunk-5BHIGBHQ.js";
42
42
  import {
43
43
  isTrustZoneName
44
44
  } from "./chunk-JGSKJHF7.js";
@@ -2964,4 +2964,4 @@ function positiveIntQueryParam(value, label) {
2964
2964
  export {
2965
2965
  EngramAccessHttpServer
2966
2966
  };
2967
- //# sourceMappingURL=chunk-N6VIXDT7.js.map
2967
+ //# sourceMappingURL=chunk-C2SEH754.js.map
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-D7FOKIY5.js";
6
6
  import {
7
7
  EngramAccessInputError
8
- } from "./chunk-YDF4HL3W.js";
8
+ } from "./chunk-5BHIGBHQ.js";
9
9
  import {
10
10
  expandTildePath
11
11
  } from "./chunk-EYIEWJNI.js";
@@ -274,4 +274,4 @@ export {
274
274
  listRegisteredOperations,
275
275
  __resetRegistryForTest
276
276
  };
277
- //# sourceMappingURL=chunk-MRQN5Q3I.js.map
277
+ //# sourceMappingURL=chunk-EAREADWV.js.map
@@ -26,14 +26,14 @@ import {
26
26
  } from "./chunk-T4WDJPEZ.js";
27
27
  import {
28
28
  defineOperation
29
- } from "./chunk-MRQN5Q3I.js";
29
+ } from "./chunk-EAREADWV.js";
30
30
  import {
31
31
  enforceNamespaceAllowList,
32
32
  tokenCapabilityStore
33
33
  } from "./chunk-D7FOKIY5.js";
34
34
  import {
35
35
  EngramAccessInputError
36
- } from "./chunk-YDF4HL3W.js";
36
+ } from "./chunk-5BHIGBHQ.js";
37
37
  import {
38
38
  projectTagProjectId
39
39
  } from "./chunk-BAVVI5GP.js";
@@ -453,4 +453,4 @@ defineOperation({ name: "graph_events", description: "SSE graph events.", schema
453
453
  defineOperation({ name: "chat_message", description: "Chat message.", schema: strictSchema({ message: S.str, chatSessionId: S.str }), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
454
454
  defineOperation({ name: "chat_events", description: "SSE chat events.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { stream: "sse" } }) });
455
455
  defineOperation({ name: "adapters_status", description: "Adapter registry metadata (issue #1850 round 5). Marker op: the HTTP transport builds the response from its own adapterRegistry, but the op still must be registered so it appears in listRegisteredOperations and enforceTokenOp can gate it for scoped tokens.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
456
- //# sourceMappingURL=chunk-GXLFDLX2.js.map
456
+ //# sourceMappingURL=chunk-IF7THCGJ.js.map
@@ -3,14 +3,14 @@ import {
3
3
  } from "./chunk-2MR3MFQB.js";
4
4
  import {
5
5
  defineOperation
6
- } from "./chunk-MRQN5Q3I.js";
6
+ } from "./chunk-EAREADWV.js";
7
7
  import {
8
8
  CorrectionContractError,
9
9
  DECISION_SUBCOMMANDS,
10
10
  DELTA_SUBCOMMANDS,
11
11
  EngramAccessInputError,
12
12
  isCodegraphToolName
13
- } from "./chunk-YDF4HL3W.js";
13
+ } from "./chunk-5BHIGBHQ.js";
14
14
 
15
15
  // src/access-operations.ts
16
16
  import { z } from "zod";
@@ -464,4 +464,4 @@ export {
464
464
  codegraphIngestTracesOperation,
465
465
  REGISTERED_OPERATIONS
466
466
  };
467
- //# sourceMappingURL=chunk-ARDRBJHD.js.map
467
+ //# sourceMappingURL=chunk-SGYTQKC2.js.map
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-T4WDJPEZ.js";
19
19
  import {
20
20
  getOperation
21
- } from "./chunk-MRQN5Q3I.js";
21
+ } from "./chunk-EAREADWV.js";
22
22
  import {
23
23
  assertOperationAllowed,
24
24
  capabilityAllowsOp,
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-D7FOKIY5.js";
28
28
  import {
29
29
  EngramAccessInputError
30
- } from "./chunk-YDF4HL3W.js";
30
+ } from "./chunk-5BHIGBHQ.js";
31
31
  import {
32
32
  readEnvVar
33
33
  } from "./chunk-JUC24CTX.js";
@@ -3771,4 +3771,4 @@ export {
3771
3771
  MCP_SUPPORTED_PROTOCOL_VERSIONS,
3772
3772
  EngramMcpServer
3773
3773
  };
3774
- //# sourceMappingURL=chunk-QLYLTKUG.js.map
3774
+ //# sourceMappingURL=chunk-XA4PWKBW.js.map
@@ -8,7 +8,7 @@ import { RebuildMemoryLifecycleLedgerResult } from './maintenance/rebuild-memory
8
8
  import { RebuildObservationsResult } from './maintenance/rebuild-observations.js';
9
9
  import { ArchiveObservationsResult } from './maintenance/archive-observations.js';
10
10
  import { Writable, Readable } from 'node:stream';
11
- import { C as ConversationIndexCoordinator, T as TierMigrationCoordinator, O as Orchestrator } from './orchestrator-BzXGNHco.js';
11
+ import { C as ConversationIndexCoordinator, T as TierMigrationCoordinator, O as Orchestrator } from './orchestrator-CAH5-PKN.js';
12
12
  import { ReplayRunSummary } from './replay/runner.js';
13
13
  import { ReplaySource, ReplayTurn } from './replay/types.js';
14
14
  import { P as ProcessBatchFn } from './pipeline-CiD86zIk.js';
@@ -16,7 +16,7 @@ import { WorkProjectStatus, WorkTaskStatus, WorkTaskPriority } from './work/type
16
16
  import { RoutePatternType } from './routing/engine.js';
17
17
  import { TailscaleSyncOptions } from './network/tailscale.js';
18
18
  import { DashboardStatus } from './dashboard-runtime.js';
19
- import { F as EngramAccessService } from './access-service-DK7s3wMj.js';
19
+ import { F as EngramAccessService } from './access-service-BofDzaPT.js';
20
20
  import { ResolveSecretRefFn } from './resolve-auth-token.js';
21
21
  import { CompatRunner, CompatReport } from './compat/types.js';
22
22
  import { EvalBaselineDeltaReport, EvalBaselineSnapshot, EvalCiGateReport, EvalBenchmarkPackSummary, EvalHarnessStatus, EvalStoredBaselineCiGateReport } from './evals.js';
package/dist/cli.d.ts CHANGED
@@ -8,7 +8,7 @@ import './maintenance/rebuild-memory-lifecycle-ledger.js';
8
8
  import './maintenance/rebuild-observations.js';
9
9
  import './maintenance/archive-observations.js';
10
10
  import 'node:stream';
11
- import './orchestrator-BzXGNHco.js';
11
+ import './orchestrator-CAH5-PKN.js';
12
12
  import './replay/runner.js';
13
13
  import './replay/types.js';
14
14
  import './pipeline-CiD86zIk.js';
@@ -16,7 +16,7 @@ import './work/types.js';
16
16
  import './routing/engine.js';
17
17
  import './network/tailscale.js';
18
18
  import './dashboard-runtime.js';
19
- import './access-service-DK7s3wMj.js';
19
+ import './access-service-BofDzaPT.js';
20
20
  import './resolve-auth-token.js';
21
21
  import './compat/types.js';
22
22
  import './evals.js';
@@ -39,7 +39,7 @@ import './session-integrity.js';
39
39
  import './recall-state.js';
40
40
  import './storage-DxPDAiU9.js';
41
41
  import './connectors-cli-2iaQ5tX2.js';
42
- export { A as AccessHttpServeCliCommandOptions, a as ArchiveObservationsCliCommandOptions, B as BulkImportCliCommandOptions, C as CliApi, b as CliCommand, c as CliProgram, d as CompatCliCommandOptions, e as ConnectorsRunCliOutputOptions, f as ConversationIndexHealthCliOrchestrator, D as DashboardStartCliCommandOptions, g as DedupeCandidate, E as ExactDedupePlan, G as GraphHealthCliCommandOptions, M as MemoryActionAuditCliCommandOptions, h as MemoryActionAuditCliNamespaceSummary, i as MemoryActionAuditCliReport, j as MemoryGovernanceCliCommandOptions, k as MemoryGovernanceReportCliCommandOptions, l as MemoryGovernanceRestoreCliCommandOptions, m as MemoryReviewDispositionCliCommandOptions, n as MemoryTimelineCliCommandOptions, o as MigrateCliOrchestrator, q as MigrateCliReport, s as MigrateObservationsCliCommandOptions, P as PolicyDiffCliReport, t as PolicyDiffEntry, u as PolicyRollbackCliReport, v as PolicyStatusCliReport, w as PolicyTuningCliOrchestrator, R as RebuildMemoryLifecycleLedgerCliCommandOptions, x as RebuildMemoryProjectionCliCommandOptions, y as RebuildObservationsCliCommandOptions, z as RepairMemoryProjectionCliCommandOptions, F as ReplayCliCommandOptions, H as ReplayCliOrchestrator, I as RouteCliCommandOptions, S as SessionIntegrityCliCommandOptions, J as SessionRepairCliCommandOptions, T as TailscaleStatusCliCommandOptions, K as TailscaleSyncCliCommandOptions, L as TierMigrateCliAdapter, N as TierMigrateCoordinatorCliAdapter, O as TierMigrateLegacyCliAdapter, Q as TierStatusCliAdapter, U as TierStatusCoordinatorCliAdapter, V as TierStatusLegacyCliAdapter, W as TrainingExportCliCommandOptions, X as VerifyMemoryProjectionCliCommandOptions, Y as WebDavServeCliCommandOptions, Z as WorkProjectCliCommandOptions, _ as WorkTaskCliCommandOptions, $ as emitConnectorsRunCliResult, a0 as filterNormalMemorySearchResults, a1 as hasDestructivePurgeFailures, a2 as isNormalRetrievalVisibleMemory, a3 as listMemoryMarkdownFilePaths, a4 as parseDurationToMs, a5 as parseStrictCliDate, a6 as planAggressiveDuplicateDeletions, a7 as planExactDuplicateDeletions, a8 as registerCli, a9 as resolveAccessPrincipalOverride, aa as resolveMemoryDirForNamespace, ab as runAbstractionNodeStatusCliCommand, ac as runAccessHttpServeCliCommand, ad as runAccessHttpStatusCliCommand, ae as runAccessHttpStopCliCommand, af as runAccessMcpServeCliCommand, ag as runArchiveObservationsCliCommand, ah as runBenchmarkBaselineReportCliCommand, ai as runBenchmarkBaselineSnapshotCliCommand, aj as runBenchmarkCiGateCliCommand, ak as runBenchmarkImportCliCommand, al as runBenchmarkStatusCliCommand, am as runBenchmarkStoredBaselineCiGateCliCommand, an as runBenchmarkValidateCliCommand, r as runBulkImportCliCommand, ao as runCausalTrajectoryStatusCliCommand, ap as runCommitmentLifecycleCliCommand, aq as runCommitmentRecordCliCommand, ar as runCommitmentSetStateCliCommand, as as runCommitmentStatusCliCommand, at as runCompatCliCommand, au as runCompoundingPromoteCliCommand, av as runConversationIndexHealthCliCommand, aw as runConversationIndexInspectCliCommand, ax as runConversationIndexRebuildCliCommand, ay as runCueAnchorStatusCliCommand, az as runDashboardStartCliCommand, aA as runDashboardStatusCliCommand, aB as runDashboardStopCliCommand, aC as runGraphHealthCliCommand, aD as runHarmonicSearchCliCommand, aE as runMemoryActionAuditCliCommand, aF as runMemoryGovernanceCliCommand, aG as runMemoryGovernanceReportCliCommand, aH as runMemoryGovernanceRestoreCliCommand, aI as runMemoryReviewDispositionCliCommand, aJ as runMemoryTimelineCliCommand, aK as runMigrateNormalizeFrontmatterCliCommand, aL as runMigrateObservationsCliCommand, aM as runMigrateRechunkCliCommand, aN as runMigrateReextractCliCommand, aO as runMigrateRescoreImportanceCliCommand, aP as runObjectiveStateStatusCliCommand, aQ as runPolicyDiffCliCommand, aR as runPolicyRollbackCliCommand, aS as runPolicyStatusCliCommand, aT as runRebuildMemoryLifecycleLedgerCliCommand, aU as runRebuildMemoryProjectionCliCommand, aV as runRebuildObservationsCliCommand, aW as runRepairMemoryProjectionCliCommand, aX as runReplayCliCommand, aY as runResumeBundleBuildCliCommand, aZ as runResumeBundleRecordCliCommand, a_ as runResumeBundleStatusCliCommand, a$ as runRouteCliCommand, b0 as runSemanticRulePromoteCliCommand, b1 as runSemanticRuleVerifyCliCommand, b2 as runSessionCheckCliCommand, b3 as runSessionRepairCliCommand, b4 as runTailscaleStatusCliCommand, b5 as runTailscaleSyncCliCommand, b6 as runTierMigrateCliCommand, b7 as runTierStatusCliCommand, b8 as runTrainingExportCliCommand, b9 as runTrustZoneDemoSeedCliCommand, ba as runTrustZonePromoteCliCommand, bb as runTrustZoneStatusCliCommand, bc as runUtilityLearningCliCommand, bd as runUtilityLearningStatusCliCommand, be as runUtilityTelemetryRecordCliCommand, bf as runUtilityTelemetryStatusCliCommand, bg as runVerifiedRecallSearchCliCommand, bh as runVerifyMemoryProjectionCliCommand, bi as runWebDavServeCliCommand, bj as runWebDavStopCliCommand, bk as runWorkProductRecallSearchCliCommand, bl as runWorkProductRecordCliCommand, bm as runWorkProductStatusCliCommand, bn as runWorkProjectCliCommand, bo as runWorkTaskCliCommand } from './cli-CLSdmOVU.js';
42
+ export { A as AccessHttpServeCliCommandOptions, a as ArchiveObservationsCliCommandOptions, B as BulkImportCliCommandOptions, C as CliApi, b as CliCommand, c as CliProgram, d as CompatCliCommandOptions, e as ConnectorsRunCliOutputOptions, f as ConversationIndexHealthCliOrchestrator, D as DashboardStartCliCommandOptions, g as DedupeCandidate, E as ExactDedupePlan, G as GraphHealthCliCommandOptions, M as MemoryActionAuditCliCommandOptions, h as MemoryActionAuditCliNamespaceSummary, i as MemoryActionAuditCliReport, j as MemoryGovernanceCliCommandOptions, k as MemoryGovernanceReportCliCommandOptions, l as MemoryGovernanceRestoreCliCommandOptions, m as MemoryReviewDispositionCliCommandOptions, n as MemoryTimelineCliCommandOptions, o as MigrateCliOrchestrator, q as MigrateCliReport, s as MigrateObservationsCliCommandOptions, P as PolicyDiffCliReport, t as PolicyDiffEntry, u as PolicyRollbackCliReport, v as PolicyStatusCliReport, w as PolicyTuningCliOrchestrator, R as RebuildMemoryLifecycleLedgerCliCommandOptions, x as RebuildMemoryProjectionCliCommandOptions, y as RebuildObservationsCliCommandOptions, z as RepairMemoryProjectionCliCommandOptions, F as ReplayCliCommandOptions, H as ReplayCliOrchestrator, I as RouteCliCommandOptions, S as SessionIntegrityCliCommandOptions, J as SessionRepairCliCommandOptions, T as TailscaleStatusCliCommandOptions, K as TailscaleSyncCliCommandOptions, L as TierMigrateCliAdapter, N as TierMigrateCoordinatorCliAdapter, O as TierMigrateLegacyCliAdapter, Q as TierStatusCliAdapter, U as TierStatusCoordinatorCliAdapter, V as TierStatusLegacyCliAdapter, W as TrainingExportCliCommandOptions, X as VerifyMemoryProjectionCliCommandOptions, Y as WebDavServeCliCommandOptions, Z as WorkProjectCliCommandOptions, _ as WorkTaskCliCommandOptions, $ as emitConnectorsRunCliResult, a0 as filterNormalMemorySearchResults, a1 as hasDestructivePurgeFailures, a2 as isNormalRetrievalVisibleMemory, a3 as listMemoryMarkdownFilePaths, a4 as parseDurationToMs, a5 as parseStrictCliDate, a6 as planAggressiveDuplicateDeletions, a7 as planExactDuplicateDeletions, a8 as registerCli, a9 as resolveAccessPrincipalOverride, aa as resolveMemoryDirForNamespace, ab as runAbstractionNodeStatusCliCommand, ac as runAccessHttpServeCliCommand, ad as runAccessHttpStatusCliCommand, ae as runAccessHttpStopCliCommand, af as runAccessMcpServeCliCommand, ag as runArchiveObservationsCliCommand, ah as runBenchmarkBaselineReportCliCommand, ai as runBenchmarkBaselineSnapshotCliCommand, aj as runBenchmarkCiGateCliCommand, ak as runBenchmarkImportCliCommand, al as runBenchmarkStatusCliCommand, am as runBenchmarkStoredBaselineCiGateCliCommand, an as runBenchmarkValidateCliCommand, r as runBulkImportCliCommand, ao as runCausalTrajectoryStatusCliCommand, ap as runCommitmentLifecycleCliCommand, aq as runCommitmentRecordCliCommand, ar as runCommitmentSetStateCliCommand, as as runCommitmentStatusCliCommand, at as runCompatCliCommand, au as runCompoundingPromoteCliCommand, av as runConversationIndexHealthCliCommand, aw as runConversationIndexInspectCliCommand, ax as runConversationIndexRebuildCliCommand, ay as runCueAnchorStatusCliCommand, az as runDashboardStartCliCommand, aA as runDashboardStatusCliCommand, aB as runDashboardStopCliCommand, aC as runGraphHealthCliCommand, aD as runHarmonicSearchCliCommand, aE as runMemoryActionAuditCliCommand, aF as runMemoryGovernanceCliCommand, aG as runMemoryGovernanceReportCliCommand, aH as runMemoryGovernanceRestoreCliCommand, aI as runMemoryReviewDispositionCliCommand, aJ as runMemoryTimelineCliCommand, aK as runMigrateNormalizeFrontmatterCliCommand, aL as runMigrateObservationsCliCommand, aM as runMigrateRechunkCliCommand, aN as runMigrateReextractCliCommand, aO as runMigrateRescoreImportanceCliCommand, aP as runObjectiveStateStatusCliCommand, aQ as runPolicyDiffCliCommand, aR as runPolicyRollbackCliCommand, aS as runPolicyStatusCliCommand, aT as runRebuildMemoryLifecycleLedgerCliCommand, aU as runRebuildMemoryProjectionCliCommand, aV as runRebuildObservationsCliCommand, aW as runRepairMemoryProjectionCliCommand, aX as runReplayCliCommand, aY as runResumeBundleBuildCliCommand, aZ as runResumeBundleRecordCliCommand, a_ as runResumeBundleStatusCliCommand, a$ as runRouteCliCommand, b0 as runSemanticRulePromoteCliCommand, b1 as runSemanticRuleVerifyCliCommand, b2 as runSessionCheckCliCommand, b3 as runSessionRepairCliCommand, b4 as runTailscaleStatusCliCommand, b5 as runTailscaleSyncCliCommand, b6 as runTierMigrateCliCommand, b7 as runTierStatusCliCommand, b8 as runTrainingExportCliCommand, b9 as runTrustZoneDemoSeedCliCommand, ba as runTrustZonePromoteCliCommand, bb as runTrustZoneStatusCliCommand, bc as runUtilityLearningCliCommand, bd as runUtilityLearningStatusCliCommand, be as runUtilityTelemetryRecordCliCommand, bf as runUtilityTelemetryStatusCliCommand, bg as runVerifiedRecallSearchCliCommand, bh as runVerifyMemoryProjectionCliCommand, bi as runWebDavServeCliCommand, bj as runWebDavStopCliCommand, bk as runWorkProductRecallSearchCliCommand, bl as runWorkProductRecordCliCommand, bm as runWorkProductStatusCliCommand, bn as runWorkProjectCliCommand, bo as runWorkTaskCliCommand } from './cli-3_x5sJTL.js';
43
43
  import './policy-runtime.js';
44
44
  import './shared-context/manager.js';
45
45
  import 'zod';
package/dist/cli.js CHANGED
@@ -90,7 +90,7 @@ import {
90
90
  runWorkProductStatusCliCommand,
91
91
  runWorkProjectCliCommand,
92
92
  runWorkTaskCliCommand
93
- } from "./chunk-43VNWTBB.js";
93
+ } from "./chunk-3RROR5KV.js";
94
94
  import "./chunk-MMACM5G2.js";
95
95
  import "./chunk-54BGIBCR.js";
96
96
  import "./chunk-H4CKS5B2.js";
@@ -168,7 +168,7 @@ import "./chunk-G6NKALRN.js";
168
168
  import "./chunk-OO42R444.js";
169
169
  import "./chunk-K6MV3TRQ.js";
170
170
  import "./chunk-OADWQ5CR.js";
171
- import "./chunk-N6VIXDT7.js";
171
+ import "./chunk-C2SEH754.js";
172
172
  import "./chunk-V7IZKJI3.js";
173
173
  import "./chunk-SEDEKFYQ.js";
174
174
  import "./chunk-RKNJBZ55.js";
@@ -177,13 +177,13 @@ import "./chunk-RSUYKGGZ.js";
177
177
  import "./chunk-42NQ7AVG.js";
178
178
  import "./chunk-TMSXWOBZ.js";
179
179
  import "./chunk-7RXCMVFQ.js";
180
- import "./chunk-QLYLTKUG.js";
180
+ import "./chunk-XA4PWKBW.js";
181
181
  import "./chunk-IC2TCZJ2.js";
182
182
  import "./chunk-D24OXEPB.js";
183
183
  import "./chunk-5RUE3GHQ.js";
184
- import "./chunk-ARDRBJHD.js";
184
+ import "./chunk-SGYTQKC2.js";
185
185
  import "./chunk-2MR3MFQB.js";
186
- import "./chunk-GXLFDLX2.js";
186
+ import "./chunk-IF7THCGJ.js";
187
187
  import "./chunk-HLTAPHZZ.js";
188
188
  import "./chunk-YF6FMLBT.js";
189
189
  import "./chunk-PRTA6444.js";
@@ -191,9 +191,9 @@ import "./chunk-KQDNAXOM.js";
191
191
  import "./chunk-35NN3ZFA.js";
192
192
  import "./chunk-FTYDWKO6.js";
193
193
  import "./chunk-T4WDJPEZ.js";
194
- import "./chunk-MRQN5Q3I.js";
194
+ import "./chunk-EAREADWV.js";
195
195
  import "./chunk-D7FOKIY5.js";
196
- import "./chunk-YDF4HL3W.js";
196
+ import "./chunk-5BHIGBHQ.js";
197
197
  import "./chunk-GDASG7NC.js";
198
198
  import "./chunk-GDB4J2H3.js";
199
199
  import "./chunk-M5QKGHCR.js";
@@ -1,4 +1,4 @@
1
- import { O as Orchestrator } from './orchestrator-BzXGNHco.js';
1
+ import { O as Orchestrator } from './orchestrator-CAH5-PKN.js';
2
2
  import { u as MemoryCategory, P as PluginConfig } from './types-DDUDgd7T.js';
3
3
  import './briefing.js';
4
4
  import './storage-DxPDAiU9.js';
package/dist/index.d.ts CHANGED
@@ -2,8 +2,8 @@ export { PluginEntryResolverOptions, resolvePluginEntry } from './plugin-entry-r
2
2
  export { isOpenaiApiKeyDisabled, parseConfig, resolveEnvVars } from './config.js';
3
3
  export { resolveRemnicConfigRecord } from './config-record.js';
4
4
  export { MigrationOptions, MigrationResult, RollbackResult, migrateFromEngram, rollbackFromEngramMigration } from './migrate/from-engram.js';
5
- import { b as SpeakerRegistry, W as WearablesService } from './orchestrator-BzXGNHco.js';
6
- export { D as DEFAULT_SELF_NAME, O as Orchestrator, c as ResolvedSpeaker, d as SpeakerOverride, e as WEARABLE_SOURCE_PREFIX, f as WearableDayTranscriptView, g as WearableMemoryGenDeps, h as WearableMemoryGenResult, i as WearableMemorySearchResult, j as WearableMemoryWriter, k as WearableSearchBackend, l as WearableStorageIo, m as WearableSyncDeps, n as WearableSyncOptions, o as WearableTranscriptSearchResult, p as WearablesServiceDeps, q as buildExtractionTurns, r as dateInTimezone, s as defaultTimezone, t as defaultWorkspaceDir, u as distinctSpeakerLabels, v as emptySpeakerRegistry, w as generateWearableMemories, x as importNativeMemories, y as loadSpeakerRegistry, z as locateTranscriptPath, A as memoryStatusForMode, B as resolveSpeaker, E as resolveSyncDates, F as sanitizeSessionKeyForFilename, H as saveSpeakerRegistry, J as speakerRegistryKey, K as speakersFilePath, L as syncWearableSource, M as wearableDayTag, N as wearableSourceLabel, Q as writeDailyDigestMemory } from './orchestrator-BzXGNHco.js';
5
+ import { b as SpeakerRegistry, W as WearablesService } from './orchestrator-CAH5-PKN.js';
6
+ export { D as DEFAULT_SELF_NAME, O as Orchestrator, c as ResolvedSpeaker, d as SpeakerOverride, e as WEARABLE_SOURCE_PREFIX, f as WearableDayTranscriptView, g as WearableMemoryGenDeps, h as WearableMemoryGenResult, i as WearableMemorySearchResult, j as WearableMemoryWriter, k as WearableSearchBackend, l as WearableStorageIo, m as WearableSyncDeps, n as WearableSyncOptions, o as WearableTranscriptSearchResult, p as WearablesServiceDeps, q as buildExtractionTurns, r as dateInTimezone, s as defaultTimezone, t as defaultWorkspaceDir, u as distinctSpeakerLabels, v as emptySpeakerRegistry, w as generateWearableMemories, x as importNativeMemories, y as loadSpeakerRegistry, z as locateTranscriptPath, A as memoryStatusForMode, B as resolveSpeaker, E as resolveSyncDates, F as sanitizeSessionKeyForFilename, H as saveSpeakerRegistry, J as speakerRegistryKey, K as speakersFilePath, L as syncWearableSource, M as wearableDayTag, N as wearableSourceLabel, Q as writeDailyDigestMemory } from './orchestrator-CAH5-PKN.js';
7
7
  export { normalizeProjectionPreview, normalizeProjectionTags } from './memory-projection-format.js';
8
8
  export { ModelCapabilities, ModelRegistry } from './model-registry.js';
9
9
  export { ACTIVE_STATUSES, ContradictionFilter, ContradictionJudgeBatchResult, ContradictionJudgeInput, ContradictionJudgeResult, ContradictionListResult, ContradictionVerdict, ResolutionResult, ResolutionVerb, ScanDependencies, ScanResult, computePairId, executeResolution, isCoolingDown, isValidResolutionVerb, judgeContradictionPairs, listPairs, readPair, resolvePair, runContradictionScan, writePair, writePairs } from './contradiction/index.js';
@@ -25,7 +25,7 @@ import { aF as CodingContext, aY as CodingModeConfig, aK as WearableConversation
25
25
  export { a2 as AgentAccessAuthToken, l as BriefingActiveThread, b1 as BriefingConfig, j as BriefingFocus, i as BriefingFollowup, b2 as BriefingOpenCommitment, n as BriefingRecentEntity, m as BriefingResult, h as BriefingSections, b3 as BriefingWindow, Y as BufferSurpriseEvent, b4 as BulkImportError, _ as BulkImportOptions, a0 as BulkImportResult, $ as BulkImportSource, b5 as BulkImportSourceAdapter, k as CalendarEvent, C as CalendarSource, b6 as CodexCompatConfig, aX as ConsolidationObservation, ag as ContinuityImprovementLoop, b7 as DEFAULT_RECALL_DISCLOSURE, E as EntityFile, ac as EntityStructuredSection, b8 as ExtractedFact, G as GatewayConfig, b9 as ImportSourceRole, Z as ImportTurn, ba as ImportTurnValidationIssue, al as MemoryActionEligibilityContext, bb as MemoryActionEligibilitySource, a6 as MemoryActionType, M as MemoryFile, p as MemoryFrontmatter, bc as MemoryObservation, bd as MemoryScope, be as RECALL_DISCLOSURE_LEVELS, R as RecallDisclosure, a1 as SecretRef, bf as WearableAuthCheck, bg as WearableFetchOptions, bh as WearableFetchPage, aN as WearableMemoryMode, aM as WearableNativeMemory, bi as WearableNativeMemoryPage, aR as WearableSourceStatus, aQ as WearableSyncSummary, bj as WearableTranscriptSegment, bk as isImportRole, bl as isRecallDisclosure, bm as parseIsoTimestamp, bn as validateImportTurn } from './types-DDUDgd7T.js';
26
26
  export { JudgeBatchResult, JudgeCandidate, JudgeVerdict, JudgeVerdictKind, clearVerdictCache, createVerdictCache, getVerdictKind, isDurableVerdict, isValidCachedVerdict, judgeFactDurability, normalizeCachedVerdict, verdictCacheSize } from './extraction-judge.js';
27
27
  export { hasBroadGraphIntent, inferIntentFromText, intentCompatibilityScore, isTaskInitiationIntent, planRecallMode } from './intent.js';
28
- export { G as EngramAccessInputError, F as EngramAccessService, P as ProcedureStatsConfigSnapshot, H as ProcedureStatsRecent, I as ProcedureStatsReport, J as ProcedureStatusCounts, K as computeProcedureStats, L as formatProcedureStatsText } from './access-service-DK7s3wMj.js';
28
+ export { G as EngramAccessInputError, F as EngramAccessService, P as ProcedureStatsConfigSnapshot, H as ProcedureStatsRecent, I as ProcedureStatsReport, J as ProcedureStatusCounts, K as computeProcedureStats, L as formatProcedureStatsText } from './access-service-BofDzaPT.js';
29
29
  export { FILTER_LABELS as DIRECT_ANSWER_FILTER_LABELS, DirectAnswerCandidate, DirectAnswerConfig, DirectAnswerInput, DirectAnswerReason, DirectAnswerResult, isDirectAnswerEligible } from './direct-answer.js';
30
30
  export { MemoryTier, TierRoutingPolicy, TierTransitionDecision, computeTierValueScore, decideTierTransition } from './tier-routing.js';
31
31
  export { ApplyReasoningTraceBoostOptions, BoostableResult, DEFAULT_REASONING_TRACE_BOOST, applyReasoningTraceBoost, isReasoningTracePath, looksLikeProblemSolvingQuery } from './reasoning-trace-recall.js';
@@ -81,7 +81,7 @@ export { a as TaxonomyCategory } from './types-DJhqDJUV.js';
81
81
  export { EnrichmentAuditEntry, EnrichmentCandidate, EnrichmentCostTier, EnrichmentPipelineConfig, EnrichmentProvider, EnrichmentProviderConfig, EnrichmentProviderRegistry, EnrichmentResult, EntityEnrichmentInput, WebSearchFn, WebSearchProvider, WebSearchProviderOptions, appendAuditEntry, defaultEnrichmentPipelineConfig, readAuditLog, runEnrichmentPipeline } from './enrichment/index.js';
82
82
  export { clearBulkImportSources, getBulkImportSource, listBulkImportSources, registerBulkImportSource } from './bulk-import/index.js';
83
83
  export { a as ProcessBatchContext, P as ProcessBatchFn, b as ProcessBatchResult, f as formatBatchTranscript, r as resolveBulkImportContext, c as runBulkImportPipeline, v as validateBatchSize } from './pipeline-CiD86zIk.js';
84
- export { B as BulkImportCliCommandOptions, p as parseStrictCliDate, r as runBulkImportCliCommand } from './cli-CLSdmOVU.js';
84
+ export { B as BulkImportCliCommandOptions, p as parseStrictCliDate, r as runBulkImportCliCommand } from './cli-3_x5sJTL.js';
85
85
  export { DEFAULT_IMPORT_BATCH_SIZE, ImportProgress, ImportedMemory, ImporterAdapter, ImporterParseOptions, ImporterTransformOptions, ImporterWriteResult, ImporterWriteTarget, RunImportOptions, RunImporterResult, defaultWriteMemoriesToOrchestrator, importedMemoryToTurn, runImporter, validateImportBatchSize, validateImportRateLimit } from './importers/index.js';
86
86
  export { FallbackLlmClient, FallbackLlmOptions, FallbackLlmResponse, FallbackLlmRuntimeContext } from './fallback-llm.js';
87
87
  export { ComputeMemoryWorthInput, MemoryWorthResult, computeMemoryWorth } from './memory-worth.js';
package/dist/index.js CHANGED
@@ -93,7 +93,7 @@ import {
93
93
  validateTaxonomy,
94
94
  watchForChanges,
95
95
  writeManifest
96
- } from "./chunk-4273YO6I.js";
96
+ } from "./chunk-5WJ4LBFR.js";
97
97
  import {
98
98
  WEARABLE_SOURCE_PREFIX,
99
99
  buildExtractionTurns,
@@ -348,7 +348,7 @@ import {
348
348
  registerTrainingExportAdapter,
349
349
  runBulkImportCliCommand,
350
350
  runWearablesCliCommand
351
- } from "./chunk-43VNWTBB.js";
351
+ } from "./chunk-3RROR5KV.js";
352
352
  import "./chunk-MMACM5G2.js";
353
353
  import "./chunk-54BGIBCR.js";
354
354
  import "./chunk-H4CKS5B2.js";
@@ -550,7 +550,7 @@ import "./chunk-K6MV3TRQ.js";
550
550
  import "./chunk-OADWQ5CR.js";
551
551
  import {
552
552
  EngramAccessHttpServer
553
- } from "./chunk-N6VIXDT7.js";
553
+ } from "./chunk-C2SEH754.js";
554
554
  import {
555
555
  WearablesInputError,
556
556
  describeErrorForOperator
@@ -564,7 +564,7 @@ import "./chunk-TMSXWOBZ.js";
564
564
  import "./chunk-7RXCMVFQ.js";
565
565
  import {
566
566
  EngramMcpServer
567
- } from "./chunk-QLYLTKUG.js";
567
+ } from "./chunk-XA4PWKBW.js";
568
568
  import "./chunk-IC2TCZJ2.js";
569
569
  import {
570
570
  buildCitationGuidance,
@@ -573,7 +573,7 @@ import {
573
573
  sanitizeNoteForCitation
574
574
  } from "./chunk-D24OXEPB.js";
575
575
  import "./chunk-5RUE3GHQ.js";
576
- import "./chunk-ARDRBJHD.js";
576
+ import "./chunk-SGYTQKC2.js";
577
577
  import {
578
578
  formatZodError,
579
579
  memoryStoreRequestSchema,
@@ -582,7 +582,7 @@ import {
582
582
  suggestionSubmitRequestSchema,
583
583
  validateRequest
584
584
  } from "./chunk-2MR3MFQB.js";
585
- import "./chunk-GXLFDLX2.js";
585
+ import "./chunk-IF7THCGJ.js";
586
586
  import "./chunk-HLTAPHZZ.js";
587
587
  import "./chunk-YF6FMLBT.js";
588
588
  import {
@@ -615,7 +615,7 @@ import {
615
615
  } from "./chunk-T4WDJPEZ.js";
616
616
  import {
617
617
  OPERATION_NAMES
618
- } from "./chunk-MRQN5Q3I.js";
618
+ } from "./chunk-EAREADWV.js";
619
619
  import {
620
620
  TOKEN_CAPABILITIES_VERSION,
621
621
  capabilityAllowsNamespace,
@@ -631,7 +631,7 @@ import {
631
631
  EngramAccessService,
632
632
  computeProcedureStats,
633
633
  formatProcedureStatsText
634
- } from "./chunk-YDF4HL3W.js";
634
+ } from "./chunk-5BHIGBHQ.js";
635
635
  import "./chunk-GDASG7NC.js";
636
636
  import "./chunk-GDB4J2H3.js";
637
637
  import "./chunk-M5QKGHCR.js";
@@ -1,11 +1,11 @@
1
- import { x as EngramAccessRecallResponse } from './access-service-DK7s3wMj.js';
1
+ import { x as EngramAccessRecallResponse } from './access-service-BofDzaPT.js';
2
2
  import { ActionConfidenceRequest } from './access-schema.js';
3
3
  import { RecallXraySnapshot } from './recall-xray.js';
4
4
  import { ActionConfidenceResult } from './action-confidence.js';
5
5
  import './catalog-9WanSGtt.js';
6
6
  import './types-DDUDgd7T.js';
7
7
  import './message-parts/index.js';
8
- import './orchestrator-BzXGNHco.js';
8
+ import './orchestrator-CAH5-PKN.js';
9
9
  import './briefing.js';
10
10
  import './storage-DxPDAiU9.js';
11
11
  import './page-versioning.js';
@@ -2243,6 +2243,8 @@ declare class Orchestrator {
2243
2243
  * capturing caller can still read their snapshot back.
2244
2244
  */
2245
2245
  private lastXraySnapshot;
2246
+ /** Per-instance ordering domain for every writer of `lastXraySnapshot`. */
2247
+ private readonly xrayCaptureQueue;
2246
2248
  readonly embeddingFallback: EmbeddingFallback;
2247
2249
  private readonly conversationIndexDir;
2248
2250
  private readonly extraction;
@@ -2638,17 +2640,32 @@ declare class Orchestrator {
2638
2640
  checkpointHealthy: boolean;
2639
2641
  }>;
2640
2642
  private validateLocalLlmModel;
2643
+ private invokeRecall;
2641
2644
  recall(prompt: string, sessionKey?: string, options?: RecallInvocationOptions): Promise<string>;
2642
2645
  /**
2643
- * Return the most recent X-ray snapshot captured during a
2644
- * `recall()` call that passed `xrayCapture: true` (issue #570 PR 1).
2646
+ * Return the most recent X-ray snapshot captured during a recall.
2645
2647
  * Returns `null` when no such capture has occurred on this
2646
2648
  * orchestrator instance. Returned snapshot is a deep copy so
2647
2649
  * caller mutation cannot tear the stored value.
2650
+ *
2651
+ * @deprecated Reading this after a separate `recall()` is not atomic. Use
2652
+ * `recallWithXrayCapture()` when the snapshot must belong to that call.
2648
2653
  */
2649
2654
  getLastXraySnapshot(): RecallXraySnapshot | null;
2650
- /** Clear the captured X-ray snapshot. Exposed for tests / explicit reset. */
2655
+ /**
2656
+ * Clear the captured X-ray snapshot. Exposed for tests / explicit reset.
2657
+ *
2658
+ * @deprecated A separate clear → recall → get sequence is not atomic. Use
2659
+ * `recallWithXrayCapture()` for capture operations.
2660
+ */
2651
2661
  clearLastXraySnapshot(): void;
2662
+ /** Atomically run recall and return the cloned X-ray snapshot it published. */
2663
+ recallWithXrayCapture(prompt: string, sessionKey?: string, options?: Omit<RecallInvocationOptions, "xrayCapture">): Promise<{
2664
+ result: string;
2665
+ snapshot: RecallXraySnapshot | null;
2666
+ recallStartedAt: number;
2667
+ }>;
2668
+ private runRecallWithXrayCapture;
2652
2669
  waitForDirectAnswerObservationIdle(timeoutMs?: number): Promise<boolean>;
2653
2670
  private enqueueDirectAnswerObservation;
2654
2671
  private annotateDirectAnswerTier;
@@ -8,7 +8,7 @@ import './summarizer.js';
8
8
  import './local-llm.js';
9
9
  import './fallback-llm.js';
10
10
  import './orchestration/maintenance.js';
11
- export { U as BulkImportBatchIngestResult, V as BulkImportBatchPartialFailureError, X as COMPACTION_SIGNAL_MAX_AGE_MS, Y as DaySummaryGatherOptions, Z as ExtractionRunResult, _ as GraphRecallRankedResult, $ as GraphRecallShadowComparison, G as GraphRecallSnapshot, I as IntentDebugSnapshot, O as Orchestrator, a0 as QmdRecallSnapshot, a1 as QueryAwarePrefilter, a2 as RecallInvocationOptions, a3 as RecallModeDecision, a4 as appendMemoryToGraphContext, a5 as applyQueryAwareCandidateFilter, a6 as blendGraphExpandedRecallScore, a7 as buildCompressionGuidelinesMarkdown, a8 as buildMemoryPathById, a9 as computeArtifactCandidateFetchLimit, aa as computeArtifactRecallLimit, ab as computeQmdHybridFetchLimit, t as defaultWorkspaceDir, ac as deriveTopicsFromExtraction, ad as filterHourlySummaryMarkdownForLocalDay, ae as filterRecallCandidates, af as formatDateInTimeZone, ag as graphPathRelativeToStorage, ah as hasIdentityRecoveryIntent, ai as isArtifactMemoryPath, aj as lifecycleRecallScoreAdjustment, ak as mapRecallSourceToXrayServedBy, al as mergeArtifactRecallCandidates, am as mergeGraphExpandedResults, an as normalizeIanaTimeZone, ao as parseFiniteDate, ap as parseGraphRecallRankedResults, aq as parseMemoryIntentSnapshot, ar as parseQmdRecallResults, as as qmdStartupCollectionCheckWithTimeout, at as raceRecallAbort, au as resolveEffectiveIdentityInjectionMode, av as resolveEffectiveRecallMode, aw as resolvePersistedMemoryRelativePath, ax as resolveRecallModeDecision, ay as resolveRecallModeDecisionAsync, az as resolveRecentThreadMemoryPaths, F as sanitizeSessionKeyForFilename, aA as shouldFilterLifecycleRecallCandidate, aB as splitTurnsBySourceValidAt, aC as summarizeGraphShadowComparison, aD as targetSourceValidAtSortMs, aE as throwIfRecallAborted, aF as tokenizeRecallQuery, aG as utcDateKeysForLocalDay } from './orchestrator-BzXGNHco.js';
11
+ export { U as BulkImportBatchIngestResult, V as BulkImportBatchPartialFailureError, X as COMPACTION_SIGNAL_MAX_AGE_MS, Y as DaySummaryGatherOptions, Z as ExtractionRunResult, _ as GraphRecallRankedResult, $ as GraphRecallShadowComparison, G as GraphRecallSnapshot, I as IntentDebugSnapshot, O as Orchestrator, a0 as QmdRecallSnapshot, a1 as QueryAwarePrefilter, a2 as RecallInvocationOptions, a3 as RecallModeDecision, a4 as appendMemoryToGraphContext, a5 as applyQueryAwareCandidateFilter, a6 as blendGraphExpandedRecallScore, a7 as buildCompressionGuidelinesMarkdown, a8 as buildMemoryPathById, a9 as computeArtifactCandidateFetchLimit, aa as computeArtifactRecallLimit, ab as computeQmdHybridFetchLimit, t as defaultWorkspaceDir, ac as deriveTopicsFromExtraction, ad as filterHourlySummaryMarkdownForLocalDay, ae as filterRecallCandidates, af as formatDateInTimeZone, ag as graphPathRelativeToStorage, ah as hasIdentityRecoveryIntent, ai as isArtifactMemoryPath, aj as lifecycleRecallScoreAdjustment, ak as mapRecallSourceToXrayServedBy, al as mergeArtifactRecallCandidates, am as mergeGraphExpandedResults, an as normalizeIanaTimeZone, ao as parseFiniteDate, ap as parseGraphRecallRankedResults, aq as parseMemoryIntentSnapshot, ar as parseQmdRecallResults, as as qmdStartupCollectionCheckWithTimeout, at as raceRecallAbort, au as resolveEffectiveIdentityInjectionMode, av as resolveEffectiveRecallMode, aw as resolvePersistedMemoryRelativePath, ax as resolveRecallModeDecision, ay as resolveRecallModeDecisionAsync, az as resolveRecentThreadMemoryPaths, F as sanitizeSessionKeyForFilename, aA as shouldFilterLifecycleRecallCandidate, aB as splitTurnsBySourceValidAt, aC as summarizeGraphShadowComparison, aD as targetSourceValidAtSortMs, aE as throwIfRecallAborted, aF as tokenizeRecallQuery, aG as utcDateKeysForLocalDay } from './orchestrator-CAH5-PKN.js';
12
12
  export { formatCompressionGuidelinesForRecall } from './orchestration/compression-guideline-coordinator.js';
13
13
  import './live-connectors-runner.js';
14
14
  import './model-registry.js';
@@ -43,7 +43,7 @@ import {
43
43
  throwIfRecallAborted,
44
44
  tokenizeRecallQuery,
45
45
  utcDateKeysForLocalDay
46
- } from "./chunk-4273YO6I.js";
46
+ } from "./chunk-5WJ4LBFR.js";
47
47
  import "./chunk-J3XHPFEU.js";
48
48
  import {
49
49
  formatCompressionGuidelinesForRecall
@@ -126,7 +126,7 @@ import "./chunk-Q6IP2ARR.js";
126
126
  import "./chunk-6HEM6HTQ.js";
127
127
  import "./chunk-O2EL7EGG.js";
128
128
  import "./chunk-FVTLSFWU.js";
129
- import "./chunk-43VNWTBB.js";
129
+ import "./chunk-3RROR5KV.js";
130
130
  import "./chunk-MMACM5G2.js";
131
131
  import "./chunk-54BGIBCR.js";
132
132
  import "./chunk-H4CKS5B2.js";
@@ -217,7 +217,7 @@ import "./chunk-G6NKALRN.js";
217
217
  import "./chunk-OO42R444.js";
218
218
  import "./chunk-K6MV3TRQ.js";
219
219
  import "./chunk-OADWQ5CR.js";
220
- import "./chunk-N6VIXDT7.js";
220
+ import "./chunk-C2SEH754.js";
221
221
  import "./chunk-V7IZKJI3.js";
222
222
  import "./chunk-SEDEKFYQ.js";
223
223
  import "./chunk-RKNJBZ55.js";
@@ -226,13 +226,13 @@ import "./chunk-RSUYKGGZ.js";
226
226
  import "./chunk-42NQ7AVG.js";
227
227
  import "./chunk-TMSXWOBZ.js";
228
228
  import "./chunk-7RXCMVFQ.js";
229
- import "./chunk-QLYLTKUG.js";
229
+ import "./chunk-XA4PWKBW.js";
230
230
  import "./chunk-IC2TCZJ2.js";
231
231
  import "./chunk-D24OXEPB.js";
232
232
  import "./chunk-5RUE3GHQ.js";
233
- import "./chunk-ARDRBJHD.js";
233
+ import "./chunk-SGYTQKC2.js";
234
234
  import "./chunk-2MR3MFQB.js";
235
- import "./chunk-GXLFDLX2.js";
235
+ import "./chunk-IF7THCGJ.js";
236
236
  import "./chunk-HLTAPHZZ.js";
237
237
  import "./chunk-YF6FMLBT.js";
238
238
  import "./chunk-PRTA6444.js";
@@ -240,9 +240,9 @@ import "./chunk-KQDNAXOM.js";
240
240
  import "./chunk-35NN3ZFA.js";
241
241
  import "./chunk-FTYDWKO6.js";
242
242
  import "./chunk-T4WDJPEZ.js";
243
- import "./chunk-MRQN5Q3I.js";
243
+ import "./chunk-EAREADWV.js";
244
244
  import "./chunk-D7FOKIY5.js";
245
- import "./chunk-YDF4HL3W.js";
245
+ import "./chunk-5BHIGBHQ.js";
246
246
  import "./chunk-GDASG7NC.js";
247
247
  import "./chunk-GDB4J2H3.js";
248
248
  import "./chunk-M5QKGHCR.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.6.28",
3
+ "version": "9.6.29",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -3000,7 +3000,7 @@
3000
3000
  "core"
3001
3001
  ],
3002
3002
  "peerDependencies": {
3003
- "@remnic/coding-graph": "^9.6.28"
3003
+ "@remnic/coding-graph": "^9.6.29"
3004
3004
  },
3005
3005
  "peerDependenciesMeta": {
3006
3006
  "@remnic/coding-graph": {
@@ -14,6 +14,7 @@
14
14
  import { createHash } from "node:crypto";
15
15
  import * as nodePath from "node:path";
16
16
  import { AccessAuditAdapter, type AccessAuditResult } from "./access-audit.js";
17
+ import { throwIfAborted } from "./abort-error.js";
17
18
  import { resolveNamespaceCapabilities } from "./capabilities.js";
18
19
  import { resolveCodingNamespaceOverlay } from "./coding/coding-namespace.js";
19
20
  import { type BudgetDecision, CrossNamespaceBudget } from "./cross-namespace-budget.js";
@@ -173,7 +174,6 @@ export interface AccessRecallSurfaceDeps {
173
174
  primaryNamespace: string,
174
175
  recallNamespaces?: readonly string[],
175
176
  ): Promise<{ storage: StorageManager; dir: string } | null>;
176
- xrayQueue: Promise<void>;
177
177
  }
178
178
 
179
179
  export class AccessRecallSurface {
@@ -1117,6 +1117,8 @@ export class AccessRecallSurface {
1117
1117
  * regular X-ray API/CLI/MCP surfaces keep their existing payload shape.
1118
1118
  */
1119
1119
  includeRecall?: boolean;
1120
+ /** Cancel the capture before it starts and propagate cancellation to recall. */
1121
+ abortSignal?: AbortSignal;
1120
1122
  }): Promise<{
1121
1123
  snapshotFound: boolean;
1122
1124
  snapshot?: RecallXraySnapshot;
@@ -1195,21 +1197,9 @@ export class AccessRecallSurface {
1195
1197
  const mode = this.deps.normalizeRecallMode(request.mode);
1196
1198
  const disclosure = request.disclosure ?? DEFAULT_RECALL_DISCLOSURE;
1197
1199
 
1198
- // Serialize x-ray invocations behind a per-service mutex so the
1199
- // per-process `getLastXraySnapshot()` slot cannot be clobbered by
1200
- // a concurrent capturing call before this caller reads it back.
1201
- // Budget and principal are now threaded through
1202
- // `RecallInvocationOptions`, so global config mutation is gone
1203
- // (CLAUDE.md rule 47: no shared mutable state across async
1204
- // boundaries). The mutex stays only for the snapshot-slot
1205
- // ordering guarantee.
1206
- const previousQueue = this.deps.xrayQueue;
1207
- let release: () => void = () => {};
1208
- this.deps.xrayQueue = new Promise<void>((resolve) => {
1209
- release = resolve;
1210
- });
1211
- await previousQueue;
1212
- const recallStartedAt = Date.now();
1200
+ // Reset when the orchestrator-owned snapshot lock is actually acquired so
1201
+ // queue wait is not misreported as recall latency.
1202
+ let recallStartedAt = Date.now();
1213
1203
 
1214
1204
  const recallSessionKey = request.sessionKey?.trim() || undefined;
1215
1205
  let xrayResponse: {
@@ -1217,37 +1207,46 @@ export class AccessRecallSurface {
1217
1207
  snapshot?: RecallXraySnapshot;
1218
1208
  } = { snapshotFound: false };
1219
1209
 
1220
- try {
1221
- // Clear any prior snapshot so a capture failure surfaces as
1222
- // `{snapshotFound: false}` rather than returning stale data
1223
- // from an earlier call on the same orchestrator.
1224
- this.deps.orchestrator.clearLastXraySnapshot();
1225
- await this.deps.orchestrator.recall(query, recallSessionKey, {
1226
- xrayCapture: true,
1227
- ...(requestedNamespace ? { namespace: requestedNamespace } : {}),
1228
- ...(budgetOverride !== undefined
1229
- ? { budgetCharsOverride: budgetOverride }
1230
- : {}),
1231
- ...(mode !== undefined ? { mode } : {}),
1232
- // When the caller supplies an authenticated principal, forward
1233
- // it via the dedicated override channel so orchestrator-side
1234
- // ACL decisions use the SAME principal the access-surface
1235
- // pre-check above authorized. Threading an
1236
- // `authenticatedPrincipal` through `sessionKey` would be wrong:
1237
- // `resolvePrincipal(sessionKey)` only maps configured raw
1238
- // session keys and otherwise collapses to `"default"`, which
1239
- // in namespace-enabled deployments produces false denials /
1240
- // wrong-scope serving despite the pre-check passing
1241
- // (CLAUDE.md rule 42).
1242
- ...(authenticatedPrincipal
1243
- ? { principalOverride: authenticatedPrincipal }
1244
- : {}),
1245
- ...(request.currentContextScopes !== undefined
1246
- ? { currentContextScopes: request.currentContextScopes }
1247
- : {}),
1248
- });
1249
-
1250
- const rawSnapshot = this.deps.orchestrator.getLastXraySnapshot();
1210
+ {
1211
+ // Capture through the orchestrator-owned critical section so every
1212
+ // consumer of its mutable snapshot slot shares the same queue. The
1213
+ // returned clone remains owned by this call after the lock is released.
1214
+ const {
1215
+ snapshot: rawSnapshot,
1216
+ recallStartedAt: capturedRecallStartedAt,
1217
+ } = await this.deps.orchestrator.recallWithXrayCapture(
1218
+ query,
1219
+ recallSessionKey,
1220
+ {
1221
+ ...(requestedNamespace ? { namespace: requestedNamespace } : {}),
1222
+ ...(budgetOverride !== undefined
1223
+ ? { budgetCharsOverride: budgetOverride }
1224
+ : {}),
1225
+ ...(mode !== undefined ? { mode } : {}),
1226
+ // When the caller supplies an authenticated principal, forward
1227
+ // it via the dedicated override channel so orchestrator-side
1228
+ // ACL decisions use the SAME principal the access-surface
1229
+ // pre-check above authorized. Threading an
1230
+ // `authenticatedPrincipal` through `sessionKey` would be wrong:
1231
+ // `resolvePrincipal(sessionKey)` only maps configured raw
1232
+ // session keys and otherwise collapses to `"default"`, which
1233
+ // in namespace-enabled deployments produces false denials /
1234
+ // wrong-scope serving despite the pre-check passing
1235
+ // (CLAUDE.md rule 42).
1236
+ ...(authenticatedPrincipal
1237
+ ? { principalOverride: authenticatedPrincipal }
1238
+ : {}),
1239
+ ...(request.currentContextScopes !== undefined
1240
+ ? { currentContextScopes: request.currentContextScopes }
1241
+ : {}),
1242
+ ...(request.abortSignal ? { abortSignal: request.abortSignal } : {}),
1243
+ },
1244
+ );
1245
+ recallStartedAt = capturedRecallStartedAt;
1246
+ // Cancellation covers queueing + recall/capture. Post-capture shaping is
1247
+ // intentionally not wired for mid-I/O abort in this change, but do not
1248
+ // begin that work after the caller has already canceled.
1249
+ throwIfAborted(request.abortSignal, "recall X-ray aborted before postprocessing");
1251
1250
  // Re-check namespace after capture: the recall may have served
1252
1251
  // from a different namespace than the caller requested. Drop
1253
1252
  // the snapshot rather than leak cross-tenant data (CLAUDE.md
@@ -1483,8 +1482,6 @@ export class AccessRecallSurface {
1483
1482
  };
1484
1483
  }
1485
1484
  }
1486
- } finally {
1487
- release();
1488
1485
  }
1489
1486
 
1490
1487
  if (