@daweifu/capability-menu 0.1.2 → 0.1.3

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.
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Comment-preserving, loop-safe editing of a dsh patch file.
3
+ *
4
+ * dsh owns and composes these files (`~/.dsh/cordis.patch.yml` and per-profile
5
+ * `cordis.patch.yml`), and in a `patchReload: live` profile it *watches* them:
6
+ * any write triggers a transactional re-apply of the patch, which re-applies
7
+ * this very plugin. Two consequences drive everything below:
8
+ *
9
+ * - **A no-op must never write.** Writing on every startup/apply would make the
10
+ * plugin reload itself forever. So each mutation reports whether it actually
11
+ * changed the document, and nothing is written when it did not.
12
+ * - **A write must never damage the file.** The file is a hand-maintained asset
13
+ * (comments, `!!js` expressions, credentials). Edits go through `yaml`'s
14
+ * document API, which keeps comments, and every write is backed up, verified
15
+ * by re-parsing, and rolled back on failure.
16
+ *
17
+ * Note the round-trip is *not* byte-identical — `yaml` normalizes trailing
18
+ * comment spacing and quoting style. That is why "did this change anything?" is
19
+ * decided by the mutation, never by comparing before/after text.
20
+ */
21
+ import { copyFile, readFile, rename, unlink, writeFile } from 'node:fs/promises';
22
+ import { randomUUID } from 'node:crypto';
23
+ import { homedir } from 'node:os';
24
+ import { join } from 'node:path';
25
+ import YAML from 'yaml';
26
+ /** Default patch file: the home-level layer shared by every profile. */
27
+ export function defaultPatchFile() {
28
+ const home = process.env['DSH_HOME'];
29
+ if (home !== undefined && home.length > 0)
30
+ return join(home, 'cordis.patch.yml');
31
+ return join(homedir(), '.dsh', 'cordis.patch.yml');
32
+ }
33
+ /**
34
+ * Every entry row in the document: both bare top-level rows and rows nested in
35
+ * an `- insert:` block (the form dsh's own patches and this bundle use).
36
+ */
37
+ function* entryNodes(doc) {
38
+ const root = doc.contents;
39
+ if (!YAML.isSeq(root))
40
+ return;
41
+ for (const item of root.items) {
42
+ if (!YAML.isMap(item))
43
+ continue;
44
+ const insert = item.get('insert');
45
+ if (insert !== undefined && insert !== null) {
46
+ if (!YAML.isSeq(insert))
47
+ continue;
48
+ for (const row of insert.items) {
49
+ if (YAML.isMap(row))
50
+ yield { node: row, parent: insert };
51
+ }
52
+ continue;
53
+ }
54
+ if (item.get('id') !== undefined)
55
+ yield { node: item, parent: root };
56
+ }
57
+ }
58
+ /** Find the entry row with `id`, if the file declares one. */
59
+ export function findEntry(doc, id) {
60
+ for (const { node } of entryNodes(doc)) {
61
+ if (node.get('id') === id)
62
+ return node;
63
+ }
64
+ return undefined;
65
+ }
66
+ /** Read every declared entry as plain data (never mutates the file). */
67
+ export async function readEntries(file) {
68
+ const source = await readFile(file, 'utf8');
69
+ const doc = YAML.parseDocument(source);
70
+ const entries = [];
71
+ for (const { node } of entryNodes(doc)) {
72
+ const value = node.toJSON();
73
+ if (typeof value.id !== 'string' || typeof value.name !== 'string')
74
+ continue;
75
+ entries.push(value);
76
+ }
77
+ return entries;
78
+ }
79
+ /** The last `- insert:` block in the document, if any. */
80
+ function lastInsertSeq(doc) {
81
+ const root = doc.contents;
82
+ if (!YAML.isSeq(root))
83
+ return undefined;
84
+ let found;
85
+ for (const item of root.items) {
86
+ if (!YAML.isMap(item))
87
+ continue;
88
+ const insert = item.get('insert');
89
+ if (YAML.isSeq(insert))
90
+ found = insert;
91
+ }
92
+ return found;
93
+ }
94
+ /**
95
+ * Append a row to the document. Reuses the last `- insert:` block so new rows
96
+ * land next to the existing ones; creates one when the file has none.
97
+ */
98
+ export function addEntry(doc, entry) {
99
+ const root = doc.contents;
100
+ if (!YAML.isSeq(root))
101
+ throw new Error('patch file root is not a sequence');
102
+ const target = lastInsertSeq(doc) ?? (() => {
103
+ const block = doc.createNode({ insert: [] });
104
+ // `root` is narrowed to a parsed sequence; the freshly built map is not
105
+ // narrowed with it even though it is a real document node.
106
+ root.add(block);
107
+ return block.get('insert');
108
+ })();
109
+ target.add(doc.createNode({ ...entry }));
110
+ }
111
+ /**
112
+ * Append a bare, id-targeted override row (`- id: … / name: … / config: …`) at
113
+ * the top level — a patch that *finds* a row instead of adding one.
114
+ *
115
+ * Deliberately not {@link addEntry}: the row being configured is usually
116
+ * contributed by another layer. This plugin's own bundle patch inserts
117
+ * `capability-menu-policy`, and a profile's home layer is applied *after* that
118
+ * layer, so inserting a second row with the same id here leaves the composed
119
+ * tree with two rows sharing an id — which dsh refuses outright with
120
+ * `duplicate loader entry id`, taking the whole profile down.
121
+ */
122
+ export function addEntryOverride(doc, entry) {
123
+ const root = doc.contents;
124
+ if (!YAML.isSeq(root))
125
+ throw new Error('patch file root is not a sequence');
126
+ // `root` is narrowed to a parsed sequence; the freshly built map is not
127
+ // narrowed with it even though it is a real document node.
128
+ root.add(doc.createNode({ ...entry }));
129
+ }
130
+ /** Remove the row with `id`. Returns false when the file has no such row. */
131
+ export function removeEntry(doc, id) {
132
+ for (const { node, parent } of entryNodes(doc)) {
133
+ if (node.get('id') !== id)
134
+ continue;
135
+ parent.delete(parent.items.indexOf(node));
136
+ return true;
137
+ }
138
+ return false;
139
+ }
140
+ /** Set or clear `disabled:` on the row with `id`. */
141
+ export function setEntryDisabled(doc, id, disabled) {
142
+ const node = findEntry(doc, id);
143
+ if (node === undefined)
144
+ return false;
145
+ if (disabled)
146
+ node.set('disabled', true);
147
+ else
148
+ node.delete('disabled');
149
+ return true;
150
+ }
151
+ /** Replace the row's `config:` (patch semantics replace the whole value). */
152
+ export function setEntryConfig(doc, id, config) {
153
+ const node = findEntry(doc, id);
154
+ if (node === undefined)
155
+ return false;
156
+ node.set('config', doc.createNode(config));
157
+ return true;
158
+ }
159
+ /**
160
+ * Load the patch file, apply `mutate`, and persist only when it reports a
161
+ * change. Returns whether a write happened (i.e. whether dsh will hot-reload).
162
+ *
163
+ * `mutate` must be pure apart from its edits to `doc`: it may be the only
164
+ * chance to change the file, and a thrown error leaves the file untouched.
165
+ */
166
+ export async function mutatePatch(file, mutate) {
167
+ const original = await readFile(file, 'utf8');
168
+ const doc = YAML.parseDocument(original);
169
+ if (!mutate(doc))
170
+ return false;
171
+ const next = doc.toString();
172
+ const backup = `${file}.bak`;
173
+ const tmp = `${file}.tmp-${randomUUID()}`;
174
+ await copyFile(file, backup);
175
+ try {
176
+ await writeFile(tmp, next, 'utf8');
177
+ // Verify before it becomes the live file: a document that no longer parses
178
+ // would take the whole profile down on the next reload.
179
+ const check = YAML.parseDocument(await readFile(tmp, 'utf8'));
180
+ if (check.errors.length > 0) {
181
+ throw new Error(`rewritten patch file does not parse: ${check.errors[0]?.message ?? 'unknown error'}`);
182
+ }
183
+ await rename(tmp, file);
184
+ return true;
185
+ }
186
+ catch (error) {
187
+ await unlink(tmp).catch(() => { });
188
+ await copyFile(backup, file).catch(() => { });
189
+ throw error;
190
+ }
191
+ }
192
+ //# sourceMappingURL=patch-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-file.js","sourceRoot":"","sources":["../src/patch-file.ts"],"names":[],"mappings":"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"}
package/lib/policy.js CHANGED
@@ -7,6 +7,8 @@
7
7
  import z from '@deepseek-ai/schemastery';
8
8
  import { escapeText } from '@deepseek-ai/dsh-skill';
9
9
  import { serverNameOf } from "./registry.js";
10
+ import { addEntryOverride, findEntry, mutatePatch, setEntryConfig } from "./patch-file.js";
11
+ import { LocationRegistry, defaultLocationConfig, } from "./locations.js";
10
12
  /** Validate and default the policy configuration. */
11
13
  export const Config = z.object({
12
14
  tools: z.object({
@@ -29,6 +31,14 @@ export const Config = z.object({
29
31
  }),
30
32
  metaTools: z.array(z.string()).default(['meta_search', 'meta_invoke']),
31
33
  // schemastery object properties are optional-by-default; no `.optional()` needed.
34
+ patchFile: z.string(),
35
+ skillsDir: z.string(),
36
+ /**
37
+ * How long a tier change waits before it is written to the patch file. Long
38
+ * enough that a burst of clicks produces one write, because every write makes
39
+ * dsh hot-reload this plugin and re-run the catalog enumeration.
40
+ */
41
+ persistDebounceMs: z.number().default(1500),
32
42
  });
33
43
  export const DEFAULT_META_TOOLS = ['meta_search', 'meta_invoke'];
34
44
  /**
@@ -197,37 +207,149 @@ export async function apply(ctx, config = {}) {
197
207
  if (legacyTools || legacySkills) {
198
208
  ctx.logger.warn('capability-policy: legacy rule keys `exposed`/`progressive`/`blocked` were auto-mapped to `resident`/`on-demand`/`disabled`; edit the profile patch to persist the new keys');
199
209
  }
200
- // Mutable runtime state so the management surface (能力管理) can live-update
210
+ // Mutable runtime state so the management surface (能力菜单) can live-update
201
211
  // the policy without a reload.
202
212
  let current = normalized;
203
213
  let metaTools = [...(normalized.metaTools ?? DEFAULT_META_TOOLS)];
204
214
  let metaToolSet = new Set(metaTools);
205
215
  let toolCompiled;
206
216
  let skillCompiled;
207
- const recompile = () => {
208
- const toolRules = compileSet(current.tools);
209
- const skillRules = compileSet(current.skills);
217
+ // Location registry: the places capabilities come from. Editing the patch
218
+ // file makes dsh hot-reload and mount/unmount the server itself, so this
219
+ // plugin never imports or drives `dsh-mcp-client` directly.
220
+ const defaults = defaultLocationConfig();
221
+ const patchFile = (config.patchFile ?? defaults.patchFile).trim();
222
+ const locations = new LocationRegistry(ctx, {
223
+ patchFile,
224
+ skillsDir: (config.skillsDir ?? defaults.skillsDir).trim(),
225
+ });
226
+ /**
227
+ * Tier rules are persisted into the profile patch, in the entry the bundle
228
+ * already declares for this plugin. Until now that config field was resolved
229
+ * and never read: the surface edited memory only, so every tier change was
230
+ * lost on restart.
231
+ *
232
+ * Persisting is deferred rather than done per click. A click recompiles the
233
+ * rule sets in memory, which is what makes it feel instant; a patch write, by
234
+ * contrast, makes dsh hot-reload this plugin — and its mount awaits a full
235
+ * catalog enumeration. Debouncing puts that cost after the operator stops
236
+ * clicking instead of on every click.
237
+ */
238
+ const POLICY_ENTRY_ID = 'capability-menu-policy';
239
+ const POLICY_ENTRY_NAME = '@daweifu/capability-menu/policy';
240
+ const persistDebounceMs = config.persistDebounceMs ?? 1500;
241
+ let persistTimer;
242
+ /** Order-insensitive signature of the two rule sets, for the no-op check. */
243
+ const tierSignature = (rules) => {
244
+ if (rules === null || typeof rules !== 'object')
245
+ return '';
246
+ const record = rules;
247
+ return ['resident', 'on-demand', 'disabled']
248
+ .map(tier => Array.isArray(record[tier]) ? [...record[tier]].sort().join('\u0000') : '')
249
+ .join('\u0001');
250
+ };
251
+ /** Write the current rule sets into the patch, when they differ from the file. */
252
+ const persistTiers = async () => {
253
+ if (patchFile.length === 0)
254
+ return;
255
+ try {
256
+ const written = await mutatePatch(patchFile, doc => {
257
+ const existing = findEntry(doc, POLICY_ENTRY_ID);
258
+ // Merge instead of replace: the row can carry keys this surface never
259
+ // edits (`metaTools`, a legacy rule spelling), and patch semantics
260
+ // replace the whole `config:` value.
261
+ const raw = existing?.get('config');
262
+ const prior = raw?.toJSON?.();
263
+ const next = typeof prior === 'object' && prior !== null
264
+ ? { ...prior }
265
+ : {};
266
+ next['tools'] = current.tools ?? {};
267
+ next['skills'] = current.skills ?? {};
268
+ if (existing === undefined) {
269
+ // An override row, never an insert: this file is normally not where the
270
+ // policy row comes from — the package's own bundle patch inserts it,
271
+ // and a home/profile layer is applied after that one. Inserting a
272
+ // second row with the same id would compose into a tree the loader
273
+ // rejects (`duplicate loader entry id: capability-menu-policy`), so the
274
+ // config has to be landed on the row that already exists.
275
+ addEntryOverride(doc, { id: POLICY_ENTRY_ID, name: POLICY_ENTRY_NAME, config: next });
276
+ return true;
277
+ }
278
+ // Rewriting an unchanged config would still make dsh reload the plugin.
279
+ if (tierSignature(prior) === tierSignature(next))
280
+ return false;
281
+ return setEntryConfig(doc, POLICY_ENTRY_ID, next);
282
+ });
283
+ if (written)
284
+ ctx.logger.info(`capability-policy: persisted tier rules to ${patchFile}`);
285
+ }
286
+ catch (error) {
287
+ ctx.logger.warn(`capability-policy: cannot persist tier rules to ${patchFile}: ${String(error)}`);
288
+ }
289
+ };
290
+ const schedulePersistTiers = () => {
291
+ if (patchFile.length === 0)
292
+ return;
293
+ if (persistTimer !== undefined)
294
+ clearTimeout(persistTimer);
295
+ persistTimer = setTimeout(() => {
296
+ persistTimer = undefined;
297
+ void persistTiers();
298
+ }, persistDebounceMs);
299
+ };
300
+ // A pending write must not be dropped when the plugin is torn down (a hot
301
+ // reload tears it down): flush it, so the file matches the state that was
302
+ // live. The flush finds the config unchanged and writes nothing, so it cannot
303
+ // start a reload loop.
304
+ ctx.effect(() => () => {
305
+ if (persistTimer === undefined)
306
+ return;
307
+ clearTimeout(persistTimer);
308
+ persistTimer = undefined;
309
+ void persistTiers();
310
+ }, 'capability-menu-policy: flush tier persistence');
311
+ /**
312
+ * Compile a candidate config into rule sets without touching live state.
313
+ * Meta tools are the control-plane escape hatch: blocking one is a
314
+ * misconfiguration that must fail loud, never silently disable the surface.
315
+ * Throws before anything is committed when validation fails.
316
+ */
317
+ const compileConfig = (candidate, meta) => {
318
+ const toolRules = compileSet(candidate.tools);
319
+ const skillRules = compileSet(candidate.skills);
210
320
  // Normalize tool/skill rule kinds for matching.
211
- toolCompiled = {
321
+ const tools = {
212
322
  resident: toolRules.resident.map(rule => ({ ...rule, kind: 'tool' })),
213
323
  onDemand: toolRules.onDemand.map(rule => ({ ...rule, kind: 'tool' })),
214
324
  disabled: toolRules.disabled.map(rule => ({ ...rule, kind: 'tool' })),
215
325
  };
216
- skillCompiled = {
326
+ const skills = {
217
327
  resident: skillRules.resident.map(rule => ({ ...rule, kind: 'skill' })),
218
328
  onDemand: skillRules.onDemand.map(rule => ({ ...rule, kind: 'skill' })),
219
329
  disabled: skillRules.disabled.map(rule => ({ ...rule, kind: 'skill' })),
220
330
  };
221
- // Meta tools are the control-plane escape hatch: blocking one is a
222
- // misconfiguration that must fail loud, never silently disable the surface.
223
- for (const name of metaTools) {
331
+ for (const name of meta) {
224
332
  const target = { id: name, name, server: serverNameOf(name), kind: 'tool', ruleKind: 'tool' };
225
- if (anyRuleMatches(toolCompiled.disabled, target)) {
333
+ if (anyRuleMatches(tools.disabled, target)) {
226
334
  throw new Error(`meta tool "${name}" cannot be disabled; remove it from tools.disabled`);
227
335
  }
228
336
  }
337
+ return { tools, skills };
338
+ };
339
+ /**
340
+ * Compile, then commit. Compiling first keeps a rejected update from landing
341
+ * half-applied: `current`, `metaTools` and the rule sets move together or not
342
+ * at all.
343
+ */
344
+ const applyConfig = (candidate, meta) => {
345
+ const compiled = compileConfig(candidate, meta);
346
+ current = candidate;
347
+ metaTools = [...meta];
348
+ metaToolSet = new Set(metaTools);
349
+ toolCompiled = compiled.tools;
350
+ skillCompiled = compiled.skills;
229
351
  };
230
- recompile();
352
+ applyConfig(normalized, [...(normalized.metaTools ?? DEFAULT_META_TOOLS)]);
231
353
  const service = {
232
354
  classifyTool(name) {
233
355
  const server = serverNameOf(name);
@@ -268,18 +390,31 @@ export async function apply(ctx, config = {}) {
268
390
  return { ...current };
269
391
  },
270
392
  async updateConfig(partial) {
271
- current = { ...current, ...partial };
272
- if (partial.metaTools !== undefined) {
273
- metaTools = [...(partial.metaTools ?? DEFAULT_META_TOOLS)];
274
- metaToolSet = new Set(metaTools);
275
- }
276
- recompile();
277
- // Classification changed → the on-demand catalog on disk is stale (a
278
- // capability reclassified to disabled must disappear from the grep-able
279
- // YAML). Await the registry refresh so callers get a completion signal:
280
- // the disk catalog is rewritten before the call returns, closing the
281
- // window where a disabled capability stayed visible on disk.
282
- await ctx.capability.refresh();
393
+ // Only the materialized On-demand catalog on disk depends on the
394
+ // classification: the model-facing projection is derived from the rules
395
+ // on every assemble, so it needs no rebuild. Cycling a capability
396
+ // between Resident and Disabled changes nothing on disk, so it must not
397
+ // pay for a full re-enumeration.
398
+ const updateStartedAt = Date.now();
399
+ const before = onDemandSignature();
400
+ // Validate first, commit second (see `applyConfig`): a rejected update
401
+ // leaves the live policy exactly as it was.
402
+ applyConfig({ ...current, ...partial }, partial.metaTools !== undefined ? [...(partial.metaTools ?? DEFAULT_META_TOOLS)] : metaTools);
403
+ // The On-demand set moved, so the grep-able YAML is stale (and a
404
+ // capability reclassified to Disabled must disappear from it). Re-emit it
405
+ // from the index we already have and await that: it is a filter plus a
406
+ // small write, so awaiting keeps the file consistent with what the UI is
407
+ // about to read. `requestRefresh` would instead re-enumerate every tool
408
+ // and every agent preset scope — no inventory changed, and the cost of
409
+ // that was exactly what made a tier click feel like a hang.
410
+ const moved = onDemandSignature() !== before;
411
+ if (moved)
412
+ await ctx.capability.rewriteCatalog();
413
+ // One line per tier write: the whole handler's cost, and whether the
414
+ // catalog was re-emitted. A slow click with a fast line here means the
415
+ // time went somewhere else (a queued rebuild, the carrier, the browser).
416
+ ctx.logger.info(`capability-policy: tier write took ${Date.now() - updateStartedAt}ms (catalog rewritten: ${moved})`);
417
+ schedulePersistTiers();
283
418
  },
284
419
  classifyAll() {
285
420
  // The registry default maxResults (20) would truncate the management
@@ -287,18 +422,62 @@ export async function apply(ctx, config = {}) {
287
422
  return ctx.capability.search({ maxResults: Number.MAX_SAFE_INTEGER }).map(summary => {
288
423
  const cls = service.classifyCapability(summary.id, summary.kind);
289
424
  const mandatory = summary.kind === 'tool' && metaToolSet.has(summary.id);
425
+ // Summaries carry no directory, so a skill's own is resolved from its
426
+ // record — the same lookup 纳入管理 itself uses to decide what to link.
427
+ const skillPath = summary.kind === 'skill'
428
+ ? ctx.capability.get(summary.id, 'skill')?.origin.path
429
+ : undefined;
290
430
  return {
291
431
  id: summary.id,
292
432
  kind: summary.kind,
293
433
  name: summary.name,
294
434
  ...summary.server !== undefined ? { server: summary.server } : {},
295
435
  ...summary.source !== undefined ? { source: summary.source } : {},
436
+ ...skillPath !== undefined ? { path: skillPath } : {},
296
437
  class: cls,
297
438
  classLabel: CLASS_LABELS[cls],
298
439
  mandatory,
299
440
  };
300
441
  });
301
442
  },
443
+ // — location registry —
444
+ listLocations() {
445
+ return locations.listMcp();
446
+ },
447
+ addLocation(input) {
448
+ return locations.addMcp(input);
449
+ },
450
+ removeLocation(id) {
451
+ return locations.removeMcp(id);
452
+ },
453
+ updateLocation(id, input) {
454
+ return locations.updateMcp(id, input);
455
+ },
456
+ listSkillLocations() {
457
+ return locations.listSkills();
458
+ },
459
+ addSkillLocation(dir, projectPath) {
460
+ return locations.addSkill(dir, projectPath);
461
+ },
462
+ removeSkillLocation(name, entryDir) {
463
+ return locations.removeSkill(name, entryDir);
464
+ },
465
+ updateSkillLocation(name, dir, entryDir) {
466
+ return locations.updateSkill(name, dir, entryDir);
467
+ },
468
+ };
469
+ /**
470
+ * Fingerprint of the capability ids currently classified On-demand. This set
471
+ * is the only thing a classification change can invalidate on disk, so it
472
+ * decides whether `updateConfig` needs to request a rebuild at all.
473
+ */
474
+ const onDemandSignature = () => {
475
+ const ids = ctx.capability
476
+ .search({ maxResults: Number.MAX_SAFE_INTEGER })
477
+ .filter(summary => service.classifyCapability(summary.id, summary.kind) === 'on-demand')
478
+ .map(summary => `${summary.kind}:${summary.id}`);
479
+ ids.sort();
480
+ return ids.join('\u0000');
302
481
  };
303
482
  // Disabled capabilities are a hard deny at the execution surface, not just a
304
483
  // projection concern: a hallucinated direct call to a disabled tool (or to the
@@ -331,11 +510,16 @@ export async function apply(ctx, config = {}) {
331
510
  let changed = false;
332
511
  const messages = decision.messages.map(message => {
333
512
  const source = message.source;
334
- if (source.kind !== 'skill-catalog')
513
+ if (source?.kind !== 'skill-catalog')
335
514
  return message;
336
- const entries = Array.isArray(source.entries)
337
- ? source.entries.filter((entry) => typeof entry === 'object' && entry !== null && typeof entry.name === 'string')
338
- : [];
515
+ if (!Array.isArray(source.entries)) {
516
+ // Cannot tell which skills the message lists, so it stays untouched —
517
+ // but say so: silently skipping the filter would leak Disabled skills
518
+ // into the model surface with no trace.
519
+ ctx.logger.warn('capability-policy: skill-catalog message has no entries array; leaving it unfiltered');
520
+ return message;
521
+ }
522
+ const entries = source.entries.filter((entry) => typeof entry === 'object' && entry !== null && typeof entry.name === 'string');
339
523
  const kept = entries
340
524
  .filter(entry => service.isResidentSkill(entry.name))
341
525
  .map(entry => ({ name: entry.name, description: entry.description ?? '' }));
package/lib/policy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}