opencode-rehydra-core 0.14.0

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 (432) hide show
  1. package/LICENSE +22 -0
  2. package/README.en.md +191 -0
  3. package/README.md +191 -0
  4. package/dist/browser.d.ts +54 -0
  5. package/dist/browser.d.ts.map +1 -0
  6. package/dist/browser.js +74 -0
  7. package/dist/browser.js.map +1 -0
  8. package/dist/core/anonymizer.d.ts +309 -0
  9. package/dist/core/anonymizer.d.ts.map +1 -0
  10. package/dist/core/anonymizer.js +555 -0
  11. package/dist/core/anonymizer.js.map +1 -0
  12. package/dist/core/index.d.ts +6 -0
  13. package/dist/core/index.d.ts.map +1 -0
  14. package/dist/core/index.js +6 -0
  15. package/dist/core/index.js.map +1 -0
  16. package/dist/crypto/index.d.ts +6 -0
  17. package/dist/crypto/index.d.ts.map +1 -0
  18. package/dist/crypto/index.js +6 -0
  19. package/dist/crypto/index.js.map +1 -0
  20. package/dist/crypto/pii-map-crypto.d.ts +114 -0
  21. package/dist/crypto/pii-map-crypto.d.ts.map +1 -0
  22. package/dist/crypto/pii-map-crypto.js +228 -0
  23. package/dist/crypto/pii-map-crypto.js.map +1 -0
  24. package/dist/index.d.ts +53 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +72 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/ner/bio-decoder.d.ts +64 -0
  29. package/dist/ner/bio-decoder.d.ts.map +1 -0
  30. package/dist/ner/bio-decoder.js +218 -0
  31. package/dist/ner/bio-decoder.js.map +1 -0
  32. package/dist/ner/index.d.ts +12 -0
  33. package/dist/ner/index.d.ts.map +1 -0
  34. package/dist/ner/index.js +12 -0
  35. package/dist/ner/index.js.map +1 -0
  36. package/dist/ner/inference-server-client.d.ts +81 -0
  37. package/dist/ner/inference-server-client.d.ts.map +1 -0
  38. package/dist/ner/inference-server-client.js +120 -0
  39. package/dist/ner/inference-server-client.js.map +1 -0
  40. package/dist/ner/inference-server-ner-model.d.ts +43 -0
  41. package/dist/ner/inference-server-ner-model.d.ts.map +1 -0
  42. package/dist/ner/inference-server-ner-model.js +119 -0
  43. package/dist/ner/inference-server-ner-model.js.map +1 -0
  44. package/dist/ner/model-manager.d.ts +111 -0
  45. package/dist/ner/model-manager.d.ts.map +1 -0
  46. package/dist/ner/model-manager.js +334 -0
  47. package/dist/ner/model-manager.js.map +1 -0
  48. package/dist/ner/ner-model.d.ts +172 -0
  49. package/dist/ner/ner-model.d.ts.map +1 -0
  50. package/dist/ner/ner-model.js +514 -0
  51. package/dist/ner/ner-model.js.map +1 -0
  52. package/dist/ner/onnx-runtime.browser.d.ts +46 -0
  53. package/dist/ner/onnx-runtime.browser.d.ts.map +1 -0
  54. package/dist/ner/onnx-runtime.browser.js +90 -0
  55. package/dist/ner/onnx-runtime.browser.js.map +1 -0
  56. package/dist/ner/onnx-runtime.d.ts +72 -0
  57. package/dist/ner/onnx-runtime.d.ts.map +1 -0
  58. package/dist/ner/onnx-runtime.js +132 -0
  59. package/dist/ner/onnx-runtime.js.map +1 -0
  60. package/dist/ner/token-window.d.ts +19 -0
  61. package/dist/ner/token-window.d.ts.map +1 -0
  62. package/dist/ner/token-window.js +101 -0
  63. package/dist/ner/token-window.js.map +1 -0
  64. package/dist/ner/tokenizer.d.ts +142 -0
  65. package/dist/ner/tokenizer.d.ts.map +1 -0
  66. package/dist/ner/tokenizer.js +362 -0
  67. package/dist/ner/tokenizer.js.map +1 -0
  68. package/dist/opencode-plugin/git-identity.d.ts +3 -0
  69. package/dist/opencode-plugin/git-identity.d.ts.map +1 -0
  70. package/dist/opencode-plugin/git-identity.js +37 -0
  71. package/dist/opencode-plugin/git-identity.js.map +1 -0
  72. package/dist/opencode-plugin/github-username.d.ts +3 -0
  73. package/dist/opencode-plugin/github-username.d.ts.map +1 -0
  74. package/dist/opencode-plugin/github-username.js +41 -0
  75. package/dist/opencode-plugin/github-username.js.map +1 -0
  76. package/dist/opencode-plugin/identity-recognizer.d.ts +5 -0
  77. package/dist/opencode-plugin/identity-recognizer.d.ts.map +1 -0
  78. package/dist/opencode-plugin/identity-recognizer.js +21 -0
  79. package/dist/opencode-plugin/identity-recognizer.js.map +1 -0
  80. package/dist/opencode-plugin/index.d.ts +7 -0
  81. package/dist/opencode-plugin/index.d.ts.map +1 -0
  82. package/dist/opencode-plugin/index.js +6 -0
  83. package/dist/opencode-plugin/index.js.map +1 -0
  84. package/dist/opencode-plugin/plugin.d.ts +39 -0
  85. package/dist/opencode-plugin/plugin.d.ts.map +1 -0
  86. package/dist/opencode-plugin/plugin.js +294 -0
  87. package/dist/opencode-plugin/plugin.js.map +1 -0
  88. package/dist/opencode-plugin/types.d.ts +33 -0
  89. package/dist/opencode-plugin/types.d.ts.map +1 -0
  90. package/dist/opencode-plugin/types.js +5 -0
  91. package/dist/opencode-plugin/types.js.map +1 -0
  92. package/dist/opencode-plugin/v2/anon-state.d.ts +12 -0
  93. package/dist/opencode-plugin/v2/anon-state.d.ts.map +1 -0
  94. package/dist/opencode-plugin/v2/anon-state.js +14 -0
  95. package/dist/opencode-plugin/v2/anon-state.js.map +1 -0
  96. package/dist/opencode-plugin/v2/deep-rehydrate.d.ts +13 -0
  97. package/dist/opencode-plugin/v2/deep-rehydrate.d.ts.map +1 -0
  98. package/dist/opencode-plugin/v2/deep-rehydrate.js +33 -0
  99. package/dist/opencode-plugin/v2/deep-rehydrate.js.map +1 -0
  100. package/dist/opencode-plugin/v2/index.d.ts +17 -0
  101. package/dist/opencode-plugin/v2/index.d.ts.map +1 -0
  102. package/dist/opencode-plugin/v2/index.js +17 -0
  103. package/dist/opencode-plugin/v2/index.js.map +1 -0
  104. package/dist/opencode-plugin/v2/logger.d.ts +24 -0
  105. package/dist/opencode-plugin/v2/logger.d.ts.map +1 -0
  106. package/dist/opencode-plugin/v2/logger.js +73 -0
  107. package/dist/opencode-plugin/v2/logger.js.map +1 -0
  108. package/dist/opencode-plugin/v2/options.d.ts +40 -0
  109. package/dist/opencode-plugin/v2/options.d.ts.map +1 -0
  110. package/dist/opencode-plugin/v2/options.js +132 -0
  111. package/dist/opencode-plugin/v2/options.js.map +1 -0
  112. package/dist/opencode-plugin/v2/register-hooks.d.ts +43 -0
  113. package/dist/opencode-plugin/v2/register-hooks.d.ts.map +1 -0
  114. package/dist/opencode-plugin/v2/register-hooks.js +160 -0
  115. package/dist/opencode-plugin/v2/register-hooks.js.map +1 -0
  116. package/dist/opencode-plugin/v2/rehydrate-tail.d.ts +101 -0
  117. package/dist/opencode-plugin/v2/rehydrate-tail.d.ts.map +1 -0
  118. package/dist/opencode-plugin/v2/rehydrate-tail.js +147 -0
  119. package/dist/opencode-plugin/v2/rehydrate-tail.js.map +1 -0
  120. package/dist/opencode-plugin/v2/response-rehydrate.d.ts +78 -0
  121. package/dist/opencode-plugin/v2/response-rehydrate.d.ts.map +1 -0
  122. package/dist/opencode-plugin/v2/response-rehydrate.js +210 -0
  123. package/dist/opencode-plugin/v2/response-rehydrate.js.map +1 -0
  124. package/dist/opencode-plugin/v2/scrub-messages.d.ts +39 -0
  125. package/dist/opencode-plugin/v2/scrub-messages.d.ts.map +1 -0
  126. package/dist/opencode-plugin/v2/scrub-messages.js +260 -0
  127. package/dist/opencode-plugin/v2/scrub-messages.js.map +1 -0
  128. package/dist/opencode-plugin/v2/sessions.d.ts +17 -0
  129. package/dist/opencode-plugin/v2/sessions.d.ts.map +1 -0
  130. package/dist/opencode-plugin/v2/sessions.js +23 -0
  131. package/dist/opencode-plugin/v2/sessions.js.map +1 -0
  132. package/dist/opencode-plugin/v2/sse.d.ts +101 -0
  133. package/dist/opencode-plugin/v2/sse.d.ts.map +1 -0
  134. package/dist/opencode-plugin/v2/sse.js +235 -0
  135. package/dist/opencode-plugin/v2/sse.js.map +1 -0
  136. package/dist/opencode-plugin/v2/types.d.ts +188 -0
  137. package/dist/opencode-plugin/v2/types.d.ts.map +1 -0
  138. package/dist/opencode-plugin/v2/types.js +10 -0
  139. package/dist/opencode-plugin/v2/types.js.map +1 -0
  140. package/dist/opencode-plugin/vcs-command.d.ts +3 -0
  141. package/dist/opencode-plugin/vcs-command.d.ts.map +1 -0
  142. package/dist/opencode-plugin/vcs-command.js +34 -0
  143. package/dist/opencode-plugin/vcs-command.js.map +1 -0
  144. package/dist/pipeline/index.d.ts +12 -0
  145. package/dist/pipeline/index.d.ts.map +1 -0
  146. package/dist/pipeline/index.js +12 -0
  147. package/dist/pipeline/index.js.map +1 -0
  148. package/dist/pipeline/prenormalize.d.ts +48 -0
  149. package/dist/pipeline/prenormalize.d.ts.map +1 -0
  150. package/dist/pipeline/prenormalize.js +94 -0
  151. package/dist/pipeline/prenormalize.js.map +1 -0
  152. package/dist/pipeline/resolver.d.ts +56 -0
  153. package/dist/pipeline/resolver.d.ts.map +1 -0
  154. package/dist/pipeline/resolver.js +239 -0
  155. package/dist/pipeline/resolver.js.map +1 -0
  156. package/dist/pipeline/semantic-data-loader.d.ts +171 -0
  157. package/dist/pipeline/semantic-data-loader.d.ts.map +1 -0
  158. package/dist/pipeline/semantic-data-loader.js +677 -0
  159. package/dist/pipeline/semantic-data-loader.js.map +1 -0
  160. package/dist/pipeline/semantic-enricher.d.ts +112 -0
  161. package/dist/pipeline/semantic-enricher.d.ts.map +1 -0
  162. package/dist/pipeline/semantic-enricher.js +322 -0
  163. package/dist/pipeline/semantic-enricher.js.map +1 -0
  164. package/dist/pipeline/tagger.d.ts +121 -0
  165. package/dist/pipeline/tagger.d.ts.map +1 -0
  166. package/dist/pipeline/tagger.js +545 -0
  167. package/dist/pipeline/tagger.js.map +1 -0
  168. package/dist/pipeline/title-extractor.d.ts +79 -0
  169. package/dist/pipeline/title-extractor.d.ts.map +1 -0
  170. package/dist/pipeline/title-extractor.js +801 -0
  171. package/dist/pipeline/title-extractor.js.map +1 -0
  172. package/dist/pipeline/validator.d.ts +65 -0
  173. package/dist/pipeline/validator.d.ts.map +1 -0
  174. package/dist/pipeline/validator.js +292 -0
  175. package/dist/pipeline/validator.js.map +1 -0
  176. package/dist/proxy/index.d.ts +13 -0
  177. package/dist/proxy/index.d.ts.map +1 -0
  178. package/dist/proxy/index.js +12 -0
  179. package/dist/proxy/index.js.map +1 -0
  180. package/dist/proxy/providers/anthropic.d.ts +28 -0
  181. package/dist/proxy/providers/anthropic.d.ts.map +1 -0
  182. package/dist/proxy/providers/anthropic.js +265 -0
  183. package/dist/proxy/providers/anthropic.js.map +1 -0
  184. package/dist/proxy/providers/index.d.ts +19 -0
  185. package/dist/proxy/providers/index.d.ts.map +1 -0
  186. package/dist/proxy/providers/index.js +41 -0
  187. package/dist/proxy/providers/index.js.map +1 -0
  188. package/dist/proxy/providers/openai.d.ts +27 -0
  189. package/dist/proxy/providers/openai.d.ts.map +1 -0
  190. package/dist/proxy/providers/openai.js +203 -0
  191. package/dist/proxy/providers/openai.js.map +1 -0
  192. package/dist/proxy/providers/streaming-tool-loop.d.ts +12 -0
  193. package/dist/proxy/providers/streaming-tool-loop.d.ts.map +1 -0
  194. package/dist/proxy/providers/streaming-tool-loop.js +223 -0
  195. package/dist/proxy/providers/streaming-tool-loop.js.map +1 -0
  196. package/dist/proxy/providers/types.d.ts +109 -0
  197. package/dist/proxy/providers/types.d.ts.map +1 -0
  198. package/dist/proxy/providers/types.js +2 -0
  199. package/dist/proxy/providers/types.js.map +1 -0
  200. package/dist/proxy/proxy-server.d.ts +61 -0
  201. package/dist/proxy/proxy-server.d.ts.map +1 -0
  202. package/dist/proxy/proxy-server.js +146 -0
  203. package/dist/proxy/proxy-server.js.map +1 -0
  204. package/dist/proxy/rehydra-fetch.d.ts +35 -0
  205. package/dist/proxy/rehydra-fetch.d.ts.map +1 -0
  206. package/dist/proxy/rehydra-fetch.js +631 -0
  207. package/dist/proxy/rehydra-fetch.js.map +1 -0
  208. package/dist/proxy/rehydra-proxy.d.ts +40 -0
  209. package/dist/proxy/rehydra-proxy.d.ts.map +1 -0
  210. package/dist/proxy/rehydra-proxy.js +150 -0
  211. package/dist/proxy/rehydra-proxy.js.map +1 -0
  212. package/dist/proxy/sse-parser.d.ts +59 -0
  213. package/dist/proxy/sse-parser.d.ts.map +1 -0
  214. package/dist/proxy/sse-parser.js +112 -0
  215. package/dist/proxy/sse-parser.js.map +1 -0
  216. package/dist/proxy/system-instruction.d.ts +19 -0
  217. package/dist/proxy/system-instruction.d.ts.map +1 -0
  218. package/dist/proxy/system-instruction.js +33 -0
  219. package/dist/proxy/system-instruction.js.map +1 -0
  220. package/dist/proxy/tool-loop-stream.d.ts +7 -0
  221. package/dist/proxy/tool-loop-stream.d.ts.map +1 -0
  222. package/dist/proxy/tool-loop-stream.js +65 -0
  223. package/dist/proxy/tool-loop-stream.js.map +1 -0
  224. package/dist/proxy/types.d.ts +138 -0
  225. package/dist/proxy/types.d.ts.map +1 -0
  226. package/dist/proxy/types.js +5 -0
  227. package/dist/proxy/types.js.map +1 -0
  228. package/dist/proxy/wrap-client.d.ts +47 -0
  229. package/dist/proxy/wrap-client.d.ts.map +1 -0
  230. package/dist/proxy/wrap-client.js +70 -0
  231. package/dist/proxy/wrap-client.js.map +1 -0
  232. package/dist/recognizers/address.d.ts +2 -0
  233. package/dist/recognizers/address.d.ts.map +1 -0
  234. package/dist/recognizers/address.js +23 -0
  235. package/dist/recognizers/address.js.map +1 -0
  236. package/dist/recognizers/base.d.ts +78 -0
  237. package/dist/recognizers/base.d.ts.map +1 -0
  238. package/dist/recognizers/base.js +100 -0
  239. package/dist/recognizers/base.js.map +1 -0
  240. package/dist/recognizers/bic-swift.d.ts +10 -0
  241. package/dist/recognizers/bic-swift.d.ts.map +1 -0
  242. package/dist/recognizers/bic-swift.js +107 -0
  243. package/dist/recognizers/bic-swift.js.map +1 -0
  244. package/dist/recognizers/credit-card.d.ts +32 -0
  245. package/dist/recognizers/credit-card.d.ts.map +1 -0
  246. package/dist/recognizers/credit-card.js +160 -0
  247. package/dist/recognizers/credit-card.js.map +1 -0
  248. package/dist/recognizers/custom-id.d.ts +28 -0
  249. package/dist/recognizers/custom-id.d.ts.map +1 -0
  250. package/dist/recognizers/custom-id.js +116 -0
  251. package/dist/recognizers/custom-id.js.map +1 -0
  252. package/dist/recognizers/date.d.ts +10 -0
  253. package/dist/recognizers/date.d.ts.map +1 -0
  254. package/dist/recognizers/date.js +228 -0
  255. package/dist/recognizers/date.js.map +1 -0
  256. package/dist/recognizers/email.d.ts +10 -0
  257. package/dist/recognizers/email.d.ts.map +1 -0
  258. package/dist/recognizers/email.js +75 -0
  259. package/dist/recognizers/email.js.map +1 -0
  260. package/dist/recognizers/iban.d.ts +14 -0
  261. package/dist/recognizers/iban.d.ts.map +1 -0
  262. package/dist/recognizers/iban.js +67 -0
  263. package/dist/recognizers/iban.js.map +1 -0
  264. package/dist/recognizers/index.d.ts +25 -0
  265. package/dist/recognizers/index.d.ts.map +1 -0
  266. package/dist/recognizers/index.js +53 -0
  267. package/dist/recognizers/index.js.map +1 -0
  268. package/dist/recognizers/ip-address.d.ts +14 -0
  269. package/dist/recognizers/ip-address.d.ts.map +1 -0
  270. package/dist/recognizers/ip-address.js +183 -0
  271. package/dist/recognizers/ip-address.js.map +1 -0
  272. package/dist/recognizers/phone.d.ts +10 -0
  273. package/dist/recognizers/phone.d.ts.map +1 -0
  274. package/dist/recognizers/phone.js +145 -0
  275. package/dist/recognizers/phone.js.map +1 -0
  276. package/dist/recognizers/postal-code.d.ts +16 -0
  277. package/dist/recognizers/postal-code.d.ts.map +1 -0
  278. package/dist/recognizers/postal-code.js +42 -0
  279. package/dist/recognizers/postal-code.js.map +1 -0
  280. package/dist/recognizers/registry.d.ts +59 -0
  281. package/dist/recognizers/registry.d.ts.map +1 -0
  282. package/dist/recognizers/registry.js +113 -0
  283. package/dist/recognizers/registry.js.map +1 -0
  284. package/dist/recognizers/secrets/api-key.d.ts +6 -0
  285. package/dist/recognizers/secrets/api-key.d.ts.map +1 -0
  286. package/dist/recognizers/secrets/api-key.js +40 -0
  287. package/dist/recognizers/secrets/api-key.js.map +1 -0
  288. package/dist/recognizers/secrets/aws-credentials.d.ts +7 -0
  289. package/dist/recognizers/secrets/aws-credentials.d.ts.map +1 -0
  290. package/dist/recognizers/secrets/aws-credentials.js +68 -0
  291. package/dist/recognizers/secrets/aws-credentials.js.map +1 -0
  292. package/dist/recognizers/secrets/config-secret.d.ts +8 -0
  293. package/dist/recognizers/secrets/config-secret.d.ts.map +1 -0
  294. package/dist/recognizers/secrets/config-secret.js +59 -0
  295. package/dist/recognizers/secrets/config-secret.js.map +1 -0
  296. package/dist/recognizers/secrets/connection-string.d.ts +6 -0
  297. package/dist/recognizers/secrets/connection-string.d.ts.map +1 -0
  298. package/dist/recognizers/secrets/connection-string.js +40 -0
  299. package/dist/recognizers/secrets/connection-string.js.map +1 -0
  300. package/dist/recognizers/secrets/env-var.d.ts +8 -0
  301. package/dist/recognizers/secrets/env-var.d.ts.map +1 -0
  302. package/dist/recognizers/secrets/env-var.js +54 -0
  303. package/dist/recognizers/secrets/env-var.js.map +1 -0
  304. package/dist/recognizers/secrets/index.d.ts +22 -0
  305. package/dist/recognizers/secrets/index.d.ts.map +1 -0
  306. package/dist/recognizers/secrets/index.js +41 -0
  307. package/dist/recognizers/secrets/index.js.map +1 -0
  308. package/dist/recognizers/secrets/jwt.d.ts +6 -0
  309. package/dist/recognizers/secrets/jwt.d.ts.map +1 -0
  310. package/dist/recognizers/secrets/jwt.js +47 -0
  311. package/dist/recognizers/secrets/jwt.js.map +1 -0
  312. package/dist/recognizers/secrets/key-patterns.d.ts +10 -0
  313. package/dist/recognizers/secrets/key-patterns.d.ts.map +1 -0
  314. package/dist/recognizers/secrets/key-patterns.js +15 -0
  315. package/dist/recognizers/secrets/key-patterns.js.map +1 -0
  316. package/dist/recognizers/secrets/literal-value.d.ts +10 -0
  317. package/dist/recognizers/secrets/literal-value.d.ts.map +1 -0
  318. package/dist/recognizers/secrets/literal-value.js +48 -0
  319. package/dist/recognizers/secrets/literal-value.js.map +1 -0
  320. package/dist/recognizers/secrets/private-key.d.ts +6 -0
  321. package/dist/recognizers/secrets/private-key.d.ts.map +1 -0
  322. package/dist/recognizers/secrets/private-key.js +16 -0
  323. package/dist/recognizers/secrets/private-key.js.map +1 -0
  324. package/dist/recognizers/url.d.ts +14 -0
  325. package/dist/recognizers/url.d.ts.map +1 -0
  326. package/dist/recognizers/url.js +121 -0
  327. package/dist/recognizers/url.js.map +1 -0
  328. package/dist/storage/browser.d.ts +13 -0
  329. package/dist/storage/browser.d.ts.map +1 -0
  330. package/dist/storage/browser.js +13 -0
  331. package/dist/storage/browser.js.map +1 -0
  332. package/dist/storage/in-memory.d.ts +60 -0
  333. package/dist/storage/in-memory.d.ts.map +1 -0
  334. package/dist/storage/in-memory.js +108 -0
  335. package/dist/storage/in-memory.js.map +1 -0
  336. package/dist/storage/index.d.ts +11 -0
  337. package/dist/storage/index.d.ts.map +1 -0
  338. package/dist/storage/index.js +11 -0
  339. package/dist/storage/index.js.map +1 -0
  340. package/dist/storage/indexeddb.d.ts +69 -0
  341. package/dist/storage/indexeddb.d.ts.map +1 -0
  342. package/dist/storage/indexeddb.js +274 -0
  343. package/dist/storage/indexeddb.js.map +1 -0
  344. package/dist/storage/session-base.d.ts +34 -0
  345. package/dist/storage/session-base.d.ts.map +1 -0
  346. package/dist/storage/session-base.js +122 -0
  347. package/dist/storage/session-base.js.map +1 -0
  348. package/dist/storage/session.d.ts +19 -0
  349. package/dist/storage/session.d.ts.map +1 -0
  350. package/dist/storage/session.js +31 -0
  351. package/dist/storage/session.js.map +1 -0
  352. package/dist/storage/sqlite.d.ts +80 -0
  353. package/dist/storage/sqlite.d.ts.map +1 -0
  354. package/dist/storage/sqlite.js +255 -0
  355. package/dist/storage/sqlite.js.map +1 -0
  356. package/dist/storage/types.d.ts +208 -0
  357. package/dist/storage/types.d.ts.map +1 -0
  358. package/dist/storage/types.js +6 -0
  359. package/dist/storage/types.js.map +1 -0
  360. package/dist/streaming/anonymizer-stream.d.ts +63 -0
  361. package/dist/streaming/anonymizer-stream.d.ts.map +1 -0
  362. package/dist/streaming/anonymizer-stream.js +184 -0
  363. package/dist/streaming/anonymizer-stream.js.map +1 -0
  364. package/dist/streaming/index.d.ts +9 -0
  365. package/dist/streaming/index.d.ts.map +1 -0
  366. package/dist/streaming/index.js +8 -0
  367. package/dist/streaming/index.js.map +1 -0
  368. package/dist/streaming/sentence-buffer.d.ts +78 -0
  369. package/dist/streaming/sentence-buffer.d.ts.map +1 -0
  370. package/dist/streaming/sentence-buffer.js +239 -0
  371. package/dist/streaming/sentence-buffer.js.map +1 -0
  372. package/dist/streaming/stream-factory.d.ts +38 -0
  373. package/dist/streaming/stream-factory.d.ts.map +1 -0
  374. package/dist/streaming/stream-factory.js +69 -0
  375. package/dist/streaming/stream-factory.js.map +1 -0
  376. package/dist/streaming/types.d.ts +121 -0
  377. package/dist/streaming/types.d.ts.map +1 -0
  378. package/dist/streaming/types.js +5 -0
  379. package/dist/streaming/types.js.map +1 -0
  380. package/dist/types/index.d.ts +269 -0
  381. package/dist/types/index.d.ts.map +1 -0
  382. package/dist/types/index.js +95 -0
  383. package/dist/types/index.js.map +1 -0
  384. package/dist/types/pii-types.d.ts +64 -0
  385. package/dist/types/pii-types.d.ts.map +1 -0
  386. package/dist/types/pii-types.js +153 -0
  387. package/dist/types/pii-types.js.map +1 -0
  388. package/dist/utils/iban-checksum.d.ts +23 -0
  389. package/dist/utils/iban-checksum.d.ts.map +1 -0
  390. package/dist/utils/iban-checksum.js +106 -0
  391. package/dist/utils/iban-checksum.js.map +1 -0
  392. package/dist/utils/index.d.ts +11 -0
  393. package/dist/utils/index.d.ts.map +1 -0
  394. package/dist/utils/index.js +11 -0
  395. package/dist/utils/index.js.map +1 -0
  396. package/dist/utils/json-walk.d.ts +21 -0
  397. package/dist/utils/json-walk.d.ts.map +1 -0
  398. package/dist/utils/json-walk.js +44 -0
  399. package/dist/utils/json-walk.js.map +1 -0
  400. package/dist/utils/luhn.d.ts +17 -0
  401. package/dist/utils/luhn.d.ts.map +1 -0
  402. package/dist/utils/luhn.js +55 -0
  403. package/dist/utils/luhn.js.map +1 -0
  404. package/dist/utils/offsets.d.ts +86 -0
  405. package/dist/utils/offsets.d.ts.map +1 -0
  406. package/dist/utils/offsets.js +124 -0
  407. package/dist/utils/offsets.js.map +1 -0
  408. package/dist/utils/path.d.ts +34 -0
  409. package/dist/utils/path.d.ts.map +1 -0
  410. package/dist/utils/path.js +96 -0
  411. package/dist/utils/path.js.map +1 -0
  412. package/dist/utils/regex.d.ts +11 -0
  413. package/dist/utils/regex.d.ts.map +1 -0
  414. package/dist/utils/regex.js +14 -0
  415. package/dist/utils/regex.js.map +1 -0
  416. package/dist/utils/storage-browser.d.ts +51 -0
  417. package/dist/utils/storage-browser.d.ts.map +1 -0
  418. package/dist/utils/storage-browser.js +381 -0
  419. package/dist/utils/storage-browser.js.map +1 -0
  420. package/dist/utils/storage-node.d.ts +51 -0
  421. package/dist/utils/storage-node.d.ts.map +1 -0
  422. package/dist/utils/storage-node.js +153 -0
  423. package/dist/utils/storage-node.js.map +1 -0
  424. package/dist/utils/storage.browser.d.ts +75 -0
  425. package/dist/utils/storage.browser.d.ts.map +1 -0
  426. package/dist/utils/storage.browser.js +69 -0
  427. package/dist/utils/storage.browser.js.map +1 -0
  428. package/dist/utils/storage.d.ts +73 -0
  429. package/dist/utils/storage.d.ts.map +1 -0
  430. package/dist/utils/storage.js +69 -0
  431. package/dist/utils/storage.js.map +1 -0
  432. package/package.json +148 -0
@@ -0,0 +1,23 @@
1
+ /**
2
+ * In-memory session registry for the V2 plugin.
3
+ *
4
+ * OpenCode identifies a conversation by `sessionID`; each conversation gets
5
+ * its own {@link AnonymizerSessionImpl} so PII maps stay isolated. Sessions are
6
+ * process-local and intentionally not persisted here.
7
+ */
8
+ /** Lazily creates and memoizes one session per OpenCode session ID. */
9
+ export class SessionStore {
10
+ map = new Map();
11
+ /**
12
+ * Returns the session for `sessionID`, creating it via `factory` on first use.
13
+ */
14
+ get(sessionID, factory) {
15
+ let session = this.map.get(sessionID);
16
+ if (session === undefined) {
17
+ session = factory();
18
+ this.map.set(sessionID, session);
19
+ }
20
+ return session;
21
+ }
22
+ }
23
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/opencode-plugin/v2/sessions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,uEAAuE;AACvE,MAAM,OAAO,YAAY;IACN,GAAG,GAAuC,IAAI,GAAG,EAAE,CAAC;IAErE;;OAEG;IACH,GAAG,CACD,SAAiB,EACjB,OAAoC;QAEpC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Server-Sent Events body rewriting for the V2 `http.response` hook.
3
+ *
4
+ * When the model streams its answer as SSE (`text/event-stream`), each `data:`
5
+ * line may carry PII tags that must be restored before OpenCode renders the
6
+ * text. `event:` / `id:` / comment lines are structural and never modified.
7
+ *
8
+ * Two strategies are applied per `data:` payload:
9
+ * - JSON payloads are parsed, every string leaf is restored, and the value is
10
+ * re-serialised. This keeps quotes / backslashes / newlines inside restored
11
+ * values correctly escaped. A tag split across the delta field of two frames
12
+ * is carried on the matching JSON pointer.
13
+ * - Non-JSON payloads fall back to raw string replacement. A tag split across
14
+ * two events is carried in a per-response text tail.
15
+ *
16
+ * Frames are only rewritten once their blank-line terminator has been seen, so
17
+ * a tag is never processed while its frame is still buffered. Frame boundaries
18
+ * may be `\n\n`, `\r\n\r\n`, or a bare `\r\r`; the original separator bytes are
19
+ * preserved on output. On failure the original body is passed through and the
20
+ * reason is reported via `error`.
21
+ */
22
+ import type { RehydrateTailStore } from "./rehydrate-tail.js";
23
+ /** Which strategy produced a rewritten body. */
24
+ export type SseRewriteMode = "json" | "text" | "passthrough";
25
+ /** Outcome of rewriting an SSE body. */
26
+ export interface SseRewriteResult {
27
+ /** Full rewritten SSE body. */
28
+ body: string;
29
+ /** Whether a `data:` line actually changed (i.e. a PII tag was restored). */
30
+ rewrote: boolean;
31
+ /** Strategy used: `json`/`text` when rewritten, `passthrough` otherwise. */
32
+ mode: SseRewriteMode;
33
+ /** Set when an internal failure forced the original body to pass through. */
34
+ error?: string;
35
+ }
36
+ /**
37
+ * Per-response state shared across the events of one SSE stream.
38
+ *
39
+ * `dataTail` holds an unterminated tag fragment from the previous text event;
40
+ * `store` holds per-JSON-pointer fragments so a tag split across two JSON
41
+ * delta frames is reassembled.
42
+ */
43
+ export interface SseTailState {
44
+ /** Unterminated tag fragment carried between SSE events (text payloads). */
45
+ dataTail: string;
46
+ readonly store: RehydrateTailStore;
47
+ readonly sessionID: string;
48
+ readonly tagPrefix: string;
49
+ readonly tagClose: string;
50
+ }
51
+ /** Creates a fresh per-response tail state, applying option defaults. */
52
+ export declare function createSseTailState(options?: {
53
+ store?: RehydrateTailStore;
54
+ sessionID?: string;
55
+ tagPrefix?: string;
56
+ tagClose?: string;
57
+ }): SseTailState;
58
+ /** Options accepted by {@link SseStreamRewriter}. */
59
+ export interface SseStreamRewriterOptions {
60
+ tailStore?: RehydrateTailStore;
61
+ sessionID?: string;
62
+ tagPrefix?: string;
63
+ tagClose?: string;
64
+ }
65
+ /**
66
+ * Rewrites every PII tag in a complete SSE body.
67
+ *
68
+ * The body is split on blank-line frame separators (`\n\n`, `\r\n\r\n`, or
69
+ * `\r\r`), each frame is rewritten, and the original separators are rejoined so
70
+ * CRLF streams stay CRLF.
71
+ *
72
+ * @param body - Raw SSE body as read from the response.
73
+ * @param rehydrate - Restores PII tags in a single string.
74
+ * @param state - Optional per-response tail state; a fresh one is created when
75
+ * omitted so tags split across the frames of a single body still reassemble.
76
+ */
77
+ export declare function rewriteSseBody(body: string, rehydrate: (input: string) => Promise<string>, state?: SseTailState): Promise<SseRewriteResult>;
78
+ /**
79
+ * Streaming SSE rewriter for `http.response` bodies.
80
+ *
81
+ * Chunks are decoded and appended to an internal buffer. Only complete frames
82
+ * (terminated by a blank line, LF or CRLF) are rewritten and emitted, so a PII
83
+ * tag split across two chunks is held back until the frame completes. The
84
+ * per-response {@link SseTailState} additionally carries tag fragments split
85
+ * across events. {@link flush} rewrites any trailing frame that was never
86
+ * terminated and emits the final held fragment.
87
+ */
88
+ export declare class SseStreamRewriter {
89
+ private readonly rehydrate;
90
+ private readonly onError?;
91
+ private readonly decoder;
92
+ private readonly state;
93
+ private pending;
94
+ constructor(rehydrate: (input: string) => Promise<string>, onError?: ((message: string) => void) | undefined, options?: SseStreamRewriterOptions);
95
+ /** Feeds one byte chunk; returns the text confirmed safe to emit. */
96
+ push(chunk: Uint8Array): Promise<string>;
97
+ /** Rewrites and returns any trailing frame at end of stream. */
98
+ flush(): Promise<string>;
99
+ private drainCompleteFrames;
100
+ }
101
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../../src/opencode-plugin/v2/sse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AASH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;AAE7D,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,IAAI,EAAE,cAAc,CAAC;IACrB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAChC,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,GACL,YAAY,CAQd;AAED,qDAAqD;AACrD,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA8GD;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC7C,KAAK,GAAE,YAAmC,GACzC,OAAO,CAAC,gBAAgB,CAAC,CAsC3B;AAcD;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAN3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,OAAO,CAAM;gBAGF,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC7C,OAAO,CAAC,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,aAAA,EACpD,OAAO,GAAE,wBAA6B;IAKxC,qEAAqE;IAC/D,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9C,gEAAgE;IAC1D,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;YA0BhB,mBAAmB;CAalC"}
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Server-Sent Events body rewriting for the V2 `http.response` hook.
3
+ *
4
+ * When the model streams its answer as SSE (`text/event-stream`), each `data:`
5
+ * line may carry PII tags that must be restored before OpenCode renders the
6
+ * text. `event:` / `id:` / comment lines are structural and never modified.
7
+ *
8
+ * Two strategies are applied per `data:` payload:
9
+ * - JSON payloads are parsed, every string leaf is restored, and the value is
10
+ * re-serialised. This keeps quotes / backslashes / newlines inside restored
11
+ * values correctly escaped. A tag split across the delta field of two frames
12
+ * is carried on the matching JSON pointer.
13
+ * - Non-JSON payloads fall back to raw string replacement. A tag split across
14
+ * two events is carried in a per-response text tail.
15
+ *
16
+ * Frames are only rewritten once their blank-line terminator has been seen, so
17
+ * a tag is never processed while its frame is still buffered. Frame boundaries
18
+ * may be `\n\n`, `\r\n\r\n`, or a bare `\r\r`; the original separator bytes are
19
+ * preserved on output. On failure the original body is passed through and the
20
+ * reason is reported via `error`.
21
+ */
22
+ import { DEFAULT_TAG_CLOSE, DEFAULT_TAG_PREFIX, InMemoryRehydrateTailStore, splitTrailingTag, walkJsonWithTail, } from "./rehydrate-tail.js";
23
+ /** Creates a fresh per-response tail state, applying option defaults. */
24
+ export function createSseTailState(options = {}) {
25
+ return {
26
+ dataTail: "",
27
+ store: options.store ?? new InMemoryRehydrateTailStore(),
28
+ sessionID: options.sessionID ?? "",
29
+ tagPrefix: options.tagPrefix ?? DEFAULT_TAG_PREFIX,
30
+ tagClose: options.tagClose ?? DEFAULT_TAG_CLOSE,
31
+ };
32
+ }
33
+ /** Splits a frame into lines while capturing the exact line endings. */
34
+ const LINE_SEPARATOR = /(\r\n|\n|\r)/;
35
+ /** Splits a body into frames while capturing the exact frame separators. */
36
+ const FRAME_SEPARATOR = /(\r\n\r\n|\n\n|\r\r)/;
37
+ /** Normalizes an unknown thrown value into a loggable message. */
38
+ function errorMessage(error) {
39
+ return error instanceof Error ? error.message : String(error);
40
+ }
41
+ /**
42
+ * Restores a single `data:` payload.
43
+ *
44
+ * JSON payloads are parsed so string leaves are restored before
45
+ * re-serialisation; a payload that parses but contains no tag is returned byte
46
+ * for byte unchanged so formatting/whitespace is preserved. Non-JSON payloads
47
+ * are rehydrated as text, carrying an incomplete trailing fragment in `state`
48
+ * so the next event can complete it.
49
+ */
50
+ async function rewriteDataPayload(payload, rehydrate, state) {
51
+ let parsed;
52
+ let isJson = true;
53
+ try {
54
+ parsed = JSON.parse(payload);
55
+ }
56
+ catch {
57
+ isJson = false;
58
+ }
59
+ if (isJson) {
60
+ const result = await walkJsonWithTail(parsed, rehydrate, {
61
+ store: state.store,
62
+ sessionID: state.sessionID,
63
+ pointerPrefix: "sse:",
64
+ tagPrefix: state.tagPrefix,
65
+ tagClose: state.tagClose,
66
+ });
67
+ if (!result.changed) {
68
+ return { payload, changed: false, mode: "json" };
69
+ }
70
+ return { payload: JSON.stringify(result.value), changed: true, mode: "json" };
71
+ }
72
+ const combined = state.dataTail + payload;
73
+ const restored = await rehydrate(combined);
74
+ const { emitted, tail } = splitTrailingTag(restored, state.tagPrefix, state.tagClose);
75
+ state.dataTail = tail;
76
+ return { payload: emitted, changed: emitted !== payload, mode: "text" };
77
+ }
78
+ /**
79
+ * Rewrites the `data:` lines of a single complete SSE frame. The original
80
+ * `data: ` / `data:` prefix and spacing are preserved, as are the line endings
81
+ * (`\n`, `\r\n`, or `\r`).
82
+ */
83
+ async function rewriteFrame(frame, rehydrate, state) {
84
+ if (frame.length === 0) {
85
+ return { frame, rewrote: false, mode: "passthrough" };
86
+ }
87
+ let rewrote = false;
88
+ let mode = "passthrough";
89
+ const parts = frame.split(LINE_SEPARATOR);
90
+ for (let index = 0; index < parts.length; index += 2) {
91
+ const line = parts[index] ?? "";
92
+ if (!line.startsWith("data:")) {
93
+ // `event:`, `id:`, `retry:` and `:` comments pass through untouched.
94
+ continue;
95
+ }
96
+ const afterPrefix = line.slice("data:".length);
97
+ const hasSpace = afterPrefix.startsWith(" ");
98
+ const prefix = hasSpace ? "data: " : "data:";
99
+ const payload = hasSpace ? afterPrefix.slice(1) : afterPrefix;
100
+ const result = await rewriteDataPayload(payload, rehydrate, state);
101
+ if (result.changed) {
102
+ rewrote = true;
103
+ mode = mode === "text" || result.mode === "text" ? "text" : "json";
104
+ }
105
+ parts[index] = prefix + result.payload;
106
+ }
107
+ return { frame: parts.join(""), rewrote, mode };
108
+ }
109
+ /**
110
+ * Rewrites every PII tag in a complete SSE body.
111
+ *
112
+ * The body is split on blank-line frame separators (`\n\n`, `\r\n\r\n`, or
113
+ * `\r\r`), each frame is rewritten, and the original separators are rejoined so
114
+ * CRLF streams stay CRLF.
115
+ *
116
+ * @param body - Raw SSE body as read from the response.
117
+ * @param rehydrate - Restores PII tags in a single string.
118
+ * @param state - Optional per-response tail state; a fresh one is created when
119
+ * omitted so tags split across the frames of a single body still reassemble.
120
+ */
121
+ export async function rewriteSseBody(body, rehydrate, state = createSseTailState()) {
122
+ try {
123
+ const parts = body.split(FRAME_SEPARATOR);
124
+ let rewrote = false;
125
+ let sawJson = false;
126
+ let sawText = false;
127
+ for (let index = 0; index < parts.length; index += 2) {
128
+ const result = await rewriteFrame(parts[index] ?? "", rehydrate, state);
129
+ parts[index] = result.frame;
130
+ if (result.rewrote) {
131
+ rewrote = true;
132
+ if (result.mode === "text") {
133
+ sawText = true;
134
+ }
135
+ else {
136
+ sawJson = true;
137
+ }
138
+ }
139
+ }
140
+ const rewrittenBody = parts.join("");
141
+ const mode = !rewrote
142
+ ? "passthrough"
143
+ : sawText
144
+ ? "text"
145
+ : sawJson
146
+ ? "json"
147
+ : "passthrough";
148
+ return { body: rewrittenBody, rewrote, mode };
149
+ }
150
+ catch (error) {
151
+ // The original body was not emitted by us, so drop any held fragment to
152
+ // avoid it leaking into a later, unrelated frame.
153
+ state.dataTail = "";
154
+ return {
155
+ body,
156
+ rewrote: false,
157
+ mode: "passthrough",
158
+ error: errorMessage(error),
159
+ };
160
+ }
161
+ }
162
+ /** Finds the end offset of the last complete frame separator in `text`. */
163
+ function lastFrameBoundaryEnd(text) {
164
+ const matcher = new RegExp(FRAME_SEPARATOR.source, "g");
165
+ let end = -1;
166
+ let match = matcher.exec(text);
167
+ while (match !== null) {
168
+ end = match.index + match[0].length;
169
+ match = matcher.exec(text);
170
+ }
171
+ return end;
172
+ }
173
+ /**
174
+ * Streaming SSE rewriter for `http.response` bodies.
175
+ *
176
+ * Chunks are decoded and appended to an internal buffer. Only complete frames
177
+ * (terminated by a blank line, LF or CRLF) are rewritten and emitted, so a PII
178
+ * tag split across two chunks is held back until the frame completes. The
179
+ * per-response {@link SseTailState} additionally carries tag fragments split
180
+ * across events. {@link flush} rewrites any trailing frame that was never
181
+ * terminated and emits the final held fragment.
182
+ */
183
+ export class SseStreamRewriter {
184
+ rehydrate;
185
+ onError;
186
+ decoder = new TextDecoder();
187
+ state;
188
+ pending = "";
189
+ constructor(rehydrate, onError, options = {}) {
190
+ this.rehydrate = rehydrate;
191
+ this.onError = onError;
192
+ this.state = createSseTailState(options);
193
+ }
194
+ /** Feeds one byte chunk; returns the text confirmed safe to emit. */
195
+ async push(chunk) {
196
+ this.pending += this.decoder.decode(chunk, { stream: true });
197
+ return this.drainCompleteFrames();
198
+ }
199
+ /** Rewrites and returns any trailing frame at end of stream. */
200
+ async flush() {
201
+ this.pending += this.decoder.decode();
202
+ const remainder = this.pending;
203
+ this.pending = "";
204
+ let output = "";
205
+ if (remainder.length > 0) {
206
+ const result = await rewriteSseBody(remainder, this.rehydrate, this.state);
207
+ if (result.error !== undefined) {
208
+ this.onError?.(result.error);
209
+ }
210
+ output += result.body;
211
+ }
212
+ // Emit any fragment still held from the final event, then release the
213
+ // per-response state so it cannot leak into a later stream.
214
+ if (this.state.dataTail.length > 0) {
215
+ output += this.state.dataTail;
216
+ this.state.dataTail = "";
217
+ }
218
+ this.state.store.clear();
219
+ return output;
220
+ }
221
+ async drainCompleteFrames() {
222
+ const boundaryEnd = lastFrameBoundaryEnd(this.pending);
223
+ if (boundaryEnd < 0) {
224
+ return "";
225
+ }
226
+ const complete = this.pending.slice(0, boundaryEnd);
227
+ this.pending = this.pending.slice(boundaryEnd);
228
+ const result = await rewriteSseBody(complete, this.rehydrate, this.state);
229
+ if (result.error !== undefined) {
230
+ this.onError?.(result.error);
231
+ }
232
+ return result.body;
233
+ }
234
+ }
235
+ //# sourceMappingURL=sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/opencode-plugin/v2/sse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * OpenCode Plugin V2 structural types.
3
+ *
4
+ * Declared locally instead of importing `@opencode/plugin` so the SDK keeps no
5
+ * hard runtime/type dependency on OpenCode. Only the shapes this plugin
6
+ * actually touches are modelled; extra fields are tolerated through index
7
+ * signatures.
8
+ */
9
+ import type { AnonymizerSessionImpl } from "../../storage/session-base.js";
10
+ /** Log levels accepted by the OpenCode app logger. */
11
+ export type PluginLogLevel = "debug" | "info" | "warn" | "error";
12
+ /** Level-scoped logging sink. Implementations must swallow their own failures. */
13
+ export interface V2Logger {
14
+ debug(message: string, extra?: Record<string, unknown>): void;
15
+ info(message: string, extra?: Record<string, unknown>): void;
16
+ warn(message: string, extra?: Record<string, unknown>): void;
17
+ error(message: string, extra?: Record<string, unknown>): void;
18
+ }
19
+ /** Context handed to the scrubber: which session to scrub and where to log. */
20
+ export interface ScrubContext {
21
+ sessionID: string;
22
+ logger: V2Logger;
23
+ }
24
+ /** Resolves (creating on first use) the anonymizer session for a session ID. */
25
+ export type SessionResolver = (sessionID: string) => AnonymizerSessionImpl;
26
+ /** A registered hook. Calling `dispose()` removes it. */
27
+ export interface HookRegistration {
28
+ dispose(): Promise<void> | void;
29
+ }
30
+ /** One entry in a Session request's system prompt. */
31
+ export interface SystemPart {
32
+ type: "text";
33
+ text: string;
34
+ [key: string]: unknown;
35
+ }
36
+ /** Tool call state as carried by V1-style OpenCode message parts. */
37
+ export interface MessagePartState {
38
+ status?: string;
39
+ input?: unknown;
40
+ output?: unknown;
41
+ error?: unknown;
42
+ [key: string]: unknown;
43
+ }
44
+ /** A content/part entry in an OpenCode message (V2 `content` or V1 `parts`). */
45
+ export interface MessagePart {
46
+ type?: string;
47
+ id?: string;
48
+ callID?: string;
49
+ text?: unknown;
50
+ input?: unknown;
51
+ result?: unknown;
52
+ state?: MessagePartState;
53
+ [key: string]: unknown;
54
+ }
55
+ /** OpenCode message. V2 uses `content`; `parts`/`info` keep V1 compatibility. */
56
+ export interface Message {
57
+ role?: string;
58
+ sessionID?: string;
59
+ content?: MessagePart[];
60
+ parts?: MessagePart[];
61
+ info?: {
62
+ sessionID?: string;
63
+ [key: string]: unknown;
64
+ };
65
+ [key: string]: unknown;
66
+ }
67
+ /** Payload of the `context` / `compaction` / `generate` / `title` session hooks. */
68
+ export interface SessionRequestEvent {
69
+ readonly sessionID: string;
70
+ system: SystemPart[];
71
+ messages: Message[];
72
+ [key: string]: unknown;
73
+ }
74
+ /**
75
+ * Which request produced an HTTP response. Only `primary` carries the answer
76
+ * text shown to the user; the others never contain rehydratable PII.
77
+ */
78
+ export type HttpResponseKind = "primary" | "compaction" | "title" | "generate";
79
+ /** Payload of the `http.response` session hook. */
80
+ export interface HttpResponseEvent {
81
+ readonly sessionID: string;
82
+ readonly kind: HttpResponseKind;
83
+ response: Response;
84
+ [key: string]: unknown;
85
+ }
86
+ /** Payload of the `experimental.ws.receive` session hook. */
87
+ export interface WsReceiveEvent {
88
+ readonly sessionID: string;
89
+ /**
90
+ * Which request produced the frame. Only `primary` carries the answer text;
91
+ * the others must never be rehydrated, or PII would leak into user-visible
92
+ * surfaces such as the session title.
93
+ */
94
+ readonly kind: HttpResponseKind;
95
+ frame: string;
96
+ [key: string]: unknown;
97
+ }
98
+ export interface SessionHookEvents {
99
+ context: SessionRequestEvent;
100
+ compaction: SessionRequestEvent;
101
+ generate: SessionRequestEvent;
102
+ title: SessionRequestEvent;
103
+ "http.response": HttpResponseEvent;
104
+ "experimental.ws.receive": WsReceiveEvent;
105
+ }
106
+ export interface SessionDomain {
107
+ hook<Name extends keyof SessionHookEvents>(name: Name, callback: (event: SessionHookEvents[Name]) => Promise<void> | void): Promise<HookRegistration>;
108
+ }
109
+ /** Payload of `tool.hook("execute.before")`. */
110
+ export interface ToolBeforeEvent {
111
+ tool: string;
112
+ sessionID: string;
113
+ input: unknown;
114
+ [key: string]: unknown;
115
+ }
116
+ interface ToolAfterEventBase {
117
+ tool: string;
118
+ sessionID: string;
119
+ input: unknown;
120
+ [key: string]: unknown;
121
+ }
122
+ export interface ToolAfterCompletedEvent extends ToolAfterEventBase {
123
+ status: "completed";
124
+ result: unknown;
125
+ }
126
+ export interface ToolAfterErrorEvent extends ToolAfterEventBase {
127
+ status: "error";
128
+ error: unknown;
129
+ }
130
+ /** Payload of `tool.hook("execute.after")`; discriminated by `status`. */
131
+ export type ToolAfterEvent = ToolAfterCompletedEvent | ToolAfterErrorEvent;
132
+ export interface ToolHookEvents {
133
+ "execute.before": ToolBeforeEvent;
134
+ "execute.after": ToolAfterEvent;
135
+ }
136
+ export interface ToolDomain {
137
+ hook<Name extends keyof ToolHookEvents>(name: Name, callback: (event: ToolHookEvents[Name]) => Promise<void> | void): Promise<HookRegistration>;
138
+ }
139
+ /** Input accepted by the V1-style `client.app.log` sink, probed at runtime. */
140
+ export interface OpencodeLogInput {
141
+ body: {
142
+ service: string;
143
+ level: PluginLogLevel;
144
+ message: string;
145
+ extra?: Record<string, unknown>;
146
+ };
147
+ }
148
+ export interface OpencodeClient {
149
+ app?: {
150
+ log?: (input: OpencodeLogInput) => unknown;
151
+ };
152
+ }
153
+ /**
154
+ * The subset of the OpenCode V2 plugin `Context` this plugin uses. Unknown
155
+ * fields are tolerated so a host rename does not crash the plugin.
156
+ */
157
+ export interface RehydraPluginContext {
158
+ readonly session: SessionDomain;
159
+ readonly tool: ToolDomain;
160
+ /** Raw plugin options passed through OpenCode configuration. */
161
+ readonly options?: Readonly<Record<string, unknown>> | undefined;
162
+ /** V2 project location (`ctx.location.directory`). */
163
+ readonly location?: {
164
+ readonly directory?: string;
165
+ } | undefined;
166
+ /** V1-style project directory fallbacks. */
167
+ readonly directory?: string;
168
+ readonly worktree?: string;
169
+ /** Optional V1-style logging sink. */
170
+ readonly client?: OpencodeClient;
171
+ [key: string]: unknown;
172
+ }
173
+ /** Returned by `setup()` to release registered hooks. */
174
+ export type Cleanup = () => Promise<void> | void;
175
+ export type RehydraPluginSetup = (ctx: RehydraPluginContext) => Promise<Cleanup | void> | Cleanup | void;
176
+ /** OpenCode Plugin V2 shape. */
177
+ export interface Plugin {
178
+ readonly id: string;
179
+ readonly setup: RehydraPluginSetup;
180
+ }
181
+ export type RehydraPlugin = Plugin;
182
+ /** Backwards-compatible aliases for the V2 naming used by sibling helpers. */
183
+ export type V2PluginContext = RehydraPluginContext;
184
+ export type V2PluginSetup = RehydraPluginSetup;
185
+ export type V2Plugin = Plugin;
186
+ export type V2Cleanup = Cleanup;
187
+ export {};
188
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/opencode-plugin/v2/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * OpenCode Plugin V2 structural types.
3
+ *
4
+ * Declared locally instead of importing `@opencode/plugin` so the SDK keeps no
5
+ * hard runtime/type dependency on OpenCode. Only the shapes this plugin
6
+ * actually touches are modelled; extra fields are tolerated through index
7
+ * signatures.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/opencode-plugin/v2/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,3 @@
1
+ /** Recognize direct Git/GitHub commands without matching quoted prose or arguments. */
2
+ export declare function vcsCommandTypes(command: string): Set<'git' | 'github'>;
3
+ //# sourceMappingURL=vcs-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vcs-command.d.ts","sourceRoot":"","sources":["../../src/opencode-plugin/vcs-command.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,CAsBtE"}
@@ -0,0 +1,34 @@
1
+ /** Recognize direct Git/GitHub commands without matching quoted prose or arguments. */
2
+ export function vcsCommandTypes(command) {
3
+ const tokens = command.match(/"(?:\\.|[^"\\])*"|'[^']*'|[\n;&|]+|[^\s;&|]+/g) ?? [];
4
+ const result = new Set();
5
+ let start = true;
6
+ for (let i = 0; i < tokens.length; i++) {
7
+ const raw = tokens[i];
8
+ if (/^[\n;&|]+$/.test(raw)) {
9
+ start = true;
10
+ continue;
11
+ }
12
+ if (!start)
13
+ continue;
14
+ if (/^[A-Za-z_][A-Za-z0-9_]*=/.test(raw))
15
+ continue;
16
+ start = false;
17
+ const executable = raw.replace(/^['"]|['"]$/g, '').split('/').pop();
18
+ if (executable !== 'git' && executable !== 'gh')
19
+ continue;
20
+ let j = i + 1;
21
+ while (tokens[j]?.startsWith('-') === true) {
22
+ const option = tokens[j++];
23
+ if (['-C', '-c', '--git-dir', '--work-tree', '-R', '--repo', '--hostname'].includes(option))
24
+ j++;
25
+ }
26
+ const subcommand = tokens[j];
27
+ if (executable === 'git' && subcommand !== undefined && ['log', 'show', 'blame'].includes(subcommand))
28
+ result.add('git');
29
+ if (executable === 'gh' && subcommand !== undefined && ['pr', 'api'].includes(subcommand))
30
+ result.add('github');
31
+ }
32
+ return result;
33
+ }
34
+ //# sourceMappingURL=vcs-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vcs-command.js","sourceRoot":"","sources":["../../src/opencode-plugin/vcs-command.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,IAAI,EAAE,CAAC;IACpF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACvD,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QACnD,KAAK,GAAG,KAAK,CAAC;QACd,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACpE,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI;YAAE,SAAS;QAC1D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,CAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,CAAC,EAAE,CAAC;QACnG,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzH,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Pipeline Module
3
+ * Exports all pipeline components
4
+ */
5
+ export * from "./prenormalize.js";
6
+ export * from "./resolver.js";
7
+ export * from "./tagger.js";
8
+ export * from "./validator.js";
9
+ export * from "./semantic-enricher.js";
10
+ export * from "./semantic-data-loader.js";
11
+ export * from "./title-extractor.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC"}