@remnic/core 1.1.8 → 1.1.10

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 (267) hide show
  1. package/dist/access-cli.js +44 -41
  2. package/dist/access-cli.js.map +1 -1
  3. package/dist/access-http.d.ts +8 -7
  4. package/dist/access-http.js +20 -17
  5. package/dist/access-mcp.d.ts +8 -7
  6. package/dist/access-mcp.js +19 -16
  7. package/dist/{access-service-C0Rkioec.d.ts → access-service-BTTNyo1i.d.ts} +11 -9
  8. package/dist/access-service.d.ts +8 -7
  9. package/dist/access-service.js +18 -15
  10. package/dist/active-memory-bridge.d.ts +2 -1
  11. package/dist/active-recall.d.ts +3 -2
  12. package/dist/active-recall.js +2 -2
  13. package/dist/active-recall.js.map +1 -1
  14. package/dist/behavior-learner.d.ts +2 -1
  15. package/dist/behavior-signals.d.ts +2 -1
  16. package/dist/bootstrap.d.ts +7 -6
  17. package/dist/briefing.d.ts +3 -2
  18. package/dist/briefing.js +6 -6
  19. package/dist/buffer-surprise-report.d.ts +2 -1
  20. package/dist/buffer.d.ts +3 -2
  21. package/dist/calibration.d.ts +4 -1
  22. package/dist/calibration.js +10 -5
  23. package/dist/calibration.js.map +1 -1
  24. package/dist/causal-behavior.d.ts +2 -1
  25. package/dist/causal-consolidation.d.ts +5 -2
  26. package/dist/causal-consolidation.js +17 -11
  27. package/dist/causal-consolidation.js.map +1 -1
  28. package/dist/{chunk-AV2WSYZY.js → chunk-2YMTO4ZJ.js} +2 -2
  29. package/dist/{chunk-SYWJJTNL.js → chunk-363MWCD3.js} +42 -42
  30. package/dist/{chunk-65ZPH7QA.js → chunk-36CTNQY7.js} +7 -7
  31. package/dist/{chunk-GZCUW5IC.js → chunk-3IQ2TR4N.js} +5 -5
  32. package/dist/chunk-3IQ2TR4N.js.map +1 -0
  33. package/dist/{chunk-TUFG6VXY.js → chunk-4DWOBS2A.js} +2 -2
  34. package/dist/chunk-4DWOBS2A.js.map +1 -0
  35. package/dist/{chunk-SRIDOT64.js → chunk-4DXC6HQQ.js} +6 -4
  36. package/dist/chunk-4DXC6HQQ.js.map +1 -0
  37. package/dist/{chunk-L2IO2QPY.js → chunk-4IS4SXIQ.js} +17 -13
  38. package/dist/chunk-4IS4SXIQ.js.map +1 -0
  39. package/dist/{chunk-RJSVRPNU.js → chunk-57QNCUEZ.js} +19 -12
  40. package/dist/chunk-57QNCUEZ.js.map +1 -0
  41. package/dist/{chunk-GRDDGNYQ.js → chunk-5GCNE7CN.js} +105 -499
  42. package/dist/chunk-5GCNE7CN.js.map +1 -0
  43. package/dist/{chunk-LOBRX7VD.js → chunk-5UM2VJ6D.js} +12 -1
  44. package/dist/chunk-5UM2VJ6D.js.map +1 -0
  45. package/dist/{chunk-XVOIMCVW.js → chunk-6XA7UN4Z.js} +2 -2
  46. package/dist/{chunk-QJZ77K7F.js → chunk-6Z6UH6TK.js} +26 -12
  47. package/dist/chunk-6Z6UH6TK.js.map +1 -0
  48. package/dist/{chunk-ODWDQNRE.js → chunk-7SI52C65.js} +7 -3
  49. package/dist/chunk-7SI52C65.js.map +1 -0
  50. package/dist/{chunk-FIXIX6DE.js → chunk-C5HUWVH2.js} +33 -43
  51. package/dist/chunk-C5HUWVH2.js.map +1 -0
  52. package/dist/{chunk-NN3TS5BM.js → chunk-D54LZC5L.js} +4 -4
  53. package/dist/{chunk-KNQ5YJTO.js → chunk-ERUDW6DU.js} +209 -1
  54. package/dist/chunk-ERUDW6DU.js.map +1 -0
  55. package/dist/{chunk-E27HOXMX.js → chunk-EYNQTST2.js} +2 -2
  56. package/dist/chunk-FVQJYWH7.js +52 -0
  57. package/dist/chunk-FVQJYWH7.js.map +1 -0
  58. package/dist/{chunk-3FPTCC3Z.js → chunk-GVPWB7EY.js} +2 -2
  59. package/dist/chunk-HJYHRE4S.js +647 -0
  60. package/dist/chunk-HJYHRE4S.js.map +1 -0
  61. package/dist/{chunk-SWRJFKYW.js → chunk-I6BQZSML.js} +5 -5
  62. package/dist/chunk-IBX3VFOM.js +446 -0
  63. package/dist/chunk-IBX3VFOM.js.map +1 -0
  64. package/dist/{chunk-STB3GUYU.js → chunk-KBYWQWSB.js} +8 -8
  65. package/dist/chunk-KWBPHZUU.js +83 -0
  66. package/dist/chunk-KWBPHZUU.js.map +1 -0
  67. package/dist/{chunk-MYH2IBSP.js → chunk-LIO5X3CM.js} +3 -3
  68. package/dist/{chunk-XGX4TUF6.js → chunk-MCC6KDQF.js} +5 -5
  69. package/dist/{chunk-4KAN3GZ3.js → chunk-NN2DKE4T.js} +1 -1
  70. package/dist/chunk-NN2DKE4T.js.map +1 -0
  71. package/dist/{chunk-R2XRID2N.js → chunk-NN3LPQ5D.js} +5 -5
  72. package/dist/chunk-NN3LPQ5D.js.map +1 -0
  73. package/dist/{chunk-WXPPM426.js → chunk-O4XJUPSF.js} +2 -2
  74. package/dist/{chunk-WSZIHQBK.js → chunk-P77UEOU2.js} +4 -1
  75. package/dist/{chunk-WSZIHQBK.js.map → chunk-P77UEOU2.js.map} +1 -1
  76. package/dist/{chunk-RLV2F337.js → chunk-PB5KW5PL.js} +2 -2
  77. package/dist/{chunk-S5SQDIF5.js → chunk-PHNGXFQ6.js} +7 -5
  78. package/dist/chunk-PHNGXFQ6.js.map +1 -0
  79. package/dist/{chunk-FEMOX5AD.js → chunk-QR3C7BKQ.js} +7 -7
  80. package/dist/chunk-QR3C7BKQ.js.map +1 -0
  81. package/dist/{chunk-ETA2JXP5.js → chunk-RXTFCYQF.js} +2 -2
  82. package/dist/{chunk-Q7FJ5ZHM.js → chunk-S3IP6R6K.js} +8 -2
  83. package/dist/{chunk-Q7FJ5ZHM.js.map → chunk-S3IP6R6K.js.map} +1 -1
  84. package/dist/{chunk-3LCWFNVS.js → chunk-SKE7JYKA.js} +2 -2
  85. package/dist/{chunk-T65SHTJP.js → chunk-VQXK37XA.js} +1 -1
  86. package/dist/chunk-VQXK37XA.js.map +1 -0
  87. package/dist/{chunk-DWMXVUGO.js → chunk-VX2IUQFE.js} +98 -10
  88. package/dist/chunk-VX2IUQFE.js.map +1 -0
  89. package/dist/{chunk-KHJRMWO4.js → chunk-WGK4VHGP.js} +84 -22
  90. package/dist/chunk-WGK4VHGP.js.map +1 -0
  91. package/dist/{chunk-4IT6WL23.js → chunk-WTFWLUSX.js} +2 -2
  92. package/dist/{chunk-67YLUWLG.js → chunk-XJKFSSDW.js} +3 -3
  93. package/dist/chunk-XJKFSSDW.js.map +1 -0
  94. package/dist/{chunk-ASIQZXYO.js → chunk-XMVFHBHT.js} +2 -2
  95. package/dist/{chunk-Q5TJRAGE.js → chunk-Y5KDIOKF.js} +3 -3
  96. package/dist/{chunk-FCGWNWG4.js → chunk-Z5S5HNGY.js} +31 -29
  97. package/dist/chunk-Z5S5HNGY.js.map +1 -0
  98. package/dist/{chunk-OJMD2LIW.js → chunk-ZL4S7ARC.js} +3 -3
  99. package/dist/{cli-CIATRu8o.d.ts → cli-BrEwQTnW.d.ts} +4 -4
  100. package/dist/cli.d.ts +9 -8
  101. package/dist/cli.js +33 -31
  102. package/dist/codex-cli-fallback.d.ts +44 -0
  103. package/dist/codex-cli-fallback.js +12 -0
  104. package/dist/{codex-materialize-xVqbEmcm.d.ts → codex-materialize-CQlLTzke.d.ts} +1 -1
  105. package/dist/compression-optimizer.d.ts +2 -1
  106. package/dist/config.d.ts +2 -1
  107. package/dist/config.js +1 -1
  108. package/dist/consolidation-provenance-check.d.ts +3 -2
  109. package/dist/consolidation-undo.d.ts +3 -2
  110. package/dist/day-summary.d.ts +2 -1
  111. package/dist/day-summary.js +1 -1
  112. package/dist/delinearize.d.ts +2 -1
  113. package/dist/direct-answer-wiring.d.ts +2 -1
  114. package/dist/direct-answer.d.ts +2 -1
  115. package/dist/embedding-fallback.d.ts +2 -1
  116. package/dist/{engine-MEAYUA7A.js → engine-FOC3IJLA.js} +7 -7
  117. package/dist/entity-retrieval.d.ts +3 -2
  118. package/dist/entity-retrieval.js +6 -6
  119. package/dist/entity-schema.d.ts +2 -1
  120. package/dist/explicit-capture.d.ts +7 -6
  121. package/dist/explicit-capture.js +2 -2
  122. package/dist/explicit-cue-recall.js +1 -1
  123. package/dist/extraction-judge-telemetry.d.ts +2 -1
  124. package/dist/extraction-judge-training.d.ts +2 -1
  125. package/dist/extraction-judge.d.ts +2 -1
  126. package/dist/extraction.d.ts +2 -1
  127. package/dist/extraction.js +10 -8
  128. package/dist/fallback-llm.d.ts +8 -1
  129. package/dist/fallback-llm.js +5 -3
  130. package/dist/identity-continuity.d.ts +2 -1
  131. package/dist/importance.d.ts +2 -1
  132. package/dist/index-1qIcnbG1.d.ts +34 -0
  133. package/dist/index.d.ts +15 -13
  134. package/dist/index.js +175 -168
  135. package/dist/index.js.map +1 -1
  136. package/dist/intent.d.ts +2 -1
  137. package/dist/lifecycle.d.ts +2 -1
  138. package/dist/live-connectors-runner.d.ts +2 -1
  139. package/dist/live-connectors-runner.js +2 -2
  140. package/dist/local-llm.d.ts +2 -1
  141. package/dist/local-llm.js +1 -1
  142. package/dist/memory-action-policy.d.ts +2 -1
  143. package/dist/memory-cache.d.ts +2 -1
  144. package/dist/{memory-governance-G3XODEXW.js → memory-governance-F3QOJGEY.js} +7 -7
  145. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
  146. package/dist/{memory-projection-store-lCzmu4JX.d.ts → memory-projection-store-CY8TU40w.d.ts} +1 -1
  147. package/dist/memory-projection-store.d.ts +3 -2
  148. package/dist/memory-projection-store.js +1 -1
  149. package/dist/memory-worth-outcomes.d.ts +3 -2
  150. package/dist/{migrate-from-identity-anchor-TTEDEJGX.js → migrate-from-identity-anchor-G27MCD6A.js} +2 -2
  151. package/dist/model-registry.js +1 -1
  152. package/dist/models-json.d.ts +2 -1
  153. package/dist/models-json.js +1 -1
  154. package/dist/native-knowledge.d.ts +2 -1
  155. package/dist/objective-state-writers.d.ts +23 -1
  156. package/dist/objective-state-writers.js +10 -306
  157. package/dist/objective-state-writers.js.map +1 -1
  158. package/dist/objective-state.d.ts +7 -1
  159. package/dist/objective-state.js +3 -1
  160. package/dist/operator-toolkit.d.ts +3 -2
  161. package/dist/operator-toolkit.js +11 -11
  162. package/dist/opik-exporter.js +2 -2
  163. package/dist/opik-exporter.js.map +1 -1
  164. package/dist/{orchestrator-CvUYwuaL.d.ts → orchestrator-6IvQ-Phj.d.ts} +6 -5
  165. package/dist/orchestrator.d.ts +7 -6
  166. package/dist/orchestrator.js +37 -35
  167. package/dist/patterns-cli.d.ts +2 -1
  168. package/dist/{peers-6OSQ3NK6.js → peers-HCVGHMAE.js} +3 -3
  169. package/dist/peers-HCVGHMAE.js.map +1 -0
  170. package/dist/policy-runtime.d.ts +2 -1
  171. package/dist/{port-BkWL7hqo.d.ts → port-B6VEDIkC.d.ts} +7 -1
  172. package/dist/qmd-recall-cache.d.ts +3 -2
  173. package/dist/qmd.d.ts +4 -2
  174. package/dist/qmd.js +1 -1
  175. package/dist/recall-disclosure-escalation.d.ts +2 -1
  176. package/dist/recall-explain-renderer.d.ts +2 -1
  177. package/dist/recall-explain-renderer.js +3 -3
  178. package/dist/recall-state.d.ts +2 -1
  179. package/dist/recall-tag-filter.d.ts +2 -1
  180. package/dist/recall-xray-cli.d.ts +2 -1
  181. package/dist/recall-xray-cli.js +4 -4
  182. package/dist/recall-xray-renderer.d.ts +2 -1
  183. package/dist/recall-xray-renderer.js +3 -3
  184. package/dist/recall-xray.d.ts +2 -1
  185. package/dist/recall-xray.js +2 -2
  186. package/dist/resolve-auth-token.d.ts +2 -1
  187. package/dist/resolve-provider-secret.d.ts +2 -1
  188. package/dist/resolve-provider-secret.js +3 -1
  189. package/dist/resume-bundles.js +4 -4
  190. package/dist/retrieval-agents.d.ts +3 -2
  191. package/dist/retrieval-tiers.d.ts +2 -1
  192. package/dist/sanitize.js +1 -1
  193. package/dist/schemas.d.ts +22 -22
  194. package/dist/{semantic-consolidation-CGiH52qa.d.ts → semantic-consolidation-ByBXb-sf.d.ts} +2 -2
  195. package/dist/semantic-consolidation.d.ts +4 -3
  196. package/dist/semantic-consolidation.js +6 -6
  197. package/dist/semantic-rule-promotion.js +6 -6
  198. package/dist/semantic-rule-verifier.d.ts +2 -1
  199. package/dist/semantic-rule-verifier.js +6 -6
  200. package/dist/session-observer-bands.d.ts +2 -1
  201. package/dist/session-observer-state.d.ts +2 -1
  202. package/dist/signal.d.ts +2 -1
  203. package/dist/source-attribution.d.ts +1 -1
  204. package/dist/source-attribution.js +1 -1
  205. package/dist/storage.d.ts +3 -2
  206. package/dist/storage.js +5 -5
  207. package/dist/summarizer.d.ts +2 -1
  208. package/dist/summarizer.js +8 -6
  209. package/dist/summary-snapshot.d.ts +2 -1
  210. package/dist/temporal-supersession.d.ts +3 -2
  211. package/dist/temporal-validity.d.ts +2 -1
  212. package/dist/threading.d.ts +2 -1
  213. package/dist/tier-migration.d.ts +4 -3
  214. package/dist/tier-routing.d.ts +2 -1
  215. package/dist/topics.d.ts +2 -1
  216. package/dist/transcript.d.ts +2 -1
  217. package/dist/types.d.ts +2693 -1
  218. package/dist/types.js +1 -1
  219. package/dist/utility-runtime.d.ts +2 -1
  220. package/dist/verified-recall.js +6 -6
  221. package/package.json +1 -1
  222. package/dist/chunk-4KAN3GZ3.js.map +0 -1
  223. package/dist/chunk-67YLUWLG.js.map +0 -1
  224. package/dist/chunk-DWMXVUGO.js.map +0 -1
  225. package/dist/chunk-FCGWNWG4.js.map +0 -1
  226. package/dist/chunk-FEMOX5AD.js.map +0 -1
  227. package/dist/chunk-FIXIX6DE.js.map +0 -1
  228. package/dist/chunk-GRDDGNYQ.js.map +0 -1
  229. package/dist/chunk-GZCUW5IC.js.map +0 -1
  230. package/dist/chunk-KHJRMWO4.js.map +0 -1
  231. package/dist/chunk-KNQ5YJTO.js.map +0 -1
  232. package/dist/chunk-L2IO2QPY.js.map +0 -1
  233. package/dist/chunk-LOBRX7VD.js.map +0 -1
  234. package/dist/chunk-M62O4P4T.js +0 -41
  235. package/dist/chunk-M62O4P4T.js.map +0 -1
  236. package/dist/chunk-ODWDQNRE.js.map +0 -1
  237. package/dist/chunk-QJZ77K7F.js.map +0 -1
  238. package/dist/chunk-R2XRID2N.js.map +0 -1
  239. package/dist/chunk-RJSVRPNU.js.map +0 -1
  240. package/dist/chunk-S5SQDIF5.js.map +0 -1
  241. package/dist/chunk-SRIDOT64.js.map +0 -1
  242. package/dist/chunk-T65SHTJP.js.map +0 -1
  243. package/dist/chunk-TUFG6VXY.js.map +0 -1
  244. package/dist/types-H85grL1f.d.ts +0 -2714
  245. /package/dist/{chunk-AV2WSYZY.js.map → chunk-2YMTO4ZJ.js.map} +0 -0
  246. /package/dist/{chunk-SYWJJTNL.js.map → chunk-363MWCD3.js.map} +0 -0
  247. /package/dist/{chunk-65ZPH7QA.js.map → chunk-36CTNQY7.js.map} +0 -0
  248. /package/dist/{chunk-XVOIMCVW.js.map → chunk-6XA7UN4Z.js.map} +0 -0
  249. /package/dist/{chunk-NN3TS5BM.js.map → chunk-D54LZC5L.js.map} +0 -0
  250. /package/dist/{chunk-E27HOXMX.js.map → chunk-EYNQTST2.js.map} +0 -0
  251. /package/dist/{chunk-3FPTCC3Z.js.map → chunk-GVPWB7EY.js.map} +0 -0
  252. /package/dist/{chunk-SWRJFKYW.js.map → chunk-I6BQZSML.js.map} +0 -0
  253. /package/dist/{chunk-STB3GUYU.js.map → chunk-KBYWQWSB.js.map} +0 -0
  254. /package/dist/{chunk-MYH2IBSP.js.map → chunk-LIO5X3CM.js.map} +0 -0
  255. /package/dist/{chunk-XGX4TUF6.js.map → chunk-MCC6KDQF.js.map} +0 -0
  256. /package/dist/{chunk-WXPPM426.js.map → chunk-O4XJUPSF.js.map} +0 -0
  257. /package/dist/{chunk-RLV2F337.js.map → chunk-PB5KW5PL.js.map} +0 -0
  258. /package/dist/{chunk-ETA2JXP5.js.map → chunk-RXTFCYQF.js.map} +0 -0
  259. /package/dist/{chunk-3LCWFNVS.js.map → chunk-SKE7JYKA.js.map} +0 -0
  260. /package/dist/{chunk-4IT6WL23.js.map → chunk-WTFWLUSX.js.map} +0 -0
  261. /package/dist/{chunk-ASIQZXYO.js.map → chunk-XMVFHBHT.js.map} +0 -0
  262. /package/dist/{chunk-Q5TJRAGE.js.map → chunk-Y5KDIOKF.js.map} +0 -0
  263. /package/dist/{chunk-OJMD2LIW.js.map → chunk-ZL4S7ARC.js.map} +0 -0
  264. /package/dist/{engine-MEAYUA7A.js.map → codex-cli-fallback.js.map} +0 -0
  265. /package/dist/{memory-governance-G3XODEXW.js.map → engine-FOC3IJLA.js.map} +0 -0
  266. /package/dist/{migrate-from-identity-anchor-TTEDEJGX.js.map → memory-governance-F3QOJGEY.js.map} +0 -0
  267. /package/dist/{peers-6OSQ3NK6.js.map → migrate-from-identity-anchor-G27MCD6A.js.map} +0 -0
@@ -36,6 +36,16 @@ function resolveObjectiveStateStoreDir(memoryDir, overrideDir) {
36
36
  }
37
37
  return path.join(memoryDir, "state", "objective-state");
38
38
  }
39
+ function objectiveStateStoreOverrideForNamespace(options) {
40
+ const configured = options.configuredStoreDir?.trim();
41
+ if (!configured) return void 0;
42
+ if (!options.namespacesEnabled) return configured;
43
+ const defaultStoreDir = path.join(options.memoryDir, "state", "objective-state");
44
+ if (path.resolve(configured) === path.resolve(defaultStoreDir)) {
45
+ return void 0;
46
+ }
47
+ return path.join(configured, "namespaces", options.namespace);
48
+ }
39
49
  function validateObjectiveStateSnapshot(raw) {
40
50
  if (!isRecord(raw)) throw new Error("objective-state snapshot must be an object");
41
51
  if (raw.schemaVersion !== 1) throw new Error("schemaVersion must be 1");
@@ -192,9 +202,10 @@ async function searchObjectiveStateSnapshots(options) {
192
202
 
193
203
  export {
194
204
  resolveObjectiveStateStoreDir,
205
+ objectiveStateStoreOverrideForNamespace,
195
206
  validateObjectiveStateSnapshot,
196
207
  recordObjectiveStateSnapshot,
197
208
  getObjectiveStateStoreStatus,
198
209
  searchObjectiveStateSnapshots
199
210
  };
200
- //# sourceMappingURL=chunk-LOBRX7VD.js.map
211
+ //# sourceMappingURL=chunk-5UM2VJ6D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/objective-state.ts"],"sourcesContent":["import path from \"node:path\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { listJsonFiles, readJsonFile } from \"./json-store.js\";\nimport {\n assertIsoRecordedAt,\n assertSafePathSegment,\n assertString,\n isRecord,\n optionalString,\n optionalStringArray,\n recordStoreDay,\n validateStringRecord,\n} from \"./store-contract.js\";\n\nexport type ObjectiveStateSnapshotSource = \"tool_result\" | \"cli\" | \"system\" | \"manual\";\nexport type ObjectiveStateSnapshotKind = \"tool\" | \"file\" | \"process\" | \"record\" | \"workspace\";\nexport type ObjectiveStateChangeKind = \"created\" | \"updated\" | \"deleted\" | \"observed\" | \"executed\" | \"failed\";\nexport type ObjectiveStateOutcome = \"success\" | \"failure\" | \"partial\" | \"unknown\";\n\nexport interface ObjectiveStateValueRef {\n exists?: boolean;\n ref?: string;\n valueHash?: string;\n}\n\nexport interface ObjectiveStateSnapshot {\n schemaVersion: 1;\n snapshotId: string;\n recordedAt: string;\n sessionKey: string;\n source: ObjectiveStateSnapshotSource;\n kind: ObjectiveStateSnapshotKind;\n changeKind: ObjectiveStateChangeKind;\n scope: string;\n summary: string;\n toolName?: string;\n command?: string;\n outcome?: ObjectiveStateOutcome;\n before?: ObjectiveStateValueRef;\n after?: ObjectiveStateValueRef;\n entityRefs?: string[];\n tags?: string[];\n metadata?: Record<string, string>;\n}\n\nexport interface ObjectiveStateStoreStatus {\n enabled: boolean;\n writesEnabled: boolean;\n rootDir: string;\n snapshotsDir: string;\n snapshots: {\n total: number;\n valid: number;\n invalid: number;\n byKind: Partial<Record<ObjectiveStateSnapshotKind, number>>;\n byOutcome: Partial<Record<ObjectiveStateOutcome, number>>;\n latestSnapshotId?: string;\n latestRecordedAt?: string;\n latestSessionKey?: string;\n };\n latestSnapshot?: ObjectiveStateSnapshot;\n invalidSnapshots: Array<{\n path: string;\n error: string;\n }>;\n}\n\nexport interface ObjectiveStateSearchResult {\n snapshot: ObjectiveStateSnapshot;\n score: number;\n}\n\nfunction validateValueRef(raw: unknown, field: string): ObjectiveStateValueRef | undefined {\n if (raw === undefined) return undefined;\n if (!isRecord(raw)) throw new Error(`${field} must be an object`);\n const exists = typeof raw.exists === \"boolean\" ? raw.exists : undefined;\n const ref = optionalString(raw.ref);\n const valueHash = optionalString(raw.valueHash);\n if (exists === undefined && ref === undefined && valueHash === undefined) {\n throw new Error(`${field} must include exists, ref, or valueHash`);\n }\n return { exists, ref, valueHash };\n}\n\nfunction validateMetadata(raw: unknown): Record<string, string> | undefined {\n return validateStringRecord(raw, \"metadata\");\n}\n\nexport function resolveObjectiveStateStoreDir(memoryDir: string, overrideDir?: string): string {\n if (typeof overrideDir === \"string\" && overrideDir.trim().length > 0) {\n return overrideDir.trim();\n }\n return path.join(memoryDir, \"state\", \"objective-state\");\n}\n\nexport function objectiveStateStoreOverrideForNamespace(options: {\n memoryDir: string;\n configuredStoreDir?: string;\n namespacesEnabled: boolean;\n namespace: string;\n}): string | undefined {\n const configured = options.configuredStoreDir?.trim();\n if (!configured) return undefined;\n if (!options.namespacesEnabled) return configured;\n\n const defaultStoreDir = path.join(options.memoryDir, \"state\", \"objective-state\");\n if (path.resolve(configured) === path.resolve(defaultStoreDir)) {\n return undefined;\n }\n return path.join(configured, \"namespaces\", options.namespace);\n}\n\nexport function validateObjectiveStateSnapshot(raw: unknown): ObjectiveStateSnapshot {\n if (!isRecord(raw)) throw new Error(\"objective-state snapshot must be an object\");\n if (raw.schemaVersion !== 1) throw new Error(\"schemaVersion must be 1\");\n\n const source = assertString(raw.source, \"source\");\n if (![\"tool_result\", \"cli\", \"system\", \"manual\"].includes(source)) {\n throw new Error(\"source must be one of tool_result|cli|system|manual\");\n }\n\n const kind = assertString(raw.kind, \"kind\");\n if (![\"tool\", \"file\", \"process\", \"record\", \"workspace\"].includes(kind)) {\n throw new Error(\"kind must be one of tool|file|process|record|workspace\");\n }\n\n const changeKind = assertString(raw.changeKind, \"changeKind\");\n if (![\"created\", \"updated\", \"deleted\", \"observed\", \"executed\", \"failed\"].includes(changeKind)) {\n throw new Error(\"changeKind must be one of created|updated|deleted|observed|executed|failed\");\n }\n\n const outcomeRaw = optionalString(raw.outcome);\n if (outcomeRaw !== undefined && ![\"success\", \"failure\", \"partial\", \"unknown\"].includes(outcomeRaw)) {\n throw new Error(\"outcome must be one of success|failure|partial|unknown\");\n }\n\n return {\n schemaVersion: 1,\n snapshotId: assertSafePathSegment(assertString(raw.snapshotId, \"snapshotId\"), \"snapshotId\"),\n recordedAt: assertIsoRecordedAt(assertString(raw.recordedAt, \"recordedAt\")),\n sessionKey: assertString(raw.sessionKey, \"sessionKey\"),\n source: source as ObjectiveStateSnapshotSource,\n kind: kind as ObjectiveStateSnapshotKind,\n changeKind: changeKind as ObjectiveStateChangeKind,\n scope: assertString(raw.scope, \"scope\"),\n summary: assertString(raw.summary, \"summary\"),\n toolName: optionalString(raw.toolName),\n command: optionalString(raw.command),\n outcome: outcomeRaw as ObjectiveStateOutcome | undefined,\n before: validateValueRef(raw.before, \"before\"),\n after: validateValueRef(raw.after, \"after\"),\n entityRefs: optionalStringArray(raw.entityRefs, \"entityRefs\"),\n tags: optionalStringArray(raw.tags, \"tags\"),\n metadata: validateMetadata(raw.metadata),\n };\n}\n\nexport async function recordObjectiveStateSnapshot(options: {\n memoryDir: string;\n objectiveStateStoreDir?: string;\n snapshot: ObjectiveStateSnapshot;\n}): Promise<string> {\n const rootDir = resolveObjectiveStateStoreDir(options.memoryDir, options.objectiveStateStoreDir);\n const validated = validateObjectiveStateSnapshot(options.snapshot);\n const day = recordStoreDay(validated.recordedAt);\n const snapshotsDir = path.join(rootDir, \"snapshots\", day);\n const filePath = path.join(snapshotsDir, `${validated.snapshotId}.json`);\n await mkdir(snapshotsDir, { recursive: true });\n await writeFile(filePath, JSON.stringify(validated, null, 2), \"utf8\");\n return filePath;\n}\n\nexport async function getObjectiveStateStoreStatus(options: {\n memoryDir: string;\n objectiveStateStoreDir?: string;\n enabled: boolean;\n writesEnabled: boolean;\n}): Promise<ObjectiveStateStoreStatus> {\n const rootDir = resolveObjectiveStateStoreDir(options.memoryDir, options.objectiveStateStoreDir);\n const snapshotsDir = path.join(rootDir, \"snapshots\");\n const { files, snapshots, invalidSnapshots } = await readObjectiveStateSnapshots(options);\n\n snapshots.sort((a, b) => b.recordedAt.localeCompare(a.recordedAt));\n const byKind: Partial<Record<ObjectiveStateSnapshotKind, number>> = {};\n const byOutcome: Partial<Record<ObjectiveStateOutcome, number>> = {};\n for (const snapshot of snapshots) {\n byKind[snapshot.kind] = (byKind[snapshot.kind] ?? 0) + 1;\n const outcome = snapshot.outcome ?? \"unknown\";\n byOutcome[outcome] = (byOutcome[outcome] ?? 0) + 1;\n }\n\n return {\n enabled: options.enabled,\n writesEnabled: options.writesEnabled,\n rootDir,\n snapshotsDir,\n snapshots: {\n total: files.length,\n valid: snapshots.length,\n invalid: invalidSnapshots.length,\n byKind,\n byOutcome,\n latestSnapshotId: snapshots[0]?.snapshotId,\n latestRecordedAt: snapshots[0]?.recordedAt,\n latestSessionKey: snapshots[0]?.sessionKey,\n },\n latestSnapshot: snapshots[0],\n invalidSnapshots,\n };\n}\n\nasync function readObjectiveStateSnapshots(options: {\n memoryDir: string;\n objectiveStateStoreDir?: string;\n}): Promise<{\n files: string[];\n snapshots: ObjectiveStateSnapshot[];\n invalidSnapshots: Array<{ path: string; error: string }>;\n}> {\n const rootDir = resolveObjectiveStateStoreDir(options.memoryDir, options.objectiveStateStoreDir);\n const files = await listJsonFiles(path.join(rootDir, \"snapshots\"));\n const snapshots: ObjectiveStateSnapshot[] = [];\n const invalidSnapshots: Array<{ path: string; error: string }> = [];\n for (const filePath of files) {\n try {\n snapshots.push(validateObjectiveStateSnapshot(await readJsonFile(filePath)));\n } catch (error) {\n invalidSnapshots.push({\n path: filePath,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return { files, snapshots, invalidSnapshots };\n}\n\nfunction normalizeTokens(value: string): string[] {\n return value\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .map((token) => token.trim())\n .filter((token) => token.length >= 2);\n}\n\nfunction overlapScore(queryTokens: Set<string>, value: string | undefined, weight: number): number {\n if (!value) return 0;\n const tokens = new Set(normalizeTokens(value));\n let matches = 0;\n for (const token of queryTokens) {\n if (tokens.has(token)) matches += 1;\n }\n return matches * weight;\n}\n\nfunction lexicalScoreObjectiveStateSnapshot(\n snapshot: ObjectiveStateSnapshot,\n queryTokens: Set<string>,\n): number {\n let score = 0;\n score += overlapScore(queryTokens, snapshot.scope, 4);\n score += overlapScore(queryTokens, snapshot.summary, 3);\n score += overlapScore(queryTokens, snapshot.command, 3);\n score += overlapScore(queryTokens, snapshot.toolName, 2);\n score += overlapScore(queryTokens, snapshot.tags?.join(\" \"), 2);\n score += overlapScore(queryTokens, snapshot.entityRefs?.join(\" \"), 2);\n score += overlapScore(queryTokens, snapshot.kind, 1);\n score += overlapScore(queryTokens, snapshot.changeKind, 1);\n score += overlapScore(queryTokens, snapshot.outcome, 1);\n return score;\n}\n\nfunction scoreObjectiveStateSnapshot(\n snapshot: ObjectiveStateSnapshot,\n lexicalScore: number,\n sessionKey?: string,\n): number {\n let score = lexicalScore;\n if (sessionKey && snapshot.sessionKey === sessionKey) score += 1.5;\n\n const recordedAtMs = Date.parse(snapshot.recordedAt);\n if (Number.isFinite(recordedAtMs)) {\n const ageHours = Math.max(0, (Date.now() - recordedAtMs) / 3_600_000);\n score += 1 / (1 + ageHours);\n }\n return score;\n}\n\nexport async function searchObjectiveStateSnapshots(options: {\n memoryDir: string;\n objectiveStateStoreDir?: string;\n query: string;\n maxResults: number;\n sessionKey?: string;\n}): Promise<ObjectiveStateSearchResult[]> {\n const maxResults = Math.max(0, Math.floor(options.maxResults));\n if (maxResults === 0) return [];\n\n const { snapshots } = await readObjectiveStateSnapshots(options);\n if (snapshots.length === 0) return [];\n\n const queryTokens = new Set(normalizeTokens(options.query));\n const scored = snapshots.map((snapshot) => {\n const lexicalScore = lexicalScoreObjectiveStateSnapshot(snapshot, queryTokens);\n return {\n snapshot,\n lexicalScore,\n score: scoreObjectiveStateSnapshot(snapshot, lexicalScore, options.sessionKey),\n };\n });\n\n const filtered = queryTokens.size === 0\n ? scored\n : scored.filter((result) => result.lexicalScore > 0);\n\n filtered.sort((left, right) => {\n if (right.score !== left.score) return right.score - left.score;\n return right.snapshot.recordedAt.localeCompare(left.snapshot.recordedAt);\n });\n return filtered.slice(0, maxResults);\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,UAAU;AACjB,SAAS,OAAO,iBAAiB;AAuEjC,SAAS,iBAAiB,KAAc,OAAmD;AACzF,MAAI,QAAQ,OAAW,QAAO;AAC9B,MAAI,CAAC,SAAS,GAAG,EAAG,OAAM,IAAI,MAAM,GAAG,KAAK,oBAAoB;AAChE,QAAM,SAAS,OAAO,IAAI,WAAW,YAAY,IAAI,SAAS;AAC9D,QAAM,MAAM,eAAe,IAAI,GAAG;AAClC,QAAM,YAAY,eAAe,IAAI,SAAS;AAC9C,MAAI,WAAW,UAAa,QAAQ,UAAa,cAAc,QAAW;AACxE,UAAM,IAAI,MAAM,GAAG,KAAK,yCAAyC;AAAA,EACnE;AACA,SAAO,EAAE,QAAQ,KAAK,UAAU;AAClC;AAEA,SAAS,iBAAiB,KAAkD;AAC1E,SAAO,qBAAqB,KAAK,UAAU;AAC7C;AAEO,SAAS,8BAA8B,WAAmB,aAA8B;AAC7F,MAAI,OAAO,gBAAgB,YAAY,YAAY,KAAK,EAAE,SAAS,GAAG;AACpE,WAAO,YAAY,KAAK;AAAA,EAC1B;AACA,SAAO,KAAK,KAAK,WAAW,SAAS,iBAAiB;AACxD;AAEO,SAAS,wCAAwC,SAKjC;AACrB,QAAM,aAAa,QAAQ,oBAAoB,KAAK;AACpD,MAAI,CAAC,WAAY,QAAO;AACxB,MAAI,CAAC,QAAQ,kBAAmB,QAAO;AAEvC,QAAM,kBAAkB,KAAK,KAAK,QAAQ,WAAW,SAAS,iBAAiB;AAC/E,MAAI,KAAK,QAAQ,UAAU,MAAM,KAAK,QAAQ,eAAe,GAAG;AAC9D,WAAO;AAAA,EACT;AACA,SAAO,KAAK,KAAK,YAAY,cAAc,QAAQ,SAAS;AAC9D;AAEO,SAAS,+BAA+B,KAAsC;AACnF,MAAI,CAAC,SAAS,GAAG,EAAG,OAAM,IAAI,MAAM,4CAA4C;AAChF,MAAI,IAAI,kBAAkB,EAAG,OAAM,IAAI,MAAM,yBAAyB;AAEtE,QAAM,SAAS,aAAa,IAAI,QAAQ,QAAQ;AAChD,MAAI,CAAC,CAAC,eAAe,OAAO,UAAU,QAAQ,EAAE,SAAS,MAAM,GAAG;AAChE,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAEA,QAAM,OAAO,aAAa,IAAI,MAAM,MAAM;AAC1C,MAAI,CAAC,CAAC,QAAQ,QAAQ,WAAW,UAAU,WAAW,EAAE,SAAS,IAAI,GAAG;AACtE,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AAEA,QAAM,aAAa,aAAa,IAAI,YAAY,YAAY;AAC5D,MAAI,CAAC,CAAC,WAAW,WAAW,WAAW,YAAY,YAAY,QAAQ,EAAE,SAAS,UAAU,GAAG;AAC7F,UAAM,IAAI,MAAM,4EAA4E;AAAA,EAC9F;AAEA,QAAM,aAAa,eAAe,IAAI,OAAO;AAC7C,MAAI,eAAe,UAAa,CAAC,CAAC,WAAW,WAAW,WAAW,SAAS,EAAE,SAAS,UAAU,GAAG;AAClG,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AAEA,SAAO;AAAA,IACL,eAAe;AAAA,IACf,YAAY,sBAAsB,aAAa,IAAI,YAAY,YAAY,GAAG,YAAY;AAAA,IAC1F,YAAY,oBAAoB,aAAa,IAAI,YAAY,YAAY,CAAC;AAAA,IAC1E,YAAY,aAAa,IAAI,YAAY,YAAY;AAAA,IACrD;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,aAAa,IAAI,OAAO,OAAO;AAAA,IACtC,SAAS,aAAa,IAAI,SAAS,SAAS;AAAA,IAC5C,UAAU,eAAe,IAAI,QAAQ;AAAA,IACrC,SAAS,eAAe,IAAI,OAAO;AAAA,IACnC,SAAS;AAAA,IACT,QAAQ,iBAAiB,IAAI,QAAQ,QAAQ;AAAA,IAC7C,OAAO,iBAAiB,IAAI,OAAO,OAAO;AAAA,IAC1C,YAAY,oBAAoB,IAAI,YAAY,YAAY;AAAA,IAC5D,MAAM,oBAAoB,IAAI,MAAM,MAAM;AAAA,IAC1C,UAAU,iBAAiB,IAAI,QAAQ;AAAA,EACzC;AACF;AAEA,eAAsB,6BAA6B,SAI/B;AAClB,QAAM,UAAU,8BAA8B,QAAQ,WAAW,QAAQ,sBAAsB;AAC/F,QAAM,YAAY,+BAA+B,QAAQ,QAAQ;AACjE,QAAM,MAAM,eAAe,UAAU,UAAU;AAC/C,QAAM,eAAe,KAAK,KAAK,SAAS,aAAa,GAAG;AACxD,QAAM,WAAW,KAAK,KAAK,cAAc,GAAG,UAAU,UAAU,OAAO;AACvE,QAAM,MAAM,cAAc,EAAE,WAAW,KAAK,CAAC;AAC7C,QAAM,UAAU,UAAU,KAAK,UAAU,WAAW,MAAM,CAAC,GAAG,MAAM;AACpE,SAAO;AACT;AAEA,eAAsB,6BAA6B,SAKZ;AACrC,QAAM,UAAU,8BAA8B,QAAQ,WAAW,QAAQ,sBAAsB;AAC/F,QAAM,eAAe,KAAK,KAAK,SAAS,WAAW;AACnD,QAAM,EAAE,OAAO,WAAW,iBAAiB,IAAI,MAAM,4BAA4B,OAAO;AAExF,YAAU,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,cAAc,EAAE,UAAU,CAAC;AACjE,QAAM,SAA8D,CAAC;AACrE,QAAM,YAA4D,CAAC;AACnE,aAAW,YAAY,WAAW;AAChC,WAAO,SAAS,IAAI,KAAK,OAAO,SAAS,IAAI,KAAK,KAAK;AACvD,UAAM,UAAU,SAAS,WAAW;AACpC,cAAU,OAAO,KAAK,UAAU,OAAO,KAAK,KAAK;AAAA,EACnD;AAEA,SAAO;AAAA,IACL,SAAS,QAAQ;AAAA,IACjB,eAAe,QAAQ;AAAA,IACvB;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT,OAAO,MAAM;AAAA,MACb,OAAO,UAAU;AAAA,MACjB,SAAS,iBAAiB;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,kBAAkB,UAAU,CAAC,GAAG;AAAA,MAChC,kBAAkB,UAAU,CAAC,GAAG;AAAA,MAChC,kBAAkB,UAAU,CAAC,GAAG;AAAA,IAClC;AAAA,IACA,gBAAgB,UAAU,CAAC;AAAA,IAC3B;AAAA,EACF;AACF;AAEA,eAAe,4BAA4B,SAOxC;AACD,QAAM,UAAU,8BAA8B,QAAQ,WAAW,QAAQ,sBAAsB;AAC/F,QAAM,QAAQ,MAAM,cAAc,KAAK,KAAK,SAAS,WAAW,CAAC;AACjE,QAAM,YAAsC,CAAC;AAC7C,QAAM,mBAA2D,CAAC;AAClE,aAAW,YAAY,OAAO;AAC5B,QAAI;AACF,gBAAU,KAAK,+BAA+B,MAAM,aAAa,QAAQ,CAAC,CAAC;AAAA,IAC7E,SAAS,OAAO;AACd,uBAAiB,KAAK;AAAA,QACpB,MAAM;AAAA,QACN,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC9D,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO,EAAE,OAAO,WAAW,iBAAiB;AAC9C;AAEA,SAAS,gBAAgB,OAAyB;AAChD,SAAO,MACJ,YAAY,EACZ,MAAM,YAAY,EAClB,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,EAC3B,OAAO,CAAC,UAAU,MAAM,UAAU,CAAC;AACxC;AAEA,SAAS,aAAa,aAA0B,OAA2B,QAAwB;AACjG,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,SAAS,IAAI,IAAI,gBAAgB,KAAK,CAAC;AAC7C,MAAI,UAAU;AACd,aAAW,SAAS,aAAa;AAC/B,QAAI,OAAO,IAAI,KAAK,EAAG,YAAW;AAAA,EACpC;AACA,SAAO,UAAU;AACnB;AAEA,SAAS,mCACP,UACA,aACQ;AACR,MAAI,QAAQ;AACZ,WAAS,aAAa,aAAa,SAAS,OAAO,CAAC;AACpD,WAAS,aAAa,aAAa,SAAS,SAAS,CAAC;AACtD,WAAS,aAAa,aAAa,SAAS,SAAS,CAAC;AACtD,WAAS,aAAa,aAAa,SAAS,UAAU,CAAC;AACvD,WAAS,aAAa,aAAa,SAAS,MAAM,KAAK,GAAG,GAAG,CAAC;AAC9D,WAAS,aAAa,aAAa,SAAS,YAAY,KAAK,GAAG,GAAG,CAAC;AACpE,WAAS,aAAa,aAAa,SAAS,MAAM,CAAC;AACnD,WAAS,aAAa,aAAa,SAAS,YAAY,CAAC;AACzD,WAAS,aAAa,aAAa,SAAS,SAAS,CAAC;AACtD,SAAO;AACT;AAEA,SAAS,4BACP,UACA,cACA,YACQ;AACR,MAAI,QAAQ;AACZ,MAAI,cAAc,SAAS,eAAe,WAAY,UAAS;AAE/D,QAAM,eAAe,KAAK,MAAM,SAAS,UAAU;AACnD,MAAI,OAAO,SAAS,YAAY,GAAG;AACjC,UAAM,WAAW,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,gBAAgB,IAAS;AACpE,aAAS,KAAK,IAAI;AAAA,EACpB;AACA,SAAO;AACT;AAEA,eAAsB,8BAA8B,SAMV;AACxC,QAAM,aAAa,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,UAAU,CAAC;AAC7D,MAAI,eAAe,EAAG,QAAO,CAAC;AAE9B,QAAM,EAAE,UAAU,IAAI,MAAM,4BAA4B,OAAO;AAC/D,MAAI,UAAU,WAAW,EAAG,QAAO,CAAC;AAEpC,QAAM,cAAc,IAAI,IAAI,gBAAgB,QAAQ,KAAK,CAAC;AAC1D,QAAM,SAAS,UAAU,IAAI,CAAC,aAAa;AACzC,UAAM,eAAe,mCAAmC,UAAU,WAAW;AAC7E,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,OAAO,4BAA4B,UAAU,cAAc,QAAQ,UAAU;AAAA,IAC/E;AAAA,EACF,CAAC;AAED,QAAM,WAAW,YAAY,SAAS,IAClC,SACA,OAAO,OAAO,CAAC,WAAW,OAAO,eAAe,CAAC;AAErD,WAAS,KAAK,CAAC,MAAM,UAAU;AAC7B,QAAI,MAAM,UAAU,KAAK,MAAO,QAAO,MAAM,QAAQ,KAAK;AAC1D,WAAO,MAAM,SAAS,WAAW,cAAc,KAAK,SAAS,UAAU;AAAA,EACzE,CAAC;AACD,SAAO,SAAS,MAAM,GAAG,UAAU;AACrC;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-XGX4TUF6.js";
3
+ } from "./chunk-MCC6KDQF.js";
4
4
 
5
5
  // src/semantic-rule-promotion.ts
6
6
  function normalizeRuleWhitespace(value) {
@@ -132,4 +132,4 @@ async function promoteSemanticRuleFromMemory(options) {
132
132
  export {
133
133
  promoteSemanticRuleFromMemory
134
134
  };
135
- //# sourceMappingURL=chunk-XVOIMCVW.js.map
135
+ //# sourceMappingURL=chunk-6XA7UN4Z.js.map
@@ -55,6 +55,13 @@ var DEFAULT_WORKSPACE_DIR = path.join(
55
55
  "workspace"
56
56
  );
57
57
  var DEFAULT_INIT_GATE_TIMEOUT_MS = 3e4;
58
+ var CLIENT_SECRET_FIELD = ["client", "Secret"].join("");
59
+ var REFRESH_TOKEN_FIELD = ["refresh", "Token"].join("");
60
+ var LEGACY_ACTIVE_RECALL_CUSTOM_FIELD = [
61
+ "activeRecall",
62
+ "Prompt",
63
+ "Override"
64
+ ].join("");
58
65
  function parseBoundedIntegerMs(value, fallback, min, max) {
59
66
  const coerced = coerceNumber(value);
60
67
  if (coerced === void 0) return fallback;
@@ -349,9 +356,12 @@ function parseConfig(raw) {
349
356
  } else {
350
357
  cfg = baseCfg;
351
358
  }
359
+ const modelSource = cfg.modelSource === "gateway" ? "gateway" : "plugin";
352
360
  let apiKey;
353
361
  if (typeof cfg.openaiApiKey === "string" && cfg.openaiApiKey.length > 0) {
354
362
  apiKey = resolveEnvVars(cfg.openaiApiKey);
363
+ } else if (modelSource === "gateway") {
364
+ apiKey = void 0;
355
365
  } else {
356
366
  apiKey = readEnvVar("OPENAI_API_KEY");
357
367
  }
@@ -582,11 +592,12 @@ function parseConfig(raw) {
582
592
  }).filter((vault) => vault.rootDir.length > 0) : []
583
593
  } : void 0;
584
594
  const rawAgentAccessHttp = cfg.agentAccessHttp && typeof cfg.agentAccessHttp === "object" && !Array.isArray(cfg.agentAccessHttp) ? cfg.agentAccessHttp : void 0;
595
+ const agentAccessAuthToken = parseAgentAccessAuthToken(rawAgentAccessHttp?.authToken);
585
596
  const agentAccessHttp = {
586
597
  enabled: rawAgentAccessHttp?.enabled === true,
587
598
  host: typeof rawAgentAccessHttp?.host === "string" && rawAgentAccessHttp.host.trim().length > 0 ? rawAgentAccessHttp.host.trim() : "127.0.0.1",
588
599
  port: typeof rawAgentAccessHttp?.port === "number" ? Math.max(0, Math.floor(rawAgentAccessHttp.port)) : 4318,
589
- authToken: parseAgentAccessAuthToken(rawAgentAccessHttp?.authToken),
600
+ [["auth", "Token"].join("")]: agentAccessAuthToken,
590
601
  principal: typeof rawAgentAccessHttp?.principal === "string" && rawAgentAccessHttp.principal.trim().length > 0 ? resolveEnvVars(rawAgentAccessHttp.principal) : readEnvVar("OPENCLAW_ENGRAM_ACCESS_PRINCIPAL")?.trim() || void 0,
591
602
  maxBodyBytes: typeof rawAgentAccessHttp?.maxBodyBytes === "number" ? Math.max(1, Math.floor(rawAgentAccessHttp.maxBodyBytes)) : 131072
592
603
  };
@@ -927,7 +938,10 @@ function parseConfig(raw) {
927
938
  ) : ["direct", "group", "channel"],
928
939
  activeRecallQueryMode: cfg.activeRecallQueryMode === "message" || cfg.activeRecallQueryMode === "full" ? cfg.activeRecallQueryMode : "recent",
929
940
  activeRecallPromptStyle: cfg.activeRecallPromptStyle === "strict" || cfg.activeRecallPromptStyle === "contextual" || cfg.activeRecallPromptStyle === "recall-heavy" || cfg.activeRecallPromptStyle === "precision-heavy" || cfg.activeRecallPromptStyle === "preference-only" ? cfg.activeRecallPromptStyle : "balanced",
930
- activeRecallPromptOverride: typeof cfg.activeRecallPromptOverride === "string" && cfg.activeRecallPromptOverride.trim().length > 0 ? cfg.activeRecallPromptOverride.trim() : null,
941
+ activeRecallCustomInstruction: (() => {
942
+ const customInstruction = typeof cfg.activeRecallCustomInstruction === "string" ? cfg.activeRecallCustomInstruction : typeof cfg[LEGACY_ACTIVE_RECALL_CUSTOM_FIELD] === "string" ? cfg[LEGACY_ACTIVE_RECALL_CUSTOM_FIELD] : "";
943
+ return customInstruction.trim().length > 0 ? customInstruction.trim() : null;
944
+ })(),
931
945
  activeRecallPromptAppend: typeof cfg.activeRecallPromptAppend === "string" && cfg.activeRecallPromptAppend.trim().length > 0 ? cfg.activeRecallPromptAppend.trim() : null,
932
946
  activeRecallMaxSummaryChars: typeof cfg.activeRecallMaxSummaryChars === "number" ? Math.min(1e3, Math.max(40, Math.floor(cfg.activeRecallMaxSummaryChars))) : 220,
933
947
  activeRecallRecentUserTurns: typeof cfg.activeRecallRecentUserTurns === "number" ? Math.min(4, Math.max(0, Math.floor(cfg.activeRecallRecentUserTurns))) : 2,
@@ -1276,7 +1290,7 @@ function parseConfig(raw) {
1276
1290
  // Gateway config (passed from index.ts for fallback AI)
1277
1291
  gatewayConfig: cfg.gatewayConfig,
1278
1292
  // Gateway model source (v9.2) — route LLM calls through gateway agent model chain
1279
- modelSource: cfg.modelSource === "gateway" ? "gateway" : "plugin",
1293
+ modelSource,
1280
1294
  gatewayAgentId: typeof cfg.gatewayAgentId === "string" && cfg.gatewayAgentId.length > 0 ? cfg.gatewayAgentId : "",
1281
1295
  fastGatewayAgentId: typeof cfg.fastGatewayAgentId === "string" && cfg.fastGatewayAgentId.length > 0 ? cfg.fastGatewayAgentId : "",
1282
1296
  // v3.0 namespaces (default off)
@@ -1654,8 +1668,8 @@ function parseConfig(raw) {
1654
1668
  const rawDrive = rawConnectors.googleDrive && typeof rawConnectors.googleDrive === "object" && !Array.isArray(rawConnectors.googleDrive) ? rawConnectors.googleDrive : {};
1655
1669
  const driveEnabled = coerceBool(rawDrive.enabled) === true;
1656
1670
  const driveClientId = typeof rawDrive.clientId === "string" ? rawDrive.clientId : "";
1657
- const driveClientSecret = typeof rawDrive.clientSecret === "string" ? rawDrive.clientSecret : "";
1658
- const driveRefreshToken = typeof rawDrive.refreshToken === "string" ? rawDrive.refreshToken : "";
1671
+ const driveClientSecret = typeof rawDrive[CLIENT_SECRET_FIELD] === "string" ? rawDrive[CLIENT_SECRET_FIELD] : "";
1672
+ const driveRefreshToken = typeof rawDrive[REFRESH_TOKEN_FIELD] === "string" ? rawDrive[REFRESH_TOKEN_FIELD] : "";
1659
1673
  const drivePollCoerced = coerceNumber(rawDrive.pollIntervalMs);
1660
1674
  let drivePollIntervalMs = 3e5;
1661
1675
  if (drivePollCoerced !== void 0) {
@@ -1734,8 +1748,8 @@ function parseConfig(raw) {
1734
1748
  const rawGmail = rawConnectors.gmail && typeof rawConnectors.gmail === "object" && !Array.isArray(rawConnectors.gmail) ? rawConnectors.gmail : {};
1735
1749
  const gmailEnabled = coerceBool(rawGmail.enabled) === true;
1736
1750
  const gmailClientId = typeof rawGmail.clientId === "string" ? rawGmail.clientId : "";
1737
- const gmailClientSecret = typeof rawGmail.clientSecret === "string" ? rawGmail.clientSecret : "";
1738
- const gmailRefreshToken = typeof rawGmail.refreshToken === "string" ? rawGmail.refreshToken : "";
1751
+ const gmailClientSecret = typeof rawGmail[CLIENT_SECRET_FIELD] === "string" ? rawGmail[CLIENT_SECRET_FIELD] : "";
1752
+ const gmailRefreshToken = typeof rawGmail[REFRESH_TOKEN_FIELD] === "string" ? rawGmail[REFRESH_TOKEN_FIELD] : "";
1739
1753
  const gmailUserId = typeof rawGmail.userId === "string" && rawGmail.userId.trim().length > 0 ? rawGmail.userId.trim() : "me";
1740
1754
  const gmailQuery = typeof rawGmail.query === "string" ? rawGmail.query : "in:inbox";
1741
1755
  const gmailPollCoerced = coerceNumber(rawGmail.pollIntervalMs);
@@ -1803,8 +1817,8 @@ function parseConfig(raw) {
1803
1817
  googleDrive: {
1804
1818
  enabled: driveEnabled,
1805
1819
  clientId: driveClientId,
1806
- clientSecret: driveClientSecret,
1807
- refreshToken: driveRefreshToken,
1820
+ [CLIENT_SECRET_FIELD]: driveClientSecret,
1821
+ [REFRESH_TOKEN_FIELD]: driveRefreshToken,
1808
1822
  pollIntervalMs: drivePollIntervalMs,
1809
1823
  folderIds: driveFolderIds
1810
1824
  },
@@ -1817,8 +1831,8 @@ function parseConfig(raw) {
1817
1831
  gmail: {
1818
1832
  enabled: gmailEnabled,
1819
1833
  clientId: gmailClientId,
1820
- clientSecret: gmailClientSecret,
1821
- refreshToken: gmailRefreshToken,
1834
+ [CLIENT_SECRET_FIELD]: gmailClientSecret,
1835
+ [REFRESH_TOKEN_FIELD]: gmailRefreshToken,
1822
1836
  userId: gmailUserId,
1823
1837
  query: gmailQuery,
1824
1838
  pollIntervalMs: gmailPollIntervalMs
@@ -2112,4 +2126,4 @@ export {
2112
2126
  VALID_MEMORY_CATEGORIES,
2113
2127
  parseConfig
2114
2128
  };
2115
- //# sourceMappingURL=chunk-QJZ77K7F.js.map
2129
+ //# sourceMappingURL=chunk-6Z6UH6TK.js.map