open-multi-agent-kit 0.80.7 → 0.80.8

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 (1470) hide show
  1. package/CHANGELOG.md +4 -30
  2. package/README.md +80 -38
  3. package/dist/agents/jailbreak/index.d.ts +7 -0
  4. package/dist/agents/jailbreak/index.d.ts.map +1 -0
  5. package/dist/agents/jailbreak/index.js +7 -0
  6. package/dist/agents/jailbreak/index.js.map +1 -0
  7. package/dist/agents/jailbreak/subagent-f.d.ts +44 -0
  8. package/dist/agents/jailbreak/subagent-f.d.ts.map +1 -0
  9. package/dist/agents/jailbreak/subagent-f.js +60 -0
  10. package/dist/agents/jailbreak/subagent-f.js.map +1 -0
  11. package/dist/bun/register-bedrock.d.ts.map +1 -1
  12. package/dist/bun/register-bedrock.js +2 -2
  13. package/dist/bun/register-bedrock.js.map +1 -1
  14. package/dist/ci/verify-reporter.d.ts +22 -0
  15. package/dist/ci/verify-reporter.d.ts.map +1 -0
  16. package/dist/ci/verify-reporter.js +50 -0
  17. package/dist/ci/verify-reporter.js.map +1 -0
  18. package/dist/cli/args.d.ts +4 -1
  19. package/dist/cli/args.d.ts.map +1 -1
  20. package/dist/cli/args.js +7 -0
  21. package/dist/cli/args.js.map +1 -1
  22. package/dist/cli/config-selector.d.ts.map +1 -1
  23. package/dist/cli/config-selector.js +1 -1
  24. package/dist/cli/config-selector.js.map +1 -1
  25. package/dist/cli/file-processor.d.ts +1 -1
  26. package/dist/cli/file-processor.d.ts.map +1 -1
  27. package/dist/cli/file-processor.js.map +1 -1
  28. package/dist/cli/initial-message.d.ts +1 -1
  29. package/dist/cli/initial-message.d.ts.map +1 -1
  30. package/dist/cli/initial-message.js.map +1 -1
  31. package/dist/cli/jailbreak-args.d.ts +26 -0
  32. package/dist/cli/jailbreak-args.d.ts.map +1 -0
  33. package/dist/cli/jailbreak-args.js +86 -0
  34. package/dist/cli/jailbreak-args.js.map +1 -0
  35. package/dist/cli/list-models.d.ts.map +1 -1
  36. package/dist/cli/list-models.js +1 -1
  37. package/dist/cli/list-models.js.map +1 -1
  38. package/dist/cli/session-picker.d.ts.map +1 -1
  39. package/dist/cli/session-picker.js +1 -1
  40. package/dist/cli/session-picker.js.map +1 -1
  41. package/dist/commands/doctor-provider.d.ts +19 -0
  42. package/dist/commands/doctor-provider.d.ts.map +1 -0
  43. package/dist/commands/doctor-provider.js +123 -0
  44. package/dist/commands/doctor-provider.js.map +1 -0
  45. package/dist/commands/jailbreak.d.ts +49 -0
  46. package/dist/commands/jailbreak.d.ts.map +1 -0
  47. package/dist/commands/jailbreak.js +201 -0
  48. package/dist/commands/jailbreak.js.map +1 -0
  49. package/dist/config.d.ts +9 -5
  50. package/dist/config.d.ts.map +1 -1
  51. package/dist/config.js +33 -52
  52. package/dist/config.js.map +1 -1
  53. package/dist/core/agent-session-services.d.ts +2 -2
  54. package/dist/core/agent-session-services.d.ts.map +1 -1
  55. package/dist/core/agent-session-services.js.map +1 -1
  56. package/dist/core/agent-session.d.ts +16 -27
  57. package/dist/core/agent-session.d.ts.map +1 -1
  58. package/dist/core/agent-session.js +185 -89
  59. package/dist/core/agent-session.js.map +1 -1
  60. package/dist/core/auth-storage.d.ts +3 -6
  61. package/dist/core/auth-storage.d.ts.map +1 -1
  62. package/dist/core/auth-storage.js +7 -7
  63. package/dist/core/auth-storage.js.map +1 -1
  64. package/dist/core/bash-executor.d.ts +1 -0
  65. package/dist/core/bash-executor.d.ts.map +1 -1
  66. package/dist/core/bash-executor.js +1 -0
  67. package/dist/core/bash-executor.js.map +1 -1
  68. package/dist/core/browser-use.d.ts +45 -0
  69. package/dist/core/browser-use.d.ts.map +1 -0
  70. package/dist/core/browser-use.js +70 -0
  71. package/dist/core/browser-use.js.map +1 -0
  72. package/dist/core/command-safety-parser.d.ts +77 -0
  73. package/dist/core/command-safety-parser.d.ts.map +1 -0
  74. package/dist/core/command-safety-parser.js +763 -0
  75. package/dist/core/command-safety-parser.js.map +1 -0
  76. package/dist/core/command-safety.d.ts.map +1 -1
  77. package/dist/core/command-safety.js +106 -3
  78. package/dist/core/command-safety.js.map +1 -1
  79. package/dist/core/compaction/branch-summarization.d.ts +2 -2
  80. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  81. package/dist/core/compaction/branch-summarization.js +5 -21
  82. package/dist/core/compaction/branch-summarization.js.map +1 -1
  83. package/dist/core/compaction/compaction.d.ts +3 -101
  84. package/dist/core/compaction/compaction.d.ts.map +1 -1
  85. package/dist/core/compaction/compaction.js +21 -656
  86. package/dist/core/compaction/compaction.js.map +1 -1
  87. package/dist/core/compaction/utils.d.ts +2 -2
  88. package/dist/core/compaction/utils.d.ts.map +1 -1
  89. package/dist/core/compaction/utils.js.map +1 -1
  90. package/dist/core/compactor.d.ts +42 -0
  91. package/dist/core/compactor.d.ts.map +1 -0
  92. package/dist/core/compactor.js +131 -0
  93. package/dist/core/compactor.js.map +1 -0
  94. package/dist/core/context-budget-compressors.d.ts +50 -0
  95. package/dist/core/context-budget-compressors.d.ts.map +1 -0
  96. package/dist/core/context-budget-compressors.js +166 -0
  97. package/dist/core/context-budget-compressors.js.map +1 -0
  98. package/dist/core/context-budget-governor-v2.d.ts +7 -0
  99. package/dist/core/context-budget-governor-v2.d.ts.map +1 -0
  100. package/dist/core/context-budget-governor-v2.js +7 -0
  101. package/dist/core/context-budget-governor-v2.js.map +1 -0
  102. package/dist/core/context-budget-governor.d.ts +67 -0
  103. package/dist/core/context-budget-governor.d.ts.map +1 -0
  104. package/dist/core/context-budget-governor.js +224 -0
  105. package/dist/core/context-budget-governor.js.map +1 -0
  106. package/dist/core/context-budget-headroom-candidates.d.ts +3 -0
  107. package/dist/core/context-budget-headroom-candidates.d.ts.map +1 -0
  108. package/dist/core/context-budget-headroom-candidates.js +85 -0
  109. package/dist/core/context-budget-headroom-candidates.js.map +1 -0
  110. package/dist/core/context-budget-headroom-types.d.ts +67 -0
  111. package/dist/core/context-budget-headroom-types.d.ts.map +1 -0
  112. package/dist/core/context-budget-headroom-types.js +46 -0
  113. package/dist/core/context-budget-headroom-types.js.map +1 -0
  114. package/dist/core/context-budget-headroom.d.ts +5 -0
  115. package/dist/core/context-budget-headroom.d.ts.map +1 -0
  116. package/dist/core/context-budget-headroom.js +123 -0
  117. package/dist/core/context-budget-headroom.js.map +1 -0
  118. package/dist/core/context-budget-relevance.d.ts +46 -0
  119. package/dist/core/context-budget-relevance.d.ts.map +1 -0
  120. package/dist/core/context-budget-relevance.js +329 -0
  121. package/dist/core/context-budget-relevance.js.map +1 -0
  122. package/dist/core/context-budget-system-prompt-items.d.ts +19 -0
  123. package/dist/core/context-budget-system-prompt-items.d.ts.map +1 -0
  124. package/dist/core/context-budget-system-prompt-items.js +143 -0
  125. package/dist/core/context-budget-system-prompt-items.js.map +1 -0
  126. package/dist/core/context-budget-system-prompt.d.ts +31 -0
  127. package/dist/core/context-budget-system-prompt.d.ts.map +1 -0
  128. package/dist/core/context-budget-system-prompt.js +87 -0
  129. package/dist/core/context-budget-system-prompt.js.map +1 -0
  130. package/dist/core/context-budget-token-counter.d.ts +34 -0
  131. package/dist/core/context-budget-token-counter.d.ts.map +1 -0
  132. package/dist/core/context-budget-token-counter.js +315 -0
  133. package/dist/core/context-budget-token-counter.js.map +1 -0
  134. package/dist/core/context-budget-v2-coverage.d.ts +5 -0
  135. package/dist/core/context-budget-v2-coverage.d.ts.map +1 -0
  136. package/dist/core/context-budget-v2-coverage.js +58 -0
  137. package/dist/core/context-budget-v2-coverage.js.map +1 -0
  138. package/dist/core/context-budget-v2-plan-hash.d.ts +12 -0
  139. package/dist/core/context-budget-v2-plan-hash.d.ts.map +1 -0
  140. package/dist/core/context-budget-v2-plan-hash.js +38 -0
  141. package/dist/core/context-budget-v2-plan-hash.js.map +1 -0
  142. package/dist/core/context-budget-v2-planner.d.ts +3 -0
  143. package/dist/core/context-budget-v2-planner.d.ts.map +1 -0
  144. package/dist/core/context-budget-v2-planner.js +143 -0
  145. package/dist/core/context-budget-v2-planner.js.map +1 -0
  146. package/dist/core/context-budget-v2-scoring.d.ts +14 -0
  147. package/dist/core/context-budget-v2-scoring.d.ts.map +1 -0
  148. package/dist/core/context-budget-v2-scoring.js +114 -0
  149. package/dist/core/context-budget-v2-scoring.js.map +1 -0
  150. package/dist/core/context-budget-v2-selection.d.ts +32 -0
  151. package/dist/core/context-budget-v2-selection.d.ts.map +1 -0
  152. package/dist/core/context-budget-v2-selection.js +158 -0
  153. package/dist/core/context-budget-v2-selection.js.map +1 -0
  154. package/dist/core/context-budget-v2-tiers.d.ts +15 -0
  155. package/dist/core/context-budget-v2-tiers.d.ts.map +1 -0
  156. package/dist/core/context-budget-v2-tiers.js +68 -0
  157. package/dist/core/context-budget-v2-tiers.js.map +1 -0
  158. package/dist/core/context-budget-v2-types.d.ts +92 -0
  159. package/dist/core/context-budget-v2-types.d.ts.map +1 -0
  160. package/dist/core/context-budget-v2-types.js +24 -0
  161. package/dist/core/context-budget-v2-types.js.map +1 -0
  162. package/dist/core/defaults.d.ts +1 -1
  163. package/dist/core/defaults.d.ts.map +1 -1
  164. package/dist/core/defaults.js.map +1 -1
  165. package/dist/core/diagnostics.d.ts +4 -0
  166. package/dist/core/diagnostics.d.ts.map +1 -1
  167. package/dist/core/diagnostics.js.map +1 -1
  168. package/dist/core/domain-confidence.d.ts +9 -0
  169. package/dist/core/domain-confidence.d.ts.map +1 -0
  170. package/dist/core/domain-confidence.js +39 -0
  171. package/dist/core/domain-confidence.js.map +1 -0
  172. package/dist/core/domain-dispatch.d.ts +44 -0
  173. package/dist/core/domain-dispatch.d.ts.map +1 -0
  174. package/dist/core/domain-dispatch.js +118 -0
  175. package/dist/core/domain-dispatch.js.map +1 -0
  176. package/dist/core/domain-loadouts.d.ts +76 -0
  177. package/dist/core/domain-loadouts.d.ts.map +1 -0
  178. package/dist/core/domain-loadouts.js +981 -0
  179. package/dist/core/domain-loadouts.js.map +1 -0
  180. package/dist/core/domain-registry.d.ts +7 -0
  181. package/dist/core/domain-registry.d.ts.map +1 -0
  182. package/dist/core/domain-registry.js +11 -0
  183. package/dist/core/domain-registry.js.map +1 -0
  184. package/dist/core/domain-router.d.ts +16 -0
  185. package/dist/core/domain-router.d.ts.map +1 -0
  186. package/dist/core/domain-router.js +24 -0
  187. package/dist/core/domain-router.js.map +1 -0
  188. package/dist/core/domain-score.d.ts +13 -0
  189. package/dist/core/domain-score.d.ts.map +1 -0
  190. package/dist/core/domain-score.js +48 -0
  191. package/dist/core/domain-score.js.map +1 -0
  192. package/dist/core/domain-trigger-match.d.ts +14 -0
  193. package/dist/core/domain-trigger-match.d.ts.map +1 -0
  194. package/dist/core/domain-trigger-match.js +51 -0
  195. package/dist/core/domain-trigger-match.js.map +1 -0
  196. package/dist/core/domain-types.d.ts +30 -0
  197. package/dist/core/domain-types.d.ts.map +1 -0
  198. package/dist/core/domain-types.js +2 -0
  199. package/dist/core/domain-types.js.map +1 -0
  200. package/dist/core/exact-cache-policy.d.ts +8 -0
  201. package/dist/core/exact-cache-policy.d.ts.map +1 -1
  202. package/dist/core/exact-cache-policy.js +9 -0
  203. package/dist/core/exact-cache-policy.js.map +1 -1
  204. package/dist/core/exec.d.ts +0 -2
  205. package/dist/core/exec.d.ts.map +1 -1
  206. package/dist/core/exec.js +0 -1
  207. package/dist/core/exec.js.map +1 -1
  208. package/dist/core/export-html/index.d.ts +1 -1
  209. package/dist/core/export-html/index.d.ts.map +1 -1
  210. package/dist/core/export-html/index.js.map +1 -1
  211. package/dist/core/export-html/template.js +1 -3
  212. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  213. package/dist/core/export-html/tool-renderer.js.map +1 -1
  214. package/dist/core/extensions/builtin/command-safety-gate.d.ts +3 -0
  215. package/dist/core/extensions/builtin/command-safety-gate.d.ts.map +1 -1
  216. package/dist/core/extensions/builtin/command-safety-gate.js +15 -3
  217. package/dist/core/extensions/builtin/command-safety-gate.js.map +1 -1
  218. package/dist/core/extensions/builtin/todo-checklist.d.ts +20 -0
  219. package/dist/core/extensions/builtin/todo-checklist.d.ts.map +1 -0
  220. package/dist/core/extensions/builtin/todo-checklist.js +70 -0
  221. package/dist/core/extensions/builtin/todo-checklist.js.map +1 -0
  222. package/dist/core/extensions/loader.d.ts +4 -4
  223. package/dist/core/extensions/loader.d.ts.map +1 -1
  224. package/dist/core/extensions/loader.js +57 -92
  225. package/dist/core/extensions/loader.js.map +1 -1
  226. package/dist/core/extensions/runner.d.ts +3 -3
  227. package/dist/core/extensions/runner.d.ts.map +1 -1
  228. package/dist/core/extensions/runner.js +1 -1
  229. package/dist/core/extensions/runner.js.map +1 -1
  230. package/dist/core/extensions/types.d.ts +7 -35
  231. package/dist/core/extensions/types.d.ts.map +1 -1
  232. package/dist/core/extensions/types.js.map +1 -1
  233. package/dist/core/extensions/wrapper.d.ts +1 -1
  234. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  235. package/dist/core/extensions/wrapper.js.map +1 -1
  236. package/dist/core/headroom.d.ts +45 -0
  237. package/dist/core/headroom.d.ts.map +1 -0
  238. package/dist/core/headroom.js +171 -0
  239. package/dist/core/headroom.js.map +1 -0
  240. package/dist/core/hook-inventory.d.ts +4 -2
  241. package/dist/core/hook-inventory.d.ts.map +1 -1
  242. package/dist/core/hook-inventory.js +80 -11
  243. package/dist/core/hook-inventory.js.map +1 -1
  244. package/dist/core/hooks/fail-closed.d.ts +4 -1
  245. package/dist/core/hooks/fail-closed.d.ts.map +1 -1
  246. package/dist/core/hooks/fail-closed.js +79 -5
  247. package/dist/core/hooks/fail-closed.js.map +1 -1
  248. package/dist/core/hooks/index.d.ts +2 -2
  249. package/dist/core/hooks/index.d.ts.map +1 -1
  250. package/dist/core/hooks/index.js +1 -1
  251. package/dist/core/hooks/index.js.map +1 -1
  252. package/dist/core/hooks/types.d.ts +9 -0
  253. package/dist/core/hooks/types.d.ts.map +1 -1
  254. package/dist/core/hooks/types.js.map +1 -1
  255. package/dist/core/keybindings.d.ts +2 -14
  256. package/dist/core/keybindings.d.ts.map +1 -1
  257. package/dist/core/keybindings.js +1 -31
  258. package/dist/core/keybindings.js.map +1 -1
  259. package/dist/core/lean-ctx.d.ts +99 -0
  260. package/dist/core/lean-ctx.d.ts.map +1 -0
  261. package/dist/core/lean-ctx.js +225 -0
  262. package/dist/core/lean-ctx.js.map +1 -0
  263. package/dist/core/loadout-compose.d.ts +53 -0
  264. package/dist/core/loadout-compose.d.ts.map +1 -0
  265. package/dist/core/loadout-compose.js +172 -0
  266. package/dist/core/loadout-compose.js.map +1 -0
  267. package/dist/core/loadout-policy-bridge.d.ts +22 -0
  268. package/dist/core/loadout-policy-bridge.d.ts.map +1 -0
  269. package/dist/core/loadout-policy-bridge.js +52 -0
  270. package/dist/core/loadout-policy-bridge.js.map +1 -0
  271. package/dist/core/loadout-runtime.d.ts +22 -0
  272. package/dist/core/loadout-runtime.d.ts.map +1 -1
  273. package/dist/core/loadout-runtime.js +41 -5
  274. package/dist/core/loadout-runtime.js.map +1 -1
  275. package/dist/core/loadout-safety.d.ts +55 -0
  276. package/dist/core/loadout-safety.d.ts.map +1 -0
  277. package/dist/core/loadout-safety.js +213 -0
  278. package/dist/core/loadout-safety.js.map +1 -0
  279. package/dist/core/loadouts.d.ts +4 -2
  280. package/dist/core/loadouts.d.ts.map +1 -1
  281. package/dist/core/loadouts.js +116 -5
  282. package/dist/core/loadouts.js.map +1 -1
  283. package/dist/core/loop-gates.d.ts +48 -0
  284. package/dist/core/loop-gates.d.ts.map +1 -0
  285. package/dist/core/loop-gates.js +352 -0
  286. package/dist/core/loop-gates.js.map +1 -0
  287. package/dist/core/loop-registry.d.ts +77 -0
  288. package/dist/core/loop-registry.d.ts.map +1 -0
  289. package/dist/core/loop-registry.js +831 -0
  290. package/dist/core/loop-registry.js.map +1 -0
  291. package/dist/core/loop-types.d.ts +194 -0
  292. package/dist/core/loop-types.d.ts.map +1 -0
  293. package/dist/core/loop-types.js +2 -0
  294. package/dist/core/loop-types.js.map +1 -0
  295. package/dist/core/mcp-inventory.d.ts +7 -0
  296. package/dist/core/mcp-inventory.d.ts.map +1 -1
  297. package/dist/core/mcp-inventory.js +5 -1
  298. package/dist/core/mcp-inventory.js.map +1 -1
  299. package/dist/core/mcp-presets.d.ts +43 -2
  300. package/dist/core/mcp-presets.d.ts.map +1 -1
  301. package/dist/core/mcp-presets.js +298 -2
  302. package/dist/core/mcp-presets.js.map +1 -1
  303. package/dist/core/messages.d.ts +3 -3
  304. package/dist/core/messages.d.ts.map +1 -1
  305. package/dist/core/messages.js.map +1 -1
  306. package/dist/core/metrics-sampler.d.ts +11 -0
  307. package/dist/core/metrics-sampler.d.ts.map +1 -1
  308. package/dist/core/metrics-sampler.js +52 -13
  309. package/dist/core/metrics-sampler.js.map +1 -1
  310. package/dist/core/model-registry.d.ts +1 -2
  311. package/dist/core/model-registry.d.ts.map +1 -1
  312. package/dist/core/model-registry.js +18 -41
  313. package/dist/core/model-registry.js.map +1 -1
  314. package/dist/core/model-resolver.d.ts +2 -2
  315. package/dist/core/model-resolver.d.ts.map +1 -1
  316. package/dist/core/model-resolver.js +1 -2
  317. package/dist/core/model-resolver.js.map +1 -1
  318. package/dist/core/package-gallery-identity.d.ts +7 -0
  319. package/dist/core/package-gallery-identity.d.ts.map +1 -0
  320. package/dist/core/package-gallery-identity.js +31 -0
  321. package/dist/core/package-gallery-identity.js.map +1 -0
  322. package/dist/core/package-gallery-install.d.ts +6 -0
  323. package/dist/core/package-gallery-install.d.ts.map +1 -0
  324. package/dist/core/package-gallery-install.js +59 -0
  325. package/dist/core/package-gallery-install.js.map +1 -0
  326. package/dist/core/package-gallery-manifest.d.ts +13 -0
  327. package/dist/core/package-gallery-manifest.d.ts.map +1 -0
  328. package/dist/core/package-gallery-manifest.js +183 -0
  329. package/dist/core/package-gallery-manifest.js.map +1 -0
  330. package/dist/core/package-gallery-trial.d.ts +4 -0
  331. package/dist/core/package-gallery-trial.d.ts.map +1 -0
  332. package/dist/core/package-gallery-trial.js +55 -0
  333. package/dist/core/package-gallery-trial.js.map +1 -0
  334. package/dist/core/package-gallery-types.d.ts +71 -0
  335. package/dist/core/package-gallery-types.d.ts.map +1 -0
  336. package/dist/core/package-gallery-types.js +2 -0
  337. package/dist/core/package-gallery-types.js.map +1 -0
  338. package/dist/core/package-gallery.d.ts +5 -123
  339. package/dist/core/package-gallery.d.ts.map +1 -1
  340. package/dist/core/package-gallery.js +5 -391
  341. package/dist/core/package-gallery.js.map +1 -1
  342. package/dist/core/package-manager.d.ts +0 -69
  343. package/dist/core/package-manager.d.ts.map +1 -1
  344. package/dist/core/package-manager.js +69 -367
  345. package/dist/core/package-manager.js.map +1 -1
  346. package/dist/core/package-procurement.d.ts +4 -4
  347. package/dist/core/package-procurement.d.ts.map +1 -1
  348. package/dist/core/package-procurement.js +29 -17
  349. package/dist/core/package-procurement.js.map +1 -1
  350. package/dist/core/provider-attribution.d.ts +1 -1
  351. package/dist/core/provider-attribution.d.ts.map +1 -1
  352. package/dist/core/provider-attribution.js.map +1 -1
  353. package/dist/core/read-anchors.d.ts +1 -1
  354. package/dist/core/read-anchors.d.ts.map +1 -1
  355. package/dist/core/read-anchors.js +1 -1
  356. package/dist/core/read-anchors.js.map +1 -1
  357. package/dist/core/recovery-checkpoint.d.ts +2 -2
  358. package/dist/core/recovery-checkpoint.d.ts.map +1 -1
  359. package/dist/core/recovery-checkpoint.js +2 -2
  360. package/dist/core/recovery-checkpoint.js.map +1 -1
  361. package/dist/core/resolve-config-value.d.ts +1 -1
  362. package/dist/core/resolve-config-value.d.ts.map +1 -1
  363. package/dist/core/resolve-config-value.js +2 -30
  364. package/dist/core/resolve-config-value.js.map +1 -1
  365. package/dist/core/resource-loader.d.ts +12 -20
  366. package/dist/core/resource-loader.d.ts.map +1 -1
  367. package/dist/core/resource-loader.js +66 -90
  368. package/dist/core/resource-loader.js.map +1 -1
  369. package/dist/core/sandbox-policy-v2.d.ts +49 -0
  370. package/dist/core/sandbox-policy-v2.d.ts.map +1 -0
  371. package/dist/core/sandbox-policy-v2.js +368 -0
  372. package/dist/core/sandbox-policy-v2.js.map +1 -0
  373. package/dist/core/sdk.d.ts +10 -78
  374. package/dist/core/sdk.d.ts.map +1 -1
  375. package/dist/core/sdk.js +97 -139
  376. package/dist/core/sdk.js.map +1 -1
  377. package/dist/core/semantic-cache-policy.d.ts +7 -1
  378. package/dist/core/semantic-cache-policy.d.ts.map +1 -1
  379. package/dist/core/semantic-cache-policy.js +8 -0
  380. package/dist/core/semantic-cache-policy.js.map +1 -1
  381. package/dist/core/session-manager.d.ts +2 -4
  382. package/dist/core/session-manager.d.ts.map +1 -1
  383. package/dist/core/session-manager.js +5 -6
  384. package/dist/core/session-manager.js.map +1 -1
  385. package/dist/core/settings-manager.d.ts +1 -18
  386. package/dist/core/settings-manager.d.ts.map +1 -1
  387. package/dist/core/settings-manager.js +2 -48
  388. package/dist/core/settings-manager.js.map +1 -1
  389. package/dist/core/skills.d.ts +1 -0
  390. package/dist/core/skills.d.ts.map +1 -1
  391. package/dist/core/skills.js +46 -5
  392. package/dist/core/skills.js.map +1 -1
  393. package/dist/core/slash-commands.d.ts.map +1 -1
  394. package/dist/core/slash-commands.js +0 -2
  395. package/dist/core/slash-commands.js.map +1 -1
  396. package/dist/core/subagent-orchestration.d.ts +73 -0
  397. package/dist/core/subagent-orchestration.d.ts.map +1 -0
  398. package/dist/core/subagent-orchestration.js +408 -0
  399. package/dist/core/subagent-orchestration.js.map +1 -0
  400. package/dist/core/system-prompt.d.ts +5 -4
  401. package/dist/core/system-prompt.d.ts.map +1 -1
  402. package/dist/core/system-prompt.js +57 -36
  403. package/dist/core/system-prompt.js.map +1 -1
  404. package/dist/core/timings.d.ts +0 -4
  405. package/dist/core/timings.d.ts.map +1 -1
  406. package/dist/core/timings.js +0 -4
  407. package/dist/core/timings.js.map +1 -1
  408. package/dist/core/todo-state.d.ts +53 -0
  409. package/dist/core/todo-state.d.ts.map +1 -0
  410. package/dist/core/todo-state.js +87 -0
  411. package/dist/core/todo-state.js.map +1 -0
  412. package/dist/core/token-optimizer.d.ts +58 -0
  413. package/dist/core/token-optimizer.d.ts.map +1 -0
  414. package/dist/core/token-optimizer.js +179 -0
  415. package/dist/core/token-optimizer.js.map +1 -0
  416. package/dist/core/tools/bash.d.ts +8 -9
  417. package/dist/core/tools/bash.d.ts.map +1 -1
  418. package/dist/core/tools/bash.js +9 -8
  419. package/dist/core/tools/bash.js.map +1 -1
  420. package/dist/core/tools/edit.d.ts +3 -14
  421. package/dist/core/tools/edit.d.ts.map +1 -1
  422. package/dist/core/tools/edit.js +4 -25
  423. package/dist/core/tools/edit.js.map +1 -1
  424. package/dist/core/tools/find.d.ts +1 -4
  425. package/dist/core/tools/find.d.ts.map +1 -1
  426. package/dist/core/tools/find.js +1 -4
  427. package/dist/core/tools/find.js.map +1 -1
  428. package/dist/core/tools/grep.d.ts +1 -4
  429. package/dist/core/tools/grep.d.ts.map +1 -1
  430. package/dist/core/tools/grep.js +2 -5
  431. package/dist/core/tools/grep.js.map +1 -1
  432. package/dist/core/tools/index.d.ts +2 -2
  433. package/dist/core/tools/index.d.ts.map +1 -1
  434. package/dist/core/tools/index.js.map +1 -1
  435. package/dist/core/tools/ls.d.ts +1 -4
  436. package/dist/core/tools/ls.d.ts.map +1 -1
  437. package/dist/core/tools/ls.js +1 -4
  438. package/dist/core/tools/ls.js.map +1 -1
  439. package/dist/core/tools/read.d.ts +2 -14
  440. package/dist/core/tools/read.d.ts.map +1 -1
  441. package/dist/core/tools/read.js +4 -28
  442. package/dist/core/tools/read.js.map +1 -1
  443. package/dist/core/tools/render-utils.d.ts +1 -1
  444. package/dist/core/tools/render-utils.d.ts.map +1 -1
  445. package/dist/core/tools/render-utils.js +1 -1
  446. package/dist/core/tools/render-utils.js.map +1 -1
  447. package/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
  448. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  449. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  450. package/dist/core/tools/write.d.ts +2 -4
  451. package/dist/core/tools/write.d.ts.map +1 -1
  452. package/dist/core/tools/write.js +4 -4
  453. package/dist/core/tools/write.js.map +1 -1
  454. package/dist/encoding/index.d.ts +6 -0
  455. package/dist/encoding/index.d.ts.map +1 -0
  456. package/dist/encoding/index.js +6 -0
  457. package/dist/encoding/index.js.map +1 -0
  458. package/dist/encoding/l4-encoder.d.ts +96 -0
  459. package/dist/encoding/l4-encoder.d.ts.map +1 -0
  460. package/dist/encoding/l4-encoder.js +474 -0
  461. package/dist/encoding/l4-encoder.js.map +1 -0
  462. package/dist/fuzzing/index.d.ts +6 -0
  463. package/dist/fuzzing/index.d.ts.map +1 -0
  464. package/dist/fuzzing/index.js +6 -0
  465. package/dist/fuzzing/index.js.map +1 -0
  466. package/dist/fuzzing/mutation-engine.d.ts +93 -0
  467. package/dist/fuzzing/mutation-engine.d.ts.map +1 -0
  468. package/dist/fuzzing/mutation-engine.js +244 -0
  469. package/dist/fuzzing/mutation-engine.js.map +1 -0
  470. package/dist/guardrails/audit-logger.d.ts +4 -0
  471. package/dist/guardrails/audit-logger.d.ts.map +1 -0
  472. package/dist/guardrails/audit-logger.js +28 -0
  473. package/dist/guardrails/audit-logger.js.map +1 -0
  474. package/dist/guardrails/evidence-system.d.ts +61 -0
  475. package/dist/guardrails/evidence-system.d.ts.map +1 -0
  476. package/dist/guardrails/evidence-system.js +302 -0
  477. package/dist/guardrails/evidence-system.js.map +1 -0
  478. package/dist/guardrails/freedomd-adapter.d.ts +16 -0
  479. package/dist/guardrails/freedomd-adapter.d.ts.map +1 -0
  480. package/dist/guardrails/freedomd-adapter.js +87 -0
  481. package/dist/guardrails/freedomd-adapter.js.map +1 -0
  482. package/dist/index.d.ts +4 -19
  483. package/dist/index.d.ts.map +1 -1
  484. package/dist/index.js +2 -17
  485. package/dist/index.js.map +1 -1
  486. package/dist/jailbreak-extension.d.ts +48 -0
  487. package/dist/jailbreak-extension.d.ts.map +1 -0
  488. package/dist/jailbreak-extension.js +47 -0
  489. package/dist/jailbreak-extension.js.map +1 -0
  490. package/dist/main.d.ts.map +1 -1
  491. package/dist/main.js +2 -2
  492. package/dist/main.js.map +1 -1
  493. package/dist/migrations.d.ts +0 -37
  494. package/dist/migrations.d.ts.map +1 -1
  495. package/dist/migrations.js +6 -414
  496. package/dist/migrations.js.map +1 -1
  497. package/dist/modes/interactive/components/armin.d.ts +1 -1
  498. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  499. package/dist/modes/interactive/components/armin.js.map +1 -1
  500. package/dist/modes/interactive/components/assistant-message.d.ts +2 -2
  501. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  502. package/dist/modes/interactive/components/assistant-message.js +1 -1
  503. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  504. package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
  505. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  506. package/dist/modes/interactive/components/bash-execution.js +1 -1
  507. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  508. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  509. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  510. package/dist/modes/interactive/components/bordered-loader.js +1 -1
  511. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  512. package/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
  513. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  514. package/dist/modes/interactive/components/branch-summary-message.js +1 -1
  515. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  516. package/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
  517. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  518. package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
  519. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  520. package/dist/modes/interactive/components/config-selector.d.ts +1 -1
  521. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  522. package/dist/modes/interactive/components/config-selector.js +1 -1
  523. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  524. package/dist/modes/interactive/components/control-panel-box.d.ts +15 -0
  525. package/dist/modes/interactive/components/control-panel-box.d.ts.map +1 -0
  526. package/dist/modes/interactive/components/control-panel-box.js +55 -0
  527. package/dist/modes/interactive/components/control-panel-box.js.map +1 -0
  528. package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts.map +1 -1
  529. package/dist/modes/interactive/components/control-panel-gradient-motion.js +2 -36
  530. package/dist/modes/interactive/components/control-panel-gradient-motion.js.map +1 -1
  531. package/dist/modes/interactive/components/control-panel-gradient.d.ts +1 -0
  532. package/dist/modes/interactive/components/control-panel-gradient.d.ts.map +1 -1
  533. package/dist/modes/interactive/components/control-panel-gradient.js +6 -5
  534. package/dist/modes/interactive/components/control-panel-gradient.js.map +1 -1
  535. package/dist/modes/interactive/components/control-panel-layout.d.ts +23 -0
  536. package/dist/modes/interactive/components/control-panel-layout.d.ts.map +1 -0
  537. package/dist/modes/interactive/components/control-panel-layout.js +165 -0
  538. package/dist/modes/interactive/components/control-panel-layout.js.map +1 -0
  539. package/dist/modes/interactive/components/control-panel-runtime-status.d.ts +5 -0
  540. package/dist/modes/interactive/components/control-panel-runtime-status.d.ts.map +1 -0
  541. package/dist/modes/interactive/components/control-panel-runtime-status.js +20 -0
  542. package/dist/modes/interactive/components/control-panel-runtime-status.js.map +1 -0
  543. package/dist/modes/interactive/components/control-panel.d.ts +8 -31
  544. package/dist/modes/interactive/components/control-panel.d.ts.map +1 -1
  545. package/dist/modes/interactive/components/control-panel.js +38 -169
  546. package/dist/modes/interactive/components/control-panel.js.map +1 -1
  547. package/dist/modes/interactive/components/countdown-timer.d.ts +1 -1
  548. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  549. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  550. package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
  551. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  552. package/dist/modes/interactive/components/custom-editor.js +14 -22
  553. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  554. package/dist/modes/interactive/components/custom-message.d.ts +1 -1
  555. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  556. package/dist/modes/interactive/components/custom-message.js +1 -1
  557. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  558. package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
  559. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  560. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  561. package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
  562. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  563. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  564. package/dist/modes/interactive/components/earendil-announcement.d.ts +1 -1
  565. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  566. package/dist/modes/interactive/components/earendil-announcement.js +1 -1
  567. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  568. package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
  569. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  570. package/dist/modes/interactive/components/extension-editor.js +1 -1
  571. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  572. package/dist/modes/interactive/components/extension-input.d.ts +1 -1
  573. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  574. package/dist/modes/interactive/components/extension-input.js +1 -1
  575. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  576. package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
  577. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  578. package/dist/modes/interactive/components/extension-selector.js +1 -1
  579. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  580. package/dist/modes/interactive/components/footer.d.ts +1 -1
  581. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  582. package/dist/modes/interactive/components/footer.js +1 -9
  583. package/dist/modes/interactive/components/footer.js.map +1 -1
  584. package/dist/modes/interactive/components/index.d.ts +0 -2
  585. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  586. package/dist/modes/interactive/components/index.js +0 -2
  587. package/dist/modes/interactive/components/index.js.map +1 -1
  588. package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -1
  589. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  590. package/dist/modes/interactive/components/keybinding-hints.js +1 -1
  591. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  592. package/dist/modes/interactive/components/login-dialog.d.ts +2 -2
  593. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  594. package/dist/modes/interactive/components/login-dialog.js +2 -2
  595. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  596. package/dist/modes/interactive/components/model-selector.d.ts +13 -47
  597. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  598. package/dist/modes/interactive/components/model-selector.js +118 -193
  599. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  600. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  601. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  602. package/dist/modes/interactive/components/oauth-selector.js +1 -1
  603. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  604. package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
  605. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  606. package/dist/modes/interactive/components/scoped-models-selector.js +1 -1
  607. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  608. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  609. package/dist/modes/interactive/components/session-selector-search.js +1 -1
  610. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  611. package/dist/modes/interactive/components/session-selector.d.ts +1 -1
  612. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  613. package/dist/modes/interactive/components/session-selector.js +1 -1
  614. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  615. package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
  616. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  617. package/dist/modes/interactive/components/settings-selector.js +1 -1
  618. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  619. package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
  620. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  621. package/dist/modes/interactive/components/show-images-selector.js +1 -1
  622. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  623. package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
  624. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  625. package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
  626. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  627. package/dist/modes/interactive/components/theme-selector.d.ts +1 -2
  628. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  629. package/dist/modes/interactive/components/theme-selector.js +2 -11
  630. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  631. package/dist/modes/interactive/components/thinking-selector.d.ts +8 -7
  632. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  633. package/dist/modes/interactive/components/thinking-selector.js +48 -7
  634. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  635. package/dist/modes/interactive/components/todo-checklist.d.ts +31 -0
  636. package/dist/modes/interactive/components/todo-checklist.d.ts.map +1 -0
  637. package/dist/modes/interactive/components/todo-checklist.js +121 -0
  638. package/dist/modes/interactive/components/todo-checklist.js.map +1 -0
  639. package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
  640. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  641. package/dist/modes/interactive/components/tool-execution.js +1 -1
  642. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  643. package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
  644. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  645. package/dist/modes/interactive/components/tree-selector.js +1 -1
  646. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  647. package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
  648. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  649. package/dist/modes/interactive/components/user-message-selector.js +1 -1
  650. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  651. package/dist/modes/interactive/components/user-message.d.ts +1 -1
  652. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  653. package/dist/modes/interactive/components/user-message.js +1 -1
  654. package/dist/modes/interactive/components/user-message.js.map +1 -1
  655. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  656. package/dist/modes/interactive/components/visual-truncate.js +1 -1
  657. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  658. package/dist/modes/interactive/interactive-mode.d.ts +3 -8
  659. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  660. package/dist/modes/interactive/interactive-mode.js +74 -232
  661. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  662. package/dist/modes/interactive/theme/omk-control-grid-dark.json +65 -77
  663. package/dist/modes/interactive/theme/omk-neon-control.json +90 -0
  664. package/dist/modes/interactive/theme/rust-forge.json +14 -24
  665. package/dist/modes/interactive/theme/theme.d.ts +1 -1
  666. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  667. package/dist/modes/interactive/theme/theme.js +22 -45
  668. package/dist/modes/interactive/theme/theme.js.map +1 -1
  669. package/dist/modes/print-mode.d.ts +1 -1
  670. package/dist/modes/print-mode.d.ts.map +1 -1
  671. package/dist/modes/print-mode.js.map +1 -1
  672. package/dist/modes/rpc/rpc-client.d.ts +2 -2
  673. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  674. package/dist/modes/rpc/rpc-client.js.map +1 -1
  675. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  676. package/dist/modes/rpc/rpc-mode.js +0 -4
  677. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  678. package/dist/modes/rpc/rpc-types.d.ts +2 -2
  679. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  680. package/dist/modes/rpc/rpc-types.js.map +1 -1
  681. package/dist/modules/index.d.ts +8 -0
  682. package/dist/modules/index.d.ts.map +1 -0
  683. package/dist/modules/index.js +7 -0
  684. package/dist/modules/index.js.map +1 -0
  685. package/dist/modules/lrl-bypass.d.ts +40 -0
  686. package/dist/modules/lrl-bypass.d.ts.map +1 -0
  687. package/dist/modules/lrl-bypass.js +84 -0
  688. package/dist/modules/lrl-bypass.js.map +1 -0
  689. package/dist/modules/lrl-deps.d.ts +38 -0
  690. package/dist/modules/lrl-deps.d.ts.map +1 -0
  691. package/dist/modules/lrl-deps.js +128 -0
  692. package/dist/modules/lrl-deps.js.map +1 -0
  693. package/dist/multiturn/easl-chain.d.ts +113 -0
  694. package/dist/multiturn/easl-chain.d.ts.map +1 -0
  695. package/dist/multiturn/easl-chain.js +351 -0
  696. package/dist/multiturn/easl-chain.js.map +1 -0
  697. package/dist/multiturn/index.d.ts +6 -0
  698. package/dist/multiturn/index.d.ts.map +1 -0
  699. package/dist/multiturn/index.js +6 -0
  700. package/dist/multiturn/index.js.map +1 -0
  701. package/dist/orchestration/lane-grant-auditor.d.ts +4 -0
  702. package/dist/orchestration/lane-grant-auditor.d.ts.map +1 -0
  703. package/dist/orchestration/lane-grant-auditor.js +87 -0
  704. package/dist/orchestration/lane-grant-auditor.js.map +1 -0
  705. package/dist/package-manager-cli.d.ts.map +1 -1
  706. package/dist/package-manager-cli.js +48 -113
  707. package/dist/package-manager-cli.js.map +1 -1
  708. package/dist/routing/fallback-router.d.ts +123 -0
  709. package/dist/routing/fallback-router.d.ts.map +1 -0
  710. package/dist/routing/fallback-router.js +355 -0
  711. package/dist/routing/fallback-router.js.map +1 -0
  712. package/dist/routing/index.d.ts +6 -0
  713. package/dist/routing/index.d.ts.map +1 -0
  714. package/dist/routing/index.js +6 -0
  715. package/dist/routing/index.js.map +1 -0
  716. package/dist/types/evidence.d.ts +117 -0
  717. package/dist/types/evidence.d.ts.map +1 -0
  718. package/dist/types/evidence.js +8 -0
  719. package/dist/types/evidence.js.map +1 -0
  720. package/dist/types/guardrails.d.ts +61 -0
  721. package/dist/types/guardrails.d.ts.map +1 -0
  722. package/dist/types/guardrails.js +9 -0
  723. package/dist/types/guardrails.js.map +1 -0
  724. package/dist/types/jailbreak.d.ts +246 -0
  725. package/dist/types/jailbreak.d.ts.map +1 -0
  726. package/dist/types/jailbreak.js +8 -0
  727. package/dist/types/jailbreak.js.map +1 -0
  728. package/dist/types/lane-grant.d.ts +58 -0
  729. package/dist/types/lane-grant.d.ts.map +1 -0
  730. package/dist/types/lane-grant.js +9 -0
  731. package/dist/types/lane-grant.js.map +1 -0
  732. package/dist/utils/jailbreak/common.d.ts +63 -0
  733. package/dist/utils/jailbreak/common.d.ts.map +1 -0
  734. package/dist/utils/jailbreak/common.js +130 -0
  735. package/dist/utils/jailbreak/common.js.map +1 -0
  736. package/dist/utils/jailbreak/index.d.ts +7 -0
  737. package/dist/utils/jailbreak/index.d.ts.map +1 -0
  738. package/dist/utils/jailbreak/index.js +7 -0
  739. package/dist/utils/jailbreak/index.js.map +1 -0
  740. package/dist/utils/windows-self-update.d.ts.map +1 -1
  741. package/dist/utils/windows-self-update.js +1 -1
  742. package/dist/utils/windows-self-update.js.map +1 -1
  743. package/docs/compaction.md +8 -21
  744. package/docs/custom-provider.md +2 -2
  745. package/docs/development.md +1 -1
  746. package/docs/extensions.md +11 -11
  747. package/docs/loadout-domains/README.md +70 -0
  748. package/docs/loadout-domains/ai-agent-ops.md +94 -0
  749. package/docs/loadout-domains/backend-api.md +116 -0
  750. package/docs/loadout-domains/data-science.md +100 -0
  751. package/docs/loadout-domains/devops-infra.md +85 -0
  752. package/docs/loadout-domains/docs-writing.md +92 -0
  753. package/docs/loadout-domains/frontend-ui.md +128 -0
  754. package/docs/loadout-domains/general.md +62 -0
  755. package/docs/loadout-domains/mobile.md +84 -0
  756. package/docs/loadout-domains/qa-testing.md +87 -0
  757. package/docs/loadout-domains/research.md +80 -0
  758. package/docs/loadout-domains/security-audit.md +97 -0
  759. package/docs/packages.md +7 -48
  760. package/docs/prompt-templates.md +0 -2
  761. package/docs/sdk.md +3 -3
  762. package/docs/security.md +145 -0
  763. package/docs/session-format.md +1 -1
  764. package/docs/themes.md +8 -7
  765. package/docs/tui.md +14 -14
  766. package/docs/usage.md +6 -16
  767. package/examples/extensions/README.md +2 -2
  768. package/examples/extensions/aside-computer-use/README.md +114 -0
  769. package/examples/extensions/aside-computer-use/action-scoring.ts +122 -0
  770. package/examples/extensions/aside-computer-use/assertions.ts +380 -0
  771. package/examples/extensions/aside-computer-use/controller.ts +491 -0
  772. package/examples/extensions/aside-computer-use/evidence.ts +229 -0
  773. package/examples/extensions/aside-computer-use/golden-trace.ts +141 -0
  774. package/examples/extensions/aside-computer-use/index.ts +76 -0
  775. package/examples/extensions/aside-computer-use/mcp-client.ts +381 -0
  776. package/examples/extensions/aside-computer-use/observation-snapshot.ts +121 -0
  777. package/examples/extensions/aside-computer-use/package.json +16 -0
  778. package/examples/extensions/aside-computer-use/policy.ts +257 -0
  779. package/examples/extensions/aside-computer-use/risk-authorize.ts +200 -0
  780. package/examples/extensions/aside-computer-use/risk-classifier.ts +205 -0
  781. package/examples/extensions/aside-computer-use/schema-fingerprint.ts +80 -0
  782. package/examples/extensions/aside-computer-use/session-binding.ts +161 -0
  783. package/examples/extensions/aside-computer-use/tools.ts +449 -0
  784. package/examples/extensions/aside-computer-use/types.ts +217 -0
  785. package/examples/extensions/aside-computer-use/url-origin.ts +132 -0
  786. package/examples/extensions/bash-spawn-hook.ts +1 -1
  787. package/examples/extensions/border-status-editor.ts +2 -2
  788. package/examples/extensions/built-in-tool-renderer.ts +1 -1
  789. package/examples/extensions/custom-compaction.ts +1 -1
  790. package/examples/extensions/custom-footer.ts +2 -2
  791. package/examples/extensions/custom-header.ts +8 -8
  792. package/examples/extensions/custom-provider-anthropic/index.ts +1 -1
  793. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  794. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  795. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  796. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  797. package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
  798. package/examples/extensions/doom-overlay/README.md +1 -2
  799. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  800. package/examples/extensions/doom-overlay/doom/build.sh +4 -4
  801. package/examples/extensions/doom-overlay/doom/doomgeneric_omk.c +72 -0
  802. package/examples/extensions/doom-overlay/doom-component.ts +2 -2
  803. package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
  804. package/examples/extensions/git-merge-and-resolve.ts +1 -1
  805. package/examples/extensions/github-issue-autocomplete.ts +1 -6
  806. package/examples/extensions/gondolin/index.ts +1 -1
  807. package/examples/extensions/gondolin/package-lock.json +2 -2
  808. package/examples/extensions/gondolin/package.json +1 -1
  809. package/examples/extensions/handoff.ts +2 -2
  810. package/examples/extensions/hello.ts +1 -1
  811. package/examples/extensions/inline-bash.ts +1 -1
  812. package/examples/extensions/input-transform-streaming.ts +1 -1
  813. package/examples/extensions/input-transform.ts +2 -2
  814. package/examples/extensions/mac-system-theme.ts +1 -1
  815. package/examples/extensions/message-renderer.ts +1 -1
  816. package/examples/extensions/minimal-mode.ts +1 -1
  817. package/examples/extensions/modal-editor.ts +1 -1
  818. package/examples/extensions/overlay-qa-tests.ts +7 -7
  819. package/examples/extensions/overlay-test.ts +1 -1
  820. package/examples/extensions/plan-mode/index.ts +3 -3
  821. package/examples/extensions/preset.ts +4 -4
  822. package/examples/extensions/provider-payload.ts +6 -3
  823. package/examples/extensions/qna.ts +1 -1
  824. package/examples/extensions/question.ts +1 -1
  825. package/examples/extensions/questionnaire.ts +1 -1
  826. package/examples/extensions/rpc-demo.ts +1 -1
  827. package/examples/extensions/sandbox/index.ts +2 -2
  828. package/examples/extensions/sandbox/package-lock.json +2 -2
  829. package/examples/extensions/sandbox/package.json +1 -1
  830. package/examples/extensions/shutdown-command.ts +5 -5
  831. package/examples/extensions/snake.ts +1 -1
  832. package/examples/extensions/space-invaders.ts +1 -1
  833. package/examples/extensions/structured-output.ts +1 -1
  834. package/examples/extensions/subagent/agents.ts +2 -2
  835. package/examples/extensions/subagent/index.ts +19 -51
  836. package/examples/extensions/summarize.ts +2 -2
  837. package/examples/extensions/tic-tac-toe.ts +2 -2
  838. package/examples/extensions/todo.ts +2 -2
  839. package/examples/extensions/tool-override.ts +1 -1
  840. package/examples/extensions/tools.ts +1 -1
  841. package/examples/extensions/truncated-tool.ts +1 -1
  842. package/examples/extensions/with-deps/package-lock.json +2 -2
  843. package/examples/extensions/with-deps/package.json +1 -1
  844. package/examples/extensions/working-indicator.ts +3 -3
  845. package/examples/rpc-extension-ui.ts +1 -9
  846. package/examples/sdk/02-custom-model.ts +1 -1
  847. package/examples/sdk/07-context-files.ts +0 -2
  848. package/examples/sdk/12-full-control.ts +1 -1
  849. package/examples/sdk/README.md +1 -1
  850. package/npm-shrinkwrap.json +1805 -0
  851. package/package.json +10 -32
  852. package/dist/core/compaction/pruner-policy.d.ts +0 -84
  853. package/dist/core/compaction/pruner-policy.d.ts.map +0 -1
  854. package/dist/core/compaction/pruner-policy.js +0 -273
  855. package/dist/core/compaction/pruner-policy.js.map +0 -1
  856. package/dist/core/context-graph-identity-resolution.d.ts +0 -114
  857. package/dist/core/context-graph-identity-resolution.d.ts.map +0 -1
  858. package/dist/core/context-graph-identity-resolution.js +0 -127
  859. package/dist/core/context-graph-identity-resolution.js.map +0 -1
  860. package/dist/core/context-graph-memory-store.d.ts +0 -153
  861. package/dist/core/context-graph-memory-store.d.ts.map +0 -1
  862. package/dist/core/context-graph-memory-store.js +0 -377
  863. package/dist/core/context-graph-memory-store.js.map +0 -1
  864. package/dist/core/context-graph-ontology-generation.d.ts +0 -104
  865. package/dist/core/context-graph-ontology-generation.d.ts.map +0 -1
  866. package/dist/core/context-graph-ontology-generation.js +0 -135
  867. package/dist/core/context-graph-ontology-generation.js.map +0 -1
  868. package/dist/core/context-graph-ontology-registry.d.ts +0 -766
  869. package/dist/core/context-graph-ontology-registry.d.ts.map +0 -1
  870. package/dist/core/context-graph-ontology-registry.js +0 -1133
  871. package/dist/core/context-graph-ontology-registry.js.map +0 -1
  872. package/dist/core/context-graph-policy.d.ts +0 -68
  873. package/dist/core/context-graph-policy.d.ts.map +0 -1
  874. package/dist/core/context-graph-policy.js +0 -221
  875. package/dist/core/context-graph-policy.js.map +0 -1
  876. package/dist/core/context-graph-reasoning.d.ts +0 -130
  877. package/dist/core/context-graph-reasoning.d.ts.map +0 -1
  878. package/dist/core/context-graph-reasoning.js +0 -442
  879. package/dist/core/context-graph-reasoning.js.map +0 -1
  880. package/dist/core/context-graph-retrieval.d.ts +0 -120
  881. package/dist/core/context-graph-retrieval.d.ts.map +0 -1
  882. package/dist/core/context-graph-retrieval.js +0 -288
  883. package/dist/core/context-graph-retrieval.js.map +0 -1
  884. package/dist/core/contract-verification.d.ts +0 -78
  885. package/dist/core/contract-verification.d.ts.map +0 -1
  886. package/dist/core/contract-verification.js +0 -110
  887. package/dist/core/contract-verification.js.map +0 -1
  888. package/dist/core/freedom/banner.d.ts +0 -14
  889. package/dist/core/freedom/banner.d.ts.map +0 -1
  890. package/dist/core/freedom/banner.js +0 -22
  891. package/dist/core/freedom/banner.js.map +0 -1
  892. package/dist/core/freedom/config.d.ts +0 -27
  893. package/dist/core/freedom/config.d.ts.map +0 -1
  894. package/dist/core/freedom/config.js +0 -216
  895. package/dist/core/freedom/config.js.map +0 -1
  896. package/dist/core/freedom/index.d.ts +0 -23
  897. package/dist/core/freedom/index.d.ts.map +0 -1
  898. package/dist/core/freedom/index.js +0 -19
  899. package/dist/core/freedom/index.js.map +0 -1
  900. package/dist/core/freedom/policy.d.ts +0 -42
  901. package/dist/core/freedom/policy.d.ts.map +0 -1
  902. package/dist/core/freedom/policy.js +0 -47
  903. package/dist/core/freedom/policy.js.map +0 -1
  904. package/dist/core/freedom/safety-floor.d.ts +0 -73
  905. package/dist/core/freedom/safety-floor.d.ts.map +0 -1
  906. package/dist/core/freedom/safety-floor.js +0 -275
  907. package/dist/core/freedom/safety-floor.js.map +0 -1
  908. package/dist/core/harness-control-events.d.ts +0 -91
  909. package/dist/core/harness-control-events.d.ts.map +0 -1
  910. package/dist/core/harness-control-events.js +0 -514
  911. package/dist/core/harness-control-events.js.map +0 -1
  912. package/dist/core/harness-control-replay.d.ts +0 -31
  913. package/dist/core/harness-control-replay.d.ts.map +0 -1
  914. package/dist/core/harness-control-replay.js +0 -187
  915. package/dist/core/harness-control-replay.js.map +0 -1
  916. package/dist/core/headroom-middleware.d.ts +0 -35
  917. package/dist/core/headroom-middleware.d.ts.map +0 -1
  918. package/dist/core/headroom-middleware.js +0 -166
  919. package/dist/core/headroom-middleware.js.map +0 -1
  920. package/dist/core/lean-context-middleware.d.ts +0 -12
  921. package/dist/core/lean-context-middleware.d.ts.map +0 -1
  922. package/dist/core/lean-context-middleware.js +0 -87
  923. package/dist/core/lean-context-middleware.js.map +0 -1
  924. package/dist/core/lean-context-policy.d.ts +0 -45
  925. package/dist/core/lean-context-policy.d.ts.map +0 -1
  926. package/dist/core/lean-context-policy.js +0 -108
  927. package/dist/core/lean-context-policy.js.map +0 -1
  928. package/dist/core/native-adoption-benchmark.d.ts +0 -166
  929. package/dist/core/native-adoption-benchmark.d.ts.map +0 -1
  930. package/dist/core/native-adoption-benchmark.js +0 -624
  931. package/dist/core/native-adoption-benchmark.js.map +0 -1
  932. package/dist/core/observability-trace.d.ts +0 -80
  933. package/dist/core/observability-trace.d.ts.map +0 -1
  934. package/dist/core/observability-trace.js +0 -140
  935. package/dist/core/observability-trace.js.map +0 -1
  936. package/dist/core/orchestration/checkpoint.d.ts +0 -83
  937. package/dist/core/orchestration/checkpoint.d.ts.map +0 -1
  938. package/dist/core/orchestration/checkpoint.js +0 -152
  939. package/dist/core/orchestration/checkpoint.js.map +0 -1
  940. package/dist/core/orchestration/errors.d.ts +0 -74
  941. package/dist/core/orchestration/errors.d.ts.map +0 -1
  942. package/dist/core/orchestration/errors.js +0 -52
  943. package/dist/core/orchestration/errors.js.map +0 -1
  944. package/dist/core/orchestration/merge-queue.d.ts +0 -121
  945. package/dist/core/orchestration/merge-queue.d.ts.map +0 -1
  946. package/dist/core/orchestration/merge-queue.js +0 -149
  947. package/dist/core/orchestration/merge-queue.js.map +0 -1
  948. package/dist/core/orchestration/recovery.d.ts +0 -106
  949. package/dist/core/orchestration/recovery.d.ts.map +0 -1
  950. package/dist/core/orchestration/recovery.js +0 -110
  951. package/dist/core/orchestration/recovery.js.map +0 -1
  952. package/dist/core/orchestration/replay-ledger.d.ts +0 -76
  953. package/dist/core/orchestration/replay-ledger.d.ts.map +0 -1
  954. package/dist/core/orchestration/replay-ledger.js +0 -395
  955. package/dist/core/orchestration/replay-ledger.js.map +0 -1
  956. package/dist/core/orchestration/scheduler-state.d.ts +0 -78
  957. package/dist/core/orchestration/scheduler-state.d.ts.map +0 -1
  958. package/dist/core/orchestration/scheduler-state.js +0 -185
  959. package/dist/core/orchestration/scheduler-state.js.map +0 -1
  960. package/dist/core/orchestration/scheduler-store.d.ts +0 -309
  961. package/dist/core/orchestration/scheduler-store.d.ts.map +0 -1
  962. package/dist/core/orchestration/scheduler-store.js +0 -368
  963. package/dist/core/orchestration/scheduler-store.js.map +0 -1
  964. package/dist/core/orchestration/sqlite-scheduler-store.d.ts +0 -57
  965. package/dist/core/orchestration/sqlite-scheduler-store.d.ts.map +0 -1
  966. package/dist/core/orchestration/sqlite-scheduler-store.js +0 -528
  967. package/dist/core/orchestration/sqlite-scheduler-store.js.map +0 -1
  968. package/dist/core/orchestration/transaction-coordinator.d.ts +0 -217
  969. package/dist/core/orchestration/transaction-coordinator.d.ts.map +0 -1
  970. package/dist/core/orchestration/transaction-coordinator.js +0 -281
  971. package/dist/core/orchestration/transaction-coordinator.js.map +0 -1
  972. package/dist/core/orchestration/verification-contract.d.ts +0 -197
  973. package/dist/core/orchestration/verification-contract.d.ts.map +0 -1
  974. package/dist/core/orchestration/verification-contract.js +0 -145
  975. package/dist/core/orchestration/verification-contract.js.map +0 -1
  976. package/dist/core/package-composition.d.ts +0 -68
  977. package/dist/core/package-composition.d.ts.map +0 -1
  978. package/dist/core/package-composition.js +0 -304
  979. package/dist/core/package-composition.js.map +0 -1
  980. package/dist/core/package-trial-runtime.d.ts +0 -75
  981. package/dist/core/package-trial-runtime.d.ts.map +0 -1
  982. package/dist/core/package-trial-runtime.js +0 -73
  983. package/dist/core/package-trial-runtime.js.map +0 -1
  984. package/dist/core/package-trial-sandbox.d.ts +0 -27
  985. package/dist/core/package-trial-sandbox.d.ts.map +0 -1
  986. package/dist/core/package-trial-sandbox.js +0 -102
  987. package/dist/core/package-trial-sandbox.js.map +0 -1
  988. package/dist/core/policy-overlays-runtime.d.ts +0 -141
  989. package/dist/core/policy-overlays-runtime.d.ts.map +0 -1
  990. package/dist/core/policy-overlays-runtime.js +0 -720
  991. package/dist/core/policy-overlays-runtime.js.map +0 -1
  992. package/dist/core/read-anchor-registry.d.ts +0 -27
  993. package/dist/core/read-anchor-registry.d.ts.map +0 -1
  994. package/dist/core/read-anchor-registry.js +0 -103
  995. package/dist/core/read-anchor-registry.js.map +0 -1
  996. package/dist/core/read-content-cache.d.ts +0 -22
  997. package/dist/core/read-content-cache.d.ts.map +0 -1
  998. package/dist/core/read-content-cache.js +0 -79
  999. package/dist/core/read-content-cache.js.map +0 -1
  1000. package/dist/core/session-digest.d.ts +0 -57
  1001. package/dist/core/session-digest.d.ts.map +0 -1
  1002. package/dist/core/session-digest.js +0 -193
  1003. package/dist/core/session-digest.js.map +0 -1
  1004. package/dist/core/spec-kit/compiler.d.ts +0 -67
  1005. package/dist/core/spec-kit/compiler.d.ts.map +0 -1
  1006. package/dist/core/spec-kit/compiler.js +0 -268
  1007. package/dist/core/spec-kit/compiler.js.map +0 -1
  1008. package/dist/core/transaction-coordinator.d.ts +0 -30
  1009. package/dist/core/transaction-coordinator.d.ts.map +0 -1
  1010. package/dist/core/transaction-coordinator.js +0 -173
  1011. package/dist/core/transaction-coordinator.js.map +0 -1
  1012. package/dist/modes/interactive/components/mcp-selector.d.ts +0 -30
  1013. package/dist/modes/interactive/components/mcp-selector.d.ts.map +0 -1
  1014. package/dist/modes/interactive/components/mcp-selector.js +0 -155
  1015. package/dist/modes/interactive/components/mcp-selector.js.map +0 -1
  1016. package/dist/modes/interactive/components/model-selector-state.d.ts +0 -101
  1017. package/dist/modes/interactive/components/model-selector-state.d.ts.map +0 -1
  1018. package/dist/modes/interactive/components/model-selector-state.js +0 -261
  1019. package/dist/modes/interactive/components/model-selector-state.js.map +0 -1
  1020. package/dist/modes/interactive/components/skills-selector.d.ts +0 -32
  1021. package/dist/modes/interactive/components/skills-selector.d.ts.map +0 -1
  1022. package/dist/modes/interactive/components/skills-selector.js +0 -130
  1023. package/dist/modes/interactive/components/skills-selector.js.map +0 -1
  1024. package/dist/modes/interactive/theme/omk-blackboard.json +0 -91
  1025. package/dist/modes/interactive/theme/omk-freedom-grid.json +0 -91
  1026. package/dist/modes/interactive/theme/omk-neon-ops.json +0 -90
  1027. package/dist/modes/interactive/theme/omk-slate-light.json +0 -91
  1028. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -72
  1029. package/node_modules/@earendil-works/omk-agent-core/README.md +0 -488
  1030. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts +0 -24
  1031. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts.map +0 -1
  1032. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js +0 -553
  1033. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js.map +0 -1
  1034. package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts +0 -118
  1035. package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts.map +0 -1
  1036. package/node_modules/@earendil-works/omk-agent-core/dist/agent.js +0 -402
  1037. package/node_modules/@earendil-works/omk-agent-core/dist/agent.js.map +0 -1
  1038. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts +0 -95
  1039. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts.map +0 -1
  1040. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js +0 -996
  1041. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js.map +0 -1
  1042. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts +0 -53
  1043. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +0 -1
  1044. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js +0 -175
  1045. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js.map +0 -1
  1046. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts +0 -117
  1047. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts.map +0 -1
  1048. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js +0 -568
  1049. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js.map +0 -1
  1050. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts +0 -25
  1051. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts.map +0 -1
  1052. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js +0 -131
  1053. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js.map +0 -1
  1054. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts +0 -51
  1055. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts.map +0 -1
  1056. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js +0 -510
  1057. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js.map +0 -1
  1058. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts +0 -51
  1059. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts.map +0 -1
  1060. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js +0 -102
  1061. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js.map +0 -1
  1062. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts +0 -48
  1063. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts.map +0 -1
  1064. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js +0 -230
  1065. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js.map +0 -1
  1066. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts +0 -26
  1067. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts.map +0 -1
  1068. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js +0 -101
  1069. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js.map +0 -1
  1070. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts +0 -36
  1071. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts.map +0 -1
  1072. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js +0 -273
  1073. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js.map +0 -1
  1074. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts +0 -18
  1075. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts.map +0 -1
  1076. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js +0 -42
  1077. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js.map +0 -1
  1078. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts +0 -25
  1079. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts.map +0 -1
  1080. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js +0 -114
  1081. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js.map +0 -1
  1082. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts +0 -11
  1083. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts.map +0 -1
  1084. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js +0 -39
  1085. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js.map +0 -1
  1086. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts +0 -33
  1087. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts.map +0 -1
  1088. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js +0 -210
  1089. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js.map +0 -1
  1090. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts +0 -2
  1091. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts.map +0 -1
  1092. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js +0 -50
  1093. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js.map +0 -1
  1094. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts +0 -44
  1095. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts.map +0 -1
  1096. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js +0 -311
  1097. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js.map +0 -1
  1098. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts +0 -3
  1099. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts.map +0 -1
  1100. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js +0 -30
  1101. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js.map +0 -1
  1102. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts +0 -616
  1103. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts.map +0 -1
  1104. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js +0 -94
  1105. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js.map +0 -1
  1106. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts +0 -14
  1107. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts.map +0 -1
  1108. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js +0 -126
  1109. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js.map +0 -1
  1110. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts +0 -70
  1111. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts.map +0 -1
  1112. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js +0 -297
  1113. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js.map +0 -1
  1114. package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts +0 -20
  1115. package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts.map +0 -1
  1116. package/node_modules/@earendil-works/omk-agent-core/dist/index.js +0 -25
  1117. package/node_modules/@earendil-works/omk-agent-core/dist/index.js.map +0 -1
  1118. package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts +0 -3
  1119. package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts.map +0 -1
  1120. package/node_modules/@earendil-works/omk-agent-core/dist/node.js +0 -3
  1121. package/node_modules/@earendil-works/omk-agent-core/dist/node.js.map +0 -1
  1122. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts +0 -69
  1123. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts.map +0 -1
  1124. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js +0 -278
  1125. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js.map +0 -1
  1126. package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts +0 -393
  1127. package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts.map +0 -1
  1128. package/node_modules/@earendil-works/omk-agent-core/dist/types.js +0 -2
  1129. package/node_modules/@earendil-works/omk-agent-core/dist/types.js.map +0 -1
  1130. package/node_modules/@earendil-works/omk-agent-core/package.json +0 -60
  1131. package/node_modules/@earendil-works/omk-ai/README.md +0 -1389
  1132. package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts +0 -20
  1133. package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts.map +0 -1
  1134. package/node_modules/@earendil-works/omk-ai/dist/api-registry.js +0 -44
  1135. package/node_modules/@earendil-works/omk-ai/dist/api-registry.js.map +0 -1
  1136. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts +0 -5
  1137. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts.map +0 -1
  1138. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js +0 -6
  1139. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js.map +0 -1
  1140. package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts +0 -3
  1141. package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts.map +0 -1
  1142. package/node_modules/@earendil-works/omk-ai/dist/cli.js +0 -130
  1143. package/node_modules/@earendil-works/omk-ai/dist/cli.js.map +0 -1
  1144. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts +0 -20
  1145. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts.map +0 -1
  1146. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js +0 -199
  1147. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js.map +0 -1
  1148. package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts +0 -10
  1149. package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts.map +0 -1
  1150. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts +0 -515
  1151. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts.map +0 -1
  1152. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js +0 -517
  1153. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js.map +0 -1
  1154. package/node_modules/@earendil-works/omk-ai/dist/image-models.js +0 -23
  1155. package/node_modules/@earendil-works/omk-ai/dist/image-models.js.map +0 -1
  1156. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts +0 -14
  1157. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts.map +0 -1
  1158. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js +0 -22
  1159. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js.map +0 -1
  1160. package/node_modules/@earendil-works/omk-ai/dist/images.d.ts +0 -4
  1161. package/node_modules/@earendil-works/omk-ai/dist/images.d.ts.map +0 -1
  1162. package/node_modules/@earendil-works/omk-ai/dist/images.js +0 -16
  1163. package/node_modules/@earendil-works/omk-ai/dist/images.js.map +0 -1
  1164. package/node_modules/@earendil-works/omk-ai/dist/index.d.ts +0 -33
  1165. package/node_modules/@earendil-works/omk-ai/dist/index.d.ts.map +0 -1
  1166. package/node_modules/@earendil-works/omk-ai/dist/index.js +0 -21
  1167. package/node_modules/@earendil-works/omk-ai/dist/index.js.map +0 -1
  1168. package/node_modules/@earendil-works/omk-ai/dist/models.d.ts +0 -18
  1169. package/node_modules/@earendil-works/omk-ai/dist/models.d.ts.map +0 -1
  1170. package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts +0 -18762
  1171. package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts.map +0 -1
  1172. package/node_modules/@earendil-works/omk-ai/dist/models.generated.js +0 -17197
  1173. package/node_modules/@earendil-works/omk-ai/dist/models.generated.js.map +0 -1
  1174. package/node_modules/@earendil-works/omk-ai/dist/models.js +0 -78
  1175. package/node_modules/@earendil-works/omk-ai/dist/models.js.map +0 -1
  1176. package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts +0 -2
  1177. package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts.map +0 -1
  1178. package/node_modules/@earendil-works/omk-ai/dist/oauth.js +0 -2
  1179. package/node_modules/@earendil-works/omk-ai/dist/oauth.js.map +0 -1
  1180. package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts +0 -39
  1181. package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts.map +0 -1
  1182. package/node_modules/@earendil-works/omk-ai/dist/provider-network.js +0 -170
  1183. package/node_modules/@earendil-works/omk-ai/dist/provider-network.js.map +0 -1
  1184. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts +0 -38
  1185. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts.map +0 -1
  1186. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js +0 -826
  1187. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js.map +0 -1
  1188. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts +0 -77
  1189. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts.map +0 -1
  1190. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js +0 -1123
  1191. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js.map +0 -1
  1192. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts +0 -15
  1193. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts.map +0 -1
  1194. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js +0 -221
  1195. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js.map +0 -1
  1196. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts +0 -13
  1197. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts.map +0 -1
  1198. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js +0 -26
  1199. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js.map +0 -1
  1200. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts +0 -56
  1201. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts.map +0 -1
  1202. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js +0 -368
  1203. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js.map +0 -1
  1204. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts +0 -8
  1205. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts.map +0 -1
  1206. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js +0 -29
  1207. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js.map +0 -1
  1208. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts +0 -70
  1209. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts.map +0 -1
  1210. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js +0 -331
  1211. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js.map +0 -1
  1212. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts +0 -15
  1213. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts.map +0 -1
  1214. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js +0 -442
  1215. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js.map +0 -1
  1216. package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts +0 -13
  1217. package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts.map +0 -1
  1218. package/node_modules/@earendil-works/omk-ai/dist/providers/google.js +0 -402
  1219. package/node_modules/@earendil-works/omk-ai/dist/providers/google.js.map +0 -1
  1220. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts +0 -3
  1221. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts.map +0 -1
  1222. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js +0 -128
  1223. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js.map +0 -1
  1224. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts +0 -4
  1225. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts.map +0 -1
  1226. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js +0 -34
  1227. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js.map +0 -1
  1228. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts +0 -25
  1229. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts.map +0 -1
  1230. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js +0 -534
  1231. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js.map +0 -1
  1232. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts +0 -30
  1233. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts.map +0 -1
  1234. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js +0 -1171
  1235. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js.map +0 -1
  1236. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts +0 -19
  1237. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts.map +0 -1
  1238. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js +0 -977
  1239. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js.map +0 -1
  1240. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts +0 -11
  1241. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts.map +0 -1
  1242. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js +0 -22
  1243. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js.map +0 -1
  1244. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts +0 -18
  1245. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts.map +0 -1
  1246. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js +0 -496
  1247. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js.map +0 -1
  1248. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts +0 -13
  1249. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts.map +0 -1
  1250. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js +0 -233
  1251. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js.map +0 -1
  1252. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts +0 -35
  1253. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts.map +0 -1
  1254. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js +0 -254
  1255. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js.map +0 -1
  1256. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts +0 -8
  1257. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts.map +0 -1
  1258. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js +0 -42
  1259. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js.map +0 -1
  1260. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts +0 -13
  1261. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts.map +0 -1
  1262. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js +0 -82
  1263. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js.map +0 -1
  1264. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts +0 -8
  1265. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts.map +0 -1
  1266. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js +0 -184
  1267. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js.map +0 -1
  1268. package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts +0 -4
  1269. package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts.map +0 -1
  1270. package/node_modules/@earendil-works/omk-ai/dist/session-resources.js +0 -22
  1271. package/node_modules/@earendil-works/omk-ai/dist/session-resources.js.map +0 -1
  1272. package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts +0 -8
  1273. package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts.map +0 -1
  1274. package/node_modules/@earendil-works/omk-ai/dist/stream.js +0 -77
  1275. package/node_modules/@earendil-works/omk-ai/dist/stream.js.map +0 -1
  1276. package/node_modules/@earendil-works/omk-ai/dist/types.d.ts +0 -570
  1277. package/node_modules/@earendil-works/omk-ai/dist/types.d.ts.map +0 -1
  1278. package/node_modules/@earendil-works/omk-ai/dist/types.js +0 -2
  1279. package/node_modules/@earendil-works/omk-ai/dist/types.js.map +0 -1
  1280. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts +0 -6
  1281. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts.map +0 -1
  1282. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js +0 -34
  1283. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js.map +0 -1
  1284. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts +0 -19
  1285. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts.map +0 -1
  1286. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js +0 -25
  1287. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js.map +0 -1
  1288. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts +0 -21
  1289. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts.map +0 -1
  1290. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js +0 -81
  1291. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js.map +0 -1
  1292. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts +0 -3
  1293. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts.map +0 -1
  1294. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js +0 -14
  1295. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js.map +0 -1
  1296. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts +0 -2
  1297. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts.map +0 -1
  1298. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js +0 -8
  1299. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js.map +0 -1
  1300. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts +0 -16
  1301. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts.map +0 -1
  1302. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js +0 -113
  1303. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js.map +0 -1
  1304. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts +0 -10
  1305. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts.map +0 -1
  1306. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js +0 -97
  1307. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js.map +0 -1
  1308. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts +0 -25
  1309. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts.map +0 -1
  1310. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js +0 -335
  1311. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js.map +0 -1
  1312. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts +0 -21
  1313. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts.map +0 -1
  1314. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js +0 -56
  1315. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js.map +0 -1
  1316. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts +0 -30
  1317. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts.map +0 -1
  1318. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js +0 -280
  1319. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js.map +0 -1
  1320. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts +0 -58
  1321. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts.map +0 -1
  1322. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js +0 -122
  1323. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js.map +0 -1
  1324. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts +0 -3
  1325. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts.map +0 -1
  1326. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js +0 -105
  1327. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js.map +0 -1
  1328. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts +0 -43
  1329. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts.map +0 -1
  1330. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js +0 -487
  1331. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js.map +0 -1
  1332. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts +0 -13
  1333. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts.map +0 -1
  1334. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js +0 -31
  1335. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js.map +0 -1
  1336. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts +0 -64
  1337. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts.map +0 -1
  1338. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js +0 -2
  1339. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js.map +0 -1
  1340. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts +0 -57
  1341. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts.map +0 -1
  1342. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js +0 -154
  1343. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js.map +0 -1
  1344. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts +0 -22
  1345. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts.map +0 -1
  1346. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js +0 -26
  1347. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js.map +0 -1
  1348. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts +0 -17
  1349. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts.map +0 -1
  1350. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js +0 -21
  1351. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js.map +0 -1
  1352. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts +0 -18
  1353. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts.map +0 -1
  1354. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js +0 -281
  1355. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js.map +0 -1
  1356. package/node_modules/@earendil-works/omk-ai/package.json +0 -106
  1357. package/node_modules/@earendil-works/omk-tui/README.md +0 -791
  1358. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts +0 -54
  1359. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts.map +0 -1
  1360. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js +0 -632
  1361. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js.map +0 -1
  1362. package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts +0 -22
  1363. package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts.map +0 -1
  1364. package/node_modules/@earendil-works/omk-tui/dist/components/box.js +0 -104
  1365. package/node_modules/@earendil-works/omk-tui/dist/components/box.js.map +0 -1
  1366. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts +0 -22
  1367. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts.map +0 -1
  1368. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js +0 -35
  1369. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js.map +0 -1
  1370. package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts +0 -249
  1371. package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts.map +0 -1
  1372. package/node_modules/@earendil-works/omk-tui/dist/components/editor.js +0 -1857
  1373. package/node_modules/@earendil-works/omk-tui/dist/components/editor.js.map +0 -1
  1374. package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts +0 -28
  1375. package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts.map +0 -1
  1376. package/node_modules/@earendil-works/omk-tui/dist/components/image.js +0 -89
  1377. package/node_modules/@earendil-works/omk-tui/dist/components/image.js.map +0 -1
  1378. package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts +0 -37
  1379. package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts.map +0 -1
  1380. package/node_modules/@earendil-works/omk-tui/dist/components/input.js +0 -378
  1381. package/node_modules/@earendil-works/omk-tui/dist/components/input.js.map +0 -1
  1382. package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts +0 -31
  1383. package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts.map +0 -1
  1384. package/node_modules/@earendil-works/omk-tui/dist/components/loader.js +0 -69
  1385. package/node_modules/@earendil-works/omk-tui/dist/components/loader.js.map +0 -1
  1386. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts +0 -96
  1387. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts.map +0 -1
  1388. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js +0 -644
  1389. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js.map +0 -1
  1390. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts +0 -50
  1391. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts.map +0 -1
  1392. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js +0 -159
  1393. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js.map +0 -1
  1394. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts +0 -50
  1395. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts.map +0 -1
  1396. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js +0 -185
  1397. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js.map +0 -1
  1398. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts +0 -12
  1399. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts.map +0 -1
  1400. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js +0 -23
  1401. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js.map +0 -1
  1402. package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts +0 -19
  1403. package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts.map +0 -1
  1404. package/node_modules/@earendil-works/omk-tui/dist/components/text.js +0 -89
  1405. package/node_modules/@earendil-works/omk-tui/dist/components/text.js.map +0 -1
  1406. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts +0 -13
  1407. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts.map +0 -1
  1408. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js +0 -51
  1409. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js.map +0 -1
  1410. package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts +0 -39
  1411. package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts.map +0 -1
  1412. package/node_modules/@earendil-works/omk-tui/dist/editor-component.js +0 -2
  1413. package/node_modules/@earendil-works/omk-tui/dist/editor-component.js.map +0 -1
  1414. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts +0 -16
  1415. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts.map +0 -1
  1416. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js +0 -110
  1417. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js.map +0 -1
  1418. package/node_modules/@earendil-works/omk-tui/dist/index.d.ts +0 -23
  1419. package/node_modules/@earendil-works/omk-tui/dist/index.d.ts.map +0 -1
  1420. package/node_modules/@earendil-works/omk-tui/dist/index.js +0 -32
  1421. package/node_modules/@earendil-works/omk-tui/dist/index.js.map +0 -1
  1422. package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts +0 -212
  1423. package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts.map +0 -1
  1424. package/node_modules/@earendil-works/omk-tui/dist/keybindings.js +0 -252
  1425. package/node_modules/@earendil-works/omk-tui/dist/keybindings.js.map +0 -1
  1426. package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts +0 -184
  1427. package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts.map +0 -1
  1428. package/node_modules/@earendil-works/omk-tui/dist/keys.js +0 -1173
  1429. package/node_modules/@earendil-works/omk-tui/dist/keys.js.map +0 -1
  1430. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts +0 -28
  1431. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts.map +0 -1
  1432. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js +0 -44
  1433. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js.map +0 -1
  1434. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts +0 -3
  1435. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts.map +0 -1
  1436. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js +0 -53
  1437. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js.map +0 -1
  1438. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts +0 -50
  1439. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts.map +0 -1
  1440. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js +0 -361
  1441. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js.map +0 -1
  1442. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts +0 -90
  1443. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts.map +0 -1
  1444. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js +0 -366
  1445. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js.map +0 -1
  1446. package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts +0 -113
  1447. package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts.map +0 -1
  1448. package/node_modules/@earendil-works/omk-tui/dist/terminal.js +0 -472
  1449. package/node_modules/@earendil-works/omk-tui/dist/terminal.js.map +0 -1
  1450. package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts +0 -242
  1451. package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts.map +0 -1
  1452. package/node_modules/@earendil-works/omk-tui/dist/tui.js +0 -1221
  1453. package/node_modules/@earendil-works/omk-tui/dist/tui.js.map +0 -1
  1454. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts +0 -17
  1455. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts.map +0 -1
  1456. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js +0 -25
  1457. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js.map +0 -1
  1458. package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts +0 -84
  1459. package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts.map +0 -1
  1460. package/node_modules/@earendil-works/omk-tui/dist/utils.js +0 -1032
  1461. package/node_modules/@earendil-works/omk-tui/dist/utils.js.map +0 -1
  1462. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts +0 -25
  1463. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts.map +0 -1
  1464. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js +0 -96
  1465. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js.map +0 -1
  1466. package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  1467. package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  1468. package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  1469. package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  1470. package/node_modules/@earendil-works/omk-tui/package.json +0 -47
@@ -1 +0,0 @@
1
- {"version":3,"file":"headroom-middleware.js","sourceRoot":"","sources":["../../src/core/headroom-middleware.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BeforeProviderSend, Context, TextContent, ToolResultMessage } from \"@earendil-works/omk-ai\";\nimport { estimateLeanContextTokens } from \"./lean-context-policy.ts\";\n\nconst DEFAULT_THRESHOLD_TOKENS = 2_048;\nconst LEAN_CONTEXT_STUB_PREFIX = \"[lean-context]\";\n\nconst DEFAULT_SECRET_PATTERNS: readonly RegExp[] = [\n\t/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/i,\n\t/\\b(?:api[_-]?key|access[_-]?token|auth[_-]?token|refresh[_-]?token|client[_-]?secret|secret|password|passwd|pwd)\\b\\s*[:=]\\s*[\"']?[^\\s\"']{8,}/i,\n\t/\\bauthorization\\s*:\\s*bearer\\s+[A-Za-z0-9._~+/=-]{10,}/i,\n\t/\\b(?:gh[pousr]_|sk-|xox[baprs]-)[A-Za-z0-9_=-]{10,}/i,\n];\n\nexport interface HeadroomCompressTextInput {\n\treadonly text: string;\n\treadonly estimatedTokens: number;\n\treadonly thresholdTokens: number;\n\treadonly toolCallId: string;\n\treadonly toolName: string;\n\treadonly contentIndex: number;\n\treadonly isError: boolean;\n\treadonly details?: unknown;\n}\n\nexport type HeadroomCompressText = (input: HeadroomCompressTextInput) => string | undefined;\n\nexport interface HeadroomBeforeProviderSendOptions {\n\treadonly compressText: HeadroomCompressText;\n\treadonly thresholdTokens?: number;\n\treadonly logsThresholdTokens?: number;\n\treadonly enabled?: boolean;\n}\n\nexport interface HeadroomBeforeProviderSendStats {\n\treadonly seenToolResultTextBlocks: number;\n\treadonly compressedBlocks: number;\n\treadonly skippedBelowThresholdBlocks: number;\n\treadonly skippedSecretBlocks: number;\n\treadonly skippedLeanContextBlocks: number;\n\treadonly failedOpenBlocks: number;\n\treadonly inputTokens: number;\n\treadonly outputTokens: number;\n}\n\nexport interface HeadroomBeforeProviderSend {\n\treadonly beforeProviderSend: BeforeProviderSend;\n\tgetStats(): HeadroomBeforeProviderSendStats;\n\treset(): void;\n}\n\nexport function createHeadroomBeforeProviderSend(\n\toptions: HeadroomBeforeProviderSendOptions,\n): HeadroomBeforeProviderSend {\n\tlet stats = createEmptyStats();\n\n\treturn {\n\t\tbeforeProviderSend(input) {\n\t\t\tif (options.enabled === false) return undefined;\n\t\t\tconst result = transformContext(input.context, options, stats);\n\t\t\tstats = result.stats;\n\t\t\treturn result.changed ? result.context : undefined;\n\t\t},\n\t\tgetStats() {\n\t\t\treturn { ...stats };\n\t\t},\n\t\treset() {\n\t\t\tstats = createEmptyStats();\n\t\t},\n\t};\n}\n\ninterface ContextTransformResult {\n\treadonly context: Context;\n\treadonly stats: HeadroomBeforeProviderSendStats;\n\treadonly changed: boolean;\n}\n\nfunction transformContext(\n\tcontext: Context,\n\toptions: HeadroomBeforeProviderSendOptions,\n\tinitialStats: HeadroomBeforeProviderSendStats,\n): ContextTransformResult {\n\tlet nextStats = initialStats;\n\tlet changed = false;\n\tconst messages = context.messages.map((message) => {\n\t\tif (message.role !== \"toolResult\") return message;\n\t\tconst result = transformToolResult(message, options, nextStats);\n\t\tnextStats = result.stats;\n\t\tchanged = changed || result.changed;\n\t\treturn result.message;\n\t});\n\n\treturn {\n\t\tcontext: changed ? { ...context, messages } : context,\n\t\tstats: nextStats,\n\t\tchanged,\n\t};\n}\n\ninterface ToolResultTransformResult {\n\treadonly message: ToolResultMessage<unknown>;\n\treadonly stats: HeadroomBeforeProviderSendStats;\n\treadonly changed: boolean;\n}\n\nfunction transformToolResult(\n\tmessage: ToolResultMessage<unknown>,\n\toptions: HeadroomBeforeProviderSendOptions,\n\tinitialStats: HeadroomBeforeProviderSendStats,\n): ToolResultTransformResult {\n\tlet nextStats = initialStats;\n\tlet changed = false;\n\tconst content = message.content.map((block, index) => {\n\t\tif (block.type !== \"text\") return block;\n\t\tconst result = transformTextBlock(block, message, index, options, nextStats);\n\t\tnextStats = result.stats;\n\t\tchanged = changed || result.changed;\n\t\treturn result.block;\n\t});\n\n\treturn {\n\t\tmessage: changed ? { ...message, content } : message,\n\t\tstats: nextStats,\n\t\tchanged,\n\t};\n}\n\ninterface TextBlockTransformResult {\n\treadonly block: TextContent;\n\treadonly stats: HeadroomBeforeProviderSendStats;\n\treadonly changed: boolean;\n}\n\nfunction transformTextBlock(\n\tblock: TextContent,\n\tmessage: ToolResultMessage<unknown>,\n\tcontentIndex: number,\n\toptions: HeadroomBeforeProviderSendOptions,\n\tinitialStats: HeadroomBeforeProviderSendStats,\n): TextBlockTransformResult {\n\tconst estimatedTokens = estimateLeanContextTokens(block.text);\n\tlet stats = incrementStats(initialStats, {\n\t\tseenToolResultTextBlocks: 1,\n\t\tinputTokens: estimatedTokens,\n\t});\n\n\tif (isLeanContextStub(block.text)) {\n\t\treturn { block, stats: incrementStats(stats, { skippedLeanContextBlocks: 1 }), changed: false };\n\t}\n\n\tif (containsSecretPattern(block.text)) {\n\t\treturn { block, stats: incrementStats(stats, { skippedSecretBlocks: 1 }), changed: false };\n\t}\n\n\tconst thresholdTokens = getThresholdTokens(options, message);\n\tif (estimatedTokens <= thresholdTokens) {\n\t\treturn { block, stats: incrementStats(stats, { skippedBelowThresholdBlocks: 1 }), changed: false };\n\t}\n\n\tlet compressed: string | undefined;\n\ttry {\n\t\tcompressed = options.compressText({\n\t\t\ttext: block.text,\n\t\t\testimatedTokens,\n\t\t\tthresholdTokens,\n\t\t\ttoolCallId: message.toolCallId,\n\t\t\ttoolName: message.toolName,\n\t\t\tcontentIndex,\n\t\t\tisError: message.isError,\n\t\t\tdetails: message.details,\n\t\t});\n\t} catch {\n\t\treturn { block, stats: incrementStats(stats, { failedOpenBlocks: 1 }), changed: false };\n\t}\n\n\tif (compressed === undefined) {\n\t\treturn { block, stats: incrementStats(stats, { failedOpenBlocks: 1 }), changed: false };\n\t}\n\n\tif (compressed === block.text) {\n\t\treturn { block, stats, changed: false };\n\t}\n\n\tstats = incrementStats(stats, {\n\t\tcompressedBlocks: 1,\n\t\toutputTokens: estimateLeanContextTokens(compressed),\n\t});\n\treturn { block: { ...block, text: compressed }, stats, changed: true };\n}\n\nfunction createEmptyStats(): HeadroomBeforeProviderSendStats {\n\treturn {\n\t\tseenToolResultTextBlocks: 0,\n\t\tcompressedBlocks: 0,\n\t\tskippedBelowThresholdBlocks: 0,\n\t\tskippedSecretBlocks: 0,\n\t\tskippedLeanContextBlocks: 0,\n\t\tfailedOpenBlocks: 0,\n\t\tinputTokens: 0,\n\t\toutputTokens: 0,\n\t};\n}\n\nfunction incrementStats(\n\tstats: HeadroomBeforeProviderSendStats,\n\tdelta: Partial<Record<keyof HeadroomBeforeProviderSendStats, number>>,\n): HeadroomBeforeProviderSendStats {\n\treturn {\n\t\tseenToolResultTextBlocks: stats.seenToolResultTextBlocks + (delta.seenToolResultTextBlocks ?? 0),\n\t\tcompressedBlocks: stats.compressedBlocks + (delta.compressedBlocks ?? 0),\n\t\tskippedBelowThresholdBlocks: stats.skippedBelowThresholdBlocks + (delta.skippedBelowThresholdBlocks ?? 0),\n\t\tskippedSecretBlocks: stats.skippedSecretBlocks + (delta.skippedSecretBlocks ?? 0),\n\t\tskippedLeanContextBlocks: stats.skippedLeanContextBlocks + (delta.skippedLeanContextBlocks ?? 0),\n\t\tfailedOpenBlocks: stats.failedOpenBlocks + (delta.failedOpenBlocks ?? 0),\n\t\tinputTokens: stats.inputTokens + (delta.inputTokens ?? 0),\n\t\toutputTokens: stats.outputTokens + (delta.outputTokens ?? 0),\n\t};\n}\n\nfunction getThresholdTokens(options: HeadroomBeforeProviderSendOptions, message: ToolResultMessage<unknown>): number {\n\tconst threshold = isLogLikeToolResult(message)\n\t\t? (options.logsThresholdTokens ?? options.thresholdTokens)\n\t\t: options.thresholdTokens;\n\tif (threshold === undefined) return DEFAULT_THRESHOLD_TOKENS;\n\tif (!Number.isFinite(threshold) || threshold < 0) return 0;\n\treturn Math.ceil(threshold);\n}\n\nfunction isLogLikeToolResult(message: ToolResultMessage<unknown>): boolean {\n\tif (/\\b(?:bash|exec|shell|log|logs|stderr|stdout)\\b/i.test(message.toolName)) return true;\n\tconst details = asRecord(message.details);\n\tif (!details) return false;\n\treturn [\"path\", \"filePath\", \"command\", \"query\"].some((key) => {\n\t\tconst value = details[key];\n\t\treturn typeof value === \"string\" && /(?:\\.log\\b|\\blogs?\\b|stderr|stdout|trace)/i.test(value);\n\t});\n}\n\nfunction isLeanContextStub(text: string): boolean {\n\treturn text.trimStart().startsWith(LEAN_CONTEXT_STUB_PREFIX);\n}\n\nfunction containsSecretPattern(text: string): boolean {\n\treturn DEFAULT_SECRET_PATTERNS.some((pattern) => regexTestStateless(pattern, text));\n}\n\nfunction regexTestStateless(pattern: RegExp, text: string): boolean {\n\tconst flags = pattern.flags.replace(/[gy]/g, \"\");\n\treturn new RegExp(pattern.source, flags).test(text);\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n"]}
@@ -1,12 +0,0 @@
1
- import type { BeforeProviderSend } from "@earendil-works/omk-ai";
2
- import { type LeanContextPolicyOptions, type LeanContextPolicyState } from "./lean-context-policy.ts";
3
- export interface LeanContextBeforeProviderSendOptions extends LeanContextPolicyOptions {
4
- readonly enabled?: boolean;
5
- }
6
- export interface LeanContextBeforeProviderSend {
7
- readonly beforeProviderSend: BeforeProviderSend;
8
- getState(): LeanContextPolicyState;
9
- reset(): void;
10
- }
11
- export declare function createLeanContextBeforeProviderSend(options?: LeanContextBeforeProviderSendOptions): LeanContextBeforeProviderSend;
12
- //# sourceMappingURL=lean-context-middleware.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lean-context-middleware.d.ts","sourceRoot":"","sources":["../../src/core/lean-context-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAA2C,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EAGN,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,oCAAqC,SAAQ,wBAAwB;IACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,IAAI,sBAAsB,CAAC;IACnC,KAAK,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,mCAAmC,CAClD,OAAO,GAAE,oCAAyC,GAChD,6BAA6B,CAiB/B","sourcesContent":["import type { BeforeProviderSend, Context, TextContent, ToolResultMessage } from \"@earendil-works/omk-ai\";\nimport {\n\tcreateLeanContextPolicyState,\n\tdecideLeanContextEmission,\n\ttype LeanContextPolicyOptions,\n\ttype LeanContextPolicyState,\n} from \"./lean-context-policy.ts\";\n\nexport interface LeanContextBeforeProviderSendOptions extends LeanContextPolicyOptions {\n\treadonly enabled?: boolean;\n}\n\nexport interface LeanContextBeforeProviderSend {\n\treadonly beforeProviderSend: BeforeProviderSend;\n\tgetState(): LeanContextPolicyState;\n\treset(): void;\n}\n\nexport function createLeanContextBeforeProviderSend(\n\toptions: LeanContextBeforeProviderSendOptions = {},\n): LeanContextBeforeProviderSend {\n\tlet state = createLeanContextPolicyState();\n\n\treturn {\n\t\tbeforeProviderSend(input) {\n\t\t\tif (options.enabled === false) return undefined;\n\t\t\tconst result = transformContext(input.context, state, options);\n\t\t\tstate = result.nextState;\n\t\t\treturn result.changed ? result.context : undefined;\n\t\t},\n\t\tgetState() {\n\t\t\treturn state;\n\t\t},\n\t\treset() {\n\t\t\tstate = createLeanContextPolicyState();\n\t\t},\n\t};\n}\n\ninterface ContextTransformResult {\n\treadonly context: Context;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly changed: boolean;\n}\n\nfunction transformContext(\n\tcontext: Context,\n\tinitialState: LeanContextPolicyState,\n\toptions: LeanContextBeforeProviderSendOptions,\n): ContextTransformResult {\n\tlet nextState = initialState;\n\tlet changed = false;\n\tconst messages = context.messages.map((message) => {\n\t\tif (message.role !== \"toolResult\") return message;\n\t\tconst result = transformToolResult(message, nextState, options);\n\t\tnextState = result.nextState;\n\t\tchanged = changed || result.changed;\n\t\treturn result.message;\n\t});\n\n\treturn {\n\t\tcontext: changed ? { ...context, messages } : context,\n\t\tnextState,\n\t\tchanged,\n\t};\n}\n\ninterface ToolResultTransformResult {\n\treadonly message: ToolResultMessage;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly changed: boolean;\n}\n\nfunction transformToolResult(\n\tmessage: ToolResultMessage,\n\tinitialState: LeanContextPolicyState,\n\toptions: LeanContextBeforeProviderSendOptions,\n): ToolResultTransformResult {\n\tlet nextState = initialState;\n\tlet changed = false;\n\tconst content = message.content.map((block, index) => {\n\t\tif (block.type !== \"text\") return block;\n\t\tconst key = extractLeanContextKey(message, index);\n\t\tconst decision = decideLeanContextEmission({\n\t\t\tstate: nextState,\n\t\t\ttool: message.toolName,\n\t\t\tkey,\n\t\t\tpath: key,\n\t\t\tcontent: block.text,\n\t\t\tminStubTokens: options.minStubTokens,\n\t\t\tneverStubFilenames: options.neverStubFilenames,\n\t\t\tsecretPatterns: options.secretPatterns,\n\t\t});\n\t\tnextState = decision.nextState;\n\t\tif (decision.emit !== \"stub\" || decision.stub === undefined) return block;\n\t\tchanged = true;\n\t\treturn { type: \"text\", text: decision.stub } satisfies TextContent;\n\t});\n\n\treturn {\n\t\tmessage: changed ? { ...message, content } : message,\n\t\tnextState,\n\t\tchanged,\n\t};\n}\n\nfunction extractLeanContextKey(message: ToolResultMessage, contentIndex: number): string {\n\tconst details = asRecord(message.details);\n\tconst detailKey = firstStringValue(details, [\"leanContextKey\", \"path\", \"filePath\", \"command\", \"query\"]);\n\treturn detailKey ?? `${message.toolName}:${message.toolCallId}:${contentIndex}`;\n}\n\nfunction firstStringValue(record: Record<string, unknown> | undefined, keys: readonly string[]): string | undefined {\n\tif (!record) return undefined;\n\tfor (const key of keys) {\n\t\tconst value = record[key];\n\t\tif (typeof value === \"string\" && value.trim().length > 0) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n"]}
@@ -1,87 +0,0 @@
1
- import { createLeanContextPolicyState, decideLeanContextEmission, } from "./lean-context-policy.js";
2
- export function createLeanContextBeforeProviderSend(options = {}) {
3
- let state = createLeanContextPolicyState();
4
- return {
5
- beforeProviderSend(input) {
6
- if (options.enabled === false)
7
- return undefined;
8
- const result = transformContext(input.context, state, options);
9
- state = result.nextState;
10
- return result.changed ? result.context : undefined;
11
- },
12
- getState() {
13
- return state;
14
- },
15
- reset() {
16
- state = createLeanContextPolicyState();
17
- },
18
- };
19
- }
20
- function transformContext(context, initialState, options) {
21
- let nextState = initialState;
22
- let changed = false;
23
- const messages = context.messages.map((message) => {
24
- if (message.role !== "toolResult")
25
- return message;
26
- const result = transformToolResult(message, nextState, options);
27
- nextState = result.nextState;
28
- changed = changed || result.changed;
29
- return result.message;
30
- });
31
- return {
32
- context: changed ? { ...context, messages } : context,
33
- nextState,
34
- changed,
35
- };
36
- }
37
- function transformToolResult(message, initialState, options) {
38
- let nextState = initialState;
39
- let changed = false;
40
- const content = message.content.map((block, index) => {
41
- if (block.type !== "text")
42
- return block;
43
- const key = extractLeanContextKey(message, index);
44
- const decision = decideLeanContextEmission({
45
- state: nextState,
46
- tool: message.toolName,
47
- key,
48
- path: key,
49
- content: block.text,
50
- minStubTokens: options.minStubTokens,
51
- neverStubFilenames: options.neverStubFilenames,
52
- secretPatterns: options.secretPatterns,
53
- });
54
- nextState = decision.nextState;
55
- if (decision.emit !== "stub" || decision.stub === undefined)
56
- return block;
57
- changed = true;
58
- return { type: "text", text: decision.stub };
59
- });
60
- return {
61
- message: changed ? { ...message, content } : message,
62
- nextState,
63
- changed,
64
- };
65
- }
66
- function extractLeanContextKey(message, contentIndex) {
67
- const details = asRecord(message.details);
68
- const detailKey = firstStringValue(details, ["leanContextKey", "path", "filePath", "command", "query"]);
69
- return detailKey ?? `${message.toolName}:${message.toolCallId}:${contentIndex}`;
70
- }
71
- function firstStringValue(record, keys) {
72
- if (!record)
73
- return undefined;
74
- for (const key of keys) {
75
- const value = record[key];
76
- if (typeof value === "string" && value.trim().length > 0) {
77
- return value;
78
- }
79
- }
80
- return undefined;
81
- }
82
- function asRecord(value) {
83
- return typeof value === "object" && value !== null && !Array.isArray(value)
84
- ? value
85
- : undefined;
86
- }
87
- //# sourceMappingURL=lean-context-middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lean-context-middleware.js","sourceRoot":"","sources":["../../src/core/lean-context-middleware.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BeforeProviderSend, Context, TextContent, ToolResultMessage } from \"@earendil-works/omk-ai\";\nimport {\n\tcreateLeanContextPolicyState,\n\tdecideLeanContextEmission,\n\ttype LeanContextPolicyOptions,\n\ttype LeanContextPolicyState,\n} from \"./lean-context-policy.ts\";\n\nexport interface LeanContextBeforeProviderSendOptions extends LeanContextPolicyOptions {\n\treadonly enabled?: boolean;\n}\n\nexport interface LeanContextBeforeProviderSend {\n\treadonly beforeProviderSend: BeforeProviderSend;\n\tgetState(): LeanContextPolicyState;\n\treset(): void;\n}\n\nexport function createLeanContextBeforeProviderSend(\n\toptions: LeanContextBeforeProviderSendOptions = {},\n): LeanContextBeforeProviderSend {\n\tlet state = createLeanContextPolicyState();\n\n\treturn {\n\t\tbeforeProviderSend(input) {\n\t\t\tif (options.enabled === false) return undefined;\n\t\t\tconst result = transformContext(input.context, state, options);\n\t\t\tstate = result.nextState;\n\t\t\treturn result.changed ? result.context : undefined;\n\t\t},\n\t\tgetState() {\n\t\t\treturn state;\n\t\t},\n\t\treset() {\n\t\t\tstate = createLeanContextPolicyState();\n\t\t},\n\t};\n}\n\ninterface ContextTransformResult {\n\treadonly context: Context;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly changed: boolean;\n}\n\nfunction transformContext(\n\tcontext: Context,\n\tinitialState: LeanContextPolicyState,\n\toptions: LeanContextBeforeProviderSendOptions,\n): ContextTransformResult {\n\tlet nextState = initialState;\n\tlet changed = false;\n\tconst messages = context.messages.map((message) => {\n\t\tif (message.role !== \"toolResult\") return message;\n\t\tconst result = transformToolResult(message, nextState, options);\n\t\tnextState = result.nextState;\n\t\tchanged = changed || result.changed;\n\t\treturn result.message;\n\t});\n\n\treturn {\n\t\tcontext: changed ? { ...context, messages } : context,\n\t\tnextState,\n\t\tchanged,\n\t};\n}\n\ninterface ToolResultTransformResult {\n\treadonly message: ToolResultMessage;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly changed: boolean;\n}\n\nfunction transformToolResult(\n\tmessage: ToolResultMessage,\n\tinitialState: LeanContextPolicyState,\n\toptions: LeanContextBeforeProviderSendOptions,\n): ToolResultTransformResult {\n\tlet nextState = initialState;\n\tlet changed = false;\n\tconst content = message.content.map((block, index) => {\n\t\tif (block.type !== \"text\") return block;\n\t\tconst key = extractLeanContextKey(message, index);\n\t\tconst decision = decideLeanContextEmission({\n\t\t\tstate: nextState,\n\t\t\ttool: message.toolName,\n\t\t\tkey,\n\t\t\tpath: key,\n\t\t\tcontent: block.text,\n\t\t\tminStubTokens: options.minStubTokens,\n\t\t\tneverStubFilenames: options.neverStubFilenames,\n\t\t\tsecretPatterns: options.secretPatterns,\n\t\t});\n\t\tnextState = decision.nextState;\n\t\tif (decision.emit !== \"stub\" || decision.stub === undefined) return block;\n\t\tchanged = true;\n\t\treturn { type: \"text\", text: decision.stub } satisfies TextContent;\n\t});\n\n\treturn {\n\t\tmessage: changed ? { ...message, content } : message,\n\t\tnextState,\n\t\tchanged,\n\t};\n}\n\nfunction extractLeanContextKey(message: ToolResultMessage, contentIndex: number): string {\n\tconst details = asRecord(message.details);\n\tconst detailKey = firstStringValue(details, [\"leanContextKey\", \"path\", \"filePath\", \"command\", \"query\"]);\n\treturn detailKey ?? `${message.toolName}:${message.toolCallId}:${contentIndex}`;\n}\n\nfunction firstStringValue(record: Record<string, unknown> | undefined, keys: readonly string[]): string | undefined {\n\tif (!record) return undefined;\n\tfor (const key of keys) {\n\t\tconst value = record[key];\n\t\tif (typeof value === \"string\" && value.trim().length > 0) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n"]}
@@ -1,45 +0,0 @@
1
- export declare const LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS = 256;
2
- export declare const LEAN_CONTEXT_NEVER_STUB_FILENAMES: readonly ["AGENTS.md", "CLAUDE.md", "SYSTEM.md"];
3
- export type LeanContextEmission = "full" | "stub";
4
- export type LeanContextDecisionReason = "first-pass" | "changed" | "unchanged" | "never-stub-parent-instruction" | "secret-pattern" | "below-min-token-threshold";
5
- export interface LeanContextPolicyState {
6
- readonly hashesByToolKey: Readonly<Record<string, string>>;
7
- }
8
- export interface LeanContextPolicyOptions {
9
- /** Repeated unchanged outputs below this token estimate stay full. */
10
- readonly minStubTokens?: number;
11
- /** Basenames that must never be replaced with an unchanged stub. */
12
- readonly neverStubFilenames?: readonly string[];
13
- /** Patterns that force full output when matched. */
14
- readonly secretPatterns?: readonly RegExp[];
15
- }
16
- export interface LeanContextPolicyInput extends LeanContextPolicyOptions {
17
- readonly state: LeanContextPolicyState;
18
- readonly tool: string;
19
- /** Stable caller-defined identity inside the tool, such as path or request key. */
20
- readonly key: string;
21
- readonly content: string;
22
- /** Optional path used for parent-instruction filename checks. Defaults to key. */
23
- readonly path?: string;
24
- }
25
- export interface LeanContextPolicyDecision {
26
- readonly emit: LeanContextEmission;
27
- readonly reason: LeanContextDecisionReason;
28
- readonly contentSha256: string;
29
- readonly previousSha256?: string;
30
- readonly estimatedTokens: number;
31
- readonly nextState: LeanContextPolicyState;
32
- readonly stub?: string;
33
- }
34
- export declare function createLeanContextPolicyState(hashesByToolKey?: Readonly<Record<string, string>>): LeanContextPolicyState;
35
- export declare function decideLeanContextEmission(input: LeanContextPolicyInput): LeanContextPolicyDecision;
36
- export declare function getLeanContextTrackingHash(state: LeanContextPolicyState, tool: string, key: string): string | undefined;
37
- export declare function createLeanContextTrackingKey(tool: string, key: string): string;
38
- export declare function estimateLeanContextTokens(content: string): number;
39
- export declare function formatLeanContextUnchangedStub(input: {
40
- readonly tool: string;
41
- readonly key: string;
42
- readonly contentSha256: string;
43
- readonly estimatedTokens: number;
44
- }): string;
45
- //# sourceMappingURL=lean-context-policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lean-context-policy.d.ts","sourceRoot":"","sources":["../../src/core/lean-context-policy.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oCAAoC,MAAM,CAAC;AACxD,eAAO,MAAM,iCAAiC,kDAAmD,CAAC;AASlG,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,yBAAyB,GAClC,YAAY,GACZ,SAAS,GACT,WAAW,GACX,+BAA+B,GAC/B,gBAAgB,GAChB,2BAA2B,CAAC;AAE/B,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,wBAAwB;IACxC,sEAAsE;IACtE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,oDAAoD;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAuB,SAAQ,wBAAwB;IACvE,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,4BAA4B,CAC3C,eAAe,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GACpD,sBAAsB,CAExB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,GAAG,yBAAyB,CA6ClG;AAED,wBAAgB,0BAA0B,CACzC,KAAK,EAAE,sBAAsB,EAC7B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CACjC,GAAG,MAAM,CAET","sourcesContent":["import { createHash } from \"node:crypto\";\n\nconst CHARS_PER_TOKEN_ESTIMATE = 4;\nconst TRACKING_KEY_SEPARATOR = \"\\u0000\";\n\nexport const LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS = 256;\nexport const LEAN_CONTEXT_NEVER_STUB_FILENAMES = [\"AGENTS.md\", \"CLAUDE.md\", \"SYSTEM.md\"] as const;\n\nconst DEFAULT_SECRET_PATTERNS: readonly RegExp[] = [\n\t/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/i,\n\t/\\b(?:api[_-]?key|access[_-]?token|auth[_-]?token|refresh[_-]?token|client[_-]?secret|password|passwd|pwd)\\b\\s*[:=]\\s*[\"']?[^\\s\"']{8,}/i,\n\t/\\bauthorization\\s*:\\s*bearer\\s+[A-Za-z0-9._~+/=-]{10,}/i,\n\t/\\b(?:gh[pousr]_|sk-|xox[baprs]-)[A-Za-z0-9_=-]{10,}/i,\n];\n\nexport type LeanContextEmission = \"full\" | \"stub\";\n\nexport type LeanContextDecisionReason =\n\t| \"first-pass\"\n\t| \"changed\"\n\t| \"unchanged\"\n\t| \"never-stub-parent-instruction\"\n\t| \"secret-pattern\"\n\t| \"below-min-token-threshold\";\n\nexport interface LeanContextPolicyState {\n\treadonly hashesByToolKey: Readonly<Record<string, string>>;\n}\n\nexport interface LeanContextPolicyOptions {\n\t/** Repeated unchanged outputs below this token estimate stay full. */\n\treadonly minStubTokens?: number;\n\t/** Basenames that must never be replaced with an unchanged stub. */\n\treadonly neverStubFilenames?: readonly string[];\n\t/** Patterns that force full output when matched. */\n\treadonly secretPatterns?: readonly RegExp[];\n}\n\nexport interface LeanContextPolicyInput extends LeanContextPolicyOptions {\n\treadonly state: LeanContextPolicyState;\n\treadonly tool: string;\n\t/** Stable caller-defined identity inside the tool, such as path or request key. */\n\treadonly key: string;\n\treadonly content: string;\n\t/** Optional path used for parent-instruction filename checks. Defaults to key. */\n\treadonly path?: string;\n}\n\nexport interface LeanContextPolicyDecision {\n\treadonly emit: LeanContextEmission;\n\treadonly reason: LeanContextDecisionReason;\n\treadonly contentSha256: string;\n\treadonly previousSha256?: string;\n\treadonly estimatedTokens: number;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly stub?: string;\n}\n\nexport function createLeanContextPolicyState(\n\thashesByToolKey: Readonly<Record<string, string>> = {},\n): LeanContextPolicyState {\n\treturn { hashesByToolKey: { ...hashesByToolKey } };\n}\n\nexport function decideLeanContextEmission(input: LeanContextPolicyInput): LeanContextPolicyDecision {\n\tconst contentSha256 = sha256Text(input.content);\n\tconst trackingKey = createLeanContextTrackingKey(input.tool, input.key);\n\tconst previousSha256 = input.state.hashesByToolKey[trackingKey];\n\tconst estimatedTokens = estimateLeanContextTokens(input.content);\n\tconst nextState = updateTrackedHash(input.state, trackingKey, contentSha256);\n\tconst baseDecision = {\n\t\tcontentSha256,\n\t\tpreviousSha256,\n\t\testimatedTokens,\n\t\tnextState,\n\t};\n\n\tif (previousSha256 === undefined) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"first-pass\" };\n\t}\n\n\tif (previousSha256 !== contentSha256) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"changed\" };\n\t}\n\n\tif (isNeverStubParentInstruction(input.path ?? input.key, input.neverStubFilenames)) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"never-stub-parent-instruction\" };\n\t}\n\n\tif (containsSecretPattern(input.content, input.secretPatterns)) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"secret-pattern\" };\n\t}\n\n\tconst minStubTokens = normalizeMinStubTokens(input.minStubTokens);\n\tif (estimatedTokens < minStubTokens) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"below-min-token-threshold\" };\n\t}\n\n\treturn {\n\t\t...baseDecision,\n\t\temit: \"stub\",\n\t\treason: \"unchanged\",\n\t\tstub: formatLeanContextUnchangedStub({\n\t\t\ttool: input.tool,\n\t\t\tkey: input.key,\n\t\t\tcontentSha256,\n\t\t\testimatedTokens,\n\t\t}),\n\t};\n}\n\nexport function getLeanContextTrackingHash(\n\tstate: LeanContextPolicyState,\n\ttool: string,\n\tkey: string,\n): string | undefined {\n\treturn state.hashesByToolKey[createLeanContextTrackingKey(tool, key)];\n}\n\nexport function createLeanContextTrackingKey(tool: string, key: string): string {\n\treturn `${tool}${TRACKING_KEY_SEPARATOR}${key}`;\n}\n\nexport function estimateLeanContextTokens(content: string): number {\n\tif (content.length === 0) return 0;\n\treturn Math.ceil(content.length / CHARS_PER_TOKEN_ESTIMATE);\n}\n\nexport function formatLeanContextUnchangedStub(input: {\n\treadonly tool: string;\n\treadonly key: string;\n\treadonly contentSha256: string;\n\treadonly estimatedTokens: number;\n}): string {\n\treturn `[lean-context] ${input.tool} result for ${input.key} unchanged; omitted ${input.estimatedTokens} estimated tokens (sha256:${input.contentSha256.slice(0, 12)}).`;\n}\n\nfunction updateTrackedHash(\n\tstate: LeanContextPolicyState,\n\ttrackingKey: string,\n\tcontentSha256: string,\n): LeanContextPolicyState {\n\tif (state.hashesByToolKey[trackingKey] === contentSha256) {\n\t\treturn state;\n\t}\n\treturn {\n\t\thashesByToolKey: {\n\t\t\t...state.hashesByToolKey,\n\t\t\t[trackingKey]: contentSha256,\n\t\t},\n\t};\n}\n\nfunction sha256Text(content: string): string {\n\treturn createHash(\"sha256\").update(content, \"utf8\").digest(\"hex\");\n}\n\nfunction isNeverStubParentInstruction(pathOrKey: string, filenames?: readonly string[]): boolean {\n\tconst allowedNames = filenames ?? LEAN_CONTEXT_NEVER_STUB_FILENAMES;\n\tconst basename = getBasename(pathOrKey).toUpperCase();\n\treturn allowedNames.some((name) => name.toUpperCase() === basename);\n}\n\nfunction getBasename(pathOrKey: string): string {\n\tconst normalized = pathOrKey.replaceAll(\"\\\\\", \"/\");\n\tconst parts = normalized.split(\"/\");\n\treturn parts.at(-1) ?? normalized;\n}\n\nfunction containsSecretPattern(content: string, patterns?: readonly RegExp[]): boolean {\n\tconst activePatterns = patterns ?? DEFAULT_SECRET_PATTERNS;\n\treturn activePatterns.some((pattern) => regexTestStateless(pattern, content));\n}\n\nfunction regexTestStateless(pattern: RegExp, content: string): boolean {\n\tconst flags = pattern.flags.replace(/[gy]/g, \"\");\n\treturn new RegExp(pattern.source, flags).test(content);\n}\n\nfunction normalizeMinStubTokens(value: number | undefined): number {\n\tif (value === undefined) return LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS;\n\tif (!Number.isFinite(value) || value <= 0) return 0;\n\treturn Math.ceil(value);\n}\n"]}
@@ -1,108 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- const CHARS_PER_TOKEN_ESTIMATE = 4;
3
- const TRACKING_KEY_SEPARATOR = "\u0000";
4
- export const LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS = 256;
5
- export const LEAN_CONTEXT_NEVER_STUB_FILENAMES = ["AGENTS.md", "CLAUDE.md", "SYSTEM.md"];
6
- const DEFAULT_SECRET_PATTERNS = [
7
- /-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/i,
8
- /\b(?:api[_-]?key|access[_-]?token|auth[_-]?token|refresh[_-]?token|client[_-]?secret|password|passwd|pwd)\b\s*[:=]\s*["']?[^\s"']{8,}/i,
9
- /\bauthorization\s*:\s*bearer\s+[A-Za-z0-9._~+/=-]{10,}/i,
10
- /\b(?:gh[pousr]_|sk-|xox[baprs]-)[A-Za-z0-9_=-]{10,}/i,
11
- ];
12
- export function createLeanContextPolicyState(hashesByToolKey = {}) {
13
- return { hashesByToolKey: { ...hashesByToolKey } };
14
- }
15
- export function decideLeanContextEmission(input) {
16
- const contentSha256 = sha256Text(input.content);
17
- const trackingKey = createLeanContextTrackingKey(input.tool, input.key);
18
- const previousSha256 = input.state.hashesByToolKey[trackingKey];
19
- const estimatedTokens = estimateLeanContextTokens(input.content);
20
- const nextState = updateTrackedHash(input.state, trackingKey, contentSha256);
21
- const baseDecision = {
22
- contentSha256,
23
- previousSha256,
24
- estimatedTokens,
25
- nextState,
26
- };
27
- if (previousSha256 === undefined) {
28
- return { ...baseDecision, emit: "full", reason: "first-pass" };
29
- }
30
- if (previousSha256 !== contentSha256) {
31
- return { ...baseDecision, emit: "full", reason: "changed" };
32
- }
33
- if (isNeverStubParentInstruction(input.path ?? input.key, input.neverStubFilenames)) {
34
- return { ...baseDecision, emit: "full", reason: "never-stub-parent-instruction" };
35
- }
36
- if (containsSecretPattern(input.content, input.secretPatterns)) {
37
- return { ...baseDecision, emit: "full", reason: "secret-pattern" };
38
- }
39
- const minStubTokens = normalizeMinStubTokens(input.minStubTokens);
40
- if (estimatedTokens < minStubTokens) {
41
- return { ...baseDecision, emit: "full", reason: "below-min-token-threshold" };
42
- }
43
- return {
44
- ...baseDecision,
45
- emit: "stub",
46
- reason: "unchanged",
47
- stub: formatLeanContextUnchangedStub({
48
- tool: input.tool,
49
- key: input.key,
50
- contentSha256,
51
- estimatedTokens,
52
- }),
53
- };
54
- }
55
- export function getLeanContextTrackingHash(state, tool, key) {
56
- return state.hashesByToolKey[createLeanContextTrackingKey(tool, key)];
57
- }
58
- export function createLeanContextTrackingKey(tool, key) {
59
- return `${tool}${TRACKING_KEY_SEPARATOR}${key}`;
60
- }
61
- export function estimateLeanContextTokens(content) {
62
- if (content.length === 0)
63
- return 0;
64
- return Math.ceil(content.length / CHARS_PER_TOKEN_ESTIMATE);
65
- }
66
- export function formatLeanContextUnchangedStub(input) {
67
- return `[lean-context] ${input.tool} result for ${input.key} unchanged; omitted ${input.estimatedTokens} estimated tokens (sha256:${input.contentSha256.slice(0, 12)}).`;
68
- }
69
- function updateTrackedHash(state, trackingKey, contentSha256) {
70
- if (state.hashesByToolKey[trackingKey] === contentSha256) {
71
- return state;
72
- }
73
- return {
74
- hashesByToolKey: {
75
- ...state.hashesByToolKey,
76
- [trackingKey]: contentSha256,
77
- },
78
- };
79
- }
80
- function sha256Text(content) {
81
- return createHash("sha256").update(content, "utf8").digest("hex");
82
- }
83
- function isNeverStubParentInstruction(pathOrKey, filenames) {
84
- const allowedNames = filenames ?? LEAN_CONTEXT_NEVER_STUB_FILENAMES;
85
- const basename = getBasename(pathOrKey).toUpperCase();
86
- return allowedNames.some((name) => name.toUpperCase() === basename);
87
- }
88
- function getBasename(pathOrKey) {
89
- const normalized = pathOrKey.replaceAll("\\", "/");
90
- const parts = normalized.split("/");
91
- return parts.at(-1) ?? normalized;
92
- }
93
- function containsSecretPattern(content, patterns) {
94
- const activePatterns = patterns ?? DEFAULT_SECRET_PATTERNS;
95
- return activePatterns.some((pattern) => regexTestStateless(pattern, content));
96
- }
97
- function regexTestStateless(pattern, content) {
98
- const flags = pattern.flags.replace(/[gy]/g, "");
99
- return new RegExp(pattern.source, flags).test(content);
100
- }
101
- function normalizeMinStubTokens(value) {
102
- if (value === undefined)
103
- return LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS;
104
- if (!Number.isFinite(value) || value <= 0)
105
- return 0;
106
- return Math.ceil(value);
107
- }
108
- //# sourceMappingURL=lean-context-policy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lean-context-policy.js","sourceRoot":"","sources":["../../src/core/lean-context-policy.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\n\nconst CHARS_PER_TOKEN_ESTIMATE = 4;\nconst TRACKING_KEY_SEPARATOR = \"\\u0000\";\n\nexport const LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS = 256;\nexport const LEAN_CONTEXT_NEVER_STUB_FILENAMES = [\"AGENTS.md\", \"CLAUDE.md\", \"SYSTEM.md\"] as const;\n\nconst DEFAULT_SECRET_PATTERNS: readonly RegExp[] = [\n\t/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/i,\n\t/\\b(?:api[_-]?key|access[_-]?token|auth[_-]?token|refresh[_-]?token|client[_-]?secret|password|passwd|pwd)\\b\\s*[:=]\\s*[\"']?[^\\s\"']{8,}/i,\n\t/\\bauthorization\\s*:\\s*bearer\\s+[A-Za-z0-9._~+/=-]{10,}/i,\n\t/\\b(?:gh[pousr]_|sk-|xox[baprs]-)[A-Za-z0-9_=-]{10,}/i,\n];\n\nexport type LeanContextEmission = \"full\" | \"stub\";\n\nexport type LeanContextDecisionReason =\n\t| \"first-pass\"\n\t| \"changed\"\n\t| \"unchanged\"\n\t| \"never-stub-parent-instruction\"\n\t| \"secret-pattern\"\n\t| \"below-min-token-threshold\";\n\nexport interface LeanContextPolicyState {\n\treadonly hashesByToolKey: Readonly<Record<string, string>>;\n}\n\nexport interface LeanContextPolicyOptions {\n\t/** Repeated unchanged outputs below this token estimate stay full. */\n\treadonly minStubTokens?: number;\n\t/** Basenames that must never be replaced with an unchanged stub. */\n\treadonly neverStubFilenames?: readonly string[];\n\t/** Patterns that force full output when matched. */\n\treadonly secretPatterns?: readonly RegExp[];\n}\n\nexport interface LeanContextPolicyInput extends LeanContextPolicyOptions {\n\treadonly state: LeanContextPolicyState;\n\treadonly tool: string;\n\t/** Stable caller-defined identity inside the tool, such as path or request key. */\n\treadonly key: string;\n\treadonly content: string;\n\t/** Optional path used for parent-instruction filename checks. Defaults to key. */\n\treadonly path?: string;\n}\n\nexport interface LeanContextPolicyDecision {\n\treadonly emit: LeanContextEmission;\n\treadonly reason: LeanContextDecisionReason;\n\treadonly contentSha256: string;\n\treadonly previousSha256?: string;\n\treadonly estimatedTokens: number;\n\treadonly nextState: LeanContextPolicyState;\n\treadonly stub?: string;\n}\n\nexport function createLeanContextPolicyState(\n\thashesByToolKey: Readonly<Record<string, string>> = {},\n): LeanContextPolicyState {\n\treturn { hashesByToolKey: { ...hashesByToolKey } };\n}\n\nexport function decideLeanContextEmission(input: LeanContextPolicyInput): LeanContextPolicyDecision {\n\tconst contentSha256 = sha256Text(input.content);\n\tconst trackingKey = createLeanContextTrackingKey(input.tool, input.key);\n\tconst previousSha256 = input.state.hashesByToolKey[trackingKey];\n\tconst estimatedTokens = estimateLeanContextTokens(input.content);\n\tconst nextState = updateTrackedHash(input.state, trackingKey, contentSha256);\n\tconst baseDecision = {\n\t\tcontentSha256,\n\t\tpreviousSha256,\n\t\testimatedTokens,\n\t\tnextState,\n\t};\n\n\tif (previousSha256 === undefined) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"first-pass\" };\n\t}\n\n\tif (previousSha256 !== contentSha256) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"changed\" };\n\t}\n\n\tif (isNeverStubParentInstruction(input.path ?? input.key, input.neverStubFilenames)) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"never-stub-parent-instruction\" };\n\t}\n\n\tif (containsSecretPattern(input.content, input.secretPatterns)) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"secret-pattern\" };\n\t}\n\n\tconst minStubTokens = normalizeMinStubTokens(input.minStubTokens);\n\tif (estimatedTokens < minStubTokens) {\n\t\treturn { ...baseDecision, emit: \"full\", reason: \"below-min-token-threshold\" };\n\t}\n\n\treturn {\n\t\t...baseDecision,\n\t\temit: \"stub\",\n\t\treason: \"unchanged\",\n\t\tstub: formatLeanContextUnchangedStub({\n\t\t\ttool: input.tool,\n\t\t\tkey: input.key,\n\t\t\tcontentSha256,\n\t\t\testimatedTokens,\n\t\t}),\n\t};\n}\n\nexport function getLeanContextTrackingHash(\n\tstate: LeanContextPolicyState,\n\ttool: string,\n\tkey: string,\n): string | undefined {\n\treturn state.hashesByToolKey[createLeanContextTrackingKey(tool, key)];\n}\n\nexport function createLeanContextTrackingKey(tool: string, key: string): string {\n\treturn `${tool}${TRACKING_KEY_SEPARATOR}${key}`;\n}\n\nexport function estimateLeanContextTokens(content: string): number {\n\tif (content.length === 0) return 0;\n\treturn Math.ceil(content.length / CHARS_PER_TOKEN_ESTIMATE);\n}\n\nexport function formatLeanContextUnchangedStub(input: {\n\treadonly tool: string;\n\treadonly key: string;\n\treadonly contentSha256: string;\n\treadonly estimatedTokens: number;\n}): string {\n\treturn `[lean-context] ${input.tool} result for ${input.key} unchanged; omitted ${input.estimatedTokens} estimated tokens (sha256:${input.contentSha256.slice(0, 12)}).`;\n}\n\nfunction updateTrackedHash(\n\tstate: LeanContextPolicyState,\n\ttrackingKey: string,\n\tcontentSha256: string,\n): LeanContextPolicyState {\n\tif (state.hashesByToolKey[trackingKey] === contentSha256) {\n\t\treturn state;\n\t}\n\treturn {\n\t\thashesByToolKey: {\n\t\t\t...state.hashesByToolKey,\n\t\t\t[trackingKey]: contentSha256,\n\t\t},\n\t};\n}\n\nfunction sha256Text(content: string): string {\n\treturn createHash(\"sha256\").update(content, \"utf8\").digest(\"hex\");\n}\n\nfunction isNeverStubParentInstruction(pathOrKey: string, filenames?: readonly string[]): boolean {\n\tconst allowedNames = filenames ?? LEAN_CONTEXT_NEVER_STUB_FILENAMES;\n\tconst basename = getBasename(pathOrKey).toUpperCase();\n\treturn allowedNames.some((name) => name.toUpperCase() === basename);\n}\n\nfunction getBasename(pathOrKey: string): string {\n\tconst normalized = pathOrKey.replaceAll(\"\\\\\", \"/\");\n\tconst parts = normalized.split(\"/\");\n\treturn parts.at(-1) ?? normalized;\n}\n\nfunction containsSecretPattern(content: string, patterns?: readonly RegExp[]): boolean {\n\tconst activePatterns = patterns ?? DEFAULT_SECRET_PATTERNS;\n\treturn activePatterns.some((pattern) => regexTestStateless(pattern, content));\n}\n\nfunction regexTestStateless(pattern: RegExp, content: string): boolean {\n\tconst flags = pattern.flags.replace(/[gy]/g, \"\");\n\treturn new RegExp(pattern.source, flags).test(content);\n}\n\nfunction normalizeMinStubTokens(value: number | undefined): number {\n\tif (value === undefined) return LEAN_CONTEXT_DEFAULT_MIN_STUB_TOKENS;\n\tif (!Number.isFinite(value) || value <= 0) return 0;\n\treturn Math.ceil(value);\n}\n"]}
@@ -1,166 +0,0 @@
1
- import { type RetrievalRanking, type ScoredContextCandidate } from "./context-graph-retrieval.ts";
2
- export declare const NATIVE_ADOPTION_BASELINE_SCHEMA_VERSION = "native-adoption-baseline.v1";
3
- export declare const DEFAULT_NATIVE_ADOPTION_SEED = 12648430;
4
- export type NativeAdoptionBenchmarkTarget = "selectMmrContext" | "fuseRrfRankings" | "scoreTopicalRelevance" | "scoreRetrievalCandidate" | "renderContextPack" | "cacheKeyControl";
5
- export type NativeAdoptionBottleneckClass = "cpu" | "io" | "provider" | "spawn" | "unknown";
6
- export type NativeAdoptionVerdict = "go" | "no-go" | "needs-telemetry";
7
- export interface NativeAdoptionFixtureOptions {
8
- candidateCount: number;
9
- embeddingDimensions: number;
10
- seed?: number;
11
- }
12
- export interface NativeAdoptionFixtureManifest {
13
- sha256: string;
14
- payloadBytes: number;
15
- candidateCount: number;
16
- embeddingDimensions: number;
17
- seed: number;
18
- }
19
- export interface NativeAdoptionFixture {
20
- seed: number;
21
- candidateCount: number;
22
- embeddingDimensions: number;
23
- query: string;
24
- queryEmbedding?: readonly number[];
25
- candidates: readonly ScoredContextCandidate[];
26
- rankings: readonly RetrievalRanking[];
27
- manifest: NativeAdoptionFixtureManifest;
28
- }
29
- export interface NativeAdoptionSampleStats {
30
- samples: number;
31
- minNs: number;
32
- maxNs: number;
33
- meanNs: number;
34
- p50Ns: number;
35
- p95Ns: number;
36
- p99Ns: number;
37
- coefficientOfVariation: number;
38
- }
39
- export interface NativeAdoptionTargetResult {
40
- target: NativeAdoptionBenchmarkTarget;
41
- operations: number;
42
- outputDigest: string;
43
- }
44
- export interface NativeAdoptionTargetMeasurement extends NativeAdoptionTargetResult {
45
- stats: NativeAdoptionSampleStats;
46
- sideEffects: NativeAdoptionSideEffectCounts;
47
- }
48
- export interface NativeAdoptionMeasureOptions {
49
- iterations?: number;
50
- warmupIterations?: number;
51
- clock?: () => number;
52
- }
53
- export interface NativeAdoptionGateInput {
54
- runtimeCallsites: number;
55
- bottleneckClass: NativeAdoptionBottleneckClass;
56
- typescriptP95Ns: number;
57
- projectedRustP95Ns: number;
58
- ipcOverheadP95Ns: number;
59
- movableFraction: number;
60
- startupP95Ms: number;
61
- rssDeltaMb: number;
62
- archiveDeltaMb: number;
63
- sideEffectViolations?: readonly string[];
64
- budgets?: Partial<NativeAdoptionGateBudgets>;
65
- }
66
- export interface NativeAdoptionGateBudgets {
67
- minTypeScriptP95Ns: number;
68
- minMovableFraction: number;
69
- maxIpcOverheadFraction: number;
70
- minProjectedNetSpeedup: number;
71
- maxStartupP95Ms: number;
72
- maxRssDeltaMb: number;
73
- maxArchiveDeltaMb: number;
74
- }
75
- export interface NativeAdoptionGateMetrics {
76
- retainedTypeScriptP95Ns: number;
77
- sidecarNetP95Ns: number;
78
- projectedNetSpeedup: number;
79
- cpuSpeedup: number;
80
- ipcOverheadFraction: number;
81
- movableFraction: number;
82
- }
83
- export interface NativeAdoptionGateDecision {
84
- verdict: NativeAdoptionVerdict;
85
- reasons: readonly string[];
86
- metrics: NativeAdoptionGateMetrics;
87
- budgets: NativeAdoptionGateBudgets;
88
- }
89
- export interface NativeAdoptionBaselineInput {
90
- repoSha: string;
91
- runtime: string;
92
- generatedAt: string;
93
- fixture: NativeAdoptionFixture;
94
- measurements: readonly NativeAdoptionTargetMeasurement[];
95
- decision: NativeAdoptionGateDecision;
96
- }
97
- export interface NativeAdoptionBaseline {
98
- schemaVersion: typeof NATIVE_ADOPTION_BASELINE_SCHEMA_VERSION;
99
- repoSha: string;
100
- runtime: string;
101
- generatedAt: string;
102
- env: Record<string, never>;
103
- fixture: NativeAdoptionFixtureManifest;
104
- measurements: readonly NativeAdoptionTargetMeasurement[];
105
- decision: NativeAdoptionGateDecision;
106
- }
107
- export interface NativeAdoptionSecretScanFinding {
108
- path: string;
109
- pattern: string;
110
- }
111
- export interface NativeAdoptionForbiddenImportFinding {
112
- path: string;
113
- specifier: string;
114
- statement: string;
115
- }
116
- export interface NativeAdoptionSideEffectCounts {
117
- network: number;
118
- spawn: number;
119
- fileRead: number;
120
- }
121
- export interface NativeAdoptionSideEffectRecorder {
122
- recordNetwork: () => never;
123
- recordSpawn: () => never;
124
- recordFileRead: () => never;
125
- }
126
- export interface NativeAdoptionGuardedResult<T> {
127
- value: T;
128
- sideEffects: NativeAdoptionSideEffectCounts;
129
- }
130
- export interface NativeAdoptionSourceFile {
131
- path: string;
132
- content: string;
133
- }
134
- export interface NativeAdoptionCallsiteInput {
135
- symbols: readonly string[];
136
- files: readonly NativeAdoptionSourceFile[];
137
- }
138
- export interface NativeAdoptionCallsiteSummary {
139
- runtimeCallsites: number;
140
- testCallsites: number;
141
- definitionCallsites: number;
142
- exportCallsites: number;
143
- harnessCallsites: number;
144
- bySymbol: Record<string, {
145
- runtime: number;
146
- test: number;
147
- definition: number;
148
- export: number;
149
- harness: number;
150
- }>;
151
- }
152
- export declare function createNativeAdoptionFixture(options: NativeAdoptionFixtureOptions): NativeAdoptionFixture;
153
- export declare function assertNativeAdoptionFixtureSecretFree(fixture: NativeAdoptionFixture): void;
154
- export declare function scanNativeAdoptionSecrets(value: unknown): NativeAdoptionSecretScanFinding[];
155
- export declare function assertNativeAdoptionBaselineSecretFree(value: unknown): void;
156
- export declare const assertNativeAdoptionDocumentSecretFree: typeof assertNativeAdoptionBaselineSecretFree;
157
- export declare function runNativeAdoptionTarget(target: NativeAdoptionBenchmarkTarget, fixture: NativeAdoptionFixture): NativeAdoptionTargetResult;
158
- export declare function measureNativeAdoptionTarget(target: NativeAdoptionBenchmarkTarget, fixture: NativeAdoptionFixture, options?: NativeAdoptionMeasureOptions): NativeAdoptionTargetMeasurement;
159
- export declare function summarizeNativeAdoptionSamples(samples: readonly number[]): NativeAdoptionSampleStats;
160
- export declare function withNativeAdoptionSideEffectGuards<T>(fn: (recorder: NativeAdoptionSideEffectRecorder) => T): NativeAdoptionGuardedResult<T>;
161
- export declare function evaluateNativeAdoptionGate(input: NativeAdoptionGateInput): NativeAdoptionGateDecision;
162
- export declare function createNativeAdoptionBaseline(input: NativeAdoptionBaselineInput): NativeAdoptionBaseline;
163
- export declare function classifyNativeAdoptionCallsites(input: NativeAdoptionCallsiteInput): NativeAdoptionCallsiteSummary;
164
- export declare function scanNativeAdoptionForbiddenImports(files: readonly NativeAdoptionSourceFile[]): NativeAdoptionForbiddenImportFinding[];
165
- export declare function assertNativeAdoptionTimedTargetImportSafe(content: string, path?: string): void;
166
- //# sourceMappingURL=native-adoption-benchmark.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-adoption-benchmark.d.ts","sourceRoot":"","sources":["../../src/core/native-adoption-benchmark.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { performance } from \"node:perf_hooks\";\nimport {\n\tcanonicalJsonStringify,\n\tfuseRrfRankings,\n\ttype RetrievalRanking,\n\trenderContextPack,\n\ttype ScoredContextCandidate,\n\tscoreRetrievalCandidate,\n\tscoreTopicalRelevance,\n\tselectMmrContext,\n} from \"./context-graph-retrieval.ts\";\n\nexport const NATIVE_ADOPTION_BASELINE_SCHEMA_VERSION = \"native-adoption-baseline.v1\";\nexport const DEFAULT_NATIVE_ADOPTION_SEED = 0xc0ffee;\n\nconst DEFAULT_MIN_TYPESCRIPT_P95_NS = 200_000;\nconst DEFAULT_MIN_MOVABLE_FRACTION = 0.6;\nconst DEFAULT_MAX_IPC_OVERHEAD_FRACTION = 0.3;\nconst DEFAULT_MIN_NET_SPEEDUP = 3;\nconst DEFAULT_MAX_STARTUP_P95_MS = 150;\nconst DEFAULT_MAX_RSS_DELTA_MB = 64;\nconst DEFAULT_MAX_ARCHIVE_DELTA_MB = 15;\nconst DEFAULT_TOKEN_BUDGET = 2_400;\n\nexport type NativeAdoptionBenchmarkTarget =\n\t| \"selectMmrContext\"\n\t| \"fuseRrfRankings\"\n\t| \"scoreTopicalRelevance\"\n\t| \"scoreRetrievalCandidate\"\n\t| \"renderContextPack\"\n\t| \"cacheKeyControl\";\n\nexport type NativeAdoptionBottleneckClass = \"cpu\" | \"io\" | \"provider\" | \"spawn\" | \"unknown\";\nexport type NativeAdoptionVerdict = \"go\" | \"no-go\" | \"needs-telemetry\";\n\nexport interface NativeAdoptionFixtureOptions {\n\tcandidateCount: number;\n\tembeddingDimensions: number;\n\tseed?: number;\n}\n\nexport interface NativeAdoptionFixtureManifest {\n\tsha256: string;\n\tpayloadBytes: number;\n\tcandidateCount: number;\n\tembeddingDimensions: number;\n\tseed: number;\n}\n\nexport interface NativeAdoptionFixture {\n\tseed: number;\n\tcandidateCount: number;\n\tembeddingDimensions: number;\n\tquery: string;\n\tqueryEmbedding?: readonly number[];\n\tcandidates: readonly ScoredContextCandidate[];\n\trankings: readonly RetrievalRanking[];\n\tmanifest: NativeAdoptionFixtureManifest;\n}\n\nexport interface NativeAdoptionSampleStats {\n\tsamples: number;\n\tminNs: number;\n\tmaxNs: number;\n\tmeanNs: number;\n\tp50Ns: number;\n\tp95Ns: number;\n\tp99Ns: number;\n\tcoefficientOfVariation: number;\n}\n\nexport interface NativeAdoptionTargetResult {\n\ttarget: NativeAdoptionBenchmarkTarget;\n\toperations: number;\n\toutputDigest: string;\n}\n\nexport interface NativeAdoptionTargetMeasurement extends NativeAdoptionTargetResult {\n\tstats: NativeAdoptionSampleStats;\n\tsideEffects: NativeAdoptionSideEffectCounts;\n}\n\nexport interface NativeAdoptionMeasureOptions {\n\titerations?: number;\n\twarmupIterations?: number;\n\tclock?: () => number;\n}\n\nexport interface NativeAdoptionGateInput {\n\truntimeCallsites: number;\n\tbottleneckClass: NativeAdoptionBottleneckClass;\n\ttypescriptP95Ns: number;\n\tprojectedRustP95Ns: number;\n\tipcOverheadP95Ns: number;\n\tmovableFraction: number;\n\tstartupP95Ms: number;\n\trssDeltaMb: number;\n\tarchiveDeltaMb: number;\n\tsideEffectViolations?: readonly string[];\n\tbudgets?: Partial<NativeAdoptionGateBudgets>;\n}\n\nexport interface NativeAdoptionGateBudgets {\n\tminTypeScriptP95Ns: number;\n\tminMovableFraction: number;\n\tmaxIpcOverheadFraction: number;\n\tminProjectedNetSpeedup: number;\n\tmaxStartupP95Ms: number;\n\tmaxRssDeltaMb: number;\n\tmaxArchiveDeltaMb: number;\n}\n\nexport interface NativeAdoptionGateMetrics {\n\tretainedTypeScriptP95Ns: number;\n\tsidecarNetP95Ns: number;\n\tprojectedNetSpeedup: number;\n\tcpuSpeedup: number;\n\tipcOverheadFraction: number;\n\tmovableFraction: number;\n}\n\nexport interface NativeAdoptionGateDecision {\n\tverdict: NativeAdoptionVerdict;\n\treasons: readonly string[];\n\tmetrics: NativeAdoptionGateMetrics;\n\tbudgets: NativeAdoptionGateBudgets;\n}\n\nexport interface NativeAdoptionBaselineInput {\n\trepoSha: string;\n\truntime: string;\n\tgeneratedAt: string;\n\tfixture: NativeAdoptionFixture;\n\tmeasurements: readonly NativeAdoptionTargetMeasurement[];\n\tdecision: NativeAdoptionGateDecision;\n}\n\nexport interface NativeAdoptionBaseline {\n\tschemaVersion: typeof NATIVE_ADOPTION_BASELINE_SCHEMA_VERSION;\n\trepoSha: string;\n\truntime: string;\n\tgeneratedAt: string;\n\tenv: Record<string, never>;\n\tfixture: NativeAdoptionFixtureManifest;\n\tmeasurements: readonly NativeAdoptionTargetMeasurement[];\n\tdecision: NativeAdoptionGateDecision;\n}\n\nexport interface NativeAdoptionSecretScanFinding {\n\tpath: string;\n\tpattern: string;\n}\n\nexport interface NativeAdoptionForbiddenImportFinding {\n\tpath: string;\n\tspecifier: string;\n\tstatement: string;\n}\n\nexport interface NativeAdoptionSideEffectCounts {\n\tnetwork: number;\n\tspawn: number;\n\tfileRead: number;\n}\n\nexport interface NativeAdoptionSideEffectRecorder {\n\trecordNetwork: () => never;\n\trecordSpawn: () => never;\n\trecordFileRead: () => never;\n}\n\nexport interface NativeAdoptionGuardedResult<T> {\n\tvalue: T;\n\tsideEffects: NativeAdoptionSideEffectCounts;\n}\n\nexport interface NativeAdoptionSourceFile {\n\tpath: string;\n\tcontent: string;\n}\n\nexport interface NativeAdoptionCallsiteInput {\n\tsymbols: readonly string[];\n\tfiles: readonly NativeAdoptionSourceFile[];\n}\n\nexport interface NativeAdoptionCallsiteSummary {\n\truntimeCallsites: number;\n\ttestCallsites: number;\n\tdefinitionCallsites: number;\n\texportCallsites: number;\n\tharnessCallsites: number;\n\tbySymbol: Record<\n\t\tstring,\n\t\t{\n\t\t\truntime: number;\n\t\t\ttest: number;\n\t\t\tdefinition: number;\n\t\t\texport: number;\n\t\t\tharness: number;\n\t\t}\n\t>;\n}\n\ntype NativeAdoptionSourceCategory = \"definition\" | \"export\" | \"test\" | \"harness\" | \"runtime\";\n\ninterface Prng {\n\tnext: () => number;\n}\n\nconst SECRET_PATTERNS: ReadonlyArray<{ name: string; pattern: RegExp }> = [\n\t{ name: \"pem-private-key\", pattern: /-----BEGIN [A-Z ]*PRIVATE KEY-----/i },\n\t{ name: \"bearer-token\", pattern: /\\bBearer\\s+[A-Za-z0-9._~+/=-]{16,}/i },\n\t{ name: \"jwt\", pattern: /\\beyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b/ },\n\t{\n\t\tname: \"env-secret-assignment\",\n\t\tpattern: /\\b[A-Z0-9_]*(?:API[_-]?KEY|SECRET|TOKEN|PASSWORD|PRIVATE[_-]?KEY)[A-Z0-9_]*\\s*=\\s*[\"']?[^\"'\\s]{8,}/,\n\t},\n\t{\n\t\tname: \"vendor-token-prefix\",\n\t\tpattern: /\\b(?:(?:ghp|gho|ghu|ghs|github_pat)_[A-Za-z0-9_]{16,}|sk-[A-Za-z0-9]{16,})\\b/,\n\t},\n];\n\nconst FORBIDDEN_NATIVE_ADOPTION_IMPORTS = new Set([\n\t\"fs\",\n\t\"node:fs\",\n\t\"child_process\",\n\t\"node:child_process\",\n\t\"net\",\n\t\"node:net\",\n\t\"tls\",\n\t\"node:tls\",\n\t\"http\",\n\t\"node:http\",\n\t\"https\",\n\t\"node:https\",\n\t\"undici\",\n]);\n\nexport function createNativeAdoptionFixture(options: NativeAdoptionFixtureOptions): NativeAdoptionFixture {\n\tconst seed = normalizeSeed(options.seed ?? DEFAULT_NATIVE_ADOPTION_SEED);\n\tconst candidateCount = Math.max(0, Math.floor(options.candidateCount));\n\tconst embeddingDimensions = Math.max(0, Math.floor(options.embeddingDimensions));\n\tconst prng = createMulberry32(seed);\n\tconst topics = [\"retrieval\", \"memory\", \"ontology\", \"cache\", \"session\", \"tools\"];\n\tconst query = \"context graph retrieval ranking memory cache\";\n\tconst queryEmbedding = embeddingDimensions > 0 ? createVector(prng, embeddingDimensions) : undefined;\n\tconst candidates: ScoredContextCandidate[] = [];\n\n\tfor (let index = 0; index < candidateCount; index++) {\n\t\tconst topic = topics[index % topics.length] ?? \"retrieval\";\n\t\tconst score = round6(1 - index / Math.max(candidateCount, 1) + prng.next() * 0.05);\n\t\tcandidates.push({\n\t\t\tid: `fixture-${index.toString().padStart(5, \"0\")}`,\n\t\t\tpath: `packages/coding-agent/src/fixture/${topic}-${index}.ts`,\n\t\t\ttitle: `${topic} fixture ${index}`,\n\t\t\tsymbol: `fixtureSymbol${index}`,\n\t\t\tkind: index % 3 === 0 ? \"function\" : \"document\",\n\t\t\tcontent: createFixtureContent(topic, index),\n\t\t\ttokenEstimate: 32 + (index % 11) * 7,\n\t\t\ttopic,\n\t\t\t...(embeddingDimensions > 0 ? { embedding: createVector(prng, embeddingDimensions) } : {}),\n\t\t\tscore: clamp01(score),\n\t\t\trrfScore: clamp01(score * 0.8),\n\t\t\ttopicalScore: clamp01(score * 0.9),\n\t\t});\n\t}\n\n\tconst rankings = createFixtureRankings(candidates);\n\tconst payload = { seed, candidateCount, embeddingDimensions, query, queryEmbedding, candidates, rankings };\n\tconst payloadText = canonicalJsonStringify(payload);\n\tconst manifest = {\n\t\tsha256: sha256Hex(payloadText),\n\t\tpayloadBytes: Buffer.byteLength(payloadText, \"utf8\"),\n\t\tcandidateCount,\n\t\tembeddingDimensions,\n\t\tseed,\n\t};\n\tconst fixture: NativeAdoptionFixture = {\n\t\tseed,\n\t\tcandidateCount,\n\t\tembeddingDimensions,\n\t\tquery,\n\t\t...(queryEmbedding ? { queryEmbedding } : {}),\n\t\tcandidates,\n\t\trankings,\n\t\tmanifest,\n\t};\n\tassertNativeAdoptionFixtureSecretFree(fixture);\n\treturn fixture;\n}\n\nexport function assertNativeAdoptionFixtureSecretFree(fixture: NativeAdoptionFixture): void {\n\tconst payload = canonicalJsonStringify({\n\t\tseed: fixture.seed,\n\t\tcandidateCount: fixture.candidateCount,\n\t\tembeddingDimensions: fixture.embeddingDimensions,\n\t\tquery: fixture.query,\n\t\tqueryEmbedding: fixture.queryEmbedding,\n\t\tcandidates: fixture.candidates,\n\t\trankings: fixture.rankings,\n\t\tmanifest: fixture.manifest,\n\t});\n\tconst hit = SECRET_PATTERNS.find(({ pattern }) => pattern.test(payload));\n\tif (hit) {\n\t\tthrow new Error(`secret-like fixture content rejected: ${hit.name}`);\n\t}\n}\n\nexport function scanNativeAdoptionSecrets(value: unknown): NativeAdoptionSecretScanFinding[] {\n\tconst findings: NativeAdoptionSecretScanFinding[] = [];\n\tvisitNativeAdoptionSecretValue(value, \"$\", findings, new Set<object>());\n\treturn findings;\n}\n\nexport function assertNativeAdoptionBaselineSecretFree(value: unknown): void {\n\tconst findings = scanNativeAdoptionSecrets(value);\n\tif (findings.length > 0) {\n\t\tconst first = findings[0];\n\t\tthrow new Error(`secret-like baseline content rejected: ${first?.pattern ?? \"unknown\"} at ${first?.path ?? \"$\"}`);\n\t}\n}\n\nexport const assertNativeAdoptionDocumentSecretFree = assertNativeAdoptionBaselineSecretFree;\n\nexport function runNativeAdoptionTarget(\n\ttarget: NativeAdoptionBenchmarkTarget,\n\tfixture: NativeAdoptionFixture,\n): NativeAdoptionTargetResult {\n\tassertNativeAdoptionFixtureSecretFree(fixture);\n\tif (target === \"selectMmrContext\") {\n\t\tconst result = selectMmrContext(fixture.candidates, { tokenBudget: DEFAULT_TOKEN_BUDGET, lambda: 0.6 });\n\t\treturn digestTargetResult(\n\t\t\ttarget,\n\t\t\tresult.selected.map((candidate) => candidate.id),\n\t\t\tfixture.candidates.length,\n\t\t);\n\t}\n\tif (target === \"fuseRrfRankings\") {\n\t\tconst result = fuseRrfRankings(fixture.rankings, { limit: Math.min(100, fixture.candidates.length) });\n\t\treturn digestTargetResult(\n\t\t\ttarget,\n\t\t\tresult.map((hit) => [hit.id, round6(hit.score)]),\n\t\t\tfixture.candidates.length,\n\t\t);\n\t}\n\tif (target === \"scoreTopicalRelevance\") {\n\t\tconst result = fixture.candidates.map((candidate) =>\n\t\t\tscoreTopicalRelevance({ query: fixture.query, queryEmbedding: fixture.queryEmbedding, document: candidate }),\n\t\t);\n\t\treturn digestTargetResult(\n\t\t\ttarget,\n\t\t\tresult.map((score) => round6(score.score)),\n\t\t\tfixture.candidates.length,\n\t\t);\n\t}\n\tif (target === \"scoreRetrievalCandidate\") {\n\t\tconst result = fixture.candidates.map(\n\t\t\t(candidate) =>\n\t\t\t\tscoreRetrievalCandidate({\n\t\t\t\t\trrfScore: candidate.rrfScore ?? candidate.score,\n\t\t\t\t\ttopicalScore: candidate.topicalScore ?? candidate.score,\n\t\t\t\t\tgraphScore: candidate.score,\n\t\t\t\t\trecencyScore: (candidate.score * 0.5) % 1,\n\t\t\t\t\tauthorityScore: (candidate.score * 0.75) % 1,\n\t\t\t\t\tconflictPenalty: candidate.conflicts?.length ? 1 : 0,\n\t\t\t\t}).finalScore,\n\t\t);\n\t\treturn digestTargetResult(target, result.map(round6), fixture.candidates.length);\n\t}\n\tif (target === \"renderContextPack\") {\n\t\tconst result = renderContextPack(fixture.candidates.slice(0, Math.min(16, fixture.candidates.length)), {\n\t\t\tqueryIntent: \"native-adoption-benchmark\",\n\t\t\tmaxEvidenceChars: 180,\n\t\t});\n\t\treturn digestTargetResult(target, result, fixture.candidates.length);\n\t}\n\tconst result = canonicalJsonStringify({\n\t\tquery: fixture.query,\n\t\tmanifest: fixture.manifest,\n\t\tfirst: fixture.candidates[0]?.id ?? \"none\",\n\t});\n\treturn digestTargetResult(target, result, fixture.candidates.length);\n}\n\nexport function measureNativeAdoptionTarget(\n\ttarget: NativeAdoptionBenchmarkTarget,\n\tfixture: NativeAdoptionFixture,\n\toptions: NativeAdoptionMeasureOptions = {},\n): NativeAdoptionTargetMeasurement {\n\tconst iterations = Math.max(1, Math.floor(options.iterations ?? 20));\n\tconst warmupIterations = Math.max(0, Math.floor(options.warmupIterations ?? 5));\n\tconst clock = options.clock ?? performance.now.bind(performance);\n\tlet lastResult = runNativeAdoptionTarget(target, fixture);\n\tfor (let index = 0; index < warmupIterations; index++) {\n\t\tlastResult = runNativeAdoptionTarget(target, fixture);\n\t}\n\n\tconst samples: number[] = [];\n\tlet sideEffects = createEmptySideEffectCounts();\n\tfor (let index = 0; index < iterations; index++) {\n\t\tconst guarded = withNativeAdoptionSideEffectGuards(() => {\n\t\t\tconst startMs = clock();\n\t\t\tlastResult = runNativeAdoptionTarget(target, fixture);\n\t\t\tconst endMs = clock();\n\t\t\treturn Math.max(0, Math.round((endMs - startMs) * 1_000_000));\n\t\t});\n\t\tsideEffects = addSideEffects(sideEffects, guarded.sideEffects);\n\t\tsamples.push(guarded.value);\n\t}\n\n\treturn {\n\t\t...lastResult,\n\t\tstats: summarizeNativeAdoptionSamples(samples),\n\t\tsideEffects,\n\t};\n}\n\nexport function summarizeNativeAdoptionSamples(samples: readonly number[]): NativeAdoptionSampleStats {\n\tif (samples.length === 0) {\n\t\treturn {\n\t\t\tsamples: 0,\n\t\t\tminNs: 0,\n\t\t\tmaxNs: 0,\n\t\t\tmeanNs: 0,\n\t\t\tp50Ns: 0,\n\t\t\tp95Ns: 0,\n\t\t\tp99Ns: 0,\n\t\t\tcoefficientOfVariation: 0,\n\t\t};\n\t}\n\tconst sorted = [...samples].map((sample) => Math.max(0, Math.round(sample))).sort((a, b) => a - b);\n\tconst meanNs = sorted.reduce((sum, sample) => sum + sample, 0) / sorted.length;\n\tconst variance = sorted.reduce((sum, sample) => sum + (sample - meanNs) ** 2, 0) / sorted.length;\n\treturn {\n\t\tsamples: sorted.length,\n\t\tminNs: sorted[0] ?? 0,\n\t\tmaxNs: sorted[sorted.length - 1] ?? 0,\n\t\tmeanNs,\n\t\tp50Ns: nearestRank(sorted, 0.5),\n\t\tp95Ns: nearestRank(sorted, 0.95),\n\t\tp99Ns: nearestRank(sorted, 0.99),\n\t\tcoefficientOfVariation: meanNs === 0 ? 0 : Math.sqrt(variance) / meanNs,\n\t};\n}\n\nexport function withNativeAdoptionSideEffectGuards<T>(\n\tfn: (recorder: NativeAdoptionSideEffectRecorder) => T,\n): NativeAdoptionGuardedResult<T> {\n\tconst sideEffects = createEmptySideEffectCounts();\n\tconst recorder = createSideEffectRecorder(sideEffects);\n\tconst originalFetch = globalThis.fetch;\n\tglobalThis.fetch = ((..._args: Parameters<typeof fetch>) => recorder.recordNetwork()) as typeof fetch;\n\n\tlet value: T | undefined;\n\tlet thrown: unknown;\n\ttry {\n\t\tvalue = fn(recorder);\n\t} catch (error) {\n\t\tthrown = error;\n\t} finally {\n\t\tglobalThis.fetch = originalFetch;\n\t}\n\n\tconst violations = formatSideEffectViolations(sideEffects);\n\tif (violations.length > 0) {\n\t\tthrow new Error(`forbidden side effect during native adoption benchmark: ${violations.join(\",\")}`);\n\t}\n\tif (thrown) throw thrown;\n\treturn { value: value as T, sideEffects };\n}\n\nexport function evaluateNativeAdoptionGate(input: NativeAdoptionGateInput): NativeAdoptionGateDecision {\n\tconst budgets = createGateBudgets(input.budgets);\n\tconst movableFraction = clamp01(input.movableFraction);\n\tconst retainedTypeScriptP95Ns = Math.max(0, input.typescriptP95Ns) * (1 - movableFraction);\n\tconst sidecarNetP95Ns =\n\t\tretainedTypeScriptP95Ns + Math.max(0, input.projectedRustP95Ns) + Math.max(0, input.ipcOverheadP95Ns);\n\tconst projectedNetSpeedup = sidecarNetP95Ns > 0 ? Math.max(0, input.typescriptP95Ns) / sidecarNetP95Ns : 0;\n\tconst movableTypeScriptP95Ns = Math.max(0, input.typescriptP95Ns) * movableFraction;\n\tconst cpuSpeedup = input.projectedRustP95Ns > 0 ? movableTypeScriptP95Ns / input.projectedRustP95Ns : 0;\n\tconst ipcOverheadFraction =\n\t\tinput.typescriptP95Ns > 0 ? Math.max(0, input.ipcOverheadP95Ns) / input.typescriptP95Ns : 1;\n\tconst reasons: string[] = [];\n\n\tif (input.runtimeCallsites <= 0) reasons.push(\"runtime-callsite-absent\");\n\tif (input.bottleneckClass !== \"cpu\") reasons.push(`bottleneck-not-cpu:${input.bottleneckClass}`);\n\tif (input.typescriptP95Ns < budgets.minTypeScriptP95Ns) reasons.push(\"typescript-p95-too-small\");\n\tif (movableFraction < budgets.minMovableFraction) reasons.push(\"movable-fraction-too-low\");\n\tif (ipcOverheadFraction >= budgets.maxIpcOverheadFraction) reasons.push(\"ipc-overhead-too-high\");\n\tif (projectedNetSpeedup < budgets.minProjectedNetSpeedup) reasons.push(\"projected-net-speedup-too-low\");\n\tif (input.startupP95Ms > budgets.maxStartupP95Ms) reasons.push(\"startup-p95-too-high\");\n\tif (input.rssDeltaMb > budgets.maxRssDeltaMb) reasons.push(\"rss-delta-too-high\");\n\tif (input.archiveDeltaMb > budgets.maxArchiveDeltaMb) reasons.push(\"archive-delta-too-high\");\n\tfor (const violation of input.sideEffectViolations ?? []) {\n\t\treasons.push(`side-effect:${violation}`);\n\t}\n\n\treturn {\n\t\tverdict: reasons.length === 0 ? \"go\" : \"no-go\",\n\t\treasons,\n\t\tmetrics: {\n\t\t\tretainedTypeScriptP95Ns,\n\t\t\tsidecarNetP95Ns,\n\t\t\tprojectedNetSpeedup,\n\t\t\tcpuSpeedup,\n\t\t\tipcOverheadFraction,\n\t\t\tmovableFraction,\n\t\t},\n\t\tbudgets,\n\t};\n}\n\nexport function createNativeAdoptionBaseline(input: NativeAdoptionBaselineInput): NativeAdoptionBaseline {\n\tassertNativeAdoptionFixtureSecretFree(input.fixture);\n\tconst baseline = {\n\t\tschemaVersion: NATIVE_ADOPTION_BASELINE_SCHEMA_VERSION,\n\t\trepoSha: input.repoSha,\n\t\truntime: input.runtime,\n\t\tgeneratedAt: input.generatedAt,\n\t\tenv: {},\n\t\tfixture: input.fixture.manifest,\n\t\tmeasurements: input.measurements,\n\t\tdecision: input.decision,\n\t} satisfies NativeAdoptionBaseline;\n\tassertNativeAdoptionBaselineSecretFree(baseline);\n\treturn baseline;\n}\n\nexport function classifyNativeAdoptionCallsites(input: NativeAdoptionCallsiteInput): NativeAdoptionCallsiteSummary {\n\tconst bySymbol: NativeAdoptionCallsiteSummary[\"bySymbol\"] = {};\n\tfor (const symbol of input.symbols) {\n\t\tbySymbol[symbol] = { runtime: 0, test: 0, definition: 0, export: 0, harness: 0 };\n\t}\n\n\tfor (const file of input.files) {\n\t\tconst category = classifySourceFile(file);\n\t\tfor (const symbol of input.symbols) {\n\t\t\tconst symbolSummary = bySymbol[symbol];\n\t\t\tif (!symbolSummary) continue;\n\t\t\tconst count = countNativeAdoptionReferences(file, symbol, category);\n\t\t\tif (count === 0) continue;\n\t\t\tif (category === \"test\") symbolSummary.test += count;\n\t\t\telse if (category === \"definition\") symbolSummary.definition += count;\n\t\t\telse if (category === \"export\") symbolSummary.export += count;\n\t\t\telse if (category === \"harness\") symbolSummary.harness += count;\n\t\t\telse symbolSummary.runtime += count;\n\t\t}\n\t}\n\n\treturn {\n\t\truntimeCallsites: sumBySymbol(bySymbol, \"runtime\"),\n\t\ttestCallsites: sumBySymbol(bySymbol, \"test\"),\n\t\tdefinitionCallsites: sumBySymbol(bySymbol, \"definition\"),\n\t\texportCallsites: sumBySymbol(bySymbol, \"export\"),\n\t\tharnessCallsites: sumBySymbol(bySymbol, \"harness\"),\n\t\tbySymbol,\n\t};\n}\n\nexport function scanNativeAdoptionForbiddenImports(\n\tfiles: readonly NativeAdoptionSourceFile[],\n): NativeAdoptionForbiddenImportFinding[] {\n\tconst findings: NativeAdoptionForbiddenImportFinding[] = [];\n\tfor (const file of files) {\n\t\tfor (const match of findNativeAdoptionImportSpecifiers(file.content)) {\n\t\t\tif (FORBIDDEN_NATIVE_ADOPTION_IMPORTS.has(match.specifier)) {\n\t\t\t\tfindings.push({ path: file.path, specifier: match.specifier, statement: match.statement });\n\t\t\t}\n\t\t}\n\t}\n\treturn findings;\n}\n\nexport function assertNativeAdoptionTimedTargetImportSafe(content: string, path = \"<inline>\"): void {\n\tconst findings = scanNativeAdoptionForbiddenImports([{ path, content }]);\n\tif (findings.length > 0) {\n\t\tconst first = findings[0];\n\t\tthrow new Error(`forbidden static import in timed native adoption target: ${first?.specifier ?? \"unknown\"}`);\n\t}\n}\n\nfunction createFixtureContent(topic: string, index: number): string {\n\treturn [\n\t\t`Fixture document ${index} covers ${topic} retrieval behavior.`,\n\t\t\"It describes graph context ranking, memory evidence, ontology validation, cache policy, and session packing.\",\n\t\t\"The text is synthetic and contains no credentials, network endpoints, or external provider payloads.\",\n\t].join(\" \");\n}\n\nfunction createFixtureRankings(candidates: readonly ScoredContextCandidate[]): RetrievalRanking[] {\n\tconst lexical = candidates.map((candidate) => ({ id: candidate.id, score: candidate.score }));\n\tconst vector = [...candidates]\n\t\t.sort((a, b) => (a.topic ?? \"\").localeCompare(b.topic ?? \"\") || b.score - a.score)\n\t\t.map((candidate) => ({ id: candidate.id, score: candidate.score }));\n\tconst graph = [...candidates]\n\t\t.sort((a, b) => (a.path ?? \"\").localeCompare(b.path ?? \"\"))\n\t\t.map((candidate) => ({ id: candidate.id, score: candidate.score }));\n\treturn [\n\t\t{ name: \"lexical\", weight: 1, hits: lexical },\n\t\t{ name: \"vector\", weight: 1.15, hits: vector },\n\t\t{ name: \"graph\", weight: 0.85, hits: graph },\n\t];\n}\n\nfunction createVector(prng: Prng, dimensions: number): number[] {\n\treturn Array.from({ length: dimensions }, () => round6(prng.next() * 2 - 1));\n}\n\nfunction createMulberry32(seed: number): Prng {\n\tlet state = seed >>> 0;\n\treturn {\n\t\tnext: () => {\n\t\t\tstate += 0x6d2b79f5;\n\t\t\tlet value = state;\n\t\t\tvalue = Math.imul(value ^ (value >>> 15), value | 1);\n\t\t\tvalue ^= value + Math.imul(value ^ (value >>> 7), value | 61);\n\t\t\treturn ((value ^ (value >>> 14)) >>> 0) / 4_294_967_296;\n\t\t},\n\t};\n}\n\nfunction normalizeSeed(seed: number): number {\n\treturn Number.isFinite(seed) ? Math.floor(seed) >>> 0 : DEFAULT_NATIVE_ADOPTION_SEED;\n}\n\nfunction digestTargetResult(\n\ttarget: NativeAdoptionBenchmarkTarget,\n\toutput: unknown,\n\toperations: number,\n): NativeAdoptionTargetResult {\n\treturn {\n\t\ttarget,\n\t\toperations,\n\t\toutputDigest: sha256Hex(canonicalJsonStringify({ target, output })),\n\t};\n}\n\nfunction sha256Hex(value: string): string {\n\treturn createHash(\"sha256\").update(value, \"utf8\").digest(\"hex\");\n}\n\nfunction nearestRank(sortedSamples: readonly number[], percentile: number): number {\n\tif (sortedSamples.length === 0) return 0;\n\tconst index = Math.min(sortedSamples.length - 1, Math.max(0, Math.ceil(percentile * sortedSamples.length) - 1));\n\treturn sortedSamples[index] ?? 0;\n}\n\nfunction createEmptySideEffectCounts(): NativeAdoptionSideEffectCounts {\n\treturn { network: 0, spawn: 0, fileRead: 0 };\n}\n\nfunction createSideEffectRecorder(sideEffects: NativeAdoptionSideEffectCounts): NativeAdoptionSideEffectRecorder {\n\treturn {\n\t\trecordNetwork: () => {\n\t\t\tsideEffects.network += 1;\n\t\t\tthrow new Error(\"forbidden side effect: network\");\n\t\t},\n\t\trecordSpawn: () => {\n\t\t\tsideEffects.spawn += 1;\n\t\t\tthrow new Error(\"forbidden side effect: spawn\");\n\t\t},\n\t\trecordFileRead: () => {\n\t\t\tsideEffects.fileRead += 1;\n\t\t\tthrow new Error(\"forbidden side effect: file-read\");\n\t\t},\n\t};\n}\n\nfunction addSideEffects(\n\tleft: NativeAdoptionSideEffectCounts,\n\tright: NativeAdoptionSideEffectCounts,\n): NativeAdoptionSideEffectCounts {\n\treturn {\n\t\tnetwork: left.network + right.network,\n\t\tspawn: left.spawn + right.spawn,\n\t\tfileRead: left.fileRead + right.fileRead,\n\t};\n}\n\nfunction formatSideEffectViolations(sideEffects: NativeAdoptionSideEffectCounts): string[] {\n\tconst violations: string[] = [];\n\tif (sideEffects.network > 0) violations.push(`network:${sideEffects.network}`);\n\tif (sideEffects.spawn > 0) violations.push(`spawn:${sideEffects.spawn}`);\n\tif (sideEffects.fileRead > 0) violations.push(`fileRead:${sideEffects.fileRead}`);\n\treturn violations;\n}\n\nfunction createGateBudgets(input: Partial<NativeAdoptionGateBudgets> | undefined): NativeAdoptionGateBudgets {\n\treturn {\n\t\tminTypeScriptP95Ns: input?.minTypeScriptP95Ns ?? DEFAULT_MIN_TYPESCRIPT_P95_NS,\n\t\tminMovableFraction: input?.minMovableFraction ?? DEFAULT_MIN_MOVABLE_FRACTION,\n\t\tmaxIpcOverheadFraction: input?.maxIpcOverheadFraction ?? DEFAULT_MAX_IPC_OVERHEAD_FRACTION,\n\t\tminProjectedNetSpeedup: input?.minProjectedNetSpeedup ?? DEFAULT_MIN_NET_SPEEDUP,\n\t\tmaxStartupP95Ms: input?.maxStartupP95Ms ?? DEFAULT_MAX_STARTUP_P95_MS,\n\t\tmaxRssDeltaMb: input?.maxRssDeltaMb ?? DEFAULT_MAX_RSS_DELTA_MB,\n\t\tmaxArchiveDeltaMb: input?.maxArchiveDeltaMb ?? DEFAULT_MAX_ARCHIVE_DELTA_MB,\n\t};\n}\n\nfunction classifySourceFile(file: NativeAdoptionSourceFile): NativeAdoptionSourceCategory {\n\tconst normalizedPath = file.path.replaceAll(\"\\\\\", \"/\");\n\tif (normalizedPath.endsWith(\"/src/core/native-adoption-benchmark.ts\")) return \"harness\";\n\tif (normalizedPath.includes(\"/test/bench/\") || normalizedPath.endsWith(\"/test/native-adoption-runner.test.ts\")) {\n\t\treturn \"harness\";\n\t}\n\tif (/\\/(test|tests)\\//.test(normalizedPath) || /\\.test\\.tsx?$/.test(normalizedPath)) return \"test\";\n\tif (normalizedPath.endsWith(\"/context-graph-retrieval.ts\")) return \"definition\";\n\tif (normalizedPath.endsWith(\"/src/index.ts\")) return \"export\";\n\treturn \"runtime\";\n}\n\nfunction countNativeAdoptionReferences(\n\tfile: NativeAdoptionSourceFile,\n\tsymbol: string,\n\tcategory: NativeAdoptionSourceCategory,\n): number {\n\tif (category === \"export\") return countBarrelExportReferences(file, symbol);\n\tif (category === \"definition\") return countDefinitionReferences(file.content, symbol);\n\treturn countCallExpressionReferences(file.content, symbol);\n}\n\nfunction countDefinitionReferences(content: string, symbol: string): number {\n\tconst escaped = escapeRegExp(symbol);\n\treturn (\n\t\tcontent.match(new RegExp(`(?:export\\\\s+)?(?:function|const|let|var|class)\\\\s+${escaped}\\\\b`, \"g\"))?.length ?? 0\n\t);\n}\n\nfunction countCallExpressionReferences(content: string, symbol: string): number {\n\tconst escaped = escapeRegExp(symbol);\n\tconst sanitized = stripCommentsAndStrings(content);\n\tconst matches = sanitized.match(new RegExp(`(^|[^\\\\w.$])${escaped}\\\\s*\\\\(`, \"g\"));\n\treturn matches?.length ?? 0;\n}\n\nfunction countSymbolReferences(content: string, symbol: string): number {\n\tconst escaped = escapeRegExp(symbol);\n\treturn content.match(new RegExp(`\\\\b${escaped}\\\\b`, \"g\"))?.length ?? 0;\n}\n\nfunction countBarrelExportReferences(file: NativeAdoptionSourceFile, symbol: string): number {\n\tconst normalizedPath = file.path.replaceAll(\"\\\\\", \"/\");\n\tif (!normalizedPath.endsWith(\"/src/index.ts\")) return 0;\n\tif (countSymbolReferences(file.content, symbol) > 0) return 0;\n\treturn file.content.includes(\"context-graph-retrieval.ts\") ? 1 : 0;\n}\n\nfunction sumBySymbol(\n\tbySymbol: NativeAdoptionCallsiteSummary[\"bySymbol\"],\n\tkey: \"runtime\" | \"test\" | \"definition\" | \"export\" | \"harness\",\n): number {\n\treturn Object.values(bySymbol).reduce((sum, value) => sum + value[key], 0);\n}\n\nfunction visitNativeAdoptionSecretValue(\n\tvalue: unknown,\n\tpath: string,\n\tfindings: NativeAdoptionSecretScanFinding[],\n\tseen: Set<object>,\n): void {\n\tif (typeof value === \"string\") {\n\t\tfor (const { name, pattern } of SECRET_PATTERNS) {\n\t\t\tif (pattern.test(value)) findings.push({ path, pattern: name });\n\t\t}\n\t\treturn;\n\t}\n\tif (typeof value !== \"object\" || value === null) return;\n\tif (seen.has(value)) return;\n\tseen.add(value);\n\tif (Array.isArray(value)) {\n\t\tvalue.forEach((entry, index) => {\n\t\t\tvisitNativeAdoptionSecretValue(entry, `${path}[${index}]`, findings, seen);\n\t\t});\n\t\treturn;\n\t}\n\tfor (const [key, entry] of Object.entries(value as Record<string, unknown>)) {\n\t\tvisitNativeAdoptionSecretValue(entry, `${path}.${key}`, findings, seen);\n\t}\n}\n\nfunction findNativeAdoptionImportSpecifiers(content: string): Array<{ specifier: string; statement: string }> {\n\tconst imports: Array<{ specifier: string; statement: string }> = [];\n\tconst sanitized = stripCommentsAndStrings(content, { keepImportSpecifiers: true });\n\tconst importPattern =\n\t\t/\\bimport\\s+(?:type\\s+)?(?:[^\"';]+?\\s+from\\s+)?[\"']([^\"']+)[\"']|\\brequire\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/g;\n\tfor (const match of sanitized.matchAll(importPattern)) {\n\t\tconst specifier = match[1] ?? match[2];\n\t\tif (!specifier) continue;\n\t\timports.push({ specifier, statement: match[0] });\n\t}\n\treturn imports;\n}\n\nfunction stripCommentsAndStrings(content: string, options: { keepImportSpecifiers?: boolean } = {}): string {\n\tlet output = \"\";\n\tlet index = 0;\n\tlet state: \"code\" | \"single\" | \"double\" | \"template\" | \"line\" | \"block\" = \"code\";\n\twhile (index < content.length) {\n\t\tconst char = content[index] ?? \"\";\n\t\tconst next = content[index + 1] ?? \"\";\n\t\tif (state === \"code\") {\n\t\t\tif (char === \"/\" && next === \"/\") {\n\t\t\t\toutput += \" \";\n\t\t\t\tindex += 2;\n\t\t\t\tstate = \"line\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"/\" && next === \"*\") {\n\t\t\t\toutput += \" \";\n\t\t\t\tindex += 2;\n\t\t\t\tstate = \"block\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"'\") {\n\t\t\t\toutput += options.keepImportSpecifiers ? char : \" \";\n\t\t\t\tindex += 1;\n\t\t\t\tstate = \"single\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === '\"') {\n\t\t\t\toutput += options.keepImportSpecifiers ? char : \" \";\n\t\t\t\tindex += 1;\n\t\t\t\tstate = \"double\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"`\") {\n\t\t\t\toutput += \" \";\n\t\t\t\tindex += 1;\n\t\t\t\tstate = \"template\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\toutput += char;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (state === \"line\") {\n\t\t\toutput += char === \"\\n\" ? \"\\n\" : \" \";\n\t\t\tindex += 1;\n\t\t\tif (char === \"\\n\") state = \"code\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (state === \"block\") {\n\t\t\toutput += char === \"\\n\" ? \"\\n\" : \" \";\n\t\t\tif (char === \"*\" && next === \"/\") {\n\t\t\t\toutput += \" \";\n\t\t\t\tindex += 2;\n\t\t\t\tstate = \"code\";\n\t\t\t} else {\n\t\t\t\tindex += 1;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst quote = state === \"single\" ? \"'\" : state === \"double\" ? '\"' : \"`\";\n\t\toutput += options.keepImportSpecifiers && state !== \"template\" ? char : char === \"\\n\" ? \"\\n\" : \" \";\n\t\tif (char === \"\\\\\") {\n\t\t\tconst escaped = content[index + 1] ?? \"\";\n\t\t\toutput += options.keepImportSpecifiers && state !== \"template\" ? escaped : escaped === \"\\n\" ? \"\\n\" : \" \";\n\t\t\tindex += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tindex += 1;\n\t\tif (char === quote) state = \"code\";\n\t}\n\treturn output;\n}\n\nfunction escapeRegExp(value: string): string {\n\treturn value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction round6(value: number): number {\n\treturn Math.round(value * 1_000_000) / 1_000_000;\n}\n\nfunction clamp01(value: number): number {\n\tif (!Number.isFinite(value)) return 0;\n\tif (value < 0) return 0;\n\tif (value > 1) return 1;\n\treturn value;\n}\n"]}