rehydra 0.15.0 → 0.16.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/dist/core/anonymizer.d.ts +10 -0
- package/dist/core/anonymizer.d.ts.map +1 -1
- package/dist/core/anonymizer.js +51 -25
- package/dist/core/anonymizer.js.map +1 -1
- package/dist/opencode-plugin/core.d.ts +56 -0
- package/dist/opencode-plugin/core.d.ts.map +1 -0
- package/dist/opencode-plugin/core.js +294 -0
- package/dist/opencode-plugin/core.js.map +1 -0
- package/dist/opencode-plugin/plugin-v2.d.ts +0 -1
- package/dist/opencode-plugin/plugin-v2.d.ts.map +1 -1
- package/dist/opencode-plugin/plugin-v2.js +25 -244
- package/dist/opencode-plugin/plugin-v2.js.map +1 -1
- package/dist/opencode-plugin/plugin.d.ts +0 -9
- package/dist/opencode-plugin/plugin.d.ts.map +1 -1
- package/dist/opencode-plugin/plugin.js +23 -251
- package/dist/opencode-plugin/plugin.js.map +1 -1
- package/dist/opencode-plugin/types.d.ts +7 -0
- package/dist/opencode-plugin/types.d.ts.map +1 -1
- package/dist/recognizers/registry.d.ts +4 -0
- package/dist/recognizers/registry.d.ts.map +1 -1
- package/dist/recognizers/registry.js +12 -0
- package/dist/recognizers/registry.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,46 +10,7 @@
|
|
|
10
10
|
* - tool.execute.before — rehydrate PII tags in tool args
|
|
11
11
|
* - experimental.text.complete — rehydrate PII tags in LLM response
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
14
|
-
import { AnonymizerSessionImpl } from "../storage/session-base.js";
|
|
15
|
-
import { InMemoryPIIStorageProvider } from "../storage/in-memory.js";
|
|
16
|
-
import { InMemoryKeyProvider } from "../crypto/index.js";
|
|
17
|
-
import { PIIType, createDefaultPolicy, SECRET_PII_TYPES, DEFAULT_TAG_FORMAT } from "../types/index.js";
|
|
18
|
-
import { buildPIISystemInstruction } from "../proxy/system-instruction.js";
|
|
19
|
-
import { buildTagPrefix } from "../utils/regex.js";
|
|
20
|
-
import { githubUsernameRecognizer } from "./github-username.js";
|
|
21
|
-
import { protectIdentityTags } from "./identity-recognizer.js";
|
|
22
|
-
import { vcsCommandTypes } from "./vcs-command.js";
|
|
23
|
-
import { gitIdentityRecognizer } from "./git-identity.js";
|
|
24
|
-
/**
|
|
25
|
-
* Recursively rehydrate all string values containing PII tags.
|
|
26
|
-
* Returns a new value (for strings/arrays) or the same object mutated in-place
|
|
27
|
-
* (for plain objects). The in-place mutation is required because OpenCode's
|
|
28
|
-
* tool.execute.before hook uses the original args reference for execution —
|
|
29
|
-
* replacing the object wholesale has no effect.
|
|
30
|
-
*/
|
|
31
|
-
export async function deepRehydrate(value, session, tagPrefix) {
|
|
32
|
-
if (typeof value === "string") {
|
|
33
|
-
if (value.includes(tagPrefix)) {
|
|
34
|
-
return session.rehydrate(value);
|
|
35
|
-
}
|
|
36
|
-
return value;
|
|
37
|
-
}
|
|
38
|
-
if (Array.isArray(value)) {
|
|
39
|
-
for (let i = 0; i < value.length; i++) {
|
|
40
|
-
value[i] = await deepRehydrate(value[i], session, tagPrefix);
|
|
41
|
-
}
|
|
42
|
-
return value;
|
|
43
|
-
}
|
|
44
|
-
if (value !== null && typeof value === "object") {
|
|
45
|
-
const obj = value;
|
|
46
|
-
for (const key of Object.keys(obj)) {
|
|
47
|
-
obj[key] = await deepRehydrate(obj[key], session, tagPrefix);
|
|
48
|
-
}
|
|
49
|
-
return obj;
|
|
50
|
-
}
|
|
51
|
-
return value;
|
|
52
|
-
}
|
|
13
|
+
import { createRehydraCore, mergeOptions } from "./core.js";
|
|
53
14
|
/**
|
|
54
15
|
* Creates a Rehydra plugin for OpenCode.
|
|
55
16
|
*
|
|
@@ -71,254 +32,65 @@ export async function deepRehydrate(value, session, tagPrefix) {
|
|
|
71
32
|
export function createRehydraPlugin(factoryOptions) {
|
|
72
33
|
return async (ctx, configOptions) => {
|
|
73
34
|
const { client } = ctx;
|
|
74
|
-
// OpenCode passes options from opencode.json as the second argument.
|
|
75
|
-
// Factory options take precedence per key.
|
|
76
|
-
const options = {
|
|
77
|
-
...configOptions,
|
|
78
|
-
...factoryOptions,
|
|
79
|
-
};
|
|
80
35
|
const SERVICE = "rehydra";
|
|
81
36
|
function log(level, message, extra) {
|
|
82
37
|
void client.app.log({ body: { service: SERVICE, level, message, extra } });
|
|
83
38
|
}
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
secrets: {
|
|
89
|
-
enabled: true,
|
|
90
|
-
envFiles: options?.envFiles ?? ["**/.env*"],
|
|
91
|
-
redactValues: options?.redactValues,
|
|
92
|
-
minValueLength: options?.minValueLength,
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
const anonymizerConfig = {
|
|
96
|
-
...baseConfig,
|
|
97
|
-
secrets: baseConfig.secrets === undefined ? undefined : {
|
|
98
|
-
...baseConfig.secrets,
|
|
99
|
-
envBaseDirectory: baseConfig.secrets.envBaseDirectory ?? ctx.directory,
|
|
100
|
-
},
|
|
101
|
-
};
|
|
102
|
-
const tagFormat = anonymizerConfig.tagFormat ?? options?.tagFormat ?? DEFAULT_TAG_FORMAT;
|
|
103
|
-
const tagPrefix = buildTagPrefix(tagFormat);
|
|
104
|
-
const rehydraInstruction = `<rehydra>\n${buildPIISystemInstruction(tagFormat)}\n</rehydra>`;
|
|
105
|
-
const anonymizer = createAnonymizer({
|
|
106
|
-
...anonymizerConfig,
|
|
107
|
-
tagFormat,
|
|
108
|
-
keyProvider,
|
|
109
|
-
piiStorageProvider: piiStorage,
|
|
110
|
-
});
|
|
111
|
-
if (options?.vcsIdentities === true) {
|
|
112
|
-
anonymizer.getRegistry().register(protectIdentityTags(githubUsernameRecognizer, tagFormat));
|
|
113
|
-
anonymizer.getRegistry().register(protectIdentityTags(gitIdentityRecognizer, tagFormat));
|
|
114
|
-
}
|
|
115
|
-
await anonymizer.initialize();
|
|
116
|
-
// Build policy with disabled types (URL and IP_ADDRESS disabled by default)
|
|
117
|
-
const disableTypes = options?.disableTypes ?? ["URL", "IP_ADDRESS"];
|
|
118
|
-
let policy = options?.policy;
|
|
119
|
-
if (disableTypes.length > 0) {
|
|
120
|
-
const base = createDefaultPolicy();
|
|
121
|
-
const disableSet = new Set(disableTypes);
|
|
122
|
-
const regexEnabledTypes = new Set(base.regexEnabledTypes);
|
|
123
|
-
const nerEnabledTypes = new Set(base.nerEnabledTypes);
|
|
124
|
-
// createDefaultPolicy() excludes secret types (they're opt-in via
|
|
125
|
-
// AnonymizerConfig.secrets). Add them back so that passing this
|
|
126
|
-
// partial policy to mergePolicyWithBase doesn't accidentally drop
|
|
127
|
-
// the secret types the anonymizer added to its internal default.
|
|
128
|
-
for (const secretType of SECRET_PII_TYPES) {
|
|
129
|
-
regexEnabledTypes.add(secretType);
|
|
130
|
-
}
|
|
131
|
-
for (const t of disableSet) {
|
|
132
|
-
const piiType = t;
|
|
133
|
-
regexEnabledTypes.delete(piiType);
|
|
134
|
-
nerEnabledTypes.delete(piiType);
|
|
135
|
-
}
|
|
136
|
-
policy = {
|
|
137
|
-
...policy,
|
|
138
|
-
regexEnabledTypes,
|
|
139
|
-
nerEnabledTypes,
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
log("info", "plugin initialized", {
|
|
143
|
-
envFiles: anonymizerConfig.secrets?.envFiles,
|
|
144
|
-
redactValueCount: options?.redactValues?.length ?? 0,
|
|
145
|
-
disableTypes,
|
|
39
|
+
// OpenCode passes options from opencode.json as the second argument.
|
|
40
|
+
const core = await createRehydraCore(mergeOptions(configOptions, factoryOptions), {
|
|
41
|
+
directory: ctx.directory,
|
|
42
|
+
log,
|
|
146
43
|
});
|
|
147
|
-
const locale = options?.locale;
|
|
148
|
-
const identityPolicy = (types) => {
|
|
149
|
-
const defaults = createDefaultPolicy();
|
|
150
|
-
const configPolicy = anonymizerConfig.defaultPolicy;
|
|
151
|
-
const enabledTypes = new Set(policy?.enabledTypes ?? configPolicy?.enabledTypes ?? defaults.enabledTypes);
|
|
152
|
-
const regexEnabledTypes = new Set(policy?.regexEnabledTypes ?? configPolicy?.regexEnabledTypes ?? defaults.regexEnabledTypes);
|
|
153
|
-
if (anonymizerConfig.secrets?.enabled === true) {
|
|
154
|
-
for (const type of SECRET_PII_TYPES) {
|
|
155
|
-
if (!disableTypes.includes(type)) {
|
|
156
|
-
enabledTypes.add(type);
|
|
157
|
-
regexEnabledTypes.add(type);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
for (const type of types) {
|
|
162
|
-
if (!disableTypes.includes(type)) {
|
|
163
|
-
enabledTypes.add(type);
|
|
164
|
-
regexEnabledTypes.add(type);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
return { ...policy, enabledTypes, regexEnabledTypes, reuseIdsForRepeatedPII: true };
|
|
168
|
-
};
|
|
169
|
-
// One session per OpenCode session, keyed by sessionID
|
|
170
|
-
const sessions = new Map();
|
|
171
|
-
function getSession(sessionID) {
|
|
172
|
-
let session = sessions.get(sessionID);
|
|
173
|
-
if (session === undefined) {
|
|
174
|
-
session = new AnonymizerSessionImpl(anonymizer, sessionID, piiStorage, keyProvider);
|
|
175
|
-
sessions.set(sessionID, session);
|
|
176
|
-
}
|
|
177
|
-
return session;
|
|
178
|
-
}
|
|
179
|
-
// Track whether any anonymization occurred (to conditionally inject instruction)
|
|
180
|
-
let hasAnonymized = false;
|
|
181
44
|
return {
|
|
182
45
|
"experimental.chat.messages.transform": async (_input, output) => {
|
|
183
|
-
|
|
184
|
-
const
|
|
46
|
+
await core.refreshSecrets();
|
|
47
|
+
const request = core.startRequest();
|
|
185
48
|
for (const msg of output.messages) {
|
|
186
|
-
const
|
|
187
|
-
// OpenCode retains the rehydrated arguments after tool execution and
|
|
188
|
-
// serializes them into later model requests. Copy and scrub values so
|
|
189
|
-
// the execution arguments and JSON property names stay intact.
|
|
190
|
-
const scrubToolInput = async (value) => {
|
|
191
|
-
if (typeof value === "string") {
|
|
192
|
-
const result = await session.anonymize(value, locale, policy);
|
|
193
|
-
if (result.stats.totalEntities > 0) {
|
|
194
|
-
hasAnonymized = true;
|
|
195
|
-
totalScrubbed += result.stats.totalEntities;
|
|
196
|
-
for (const [type, count] of Object.entries(result.stats.countsByType)) {
|
|
197
|
-
scrubbedByType[type] = (scrubbedByType[type] ?? 0) + count;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
return result.anonymizedText;
|
|
201
|
-
}
|
|
202
|
-
if (Array.isArray(value)) {
|
|
203
|
-
const result = [];
|
|
204
|
-
for (const item of value)
|
|
205
|
-
result.push(await scrubToolInput(item));
|
|
206
|
-
return result;
|
|
207
|
-
}
|
|
208
|
-
if (value !== null && typeof value === "object") {
|
|
209
|
-
const entries = [];
|
|
210
|
-
for (const [key, item] of Object.entries(value)) {
|
|
211
|
-
entries.push([key, await scrubToolInput(item)]);
|
|
212
|
-
}
|
|
213
|
-
return Object.fromEntries(entries);
|
|
214
|
-
}
|
|
215
|
-
return value;
|
|
216
|
-
};
|
|
49
|
+
const sessionID = msg.info.sessionID;
|
|
217
50
|
for (const part of msg.parts) {
|
|
51
|
+
// Read the command before scrubbing so VCS detection sees it intact
|
|
52
|
+
const command = part.state?.input?.command;
|
|
218
53
|
if (part.type === "tool" && part.state !== undefined) {
|
|
219
54
|
const state = part.state;
|
|
220
55
|
if (state.input !== undefined)
|
|
221
|
-
state.input = await
|
|
56
|
+
state.input = await request.copy(sessionID, state.input);
|
|
222
57
|
if (typeof state.error === "string") {
|
|
223
|
-
state.error = await
|
|
58
|
+
state.error = await request.text(sessionID, state.error);
|
|
224
59
|
}
|
|
225
60
|
}
|
|
226
61
|
// Anonymize .text on any part type (text, reasoning, file, patch, etc.)
|
|
227
62
|
if (typeof part.text === "string") {
|
|
228
|
-
|
|
229
|
-
if (result.stats.totalEntities > 0) {
|
|
230
|
-
hasAnonymized = true;
|
|
231
|
-
totalScrubbed += result.stats.totalEntities;
|
|
232
|
-
for (const [type, count] of Object.entries(result.stats.countsByType)) {
|
|
233
|
-
scrubbedByType[type] = (scrubbedByType[type] ?? 0) + count;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
part.text = result.anonymizedText;
|
|
63
|
+
part.text = await request.text(sessionID, part.text);
|
|
237
64
|
}
|
|
238
65
|
// Anonymize tool output
|
|
239
66
|
if (part.state !== undefined &&
|
|
240
67
|
part.state.status === "completed" &&
|
|
241
68
|
typeof part.state.output === "string") {
|
|
242
|
-
|
|
243
|
-
let outputPolicy = policy;
|
|
244
|
-
if (options?.vcsIdentities === true &&
|
|
245
|
-
typeof command === "string") {
|
|
246
|
-
const commands = vcsCommandTypes(command);
|
|
247
|
-
const types = [];
|
|
248
|
-
if (commands.has('github'))
|
|
249
|
-
types.push(PIIType.GITHUB_USERNAME);
|
|
250
|
-
if (commands.has('git'))
|
|
251
|
-
types.push(PIIType.PERSON);
|
|
252
|
-
if (types.length > 0)
|
|
253
|
-
outputPolicy = identityPolicy(types);
|
|
254
|
-
}
|
|
255
|
-
const result = await session.anonymize(part.state.output, locale, outputPolicy);
|
|
256
|
-
if (result.stats.totalEntities > 0) {
|
|
257
|
-
hasAnonymized = true;
|
|
258
|
-
totalScrubbed += result.stats.totalEntities;
|
|
259
|
-
for (const [type, count] of Object.entries(result.stats.countsByType)) {
|
|
260
|
-
scrubbedByType[type] = (scrubbedByType[type] ?? 0) + count;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
part.state.output = result.anonymizedText;
|
|
69
|
+
part.state.output = await request.text(sessionID, part.state.output, core.outputPolicy(command));
|
|
264
70
|
}
|
|
265
71
|
}
|
|
266
72
|
}
|
|
267
|
-
|
|
268
|
-
// Only include types that actually had hits
|
|
269
|
-
const nonZero = {};
|
|
270
|
-
for (const [type, count] of Object.entries(scrubbedByType)) {
|
|
271
|
-
if (count > 0)
|
|
272
|
-
nonZero[type] = count;
|
|
273
|
-
}
|
|
274
|
-
log("info", `scrubbed ${totalScrubbed} secret(s) from messages`, {
|
|
275
|
-
scrubbed: nonZero,
|
|
276
|
-
messageCount: output.messages.length,
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
log("debug", "no secrets found in messages", {
|
|
281
|
-
messageCount: output.messages.length,
|
|
282
|
-
});
|
|
283
|
-
}
|
|
73
|
+
request.finish(output.messages.length);
|
|
284
74
|
},
|
|
285
75
|
"experimental.chat.system.transform": (_input, output) => {
|
|
286
|
-
if (hasAnonymized) {
|
|
76
|
+
if (core.hasAnonymized) {
|
|
287
77
|
log("debug", "injected rehydra instruction into system prompt");
|
|
288
|
-
output.system.push(rehydraInstruction);
|
|
78
|
+
output.system.push(core.rehydraInstruction);
|
|
289
79
|
}
|
|
290
80
|
},
|
|
291
81
|
"tool.execute.before": async (input, output) => {
|
|
292
|
-
|
|
293
|
-
const before = JSON.stringify(output.args);
|
|
294
|
-
output.args = await deepRehydrate(output.args, session, tagPrefix);
|
|
295
|
-
const after = JSON.stringify(output.args);
|
|
296
|
-
if (before !== after) {
|
|
297
|
-
log("info", `rehydrated PII tags in tool args`, {
|
|
298
|
-
tool: input.tool,
|
|
299
|
-
callID: input.callID,
|
|
300
|
-
});
|
|
301
|
-
}
|
|
82
|
+
output.args = await core.beforeTool(input.tool, input.sessionID, input.callID, output.args);
|
|
302
83
|
},
|
|
303
84
|
// Output shape varies by tool type: native tools pass
|
|
304
85
|
// { title, output, metadata } while MCP tools pass the raw
|
|
305
|
-
// CallToolResult ({ content: [{type,text}], … }).
|
|
306
|
-
// so we handle any shape without hard-coding field names.
|
|
86
|
+
// CallToolResult ({ content: [{type,text}], … }). Rehydrate every
|
|
87
|
+
// string so we handle any shape without hard-coding field names.
|
|
307
88
|
"tool.execute.after": async (input, output) => {
|
|
308
|
-
|
|
309
|
-
const before = JSON.stringify(output);
|
|
310
|
-
await deepRehydrate(output, session, tagPrefix);
|
|
311
|
-
if (JSON.stringify(output) !== before) {
|
|
312
|
-
log("info", "rehydrated PII tags in tool result", {
|
|
313
|
-
tool: input.tool,
|
|
314
|
-
callID: input.callID,
|
|
315
|
-
});
|
|
316
|
-
}
|
|
89
|
+
await core.afterTool(input.tool, input.sessionID, input.callID, output);
|
|
317
90
|
},
|
|
318
91
|
"experimental.text.complete": async (input, output) => {
|
|
319
|
-
if (output.text.includes(tagPrefix)) {
|
|
320
|
-
|
|
321
|
-
output.text = await session.rehydrate(output.text);
|
|
92
|
+
if (output.text.includes(core.tagPrefix)) {
|
|
93
|
+
output.text = await core.rehydrateText(input.sessionID, output.text);
|
|
322
94
|
log("debug", "rehydrated PII tags in LLM response text", {
|
|
323
95
|
messageID: input.messageID,
|
|
324
96
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/opencode-plugin/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAiC1D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAc,EACd,OAA8B,EAC9B,SAAiB;IAEjB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,KAAmB,CAAC,CAAC,CAAC,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,KAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAAqC;IACvE,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE;QAClC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QACvB,qEAAqE;QACrE,2CAA2C;QAC3C,MAAM,OAAO,GAAyB;YACpC,GAAI,aAAkD;YACtD,GAAG,cAAc;SAClB,CAAC;QACF,MAAM,OAAO,GAAG,SAAS,CAAC;QAE1B,SAAS,GAAG,CACV,KAA0C,EAC1C,OAAe,EACf,KAA+B;YAE/B,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAEpD,0EAA0E;QAC1E,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI;YACxC,OAAO,EAAE;gBACP,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC,UAAU,CAAC;gBAC3C,YAAY,EAAE,OAAO,EAAE,YAAY;gBACnC,cAAc,EAAE,OAAO,EAAE,cAAc;aACxC;SACF,CAAC;QAEF,MAAM,gBAAgB,GAAG;YACvB,GAAG,UAAU;YACb,OAAO,EAAE,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACtD,GAAG,UAAU,CAAC,OAAO;gBACrB,gBAAgB,EAAE,UAAU,CAAC,OAAO,CAAC,gBAAgB,IAAI,GAAG,CAAC,SAAS;aACvE;SACF,CAAC;QAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,IAAI,OAAO,EAAE,SAAS,IAAI,kBAAkB,CAAC;QACzF,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,kBAAkB,GAAG,cAAc,yBAAyB,CAAC,SAAS,CAAC,cAAc,CAAC;QAE5F,MAAM,UAAU,GAAG,gBAAgB,CAAC;YAClC,GAAG,gBAAgB;YACnB,SAAS;YACT,WAAW;YACX,kBAAkB,EAAE,UAAU;SAC/B,CAAC,CAAC;QACH,IAAI,OAAO,EAAE,aAAa,KAAK,IAAI,EAAE,CAAC;YACpC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC,CAAC;YAC5F,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;QAE9B,4EAA4E;QAC5E,MAAM,YAAY,GAChB,OAAO,EAAE,YAAY,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACjD,IAAI,MAAM,GAA6C,OAAO,EAAE,MAAM,CAAC;QACvE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,YAAY,CAAC,CAAC;YACjD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC1D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtD,kEAAkE;YAClE,iEAAiE;YACjE,kEAAkE;YAClE,iEAAiE;YACjE,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;gBAC1C,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACpC,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,CAAY,CAAC;gBAC7B,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;YACD,MAAM,GAAG;gBACP,GAAG,MAAM;gBACT,iBAAiB;gBACjB,eAAe;aAChB,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE;YAChC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,EAAE,QAAQ;YAC5C,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;YACpD,YAAY;SACb,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAC/B,MAAM,cAAc,GAAG,CAAC,KAAgB,EAAgC,EAAE;YACxE,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,gBAAgB,CAAC,aAAa,CAAC;YACpD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,IAAI,YAAY,EAAE,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC1G,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,IAAI,YAAY,EAAE,iBAAiB,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAC9H,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC/C,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;oBACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAAC,CAAC;gBAC5F,CAAC;YACH,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;YAC5F,CAAC;YACD,OAAO,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC,CAAC;QAEF,uDAAuD;QACvD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAC;QAE1D,SAAS,UAAU,CAAC,SAAiB;YACnC,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,GAAG,IAAI,qBAAqB,CACjC,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,CACZ,CAAC;gBACF,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,iFAAiF;QACjF,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,OAAO;YACL,sCAAsC,EAAE,KAAK,EAC3C,MAA+B,EAC/B,MAUC,EACc,EAAE;gBACjB,IAAI,aAAa,GAAG,CAAC,CAAC;gBACtB,MAAM,cAAc,GAA2B,EAAE,CAAC;gBAElD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAE/C,qEAAqE;oBACrE,sEAAsE;oBACtE,+DAA+D;oBAC/D,MAAM,cAAc,GAAG,KAAK,EAAE,KAAc,EAAoB,EAAE;wBAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;4BAC9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;4BAC9D,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;gCACnC,aAAa,GAAG,IAAI,CAAC;gCACrB,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;gCAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;oCACtE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;gCAC7D,CAAC;4BACH,CAAC;4BACD,OAAO,MAAM,CAAC,cAAc,CAAC;wBAC/B,CAAC;wBACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;4BACzB,MAAM,MAAM,GAAc,EAAE,CAAC;4BAC7B,KAAK,MAAM,IAAI,IAAI,KAAK;gCAAE,MAAM,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;4BAClE,OAAO,MAAM,CAAC;wBAChB,CAAC;wBACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;4BAChD,MAAM,OAAO,GAA6B,EAAE,CAAC;4BAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gCAChD,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BAClD,CAAC;4BACD,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;wBACrC,CAAC;wBACD,OAAO,KAAK,CAAC;oBACf,CAAC,CAAC;oBAEF,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;wBAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;4BACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAgE,CAAC;4BACpF,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gCAAE,KAAK,CAAC,KAAK,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BAC/E,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gCACpC,KAAK,CAAC,KAAK,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAW,CAAC;4BAC5D,CAAC;wBACH,CAAC;wBAED,wEAAwE;wBACxE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAClC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;4BAClE,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;gCACnC,aAAa,GAAG,IAAI,CAAC;gCACrB,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;gCAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CACxC,MAAM,CAAC,KAAK,CAAC,YAAY,CAC1B,EAAE,CAAC;oCACF,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;gCAC7D,CAAC;4BACH,CAAC;4BACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC;wBACpC,CAAC;wBAED,wBAAwB;wBACxB,IACE,IAAI,CAAC,KAAK,KAAK,SAAS;4BACxB,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW;4BACjC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EACrC,CAAC;4BACD,MAAM,OAAO,GACX,IAAI,CAAC,KACN,CAAC,KAAK,EAAE,OAAO,CAAC;4BACjB,IAAI,YAAY,GAAG,MAAM,CAAC;4BAC1B,IACE,OAAO,EAAE,aAAa,KAAK,IAAI;gCAC/B,OAAO,OAAO,KAAK,QAAQ,EAC3B,CAAC;gCACD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gCAC1C,MAAM,KAAK,GAAc,EAAE,CAAC;gCAC5B,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;oCAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gCAChE,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;oCAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gCACpD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;oCAAE,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;4BAC7D,CAAC;4BACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CACpC,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,MAAM,EACN,YAAY,CACb,CAAC;4BACF,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;gCACnC,aAAa,GAAG,IAAI,CAAC;gCACrB,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;gCAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CACxC,MAAM,CAAC,KAAK,CAAC,YAAY,CAC1B,EAAE,CAAC;oCACF,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;gCAC7D,CAAC;4BACH,CAAC;4BACD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;wBAC5C,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;oBACtB,4CAA4C;oBAC5C,MAAM,OAAO,GAA2B,EAAE,CAAC;oBAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;wBAC3D,IAAI,KAAK,GAAG,CAAC;4BAAE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBACvC,CAAC;oBACD,GAAG,CAAC,MAAM,EAAE,YAAY,aAAa,0BAA0B,EAAE;wBAC/D,QAAQ,EAAE,OAAO;wBACjB,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;qBACrC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,OAAO,EAAE,8BAA8B,EAAE;wBAC3C,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;qBACrC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,oCAAoC,EAAE,CACpC,MAA+B,EAC/B,MAA4B,EACtB,EAAE;gBACR,IAAI,aAAa,EAAE,CAAC;oBAClB,GAAG,CAAC,OAAO,EAAE,iDAAiD,CAAC,CAAC;oBAChE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,qBAAqB,EAAE,KAAK,EAC1B,KAA0D,EAC1D,MAAyB,EACV,EAAE;gBACjB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,CAAC,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;gBACnE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAE1C,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBACrB,GAAG,CAAC,MAAM,EAAE,kCAAkC,EAAE;wBAC9C,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;qBACrB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,sDAAsD;YACtD,2DAA2D;YAC3D,qEAAqE;YACrE,0DAA0D;YAC1D,oBAAoB,EAAE,KAAK,EACzB,KAKC,EACD,MAA+B,EAChB,EAAE;gBACjB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;gBAEhD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;oBACtC,GAAG,CAAC,MAAM,EAAE,oCAAoC,EAAE;wBAChD,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;qBACrB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,4BAA4B,EAAE,KAAK,EACjC,KAA+D,EAC/D,MAAwB,EACT,EAAE;gBACjB,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC5C,MAAM,CAAC,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACnD,GAAG,CAAC,OAAO,EAAE,0CAA0C,EAAE;wBACvD,SAAS,EAAE,KAAK,CAAC,SAAS;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,eAAe,mBAAmB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/opencode-plugin/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,13 @@ export interface RehydraPluginOptions {
|
|
|
13
13
|
/** Paths/globs relative to the OpenCode project directory. Defaults to recursive .env discovery.
|
|
14
14
|
* Skips node_modules, .git, and symlinks. Pass [] to disable file loading. */
|
|
15
15
|
envFiles?: string[];
|
|
16
|
+
/** Minimum milliseconds between checks of envFiles for new or changed secrets (default: 2000).
|
|
17
|
+
* Pass false to load them only when the plugin starts. */
|
|
18
|
+
envRefreshInterval?: number | false;
|
|
19
|
+
/** Tools whose arguments keep their placeholders: real values are not restored before they run,
|
|
20
|
+
* and detected values are redacted. `*` matches any characters, e.g. "exa_*".
|
|
21
|
+
* Default: ["webfetch", "websearch"]. Pass [] to restore real values for every tool. */
|
|
22
|
+
redactTools?: string[];
|
|
16
23
|
/** Explicit values to always redact */
|
|
17
24
|
redactValues?: string[];
|
|
18
25
|
/** Minimum value length to consider as a secret (default: 4) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/opencode-plugin/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG,GAAG,OAAO,EAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;kFAC8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,0FAA0F;IAC1F,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAE7B,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,uBAAuB;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEtC,wFAAwF;IACxF,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B,qFAAqF;IACrF,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/opencode-plugin/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG,GAAG,OAAO,EAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;kFAC8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;8DAC0D;IAC1D,kBAAkB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAEpC;;4FAEwF;IACxF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,0FAA0F;IAC1F,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAE7B,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,uBAAuB;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEtC,wFAAwF;IACxF,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B,qFAAqF;IACrF,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB"}
|
|
@@ -37,6 +37,10 @@ export declare class RecognizerRegistry {
|
|
|
37
37
|
* Removes all recognizers for a type
|
|
38
38
|
*/
|
|
39
39
|
unregister(type: PIIType): void;
|
|
40
|
+
/**
|
|
41
|
+
* Removes one recognizer, keeping the others registered for its type
|
|
42
|
+
*/
|
|
43
|
+
remove(recognizer: Recognizer): void;
|
|
40
44
|
/**
|
|
41
45
|
* Clears all recognizers
|
|
42
46
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/recognizers/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAyC;IAE5D;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAMtC;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;IAM5C;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,EAAE;IAI3C;;OAEG;IACH,iBAAiB,IAAI,UAAU,EAAE;IAQjC;;OAEG;IACH,kBAAkB,IAAI,OAAO,EAAE;IAI/B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAKrC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAI/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,SAAS,EAAE;CA0BhE;AAOD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,kBAAkB,CAKtD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,kBAAkB,CAEnD"}
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/recognizers/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAyC;IAE5D;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAMtC;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;IAM5C;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,EAAE;IAI3C;;OAEG;IACH,iBAAiB,IAAI,UAAU,EAAE;IAQjC;;OAEG;IACH,kBAAkB,IAAI,OAAO,EAAE;IAI/B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAKrC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAI/B;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAWpC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,SAAS,EAAE;CA0BhE;AAOD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,kBAAkB,CAKtD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,kBAAkB,CAEnD"}
|
|
@@ -58,6 +58,18 @@ export class RecognizerRegistry {
|
|
|
58
58
|
unregister(type) {
|
|
59
59
|
this.recognizers.delete(type);
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Removes one recognizer, keeping the others registered for its type
|
|
63
|
+
*/
|
|
64
|
+
remove(recognizer) {
|
|
65
|
+
const remaining = (this.recognizers.get(recognizer.type) ?? []).filter((item) => item !== recognizer);
|
|
66
|
+
if (remaining.length > 0) {
|
|
67
|
+
this.recognizers.set(recognizer.type, remaining);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
this.recognizers.delete(recognizer.type);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
61
73
|
/**
|
|
62
74
|
* Clears all recognizers
|
|
63
75
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/recognizers/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/recognizers/registry.ts"],"names":[],"mappings":"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"}
|