@remnic/core 9.3.665 → 9.3.667

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 (150) hide show
  1. package/dist/access-audit.js +2 -2
  2. package/dist/access-cli.js +41 -40
  3. package/dist/access-cli.js.map +1 -1
  4. package/dist/access-http.d.ts +3 -2
  5. package/dist/access-http.js +25 -25
  6. package/dist/access-mcp.d.ts +3 -2
  7. package/dist/access-mcp.js +22 -22
  8. package/dist/access-schema.d.ts +36 -36
  9. package/dist/access-schema.js +3 -3
  10. package/dist/{access-service-D0SLB4MH.d.ts → access-service-BCuaiNHa.d.ts} +1 -1
  11. package/dist/access-service.d.ts +3 -2
  12. package/dist/access-service.js +21 -21
  13. package/dist/adapters/index.js +4 -4
  14. package/dist/adapters/registry.js +2 -2
  15. package/dist/bootstrap.d.ts +2 -1
  16. package/dist/briefing.js +4 -3
  17. package/dist/capabilities.d.ts +73 -0
  18. package/dist/capabilities.js +8 -0
  19. package/dist/capabilities.js.map +1 -0
  20. package/dist/causal-behavior.js +2 -2
  21. package/dist/causal-chain.js +2 -2
  22. package/dist/causal-consolidation.js +7 -6
  23. package/dist/causal-consolidation.js.map +1 -1
  24. package/dist/causal-retrieval.js +2 -2
  25. package/dist/causal-trajectory.js +1 -1
  26. package/dist/{chunk-ROHLEUTH.js → chunk-23EBQ27U.js} +5 -5
  27. package/dist/{chunk-YW52BQSU.js → chunk-2TCHDANJ.js} +2 -2
  28. package/dist/{chunk-IROWLAWG.js → chunk-46WUVFOD.js} +4 -4
  29. package/dist/{chunk-WH4SKYPX.js → chunk-4FJKKC2N.js} +107 -77
  30. package/dist/chunk-4FJKKC2N.js.map +1 -0
  31. package/dist/{chunk-7C4MPEPE.js → chunk-4T7P2HLJ.js} +3 -3
  32. package/dist/{chunk-7XH7VJN4.js → chunk-6T4LTI2F.js} +4 -4
  33. package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
  34. package/dist/{chunk-BZG2CWOQ.js → chunk-A5TEHAR4.js} +3 -3
  35. package/dist/{chunk-C7AF236A.js → chunk-AARDBQTA.js} +2 -2
  36. package/dist/{chunk-IHG6CC7T.js → chunk-BQJUPECT.js} +2 -2
  37. package/dist/{chunk-7OGJQP7T.js → chunk-CRO4LCQ6.js} +5 -5
  38. package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
  39. package/dist/{chunk-UXA5L2DZ.js → chunk-HQCGRSRU.js} +2 -2
  40. package/dist/{chunk-RKNJBZ55.js → chunk-JBPKEARU.js} +4 -4
  41. package/dist/{chunk-XW3W4PV4.js → chunk-JTPXSXHC.js} +2 -2
  42. package/dist/{chunk-OHJFJ4HI.js → chunk-KOXGLQS7.js} +2 -2
  43. package/dist/{chunk-2OPARZ4B.js → chunk-MPXYHC35.js} +26 -26
  44. package/dist/{chunk-6JBKHTQD.js → chunk-MR4PJ277.js} +2 -2
  45. package/dist/{chunk-EXXBA5OM.js → chunk-OI4BXFSB.js} +4 -4
  46. package/dist/{chunk-SQZ42MKH.js → chunk-OQH5XUH3.js} +6 -3
  47. package/dist/chunk-OQH5XUH3.js.map +1 -0
  48. package/dist/{chunk-2HEZXPYU.js → chunk-Q2LQZYQ7.js} +3 -3
  49. package/dist/{chunk-XRSIGVTS.js → chunk-QHWJG5C5.js} +8 -8
  50. package/dist/{chunk-T2AN3BSP.js → chunk-QZ7ODIVL.js} +2 -2
  51. package/dist/chunk-RI5XBIZ6.js +23 -0
  52. package/dist/chunk-RI5XBIZ6.js.map +1 -0
  53. package/dist/{chunk-D7IXTY5E.js → chunk-TJ7HH5LB.js} +2 -2
  54. package/dist/{chunk-V25ZAOSB.js → chunk-UOBLE67F.js} +4 -4
  55. package/dist/{chunk-JIX3ZL2J.js → chunk-UVUTV7CM.js} +15 -15
  56. package/dist/{chunk-VH6EIKVS.js → chunk-WKMCC4NQ.js} +35 -16
  57. package/dist/chunk-WKMCC4NQ.js.map +1 -0
  58. package/dist/{chunk-SSOMTUCA.js → chunk-WXGTC424.js} +1 -1
  59. package/dist/{chunk-KHGE6PMF.js → chunk-WXXLSZHA.js} +2 -2
  60. package/dist/{chunk-DSLUOQDY.js → chunk-XMWF6AU3.js} +2 -2
  61. package/dist/{chunk-DQY7NJ5L.js → chunk-XS2CWEHZ.js} +2 -2
  62. package/dist/{cli-BQRqR9N-.d.ts → cli-C98xlwYA.d.ts} +2 -2
  63. package/dist/cli.d.ts +4 -3
  64. package/dist/cli.js +42 -42
  65. package/dist/compounding/engine.js +4 -3
  66. package/dist/connectors/codex-materialize-runner.js +4 -3
  67. package/dist/connectors/index.js +4 -3
  68. package/dist/consolidation-provenance-check.js +2 -2
  69. package/dist/conversation-index/backend.js +2 -2
  70. package/dist/dashboard-runtime.js +2 -2
  71. package/dist/direct-answer-wiring.d.ts +13 -3
  72. package/dist/direct-answer-wiring.js +1 -1
  73. package/dist/entity-retrieval.js +4 -3
  74. package/dist/explicit-capture.d.ts +2 -1
  75. package/dist/index.d.ts +5 -4
  76. package/dist/index.js +66 -65
  77. package/dist/index.js.map +1 -1
  78. package/dist/lcm/engine.js +2 -2
  79. package/dist/lcm/index.js +4 -4
  80. package/dist/maintenance/memory-governance.js +4 -4
  81. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +4 -3
  82. package/dist/maintenance/rebuild-memory-projection.js +5 -5
  83. package/dist/mcp-memory-inspector-app.d.ts +3 -2
  84. package/dist/namespaces/migrate.js +11 -11
  85. package/dist/namespaces/search.js +7 -7
  86. package/dist/namespaces/storage.js +4 -3
  87. package/dist/operator-toolkit.js +15 -15
  88. package/dist/{orchestrator-Cg1UkvmO.d.ts → orchestrator-DyP9QYsh.d.ts} +16 -0
  89. package/dist/orchestrator.d.ts +2 -1
  90. package/dist/orchestrator.js +32 -31
  91. package/dist/recall-planner-llm.d.ts +2 -1
  92. package/dist/recall-planner-llm.js +3 -2
  93. package/dist/recall-planner-llm.js.map +1 -1
  94. package/dist/schemas.d.ts +64 -64
  95. package/dist/search/factory.js +6 -6
  96. package/dist/search/index.js +10 -10
  97. package/dist/search/lancedb-backend.js +1 -1
  98. package/dist/search/meilisearch-backend.js +1 -1
  99. package/dist/search/orama-backend.js +1 -1
  100. package/dist/semantic-consolidation.js +5 -4
  101. package/dist/semantic-rule-promotion.js +4 -3
  102. package/dist/semantic-rule-verifier.js +4 -3
  103. package/dist/shared-context/manager.d.ts +2 -2
  104. package/dist/storage.js +3 -2
  105. package/dist/transfer/backup.js +2 -2
  106. package/dist/transfer/capsule-export.js +2 -2
  107. package/dist/transfer/capsule-import.js +1 -1
  108. package/dist/transfer/types.d.ts +12 -12
  109. package/dist/verified-recall.js +4 -3
  110. package/package.json +1 -1
  111. package/src/capabilities.test.ts +97 -0
  112. package/src/capabilities.ts +86 -0
  113. package/src/direct-answer-wiring.test.ts +53 -2
  114. package/src/direct-answer-wiring.ts +18 -5
  115. package/src/orchestrator.ts +83 -22
  116. package/src/recall-planner-llm.test.ts +12 -11
  117. package/src/recall-planner-llm.ts +7 -1
  118. package/src/storage-fallback-category-dirs.test.ts +150 -1
  119. package/src/storage.ts +51 -14
  120. package/dist/chunk-SQZ42MKH.js.map +0 -1
  121. package/dist/chunk-VH6EIKVS.js.map +0 -1
  122. package/dist/chunk-WH4SKYPX.js.map +0 -1
  123. /package/dist/{chunk-ROHLEUTH.js.map → chunk-23EBQ27U.js.map} +0 -0
  124. /package/dist/{chunk-YW52BQSU.js.map → chunk-2TCHDANJ.js.map} +0 -0
  125. /package/dist/{chunk-IROWLAWG.js.map → chunk-46WUVFOD.js.map} +0 -0
  126. /package/dist/{chunk-7C4MPEPE.js.map → chunk-4T7P2HLJ.js.map} +0 -0
  127. /package/dist/{chunk-7XH7VJN4.js.map → chunk-6T4LTI2F.js.map} +0 -0
  128. /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
  129. /package/dist/{chunk-BZG2CWOQ.js.map → chunk-A5TEHAR4.js.map} +0 -0
  130. /package/dist/{chunk-C7AF236A.js.map → chunk-AARDBQTA.js.map} +0 -0
  131. /package/dist/{chunk-IHG6CC7T.js.map → chunk-BQJUPECT.js.map} +0 -0
  132. /package/dist/{chunk-7OGJQP7T.js.map → chunk-CRO4LCQ6.js.map} +0 -0
  133. /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
  134. /package/dist/{chunk-UXA5L2DZ.js.map → chunk-HQCGRSRU.js.map} +0 -0
  135. /package/dist/{chunk-RKNJBZ55.js.map → chunk-JBPKEARU.js.map} +0 -0
  136. /package/dist/{chunk-XW3W4PV4.js.map → chunk-JTPXSXHC.js.map} +0 -0
  137. /package/dist/{chunk-OHJFJ4HI.js.map → chunk-KOXGLQS7.js.map} +0 -0
  138. /package/dist/{chunk-2OPARZ4B.js.map → chunk-MPXYHC35.js.map} +0 -0
  139. /package/dist/{chunk-6JBKHTQD.js.map → chunk-MR4PJ277.js.map} +0 -0
  140. /package/dist/{chunk-EXXBA5OM.js.map → chunk-OI4BXFSB.js.map} +0 -0
  141. /package/dist/{chunk-2HEZXPYU.js.map → chunk-Q2LQZYQ7.js.map} +0 -0
  142. /package/dist/{chunk-XRSIGVTS.js.map → chunk-QHWJG5C5.js.map} +0 -0
  143. /package/dist/{chunk-T2AN3BSP.js.map → chunk-QZ7ODIVL.js.map} +0 -0
  144. /package/dist/{chunk-D7IXTY5E.js.map → chunk-TJ7HH5LB.js.map} +0 -0
  145. /package/dist/{chunk-V25ZAOSB.js.map → chunk-UOBLE67F.js.map} +0 -0
  146. /package/dist/{chunk-JIX3ZL2J.js.map → chunk-UVUTV7CM.js.map} +0 -0
  147. /package/dist/{chunk-SSOMTUCA.js.map → chunk-WXGTC424.js.map} +0 -0
  148. /package/dist/{chunk-KHGE6PMF.js.map → chunk-WXXLSZHA.js.map} +0 -0
  149. /package/dist/{chunk-DSLUOQDY.js.map → chunk-XMWF6AU3.js.map} +0 -0
  150. /package/dist/{chunk-DQY7NJ5L.js.map → chunk-XS2CWEHZ.js.map} +0 -0
@@ -3,8 +3,8 @@ import {
3
3
  } from "../chunk-DOCTITOP.js";
4
4
  import "../chunk-AER6MT24.js";
5
5
  import "../chunk-CINZGPSJ.js";
6
- import "../chunk-5GPPACXK.js";
7
6
  import "../chunk-YNQ6DFSV.js";
7
+ import "../chunk-5GPPACXK.js";
8
8
  import "../chunk-2ODBA7MQ.js";
9
9
  import "../chunk-PVGDJXVK.js";
10
10
  import "../chunk-VS2IYZRU.js";
@@ -4,8 +4,8 @@ import {
4
4
  } from "../chunk-Q5ZU3RNY.js";
5
5
  import "../chunk-AER6MT24.js";
6
6
  import "../chunk-CINZGPSJ.js";
7
- import "../chunk-5GPPACXK.js";
8
7
  import "../chunk-YNQ6DFSV.js";
8
+ import "../chunk-5GPPACXK.js";
9
9
  import "../chunk-2ODBA7MQ.js";
10
10
  import "../chunk-PVGDJXVK.js";
11
11
  import "../chunk-VS2IYZRU.js";
@@ -7,16 +7,17 @@ import {
7
7
  materializeAfterSemanticConsolidation,
8
8
  parseConsolidationResponse,
9
9
  parseOperatorAwareConsolidationResponse
10
- } from "./chunk-XW3W4PV4.js";
11
- import "./chunk-C7AF236A.js";
10
+ } from "./chunk-JTPXSXHC.js";
11
+ import "./chunk-AARDBQTA.js";
12
12
  import "./chunk-LN4YGHTM.js";
13
13
  import {
14
14
  resolveExtensionsRoot
15
15
  } from "./chunk-JLNBQWZ2.js";
16
16
  import "./chunk-3UXOZBHV.js";
17
- import "./chunk-VH6EIKVS.js";
17
+ import "./chunk-WKMCC4NQ.js";
18
18
  import "./chunk-M7XQSUBB.js";
19
19
  import "./chunk-5UZXUTVO.js";
20
+ import "./chunk-5GPPACXK.js";
20
21
  import "./chunk-J6A3CX5N.js";
21
22
  import "./chunk-AZBV4RRY.js";
22
23
  import "./chunk-AWJ2FHCF.js";
@@ -28,13 +29,13 @@ import "./chunk-6KYMPV2O.js";
28
29
  import "./chunk-DM2T26WE.js";
29
30
  import "./chunk-LDXUBPMO.js";
30
31
  import "./chunk-FVQJYWH7.js";
32
+ import "./chunk-VF4XKTX3.js";
31
33
  import {
32
34
  CONSOLIDATION_OPERATORS,
33
35
  isConsolidationOperator,
34
36
  isSemanticConsolidationLlmOperator,
35
37
  isValidDerivedFromEntry
36
38
  } from "./chunk-G7D6GZ5J.js";
37
- import "./chunk-VF4XKTX3.js";
38
39
  import "./chunk-U3PN77QT.js";
39
40
  import "./chunk-4DJQYKMN.js";
40
41
  import "./chunk-EYIEWJNI.js";
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  promoteSemanticRuleFromMemory,
3
3
  setSemanticRulePromotionTestHooks
4
- } from "./chunk-IHG6CC7T.js";
5
- import "./chunk-VH6EIKVS.js";
4
+ } from "./chunk-BQJUPECT.js";
5
+ import "./chunk-WKMCC4NQ.js";
6
6
  import "./chunk-M7XQSUBB.js";
7
7
  import "./chunk-5UZXUTVO.js";
8
+ import "./chunk-5GPPACXK.js";
8
9
  import "./chunk-J6A3CX5N.js";
9
10
  import "./chunk-AZBV4RRY.js";
10
11
  import "./chunk-AWJ2FHCF.js";
@@ -16,8 +17,8 @@ import "./chunk-6KYMPV2O.js";
16
17
  import "./chunk-DM2T26WE.js";
17
18
  import "./chunk-LDXUBPMO.js";
18
19
  import "./chunk-FVQJYWH7.js";
19
- import "./chunk-G7D6GZ5J.js";
20
20
  import "./chunk-VF4XKTX3.js";
21
+ import "./chunk-G7D6GZ5J.js";
21
22
  import "./chunk-4DJQYKMN.js";
22
23
  import "./chunk-2ODBA7MQ.js";
23
24
  import "./chunk-J2HSAU72.js";
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  compareVerifiedSemanticRuleResults,
3
3
  searchVerifiedSemanticRules
4
- } from "./chunk-DSLUOQDY.js";
5
- import "./chunk-VH6EIKVS.js";
4
+ } from "./chunk-XMWF6AU3.js";
5
+ import "./chunk-WKMCC4NQ.js";
6
6
  import "./chunk-M7XQSUBB.js";
7
7
  import "./chunk-5UZXUTVO.js";
8
+ import "./chunk-5GPPACXK.js";
8
9
  import "./chunk-J6A3CX5N.js";
9
10
  import "./chunk-AZBV4RRY.js";
10
11
  import "./chunk-AWJ2FHCF.js";
@@ -16,8 +17,8 @@ import "./chunk-6KYMPV2O.js";
16
17
  import "./chunk-DM2T26WE.js";
17
18
  import "./chunk-LDXUBPMO.js";
18
19
  import "./chunk-FVQJYWH7.js";
19
- import "./chunk-G7D6GZ5J.js";
20
20
  import "./chunk-VF4XKTX3.js";
21
+ import "./chunk-G7D6GZ5J.js";
21
22
  import "./chunk-4DJQYKMN.js";
22
23
  import "./chunk-ZBJMUXZH.js";
23
24
  import "./chunk-2ODBA7MQ.js";
@@ -22,9 +22,9 @@ declare const SharedFeedbackEntrySchema: z.ZodObject<{
22
22
  date: string;
23
23
  agent: string;
24
24
  reason: string;
25
- confidence?: number | undefined;
26
25
  workflow?: string | undefined;
27
26
  tags?: string[] | undefined;
27
+ confidence?: number | undefined;
28
28
  severity?: "high" | "low" | "medium" | undefined;
29
29
  outcome?: string | undefined;
30
30
  refs?: string[] | undefined;
@@ -36,9 +36,9 @@ declare const SharedFeedbackEntrySchema: z.ZodObject<{
36
36
  date: string;
37
37
  agent: string;
38
38
  reason: string;
39
- confidence?: number | undefined;
40
39
  workflow?: string | undefined;
41
40
  tags?: string[] | undefined;
41
+ confidence?: number | undefined;
42
42
  severity?: "high" | "low" | "medium" | undefined;
43
43
  outcome?: string | undefined;
44
44
  refs?: string[] | undefined;
package/dist/storage.js CHANGED
@@ -9,9 +9,10 @@ import {
9
9
  parseEntityFile,
10
10
  serializeEntityFile,
11
11
  stripAttributesSuffix
12
- } from "./chunk-VH6EIKVS.js";
12
+ } from "./chunk-WKMCC4NQ.js";
13
13
  import "./chunk-M7XQSUBB.js";
14
14
  import "./chunk-5UZXUTVO.js";
15
+ import "./chunk-5GPPACXK.js";
15
16
  import "./chunk-J6A3CX5N.js";
16
17
  import "./chunk-AZBV4RRY.js";
17
18
  import "./chunk-AWJ2FHCF.js";
@@ -23,8 +24,8 @@ import "./chunk-6KYMPV2O.js";
23
24
  import "./chunk-DM2T26WE.js";
24
25
  import "./chunk-LDXUBPMO.js";
25
26
  import "./chunk-FVQJYWH7.js";
26
- import "./chunk-G7D6GZ5J.js";
27
27
  import "./chunk-VF4XKTX3.js";
28
+ import "./chunk-G7D6GZ5J.js";
28
29
  import "./chunk-4DJQYKMN.js";
29
30
  import "./chunk-2ODBA7MQ.js";
30
31
  import "./chunk-J2HSAU72.js";
@@ -4,11 +4,11 @@ import {
4
4
  import "../chunk-765K3SAT.js";
5
5
  import "../chunk-X7Y7WX73.js";
6
6
  import "../chunk-J4EB7DNW.js";
7
+ import "../chunk-UI3NYK34.js";
8
+ import "../chunk-GCGJW34D.js";
7
9
  import "../chunk-BJMBJZ2Y.js";
8
10
  import "../chunk-UKJAGEXH.js";
9
11
  import "../chunk-FP2373TW.js";
10
- import "../chunk-UI3NYK34.js";
11
- import "../chunk-GCGJW34D.js";
12
12
  import "../chunk-A6XUJE5D.js";
13
13
  import "../chunk-PZ5AY32C.js";
14
14
  export {
@@ -5,11 +5,11 @@ import {
5
5
  import "../chunk-WEHSQBFR.js";
6
6
  import "../chunk-X7Y7WX73.js";
7
7
  import "../chunk-J4EB7DNW.js";
8
+ import "../chunk-UI3NYK34.js";
9
+ import "../chunk-GCGJW34D.js";
8
10
  import "../chunk-BJMBJZ2Y.js";
9
11
  import "../chunk-UKJAGEXH.js";
10
12
  import "../chunk-FP2373TW.js";
11
- import "../chunk-UI3NYK34.js";
12
- import "../chunk-GCGJW34D.js";
13
13
  import "../chunk-A6XUJE5D.js";
14
14
  import "../chunk-PZ5AY32C.js";
15
15
  export {
@@ -4,10 +4,10 @@ import {
4
4
  import "../chunk-VF4XKTX3.js";
5
5
  import "../chunk-WEHSQBFR.js";
6
6
  import "../chunk-X7Y7WX73.js";
7
+ import "../chunk-GCGJW34D.js";
7
8
  import "../chunk-BJMBJZ2Y.js";
8
9
  import "../chunk-UKJAGEXH.js";
9
10
  import "../chunk-FP2373TW.js";
10
- import "../chunk-GCGJW34D.js";
11
11
  import "../chunk-A6XUJE5D.js";
12
12
  import "../chunk-VS2IYZRU.js";
13
13
  import "../chunk-PZ5AY32C.js";
@@ -313,13 +313,13 @@ declare const CapsuleBlockSchema: z.ZodObject<{
313
313
  peerProfiles: boolean;
314
314
  }>;
315
315
  }, "strip", z.ZodTypeAny, {
316
+ schemaVersion: string;
316
317
  includes: {
317
318
  procedural: boolean;
318
319
  taxonomy: boolean;
319
320
  identityAnchors: boolean;
320
321
  peerProfiles: boolean;
321
322
  };
322
- schemaVersion: string;
323
323
  id: string;
324
324
  description: string;
325
325
  version: string;
@@ -334,13 +334,13 @@ declare const CapsuleBlockSchema: z.ZodObject<{
334
334
  directAnswerEnabled: boolean;
335
335
  };
336
336
  }, {
337
+ schemaVersion: string;
337
338
  includes: {
338
339
  procedural: boolean;
339
340
  taxonomy: boolean;
340
341
  identityAnchors: boolean;
341
342
  peerProfiles: boolean;
342
343
  };
343
- schemaVersion: string;
344
344
  id: string;
345
345
  description: string;
346
346
  version: string;
@@ -464,13 +464,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
464
464
  peerProfiles: boolean;
465
465
  }>;
466
466
  }, "strip", z.ZodTypeAny, {
467
+ schemaVersion: string;
467
468
  includes: {
468
469
  procedural: boolean;
469
470
  taxonomy: boolean;
470
471
  identityAnchors: boolean;
471
472
  peerProfiles: boolean;
472
473
  };
473
- schemaVersion: string;
474
474
  id: string;
475
475
  description: string;
476
476
  version: string;
@@ -485,13 +485,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
485
485
  directAnswerEnabled: boolean;
486
486
  };
487
487
  }, {
488
+ schemaVersion: string;
488
489
  includes: {
489
490
  procedural: boolean;
490
491
  taxonomy: boolean;
491
492
  identityAnchors: boolean;
492
493
  peerProfiles: boolean;
493
494
  };
494
- schemaVersion: string;
495
495
  id: string;
496
496
  description: string;
497
497
  version: string;
@@ -518,13 +518,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
518
518
  pluginVersion: string;
519
519
  includesTranscripts: boolean;
520
520
  capsule: {
521
+ schemaVersion: string;
521
522
  includes: {
522
523
  procedural: boolean;
523
524
  taxonomy: boolean;
524
525
  identityAnchors: boolean;
525
526
  peerProfiles: boolean;
526
527
  };
527
- schemaVersion: string;
528
528
  id: string;
529
529
  description: string;
530
530
  version: string;
@@ -551,13 +551,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
551
551
  pluginVersion: string;
552
552
  includesTranscripts: boolean;
553
553
  capsule: {
554
+ schemaVersion: string;
554
555
  includes: {
555
556
  procedural: boolean;
556
557
  taxonomy: boolean;
557
558
  identityAnchors: boolean;
558
559
  peerProfiles: boolean;
559
560
  };
560
- schemaVersion: string;
561
561
  id: string;
562
562
  description: string;
563
563
  version: string;
@@ -683,13 +683,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
683
683
  peerProfiles: boolean;
684
684
  }>;
685
685
  }, "strip", z.ZodTypeAny, {
686
+ schemaVersion: string;
686
687
  includes: {
687
688
  procedural: boolean;
688
689
  taxonomy: boolean;
689
690
  identityAnchors: boolean;
690
691
  peerProfiles: boolean;
691
692
  };
692
- schemaVersion: string;
693
693
  id: string;
694
694
  description: string;
695
695
  version: string;
@@ -704,13 +704,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
704
704
  directAnswerEnabled: boolean;
705
705
  };
706
706
  }, {
707
+ schemaVersion: string;
707
708
  includes: {
708
709
  procedural: boolean;
709
710
  taxonomy: boolean;
710
711
  identityAnchors: boolean;
711
712
  peerProfiles: boolean;
712
713
  };
713
- schemaVersion: string;
714
714
  id: string;
715
715
  description: string;
716
716
  version: string;
@@ -737,13 +737,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
737
737
  pluginVersion: string;
738
738
  includesTranscripts: boolean;
739
739
  capsule: {
740
+ schemaVersion: string;
740
741
  includes: {
741
742
  procedural: boolean;
742
743
  taxonomy: boolean;
743
744
  identityAnchors: boolean;
744
745
  peerProfiles: boolean;
745
746
  };
746
- schemaVersion: string;
747
747
  id: string;
748
748
  description: string;
749
749
  version: string;
@@ -770,13 +770,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
770
770
  pluginVersion: string;
771
771
  includesTranscripts: boolean;
772
772
  capsule: {
773
+ schemaVersion: string;
773
774
  includes: {
774
775
  procedural: boolean;
775
776
  taxonomy: boolean;
776
777
  identityAnchors: boolean;
777
778
  peerProfiles: boolean;
778
779
  };
779
- schemaVersion: string;
780
780
  id: string;
781
781
  description: string;
782
782
  version: string;
@@ -815,13 +815,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
815
815
  pluginVersion: string;
816
816
  includesTranscripts: boolean;
817
817
  capsule: {
818
+ schemaVersion: string;
818
819
  includes: {
819
820
  procedural: boolean;
820
821
  taxonomy: boolean;
821
822
  identityAnchors: boolean;
822
823
  peerProfiles: boolean;
823
824
  };
824
- schemaVersion: string;
825
825
  id: string;
826
826
  description: string;
827
827
  version: string;
@@ -854,13 +854,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
854
854
  pluginVersion: string;
855
855
  includesTranscripts: boolean;
856
856
  capsule: {
857
+ schemaVersion: string;
857
858
  includes: {
858
859
  procedural: boolean;
859
860
  taxonomy: boolean;
860
861
  identityAnchors: boolean;
861
862
  peerProfiles: boolean;
862
863
  };
863
- schemaVersion: string;
864
864
  id: string;
865
865
  description: string;
866
866
  version: string;
@@ -1,11 +1,12 @@
1
1
  import {
2
2
  compareVerifiedEpisodeResults,
3
3
  searchVerifiedEpisodes
4
- } from "./chunk-YW52BQSU.js";
4
+ } from "./chunk-2TCHDANJ.js";
5
5
  import "./chunk-HQ6NIBL6.js";
6
- import "./chunk-VH6EIKVS.js";
6
+ import "./chunk-WKMCC4NQ.js";
7
7
  import "./chunk-M7XQSUBB.js";
8
8
  import "./chunk-5UZXUTVO.js";
9
+ import "./chunk-5GPPACXK.js";
9
10
  import "./chunk-J6A3CX5N.js";
10
11
  import "./chunk-AZBV4RRY.js";
11
12
  import "./chunk-AWJ2FHCF.js";
@@ -17,8 +18,8 @@ import "./chunk-6KYMPV2O.js";
17
18
  import "./chunk-DM2T26WE.js";
18
19
  import "./chunk-LDXUBPMO.js";
19
20
  import "./chunk-FVQJYWH7.js";
20
- import "./chunk-G7D6GZ5J.js";
21
21
  import "./chunk-VF4XKTX3.js";
22
+ import "./chunk-G7D6GZ5J.js";
22
23
  import "./chunk-4DJQYKMN.js";
23
24
  import "./chunk-ZBJMUXZH.js";
24
25
  import "./chunk-2ODBA7MQ.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.3.665",
3
+ "version": "9.3.667",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,97 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+
4
+ import { parseConfig } from "./config.js";
5
+ import { resolveCapabilities, type CapabilitySet } from "./capabilities.js";
6
+
7
+ /**
8
+ * Characterization tests for the recall-operation CapabilitySet (issue #1523).
9
+ *
10
+ * These guard against composition drift: every capability field must project
11
+ * from its `<field>Enabled` config flag, so a future edit to
12
+ * `resolveCapabilities` that accidentally maps a field to the wrong flag (the
13
+ * rule-39 gate-divergence class, moved up one layer) fails loudly here.
14
+ */
15
+
16
+ /**
17
+ * Map of CapabilitySet field → the PluginConfig flag it projects from.
18
+ * Kept explicit (rather than derived by string concat) so the two graph flags
19
+ * with non-`<field>Enabled` names are covered too.
20
+ */
21
+ const FIELD_TO_FLAG: Record<keyof CapabilitySet, string> = {
22
+ rerankCache: "rerankCacheEnabled",
23
+ recallDirectAnswer: "recallDirectAnswerEnabled",
24
+ recallMemoryWorthFilter: "recallMemoryWorthFilterEnabled",
25
+ recallMmr: "recallMmrEnabled",
26
+ recallReasoningTraceBoost: "recallReasoningTraceBoostEnabled",
27
+ recallPlannerLlm: "recallPlannerLlmEnabled",
28
+ recallPlanner: "recallPlannerEnabled",
29
+ recallConfidenceGate: "recallConfidenceGateEnabled",
30
+ graphRecall: "graphRecallEnabled",
31
+ graphAssistInFullMode: "graphAssistInFullModeEnabled",
32
+ graphExpandedIntent: "graphExpandedIntentEnabled",
33
+ };
34
+
35
+ const FIELDS = Object.keys(FIELD_TO_FLAG) as Array<keyof CapabilitySet>;
36
+
37
+ test("resolveCapabilities projects every field from its <field>Enabled flag (true variant)", () => {
38
+ // Build a config where every migrated flag is explicitly true.
39
+ const overrides: Record<string, boolean> = {};
40
+ for (const flag of Object.values(FIELD_TO_FLAG)) overrides[flag] = true;
41
+ const config = parseConfig(overrides);
42
+ const caps = resolveCapabilities(config);
43
+
44
+ for (const field of FIELDS) {
45
+ const flag = FIELD_TO_FLAG[field];
46
+ assert.equal(
47
+ caps[field],
48
+ (config as unknown as Record<string, boolean>)[flag],
49
+ `caps.${field} must equal config.${flag} (true variant)`,
50
+ );
51
+ assert.equal(caps[field], true, `caps.${field} should be true here`);
52
+ }
53
+ });
54
+
55
+ test("resolveCapabilities projects every field from its <field>Enabled flag (false variant)", () => {
56
+ const overrides: Record<string, boolean> = {};
57
+ for (const flag of Object.values(FIELD_TO_FLAG)) overrides[flag] = false;
58
+ const config = parseConfig(overrides);
59
+ const caps = resolveCapabilities(config);
60
+
61
+ for (const field of FIELDS) {
62
+ const flag = FIELD_TO_FLAG[field];
63
+ // The two optional graph flags carry default-when-undefined semantics, but
64
+ // when explicitly set to a concrete boolean the projection must match it.
65
+ assert.equal(
66
+ caps[field],
67
+ (config as unknown as Record<string, boolean>)[flag],
68
+ `caps.${field} must equal config.${flag} (false variant)`,
69
+ );
70
+ assert.equal(caps[field], false, `caps.${field} should be false here`);
71
+ }
72
+ });
73
+
74
+ test("resolveCapabilities preserves optional-flag defaults when the flag is undefined", () => {
75
+ // parseConfig with no overrides exercises the documented defaults. The two
76
+ // optional graph flags encode asymmetric defaults on purpose:
77
+ // graphAssistInFullModeEnabled → default-ON (`!== false`)
78
+ // graphExpandedIntentEnabled → default-OFF (`=== true`)
79
+ const config = parseConfig({});
80
+ const caps = resolveCapabilities(config);
81
+
82
+ assert.equal(
83
+ caps.graphAssistInFullMode,
84
+ config.graphAssistInFullModeEnabled !== false,
85
+ "graphAssistInFullMode must be default-on unless explicitly false",
86
+ );
87
+ assert.equal(
88
+ caps.graphExpandedIntent,
89
+ config.graphExpandedIntentEnabled === true,
90
+ "graphExpandedIntent must be default-off unless explicitly true",
91
+ );
92
+ });
93
+
94
+ test("resolveCapabilities returns a frozen object", () => {
95
+ const caps = resolveCapabilities(parseConfig({}));
96
+ assert.equal(Object.isFrozen(caps), true, "CapabilitySet must be frozen");
97
+ });
@@ -0,0 +1,86 @@
1
+ /**
2
+ * CapabilitySet — recall-operation feature gates resolved once, then threaded.
3
+ *
4
+ * Issue #1523 (Phase 1 of epic #1520). Root cause this addresses: 161+
5
+ * scattered `config.<flag>Enabled` reads mean each gate is re-derived at every
6
+ * call site, and reviews keep finding parallel code paths where one branch
7
+ * checks a gate the other forgot (CLAUDE.md rule 39 — the "gate divergence"
8
+ * defect class). The fix is to resolve a frozen capability projection ONCE at
9
+ * the top of the recall operation and pass it down explicitly.
10
+ *
11
+ * Scope of THIS module (first migration PR): only the recall-operation-scoped
12
+ * flags below. Flags that are also read in graph construction, writes, CLI, or
13
+ * the summarizer are deliberately deferred to a follow-up so we never leave a
14
+ * single flag half-migrated (some sites on `caps.`, some on `config.`).
15
+ *
16
+ * Field naming: each field is the config flag name with the trailing `Enabled`
17
+ * removed (`recallMmrEnabled` → `recallMmr`).
18
+ *
19
+ * This is plumbing, not a feature — there is deliberately NO `enabled` gate for
20
+ * the CapabilitySet itself (rule 30 governs behavior changes; resolving and
21
+ * threading a capability projection must stay behavior-preserving).
22
+ */
23
+
24
+ import type { PluginConfig } from "./types.js";
25
+
26
+ /**
27
+ * Frozen projection of recall-operation feature gates.
28
+ *
29
+ * Every field is `readonly boolean`. The composition that maps a config flag to
30
+ * a capability (including default-when-undefined semantics for optional flags)
31
+ * lives ONLY in {@link resolveCapabilities} — call sites must read the
32
+ * capability, never re-derive it from raw config.
33
+ */
34
+ export interface CapabilitySet {
35
+ /** `rerankCacheEnabled` — cache reranker scores across recall passes. */
36
+ readonly rerankCache: boolean;
37
+ /** `recallDirectAnswerEnabled` — observation-mode direct-answer tier. */
38
+ readonly recallDirectAnswer: boolean;
39
+ /** `recallMemoryWorthFilterEnabled` — Memory-Worth score reweighting. */
40
+ readonly recallMemoryWorthFilter: boolean;
41
+ /** `recallMmrEnabled` — maximal-marginal-relevance diversification. */
42
+ readonly recallMmr: boolean;
43
+ /** `recallReasoningTraceBoostEnabled` — boost reasoning-trace memories. */
44
+ readonly recallReasoningTraceBoost: boolean;
45
+ /** `recallPlannerLlmEnabled` — LLM-backed recall-mode planner. */
46
+ readonly recallPlannerLlm: boolean;
47
+ /** `recallPlannerEnabled` — recall-mode planner (heuristic + optional LLM). */
48
+ readonly recallPlanner: boolean;
49
+ /** `recallConfidenceGateEnabled` — Synapse-style confidence gate. */
50
+ readonly recallConfidenceGate: boolean;
51
+ /** `graphRecallEnabled` — graph-mode recall tier (gates planner graph mode). */
52
+ readonly graphRecall: boolean;
53
+ /** `graphAssistInFullModeEnabled` — graph-assist overlay in full mode. */
54
+ readonly graphAssistInFullMode: boolean;
55
+ /** `graphExpandedIntentEnabled` — promote broad-intent asks to graph mode. */
56
+ readonly graphExpandedIntent: boolean;
57
+ }
58
+
59
+ /**
60
+ * Resolve the recall-operation {@link CapabilitySet} from parsed config.
61
+ *
62
+ * Call this ONCE per recall operation (at the `recall()` / `recallInternal`
63
+ * entry) and thread the result down. Composition lives here and only here.
64
+ *
65
+ * Session toggles are intentionally not a parameter yet: `session-toggles.ts`
66
+ * is agent-scoped (per session/agent enable-disable of the whole plugin), not
67
+ * flag-scoped — none of the flags projected here have a per-session override,
68
+ * so there is nothing for a toggle argument to compose at this layer.
69
+ */
70
+ export function resolveCapabilities(config: PluginConfig): CapabilitySet {
71
+ return Object.freeze({
72
+ rerankCache: config.rerankCacheEnabled,
73
+ recallDirectAnswer: config.recallDirectAnswerEnabled,
74
+ recallMemoryWorthFilter: config.recallMemoryWorthFilterEnabled,
75
+ recallMmr: config.recallMmrEnabled,
76
+ recallReasoningTraceBoost: config.recallReasoningTraceBoostEnabled,
77
+ recallPlannerLlm: config.recallPlannerLlmEnabled,
78
+ recallPlanner: config.recallPlannerEnabled,
79
+ recallConfidenceGate: config.recallConfidenceGateEnabled,
80
+ graphRecall: config.graphRecallEnabled,
81
+ // Optional flags: preserve the exact default-when-undefined semantics the
82
+ // migrated call sites used (`!== false` = default-on, `=== true` = default-off).
83
+ graphAssistInFullMode: config.graphAssistInFullModeEnabled !== false,
84
+ graphExpandedIntent: config.graphExpandedIntentEnabled === true,
85
+ });
86
+ }