rehydra 0.15.0 → 0.16.1

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 (33) hide show
  1. package/dist/core/anonymizer.d.ts +10 -0
  2. package/dist/core/anonymizer.d.ts.map +1 -1
  3. package/dist/core/anonymizer.js +51 -25
  4. package/dist/core/anonymizer.js.map +1 -1
  5. package/dist/opencode-plugin/core.d.ts +55 -0
  6. package/dist/opencode-plugin/core.d.ts.map +1 -0
  7. package/dist/opencode-plugin/core.js +337 -0
  8. package/dist/opencode-plugin/core.js.map +1 -0
  9. package/dist/opencode-plugin/plugin-v2.d.ts +1 -2
  10. package/dist/opencode-plugin/plugin-v2.d.ts.map +1 -1
  11. package/dist/opencode-plugin/plugin-v2.js +26 -245
  12. package/dist/opencode-plugin/plugin-v2.js.map +1 -1
  13. package/dist/opencode-plugin/plugin.d.ts +0 -9
  14. package/dist/opencode-plugin/plugin.d.ts.map +1 -1
  15. package/dist/opencode-plugin/plugin.js +26 -251
  16. package/dist/opencode-plugin/plugin.js.map +1 -1
  17. package/dist/opencode-plugin/types.d.ts +7 -0
  18. package/dist/opencode-plugin/types.d.ts.map +1 -1
  19. package/dist/proxy/providers/anthropic.d.ts.map +1 -1
  20. package/dist/proxy/providers/anthropic.js +16 -0
  21. package/dist/proxy/providers/anthropic.js.map +1 -1
  22. package/dist/proxy/providers/json-strings.d.ts +16 -0
  23. package/dist/proxy/providers/json-strings.d.ts.map +1 -0
  24. package/dist/proxy/providers/json-strings.js +30 -0
  25. package/dist/proxy/providers/json-strings.js.map +1 -0
  26. package/dist/proxy/providers/openai.d.ts.map +1 -1
  27. package/dist/proxy/providers/openai.js +35 -0
  28. package/dist/proxy/providers/openai.js.map +1 -1
  29. package/dist/recognizers/registry.d.ts +4 -0
  30. package/dist/recognizers/registry.d.ts.map +1 -1
  31. package/dist/recognizers/registry.js +12 -0
  32. package/dist/recognizers/registry.js.map +1 -1
  33. package/package.json +1 -1
@@ -200,6 +200,8 @@ export declare class Anonymizer {
200
200
  private sessionFactory;
201
201
  private onValidationWarning;
202
202
  private tagFormat;
203
+ private literalRecognizer;
204
+ private secretValuesKey;
203
205
  constructor(config?: AnonymizerConfig, sessionFactory?: SessionFactory);
204
206
  /**
205
207
  * Returns the resolved tag format configuration
@@ -219,6 +221,14 @@ export declare class Anonymizer {
219
221
  * @returns Anonymization result with anonymized text and encrypted PII map
220
222
  */
221
223
  anonymize(text: string, locale?: string, policy?: Partial<AnonymizationPolicy>, existingPiiMap?: RawPIIMap): Promise<AnonymizationResult>;
224
+ /**
225
+ * Re-reads `secrets.envFiles`, resolving globs again, and updates the
226
+ * values matched as ENV_VAR_SECRET.
227
+ * @returns Whether the set of secret values changed
228
+ */
229
+ reloadSecrets(): Promise<boolean>;
230
+ private readSecretValues;
231
+ private applySecretValues;
222
232
  /**
223
233
  * Disposes of resources
224
234
  */
@@ -1 +1 @@
1
- {"version":3,"file":"anonymizer.d.ts","sourceRoot":"","sources":["../../src/core/anonymizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anonymizer.d.ts","sourceRoot":"","sources":["../../src/core/anonymizer.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,8 @@ export class Anonymizer {
65
65
  sessionFactory;
66
66
  onValidationWarning;
67
67
  tagFormat;
68
+ literalRecognizer = null;
69
+ secretValuesKey = null;
68
70
  constructor(config = {}, sessionFactory) {
69
71
  this.registry = config.registry ?? createDefaultRegistry();
70
72
  this.mode = config.mode ?? "pseudonymize";
@@ -246,31 +248,7 @@ export class Anonymizer {
246
248
  }
247
249
  // Handle secrets .env file loading and literal value matching
248
250
  if (this.secretsConfig.enabled) {
249
- const literalValues = [
250
- ...(this.secretsConfig.redactValues ?? []),
251
- ];
252
- const minLength = this.secretsConfig.minValueLength ?? 4;
253
- // Parse .env files if provided
254
- if (this.secretsConfig.envFiles !== undefined && this.secretsConfig.envFiles.length > 0) {
255
- const storage = await getStorageProvider();
256
- const envFiles = storage.resolveFiles !== undefined
257
- ? await storage.resolveFiles(this.secretsConfig.envFiles, this.secretsConfig.envBaseDirectory)
258
- : this.secretsConfig.envFiles;
259
- for (const envFile of envFiles) {
260
- try {
261
- const content = await storage.readTextFile(envFile);
262
- const parsed = parseEnvFile(content);
263
- literalValues.push(...parsed);
264
- }
265
- catch {
266
- // Skip files that can't be read
267
- }
268
- }
269
- }
270
- // Register literal value recognizer if we have values
271
- if (literalValues.length > 0) {
272
- this.registry.register(createLiteralValueRecognizer(literalValues, minLength));
273
- }
251
+ this.applySecretValues(await this.readSecretValues());
274
252
  }
275
253
  this.modelVersion = this.nerModel.version;
276
254
  this.initialized = true;
@@ -372,6 +350,54 @@ export class Anonymizer {
372
350
  stats,
373
351
  };
374
352
  }
353
+ /**
354
+ * Re-reads `secrets.envFiles`, resolving globs again, and updates the
355
+ * values matched as ENV_VAR_SECRET.
356
+ * @returns Whether the set of secret values changed
357
+ */
358
+ async reloadSecrets() {
359
+ if (!this.secretsConfig.enabled)
360
+ return false;
361
+ if (!this.initialized) {
362
+ await this.initialize();
363
+ return false;
364
+ }
365
+ return this.applySecretValues(await this.readSecretValues());
366
+ }
367
+ async readSecretValues() {
368
+ const values = [...(this.secretsConfig.redactValues ?? [])];
369
+ const patterns = this.secretsConfig.envFiles;
370
+ if (patterns === undefined || patterns.length === 0)
371
+ return values;
372
+ const storage = await getStorageProvider();
373
+ const envFiles = storage.resolveFiles !== undefined
374
+ ? await storage.resolveFiles(patterns, this.secretsConfig.envBaseDirectory)
375
+ : patterns;
376
+ for (const envFile of envFiles) {
377
+ try {
378
+ values.push(...parseEnvFile(await storage.readTextFile(envFile)));
379
+ }
380
+ catch {
381
+ // Skip files that can't be read
382
+ }
383
+ }
384
+ return values;
385
+ }
386
+ applySecretValues(values) {
387
+ const key = JSON.stringify(values);
388
+ if (key === this.secretValuesKey)
389
+ return false;
390
+ this.secretValuesKey = key;
391
+ if (this.literalRecognizer !== null) {
392
+ this.registry.remove(this.literalRecognizer);
393
+ this.literalRecognizer = null;
394
+ }
395
+ if (values.length > 0) {
396
+ this.literalRecognizer = createLiteralValueRecognizer(values, this.secretsConfig.minValueLength ?? 4);
397
+ this.registry.register(this.literalRecognizer);
398
+ }
399
+ return true;
400
+ }
375
401
  /**
376
402
  * Disposes of resources
377
403
  */
@@ -1 +1 @@
1
- {"version":3,"file":"anonymizer.js","sourceRoot":"","sources":["../../src/core/anonymizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anonymizer.js","sourceRoot":"","sources":["../../src/core/anonymizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EASL,OAAO,EAEP,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EAErB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAGvF,OAAO,EAEL,YAAY,EACZ,cAAc,EACd,6BAA6B,GAE9B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,WAAW,EACX,YAAY,GAEb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,WAAW,EACX,mBAAmB,GAEpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,aAAa,EACb,WAAW,GAEZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAc9C;;;GAGG;AACH,SAAS,mBAAmB,CAC1B,IAAyB,EACzB,OAAqC;IAErC,sCAAsC;IACtC,IAAI,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;IACrD,IAAI,OAAO,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;QAC/C,oBAAoB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAC7D,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;QACvD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB;QACtE,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe;QAChE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;QACvD,oBAAoB;QACpB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB;QACnE,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;QAC7D,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB;QACnE,sBAAsB,EACpB,OAAO,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB;QAC/D,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;QAC7D,qBAAqB,EACnB,OAAO,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB;QAC7D,qBAAqB,EACnB,OAAO,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB;KAC9D,CAAC;AACJ,CAAC;AAsMD;;;GAGG;AACH,MAAM,OAAO,UAAU;IACb,QAAQ,CAAqB;IAC7B,QAAQ,GAAqB,IAAI,CAAC;IAClC,SAAS,CAAY;IACrB,cAAc,CAAiB;IAC/B,aAAa,CAAgB;IAC7B,IAAI,CAAoB;IACxB,WAAW,CAAqB;IAChC,kBAAkB,CAA4B;IAC9C,aAAa,CAAsB;IACnC,YAAY,CAAS;IACrB,aAAa,CAAS;IACtB,WAAW,GAAG,KAAK,CAAC;IACpB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,cAAc,CAAwB;IACtC,mBAAmB,CAAwE;IAC3F,SAAS,CAAY;IACrB,iBAAiB,GAAsB,IAAI,CAAC;IAC5C,eAAe,GAAkB,IAAI,CAAC;IAE9C,YAAY,SAA2B,EAAE,EAAE,cAA+B;QACxE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,qBAAqB,EAAE,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC;QAC9C,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,IAAI,CAAC;QAC5D,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa;YACvC,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC;YAClE,CAAC,CAAC,mBAAmB,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC;QAExD,6BAA6B;QAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACpD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC;QAEnD,uDAAuD;QACvD,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;YACvE,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAC5C,IAAI,CAAC,SAAS,CAAC,UAAU,CAC1B,EAAE,CAAC;gBACF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,aAAa,CAAC,GAAG,CAAC,IAAe,EAAE,SAAS,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,IAAI,CAAC,aAAa,GAAG;gBACnB,GAAG,IAAI,CAAC,aAAa;gBACrB,oBAAoB,EAAE,aAAa;aACpC,CAAC;QACJ,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAE5D,+DAA+D;QAC/D,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG;gBACnB,GAAG,IAAI,CAAC,aAAa;gBACrB,qBAAqB,EAAE,IAAI;aAC5B,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAE1D,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC/B,4DAA4D;YAC5D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAC9D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;YACxE,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;gBAC1C,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC7B,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,CAAC,aAAa,GAAG;gBACnB,GAAG,IAAI,CAAC,aAAa;gBACrB,YAAY;gBACZ,iBAAiB;aAClB,CAAC;YAEF,8BAA8B;YAC9B,KAAK,MAAM,UAAU,IAAI,uBAAuB,CAAC;gBAC/C,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB;gBACvD,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc;aAClD,CAAC,EAAE,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,mDAAmD;QACnD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QACrC,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;YACzD,sDAAsD;YACtD,IACE,IAAI,CAAC,SAAS,CAAC,kBAAkB,KAAK,SAAS;gBAC/C,IAAI,CAAC,SAAS,CAAC,kBAAkB,KAAK,EAAE,EACxC,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,2EAA2E;oBACzE,YAAY;oBACZ,wBAAwB;oBACxB,cAAc;oBACd,4BAA4B;oBAC5B,sCAAsC;oBACtC,sDAAsD;oBACtD,SAAS;oBACT,MAAM,CACT,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,6BAA6B,CAAC;gBAC5C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB;gBAC5C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAsB;gBAC9C,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;aAClC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5C,0BAA0B;YAC1B,IACE,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS;gBACtC,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,EAAE;gBAC/B,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS;gBACtC,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,EAAE,EAC/B,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACxE,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;gBACnC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;gBACnC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc;gBAC7C,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY;gBACzC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB;gBACvD,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB;gBACvD,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB;gBACrD,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW;aACxC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,gEAAgE;YAChE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,WAAW,CAC9D,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB;gBACE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,IAAI;gBACjD,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB;gBAC7C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;aAClC,CACF,CAAC;YAEF,sEAAsE;YACtE,oDAAoD;YACpD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAEvE,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;gBAC7B,SAAS;gBACT,SAAS;gBACT,QAAQ;gBACR,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc;gBAC7C,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY;gBACzC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB;gBACvD,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB;gBACvD,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB;gBACrD,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW;aACxC,CAAC,CAAC;QACL,CAAC;QAED,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,sBAAsB,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,mBAAmB,CAAC,CAAC;QACjD,CAAC;QAED,wCAAwC;QACxC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,IAAI,CAAC;YAE9D,qCAAqC;YACrC,MAAM,aAAa,GAAG,MAAM,uBAAuB,EAAE,CAAC;YACtD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CACb,mEAAmE;wBACjE,mCAAmC;wBACnC,6EAA6E;wBAC7E,gCAAgC;wBAChC,sDAAsD,CACzD,CAAC;gBACJ,CAAC;gBAED,yBAAyB;gBACzB,MAAM,kBAAkB,CAAC;oBACvB,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,kBAAkB;oBAClD,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ;iBACvC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,8BAA8B,CAAC,CAAC;YACjE,CAAC;YAED,iEAAiE;YACjE,MAAM,gBAAgB,EAAE,CAAC;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;QAED,8DAA8D;QAC9D,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,CACb,IAAY,EACZ,MAAe,EACf,MAAqC,EACrC,cAA0B;QAE1B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,4DAA4D;QAC5D,6DAA6D;QAC7D,2DAA2D;QAC3D,MAAM,eAAe,GACnB,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;YACjD,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QAEzB,6BAA6B;QAC7B,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAE1C,gCAAgC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAE5E,wBAAwB;QACxB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAS,CAAC,OAAO,CAC5C,cAAc,EACd,eAAe,CAChB,CAAC;QACF,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC;QAEnC,qCAAqC;QACrC,MAAM,eAAe,GAAG,eAAe,CACrC,YAAY,EACZ,UAAU,EACV,eAAe,EACf,cAAc,CACf,CAAC;QAEF,iFAAiF;QACjF,kEAAkE;QAClE,MAAM,aAAa,GACjB,eAAe,CAAC,qBAAqB,KAAK,IAAI;YAC5C,CAAC,CAAC,uBAAuB,CAAC,eAAe,EAAE,cAAc,CAAC;YAC1D,CAAC,CAAC,eAAe,CAAC;QAEtB,8EAA8E;QAC9E,wFAAwF;QACxF,MAAM,qBAAqB,GAAG,eAAe,CAAC,qBAAqB;YACjE,CAAC,CAAC,sBAAsB,CAAC,aAAa,EAAE,cAAc,CAAC;YACvD,CAAC,CAAC,aAAa,CAAC;QAElB,yDAAyD;QACzD,8DAA8D;QAC9D,MAAM,eAAe,GAAG,eAAe,CAAC,qBAAqB;YAC3D,CAAC,CAAC,eAAe,CAAC,qBAAqB,EAAE;gBACrC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,wBAAwB;aAC1F,CAAC;YACJ,CAAC,CAAC,qBAAqB,CAAC;QAE1B,8DAA8D;QAC9D,MAAM,oBAAoB,GACxB,eAAe,CAAC,qBAAqB;YACrC,eAAe,CAAC,qBAAqB,CAAC,IAAI,GAAG,CAAC;YAC5C,CAAC,CAAC,eAAe,CAAC,MAAM,CACpB,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ;gBAC9B,CAAC,eAAe,CAAC,qBAAqB,CAAC,GAAG,CACxC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,SAAS,CAClC,CACJ;YACH,CAAC,CAAC,eAAe,CAAC;QAEtB,yCAAyC;QACzC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,CACtD,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,IAAI,CAAC,SAAS,CACf,CAAC;QAEF,0BAA0B;QAC1B,MAAM,UAAU,GAAG,cAAc,CAC/B,cAAc,EACd,QAAQ,EACR,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EACzB,eAAe,EACf,IAAI,CAAC,SAAS,CACf,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/C,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;QAED,sBAAsB;QACtB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,KAAK,GAAuB;YAChC,YAAY,EAAE,mBAAmB,CAAC,QAAQ,CAAC;YAC3C,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC9B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,gBAAgB,EAAE,OAAO,GAAG,SAAS;YACrC,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,YAAY,EAAE,SAAS,CAAC,SAAS;YACjC,gBAAgB,EAAE,SAAS,CAAC,aAAa;SAC1C,CAAC;QAEF,2DAA2D;QAC3D,MAAM,YAAY,GAAuC,QAAQ,CAAC,GAAG,CACnE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAC3C,CAAC;QAEF,sDAAsD;QACtD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,gDAAgD;YAChD,OAAO;gBACL,cAAc;gBACd,QAAQ,EAAE,YAAY;gBACtB,KAAK;aACN,CAAC;QACJ,CAAC;QAED,iDAAiD;QACjD,MAAM,aAAa,GACjB,IAAI,CAAC,WAAW,KAAK,IAAI;YACvB,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACjC,CAAC,CAAC,WAAW,EAAE,CAAC;QAEpB,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEnE,OAAO;YACL,cAAc;YACd,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,eAAe;YACvB,KAAK;SACN,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAEnE,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,KAAK,SAAS;YACjD,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;YAC3E,CAAC,CAAC,QAAQ,CAAC;QACb,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC;YAAC,MAAM,CAAC;gBACP,gCAAgC;YAClC,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,iBAAiB,CAAC,MAAgB;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,IAAI,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAE3B,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC7C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,GAAG,4BAA4B,CACnD,MAAM,EACN,IAAI,CAAC,aAAa,CAAC,cAAc,IAAI,CAAC,CACvC,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,SAAiB;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,+DAA+D;gBAC7D,2EAA2E;gBAC3E,iCAAiC;gBACjC,iFAAiF;gBACjF,2CAA2C;gBAC3C,6BAA6B;gBAC7B,6DAA6D;gBAC7D,+CAA+C;gBAC/C,OAAO,CACV,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,+DAA+D;gBAC7D,mDAAmD;gBACnD,2CAA2C;gBAC3C,6DAA6D;gBAC7D,+CAA+C;gBAC/C,OAAO,CACV,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,wDAAwD;gBACtD,6EAA6E;gBAC7E,8CAA8C;gBAC9C,2CAA2C;gBAC3C,oCAAoC;gBACpC,+CAA+C;gBAC/C,OAAO,CACV,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CACxB,IAAI,EACJ,SAAS,EACT,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,WAAW,CACjB,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAyB,EACzB,cAA+B;IAE/B,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,MAAe,EACf,MAAqC;IAErC,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;IAE9B,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,MAAqC;IAErC,kCAAkC;IAClC,MAAM,eAAe,GAAiC;QACpD,GAAG,MAAM;QACT,eAAe,EAAE,IAAI,GAAG,EAAE,EAAE,wBAAwB;KACrD,CAAC;IAEF,OAAO,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,SAAwE,EACxE,MAAqC;IAErC,MAAM,UAAU,GAAG,gBAAgB,CAAC;QAClC,GAAG,EAAE;YACH,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,WAAW;YACnC,GAAG,SAAS;SACb;KACF,CAAC,CAAC;IAEH,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;IAE9B,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;YAAS,CAAC;QACT,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,gCAAgC;QAChC,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAExD,2DAA2D;QAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CACzB,8DAA8D,CAC/D,CAAC;QACF,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Setup shared by the OpenCode 1 and OpenCode 2 plugins: options, the
3
+ * anonymizer and its policies, per-session PII maps, scrubbing, env file
4
+ * reloading, and tool argument handling.
5
+ */
6
+ import { AnonymizerSessionImpl } from "../storage/session-base.js";
7
+ import type { AnonymizationPolicy } from "../types/index.js";
8
+ import type { RehydraPluginOptions } from "./types.js";
9
+ export type LogLevel = "debug" | "info" | "warn" | "error";
10
+ export type Log = (level: LogLevel, message: string, extra?: Record<string, unknown>) => void;
11
+ /**
12
+ * Merges options passed by OpenCode (opencode.json) with factory options.
13
+ * Factory options take precedence per key.
14
+ */
15
+ export declare function mergeOptions(configOptions: unknown, factoryOptions?: RehydraPluginOptions): RehydraPluginOptions;
16
+ /**
17
+ * Recursively rehydrate all string values containing PII tags.
18
+ * See deepMapStrings for what `inPlace` does.
19
+ */
20
+ export declare function deepRehydrate(value: unknown, session: AnonymizerSessionImpl, tagPrefix: string, inPlace: boolean): Promise<unknown>;
21
+ /** Scrubs the messages of one model request and logs what it found. */
22
+ export interface RequestScrub {
23
+ /** Anonymizes a string. */
24
+ text(sessionID: string, text: string, policy?: Partial<AnonymizationPolicy>): Promise<string>;
25
+ /** Anonymizes every string in a value, returning a copy so the original stays intact. */
26
+ copy(sessionID: string, value: unknown, policy?: Partial<AnonymizationPolicy>): Promise<unknown>;
27
+ /** Logs the totals for the request. */
28
+ finish(messageCount: number): void;
29
+ }
30
+ export interface RehydraCore {
31
+ readonly tagPrefix: string;
32
+ readonly rehydraInstruction: string;
33
+ /** Whether any request so far had something scrubbed. */
34
+ readonly hasAnonymized: boolean;
35
+ startRequest(): RequestScrub;
36
+ /** Policy for a tool's output, widened for Git and GitHub CLI commands when vcsIdentities is on. */
37
+ outputPolicy(command: unknown): Partial<AnonymizationPolicy> | undefined;
38
+ /** Reloads env file secrets when envRefreshInterval has passed since the last check. */
39
+ refreshSecrets(): Promise<void>;
40
+ /** Restores real values in tool arguments, or keeps them redacted for redactTools. */
41
+ beforeTool(tool: string, sessionID: string, callID: string, args: unknown): Promise<unknown>;
42
+ /** Restores real values in a tool result. */
43
+ afterTool(tool: string, sessionID: string, callID: string, result: unknown): Promise<unknown>;
44
+ rehydrateText(sessionID: string, text: string): Promise<string>;
45
+ /** Drops all PII maps. */
46
+ dispose(): void;
47
+ }
48
+ export declare function createRehydraCore(options: RehydraPluginOptions, context: {
49
+ directory: string;
50
+ log: Log;
51
+ info?: Record<string, unknown>;
52
+ /** Edit tool args and results in place (OpenCode 1) instead of returning copies (OpenCode 2). */
53
+ mutateToolValues?: boolean;
54
+ }): Promise<RehydraCore>;
55
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/opencode-plugin/core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAInE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAe,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAQpE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAS9F;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,OAAO,EACtB,cAAc,CAAC,EAAE,oBAAoB,GACpC,oBAAoB,CAEtB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAiED,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9F,yFAAyF;IACzF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjG,uCAAuC;IACvC,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,yDAAyD;IACzD,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,YAAY,IAAI,YAAY,CAAC;IAC7B,oGAAoG;IACpG,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC;IACzE,wFAAwF;IACxF,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,sFAAsF;IACtF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7F,6CAA6C;IAC7C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9F,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,0BAA0B;IAC1B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,iGAAiG;IACjG,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACA,OAAO,CAAC,WAAW,CAAC,CAqQtB"}
@@ -0,0 +1,337 @@
1
+ /**
2
+ * Setup shared by the OpenCode 1 and OpenCode 2 plugins: options, the
3
+ * anonymizer and its policies, per-session PII maps, scrubbing, env file
4
+ * reloading, and tool argument handling.
5
+ */
6
+ import { createAnonymizer } from "../core/anonymizer.js";
7
+ import { AnonymizerSessionImpl } from "../storage/session-base.js";
8
+ import { InMemoryPIIStorageProvider } from "../storage/in-memory.js";
9
+ import { InMemoryKeyProvider } from "../crypto/index.js";
10
+ import { PIIType, createDefaultPolicy, SECRET_PII_TYPES, DEFAULT_TAG_FORMAT } from "../types/index.js";
11
+ import { buildPIISystemInstruction } from "../proxy/system-instruction.js";
12
+ import { buildTagPrefix } from "../utils/regex.js";
13
+ import { githubUsernameRecognizer } from "./github-username.js";
14
+ import { protectIdentityTags } from "./identity-recognizer.js";
15
+ import { vcsCommandTypes } from "./vcs-command.js";
16
+ import { gitIdentityRecognizer } from "./git-identity.js";
17
+ const DEFAULT_ENV_REFRESH_INTERVAL = 2000;
18
+ // Tools that send their arguments to an external service. OpenCode 2's
19
+ // experimental_image_generate sends its prompt straight to an image model,
20
+ // outside the session hooks; the wildcard keeps it covered if the
21
+ // experimental_ prefix is dropped.
22
+ const DEFAULT_REDACT_TOOLS = ["webfetch", "websearch", "*image_generate"];
23
+ /**
24
+ * Merges options passed by OpenCode (opencode.json) with factory options.
25
+ * Factory options take precedence per key.
26
+ */
27
+ export function mergeOptions(configOptions, factoryOptions) {
28
+ return { ...configOptions, ...factoryOptions };
29
+ }
30
+ /**
31
+ * Recursively rehydrate all string values containing PII tags.
32
+ * See deepMapStrings for what `inPlace` does.
33
+ */
34
+ export async function deepRehydrate(value, session, tagPrefix, inPlace) {
35
+ return deepMapStrings(value, (text) => text.includes(tagPrefix) ? session.rehydrate(text) : text, inPlace);
36
+ }
37
+ /**
38
+ * Applies `map` to every string.
39
+ *
40
+ * In place, arrays and objects are mutated: OpenCode 1 runs tools with the
41
+ * original args reference, so replacing the object wholesale has no effect.
42
+ * Otherwise they are never written to, because OpenCode 2 deep-freezes tool
43
+ * input and uses the value the hook assigns back. A container is copied only
44
+ * when one of its strings changes; when nothing changes, the original value
45
+ * is returned.
46
+ */
47
+ async function deepMapStrings(value, map, inPlace) {
48
+ if (typeof value === "string")
49
+ return map(value);
50
+ if (value === null || typeof value !== "object")
51
+ return value;
52
+ const source = value;
53
+ let target = inPlace ? source : undefined;
54
+ for (const key of Object.keys(source)) {
55
+ const item = await deepMapStrings(source[key], map, inPlace);
56
+ if (target === undefined && item !== source[key])
57
+ target = copyContainer(source);
58
+ if (target !== undefined)
59
+ target[key] = item;
60
+ }
61
+ return target ?? value;
62
+ }
63
+ /** Shallow, unfrozen copy of an array or object that keeps its prototype. */
64
+ function copyContainer(value) {
65
+ if (Array.isArray(value))
66
+ return value.slice();
67
+ return Object.assign(Object.create(Object.getPrototypeOf(value)), value);
68
+ }
69
+ /** Converts a tool name pattern with `*` wildcards to an anchored regex. */
70
+ function toolPattern(pattern) {
71
+ const source = pattern.split("*").map((part) => part.replace(/[.+?^${}()|[\]\\]/g, "\\$&")).join(".*");
72
+ return new RegExp(`^${source}$`);
73
+ }
74
+ /**
75
+ * Binary payloads must reach the provider byte-for-byte. Scrubbing a match
76
+ * inside base64-encoded bytes produces invalid base64, and providers reject
77
+ * the whole request (for example DeepInfra answers
78
+ * "api_error: Non-base64 digit found"). A 5-digit span matching POSTAL_CODE
79
+ * by chance inside a 57 KB PNG screenshot is enough to trigger it.
80
+ *
81
+ * `data:` URIs are recognised by their header and a payload that is base64
82
+ * throughout, so text before or after one in the same string is still
83
+ * scrubbed. Raw base64 blobs are recognised by length plus the base64
84
+ * alphabet; the threshold keeps ordinary prose — and secrets with
85
+ * recognisable prefixes such as `sk-…`, JWTs, or PEM headers, which contain
86
+ * characters outside the alphabet — on the scrubbing path.
87
+ */
88
+ const DATA_URI_HEADER = /^data:(?:[\w.+-]+\/[\w.+-]+)?(?:;[\w.+-]+=[^;,\s]*)*;base64,/i;
89
+ const BASE64_ALPHABET_ONLY = /^[A-Za-z0-9+/=\r\n]+$/;
90
+ const MIN_RAW_BASE64_LENGTH = 512;
91
+ function isBinaryPayload(value) {
92
+ const header = DATA_URI_HEADER.exec(value);
93
+ if (header !== null)
94
+ return BASE64_ALPHABET_ONLY.test(value.slice(header[0].length));
95
+ return value.length >= MIN_RAW_BASE64_LENGTH && BASE64_ALPHABET_ONLY.test(value);
96
+ }
97
+ export async function createRehydraCore(options, context) {
98
+ const { log } = context;
99
+ const inPlace = context.mutateToolValues === true;
100
+ const keyProvider = new InMemoryKeyProvider();
101
+ const piiStorage = new InMemoryPIIStorageProvider();
102
+ // Build anonymizer config from options, sharing key and storage providers
103
+ const baseConfig = options.anonymizer ?? {
104
+ secrets: {
105
+ enabled: true,
106
+ envFiles: options.envFiles ?? ["**/.env*"],
107
+ redactValues: options.redactValues,
108
+ minValueLength: options.minValueLength,
109
+ },
110
+ };
111
+ const anonymizerConfig = {
112
+ ...baseConfig,
113
+ secrets: baseConfig.secrets === undefined ? undefined : {
114
+ ...baseConfig.secrets,
115
+ envBaseDirectory: baseConfig.secrets.envBaseDirectory ?? context.directory,
116
+ },
117
+ };
118
+ const tagFormat = anonymizerConfig.tagFormat ?? options.tagFormat ?? DEFAULT_TAG_FORMAT;
119
+ const tagPrefix = buildTagPrefix(tagFormat);
120
+ const rehydraInstruction = `<rehydra>\n${buildPIISystemInstruction(tagFormat)}\n</rehydra>`;
121
+ const anonymizer = createAnonymizer({
122
+ ...anonymizerConfig,
123
+ tagFormat,
124
+ keyProvider,
125
+ piiStorageProvider: piiStorage,
126
+ });
127
+ if (options.vcsIdentities === true) {
128
+ anonymizer.getRegistry().register(protectIdentityTags(githubUsernameRecognizer, tagFormat));
129
+ anonymizer.getRegistry().register(protectIdentityTags(gitIdentityRecognizer, tagFormat));
130
+ }
131
+ await anonymizer.initialize();
132
+ // Build policy with disabled types (URL and IP_ADDRESS disabled by default)
133
+ const disableTypes = options.disableTypes ?? ["URL", "IP_ADDRESS"];
134
+ let policy = options.policy;
135
+ if (disableTypes.length > 0) {
136
+ const base = createDefaultPolicy();
137
+ const disableSet = new Set(disableTypes);
138
+ const regexEnabledTypes = new Set(base.regexEnabledTypes);
139
+ const nerEnabledTypes = new Set(base.nerEnabledTypes);
140
+ // createDefaultPolicy() excludes secret types (they're opt-in via
141
+ // AnonymizerConfig.secrets). Add them back so that passing this
142
+ // partial policy to mergePolicyWithBase doesn't accidentally drop
143
+ // the secret types the anonymizer added to its internal default.
144
+ for (const secretType of SECRET_PII_TYPES) {
145
+ regexEnabledTypes.add(secretType);
146
+ }
147
+ for (const t of disableSet) {
148
+ const piiType = t;
149
+ regexEnabledTypes.delete(piiType);
150
+ nerEnabledTypes.delete(piiType);
151
+ }
152
+ policy = {
153
+ ...policy,
154
+ regexEnabledTypes,
155
+ nerEnabledTypes,
156
+ };
157
+ }
158
+ const redactToolNames = options.redactTools ?? DEFAULT_REDACT_TOOLS;
159
+ const redactTools = redactToolNames.map(toolPattern);
160
+ const envRefreshInterval = options.envRefreshInterval ?? DEFAULT_ENV_REFRESH_INTERVAL;
161
+ log("info", "plugin initialized", {
162
+ envFiles: anonymizerConfig.secrets?.envFiles,
163
+ redactValueCount: options.redactValues?.length ?? 0,
164
+ disableTypes,
165
+ redactTools: redactToolNames,
166
+ ...context.info,
167
+ });
168
+ const locale = options.locale;
169
+ const identityPolicy = (types) => {
170
+ const defaults = createDefaultPolicy();
171
+ const configPolicy = anonymizerConfig.defaultPolicy;
172
+ const enabledTypes = new Set(policy?.enabledTypes ?? configPolicy?.enabledTypes ?? defaults.enabledTypes);
173
+ const regexEnabledTypes = new Set(policy?.regexEnabledTypes ?? configPolicy?.regexEnabledTypes ?? defaults.regexEnabledTypes);
174
+ if (anonymizerConfig.secrets?.enabled === true) {
175
+ for (const type of SECRET_PII_TYPES) {
176
+ if (!disableTypes.includes(type)) {
177
+ enabledTypes.add(type);
178
+ regexEnabledTypes.add(type);
179
+ }
180
+ }
181
+ }
182
+ for (const type of types) {
183
+ if (!disableTypes.includes(type)) {
184
+ enabledTypes.add(type);
185
+ regexEnabledTypes.add(type);
186
+ }
187
+ }
188
+ return { ...policy, enabledTypes, regexEnabledTypes, reuseIdsForRepeatedPII: true };
189
+ };
190
+ // One session per OpenCode session, keyed by sessionID
191
+ const sessions = new Map();
192
+ function getSession(sessionID) {
193
+ let session = sessions.get(sessionID);
194
+ if (session === undefined) {
195
+ session = new AnonymizerSessionImpl(anonymizer, sessionID, piiStorage, keyProvider);
196
+ sessions.set(sessionID, session);
197
+ }
198
+ return session;
199
+ }
200
+ // Track whether any anonymization occurred (to conditionally inject instruction)
201
+ let hasAnonymized = false;
202
+ let lastRefresh = Date.now();
203
+ let refreshing;
204
+ return {
205
+ tagPrefix,
206
+ rehydraInstruction,
207
+ get hasAnonymized() {
208
+ return hasAnonymized;
209
+ },
210
+ startRequest() {
211
+ let totalScrubbed = 0;
212
+ const scrubbedByType = {};
213
+ const text = async (sessionID, value, activePolicy) => {
214
+ const result = await getSession(sessionID).anonymize(value, locale, activePolicy ?? policy);
215
+ if (result.stats.totalEntities > 0) {
216
+ hasAnonymized = true;
217
+ totalScrubbed += result.stats.totalEntities;
218
+ for (const [type, count] of Object.entries(result.stats.countsByType)) {
219
+ scrubbedByType[type] = (scrubbedByType[type] ?? 0) + count;
220
+ }
221
+ }
222
+ return result.anonymizedText;
223
+ };
224
+ // OpenCode retains the rehydrated arguments after tool execution and
225
+ // serializes them into later model requests. Copy and scrub values so
226
+ // the execution arguments and JSON property names stay intact.
227
+ const copy = async (sessionID, value, activePolicy) => {
228
+ if (typeof value === "string") {
229
+ // Binary payloads pass through untouched: scrubbing a match inside
230
+ // base64 corrupts the data and the provider rejects the request.
231
+ if (isBinaryPayload(value))
232
+ return value;
233
+ return text(sessionID, value, activePolicy);
234
+ }
235
+ if (Array.isArray(value)) {
236
+ const result = [];
237
+ for (const item of value)
238
+ result.push(await copy(sessionID, item, activePolicy));
239
+ return result;
240
+ }
241
+ if (value !== null && typeof value === "object") {
242
+ const entries = [];
243
+ for (const [key, item] of Object.entries(value)) {
244
+ entries.push([key, await copy(sessionID, item, activePolicy)]);
245
+ }
246
+ return Object.fromEntries(entries);
247
+ }
248
+ return value;
249
+ };
250
+ return {
251
+ text,
252
+ copy,
253
+ finish(messageCount) {
254
+ if (totalScrubbed > 0) {
255
+ // Only include types that actually had hits
256
+ const nonZero = {};
257
+ for (const [type, count] of Object.entries(scrubbedByType)) {
258
+ if (count > 0)
259
+ nonZero[type] = count;
260
+ }
261
+ log("info", `scrubbed ${totalScrubbed} secret(s) from messages`, {
262
+ scrubbed: nonZero,
263
+ messageCount,
264
+ });
265
+ }
266
+ else {
267
+ log("debug", "no secrets found in messages", { messageCount });
268
+ }
269
+ },
270
+ };
271
+ },
272
+ outputPolicy(command) {
273
+ if (options.vcsIdentities !== true || typeof command !== "string")
274
+ return policy;
275
+ const commands = vcsCommandTypes(command);
276
+ const types = [];
277
+ if (commands.has("github"))
278
+ types.push(PIIType.GITHUB_USERNAME);
279
+ if (commands.has("git"))
280
+ types.push(PIIType.PERSON);
281
+ return types.length > 0 ? identityPolicy(types) : policy;
282
+ },
283
+ refreshSecrets() {
284
+ if (envRefreshInterval === false)
285
+ return Promise.resolve();
286
+ if (refreshing !== undefined)
287
+ return refreshing;
288
+ if (Date.now() - lastRefresh < envRefreshInterval)
289
+ return Promise.resolve();
290
+ refreshing = (async () => {
291
+ try {
292
+ if (await anonymizer.reloadSecrets())
293
+ log("info", "reloaded secrets from env files");
294
+ }
295
+ catch (error) {
296
+ log("warn", "failed to reload env files", { error: String(error) });
297
+ }
298
+ finally {
299
+ lastRefresh = Date.now();
300
+ refreshing = undefined;
301
+ }
302
+ })();
303
+ return refreshing;
304
+ },
305
+ async beforeTool(tool, sessionID, callID, args) {
306
+ const session = getSession(sessionID);
307
+ const before = JSON.stringify(args);
308
+ const redacted = redactTools.some((pattern) => pattern.test(tool));
309
+ const result = redacted
310
+ ? await deepMapStrings(args, async (text) => (await session.anonymize(text, locale, policy)).anonymizedText, inPlace)
311
+ : await deepRehydrate(args, session, tagPrefix, inPlace);
312
+ if (redacted) {
313
+ log("info", "kept tool args redacted", { tool, callID });
314
+ }
315
+ else if (JSON.stringify(result) !== before) {
316
+ log("info", "rehydrated PII tags in tool args", { tool, callID });
317
+ }
318
+ return result;
319
+ },
320
+ async afterTool(tool, sessionID, callID, result) {
321
+ const before = JSON.stringify(result);
322
+ const rehydrated = await deepRehydrate(result, getSession(sessionID), tagPrefix, inPlace);
323
+ if (JSON.stringify(rehydrated) !== before) {
324
+ log("info", "rehydrated PII tags in tool result", { tool, callID });
325
+ }
326
+ return rehydrated;
327
+ },
328
+ async rehydrateText(sessionID, text) {
329
+ return text.includes(tagPrefix) ? getSession(sessionID).rehydrate(text) : text;
330
+ },
331
+ dispose() {
332
+ sessions.clear();
333
+ piiStorage.clear();
334
+ },
335
+ };
336
+ }
337
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/opencode-plugin/core.ts"],"names":[],"mappings":"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"}