open-multi-agent-kit 0.80.5 → 0.80.7

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 (1025) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +22 -14
  3. package/dist/cli/config-selector.d.ts +1 -1
  4. package/dist/cli/config-selector.d.ts.map +1 -1
  5. package/dist/cli/config-selector.js +1 -1
  6. package/dist/cli/config-selector.js.map +1 -1
  7. package/dist/config.d.ts +5 -9
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +55 -23
  10. package/dist/config.js.map +1 -1
  11. package/dist/core/agent-session.d.ts +45 -6
  12. package/dist/core/agent-session.d.ts.map +1 -1
  13. package/dist/core/agent-session.js +197 -13
  14. package/dist/core/agent-session.js.map +1 -1
  15. package/dist/core/auth-storage.d.ts +4 -1
  16. package/dist/core/auth-storage.d.ts.map +1 -1
  17. package/dist/core/auth-storage.js +5 -5
  18. package/dist/core/auth-storage.js.map +1 -1
  19. package/dist/core/bash-executor.d.ts.map +1 -1
  20. package/dist/core/bash-executor.js +1 -1
  21. package/dist/core/bash-executor.js.map +1 -1
  22. package/dist/core/command-safety.d.ts +11 -0
  23. package/dist/core/command-safety.d.ts.map +1 -0
  24. package/dist/core/command-safety.js +528 -0
  25. package/dist/core/command-safety.js.map +1 -0
  26. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  27. package/dist/core/compaction/branch-summarization.js +20 -5
  28. package/dist/core/compaction/branch-summarization.js.map +1 -1
  29. package/dist/core/compaction/compaction.d.ts +99 -1
  30. package/dist/core/compaction/compaction.d.ts.map +1 -1
  31. package/dist/core/compaction/compaction.js +655 -21
  32. package/dist/core/compaction/compaction.js.map +1 -1
  33. package/dist/core/compaction/pruner-policy.d.ts +84 -0
  34. package/dist/core/compaction/pruner-policy.d.ts.map +1 -0
  35. package/dist/core/compaction/pruner-policy.js +273 -0
  36. package/dist/core/compaction/pruner-policy.js.map +1 -0
  37. package/dist/core/context-graph-identity-resolution.d.ts +114 -0
  38. package/dist/core/context-graph-identity-resolution.d.ts.map +1 -0
  39. package/dist/core/context-graph-identity-resolution.js +127 -0
  40. package/dist/core/context-graph-identity-resolution.js.map +1 -0
  41. package/dist/core/context-graph-memory-store.d.ts +153 -0
  42. package/dist/core/context-graph-memory-store.d.ts.map +1 -0
  43. package/dist/core/context-graph-memory-store.js +377 -0
  44. package/dist/core/context-graph-memory-store.js.map +1 -0
  45. package/dist/core/context-graph-ontology-generation.d.ts +104 -0
  46. package/dist/core/context-graph-ontology-generation.d.ts.map +1 -0
  47. package/dist/core/context-graph-ontology-generation.js +135 -0
  48. package/dist/core/context-graph-ontology-generation.js.map +1 -0
  49. package/dist/core/context-graph-ontology-registry.d.ts +766 -0
  50. package/dist/core/context-graph-ontology-registry.d.ts.map +1 -0
  51. package/dist/core/context-graph-ontology-registry.js +1133 -0
  52. package/dist/core/context-graph-ontology-registry.js.map +1 -0
  53. package/dist/core/context-graph-policy.d.ts +68 -0
  54. package/dist/core/context-graph-policy.d.ts.map +1 -0
  55. package/dist/core/context-graph-policy.js +221 -0
  56. package/dist/core/context-graph-policy.js.map +1 -0
  57. package/dist/core/context-graph-reasoning.d.ts +130 -0
  58. package/dist/core/context-graph-reasoning.d.ts.map +1 -0
  59. package/dist/core/context-graph-reasoning.js +442 -0
  60. package/dist/core/context-graph-reasoning.js.map +1 -0
  61. package/dist/core/context-graph-retrieval.d.ts +120 -0
  62. package/dist/core/context-graph-retrieval.d.ts.map +1 -0
  63. package/dist/core/context-graph-retrieval.js +288 -0
  64. package/dist/core/context-graph-retrieval.js.map +1 -0
  65. package/dist/core/contract-verification.d.ts +78 -0
  66. package/dist/core/contract-verification.d.ts.map +1 -0
  67. package/dist/core/contract-verification.js +110 -0
  68. package/dist/core/contract-verification.js.map +1 -0
  69. package/dist/core/exact-cache-policy.d.ts +100 -0
  70. package/dist/core/exact-cache-policy.d.ts.map +1 -0
  71. package/dist/core/exact-cache-policy.js +175 -0
  72. package/dist/core/exact-cache-policy.js.map +1 -0
  73. package/dist/core/exec.d.ts +2 -0
  74. package/dist/core/exec.d.ts.map +1 -1
  75. package/dist/core/exec.js +1 -0
  76. package/dist/core/exec.js.map +1 -1
  77. package/dist/core/export-html/template.js +2 -2
  78. package/dist/core/extensions/builtin/command-safety-gate.d.ts +77 -0
  79. package/dist/core/extensions/builtin/command-safety-gate.d.ts.map +1 -0
  80. package/dist/core/extensions/builtin/command-safety-gate.js +147 -0
  81. package/dist/core/extensions/builtin/command-safety-gate.js.map +1 -0
  82. package/dist/core/extensions/loader.d.ts +4 -4
  83. package/dist/core/extensions/loader.d.ts.map +1 -1
  84. package/dist/core/extensions/loader.js +94 -56
  85. package/dist/core/extensions/loader.js.map +1 -1
  86. package/dist/core/extensions/runner.d.ts.map +1 -1
  87. package/dist/core/extensions/runner.js +1 -1
  88. package/dist/core/extensions/runner.js.map +1 -1
  89. package/dist/core/extensions/types.d.ts +38 -10
  90. package/dist/core/extensions/types.d.ts.map +1 -1
  91. package/dist/core/extensions/types.js.map +1 -1
  92. package/dist/core/freedom/banner.d.ts +14 -0
  93. package/dist/core/freedom/banner.d.ts.map +1 -0
  94. package/dist/core/freedom/banner.js +22 -0
  95. package/dist/core/freedom/banner.js.map +1 -0
  96. package/dist/core/freedom/config.d.ts +27 -0
  97. package/dist/core/freedom/config.d.ts.map +1 -0
  98. package/dist/core/freedom/config.js +216 -0
  99. package/dist/core/freedom/config.js.map +1 -0
  100. package/dist/core/freedom/index.d.ts +23 -0
  101. package/dist/core/freedom/index.d.ts.map +1 -0
  102. package/dist/core/freedom/index.js +19 -0
  103. package/dist/core/freedom/index.js.map +1 -0
  104. package/dist/core/freedom/policy.d.ts +42 -0
  105. package/dist/core/freedom/policy.d.ts.map +1 -0
  106. package/dist/core/freedom/policy.js +47 -0
  107. package/dist/core/freedom/policy.js.map +1 -0
  108. package/dist/core/freedom/safety-floor.d.ts +73 -0
  109. package/dist/core/freedom/safety-floor.d.ts.map +1 -0
  110. package/dist/core/freedom/safety-floor.js +275 -0
  111. package/dist/core/freedom/safety-floor.js.map +1 -0
  112. package/dist/core/harness-control-events.d.ts +91 -0
  113. package/dist/core/harness-control-events.d.ts.map +1 -0
  114. package/dist/core/harness-control-events.js +514 -0
  115. package/dist/core/harness-control-events.js.map +1 -0
  116. package/dist/core/harness-control-replay.d.ts +31 -0
  117. package/dist/core/harness-control-replay.d.ts.map +1 -0
  118. package/dist/core/harness-control-replay.js +187 -0
  119. package/dist/core/harness-control-replay.js.map +1 -0
  120. package/dist/core/headroom-middleware.d.ts +35 -0
  121. package/dist/core/headroom-middleware.d.ts.map +1 -0
  122. package/dist/core/headroom-middleware.js +166 -0
  123. package/dist/core/headroom-middleware.js.map +1 -0
  124. package/dist/core/hook-inventory.d.ts +23 -0
  125. package/dist/core/hook-inventory.d.ts.map +1 -0
  126. package/dist/core/hook-inventory.js +50 -0
  127. package/dist/core/hook-inventory.js.map +1 -0
  128. package/dist/core/keybindings.d.ts +12 -0
  129. package/dist/core/keybindings.d.ts.map +1 -1
  130. package/dist/core/keybindings.js +31 -1
  131. package/dist/core/keybindings.js.map +1 -1
  132. package/dist/core/lean-context-middleware.d.ts +12 -0
  133. package/dist/core/lean-context-middleware.d.ts.map +1 -0
  134. package/dist/core/lean-context-middleware.js +87 -0
  135. package/dist/core/lean-context-middleware.js.map +1 -0
  136. package/dist/core/lean-context-policy.d.ts +45 -0
  137. package/dist/core/lean-context-policy.d.ts.map +1 -0
  138. package/dist/core/lean-context-policy.js +108 -0
  139. package/dist/core/lean-context-policy.js.map +1 -0
  140. package/dist/core/loadout-access-policy.d.ts +41 -0
  141. package/dist/core/loadout-access-policy.d.ts.map +1 -0
  142. package/dist/core/loadout-access-policy.js +182 -0
  143. package/dist/core/loadout-access-policy.js.map +1 -0
  144. package/dist/core/loadout-runtime.d.ts +84 -0
  145. package/dist/core/loadout-runtime.d.ts.map +1 -0
  146. package/dist/core/loadout-runtime.js +157 -0
  147. package/dist/core/loadout-runtime.js.map +1 -0
  148. package/dist/core/loadouts.d.ts +147 -0
  149. package/dist/core/loadouts.d.ts.map +1 -0
  150. package/dist/core/loadouts.js +442 -0
  151. package/dist/core/loadouts.js.map +1 -0
  152. package/dist/core/mcp-inventory.d.ts +74 -0
  153. package/dist/core/mcp-inventory.d.ts.map +1 -0
  154. package/dist/core/mcp-inventory.js +156 -0
  155. package/dist/core/mcp-inventory.js.map +1 -0
  156. package/dist/core/mcp-presets.d.ts +57 -0
  157. package/dist/core/mcp-presets.d.ts.map +1 -0
  158. package/dist/core/mcp-presets.js +81 -0
  159. package/dist/core/mcp-presets.js.map +1 -0
  160. package/dist/core/model-registry.d.ts +1 -0
  161. package/dist/core/model-registry.d.ts.map +1 -1
  162. package/dist/core/model-registry.js +40 -17
  163. package/dist/core/model-registry.js.map +1 -1
  164. package/dist/core/model-resolver.d.ts.map +1 -1
  165. package/dist/core/model-resolver.js +1 -0
  166. package/dist/core/model-resolver.js.map +1 -1
  167. package/dist/core/native-adoption-benchmark.d.ts +166 -0
  168. package/dist/core/native-adoption-benchmark.d.ts.map +1 -0
  169. package/dist/core/native-adoption-benchmark.js +624 -0
  170. package/dist/core/native-adoption-benchmark.js.map +1 -0
  171. package/dist/core/observability-trace.d.ts +80 -0
  172. package/dist/core/observability-trace.d.ts.map +1 -0
  173. package/dist/core/observability-trace.js +140 -0
  174. package/dist/core/observability-trace.js.map +1 -0
  175. package/dist/core/orchestration/checkpoint.d.ts +83 -0
  176. package/dist/core/orchestration/checkpoint.d.ts.map +1 -0
  177. package/dist/core/orchestration/checkpoint.js +152 -0
  178. package/dist/core/orchestration/checkpoint.js.map +1 -0
  179. package/dist/core/orchestration/errors.d.ts +74 -0
  180. package/dist/core/orchestration/errors.d.ts.map +1 -0
  181. package/dist/core/orchestration/errors.js +52 -0
  182. package/dist/core/orchestration/errors.js.map +1 -0
  183. package/dist/core/orchestration/merge-queue.d.ts +121 -0
  184. package/dist/core/orchestration/merge-queue.d.ts.map +1 -0
  185. package/dist/core/orchestration/merge-queue.js +149 -0
  186. package/dist/core/orchestration/merge-queue.js.map +1 -0
  187. package/dist/core/orchestration/recovery.d.ts +106 -0
  188. package/dist/core/orchestration/recovery.d.ts.map +1 -0
  189. package/dist/core/orchestration/recovery.js +110 -0
  190. package/dist/core/orchestration/recovery.js.map +1 -0
  191. package/dist/core/orchestration/replay-ledger.d.ts +76 -0
  192. package/dist/core/orchestration/replay-ledger.d.ts.map +1 -0
  193. package/dist/core/orchestration/replay-ledger.js +395 -0
  194. package/dist/core/orchestration/replay-ledger.js.map +1 -0
  195. package/dist/core/orchestration/scheduler-state.d.ts +78 -0
  196. package/dist/core/orchestration/scheduler-state.d.ts.map +1 -0
  197. package/dist/core/orchestration/scheduler-state.js +185 -0
  198. package/dist/core/orchestration/scheduler-state.js.map +1 -0
  199. package/dist/core/orchestration/scheduler-store.d.ts +309 -0
  200. package/dist/core/orchestration/scheduler-store.d.ts.map +1 -0
  201. package/dist/core/orchestration/scheduler-store.js +368 -0
  202. package/dist/core/orchestration/scheduler-store.js.map +1 -0
  203. package/dist/core/orchestration/sqlite-scheduler-store.d.ts +57 -0
  204. package/dist/core/orchestration/sqlite-scheduler-store.d.ts.map +1 -0
  205. package/dist/core/orchestration/sqlite-scheduler-store.js +528 -0
  206. package/dist/core/orchestration/sqlite-scheduler-store.js.map +1 -0
  207. package/dist/core/orchestration/transaction-coordinator.d.ts +217 -0
  208. package/dist/core/orchestration/transaction-coordinator.d.ts.map +1 -0
  209. package/dist/core/orchestration/transaction-coordinator.js +281 -0
  210. package/dist/core/orchestration/transaction-coordinator.js.map +1 -0
  211. package/dist/core/orchestration/verification-contract.d.ts +197 -0
  212. package/dist/core/orchestration/verification-contract.d.ts.map +1 -0
  213. package/dist/core/orchestration/verification-contract.js +145 -0
  214. package/dist/core/orchestration/verification-contract.js.map +1 -0
  215. package/dist/core/package-composition.d.ts +68 -0
  216. package/dist/core/package-composition.d.ts.map +1 -0
  217. package/dist/core/package-composition.js +304 -0
  218. package/dist/core/package-composition.js.map +1 -0
  219. package/dist/core/package-gallery.d.ts +124 -0
  220. package/dist/core/package-gallery.d.ts.map +1 -0
  221. package/dist/core/package-gallery.js +392 -0
  222. package/dist/core/package-gallery.js.map +1 -0
  223. package/dist/core/package-manager.d.ts +69 -0
  224. package/dist/core/package-manager.d.ts.map +1 -1
  225. package/dist/core/package-manager.js +367 -69
  226. package/dist/core/package-manager.js.map +1 -1
  227. package/dist/core/package-procurement.d.ts +268 -0
  228. package/dist/core/package-procurement.d.ts.map +1 -0
  229. package/dist/core/package-procurement.js +697 -0
  230. package/dist/core/package-procurement.js.map +1 -0
  231. package/dist/core/package-trial-runtime.d.ts +75 -0
  232. package/dist/core/package-trial-runtime.d.ts.map +1 -0
  233. package/dist/core/package-trial-runtime.js +73 -0
  234. package/dist/core/package-trial-runtime.js.map +1 -0
  235. package/dist/core/package-trial-sandbox.d.ts +27 -0
  236. package/dist/core/package-trial-sandbox.d.ts.map +1 -0
  237. package/dist/core/package-trial-sandbox.js +102 -0
  238. package/dist/core/package-trial-sandbox.js.map +1 -0
  239. package/dist/core/policy-overlays-runtime.d.ts +141 -0
  240. package/dist/core/policy-overlays-runtime.d.ts.map +1 -0
  241. package/dist/core/policy-overlays-runtime.js +720 -0
  242. package/dist/core/policy-overlays-runtime.js.map +1 -0
  243. package/dist/core/read-anchor-registry.d.ts +27 -0
  244. package/dist/core/read-anchor-registry.d.ts.map +1 -0
  245. package/dist/core/read-anchor-registry.js +103 -0
  246. package/dist/core/read-anchor-registry.js.map +1 -0
  247. package/dist/core/read-anchors.d.ts +110 -0
  248. package/dist/core/read-anchors.d.ts.map +1 -0
  249. package/dist/core/read-anchors.js +193 -0
  250. package/dist/core/read-anchors.js.map +1 -0
  251. package/dist/core/read-content-cache.d.ts +22 -0
  252. package/dist/core/read-content-cache.d.ts.map +1 -0
  253. package/dist/core/read-content-cache.js +79 -0
  254. package/dist/core/read-content-cache.js.map +1 -0
  255. package/dist/core/recovery-checkpoint.d.ts +196 -0
  256. package/dist/core/recovery-checkpoint.d.ts.map +1 -0
  257. package/dist/core/recovery-checkpoint.js +382 -0
  258. package/dist/core/recovery-checkpoint.js.map +1 -0
  259. package/dist/core/resolve-config-value.d.ts +1 -1
  260. package/dist/core/resolve-config-value.d.ts.map +1 -1
  261. package/dist/core/resolve-config-value.js +30 -2
  262. package/dist/core/resolve-config-value.js.map +1 -1
  263. package/dist/core/resource-loader.d.ts +23 -21
  264. package/dist/core/resource-loader.d.ts.map +1 -1
  265. package/dist/core/resource-loader.js +93 -15
  266. package/dist/core/resource-loader.js.map +1 -1
  267. package/dist/core/sandbox/backend.d.ts +25 -0
  268. package/dist/core/sandbox/backend.d.ts.map +1 -0
  269. package/dist/core/sandbox/backend.js +150 -0
  270. package/dist/core/sandbox/backend.js.map +1 -0
  271. package/dist/core/sandbox/env.d.ts +6 -0
  272. package/dist/core/sandbox/env.d.ts.map +1 -0
  273. package/dist/core/sandbox/env.js +46 -0
  274. package/dist/core/sandbox/env.js.map +1 -0
  275. package/dist/core/sandbox/path-resolver.d.ts +4 -0
  276. package/dist/core/sandbox/path-resolver.d.ts.map +1 -0
  277. package/dist/core/sandbox/path-resolver.js +44 -0
  278. package/dist/core/sandbox/path-resolver.js.map +1 -0
  279. package/dist/core/sandbox/policy.d.ts +87 -0
  280. package/dist/core/sandbox/policy.d.ts.map +1 -0
  281. package/dist/core/sandbox/policy.js +280 -0
  282. package/dist/core/sandbox/policy.js.map +1 -0
  283. package/dist/core/sandbox/spawn.d.ts +20 -0
  284. package/dist/core/sandbox/spawn.d.ts.map +1 -0
  285. package/dist/core/sandbox/spawn.js +80 -0
  286. package/dist/core/sandbox/spawn.js.map +1 -0
  287. package/dist/core/sdk.d.ts +83 -4
  288. package/dist/core/sdk.d.ts.map +1 -1
  289. package/dist/core/sdk.js +143 -55
  290. package/dist/core/sdk.js.map +1 -1
  291. package/dist/core/semantic-cache-policy.d.ts +45 -0
  292. package/dist/core/semantic-cache-policy.d.ts.map +1 -0
  293. package/dist/core/semantic-cache-policy.js +220 -0
  294. package/dist/core/semantic-cache-policy.js.map +1 -0
  295. package/dist/core/session-digest.d.ts +57 -0
  296. package/dist/core/session-digest.d.ts.map +1 -0
  297. package/dist/core/session-digest.js +193 -0
  298. package/dist/core/session-digest.js.map +1 -0
  299. package/dist/core/session-manager.d.ts +2 -2
  300. package/dist/core/session-manager.d.ts.map +1 -1
  301. package/dist/core/session-manager.js +5 -4
  302. package/dist/core/session-manager.js.map +1 -1
  303. package/dist/core/settings-manager.d.ts +17 -0
  304. package/dist/core/settings-manager.d.ts.map +1 -1
  305. package/dist/core/settings-manager.js +47 -2
  306. package/dist/core/settings-manager.js.map +1 -1
  307. package/dist/core/slash-commands.d.ts.map +1 -1
  308. package/dist/core/slash-commands.js +4 -1
  309. package/dist/core/slash-commands.js.map +1 -1
  310. package/dist/core/spec-kit/compiler.d.ts +67 -0
  311. package/dist/core/spec-kit/compiler.d.ts.map +1 -0
  312. package/dist/core/spec-kit/compiler.js +268 -0
  313. package/dist/core/spec-kit/compiler.js.map +1 -0
  314. package/dist/core/system-prompt.d.ts.map +1 -1
  315. package/dist/core/system-prompt.js +25 -7
  316. package/dist/core/system-prompt.js.map +1 -1
  317. package/dist/core/telemetry.d.ts.map +1 -1
  318. package/dist/core/telemetry.js +1 -1
  319. package/dist/core/telemetry.js.map +1 -1
  320. package/dist/core/timings.d.ts +1 -1
  321. package/dist/core/timings.d.ts.map +1 -1
  322. package/dist/core/timings.js +2 -2
  323. package/dist/core/timings.js.map +1 -1
  324. package/dist/core/tools/bash.d.ts +28 -3
  325. package/dist/core/tools/bash.d.ts.map +1 -1
  326. package/dist/core/tools/bash.js +53 -10
  327. package/dist/core/tools/bash.js.map +1 -1
  328. package/dist/core/tools/edit.d.ts +12 -0
  329. package/dist/core/tools/edit.d.ts.map +1 -1
  330. package/dist/core/tools/edit.js +24 -0
  331. package/dist/core/tools/edit.js.map +1 -1
  332. package/dist/core/tools/find.d.ts +3 -0
  333. package/dist/core/tools/find.d.ts.map +1 -1
  334. package/dist/core/tools/find.js +3 -0
  335. package/dist/core/tools/find.js.map +1 -1
  336. package/dist/core/tools/grep.d.ts +3 -0
  337. package/dist/core/tools/grep.d.ts.map +1 -1
  338. package/dist/core/tools/grep.js +4 -1
  339. package/dist/core/tools/grep.js.map +1 -1
  340. package/dist/core/tools/index.d.ts +1 -1
  341. package/dist/core/tools/index.d.ts.map +1 -1
  342. package/dist/core/tools/index.js.map +1 -1
  343. package/dist/core/tools/ls.d.ts +3 -0
  344. package/dist/core/tools/ls.d.ts.map +1 -1
  345. package/dist/core/tools/ls.js +3 -0
  346. package/dist/core/tools/ls.js.map +1 -1
  347. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  348. package/dist/core/tools/output-accumulator.js +1 -1
  349. package/dist/core/tools/output-accumulator.js.map +1 -1
  350. package/dist/core/tools/read.d.ts +13 -0
  351. package/dist/core/tools/read.d.ts.map +1 -1
  352. package/dist/core/tools/read.js +29 -2
  353. package/dist/core/tools/read.js.map +1 -1
  354. package/dist/core/tools/write.d.ts +3 -0
  355. package/dist/core/tools/write.d.ts.map +1 -1
  356. package/dist/core/tools/write.js +3 -0
  357. package/dist/core/tools/write.js.map +1 -1
  358. package/dist/core/transaction-coordinator.d.ts +30 -0
  359. package/dist/core/transaction-coordinator.d.ts.map +1 -0
  360. package/dist/core/transaction-coordinator.js +173 -0
  361. package/dist/core/transaction-coordinator.js.map +1 -0
  362. package/dist/index.d.ts +19 -4
  363. package/dist/index.d.ts.map +1 -1
  364. package/dist/index.js +17 -2
  365. package/dist/index.js.map +1 -1
  366. package/dist/main.d.ts.map +1 -1
  367. package/dist/main.js +4 -6
  368. package/dist/main.js.map +1 -1
  369. package/dist/migrations.d.ts +35 -0
  370. package/dist/migrations.d.ts.map +1 -1
  371. package/dist/migrations.js +410 -4
  372. package/dist/migrations.js.map +1 -1
  373. package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts +28 -0
  374. package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts.map +1 -0
  375. package/dist/modes/interactive/components/control-panel-gradient-motion.js +146 -0
  376. package/dist/modes/interactive/components/control-panel-gradient-motion.js.map +1 -0
  377. package/dist/modes/interactive/components/control-panel-gradient.d.ts +27 -0
  378. package/dist/modes/interactive/components/control-panel-gradient.d.ts.map +1 -0
  379. package/dist/modes/interactive/components/control-panel-gradient.js +127 -0
  380. package/dist/modes/interactive/components/control-panel-gradient.js.map +1 -0
  381. package/dist/modes/interactive/components/control-panel.d.ts +56 -0
  382. package/dist/modes/interactive/components/control-panel.d.ts.map +1 -0
  383. package/dist/modes/interactive/components/control-panel.js +240 -0
  384. package/dist/modes/interactive/components/control-panel.js.map +1 -0
  385. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  386. package/dist/modes/interactive/components/custom-editor.js +21 -13
  387. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  388. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  389. package/dist/modes/interactive/components/earendil-announcement.js +1 -1
  390. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  391. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  392. package/dist/modes/interactive/components/extension-editor.js +1 -1
  393. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  394. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  395. package/dist/modes/interactive/components/footer.js +8 -0
  396. package/dist/modes/interactive/components/footer.js.map +1 -1
  397. package/dist/modes/interactive/components/index.d.ts +3 -0
  398. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  399. package/dist/modes/interactive/components/index.js +3 -0
  400. package/dist/modes/interactive/components/index.js.map +1 -1
  401. package/dist/modes/interactive/components/mcp-selector.d.ts +30 -0
  402. package/dist/modes/interactive/components/mcp-selector.d.ts.map +1 -0
  403. package/dist/modes/interactive/components/mcp-selector.js +155 -0
  404. package/dist/modes/interactive/components/mcp-selector.js.map +1 -0
  405. package/dist/modes/interactive/components/model-selector-state.d.ts +101 -0
  406. package/dist/modes/interactive/components/model-selector-state.d.ts.map +1 -0
  407. package/dist/modes/interactive/components/model-selector-state.js +261 -0
  408. package/dist/modes/interactive/components/model-selector-state.js.map +1 -0
  409. package/dist/modes/interactive/components/model-selector.d.ts +52 -9
  410. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  411. package/dist/modes/interactive/components/model-selector.js +212 -66
  412. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  413. package/dist/modes/interactive/components/settings-selector.d.ts +19 -1
  414. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  415. package/dist/modes/interactive/components/settings-selector.js +21 -8
  416. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  417. package/dist/modes/interactive/components/skills-selector.d.ts +32 -0
  418. package/dist/modes/interactive/components/skills-selector.d.ts.map +1 -0
  419. package/dist/modes/interactive/components/skills-selector.js +130 -0
  420. package/dist/modes/interactive/components/skills-selector.js.map +1 -0
  421. package/dist/modes/interactive/components/theme-selector.d.ts +1 -0
  422. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  423. package/dist/modes/interactive/components/theme-selector.js +10 -1
  424. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  425. package/dist/modes/interactive/components/thinking-selector.d.ts +7 -8
  426. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  427. package/dist/modes/interactive/components/thinking-selector.js +7 -48
  428. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  429. package/dist/modes/interactive/interactive-mode.d.ts +13 -2
  430. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  431. package/dist/modes/interactive/interactive-mode.js +399 -108
  432. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  433. package/dist/modes/interactive/theme/catppuccin-mocha.json +86 -0
  434. package/dist/modes/interactive/theme/dracula.json +86 -0
  435. package/dist/modes/interactive/theme/gruvbox-dark.json +86 -0
  436. package/dist/modes/interactive/theme/kanagawa-dragon.json +86 -0
  437. package/dist/modes/interactive/theme/omk-blackboard.json +91 -0
  438. package/dist/modes/interactive/theme/omk-control-panel.json +91 -0
  439. package/dist/modes/interactive/theme/omk-freedom-grid.json +91 -0
  440. package/dist/modes/interactive/theme/omk-neon-ops.json +90 -0
  441. package/dist/modes/interactive/theme/omk-slate-light.json +91 -0
  442. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  443. package/dist/modes/interactive/theme/theme.js +55 -16
  444. package/dist/modes/interactive/theme/theme.js.map +1 -1
  445. package/dist/modes/interactive/theme/tokyo-night-storm.json +86 -0
  446. package/dist/modes/print-mode.d.ts +2 -2
  447. package/dist/modes/print-mode.d.ts.map +1 -1
  448. package/dist/modes/print-mode.js +2 -2
  449. package/dist/modes/print-mode.js.map +1 -1
  450. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  451. package/dist/modes/rpc/rpc-mode.js +4 -0
  452. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  453. package/dist/package-manager-cli.d.ts.map +1 -1
  454. package/dist/package-manager-cli.js +114 -49
  455. package/dist/package-manager-cli.js.map +1 -1
  456. package/dist/utils/clipboard-image.d.ts.map +1 -1
  457. package/dist/utils/clipboard-image.js +1 -1
  458. package/dist/utils/clipboard-image.js.map +1 -1
  459. package/dist/utils/omk-user-agent.d.ts +2 -0
  460. package/dist/utils/omk-user-agent.d.ts.map +1 -0
  461. package/dist/utils/{pi-user-agent.js → omk-user-agent.js} +2 -2
  462. package/dist/utils/omk-user-agent.js.map +1 -0
  463. package/dist/utils/tools-manager.d.ts.map +1 -1
  464. package/dist/utils/tools-manager.js +1 -1
  465. package/dist/utils/tools-manager.js.map +1 -1
  466. package/dist/utils/version-check.d.ts +5 -5
  467. package/dist/utils/version-check.d.ts.map +1 -1
  468. package/dist/utils/version-check.js +8 -11
  469. package/dist/utils/version-check.js.map +1 -1
  470. package/dist/utils/windows-self-update.d.ts.map +1 -1
  471. package/dist/utils/windows-self-update.js +1 -1
  472. package/dist/utils/windows-self-update.js.map +1 -1
  473. package/docs/compaction.md +21 -8
  474. package/docs/packages.md +47 -6
  475. package/docs/prompt-templates.md +2 -0
  476. package/docs/quickstart.md +1 -1
  477. package/docs/themes.md +10 -2
  478. package/docs/usage.md +18 -7
  479. package/examples/README.md +1 -1
  480. package/examples/extensions/README.md +11 -11
  481. package/examples/extensions/auto-commit-on-exit.ts +6 -6
  482. package/examples/extensions/bash-spawn-hook.ts +4 -4
  483. package/examples/extensions/bookmark.ts +5 -5
  484. package/examples/extensions/border-status-editor.ts +7 -7
  485. package/examples/extensions/built-in-tool-renderer.ts +6 -6
  486. package/examples/extensions/claude-rules.ts +4 -4
  487. package/examples/extensions/commands.ts +5 -5
  488. package/examples/extensions/confirm-destructive.ts +3 -3
  489. package/examples/extensions/custom-compaction.ts +3 -3
  490. package/examples/extensions/custom-footer.ts +2 -2
  491. package/examples/extensions/custom-header.ts +5 -5
  492. package/examples/extensions/custom-provider-anthropic/index.ts +4 -4
  493. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  494. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  495. package/examples/extensions/custom-provider-gitlab-duo/index.ts +3 -3
  496. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  497. package/examples/extensions/dirty-repo-guard.ts +7 -7
  498. package/examples/extensions/doom-overlay/README.md +3 -3
  499. package/examples/extensions/doom-overlay/doom/build.sh +2 -2
  500. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +1 -1
  501. package/examples/extensions/doom-overlay/index.ts +3 -3
  502. package/examples/extensions/dynamic-resources/dynamic.json +1 -1
  503. package/examples/extensions/dynamic-resources/index.ts +2 -2
  504. package/examples/extensions/dynamic-tools.ts +4 -4
  505. package/examples/extensions/event-bus.ts +8 -8
  506. package/examples/extensions/file-trigger.ts +3 -3
  507. package/examples/extensions/git-checkpoint.ts +7 -7
  508. package/examples/extensions/git-merge-and-resolve.ts +14 -14
  509. package/examples/extensions/github-issue-autocomplete.ts +6 -6
  510. package/examples/extensions/gondolin/index.ts +16 -16
  511. package/examples/extensions/gondolin/package-lock.json +2 -2
  512. package/examples/extensions/gondolin/package.json +1 -1
  513. package/examples/extensions/handoff.ts +2 -2
  514. package/examples/extensions/hello.ts +2 -2
  515. package/examples/extensions/hidden-thinking-label.ts +4 -4
  516. package/examples/extensions/inline-bash.ts +5 -5
  517. package/examples/extensions/input-transform-streaming.ts +5 -5
  518. package/examples/extensions/input-transform.ts +5 -5
  519. package/examples/extensions/interactive-shell.ts +3 -3
  520. package/examples/extensions/mac-system-theme.ts +5 -5
  521. package/examples/extensions/message-renderer.ts +4 -4
  522. package/examples/extensions/minimal-mode.ts +9 -9
  523. package/examples/extensions/modal-editor.ts +3 -3
  524. package/examples/extensions/model-status.ts +3 -3
  525. package/examples/extensions/notify.ts +5 -5
  526. package/examples/extensions/overlay-qa-tests.ts +20 -20
  527. package/examples/extensions/overlay-test.ts +3 -3
  528. package/examples/extensions/permission-gate.ts +2 -2
  529. package/examples/extensions/pirate.ts +4 -4
  530. package/examples/extensions/plan-mode/index.ts +22 -22
  531. package/examples/extensions/preset.ts +30 -30
  532. package/examples/extensions/prompt-customizer.ts +3 -3
  533. package/examples/extensions/protected-paths.ts +2 -2
  534. package/examples/extensions/provider-payload.ts +5 -5
  535. package/examples/extensions/qna.ts +2 -2
  536. package/examples/extensions/question.ts +2 -2
  537. package/examples/extensions/questionnaire.ts +2 -2
  538. package/examples/extensions/rainbow-editor.ts +3 -3
  539. package/examples/extensions/reload-runtime.ts +4 -4
  540. package/examples/extensions/rpc-demo.ts +10 -10
  541. package/examples/extensions/sandbox/index.ts +17 -17
  542. package/examples/extensions/sandbox/package-lock.json +2 -2
  543. package/examples/extensions/sandbox/package.json +1 -1
  544. package/examples/extensions/send-user-message.ts +13 -13
  545. package/examples/extensions/session-name.ts +4 -4
  546. package/examples/extensions/shutdown-command.ts +10 -10
  547. package/examples/extensions/snake.ts +3 -3
  548. package/examples/extensions/space-invaders.ts +3 -3
  549. package/examples/extensions/ssh.ts +12 -12
  550. package/examples/extensions/status-line.ts +4 -4
  551. package/examples/extensions/structured-output.ts +2 -2
  552. package/examples/extensions/subagent/README.md +13 -13
  553. package/examples/extensions/subagent/agents.ts +2 -2
  554. package/examples/extensions/subagent/index.ts +53 -21
  555. package/examples/extensions/summarize.ts +2 -2
  556. package/examples/extensions/system-prompt-header.ts +3 -3
  557. package/examples/extensions/tic-tac-toe.ts +15 -15
  558. package/examples/extensions/timed-confirm.ts +4 -4
  559. package/examples/extensions/titlebar-spinner.ts +9 -9
  560. package/examples/extensions/todo.ts +5 -5
  561. package/examples/extensions/tool-override.ts +5 -5
  562. package/examples/extensions/tools.ts +10 -10
  563. package/examples/extensions/trigger-compact.ts +3 -3
  564. package/examples/extensions/truncated-tool.ts +3 -3
  565. package/examples/extensions/widget-placement.ts +2 -2
  566. package/examples/extensions/with-deps/index.ts +2 -2
  567. package/examples/extensions/with-deps/package-lock.json +2 -2
  568. package/examples/extensions/with-deps/package.json +1 -1
  569. package/examples/extensions/working-indicator.ts +7 -7
  570. package/examples/extensions/working-message-test.ts +3 -3
  571. package/examples/sdk/01-minimal.ts +1 -1
  572. package/examples/sdk/03-custom-prompt.ts +1 -1
  573. package/examples/sdk/04-skills.ts +1 -1
  574. package/examples/sdk/05-tools.ts +1 -1
  575. package/examples/sdk/06-extensions.ts +11 -11
  576. package/examples/sdk/07-context-files.ts +2 -0
  577. package/examples/sdk/08-prompt-templates.ts +1 -1
  578. package/examples/sdk/09-api-keys-and-oauth.ts +2 -2
  579. package/examples/sdk/README.md +2 -2
  580. package/node_modules/@earendil-works/omk-agent-core/README.md +488 -0
  581. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts +24 -0
  582. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts.map +1 -0
  583. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js +553 -0
  584. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js.map +1 -0
  585. package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts +118 -0
  586. package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts.map +1 -0
  587. package/node_modules/@earendil-works/omk-agent-core/dist/agent.js +402 -0
  588. package/node_modules/@earendil-works/omk-agent-core/dist/agent.js.map +1 -0
  589. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts +95 -0
  590. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts.map +1 -0
  591. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js +996 -0
  592. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js.map +1 -0
  593. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts +53 -0
  594. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +1 -0
  595. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js +175 -0
  596. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -0
  597. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts +117 -0
  598. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -0
  599. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js +568 -0
  600. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js.map +1 -0
  601. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts +25 -0
  602. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts.map +1 -0
  603. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js +131 -0
  604. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js.map +1 -0
  605. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts +51 -0
  606. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts.map +1 -0
  607. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js +510 -0
  608. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js.map +1 -0
  609. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts +51 -0
  610. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts.map +1 -0
  611. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js +102 -0
  612. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js.map +1 -0
  613. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts +48 -0
  614. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts.map +1 -0
  615. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js +230 -0
  616. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js.map +1 -0
  617. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts +26 -0
  618. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts.map +1 -0
  619. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js +101 -0
  620. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js.map +1 -0
  621. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts +36 -0
  622. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts.map +1 -0
  623. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js +273 -0
  624. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js.map +1 -0
  625. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts +18 -0
  626. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts.map +1 -0
  627. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js +42 -0
  628. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js.map +1 -0
  629. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts +25 -0
  630. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts.map +1 -0
  631. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js +114 -0
  632. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js.map +1 -0
  633. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts +11 -0
  634. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts.map +1 -0
  635. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js +39 -0
  636. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js.map +1 -0
  637. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts +33 -0
  638. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts.map +1 -0
  639. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js +210 -0
  640. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js.map +1 -0
  641. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts +2 -0
  642. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts.map +1 -0
  643. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js +50 -0
  644. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js.map +1 -0
  645. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts +44 -0
  646. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts.map +1 -0
  647. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js +311 -0
  648. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js.map +1 -0
  649. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts +3 -0
  650. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts.map +1 -0
  651. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js +30 -0
  652. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js.map +1 -0
  653. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts +616 -0
  654. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts.map +1 -0
  655. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js +94 -0
  656. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js.map +1 -0
  657. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts +14 -0
  658. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts.map +1 -0
  659. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js +126 -0
  660. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js.map +1 -0
  661. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts +70 -0
  662. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts.map +1 -0
  663. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js +297 -0
  664. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js.map +1 -0
  665. package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts +20 -0
  666. package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts.map +1 -0
  667. package/node_modules/@earendil-works/omk-agent-core/dist/index.js +25 -0
  668. package/node_modules/@earendil-works/omk-agent-core/dist/index.js.map +1 -0
  669. package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts +3 -0
  670. package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts.map +1 -0
  671. package/node_modules/@earendil-works/omk-agent-core/dist/node.js +3 -0
  672. package/node_modules/@earendil-works/omk-agent-core/dist/node.js.map +1 -0
  673. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts +69 -0
  674. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts.map +1 -0
  675. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js +278 -0
  676. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js.map +1 -0
  677. package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts +393 -0
  678. package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts.map +1 -0
  679. package/node_modules/@earendil-works/omk-agent-core/dist/types.js +2 -0
  680. package/node_modules/@earendil-works/omk-agent-core/dist/types.js.map +1 -0
  681. package/node_modules/@earendil-works/omk-agent-core/package.json +60 -0
  682. package/node_modules/@earendil-works/omk-ai/README.md +1389 -0
  683. package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts +20 -0
  684. package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts.map +1 -0
  685. package/node_modules/@earendil-works/omk-ai/dist/api-registry.js +44 -0
  686. package/node_modules/@earendil-works/omk-ai/dist/api-registry.js.map +1 -0
  687. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts +5 -0
  688. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts.map +1 -0
  689. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js +6 -0
  690. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js.map +1 -0
  691. package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts +3 -0
  692. package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts.map +1 -0
  693. package/node_modules/@earendil-works/omk-ai/dist/cli.js +130 -0
  694. package/node_modules/@earendil-works/omk-ai/dist/cli.js.map +1 -0
  695. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts +20 -0
  696. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts.map +1 -0
  697. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js +199 -0
  698. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js.map +1 -0
  699. package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts +10 -0
  700. package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts.map +1 -0
  701. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts +515 -0
  702. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts.map +1 -0
  703. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js +517 -0
  704. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js.map +1 -0
  705. package/node_modules/@earendil-works/omk-ai/dist/image-models.js +23 -0
  706. package/node_modules/@earendil-works/omk-ai/dist/image-models.js.map +1 -0
  707. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts +14 -0
  708. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts.map +1 -0
  709. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js +22 -0
  710. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js.map +1 -0
  711. package/node_modules/@earendil-works/omk-ai/dist/images.d.ts +4 -0
  712. package/node_modules/@earendil-works/omk-ai/dist/images.d.ts.map +1 -0
  713. package/node_modules/@earendil-works/omk-ai/dist/images.js +16 -0
  714. package/node_modules/@earendil-works/omk-ai/dist/images.js.map +1 -0
  715. package/node_modules/@earendil-works/omk-ai/dist/index.d.ts +33 -0
  716. package/node_modules/@earendil-works/omk-ai/dist/index.d.ts.map +1 -0
  717. package/node_modules/@earendil-works/omk-ai/dist/index.js +21 -0
  718. package/node_modules/@earendil-works/omk-ai/dist/index.js.map +1 -0
  719. package/node_modules/@earendil-works/omk-ai/dist/models.d.ts +18 -0
  720. package/node_modules/@earendil-works/omk-ai/dist/models.d.ts.map +1 -0
  721. package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts +18762 -0
  722. package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts.map +1 -0
  723. package/node_modules/@earendil-works/omk-ai/dist/models.generated.js +17197 -0
  724. package/node_modules/@earendil-works/omk-ai/dist/models.generated.js.map +1 -0
  725. package/node_modules/@earendil-works/omk-ai/dist/models.js +78 -0
  726. package/node_modules/@earendil-works/omk-ai/dist/models.js.map +1 -0
  727. package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts +2 -0
  728. package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts.map +1 -0
  729. package/node_modules/@earendil-works/omk-ai/dist/oauth.js +2 -0
  730. package/node_modules/@earendil-works/omk-ai/dist/oauth.js.map +1 -0
  731. package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts +39 -0
  732. package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts.map +1 -0
  733. package/node_modules/@earendil-works/omk-ai/dist/provider-network.js +170 -0
  734. package/node_modules/@earendil-works/omk-ai/dist/provider-network.js.map +1 -0
  735. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts +38 -0
  736. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts.map +1 -0
  737. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js +826 -0
  738. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js.map +1 -0
  739. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts +77 -0
  740. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts.map +1 -0
  741. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js +1123 -0
  742. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js.map +1 -0
  743. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts +15 -0
  744. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts.map +1 -0
  745. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js +221 -0
  746. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js.map +1 -0
  747. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts +13 -0
  748. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts.map +1 -0
  749. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js +26 -0
  750. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js.map +1 -0
  751. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts +56 -0
  752. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts.map +1 -0
  753. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js +368 -0
  754. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js.map +1 -0
  755. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts +8 -0
  756. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts.map +1 -0
  757. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js +29 -0
  758. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js.map +1 -0
  759. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts +70 -0
  760. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts.map +1 -0
  761. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js +331 -0
  762. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js.map +1 -0
  763. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts +15 -0
  764. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts.map +1 -0
  765. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js +442 -0
  766. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js.map +1 -0
  767. package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts +13 -0
  768. package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts.map +1 -0
  769. package/node_modules/@earendil-works/omk-ai/dist/providers/google.js +402 -0
  770. package/node_modules/@earendil-works/omk-ai/dist/providers/google.js.map +1 -0
  771. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts +3 -0
  772. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts.map +1 -0
  773. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js +128 -0
  774. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js.map +1 -0
  775. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts +4 -0
  776. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts.map +1 -0
  777. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js +34 -0
  778. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js.map +1 -0
  779. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts +25 -0
  780. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts.map +1 -0
  781. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js +534 -0
  782. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js.map +1 -0
  783. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts +30 -0
  784. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts.map +1 -0
  785. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js +1171 -0
  786. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js.map +1 -0
  787. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts +19 -0
  788. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts.map +1 -0
  789. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js +977 -0
  790. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js.map +1 -0
  791. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts +11 -0
  792. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts.map +1 -0
  793. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js +22 -0
  794. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js.map +1 -0
  795. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts +18 -0
  796. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts.map +1 -0
  797. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js +496 -0
  798. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js.map +1 -0
  799. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts +13 -0
  800. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts.map +1 -0
  801. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js +233 -0
  802. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js.map +1 -0
  803. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts +35 -0
  804. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts.map +1 -0
  805. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js +254 -0
  806. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js.map +1 -0
  807. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts +8 -0
  808. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts.map +1 -0
  809. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js +42 -0
  810. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js.map +1 -0
  811. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts +13 -0
  812. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts.map +1 -0
  813. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js +82 -0
  814. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js.map +1 -0
  815. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts +8 -0
  816. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts.map +1 -0
  817. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js +184 -0
  818. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js.map +1 -0
  819. package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts +4 -0
  820. package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts.map +1 -0
  821. package/node_modules/@earendil-works/omk-ai/dist/session-resources.js +22 -0
  822. package/node_modules/@earendil-works/omk-ai/dist/session-resources.js.map +1 -0
  823. package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts +8 -0
  824. package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts.map +1 -0
  825. package/node_modules/@earendil-works/omk-ai/dist/stream.js +77 -0
  826. package/node_modules/@earendil-works/omk-ai/dist/stream.js.map +1 -0
  827. package/node_modules/@earendil-works/omk-ai/dist/types.d.ts +570 -0
  828. package/node_modules/@earendil-works/omk-ai/dist/types.d.ts.map +1 -0
  829. package/node_modules/@earendil-works/omk-ai/dist/types.js +2 -0
  830. package/node_modules/@earendil-works/omk-ai/dist/types.js.map +1 -0
  831. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts +6 -0
  832. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts.map +1 -0
  833. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js +34 -0
  834. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js.map +1 -0
  835. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts +19 -0
  836. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts.map +1 -0
  837. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js +25 -0
  838. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js.map +1 -0
  839. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts +21 -0
  840. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts.map +1 -0
  841. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js +81 -0
  842. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js.map +1 -0
  843. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts +3 -0
  844. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts.map +1 -0
  845. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js +14 -0
  846. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js.map +1 -0
  847. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts +2 -0
  848. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts.map +1 -0
  849. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js +8 -0
  850. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js.map +1 -0
  851. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts +16 -0
  852. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts.map +1 -0
  853. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js +113 -0
  854. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js.map +1 -0
  855. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts +10 -0
  856. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts.map +1 -0
  857. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js +97 -0
  858. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js.map +1 -0
  859. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts +25 -0
  860. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts.map +1 -0
  861. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js +335 -0
  862. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js.map +1 -0
  863. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts +21 -0
  864. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts.map +1 -0
  865. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js +56 -0
  866. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js.map +1 -0
  867. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts +30 -0
  868. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -0
  869. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js +280 -0
  870. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js.map +1 -0
  871. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts +58 -0
  872. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts.map +1 -0
  873. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js +122 -0
  874. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js.map +1 -0
  875. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts +3 -0
  876. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts.map +1 -0
  877. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js +105 -0
  878. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js.map +1 -0
  879. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts +43 -0
  880. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -0
  881. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js +487 -0
  882. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js.map +1 -0
  883. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts +13 -0
  884. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts.map +1 -0
  885. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js +31 -0
  886. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js.map +1 -0
  887. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts +64 -0
  888. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts.map +1 -0
  889. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js +2 -0
  890. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js.map +1 -0
  891. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts +57 -0
  892. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts.map +1 -0
  893. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js +154 -0
  894. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js.map +1 -0
  895. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts +22 -0
  896. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts.map +1 -0
  897. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js +26 -0
  898. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js.map +1 -0
  899. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts +17 -0
  900. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts.map +1 -0
  901. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js +21 -0
  902. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js.map +1 -0
  903. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts +18 -0
  904. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts.map +1 -0
  905. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js +281 -0
  906. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js.map +1 -0
  907. package/node_modules/@earendil-works/omk-ai/package.json +106 -0
  908. package/node_modules/@earendil-works/omk-tui/README.md +791 -0
  909. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts +54 -0
  910. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts.map +1 -0
  911. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js +632 -0
  912. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js.map +1 -0
  913. package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts +22 -0
  914. package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts.map +1 -0
  915. package/node_modules/@earendil-works/omk-tui/dist/components/box.js +104 -0
  916. package/node_modules/@earendil-works/omk-tui/dist/components/box.js.map +1 -0
  917. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts +22 -0
  918. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts.map +1 -0
  919. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js +35 -0
  920. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js.map +1 -0
  921. package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts +249 -0
  922. package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts.map +1 -0
  923. package/node_modules/@earendil-works/omk-tui/dist/components/editor.js +1857 -0
  924. package/node_modules/@earendil-works/omk-tui/dist/components/editor.js.map +1 -0
  925. package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts +28 -0
  926. package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts.map +1 -0
  927. package/node_modules/@earendil-works/omk-tui/dist/components/image.js +89 -0
  928. package/node_modules/@earendil-works/omk-tui/dist/components/image.js.map +1 -0
  929. package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts +37 -0
  930. package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts.map +1 -0
  931. package/node_modules/@earendil-works/omk-tui/dist/components/input.js +378 -0
  932. package/node_modules/@earendil-works/omk-tui/dist/components/input.js.map +1 -0
  933. package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts +31 -0
  934. package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts.map +1 -0
  935. package/node_modules/@earendil-works/omk-tui/dist/components/loader.js +69 -0
  936. package/node_modules/@earendil-works/omk-tui/dist/components/loader.js.map +1 -0
  937. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts +96 -0
  938. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts.map +1 -0
  939. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js +644 -0
  940. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js.map +1 -0
  941. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts +50 -0
  942. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts.map +1 -0
  943. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js +159 -0
  944. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js.map +1 -0
  945. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts +50 -0
  946. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts.map +1 -0
  947. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js +185 -0
  948. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js.map +1 -0
  949. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts +12 -0
  950. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts.map +1 -0
  951. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js +23 -0
  952. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js.map +1 -0
  953. package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts +19 -0
  954. package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts.map +1 -0
  955. package/node_modules/@earendil-works/omk-tui/dist/components/text.js +89 -0
  956. package/node_modules/@earendil-works/omk-tui/dist/components/text.js.map +1 -0
  957. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts +13 -0
  958. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts.map +1 -0
  959. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js +51 -0
  960. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js.map +1 -0
  961. package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts +39 -0
  962. package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts.map +1 -0
  963. package/node_modules/@earendil-works/omk-tui/dist/editor-component.js +2 -0
  964. package/node_modules/@earendil-works/omk-tui/dist/editor-component.js.map +1 -0
  965. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts +16 -0
  966. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts.map +1 -0
  967. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js +110 -0
  968. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js.map +1 -0
  969. package/node_modules/@earendil-works/omk-tui/dist/index.d.ts +23 -0
  970. package/node_modules/@earendil-works/omk-tui/dist/index.d.ts.map +1 -0
  971. package/node_modules/@earendil-works/omk-tui/dist/index.js +32 -0
  972. package/node_modules/@earendil-works/omk-tui/dist/index.js.map +1 -0
  973. package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts +212 -0
  974. package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts.map +1 -0
  975. package/node_modules/@earendil-works/omk-tui/dist/keybindings.js +252 -0
  976. package/node_modules/@earendil-works/omk-tui/dist/keybindings.js.map +1 -0
  977. package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts +184 -0
  978. package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts.map +1 -0
  979. package/node_modules/@earendil-works/omk-tui/dist/keys.js +1173 -0
  980. package/node_modules/@earendil-works/omk-tui/dist/keys.js.map +1 -0
  981. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts +28 -0
  982. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts.map +1 -0
  983. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js +44 -0
  984. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js.map +1 -0
  985. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts +3 -0
  986. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts.map +1 -0
  987. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js +53 -0
  988. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js.map +1 -0
  989. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts +50 -0
  990. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts.map +1 -0
  991. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js +361 -0
  992. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js.map +1 -0
  993. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts +90 -0
  994. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts.map +1 -0
  995. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js +366 -0
  996. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js.map +1 -0
  997. package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts +113 -0
  998. package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts.map +1 -0
  999. package/node_modules/@earendil-works/omk-tui/dist/terminal.js +472 -0
  1000. package/node_modules/@earendil-works/omk-tui/dist/terminal.js.map +1 -0
  1001. package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts +242 -0
  1002. package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts.map +1 -0
  1003. package/node_modules/@earendil-works/omk-tui/dist/tui.js +1221 -0
  1004. package/node_modules/@earendil-works/omk-tui/dist/tui.js.map +1 -0
  1005. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts +17 -0
  1006. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts.map +1 -0
  1007. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js +25 -0
  1008. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js.map +1 -0
  1009. package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts +84 -0
  1010. package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts.map +1 -0
  1011. package/node_modules/@earendil-works/omk-tui/dist/utils.js +1032 -0
  1012. package/node_modules/@earendil-works/omk-tui/dist/utils.js.map +1 -0
  1013. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts +25 -0
  1014. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts.map +1 -0
  1015. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js +96 -0
  1016. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js.map +1 -0
  1017. package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  1018. package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  1019. package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  1020. package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  1021. package/node_modules/@earendil-works/omk-tui/package.json +47 -0
  1022. package/package.json +22 -6
  1023. package/dist/utils/pi-user-agent.d.ts +0 -2
  1024. package/dist/utils/pi-user-agent.d.ts.map +0 -1
  1025. package/dist/utils/pi-user-agent.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-adoption-benchmark.js","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"]}
@@ -0,0 +1,80 @@
1
+ export type TraceSink = "local" | "braintrust";
2
+ export type TraceContentTier = "metadata" | "summary";
3
+ export interface TraceSettings {
4
+ enabled?: boolean;
5
+ sink?: TraceSink;
6
+ contentTier?: TraceContentTier;
7
+ }
8
+ export interface TraceEnvironment {
9
+ offline?: boolean;
10
+ trace?: boolean;
11
+ }
12
+ export interface TraceArtifactInput {
13
+ path: string;
14
+ exists: boolean;
15
+ allowed: boolean;
16
+ sizeBytes?: number;
17
+ sha256?: string;
18
+ }
19
+ export interface TraceEventInput {
20
+ runId: string;
21
+ sessionId?: string;
22
+ operationId: string;
23
+ timestamp: string;
24
+ kind: string;
25
+ status: string;
26
+ dataHash?: string;
27
+ data?: TraceJsonObject;
28
+ artifacts?: readonly TraceArtifactInput[];
29
+ }
30
+ export type TraceJsonPrimitive = string | number | boolean | null;
31
+ export type TraceJsonValue = TraceJsonPrimitive | TraceJsonValue[] | TraceJsonObject;
32
+ export type TraceJsonObject = {
33
+ [key: string]: TraceJsonValue;
34
+ };
35
+ export interface ObservabilityTraceArtifact {
36
+ pathHash: string;
37
+ relPath?: string;
38
+ exists: boolean;
39
+ allowed: boolean;
40
+ sizeBytes?: number;
41
+ sha256?: string;
42
+ }
43
+ export interface ObservabilityTraceV1 {
44
+ schemaVersion: "omk.observability.trace.v1";
45
+ traceId: string;
46
+ runIdHash: string;
47
+ sessionIdHash?: string;
48
+ operationId: string;
49
+ timestamp: string;
50
+ source: "harness-control" | "verification" | "package-manager" | "advisor" | "simplify";
51
+ kind: string;
52
+ status: string;
53
+ dataHash: string;
54
+ sanitizedData: TraceJsonObject;
55
+ artifacts: ObservabilityTraceArtifact[];
56
+ external?: {
57
+ sink: "braintrust";
58
+ contentTier: TraceContentTier;
59
+ payloadBytes: number;
60
+ };
61
+ }
62
+ export interface CreateTraceOptions {
63
+ source: ObservabilityTraceV1["source"];
64
+ cwd?: string;
65
+ sink?: TraceSink;
66
+ contentTier?: TraceContentTier;
67
+ }
68
+ export interface TraceExportDecision {
69
+ allowed: boolean;
70
+ sink: TraceSink;
71
+ contentTier: TraceContentTier;
72
+ rule: string;
73
+ reason: string;
74
+ }
75
+ export declare function hashTraceValue(value: string): string;
76
+ export declare function shouldExportTrace(settings: TraceSettings, env?: TraceEnvironment): boolean;
77
+ export declare function decideExternalSink(settings: TraceSettings, env?: TraceEnvironment): TraceExportDecision;
78
+ export declare function sanitizeTraceData(data?: TraceJsonObject): TraceJsonObject;
79
+ export declare function createObservabilityTrace(event: TraceEventInput, options: CreateTraceOptions): ObservabilityTraceV1;
80
+ //# sourceMappingURL=observability-trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability-trace.d.ts","sourceRoot":"","sources":["../../src/core/observability-trace.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport path from \"node:path\";\n\nexport type TraceSink = \"local\" | \"braintrust\";\nexport type TraceContentTier = \"metadata\" | \"summary\";\n\nexport interface TraceSettings {\n\tenabled?: boolean;\n\tsink?: TraceSink;\n\tcontentTier?: TraceContentTier;\n}\n\nexport interface TraceEnvironment {\n\toffline?: boolean;\n\ttrace?: boolean;\n}\n\nexport interface TraceArtifactInput {\n\tpath: string;\n\texists: boolean;\n\tallowed: boolean;\n\tsizeBytes?: number;\n\tsha256?: string;\n}\n\nexport interface TraceEventInput {\n\trunId: string;\n\tsessionId?: string;\n\toperationId: string;\n\ttimestamp: string;\n\tkind: string;\n\tstatus: string;\n\tdataHash?: string;\n\tdata?: TraceJsonObject;\n\tartifacts?: readonly TraceArtifactInput[];\n}\n\nexport type TraceJsonPrimitive = string | number | boolean | null;\nexport type TraceJsonValue = TraceJsonPrimitive | TraceJsonValue[] | TraceJsonObject;\nexport type TraceJsonObject = { [key: string]: TraceJsonValue };\n\nexport interface ObservabilityTraceArtifact {\n\tpathHash: string;\n\trelPath?: string;\n\texists: boolean;\n\tallowed: boolean;\n\tsizeBytes?: number;\n\tsha256?: string;\n}\n\nexport interface ObservabilityTraceV1 {\n\tschemaVersion: \"omk.observability.trace.v1\";\n\ttraceId: string;\n\trunIdHash: string;\n\tsessionIdHash?: string;\n\toperationId: string;\n\ttimestamp: string;\n\tsource: \"harness-control\" | \"verification\" | \"package-manager\" | \"advisor\" | \"simplify\";\n\tkind: string;\n\tstatus: string;\n\tdataHash: string;\n\tsanitizedData: TraceJsonObject;\n\tartifacts: ObservabilityTraceArtifact[];\n\texternal?: { sink: \"braintrust\"; contentTier: TraceContentTier; payloadBytes: number };\n}\n\nexport interface CreateTraceOptions {\n\tsource: ObservabilityTraceV1[\"source\"];\n\tcwd?: string;\n\tsink?: TraceSink;\n\tcontentTier?: TraceContentTier;\n}\n\nexport interface TraceExportDecision {\n\tallowed: boolean;\n\tsink: TraceSink;\n\tcontentTier: TraceContentTier;\n\trule: string;\n\treason: string;\n}\n\nconst DROP_KEY_PATTERN =\n\t/^(?:stdout|stderr|prompt|completion|response|tool[_-]?output|tool[_-]?input|env|environment|headers?|cookies?|authorization)$/i;\nconst SECRET_KEY_PATTERN = /(?:secret|token|api[_-]?key|password|credential|private[_-]?key|authorization|cookie)/i;\nconst TOKEN_VALUE_PATTERN =\n\t/(?:Bearer\\s+[A-Za-z0-9._~+/=-]+|sk-(?:proj-|ant-)?[A-Za-z0-9_-]{12,}|\\beyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b|-----BEGIN [^-]+PRIVATE KEY-----)/i;\nconst SENSITIVE_PATH_PATTERN =\n\t/(?:^|[/\\\\])(?:\\.env[^/\\\\]*|auth\\.json|oauth\\.json|\\.ssh|\\.aws|.*(?:secret|token|credential|private[_-]?key).*)/i;\n\nfunction sha256(value: string): string {\n\treturn createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nfunction stableStringify(value: TraceJsonValue): string {\n\tif (value === null) return \"null\";\n\tif (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\")\n\t\treturn JSON.stringify(value);\n\tif (Array.isArray(value)) return `[${value.map((entry) => stableStringify(entry)).join(\",\")}]`;\n\treturn `{${Object.keys(value)\n\t\t.sort()\n\t\t.map((key) => `${JSON.stringify(key)}:${stableStringify(value[key] ?? null)}`)\n\t\t.join(\",\")}}`;\n}\n\nexport function hashTraceValue(value: string): string {\n\treturn sha256(value);\n}\n\nexport function shouldExportTrace(settings: TraceSettings, env: TraceEnvironment = {}): boolean {\n\tif (env.offline) return false;\n\treturn settings.enabled === true || env.trace === true;\n}\n\nexport function decideExternalSink(settings: TraceSettings, env: TraceEnvironment = {}): TraceExportDecision {\n\tconst sink = settings.sink ?? \"local\";\n\tconst contentTier = settings.contentTier ?? \"metadata\";\n\tif (!shouldExportTrace(settings, env)) {\n\t\treturn { allowed: false, sink, contentTier, rule: \"trace.disabled\", reason: \"Trace export is disabled.\" };\n\t}\n\tif (env.offline) {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\tsink,\n\t\t\tcontentTier,\n\t\t\trule: \"trace.offline\",\n\t\t\treason: \"Offline mode disables external trace export.\",\n\t\t};\n\t}\n\tif (sink !== \"braintrust\") {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\tsink,\n\t\t\tcontentTier,\n\t\t\trule: \"trace.local\",\n\t\t\treason: \"Local trace sink does not export externally.\",\n\t\t};\n\t}\n\treturn {\n\t\tallowed: true,\n\t\tsink,\n\t\tcontentTier,\n\t\trule: \"trace.external_allowed\",\n\t\treason: \"External trace sink is explicitly enabled.\",\n\t};\n}\n\nexport function sanitizeTraceData(data: TraceJsonObject = {}): TraceJsonObject {\n\tconst result: TraceJsonObject = {};\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tif (DROP_KEY_PATTERN.test(key)) continue;\n\t\tif (SECRET_KEY_PATTERN.test(key)) {\n\t\t\tresult[key] = \"[redacted]\";\n\t\t\tcontinue;\n\t\t}\n\t\tresult[key] = sanitizeTraceValue(value);\n\t}\n\treturn result;\n}\n\nfunction sanitizeTraceValue(value: TraceJsonValue): TraceJsonValue {\n\tif (typeof value === \"string\") {\n\t\tif (TOKEN_VALUE_PATTERN.test(value)) return \"[redacted]\";\n\t\tif (value.length > 2000) return `${value.slice(0, 2000)}…[truncated]`;\n\t\treturn value;\n\t}\n\tif (typeof value === \"number\" || typeof value === \"boolean\" || value === null) return value;\n\tif (Array.isArray(value)) return value.slice(0, 80).map((entry) => sanitizeTraceValue(entry));\n\treturn sanitizeTraceData(value);\n}\n\nfunction maybeRelativePath(cwd: string | undefined, artifactPath: string): string | undefined {\n\tif (!cwd) return undefined;\n\tconst resolvedCwd = path.resolve(cwd);\n\tconst resolvedArtifact = path.resolve(cwd, artifactPath);\n\tif (SENSITIVE_PATH_PATTERN.test(resolvedArtifact)) return undefined;\n\tconst relative = path.relative(resolvedCwd, resolvedArtifact).replace(/\\\\/g, \"/\");\n\tif (relative === \"\" || relative.startsWith(\"..\") || path.isAbsolute(relative)) return undefined;\n\treturn relative;\n}\n\nfunction sanitizeArtifacts(\n\tartifacts: readonly TraceArtifactInput[] | undefined,\n\tcwd: string | undefined,\n): ObservabilityTraceArtifact[] {\n\treturn (artifacts ?? []).map((artifact) => ({\n\t\tpathHash: sha256(path.resolve(cwd ?? \"/\", artifact.path)),\n\t\t...(maybeRelativePath(cwd, artifact.path) === undefined\n\t\t\t? {}\n\t\t\t: { relPath: maybeRelativePath(cwd, artifact.path) }),\n\t\texists: artifact.exists,\n\t\tallowed: artifact.allowed,\n\t\t...(artifact.sizeBytes === undefined ? {} : { sizeBytes: artifact.sizeBytes }),\n\t\t...(artifact.sha256 === undefined ? {} : { sha256: artifact.sha256 }),\n\t}));\n}\n\nexport function createObservabilityTrace(event: TraceEventInput, options: CreateTraceOptions): ObservabilityTraceV1 {\n\tconst sanitizedData = sanitizeTraceData(event.data ?? {});\n\tconst dataHash = event.dataHash ?? sha256(stableStringify(sanitizedData));\n\tconst artifacts = sanitizeArtifacts(event.artifacts, options.cwd);\n\tconst trace: ObservabilityTraceV1 = {\n\t\tschemaVersion: \"omk.observability.trace.v1\",\n\t\ttraceId: sha256(`${event.runId}:${event.operationId}:${event.timestamp}:${event.kind}`),\n\t\trunIdHash: sha256(event.runId),\n\t\t...(event.sessionId === undefined ? {} : { sessionIdHash: sha256(event.sessionId) }),\n\t\toperationId: event.operationId,\n\t\ttimestamp: event.timestamp,\n\t\tsource: options.source,\n\t\tkind: event.kind,\n\t\tstatus: event.status,\n\t\tdataHash,\n\t\tsanitizedData,\n\t\tartifacts,\n\t};\n\tif (options.sink === \"braintrust\") {\n\t\ttrace.external = {\n\t\t\tsink: \"braintrust\",\n\t\t\tcontentTier: options.contentTier ?? \"metadata\",\n\t\t\tpayloadBytes: Buffer.byteLength(stableStringify(sanitizedData)),\n\t\t};\n\t}\n\treturn trace;\n}\n"]}
@@ -0,0 +1,140 @@
1
+ import { createHash } from "node:crypto";
2
+ import path from "node:path";
3
+ const DROP_KEY_PATTERN = /^(?:stdout|stderr|prompt|completion|response|tool[_-]?output|tool[_-]?input|env|environment|headers?|cookies?|authorization)$/i;
4
+ const SECRET_KEY_PATTERN = /(?:secret|token|api[_-]?key|password|credential|private[_-]?key|authorization|cookie)/i;
5
+ const TOKEN_VALUE_PATTERN = /(?:Bearer\s+[A-Za-z0-9._~+/=-]+|sk-(?:proj-|ant-)?[A-Za-z0-9_-]{12,}|\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b|-----BEGIN [^-]+PRIVATE KEY-----)/i;
6
+ const SENSITIVE_PATH_PATTERN = /(?:^|[/\\])(?:\.env[^/\\]*|auth\.json|oauth\.json|\.ssh|\.aws|.*(?:secret|token|credential|private[_-]?key).*)/i;
7
+ function sha256(value) {
8
+ return createHash("sha256").update(value).digest("hex");
9
+ }
10
+ function stableStringify(value) {
11
+ if (value === null)
12
+ return "null";
13
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean")
14
+ return JSON.stringify(value);
15
+ if (Array.isArray(value))
16
+ return `[${value.map((entry) => stableStringify(entry)).join(",")}]`;
17
+ return `{${Object.keys(value)
18
+ .sort()
19
+ .map((key) => `${JSON.stringify(key)}:${stableStringify(value[key] ?? null)}`)
20
+ .join(",")}}`;
21
+ }
22
+ export function hashTraceValue(value) {
23
+ return sha256(value);
24
+ }
25
+ export function shouldExportTrace(settings, env = {}) {
26
+ if (env.offline)
27
+ return false;
28
+ return settings.enabled === true || env.trace === true;
29
+ }
30
+ export function decideExternalSink(settings, env = {}) {
31
+ const sink = settings.sink ?? "local";
32
+ const contentTier = settings.contentTier ?? "metadata";
33
+ if (!shouldExportTrace(settings, env)) {
34
+ return { allowed: false, sink, contentTier, rule: "trace.disabled", reason: "Trace export is disabled." };
35
+ }
36
+ if (env.offline) {
37
+ return {
38
+ allowed: false,
39
+ sink,
40
+ contentTier,
41
+ rule: "trace.offline",
42
+ reason: "Offline mode disables external trace export.",
43
+ };
44
+ }
45
+ if (sink !== "braintrust") {
46
+ return {
47
+ allowed: false,
48
+ sink,
49
+ contentTier,
50
+ rule: "trace.local",
51
+ reason: "Local trace sink does not export externally.",
52
+ };
53
+ }
54
+ return {
55
+ allowed: true,
56
+ sink,
57
+ contentTier,
58
+ rule: "trace.external_allowed",
59
+ reason: "External trace sink is explicitly enabled.",
60
+ };
61
+ }
62
+ export function sanitizeTraceData(data = {}) {
63
+ const result = {};
64
+ for (const [key, value] of Object.entries(data)) {
65
+ if (DROP_KEY_PATTERN.test(key))
66
+ continue;
67
+ if (SECRET_KEY_PATTERN.test(key)) {
68
+ result[key] = "[redacted]";
69
+ continue;
70
+ }
71
+ result[key] = sanitizeTraceValue(value);
72
+ }
73
+ return result;
74
+ }
75
+ function sanitizeTraceValue(value) {
76
+ if (typeof value === "string") {
77
+ if (TOKEN_VALUE_PATTERN.test(value))
78
+ return "[redacted]";
79
+ if (value.length > 2000)
80
+ return `${value.slice(0, 2000)}…[truncated]`;
81
+ return value;
82
+ }
83
+ if (typeof value === "number" || typeof value === "boolean" || value === null)
84
+ return value;
85
+ if (Array.isArray(value))
86
+ return value.slice(0, 80).map((entry) => sanitizeTraceValue(entry));
87
+ return sanitizeTraceData(value);
88
+ }
89
+ function maybeRelativePath(cwd, artifactPath) {
90
+ if (!cwd)
91
+ return undefined;
92
+ const resolvedCwd = path.resolve(cwd);
93
+ const resolvedArtifact = path.resolve(cwd, artifactPath);
94
+ if (SENSITIVE_PATH_PATTERN.test(resolvedArtifact))
95
+ return undefined;
96
+ const relative = path.relative(resolvedCwd, resolvedArtifact).replace(/\\/g, "/");
97
+ if (relative === "" || relative.startsWith("..") || path.isAbsolute(relative))
98
+ return undefined;
99
+ return relative;
100
+ }
101
+ function sanitizeArtifacts(artifacts, cwd) {
102
+ return (artifacts ?? []).map((artifact) => ({
103
+ pathHash: sha256(path.resolve(cwd ?? "/", artifact.path)),
104
+ ...(maybeRelativePath(cwd, artifact.path) === undefined
105
+ ? {}
106
+ : { relPath: maybeRelativePath(cwd, artifact.path) }),
107
+ exists: artifact.exists,
108
+ allowed: artifact.allowed,
109
+ ...(artifact.sizeBytes === undefined ? {} : { sizeBytes: artifact.sizeBytes }),
110
+ ...(artifact.sha256 === undefined ? {} : { sha256: artifact.sha256 }),
111
+ }));
112
+ }
113
+ export function createObservabilityTrace(event, options) {
114
+ const sanitizedData = sanitizeTraceData(event.data ?? {});
115
+ const dataHash = event.dataHash ?? sha256(stableStringify(sanitizedData));
116
+ const artifacts = sanitizeArtifacts(event.artifacts, options.cwd);
117
+ const trace = {
118
+ schemaVersion: "omk.observability.trace.v1",
119
+ traceId: sha256(`${event.runId}:${event.operationId}:${event.timestamp}:${event.kind}`),
120
+ runIdHash: sha256(event.runId),
121
+ ...(event.sessionId === undefined ? {} : { sessionIdHash: sha256(event.sessionId) }),
122
+ operationId: event.operationId,
123
+ timestamp: event.timestamp,
124
+ source: options.source,
125
+ kind: event.kind,
126
+ status: event.status,
127
+ dataHash,
128
+ sanitizedData,
129
+ artifacts,
130
+ };
131
+ if (options.sink === "braintrust") {
132
+ trace.external = {
133
+ sink: "braintrust",
134
+ contentTier: options.contentTier ?? "metadata",
135
+ payloadBytes: Buffer.byteLength(stableStringify(sanitizedData)),
136
+ };
137
+ }
138
+ return trace;
139
+ }
140
+ //# sourceMappingURL=observability-trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability-trace.js","sourceRoot":"","sources":["../../src/core/observability-trace.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport path from \"node:path\";\n\nexport type TraceSink = \"local\" | \"braintrust\";\nexport type TraceContentTier = \"metadata\" | \"summary\";\n\nexport interface TraceSettings {\n\tenabled?: boolean;\n\tsink?: TraceSink;\n\tcontentTier?: TraceContentTier;\n}\n\nexport interface TraceEnvironment {\n\toffline?: boolean;\n\ttrace?: boolean;\n}\n\nexport interface TraceArtifactInput {\n\tpath: string;\n\texists: boolean;\n\tallowed: boolean;\n\tsizeBytes?: number;\n\tsha256?: string;\n}\n\nexport interface TraceEventInput {\n\trunId: string;\n\tsessionId?: string;\n\toperationId: string;\n\ttimestamp: string;\n\tkind: string;\n\tstatus: string;\n\tdataHash?: string;\n\tdata?: TraceJsonObject;\n\tartifacts?: readonly TraceArtifactInput[];\n}\n\nexport type TraceJsonPrimitive = string | number | boolean | null;\nexport type TraceJsonValue = TraceJsonPrimitive | TraceJsonValue[] | TraceJsonObject;\nexport type TraceJsonObject = { [key: string]: TraceJsonValue };\n\nexport interface ObservabilityTraceArtifact {\n\tpathHash: string;\n\trelPath?: string;\n\texists: boolean;\n\tallowed: boolean;\n\tsizeBytes?: number;\n\tsha256?: string;\n}\n\nexport interface ObservabilityTraceV1 {\n\tschemaVersion: \"omk.observability.trace.v1\";\n\ttraceId: string;\n\trunIdHash: string;\n\tsessionIdHash?: string;\n\toperationId: string;\n\ttimestamp: string;\n\tsource: \"harness-control\" | \"verification\" | \"package-manager\" | \"advisor\" | \"simplify\";\n\tkind: string;\n\tstatus: string;\n\tdataHash: string;\n\tsanitizedData: TraceJsonObject;\n\tartifacts: ObservabilityTraceArtifact[];\n\texternal?: { sink: \"braintrust\"; contentTier: TraceContentTier; payloadBytes: number };\n}\n\nexport interface CreateTraceOptions {\n\tsource: ObservabilityTraceV1[\"source\"];\n\tcwd?: string;\n\tsink?: TraceSink;\n\tcontentTier?: TraceContentTier;\n}\n\nexport interface TraceExportDecision {\n\tallowed: boolean;\n\tsink: TraceSink;\n\tcontentTier: TraceContentTier;\n\trule: string;\n\treason: string;\n}\n\nconst DROP_KEY_PATTERN =\n\t/^(?:stdout|stderr|prompt|completion|response|tool[_-]?output|tool[_-]?input|env|environment|headers?|cookies?|authorization)$/i;\nconst SECRET_KEY_PATTERN = /(?:secret|token|api[_-]?key|password|credential|private[_-]?key|authorization|cookie)/i;\nconst TOKEN_VALUE_PATTERN =\n\t/(?:Bearer\\s+[A-Za-z0-9._~+/=-]+|sk-(?:proj-|ant-)?[A-Za-z0-9_-]{12,}|\\beyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b|-----BEGIN [^-]+PRIVATE KEY-----)/i;\nconst SENSITIVE_PATH_PATTERN =\n\t/(?:^|[/\\\\])(?:\\.env[^/\\\\]*|auth\\.json|oauth\\.json|\\.ssh|\\.aws|.*(?:secret|token|credential|private[_-]?key).*)/i;\n\nfunction sha256(value: string): string {\n\treturn createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nfunction stableStringify(value: TraceJsonValue): string {\n\tif (value === null) return \"null\";\n\tif (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\")\n\t\treturn JSON.stringify(value);\n\tif (Array.isArray(value)) return `[${value.map((entry) => stableStringify(entry)).join(\",\")}]`;\n\treturn `{${Object.keys(value)\n\t\t.sort()\n\t\t.map((key) => `${JSON.stringify(key)}:${stableStringify(value[key] ?? null)}`)\n\t\t.join(\",\")}}`;\n}\n\nexport function hashTraceValue(value: string): string {\n\treturn sha256(value);\n}\n\nexport function shouldExportTrace(settings: TraceSettings, env: TraceEnvironment = {}): boolean {\n\tif (env.offline) return false;\n\treturn settings.enabled === true || env.trace === true;\n}\n\nexport function decideExternalSink(settings: TraceSettings, env: TraceEnvironment = {}): TraceExportDecision {\n\tconst sink = settings.sink ?? \"local\";\n\tconst contentTier = settings.contentTier ?? \"metadata\";\n\tif (!shouldExportTrace(settings, env)) {\n\t\treturn { allowed: false, sink, contentTier, rule: \"trace.disabled\", reason: \"Trace export is disabled.\" };\n\t}\n\tif (env.offline) {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\tsink,\n\t\t\tcontentTier,\n\t\t\trule: \"trace.offline\",\n\t\t\treason: \"Offline mode disables external trace export.\",\n\t\t};\n\t}\n\tif (sink !== \"braintrust\") {\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\tsink,\n\t\t\tcontentTier,\n\t\t\trule: \"trace.local\",\n\t\t\treason: \"Local trace sink does not export externally.\",\n\t\t};\n\t}\n\treturn {\n\t\tallowed: true,\n\t\tsink,\n\t\tcontentTier,\n\t\trule: \"trace.external_allowed\",\n\t\treason: \"External trace sink is explicitly enabled.\",\n\t};\n}\n\nexport function sanitizeTraceData(data: TraceJsonObject = {}): TraceJsonObject {\n\tconst result: TraceJsonObject = {};\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tif (DROP_KEY_PATTERN.test(key)) continue;\n\t\tif (SECRET_KEY_PATTERN.test(key)) {\n\t\t\tresult[key] = \"[redacted]\";\n\t\t\tcontinue;\n\t\t}\n\t\tresult[key] = sanitizeTraceValue(value);\n\t}\n\treturn result;\n}\n\nfunction sanitizeTraceValue(value: TraceJsonValue): TraceJsonValue {\n\tif (typeof value === \"string\") {\n\t\tif (TOKEN_VALUE_PATTERN.test(value)) return \"[redacted]\";\n\t\tif (value.length > 2000) return `${value.slice(0, 2000)}…[truncated]`;\n\t\treturn value;\n\t}\n\tif (typeof value === \"number\" || typeof value === \"boolean\" || value === null) return value;\n\tif (Array.isArray(value)) return value.slice(0, 80).map((entry) => sanitizeTraceValue(entry));\n\treturn sanitizeTraceData(value);\n}\n\nfunction maybeRelativePath(cwd: string | undefined, artifactPath: string): string | undefined {\n\tif (!cwd) return undefined;\n\tconst resolvedCwd = path.resolve(cwd);\n\tconst resolvedArtifact = path.resolve(cwd, artifactPath);\n\tif (SENSITIVE_PATH_PATTERN.test(resolvedArtifact)) return undefined;\n\tconst relative = path.relative(resolvedCwd, resolvedArtifact).replace(/\\\\/g, \"/\");\n\tif (relative === \"\" || relative.startsWith(\"..\") || path.isAbsolute(relative)) return undefined;\n\treturn relative;\n}\n\nfunction sanitizeArtifacts(\n\tartifacts: readonly TraceArtifactInput[] | undefined,\n\tcwd: string | undefined,\n): ObservabilityTraceArtifact[] {\n\treturn (artifacts ?? []).map((artifact) => ({\n\t\tpathHash: sha256(path.resolve(cwd ?? \"/\", artifact.path)),\n\t\t...(maybeRelativePath(cwd, artifact.path) === undefined\n\t\t\t? {}\n\t\t\t: { relPath: maybeRelativePath(cwd, artifact.path) }),\n\t\texists: artifact.exists,\n\t\tallowed: artifact.allowed,\n\t\t...(artifact.sizeBytes === undefined ? {} : { sizeBytes: artifact.sizeBytes }),\n\t\t...(artifact.sha256 === undefined ? {} : { sha256: artifact.sha256 }),\n\t}));\n}\n\nexport function createObservabilityTrace(event: TraceEventInput, options: CreateTraceOptions): ObservabilityTraceV1 {\n\tconst sanitizedData = sanitizeTraceData(event.data ?? {});\n\tconst dataHash = event.dataHash ?? sha256(stableStringify(sanitizedData));\n\tconst artifacts = sanitizeArtifacts(event.artifacts, options.cwd);\n\tconst trace: ObservabilityTraceV1 = {\n\t\tschemaVersion: \"omk.observability.trace.v1\",\n\t\ttraceId: sha256(`${event.runId}:${event.operationId}:${event.timestamp}:${event.kind}`),\n\t\trunIdHash: sha256(event.runId),\n\t\t...(event.sessionId === undefined ? {} : { sessionIdHash: sha256(event.sessionId) }),\n\t\toperationId: event.operationId,\n\t\ttimestamp: event.timestamp,\n\t\tsource: options.source,\n\t\tkind: event.kind,\n\t\tstatus: event.status,\n\t\tdataHash,\n\t\tsanitizedData,\n\t\tartifacts,\n\t};\n\tif (options.sink === \"braintrust\") {\n\t\ttrace.external = {\n\t\t\tsink: \"braintrust\",\n\t\t\tcontentTier: options.contentTier ?? \"metadata\",\n\t\t\tpayloadBytes: Buffer.byteLength(stableStringify(sanitizedData)),\n\t\t};\n\t}\n\treturn trace;\n}\n"]}
@@ -0,0 +1,83 @@
1
+ export declare const CHECKPOINT_SCHEMA_VERSION = "omk.checkpoint.v1";
2
+ export type CheckpointStatus = "intake" | "running" | "blocked" | "complete" | "failed";
3
+ export type BlockerSeverity = "low" | "medium" | "high";
4
+ export interface GoalState {
5
+ summary: string;
6
+ status: CheckpointStatus;
7
+ }
8
+ export interface DecisionRecord {
9
+ id: string;
10
+ summary: string;
11
+ artifactHashes: readonly string[];
12
+ }
13
+ export interface OpenTaskRecord {
14
+ id: string;
15
+ summary: string;
16
+ priority: number;
17
+ }
18
+ export interface BlockerRecord {
19
+ id: string;
20
+ summary: string;
21
+ severity: BlockerSeverity;
22
+ }
23
+ export interface FileState {
24
+ read: readonly string[];
25
+ modified: readonly string[];
26
+ }
27
+ export interface CommandRecord {
28
+ command: string;
29
+ exitCode: number;
30
+ outputHash: string;
31
+ }
32
+ export interface ArtifactRecord {
33
+ path: string;
34
+ sha256: string;
35
+ kind: string;
36
+ }
37
+ export interface FailedApproachRecord {
38
+ summary: string;
39
+ reason: string;
40
+ }
41
+ export interface ResumeActionRecord {
42
+ summary: string;
43
+ targetTaskId?: string;
44
+ }
45
+ export interface Checkpoint {
46
+ schemaVersion: typeof CHECKPOINT_SCHEMA_VERSION;
47
+ checkpointId: string;
48
+ runId: string;
49
+ timestamp: string;
50
+ currentGoal: GoalState;
51
+ constraints: readonly string[];
52
+ decisions: readonly DecisionRecord[];
53
+ openTasks: readonly OpenTaskRecord[];
54
+ blockers: readonly BlockerRecord[];
55
+ files: FileState;
56
+ commands: readonly CommandRecord[];
57
+ artifacts: readonly ArtifactRecord[];
58
+ failedApproaches: readonly FailedApproachRecord[];
59
+ resumeAction: ResumeActionRecord;
60
+ }
61
+ export interface AuthoritativeCheckpointSource {
62
+ commands: readonly CommandRecord[];
63
+ blockerIds: readonly string[];
64
+ filePaths: readonly string[];
65
+ artifacts: readonly {
66
+ path: string;
67
+ sha256: string;
68
+ }[];
69
+ }
70
+ export interface CheckpointValidationResult {
71
+ valid: boolean;
72
+ errors: string[];
73
+ }
74
+ export interface ResumePlan {
75
+ kind: "blocker" | "task" | "resumeAction";
76
+ summary: string;
77
+ targetId?: string;
78
+ }
79
+ export declare function renderCheckpointMarkdown(checkpoint: Checkpoint): string;
80
+ export declare function validateCheckpoint(checkpoint: Checkpoint, authoritative: AuthoritativeCheckpointSource): CheckpointValidationResult;
81
+ export declare function deriveResumePlan(checkpoint: Checkpoint): ResumePlan;
82
+ export declare function enforceCheckpointBudget(markdown: string, maxChars: number): string;
83
+ //# sourceMappingURL=checkpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/checkpoint.ts"],"names":[],"mappings":"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","sourcesContent":["export const CHECKPOINT_SCHEMA_VERSION = \"omk.checkpoint.v1\";\n\nexport type CheckpointStatus = \"intake\" | \"running\" | \"blocked\" | \"complete\" | \"failed\";\nexport type BlockerSeverity = \"low\" | \"medium\" | \"high\";\n\nexport interface GoalState {\n\tsummary: string;\n\tstatus: CheckpointStatus;\n}\n\nexport interface DecisionRecord {\n\tid: string;\n\tsummary: string;\n\tartifactHashes: readonly string[];\n}\n\nexport interface OpenTaskRecord {\n\tid: string;\n\tsummary: string;\n\tpriority: number;\n}\n\nexport interface BlockerRecord {\n\tid: string;\n\tsummary: string;\n\tseverity: BlockerSeverity;\n}\n\nexport interface FileState {\n\tread: readonly string[];\n\tmodified: readonly string[];\n}\n\nexport interface CommandRecord {\n\tcommand: string;\n\texitCode: number;\n\toutputHash: string;\n}\n\nexport interface ArtifactRecord {\n\tpath: string;\n\tsha256: string;\n\tkind: string;\n}\n\nexport interface FailedApproachRecord {\n\tsummary: string;\n\treason: string;\n}\n\nexport interface ResumeActionRecord {\n\tsummary: string;\n\ttargetTaskId?: string;\n}\n\nexport interface Checkpoint {\n\tschemaVersion: typeof CHECKPOINT_SCHEMA_VERSION;\n\tcheckpointId: string;\n\trunId: string;\n\ttimestamp: string;\n\tcurrentGoal: GoalState;\n\tconstraints: readonly string[];\n\tdecisions: readonly DecisionRecord[];\n\topenTasks: readonly OpenTaskRecord[];\n\tblockers: readonly BlockerRecord[];\n\tfiles: FileState;\n\tcommands: readonly CommandRecord[];\n\tartifacts: readonly ArtifactRecord[];\n\tfailedApproaches: readonly FailedApproachRecord[];\n\tresumeAction: ResumeActionRecord;\n}\n\nexport interface AuthoritativeCheckpointSource {\n\tcommands: readonly CommandRecord[];\n\tblockerIds: readonly string[];\n\tfilePaths: readonly string[];\n\tartifacts: readonly { path: string; sha256: string }[];\n}\n\nexport interface CheckpointValidationResult {\n\tvalid: boolean;\n\terrors: string[];\n}\n\nexport interface ResumePlan {\n\tkind: \"blocker\" | \"task\" | \"resumeAction\";\n\tsummary: string;\n\ttargetId?: string;\n}\n\nexport function renderCheckpointMarkdown(checkpoint: Checkpoint): string {\n\tconst lines: string[] = [\n\t\t`# OMK Checkpoint ${checkpoint.checkpointId}`,\n\t\t`Run: ${checkpoint.runId}`,\n\t\t`Timestamp: ${checkpoint.timestamp}`,\n\t\t`Goal: ${checkpoint.currentGoal.summary} (${checkpoint.currentGoal.status})`,\n\t\t\"\",\n\t\t\"## Constraints\",\n\t\t...formatBullets(checkpoint.constraints),\n\t\t\"\",\n\t\t\"## Decisions\",\n\t\t...checkpoint.decisions.map(\n\t\t\t(decision) => `- ${decision.id}: ${decision.summary} [hashes: ${decision.artifactHashes.join(\",\") || \"none\"}]`,\n\t\t),\n\t\t\"\",\n\t\t\"## Open Tasks\",\n\t\t...checkpoint.openTasks.map((task) => `- ${task.id} p${task.priority}: ${task.summary}`),\n\t\t\"\",\n\t\t\"## Blockers\",\n\t\t...checkpoint.blockers.map((blocker) => `- ${blocker.id} ${blocker.severity}: ${blocker.summary}`),\n\t\t\"\",\n\t\t\"## Files\",\n\t\t`- read: ${checkpoint.files.read.join(\",\") || \"none\"}`,\n\t\t`- modified: ${checkpoint.files.modified.join(\",\") || \"none\"}`,\n\t\t\"\",\n\t\t\"## Commands\",\n\t\t...checkpoint.commands.map(\n\t\t\t(command) => `- ${command.command} => exitCode=${command.exitCode}, outputHash=${command.outputHash}`,\n\t\t),\n\t\t\"\",\n\t\t\"## Artifacts\",\n\t\t...checkpoint.artifacts.map((artifact) => `- ${artifact.kind}: ${artifact.path} sha256=${artifact.sha256}`),\n\t\t\"\",\n\t\t\"## Failed Approaches\",\n\t\t...checkpoint.failedApproaches.map((approach) => `- ${approach.summary}: ${approach.reason}`),\n\t\t\"\",\n\t\t`Resume: ${checkpoint.resumeAction.summary}${checkpoint.resumeAction.targetTaskId ? ` (${checkpoint.resumeAction.targetTaskId})` : \"\"}`,\n\t];\n\treturn `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function validateCheckpoint(\n\tcheckpoint: Checkpoint,\n\tauthoritative: AuthoritativeCheckpointSource,\n): CheckpointValidationResult {\n\tconst errors: string[] = [];\n\tvalidateCommands(checkpoint, authoritative, errors);\n\tvalidateBlockers(checkpoint, authoritative, errors);\n\tvalidateFiles(checkpoint, authoritative, errors);\n\tvalidateArtifacts(checkpoint, authoritative, errors);\n\treturn { valid: errors.length === 0, errors };\n}\n\nexport function deriveResumePlan(checkpoint: Checkpoint): ResumePlan {\n\tconst blocker = [...checkpoint.blockers].sort(compareBlockerPriority)[0];\n\tif (blocker !== undefined) {\n\t\treturn { kind: \"blocker\", summary: blocker.summary, targetId: blocker.id };\n\t}\n\n\tconst task = [...checkpoint.openTasks].sort(compareTaskPriority)[0];\n\tif (task !== undefined) {\n\t\treturn { kind: \"task\", summary: task.summary, targetId: task.id };\n\t}\n\n\treturn {\n\t\tkind: \"resumeAction\",\n\t\tsummary: checkpoint.resumeAction.summary,\n\t\ttargetId: checkpoint.resumeAction.targetTaskId,\n\t};\n}\n\nexport function enforceCheckpointBudget(markdown: string, maxChars: number): string {\n\tif (markdown.length <= maxChars) {\n\t\treturn markdown;\n\t}\n\n\tconst goal = findLine(markdown, \"Goal:\") ?? \"Goal: unknown\";\n\tconst resume = findLine(markdown, \"Resume:\") ?? \"Resume: unknown\";\n\tconst compact = [`# OMK Checkpoint`, goal, \"Evidence hashes preserved.\", resume].join(\"\\n\");\n\tif (compact.length <= maxChars) {\n\t\treturn compact;\n\t}\n\treturn compact.slice(0, Math.max(0, maxChars));\n}\n\nfunction validateCommands(\n\tcheckpoint: Checkpoint,\n\tauthoritative: AuthoritativeCheckpointSource,\n\terrors: string[],\n): void {\n\tconst byCommand = new Map(authoritative.commands.map((command) => [command.command, command]));\n\tfor (const command of checkpoint.commands) {\n\t\tconst expected = byCommand.get(command.command);\n\t\tif (expected === undefined) {\n\t\t\terrors.push(`command missing from authoritative source: ${command.command}`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (command.exitCode !== expected.exitCode) {\n\t\t\terrors.push(`command exitCode mismatch for ${command.command}: ${command.exitCode} != ${expected.exitCode}`);\n\t\t}\n\t\tif (command.outputHash !== expected.outputHash) {\n\t\t\terrors.push(\n\t\t\t\t`command outputHash mismatch for ${command.command}: ${command.outputHash} != ${expected.outputHash}`,\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction validateBlockers(\n\tcheckpoint: Checkpoint,\n\tauthoritative: AuthoritativeCheckpointSource,\n\terrors: string[],\n): void {\n\tconst authoritativeIds = new Set(authoritative.blockerIds);\n\tfor (const blocker of checkpoint.blockers) {\n\t\tif (!authoritativeIds.has(blocker.id)) {\n\t\t\terrors.push(`blocker not present in authoritative source: ${blocker.id}`);\n\t\t}\n\t}\n}\n\nfunction validateFiles(checkpoint: Checkpoint, authoritative: AuthoritativeCheckpointSource, errors: string[]): void {\n\tconst authoritativePaths = new Set(authoritative.filePaths);\n\tfor (const filePath of [...checkpoint.files.read, ...checkpoint.files.modified]) {\n\t\tif (!authoritativePaths.has(filePath)) {\n\t\t\terrors.push(`file path not present in authoritative source: ${filePath}`);\n\t\t}\n\t}\n}\n\nfunction validateArtifacts(\n\tcheckpoint: Checkpoint,\n\tauthoritative: AuthoritativeCheckpointSource,\n\terrors: string[],\n): void {\n\tconst byPath = new Map(authoritative.artifacts.map((artifact) => [artifact.path, artifact]));\n\tfor (const artifact of checkpoint.artifacts) {\n\t\tconst expected = byPath.get(artifact.path);\n\t\tif (expected === undefined) {\n\t\t\terrors.push(`artifact missing from authoritative source: ${artifact.path}`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (artifact.sha256 !== expected.sha256) {\n\t\t\terrors.push(`artifact sha256 mismatch for ${artifact.path}: ${artifact.sha256} != ${expected.sha256}`);\n\t\t}\n\t}\n}\n\nfunction formatBullets(values: readonly string[]): string[] {\n\tif (values.length === 0) {\n\t\treturn [\"- none\"];\n\t}\n\treturn values.map((value) => `- ${value}`);\n}\n\nfunction blockerRank(severity: BlockerSeverity): number {\n\tif (severity === \"high\") return 0;\n\tif (severity === \"medium\") return 1;\n\treturn 2;\n}\n\nfunction compareBlockerPriority(a: BlockerRecord, b: BlockerRecord): number {\n\tconst rank = blockerRank(a.severity) - blockerRank(b.severity);\n\tif (rank !== 0) return rank;\n\treturn compareString(a.id, b.id);\n}\n\nfunction compareTaskPriority(a: OpenTaskRecord, b: OpenTaskRecord): number {\n\tif (a.priority !== b.priority) return a.priority - b.priority;\n\treturn compareString(a.id, b.id);\n}\n\nfunction compareString(a: string, b: string): number {\n\tif (a < b) return -1;\n\tif (a > b) return 1;\n\treturn 0;\n}\n\nfunction findLine(markdown: string, prefix: string): string | undefined {\n\treturn markdown.split(\"\\n\").find((line) => line.startsWith(prefix));\n}\n"]}