@tarquinen/opencode-dcp 1.1.0-beta.1 → 1.1.0-beta.2

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 (58) hide show
  1. package/README.md +64 -64
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +11 -10
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/config.d.ts +17 -23
  6. package/dist/lib/config.d.ts.map +1 -1
  7. package/dist/lib/config.js +316 -274
  8. package/dist/lib/config.js.map +1 -1
  9. package/dist/lib/hooks.d.ts.map +1 -1
  10. package/dist/lib/hooks.js +3 -0
  11. package/dist/lib/hooks.js.map +1 -1
  12. package/dist/lib/logger.d.ts +17 -0
  13. package/dist/lib/logger.d.ts.map +1 -1
  14. package/dist/lib/logger.js +90 -7
  15. package/dist/lib/logger.js.map +1 -1
  16. package/dist/lib/messages/prune.d.ts.map +1 -1
  17. package/dist/lib/messages/prune.js +37 -28
  18. package/dist/lib/messages/prune.js.map +1 -1
  19. package/dist/lib/messages/utils.js +7 -7
  20. package/dist/lib/model-selector.d.ts +3 -3
  21. package/dist/lib/model-selector.d.ts.map +1 -1
  22. package/dist/lib/model-selector.js +34 -34
  23. package/dist/lib/model-selector.js.map +1 -1
  24. package/dist/lib/prompt.d.ts.map +1 -1
  25. package/dist/lib/prompt.js +36 -24
  26. package/dist/lib/prompt.js.map +1 -1
  27. package/dist/lib/shared-utils.d.ts.map +1 -1
  28. package/dist/lib/shared-utils.js +1 -1
  29. package/dist/lib/shared-utils.js.map +1 -1
  30. package/dist/lib/state/persistence.d.ts.map +1 -1
  31. package/dist/lib/state/persistence.js +4 -7
  32. package/dist/lib/state/persistence.js.map +1 -1
  33. package/dist/lib/state/state.d.ts.map +1 -1
  34. package/dist/lib/state/state.js +7 -5
  35. package/dist/lib/state/state.js.map +1 -1
  36. package/dist/lib/state/tool-cache.d.ts.map +1 -1
  37. package/dist/lib/state/tool-cache.js +7 -13
  38. package/dist/lib/state/tool-cache.js.map +1 -1
  39. package/dist/lib/strategies/deduplication.js +3 -3
  40. package/dist/lib/strategies/deduplication.js.map +1 -1
  41. package/dist/lib/strategies/on-idle.d.ts.map +1 -1
  42. package/dist/lib/strategies/on-idle.js +24 -24
  43. package/dist/lib/strategies/on-idle.js.map +1 -1
  44. package/dist/lib/strategies/supersede-writes.js +4 -4
  45. package/dist/lib/strategies/supersede-writes.js.map +1 -1
  46. package/dist/lib/strategies/tools.d.ts.map +1 -1
  47. package/dist/lib/strategies/tools.js +23 -17
  48. package/dist/lib/strategies/tools.js.map +1 -1
  49. package/dist/lib/strategies/utils.d.ts.map +1 -1
  50. package/dist/lib/strategies/utils.js +20 -9
  51. package/dist/lib/strategies/utils.js.map +1 -1
  52. package/dist/lib/ui/notification.d.ts.map +1 -1
  53. package/dist/lib/ui/notification.js +26 -23
  54. package/dist/lib/ui/notification.js.map +1 -1
  55. package/dist/lib/ui/utils.d.ts.map +1 -1
  56. package/dist/lib/ui/utils.js +9 -9
  57. package/dist/lib/ui/utils.js.map +1 -1
  58. package/package.json +61 -58
package/README.md CHANGED
@@ -13,7 +13,7 @@ Add to your OpenCode config:
13
13
  ```jsonc
14
14
  // opencode.jsonc
15
15
  {
16
- "plugin": ["@tarquinen/opencode-dcp@latest"]
16
+ "plugin": ["@tarquinen/opencode-dcp@latest"],
17
17
  }
18
18
  ```
19
19
 
@@ -56,82 +56,82 @@ DCP uses its own config file:
56
56
 
57
57
  ```jsonc
58
58
  {
59
- // Enable or disable the plugin
60
- "enabled": true,
61
- // Enable debug logging to ~/.config/opencode/logs/dcp/
62
- "debug": false,
63
- // Summary display: "off", "minimal", or "detailed"
64
- "pruningSummary": "detailed",
65
- // Strategies for pruning tokens from chat history
66
- "strategies": {
67
- // Remove duplicate tool calls (same tool with same arguments)
68
- "deduplication": {
69
- "enabled": true,
70
- // Additional tools to protect from pruning
71
- "protectedTools": []
72
- },
73
- // Prune write tool inputs when the file has been subsequently read
74
- "supersedeWrites": {
75
- "enabled": true
76
- },
77
- // Removes tool content from context without preservation (for completed tasks or noise)
78
- "discardTool": {
79
- "enabled": true,
80
- // Additional tools to protect from pruning
81
- "protectedTools": [],
82
- // Protect from pruning for <turn protection> message turns
83
- "turnProtection": {
59
+ // Enable or disable the plugin
60
+ "enabled": true,
61
+ // Enable debug logging to ~/.config/opencode/logs/dcp/
62
+ "debug": false,
63
+ // Notification display: "off", "minimal", or "detailed"
64
+ "pruneNotification": "detailed",
65
+ // Protect from pruning for <turns> message turns
66
+ "turnProtection": {
84
67
  "enabled": false,
85
- "turns": 4
86
- },
87
- // Nudge the LLM to use the discard tool (every <frequency> tool results)
88
- "nudge": {
89
- "enabled": true,
90
- "frequency": 10
91
- }
68
+ "turns": 4,
92
69
  },
93
- // Distills key findings into preserved knowledge before removing raw content
94
- "extractTool": {
95
- "enabled": true,
96
- // Additional tools to protect from pruning
97
- "protectedTools": [],
98
- // Protect from pruning for <turn protection> message turns
99
- "turnProtection": {
100
- "enabled": false,
101
- "turns": 4
102
- },
103
- // Nudge the LLM to use the extract tool (every <frequency> tool results)
104
- "nudge": {
105
- "enabled": true,
106
- "frequency": 10
107
- },
108
- // Show distillation content as an ignored message notification
109
- "showDistillation": false
70
+ // LLM-driven context pruning tools
71
+ "tools": {
72
+ // Shared settings for all prune tools
73
+ "settings": {
74
+ // Nudge the LLM to use prune tools (every <nudgeFrequency> tool results)
75
+ "nudgeEnabled": true,
76
+ "nudgeFrequency": 10,
77
+ // Additional tools to protect from pruning
78
+ "protectedTools": [],
79
+ },
80
+ // Removes tool content from context without preservation (for completed tasks or noise)
81
+ "discard": {
82
+ "enabled": true,
83
+ },
84
+ // Distills key findings into preserved knowledge before removing raw content
85
+ "extract": {
86
+ "enabled": true,
87
+ // Show distillation content as an ignored message notification
88
+ "showDistillation": false,
89
+ },
90
+ },
91
+ // Automatic pruning strategies
92
+ "strategies": {
93
+ // Remove duplicate tool calls (same tool with same arguments)
94
+ "deduplication": {
95
+ "enabled": true,
96
+ // Additional tools to protect from pruning
97
+ "protectedTools": [],
98
+ },
99
+ // Prune write tool inputs when the file has been subsequently read
100
+ "supersedeWrites": {
101
+ "enabled": true,
102
+ },
103
+ // (Legacy) Run an LLM to analyze what tool calls are no longer relevant on idle
104
+ "onIdle": {
105
+ "enabled": false,
106
+ // Additional tools to protect from pruning
107
+ "protectedTools": [],
108
+ // Override model for analysis (format: "provider/model")
109
+ // "model": "anthropic/claude-haiku-4-5",
110
+ // Show toast notifications when model selection fails
111
+ "showModelErrorToasts": true,
112
+ // When true, fallback models are not permitted
113
+ "strictModelSelection": false,
114
+ },
110
115
  },
111
- // (Legacy) Run an LLM to analyze what tool calls are no longer relevant on idle
112
- "onIdle": {
113
- "enabled": false,
114
- // Additional tools to protect from pruning
115
- "protectedTools": [],
116
- // Override model for analysis (format: "provider/model")
117
- // "model": "anthropic/claude-haiku-4-5",
118
- // Show toast notifications when model selection fails
119
- "showModelErrorToasts": true,
120
- // When true, fallback models are not permitted
121
- "strictModelSelection": false
122
- }
123
- }
124
116
  }
125
117
  ```
126
118
 
127
119
  </details>
128
120
 
121
+ ### Turn Protection
122
+
123
+ When enabled, turn protection prevents tool outputs from being pruned for a configurable number of message turns. This gives the AI time to reference recent tool outputs before they become prunable. Applies to both `discard` and `extract` tools, as well as automatic strategies.
124
+
129
125
  ### Protected Tools
130
126
 
131
127
  By default, these tools are always protected from pruning across all strategies:
132
128
  `task`, `todowrite`, `todoread`, `discard`, `extract`, `batch`
133
129
 
134
- The `protectedTools` arrays in each strategy add to this default list.
130
+ The `protectedTools` arrays in each section add to this default list:
131
+
132
+ - `tools.settings.protectedTools` — Protects tools from the `discard` and `extract` tools
133
+ - `strategies.deduplication.protectedTools` — Protects tools from deduplication
134
+ - `strategies.onIdle.protectedTools` — Protects tools from on-idle analysis
135
135
 
136
136
  ### Config Precedence
137
137
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAQjD,QAAA,MAAM,MAAM,EAAE,MAkFK,CAAA;AAEnB,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAQjD,QAAA,MAAM,MAAM,EAAE,MAuFK,CAAA;AAEnB,eAAe,MAAM,CAAA"}
package/dist/index.js CHANGED
@@ -10,7 +10,8 @@ const plugin = (async (ctx) => {
10
10
  return {};
11
11
  }
12
12
  // Suppress AI SDK warnings
13
- if (typeof globalThis !== 'undefined') {
13
+ if (typeof globalThis !== "undefined") {
14
+ ;
14
15
  globalThis.AI_SDK_LOG_WARNINGS = false;
15
16
  }
16
17
  const logger = new Logger(config.debug);
@@ -20,8 +21,8 @@ const plugin = (async (ctx) => {
20
21
  });
21
22
  return {
22
23
  "experimental.chat.system.transform": async (_input, output) => {
23
- const discardEnabled = config.strategies.discardTool.enabled;
24
- const extractEnabled = config.strategies.extractTool.enabled;
24
+ const discardEnabled = config.tools.discard.enabled;
25
+ const extractEnabled = config.tools.extract.enabled;
25
26
  let promptName;
26
27
  if (discardEnabled && extractEnabled) {
27
28
  promptName = "system/system-prompt-both";
@@ -40,22 +41,22 @@ const plugin = (async (ctx) => {
40
41
  },
41
42
  "experimental.chat.messages.transform": createChatMessageTransformHandler(ctx.client, state, logger, config),
42
43
  tool: {
43
- ...(config.strategies.discardTool.enabled && {
44
+ ...(config.tools.discard.enabled && {
44
45
  discard: createDiscardTool({
45
46
  client: ctx.client,
46
47
  state,
47
48
  logger,
48
49
  config,
49
- workingDirectory: ctx.directory
50
+ workingDirectory: ctx.directory,
50
51
  }),
51
52
  }),
52
- ...(config.strategies.extractTool.enabled && {
53
+ ...(config.tools.extract.enabled && {
53
54
  extract: createExtractTool({
54
55
  client: ctx.client,
55
56
  state,
56
57
  logger,
57
58
  config,
58
- workingDirectory: ctx.directory
59
+ workingDirectory: ctx.directory,
59
60
  }),
60
61
  }),
61
62
  },
@@ -63,9 +64,9 @@ const plugin = (async (ctx) => {
63
64
  // Add enabled tools to primary_tools by mutating the opencode config
64
65
  // This works because config is cached and passed by reference
65
66
  const toolsToAdd = [];
66
- if (config.strategies.discardTool.enabled)
67
+ if (config.tools.discard.enabled)
67
68
  toolsToAdd.push("discard");
68
- if (config.strategies.extractTool.enabled)
69
+ if (config.tools.extract.enabled)
69
70
  toolsToAdd.push("extract");
70
71
  if (toolsToAdd.length > 0) {
71
72
  const existingPrimaryTools = opencodeConfig.experimental?.primary_tools ?? [];
@@ -73,7 +74,7 @@ const plugin = (async (ctx) => {
73
74
  ...opencodeConfig.experimental,
74
75
  primary_tools: [...existingPrimaryTools, ...toolsToAdd],
75
76
  };
76
- logger.info(`Added ${toolsToAdd.map(t => `'${t}'`).join(" and ")} to experimental.primary_tools via config mutation`);
77
+ logger.info(`Added ${toolsToAdd.map((t) => `'${t}'`).join(" and ")} to experimental.primary_tools via config mutation`);
77
78
  }
78
79
  },
79
80
  event: createEventHandler(ctx.client, config, state, logger, ctx.directory),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEnF,MAAM,MAAM,GAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAClC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,CAAA;IACb,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;QACnC,UAAkB,CAAC,mBAAmB,GAAG,KAAK,CAAA;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAA;IAElC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;KAChC,CAAC,CAAA;IAEF,OAAO;QACH,oCAAoC,EAAE,KAAK,EAAE,MAAe,EAAE,MAA4B,EAAE,EAAE;YAC1F,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAA;YAC5D,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAA;YAE5D,IAAI,UAAkB,CAAA;YACtB,IAAI,cAAc,IAAI,cAAc,EAAE,CAAC;gBACnC,UAAU,GAAG,2BAA2B,CAAA;YAC5C,CAAC;iBAAM,IAAI,cAAc,EAAE,CAAC;gBACxB,UAAU,GAAG,8BAA8B,CAAA;YAC/C,CAAC;iBAAM,IAAI,cAAc,EAAE,CAAC;gBACxB,UAAU,GAAG,8BAA8B,CAAA;YAC/C,CAAC;iBAAM,CAAC;gBACJ,OAAM;YACV,CAAC;YAED,MAAM,eAAe,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;YAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACvC,CAAC;QACD,sCAAsC,EAAE,iCAAiC,CACrE,GAAG,CAAC,MAAM,EACV,KAAK,EACL,MAAM,EACN,MAAM,CACT;QACD,IAAI,EAAE;YACF,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,IAAI;gBACzC,OAAO,EAAE,iBAAiB,CAAC;oBACvB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,KAAK;oBACL,MAAM;oBACN,MAAM;oBACN,gBAAgB,EAAE,GAAG,CAAC,SAAS;iBAClC,CAAC;aACL,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,IAAI;gBACzC,OAAO,EAAE,iBAAiB,CAAC;oBACvB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,KAAK;oBACL,MAAM;oBACN,MAAM;oBACN,gBAAgB,EAAE,GAAG,CAAC,SAAS;iBAClC,CAAC;aACL,CAAC;SACL;QACD,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;YAC7B,qEAAqE;YACrE,8DAA8D;YAC9D,MAAM,UAAU,GAAa,EAAE,CAAA;YAC/B,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO;gBAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrE,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO;gBAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAErE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,oBAAoB,GAAG,cAAc,CAAC,YAAY,EAAE,aAAa,IAAI,EAAE,CAAA;gBAC7E,cAAc,CAAC,YAAY,GAAG;oBAC1B,GAAG,cAAc,CAAC,YAAY;oBAC9B,aAAa,EAAE,CAAC,GAAG,oBAAoB,EAAE,GAAG,UAAU,CAAC;iBAC1D,CAAA;gBACD,MAAM,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAA;YACzH,CAAC;QACL,CAAC;QACD,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC;KAC9E,CAAA;AACL,CAAC,CAAkB,CAAA;AAEnB,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PluginInput } from '@opencode-ai/plugin';
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
2
  export interface Deduplication {
3
3
  enabled: boolean;
4
4
  protectedTools: string[];
@@ -10,45 +10,39 @@ export interface OnIdle {
10
10
  strictModelSelection?: boolean;
11
11
  protectedTools: string[];
12
12
  }
13
- export interface PruneToolNudge {
13
+ export interface DiscardTool {
14
14
  enabled: boolean;
15
- frequency: number;
16
15
  }
17
- export interface PruneToolTurnProtection {
16
+ export interface ExtractTool {
18
17
  enabled: boolean;
19
- turns: number;
18
+ showDistillation: boolean;
20
19
  }
21
- export interface PruneTool {
22
- enabled: boolean;
20
+ export interface ToolSettings {
21
+ nudgeEnabled: boolean;
22
+ nudgeFrequency: number;
23
23
  protectedTools: string[];
24
- turnProtection: PruneToolTurnProtection;
25
- nudge: PruneToolNudge;
26
24
  }
27
- export interface DiscardTool {
28
- enabled: boolean;
29
- protectedTools: string[];
30
- turnProtection: PruneToolTurnProtection;
31
- nudge: PruneToolNudge;
25
+ export interface Tools {
26
+ settings: ToolSettings;
27
+ discard: DiscardTool;
28
+ extract: ExtractTool;
32
29
  }
33
- export interface ExtractTool {
30
+ export interface SupersedeWrites {
34
31
  enabled: boolean;
35
- protectedTools: string[];
36
- turnProtection: PruneToolTurnProtection;
37
- nudge: PruneToolNudge;
38
- showDistillation: boolean;
39
32
  }
40
- export interface SupersedeWrites {
33
+ export interface TurnProtection {
41
34
  enabled: boolean;
35
+ turns: number;
42
36
  }
43
37
  export interface PluginConfig {
44
38
  enabled: boolean;
45
39
  debug: boolean;
46
- pruningSummary: "off" | "minimal" | "detailed";
40
+ pruneNotification: "off" | "minimal" | "detailed";
41
+ turnProtection: TurnProtection;
42
+ tools: Tools;
47
43
  strategies: {
48
44
  deduplication: Deduplication;
49
45
  onIdle: OnIdle;
50
- discardTool: DiscardTool;
51
- extractTool: ExtractTool;
52
46
  supersedeWrites: SupersedeWrites;
53
47
  };
54
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,MAAM;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,cAAc,EAAE,uBAAuB,CAAA;IACvC,KAAK,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,cAAc,EAAE,uBAAuB,CAAA;IACvC,KAAK,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,cAAc,EAAE,uBAAuB,CAAA;IACvC,KAAK,EAAE,cAAc,CAAA;IACrB,gBAAgB,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAA;IAC9C,UAAU,EAAE;QACR,aAAa,EAAE,aAAa,CAAA;QAC5B,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,EAAE,WAAW,CAAA;QACxB,WAAW,EAAE,WAAW,CAAA;QACxB,eAAe,EAAE,eAAe,CAAA;KACnC,CAAA;CACJ;AAKD,eAAO,MAAM,iBAAiB,aA0C5B,CAAA;AAgBF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAG9E;AA2dD,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,YAAY,CA4FxD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,MAAM;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,YAAY;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,KAAK;IAClB,QAAQ,EAAE,YAAY,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,EAAE,WAAW,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,iBAAiB,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAA;IACjD,cAAc,EAAE,cAAc,CAAA;IAC9B,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE;QACR,aAAa,EAAE,aAAa,CAAA;QAC5B,MAAM,EAAE,MAAM,CAAA;QACd,eAAe,EAAE,eAAe,CAAA;KACnC,CAAA;CACJ;AAKD,eAAO,MAAM,iBAAiB,aAkC5B,CAAA;AAgBF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAG9E;AAmiBD,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,YAAY,CA2GxD"}