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.
- package/LICENSE +22 -0
- package/README.en.md +191 -0
- package/README.md +191 -0
- package/dist/browser.d.ts +54 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +74 -0
- package/dist/browser.js.map +1 -0
- package/dist/core/anonymizer.d.ts +309 -0
- package/dist/core/anonymizer.d.ts.map +1 -0
- package/dist/core/anonymizer.js +555 -0
- package/dist/core/anonymizer.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/crypto/index.d.ts +6 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +6 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/pii-map-crypto.d.ts +114 -0
- package/dist/crypto/pii-map-crypto.d.ts.map +1 -0
- package/dist/crypto/pii-map-crypto.js +228 -0
- package/dist/crypto/pii-map-crypto.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/ner/bio-decoder.d.ts +64 -0
- package/dist/ner/bio-decoder.d.ts.map +1 -0
- package/dist/ner/bio-decoder.js +218 -0
- package/dist/ner/bio-decoder.js.map +1 -0
- package/dist/ner/index.d.ts +12 -0
- package/dist/ner/index.d.ts.map +1 -0
- package/dist/ner/index.js +12 -0
- package/dist/ner/index.js.map +1 -0
- package/dist/ner/inference-server-client.d.ts +81 -0
- package/dist/ner/inference-server-client.d.ts.map +1 -0
- package/dist/ner/inference-server-client.js +120 -0
- package/dist/ner/inference-server-client.js.map +1 -0
- package/dist/ner/inference-server-ner-model.d.ts +43 -0
- package/dist/ner/inference-server-ner-model.d.ts.map +1 -0
- package/dist/ner/inference-server-ner-model.js +119 -0
- package/dist/ner/inference-server-ner-model.js.map +1 -0
- package/dist/ner/model-manager.d.ts +111 -0
- package/dist/ner/model-manager.d.ts.map +1 -0
- package/dist/ner/model-manager.js +334 -0
- package/dist/ner/model-manager.js.map +1 -0
- package/dist/ner/ner-model.d.ts +172 -0
- package/dist/ner/ner-model.d.ts.map +1 -0
- package/dist/ner/ner-model.js +514 -0
- package/dist/ner/ner-model.js.map +1 -0
- package/dist/ner/onnx-runtime.browser.d.ts +46 -0
- package/dist/ner/onnx-runtime.browser.d.ts.map +1 -0
- package/dist/ner/onnx-runtime.browser.js +90 -0
- package/dist/ner/onnx-runtime.browser.js.map +1 -0
- package/dist/ner/onnx-runtime.d.ts +72 -0
- package/dist/ner/onnx-runtime.d.ts.map +1 -0
- package/dist/ner/onnx-runtime.js +132 -0
- package/dist/ner/onnx-runtime.js.map +1 -0
- package/dist/ner/token-window.d.ts +19 -0
- package/dist/ner/token-window.d.ts.map +1 -0
- package/dist/ner/token-window.js +101 -0
- package/dist/ner/token-window.js.map +1 -0
- package/dist/ner/tokenizer.d.ts +142 -0
- package/dist/ner/tokenizer.d.ts.map +1 -0
- package/dist/ner/tokenizer.js +362 -0
- package/dist/ner/tokenizer.js.map +1 -0
- package/dist/opencode-plugin/git-identity.d.ts +3 -0
- package/dist/opencode-plugin/git-identity.d.ts.map +1 -0
- package/dist/opencode-plugin/git-identity.js +37 -0
- package/dist/opencode-plugin/git-identity.js.map +1 -0
- package/dist/opencode-plugin/github-username.d.ts +3 -0
- package/dist/opencode-plugin/github-username.d.ts.map +1 -0
- package/dist/opencode-plugin/github-username.js +41 -0
- package/dist/opencode-plugin/github-username.js.map +1 -0
- package/dist/opencode-plugin/identity-recognizer.d.ts +5 -0
- package/dist/opencode-plugin/identity-recognizer.d.ts.map +1 -0
- package/dist/opencode-plugin/identity-recognizer.js +21 -0
- package/dist/opencode-plugin/identity-recognizer.js.map +1 -0
- package/dist/opencode-plugin/index.d.ts +7 -0
- package/dist/opencode-plugin/index.d.ts.map +1 -0
- package/dist/opencode-plugin/index.js +6 -0
- package/dist/opencode-plugin/index.js.map +1 -0
- package/dist/opencode-plugin/plugin.d.ts +39 -0
- package/dist/opencode-plugin/plugin.d.ts.map +1 -0
- package/dist/opencode-plugin/plugin.js +294 -0
- package/dist/opencode-plugin/plugin.js.map +1 -0
- package/dist/opencode-plugin/types.d.ts +33 -0
- package/dist/opencode-plugin/types.d.ts.map +1 -0
- package/dist/opencode-plugin/types.js +5 -0
- package/dist/opencode-plugin/types.js.map +1 -0
- package/dist/opencode-plugin/v2/anon-state.d.ts +12 -0
- package/dist/opencode-plugin/v2/anon-state.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/anon-state.js +14 -0
- package/dist/opencode-plugin/v2/anon-state.js.map +1 -0
- package/dist/opencode-plugin/v2/deep-rehydrate.d.ts +13 -0
- package/dist/opencode-plugin/v2/deep-rehydrate.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/deep-rehydrate.js +33 -0
- package/dist/opencode-plugin/v2/deep-rehydrate.js.map +1 -0
- package/dist/opencode-plugin/v2/index.d.ts +17 -0
- package/dist/opencode-plugin/v2/index.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/index.js +17 -0
- package/dist/opencode-plugin/v2/index.js.map +1 -0
- package/dist/opencode-plugin/v2/logger.d.ts +24 -0
- package/dist/opencode-plugin/v2/logger.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/logger.js +73 -0
- package/dist/opencode-plugin/v2/logger.js.map +1 -0
- package/dist/opencode-plugin/v2/options.d.ts +40 -0
- package/dist/opencode-plugin/v2/options.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/options.js +132 -0
- package/dist/opencode-plugin/v2/options.js.map +1 -0
- package/dist/opencode-plugin/v2/register-hooks.d.ts +43 -0
- package/dist/opencode-plugin/v2/register-hooks.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/register-hooks.js +160 -0
- package/dist/opencode-plugin/v2/register-hooks.js.map +1 -0
- package/dist/opencode-plugin/v2/rehydrate-tail.d.ts +101 -0
- package/dist/opencode-plugin/v2/rehydrate-tail.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/rehydrate-tail.js +147 -0
- package/dist/opencode-plugin/v2/rehydrate-tail.js.map +1 -0
- package/dist/opencode-plugin/v2/response-rehydrate.d.ts +78 -0
- package/dist/opencode-plugin/v2/response-rehydrate.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/response-rehydrate.js +210 -0
- package/dist/opencode-plugin/v2/response-rehydrate.js.map +1 -0
- package/dist/opencode-plugin/v2/scrub-messages.d.ts +39 -0
- package/dist/opencode-plugin/v2/scrub-messages.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/scrub-messages.js +260 -0
- package/dist/opencode-plugin/v2/scrub-messages.js.map +1 -0
- package/dist/opencode-plugin/v2/sessions.d.ts +17 -0
- package/dist/opencode-plugin/v2/sessions.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/sessions.js +23 -0
- package/dist/opencode-plugin/v2/sessions.js.map +1 -0
- package/dist/opencode-plugin/v2/sse.d.ts +101 -0
- package/dist/opencode-plugin/v2/sse.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/sse.js +235 -0
- package/dist/opencode-plugin/v2/sse.js.map +1 -0
- package/dist/opencode-plugin/v2/types.d.ts +188 -0
- package/dist/opencode-plugin/v2/types.d.ts.map +1 -0
- package/dist/opencode-plugin/v2/types.js +10 -0
- package/dist/opencode-plugin/v2/types.js.map +1 -0
- package/dist/opencode-plugin/vcs-command.d.ts +3 -0
- package/dist/opencode-plugin/vcs-command.d.ts.map +1 -0
- package/dist/opencode-plugin/vcs-command.js +34 -0
- package/dist/opencode-plugin/vcs-command.js.map +1 -0
- package/dist/pipeline/index.d.ts +12 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +12 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/prenormalize.d.ts +48 -0
- package/dist/pipeline/prenormalize.d.ts.map +1 -0
- package/dist/pipeline/prenormalize.js +94 -0
- package/dist/pipeline/prenormalize.js.map +1 -0
- package/dist/pipeline/resolver.d.ts +56 -0
- package/dist/pipeline/resolver.d.ts.map +1 -0
- package/dist/pipeline/resolver.js +239 -0
- package/dist/pipeline/resolver.js.map +1 -0
- package/dist/pipeline/semantic-data-loader.d.ts +171 -0
- package/dist/pipeline/semantic-data-loader.d.ts.map +1 -0
- package/dist/pipeline/semantic-data-loader.js +677 -0
- package/dist/pipeline/semantic-data-loader.js.map +1 -0
- package/dist/pipeline/semantic-enricher.d.ts +112 -0
- package/dist/pipeline/semantic-enricher.d.ts.map +1 -0
- package/dist/pipeline/semantic-enricher.js +322 -0
- package/dist/pipeline/semantic-enricher.js.map +1 -0
- package/dist/pipeline/tagger.d.ts +121 -0
- package/dist/pipeline/tagger.d.ts.map +1 -0
- package/dist/pipeline/tagger.js +545 -0
- package/dist/pipeline/tagger.js.map +1 -0
- package/dist/pipeline/title-extractor.d.ts +79 -0
- package/dist/pipeline/title-extractor.d.ts.map +1 -0
- package/dist/pipeline/title-extractor.js +801 -0
- package/dist/pipeline/title-extractor.js.map +1 -0
- package/dist/pipeline/validator.d.ts +65 -0
- package/dist/pipeline/validator.d.ts.map +1 -0
- package/dist/pipeline/validator.js +292 -0
- package/dist/pipeline/validator.js.map +1 -0
- package/dist/proxy/index.d.ts +13 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +12 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/providers/anthropic.d.ts +28 -0
- package/dist/proxy/providers/anthropic.d.ts.map +1 -0
- package/dist/proxy/providers/anthropic.js +265 -0
- package/dist/proxy/providers/anthropic.js.map +1 -0
- package/dist/proxy/providers/index.d.ts +19 -0
- package/dist/proxy/providers/index.d.ts.map +1 -0
- package/dist/proxy/providers/index.js +41 -0
- package/dist/proxy/providers/index.js.map +1 -0
- package/dist/proxy/providers/openai.d.ts +27 -0
- package/dist/proxy/providers/openai.d.ts.map +1 -0
- package/dist/proxy/providers/openai.js +203 -0
- package/dist/proxy/providers/openai.js.map +1 -0
- package/dist/proxy/providers/streaming-tool-loop.d.ts +12 -0
- package/dist/proxy/providers/streaming-tool-loop.d.ts.map +1 -0
- package/dist/proxy/providers/streaming-tool-loop.js +223 -0
- package/dist/proxy/providers/streaming-tool-loop.js.map +1 -0
- package/dist/proxy/providers/types.d.ts +109 -0
- package/dist/proxy/providers/types.d.ts.map +1 -0
- package/dist/proxy/providers/types.js +2 -0
- package/dist/proxy/providers/types.js.map +1 -0
- package/dist/proxy/proxy-server.d.ts +61 -0
- package/dist/proxy/proxy-server.d.ts.map +1 -0
- package/dist/proxy/proxy-server.js +146 -0
- package/dist/proxy/proxy-server.js.map +1 -0
- package/dist/proxy/rehydra-fetch.d.ts +35 -0
- package/dist/proxy/rehydra-fetch.d.ts.map +1 -0
- package/dist/proxy/rehydra-fetch.js +631 -0
- package/dist/proxy/rehydra-fetch.js.map +1 -0
- package/dist/proxy/rehydra-proxy.d.ts +40 -0
- package/dist/proxy/rehydra-proxy.d.ts.map +1 -0
- package/dist/proxy/rehydra-proxy.js +150 -0
- package/dist/proxy/rehydra-proxy.js.map +1 -0
- package/dist/proxy/sse-parser.d.ts +59 -0
- package/dist/proxy/sse-parser.d.ts.map +1 -0
- package/dist/proxy/sse-parser.js +112 -0
- package/dist/proxy/sse-parser.js.map +1 -0
- package/dist/proxy/system-instruction.d.ts +19 -0
- package/dist/proxy/system-instruction.d.ts.map +1 -0
- package/dist/proxy/system-instruction.js +33 -0
- package/dist/proxy/system-instruction.js.map +1 -0
- package/dist/proxy/tool-loop-stream.d.ts +7 -0
- package/dist/proxy/tool-loop-stream.d.ts.map +1 -0
- package/dist/proxy/tool-loop-stream.js +65 -0
- package/dist/proxy/tool-loop-stream.js.map +1 -0
- package/dist/proxy/types.d.ts +138 -0
- package/dist/proxy/types.d.ts.map +1 -0
- package/dist/proxy/types.js +5 -0
- package/dist/proxy/types.js.map +1 -0
- package/dist/proxy/wrap-client.d.ts +47 -0
- package/dist/proxy/wrap-client.d.ts.map +1 -0
- package/dist/proxy/wrap-client.js +70 -0
- package/dist/proxy/wrap-client.js.map +1 -0
- package/dist/recognizers/address.d.ts +2 -0
- package/dist/recognizers/address.d.ts.map +1 -0
- package/dist/recognizers/address.js +23 -0
- package/dist/recognizers/address.js.map +1 -0
- package/dist/recognizers/base.d.ts +78 -0
- package/dist/recognizers/base.d.ts.map +1 -0
- package/dist/recognizers/base.js +100 -0
- package/dist/recognizers/base.js.map +1 -0
- package/dist/recognizers/bic-swift.d.ts +10 -0
- package/dist/recognizers/bic-swift.d.ts.map +1 -0
- package/dist/recognizers/bic-swift.js +107 -0
- package/dist/recognizers/bic-swift.js.map +1 -0
- package/dist/recognizers/credit-card.d.ts +32 -0
- package/dist/recognizers/credit-card.d.ts.map +1 -0
- package/dist/recognizers/credit-card.js +160 -0
- package/dist/recognizers/credit-card.js.map +1 -0
- package/dist/recognizers/custom-id.d.ts +28 -0
- package/dist/recognizers/custom-id.d.ts.map +1 -0
- package/dist/recognizers/custom-id.js +116 -0
- package/dist/recognizers/custom-id.js.map +1 -0
- package/dist/recognizers/date.d.ts +10 -0
- package/dist/recognizers/date.d.ts.map +1 -0
- package/dist/recognizers/date.js +228 -0
- package/dist/recognizers/date.js.map +1 -0
- package/dist/recognizers/email.d.ts +10 -0
- package/dist/recognizers/email.d.ts.map +1 -0
- package/dist/recognizers/email.js +75 -0
- package/dist/recognizers/email.js.map +1 -0
- package/dist/recognizers/iban.d.ts +14 -0
- package/dist/recognizers/iban.d.ts.map +1 -0
- package/dist/recognizers/iban.js +67 -0
- package/dist/recognizers/iban.js.map +1 -0
- package/dist/recognizers/index.d.ts +25 -0
- package/dist/recognizers/index.d.ts.map +1 -0
- package/dist/recognizers/index.js +53 -0
- package/dist/recognizers/index.js.map +1 -0
- package/dist/recognizers/ip-address.d.ts +14 -0
- package/dist/recognizers/ip-address.d.ts.map +1 -0
- package/dist/recognizers/ip-address.js +183 -0
- package/dist/recognizers/ip-address.js.map +1 -0
- package/dist/recognizers/phone.d.ts +10 -0
- package/dist/recognizers/phone.d.ts.map +1 -0
- package/dist/recognizers/phone.js +145 -0
- package/dist/recognizers/phone.js.map +1 -0
- package/dist/recognizers/postal-code.d.ts +16 -0
- package/dist/recognizers/postal-code.d.ts.map +1 -0
- package/dist/recognizers/postal-code.js +42 -0
- package/dist/recognizers/postal-code.js.map +1 -0
- package/dist/recognizers/registry.d.ts +59 -0
- package/dist/recognizers/registry.d.ts.map +1 -0
- package/dist/recognizers/registry.js +113 -0
- package/dist/recognizers/registry.js.map +1 -0
- package/dist/recognizers/secrets/api-key.d.ts +6 -0
- package/dist/recognizers/secrets/api-key.d.ts.map +1 -0
- package/dist/recognizers/secrets/api-key.js +40 -0
- package/dist/recognizers/secrets/api-key.js.map +1 -0
- package/dist/recognizers/secrets/aws-credentials.d.ts +7 -0
- package/dist/recognizers/secrets/aws-credentials.d.ts.map +1 -0
- package/dist/recognizers/secrets/aws-credentials.js +68 -0
- package/dist/recognizers/secrets/aws-credentials.js.map +1 -0
- package/dist/recognizers/secrets/config-secret.d.ts +8 -0
- package/dist/recognizers/secrets/config-secret.d.ts.map +1 -0
- package/dist/recognizers/secrets/config-secret.js +59 -0
- package/dist/recognizers/secrets/config-secret.js.map +1 -0
- package/dist/recognizers/secrets/connection-string.d.ts +6 -0
- package/dist/recognizers/secrets/connection-string.d.ts.map +1 -0
- package/dist/recognizers/secrets/connection-string.js +40 -0
- package/dist/recognizers/secrets/connection-string.js.map +1 -0
- package/dist/recognizers/secrets/env-var.d.ts +8 -0
- package/dist/recognizers/secrets/env-var.d.ts.map +1 -0
- package/dist/recognizers/secrets/env-var.js +54 -0
- package/dist/recognizers/secrets/env-var.js.map +1 -0
- package/dist/recognizers/secrets/index.d.ts +22 -0
- package/dist/recognizers/secrets/index.d.ts.map +1 -0
- package/dist/recognizers/secrets/index.js +41 -0
- package/dist/recognizers/secrets/index.js.map +1 -0
- package/dist/recognizers/secrets/jwt.d.ts +6 -0
- package/dist/recognizers/secrets/jwt.d.ts.map +1 -0
- package/dist/recognizers/secrets/jwt.js +47 -0
- package/dist/recognizers/secrets/jwt.js.map +1 -0
- package/dist/recognizers/secrets/key-patterns.d.ts +10 -0
- package/dist/recognizers/secrets/key-patterns.d.ts.map +1 -0
- package/dist/recognizers/secrets/key-patterns.js +15 -0
- package/dist/recognizers/secrets/key-patterns.js.map +1 -0
- package/dist/recognizers/secrets/literal-value.d.ts +10 -0
- package/dist/recognizers/secrets/literal-value.d.ts.map +1 -0
- package/dist/recognizers/secrets/literal-value.js +48 -0
- package/dist/recognizers/secrets/literal-value.js.map +1 -0
- package/dist/recognizers/secrets/private-key.d.ts +6 -0
- package/dist/recognizers/secrets/private-key.d.ts.map +1 -0
- package/dist/recognizers/secrets/private-key.js +16 -0
- package/dist/recognizers/secrets/private-key.js.map +1 -0
- package/dist/recognizers/url.d.ts +14 -0
- package/dist/recognizers/url.d.ts.map +1 -0
- package/dist/recognizers/url.js +121 -0
- package/dist/recognizers/url.js.map +1 -0
- package/dist/storage/browser.d.ts +13 -0
- package/dist/storage/browser.d.ts.map +1 -0
- package/dist/storage/browser.js +13 -0
- package/dist/storage/browser.js.map +1 -0
- package/dist/storage/in-memory.d.ts +60 -0
- package/dist/storage/in-memory.d.ts.map +1 -0
- package/dist/storage/in-memory.js +108 -0
- package/dist/storage/in-memory.js.map +1 -0
- package/dist/storage/index.d.ts +11 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +11 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/indexeddb.d.ts +69 -0
- package/dist/storage/indexeddb.d.ts.map +1 -0
- package/dist/storage/indexeddb.js +274 -0
- package/dist/storage/indexeddb.js.map +1 -0
- package/dist/storage/session-base.d.ts +34 -0
- package/dist/storage/session-base.d.ts.map +1 -0
- package/dist/storage/session-base.js +122 -0
- package/dist/storage/session-base.js.map +1 -0
- package/dist/storage/session.d.ts +19 -0
- package/dist/storage/session.d.ts.map +1 -0
- package/dist/storage/session.js +31 -0
- package/dist/storage/session.js.map +1 -0
- package/dist/storage/sqlite.d.ts +80 -0
- package/dist/storage/sqlite.d.ts.map +1 -0
- package/dist/storage/sqlite.js +255 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/storage/types.d.ts +208 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +6 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/streaming/anonymizer-stream.d.ts +63 -0
- package/dist/streaming/anonymizer-stream.d.ts.map +1 -0
- package/dist/streaming/anonymizer-stream.js +184 -0
- package/dist/streaming/anonymizer-stream.js.map +1 -0
- package/dist/streaming/index.d.ts +9 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +8 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/streaming/sentence-buffer.d.ts +78 -0
- package/dist/streaming/sentence-buffer.d.ts.map +1 -0
- package/dist/streaming/sentence-buffer.js +239 -0
- package/dist/streaming/sentence-buffer.js.map +1 -0
- package/dist/streaming/stream-factory.d.ts +38 -0
- package/dist/streaming/stream-factory.d.ts.map +1 -0
- package/dist/streaming/stream-factory.js +69 -0
- package/dist/streaming/stream-factory.js.map +1 -0
- package/dist/streaming/types.d.ts +121 -0
- package/dist/streaming/types.d.ts.map +1 -0
- package/dist/streaming/types.js +5 -0
- package/dist/streaming/types.js.map +1 -0
- package/dist/types/index.d.ts +269 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +95 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/pii-types.d.ts +64 -0
- package/dist/types/pii-types.d.ts.map +1 -0
- package/dist/types/pii-types.js +153 -0
- package/dist/types/pii-types.js.map +1 -0
- package/dist/utils/iban-checksum.d.ts +23 -0
- package/dist/utils/iban-checksum.d.ts.map +1 -0
- package/dist/utils/iban-checksum.js +106 -0
- package/dist/utils/iban-checksum.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json-walk.d.ts +21 -0
- package/dist/utils/json-walk.d.ts.map +1 -0
- package/dist/utils/json-walk.js +44 -0
- package/dist/utils/json-walk.js.map +1 -0
- package/dist/utils/luhn.d.ts +17 -0
- package/dist/utils/luhn.d.ts.map +1 -0
- package/dist/utils/luhn.js +55 -0
- package/dist/utils/luhn.js.map +1 -0
- package/dist/utils/offsets.d.ts +86 -0
- package/dist/utils/offsets.d.ts.map +1 -0
- package/dist/utils/offsets.js +124 -0
- package/dist/utils/offsets.js.map +1 -0
- package/dist/utils/path.d.ts +34 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +96 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/regex.d.ts +11 -0
- package/dist/utils/regex.d.ts.map +1 -0
- package/dist/utils/regex.js +14 -0
- package/dist/utils/regex.js.map +1 -0
- package/dist/utils/storage-browser.d.ts +51 -0
- package/dist/utils/storage-browser.d.ts.map +1 -0
- package/dist/utils/storage-browser.js +381 -0
- package/dist/utils/storage-browser.js.map +1 -0
- package/dist/utils/storage-node.d.ts +51 -0
- package/dist/utils/storage-node.d.ts.map +1 -0
- package/dist/utils/storage-node.js +153 -0
- package/dist/utils/storage-node.js.map +1 -0
- package/dist/utils/storage.browser.d.ts +75 -0
- package/dist/utils/storage.browser.d.ts.map +1 -0
- package/dist/utils/storage.browser.js +69 -0
- package/dist/utils/storage.browser.js.map +1 -0
- package/dist/utils/storage.d.ts +73 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/storage.js +69 -0
- package/dist/utils/storage.js.map +1 -0
- 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 @@
|
|
|
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"}
|