@wrongstack/plugins 0.292.1 → 0.295.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.
Files changed (189) hide show
  1. package/README.md +7 -71
  2. package/dist/accessibility-auditor/index.d.ts +1 -1
  3. package/dist/accessibility-auditor/index.d.ts.map +1 -1
  4. package/dist/accessibility-auditor.js +31 -31
  5. package/dist/agent-handoff/index.d.ts +1 -1
  6. package/dist/agent-handoff/index.d.ts.map +1 -1
  7. package/dist/api-compatibility-gate/index.d.ts +1 -1
  8. package/dist/api-compatibility-gate/index.d.ts.map +1 -1
  9. package/dist/api-compatibility-gate.js +21 -16
  10. package/dist/audit/index.d.ts +386 -0
  11. package/dist/audit/index.d.ts.map +1 -0
  12. package/dist/audit.d.ts +1 -0
  13. package/dist/audit.js +454 -0
  14. package/dist/auto-doc/index.d.ts +1 -1
  15. package/dist/auto-doc/index.d.ts.map +1 -1
  16. package/dist/auto-escalate/index.d.ts +1 -1
  17. package/dist/auto-escalate/index.d.ts.map +1 -1
  18. package/dist/auto-i18n-extractor/index.d.ts +1 -1
  19. package/dist/auto-i18n-extractor/index.d.ts.map +1 -1
  20. package/dist/auto-i18n-extractor.js +2 -1
  21. package/dist/branch-guard/index.d.ts +1 -1
  22. package/dist/branch-guard/index.d.ts.map +1 -1
  23. package/dist/branch-guard.js +9 -1
  24. package/dist/catalog.d.ts +5 -30
  25. package/dist/catalog.d.ts.map +1 -1
  26. package/dist/changelog-writer/index.d.ts +1 -1
  27. package/dist/changelog-writer/index.d.ts.map +1 -1
  28. package/dist/checkpoint/index.d.ts +1 -1
  29. package/dist/checkpoint/index.d.ts.map +1 -1
  30. package/dist/checkpoint.js +7 -8
  31. package/dist/code-metrics/index.d.ts +1 -1
  32. package/dist/code-metrics/index.d.ts.map +1 -1
  33. package/dist/code-metrics.js +29 -29
  34. package/dist/commit-validator/index.d.ts +1 -1
  35. package/dist/commit-validator/index.d.ts.map +1 -1
  36. package/dist/config-validator/index.d.ts +1 -1
  37. package/dist/config-validator/index.d.ts.map +1 -1
  38. package/dist/context-pins/index.d.ts +1 -1
  39. package/dist/context-pins/index.d.ts.map +1 -1
  40. package/dist/cost-tracker/index.d.ts +1 -1
  41. package/dist/cost-tracker/index.d.ts.map +1 -1
  42. package/dist/cost-tracker.js +9 -2
  43. package/dist/cron/index.d.ts +1 -1
  44. package/dist/cron/index.d.ts.map +1 -1
  45. package/dist/dead-code-detector/index.d.ts +1 -1
  46. package/dist/dead-code-detector/index.d.ts.map +1 -1
  47. package/dist/dead-code-detector.js +26 -18
  48. package/dist/dep-guard/index.d.ts +1 -1
  49. package/dist/dep-guard/index.d.ts.map +1 -1
  50. package/dist/dependency-vulnerability-gate/index.d.ts +1 -1
  51. package/dist/dependency-vulnerability-gate/index.d.ts.map +1 -1
  52. package/dist/dependency-vulnerability-gate.js +34 -22
  53. package/dist/diff-summary/index.d.ts +1 -1
  54. package/dist/diff-summary/index.d.ts.map +1 -1
  55. package/dist/diff-summary.js +28 -29
  56. package/dist/doc-sync-guard/index.d.ts +1 -1
  57. package/dist/doc-sync-guard/index.d.ts.map +1 -1
  58. package/dist/doc-sync-guard.js +2 -1
  59. package/dist/duplicate-code-detector/index.d.ts +26 -1
  60. package/dist/duplicate-code-detector/index.d.ts.map +1 -1
  61. package/dist/duplicate-code-detector.js +178 -67
  62. package/dist/error-lens/index.d.ts +1 -1
  63. package/dist/error-lens/index.d.ts.map +1 -1
  64. package/dist/factories/index.d.ts +4 -0
  65. package/dist/factories/index.d.ts.map +1 -0
  66. package/dist/factories.d.ts +1 -0
  67. package/dist/factories.js +74 -0
  68. package/dist/feature-flag-tracker/index.d.ts +1 -1
  69. package/dist/feature-flag-tracker/index.d.ts.map +1 -1
  70. package/dist/feature-flag-tracker.js +29 -29
  71. package/dist/file-watcher/index.d.ts +1 -1
  72. package/dist/file-watcher/index.d.ts.map +1 -1
  73. package/dist/format-on-save/index.d.ts +1 -1
  74. package/dist/format-on-save/index.d.ts.map +1 -1
  75. package/dist/format-on-save.js +2 -1
  76. package/dist/generated-plugin-exports.d.ts +65 -0
  77. package/dist/generated-plugin-exports.d.ts.map +1 -0
  78. package/dist/git-autocommit/index.d.ts +1 -1
  79. package/dist/git-autocommit/index.d.ts.map +1 -1
  80. package/dist/import-organizer/index.d.ts +1 -1
  81. package/dist/import-organizer/index.d.ts.map +1 -1
  82. package/dist/import-organizer.js +2 -1
  83. package/dist/index.d.ts +4 -183
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +17675 -17377
  86. package/dist/injection-shield/index.d.ts +1 -1
  87. package/dist/injection-shield/index.d.ts.map +1 -1
  88. package/dist/interface-contract-guard/index.d.ts +1 -1
  89. package/dist/interface-contract-guard/index.d.ts.map +1 -1
  90. package/dist/interface-contract-guard.js +29 -29
  91. package/dist/knowledge-graph/index.d.ts +1 -1
  92. package/dist/knowledge-graph/index.d.ts.map +1 -1
  93. package/dist/license-audit-gate/index.d.ts +1 -1
  94. package/dist/license-audit-gate/index.d.ts.map +1 -1
  95. package/dist/lint-gate/index.d.ts +1 -1
  96. package/dist/lint-gate/index.d.ts.map +1 -1
  97. package/dist/lint-gate.js +10 -1
  98. package/dist/llm-cache/index.d.ts +5 -1
  99. package/dist/llm-cache/index.d.ts.map +1 -1
  100. package/dist/llm-cache.js +16 -8
  101. package/dist/loop-breaker/index.d.ts +1 -1
  102. package/dist/loop-breaker/index.d.ts.map +1 -1
  103. package/dist/loop-breaker.js +10 -4
  104. package/dist/manifest/index.d.ts +16 -0
  105. package/dist/manifest/index.d.ts.map +1 -0
  106. package/dist/manifest.d.ts +1 -0
  107. package/dist/manifest.js +152 -0
  108. package/dist/migration-planner/index.d.ts +1 -1
  109. package/dist/migration-planner/index.d.ts.map +1 -1
  110. package/dist/migration-planner.js +2 -1
  111. package/dist/model-router/index.d.ts +1 -1
  112. package/dist/model-router/index.d.ts.map +1 -1
  113. package/dist/notify-hub/index.d.ts +1 -1
  114. package/dist/notify-hub/index.d.ts.map +1 -1
  115. package/dist/notify-hub/webhook-channel.d.ts +1 -1
  116. package/dist/notify-hub/webhook-channel.d.ts.map +1 -1
  117. package/dist/path-guard/index.d.ts +1 -1
  118. package/dist/path-guard/index.d.ts.map +1 -1
  119. package/dist/performance-regression-gate/index.d.ts +1 -1
  120. package/dist/performance-regression-gate/index.d.ts.map +1 -1
  121. package/dist/plugin-stack-observer/index.d.ts +1 -1
  122. package/dist/plugin-stack-observer/index.d.ts.map +1 -1
  123. package/dist/pr-drafter/index.d.ts +1 -1
  124. package/dist/pr-drafter/index.d.ts.map +1 -1
  125. package/dist/pr-drafter.js +28 -29
  126. package/dist/process-guard/index.d.ts +1 -1
  127. package/dist/process-guard/index.d.ts.map +1 -1
  128. package/dist/prompt-firewall/index.d.ts +1 -1
  129. package/dist/prompt-firewall/index.d.ts.map +1 -1
  130. package/dist/refactor-suggester/index.d.ts +1 -1
  131. package/dist/refactor-suggester/index.d.ts.map +1 -1
  132. package/dist/refactor-suggester.js +29 -29
  133. package/dist/release-notes-generator/index.d.ts +1 -1
  134. package/dist/release-notes-generator/index.d.ts.map +1 -1
  135. package/dist/release-notes-generator.js +29 -22
  136. package/dist/runtime/index.d.ts +15 -0
  137. package/dist/runtime/index.d.ts.map +1 -1
  138. package/dist/runtime/llm.d.ts +1 -1
  139. package/dist/runtime/llm.d.ts.map +1 -1
  140. package/dist/runtime.js +43 -2
  141. package/dist/schema-evolution-guard/index.d.ts +1 -1
  142. package/dist/schema-evolution-guard/index.d.ts.map +1 -1
  143. package/dist/schema-evolution-guard.js +2 -1
  144. package/dist/secret-scanner/index.d.ts +1 -1
  145. package/dist/secret-scanner/index.d.ts.map +1 -1
  146. package/dist/secret-scanner.js +7 -1
  147. package/dist/security-hotspot-scanner/index.d.ts +1 -1
  148. package/dist/security-hotspot-scanner/index.d.ts.map +1 -1
  149. package/dist/security-hotspot-scanner.js +26 -19
  150. package/dist/semantic-search-indexer/index.d.ts +1 -1
  151. package/dist/semantic-search-indexer/index.d.ts.map +1 -1
  152. package/dist/semver-bump/index.d.ts +1 -1
  153. package/dist/semver-bump/index.d.ts.map +1 -1
  154. package/dist/semver-bump.js +78 -43
  155. package/dist/session-recap/index.d.ts +1 -1
  156. package/dist/session-recap/index.d.ts.map +1 -1
  157. package/dist/shell-check/index.d.ts +1 -1
  158. package/dist/shell-check/index.d.ts.map +1 -1
  159. package/dist/smart-rename/index.d.ts +1 -1
  160. package/dist/smart-rename/index.d.ts.map +1 -1
  161. package/dist/spec-linker/index.d.ts +1 -1
  162. package/dist/spec-linker/index.d.ts.map +1 -1
  163. package/dist/spec-linker.js +222 -20772
  164. package/dist/template-engine/index.d.ts +1 -1
  165. package/dist/template-engine/index.d.ts.map +1 -1
  166. package/dist/template-engine.js +4 -6
  167. package/dist/test-coverage-gate/index.d.ts +1 -1
  168. package/dist/test-coverage-gate/index.d.ts.map +1 -1
  169. package/dist/test-coverage-gate.js +29 -14
  170. package/dist/test-flake-detector/index.d.ts +1 -1
  171. package/dist/test-flake-detector/index.d.ts.map +1 -1
  172. package/dist/test-flake-detector.js +31 -20
  173. package/dist/test-generator/index.d.ts +1 -1
  174. package/dist/test-generator/index.d.ts.map +1 -1
  175. package/dist/test-runner-gate/index.d.ts +1 -1
  176. package/dist/test-runner-gate/index.d.ts.map +1 -1
  177. package/dist/test-runner-gate.js +2 -1
  178. package/dist/todo-listener/index.d.ts +1 -32
  179. package/dist/todo-listener/index.d.ts.map +1 -1
  180. package/dist/todo-tracker/index.d.ts +1 -1
  181. package/dist/todo-tracker/index.d.ts.map +1 -1
  182. package/dist/token-budget/index.d.ts +1 -1
  183. package/dist/token-budget/index.d.ts.map +1 -1
  184. package/dist/token-throttle/index.d.ts +1 -1
  185. package/dist/token-throttle/index.d.ts.map +1 -1
  186. package/dist/type-gate/index.d.ts +1 -1
  187. package/dist/type-gate/index.d.ts.map +1 -1
  188. package/dist/type-gate.js +11 -4
  189. package/package.json +80 -68
@@ -40,7 +40,7 @@
40
40
  *
41
41
  * @public
42
42
  */
43
- import type { Plugin } from '@wrongstack/core';
43
+ import type { Plugin } from '@wrongstack/core/types';
44
44
  export declare function scanForInjection(text: string): string[];
45
45
  declare const plugin: Plugin;
46
46
  export default plugin;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/injection-shield/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AA6G/C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMvD;AAMD,QAAA,MAAM,MAAM,EAAE,MAwJb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/injection-shield/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AA6GrD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMvD;AAMD,QAAA,MAAM,MAAM,EAAE,MAwJb,CAAC;eAEa,MAAM"}
@@ -23,7 +23,7 @@
23
23
  *
24
24
  * @public
25
25
  */
26
- import type { Plugin } from '@wrongstack/core';
26
+ import type { Plugin } from '@wrongstack/core/types';
27
27
  export interface InterfaceContractFinding {
28
28
  interfaceName: string;
29
29
  file: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interface-contract-guard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAS/C,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAqID,QAAA,MAAM,MAAM,EAAE,MAuMb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interface-contract-guard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AASrD,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAwID,QAAA,MAAM,MAAM,EAAE,MAuMb,CAAC;eAEa,MAAM"}
@@ -1,9 +1,8 @@
1
1
  // src/interface-contract-guard/index.ts
2
- import { readFileSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
3
  import { isAbsolute as isAbsolute2, relative as relative2, resolve as resolve2 } from "node:path";
4
4
 
5
5
  // src/runtime/index.ts
6
- import { existsSync, readdirSync, statSync } from "node:fs";
7
6
  import { basename, extname, isAbsolute, relative, resolve } from "node:path";
8
7
  var MAX_BUFFER_BYTES = 16 * 1024 * 1024;
9
8
  function hasLeadingDash(arg) {
@@ -17,44 +16,45 @@ function withinProjectPath(projectRoot, candidate) {
17
16
  return rel === "" || !rel.startsWith("..") && !isAbsolute(rel);
18
17
  }
19
18
  function withinProject(p) {
20
- return withinProjectPath(process.cwd(), p) || relative(process.cwd(), p) === ".";
19
+ const cwd = process.cwd();
20
+ return withinProjectPath(cwd, p) || relative(cwd, p) === ".";
21
21
  }
22
22
  var DEFAULT_EXCLUDE_DIRS = ["node_modules", "dist", ".git", "coverage"];
23
- function collectSourceFiles(root, opts) {
23
+ async function collectSourceFilesAsync(root, opts) {
24
+ const { readdir, stat } = await import("node:fs/promises");
24
25
  const files = [];
25
- if (!existsSync(root)) return files;
26
- const s = statSync(root);
27
- if (s.isFile()) {
28
- if (matchesExtension(root, opts.extensions)) files.push(root);
26
+ try {
27
+ const s = await stat(root);
28
+ if (s.isFile()) {
29
+ if (matchesExtension(root, opts.extensions)) files.push(root);
30
+ return files;
31
+ }
32
+ if (!s.isDirectory()) return files;
33
+ } catch {
29
34
  return files;
30
35
  }
31
- if (!s.isDirectory()) return files;
32
36
  const exclude = opts.excludeDirs ?? DEFAULT_EXCLUDE_DIRS;
33
- function walk(dir, depth) {
37
+ const excludeSet = new Set(exclude);
38
+ async function walk(dir, depth) {
34
39
  if (opts.maxDepth !== void 0 && depth > opts.maxDepth) return;
35
40
  let entries;
36
41
  try {
37
- entries = readdirSync(dir);
42
+ entries = await readdir(dir, { withFileTypes: true });
38
43
  } catch {
39
44
  return;
40
45
  }
46
+ entries.sort((a, b) => a.name.localeCompare(b.name));
41
47
  for (const entry of entries) {
42
- if (exclude.includes(entry)) continue;
43
- const full = resolve(dir, entry);
44
- let st;
45
- try {
46
- st = statSync(full);
47
- } catch {
48
- continue;
49
- }
50
- if (st.isDirectory()) {
51
- walk(full, depth + 1);
52
- } else if (st.isFile() && matchesExtension(full, opts.extensions)) {
48
+ if (excludeSet.has(entry.name)) continue;
49
+ const full = resolve(dir, entry.name);
50
+ if (entry.isDirectory()) {
51
+ await walk(full, depth + 1);
52
+ } else if (entry.isFile() && matchesExtension(full, opts.extensions)) {
53
53
  files.push(full);
54
54
  }
55
55
  }
56
56
  }
57
- walk(root, 0);
57
+ await walk(root, 0);
58
58
  return files;
59
59
  }
60
60
  function matchesExtension(p, exts) {
@@ -110,15 +110,15 @@ function hasImplementer(name, contents) {
110
110
  }
111
111
  return false;
112
112
  }
113
- function scanPath(rawPath, cfg) {
113
+ async function scanPath(rawPath, cfg) {
114
114
  const root = process.cwd();
115
115
  const resolved = isAbsolute2(rawPath) ? resolve2(rawPath) : resolve2(root, rawPath);
116
116
  const exts = normalizeExtensions(cfg.extensions);
117
- const files = collectSourceFiles(resolved, { extensions: exts });
117
+ const files = await collectSourceFilesAsync(resolved, { extensions: exts });
118
118
  const contents = [];
119
119
  for (const p of files) {
120
120
  try {
121
- contents.push({ path: p, content: readFileSync(p, "utf-8") });
121
+ contents.push({ path: p, content: await readFile(p, "utf-8") });
122
122
  } catch {
123
123
  }
124
124
  }
@@ -180,7 +180,7 @@ var plugin = {
180
180
  state.hookUnregister = null;
181
181
  }
182
182
  const cfg = readConfig(api.config.extensions?.["interface-contract-guard"]);
183
- const hook = (input) => {
183
+ const hook = async (input) => {
184
184
  if (!cfg.enabled) return;
185
185
  if (input.toolResult?.isError) return;
186
186
  const inp = input.toolInput ?? {};
@@ -193,7 +193,7 @@ var plugin = {
193
193
  const resolved = resolve2(process.cwd(), sourcePath);
194
194
  let content;
195
195
  try {
196
- content = readFileSync(resolved, "utf-8");
196
+ content = await readFile(resolved, "utf-8");
197
197
  } catch {
198
198
  state.errorCount += 1;
199
199
  return;
@@ -230,7 +230,7 @@ If you changed member shapes, search the project for implementers/\`satisfies\`/
230
230
  state.scanCount += 1;
231
231
  let result;
232
232
  try {
233
- result = scanPath(rawPath, cfg);
233
+ result = await scanPath(rawPath, cfg);
234
234
  } catch (err) {
235
235
  state.errorCount += 1;
236
236
  return { ok: false, error: String(err) };
@@ -28,7 +28,7 @@
28
28
  *
29
29
  * @public
30
30
  */
31
- import type { Plugin } from '@wrongstack/core';
31
+ import type { Plugin } from '@wrongstack/core/types';
32
32
  export interface Fact {
33
33
  id: string;
34
34
  subject: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge-graph/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAQ/C,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AA2HD,QAAA,MAAM,MAAM,EAAE,MA2Sb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge-graph/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAQrD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AA2HD,QAAA,MAAM,MAAM,EAAE,MA2Sb,CAAC;eAEa,MAAM"}
@@ -26,7 +26,7 @@
26
26
  *
27
27
  * @public
28
28
  */
29
- import type { Plugin } from '@wrongstack/core';
29
+ import type { Plugin } from '@wrongstack/core/types';
30
30
  declare const plugin: Plugin;
31
31
  export default plugin;
32
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/license-audit-gate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAkK/C,QAAA,MAAM,MAAM,EAAE,MAqMb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/license-audit-gate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAkKrD,QAAA,MAAM,MAAM,EAAE,MAqMb,CAAC;eAEa,MAAM"}
@@ -25,7 +25,7 @@
25
25
  *
26
26
  * @public
27
27
  */
28
- import type { Plugin } from '@wrongstack/core';
28
+ import type { Plugin } from '@wrongstack/core/types';
29
29
  declare const plugin: Plugin;
30
30
  export default plugin;
31
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lint-gate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAQH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAwU/C,QAAA,MAAM,MAAM,EAAE,MAwWb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lint-gate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAQH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AA8VrD,QAAA,MAAM,MAAM,EAAE,MA2Wb,CAAC;eAEa,MAAM"}
package/dist/lint-gate.js CHANGED
@@ -42,6 +42,7 @@ var LINTER_PACKAGES = {
42
42
  biome: "@biomejs/biome",
43
43
  eslint: "eslint"
44
44
  };
45
+ var linterCache = /* @__PURE__ */ new Map();
45
46
  function isInside(parent, candidate) {
46
47
  const rel = relative(parent, candidate);
47
48
  return rel === "" || !rel.startsWith(`..${sep}`) && rel !== ".." && !isAbsolute(rel);
@@ -89,13 +90,20 @@ function runCommand(command, args, timeoutMs, cwd, signal) {
89
90
  });
90
91
  }
91
92
  async function detectLinter(requested, cwd) {
93
+ const cacheKey = `${requested}:${cwd}`;
94
+ const cached = linterCache.get(cacheKey);
95
+ if (cached !== void 0) return cached;
92
96
  const candidates = requested === "auto" ? ["biome", "eslint"] : [requested];
93
97
  for (const name of candidates) {
94
98
  const linter = resolveLocalLinter(name, cwd);
95
99
  if (!linter) continue;
96
100
  const probe = await runCommand(linter.cmd, [linter.args[0], "--version"], 5e3, cwd);
97
- if (!probe.error) return linter;
101
+ if (!probe.error) {
102
+ linterCache.set(cacheKey, linter);
103
+ return linter;
104
+ }
98
105
  }
106
+ linterCache.set(cacheKey, null);
99
107
  return null;
100
108
  }
101
109
  async function lintContent(content, filePath, linter, timeoutMs, cwd, signal) {
@@ -223,6 +231,7 @@ var plugin = {
223
231
  state.linterErrorCount = 0;
224
232
  state.hookUnregister = null;
225
233
  state.lastResult = null;
234
+ linterCache.clear();
226
235
  const cfg = readConfig(api.config.extensions?.["lint-gate"]);
227
236
  const cwd = resolve(api.config.cwd ?? process.cwd());
228
237
  const linterReady = detectLinter(cfg.linter, cwd).then((linter) => {
@@ -37,7 +37,7 @@
37
37
  *
38
38
  * @public
39
39
  */
40
- import type { Plugin } from '@wrongstack/core';
40
+ import type { Plugin } from '@wrongstack/core/types';
41
41
  /**
42
42
  * Whether a request is safe to cache under `onlyDeterministic`. Sampled
43
43
  * requests (temperature > 0) return different content each call, so
@@ -47,6 +47,10 @@ export declare function isDeterministic(request: Record<string, unknown>): boole
47
47
  /**
48
48
  * Stable fingerprint of the request fields that affect the response.
49
49
  * Excludes anything cosmetic (user id, etc.). Same inputs → same key.
50
+ *
51
+ * Determinism: uses canonical JSON key ordering (alphabetical) so
52
+ * identical semantic requests produce identical fingerprints regardless
53
+ * of property insertion order.
50
54
  */
51
55
  export declare function fingerprintRequest(request: Record<string, unknown>): string;
52
56
  declare const plugin: Plugin;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm-cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAa,MAAM,kBAAkB,CAAC;AAwF1D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAGzE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAiB3E;AAkCD,QAAA,MAAM,MAAM,EAAE,MAkNb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm-cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAa,MAAM,wBAAwB,CAAC;AAwFhE;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAGzE;AAeD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAsB3E;AA6CD,QAAA,MAAM,MAAM,EAAE,MAkNb,CAAC;eAEa,MAAM"}
package/dist/llm-cache.js CHANGED
@@ -32,21 +32,26 @@ function isDeterministic(request) {
32
32
  const t = request["temperature"];
33
33
  return t === void 0 || t === 0;
34
34
  }
35
+ var fingerprintCache = /* @__PURE__ */ new WeakMap();
35
36
  function fingerprintRequest(request) {
37
+ const cached = fingerprintCache.get(request);
38
+ if (cached) return cached;
36
39
  const subset = {
40
+ maxTokens: request["maxTokens"] ?? null,
41
+ messages: request["messages"] ?? null,
37
42
  model: request["model"] ?? null,
43
+ reasoning: request["reasoning"] ?? null,
44
+ responseFormat: request["responseFormat"] ?? null,
45
+ stopSequences: request["stopSequences"] ?? null,
38
46
  system: request["system"] ?? null,
39
- messages: request["messages"] ?? null,
40
- tools: Array.isArray(request["tools"]) ? request["tools"].map((t) => t?.name ?? t) : null,
41
47
  temperature: request["temperature"] ?? null,
42
- topP: request["topP"] ?? null,
48
+ tools: Array.isArray(request["tools"]) ? request["tools"].map((t) => t?.name ?? t) : null,
43
49
  topK: request["topK"] ?? null,
44
- maxTokens: request["maxTokens"] ?? null,
45
- stopSequences: request["stopSequences"] ?? null,
46
- responseFormat: request["responseFormat"] ?? null,
47
- reasoning: request["reasoning"] ?? null
50
+ topP: request["topP"] ?? null
48
51
  };
49
- return createHash("sha256").update(JSON.stringify(subset)).digest("hex");
52
+ const fingerprint = createHash("sha256").update(JSON.stringify(subset)).digest("hex");
53
+ fingerprintCache.set(request, fingerprint);
54
+ return fingerprint;
50
55
  }
51
56
  function lruGet(key, ttlMs) {
52
57
  const entry = state.cache.get(key);
@@ -60,6 +65,9 @@ function lruGet(key, ttlMs) {
60
65
  return entry;
61
66
  }
62
67
  function lruSet(key, response, maxEntries) {
68
+ if (state.cache.has(key)) {
69
+ state.cache.delete(key);
70
+ }
63
71
  state.cache.set(key, { response, storedAt: Date.now(), hits: 0 });
64
72
  while (state.cache.size > maxEntries) {
65
73
  const oldest = state.cache.keys().next().value;
@@ -1,4 +1,4 @@
1
- import type { Plugin } from '@wrongstack/core';
1
+ import type { Plugin } from '@wrongstack/core/types';
2
2
  declare const plugin: Plugin;
3
3
  export default plugin;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/loop-breaker/index.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAqP/C,QAAA,MAAM,MAAM,EAAE,MA6Yb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/loop-breaker/index.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAqQrD,QAAA,MAAM,MAAM,EAAE,MA+Yb,CAAC;eAEa,MAAM"}
@@ -34,11 +34,17 @@ var DEFAULTS = {
34
34
  repeatedErrorBlockAfter: 3,
35
35
  ignoreTools: []
36
36
  };
37
+ var ignoreToolsSet = new Set(DEFAULTS.ignoreTools);
37
38
  function readConfig(raw) {
38
- if (!raw || typeof raw !== "object") return { ...DEFAULTS };
39
+ if (!raw || typeof raw !== "object") {
40
+ ignoreToolsSet = new Set(DEFAULTS.ignoreTools);
41
+ return { ...DEFAULTS };
42
+ }
39
43
  const r = raw;
40
44
  const warnAfter = typeof r["warnAfter"] === "number" && r["warnAfter"] >= 2 ? r["warnAfter"] : DEFAULTS.warnAfter;
41
45
  const blockAfter = typeof r["blockAfter"] === "number" && r["blockAfter"] > warnAfter ? r["blockAfter"] : Math.max(DEFAULTS.blockAfter, warnAfter + 1);
46
+ const ignoreTools = Array.isArray(r["ignoreTools"]) ? r["ignoreTools"].filter((t) => typeof t === "string") : [];
47
+ ignoreToolsSet = new Set(ignoreTools);
42
48
  return {
43
49
  enabled: r["enabled"] !== false,
44
50
  mode: r["mode"] === "warn" ? "warn" : "block",
@@ -50,7 +56,7 @@ function readConfig(raw) {
50
56
  noDiffBlockAfter: typeof r["noDiffBlockAfter"] === "number" && r["noDiffBlockAfter"] >= 0 ? Math.floor(r["noDiffBlockAfter"]) : DEFAULTS.noDiffBlockAfter,
51
57
  repeatedErrorWarnAfter: typeof r["repeatedErrorWarnAfter"] === "number" && r["repeatedErrorWarnAfter"] >= 1 ? Math.floor(r["repeatedErrorWarnAfter"]) : DEFAULTS.repeatedErrorWarnAfter,
52
58
  repeatedErrorBlockAfter: typeof r["repeatedErrorBlockAfter"] === "number" && r["repeatedErrorBlockAfter"] >= 0 ? Math.floor(r["repeatedErrorBlockAfter"]) : DEFAULTS.repeatedErrorBlockAfter,
53
- ignoreTools: Array.isArray(r["ignoreTools"]) ? r["ignoreTools"].filter((t) => typeof t === "string") : []
59
+ ignoreTools
54
60
  };
55
61
  }
56
62
  function canonicalize(value) {
@@ -228,7 +234,7 @@ var plugin = {
228
234
  const hook = (input) => {
229
235
  if (!cfg.enabled) return;
230
236
  const toolName = input.toolName ?? "unknown";
231
- if (cfg.ignoreTools.includes(toolName)) return;
237
+ if (ignoreToolsSet.has(toolName)) return;
232
238
  state.invocations += 1;
233
239
  if (state.pendingBlockReason && cfg.mode === "block") {
234
240
  const reason = state.pendingBlockReason;
@@ -289,7 +295,7 @@ var plugin = {
289
295
  const postHook = async (input, runtime = { signal: new AbortController().signal }) => {
290
296
  if (!cfg.enabled) return;
291
297
  const toolName = input.toolName ?? "unknown";
292
- if (cfg.ignoreTools.includes(toolName)) return;
298
+ if (ignoreToolsSet.has(toolName)) return;
293
299
  state.postInvocations += 1;
294
300
  if (input.toolResult?.isError) {
295
301
  const errorFingerprint = normalizeError(input.toolResult.content);
@@ -0,0 +1,16 @@
1
+ /** Metadata that can be consumed without importing plugin implementations. */
2
+ export interface OfficialPluginManifestEntry {
3
+ name: string;
4
+ exportName: string;
5
+ packageSubpath: string;
6
+ sourcePath: string;
7
+ importSpecifier: string;
8
+ audit: {
9
+ risk: 'low' | 'medium' | 'high';
10
+ defaultState: 'active' | 'inactive';
11
+ canDisable: true;
12
+ };
13
+ }
14
+ export declare const OFFICIAL_PLUGIN_MANIFEST: readonly OfficialPluginManifestEntry[];
15
+ export declare const OFFICIAL_PLUGIN_NAME_SET: ReadonlySet<string>;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE;QACL,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAChC,YAAY,EAAE,QAAQ,GAAG,UAAU,CAAC;QACpC,UAAU,EAAE,IAAI,CAAC;KAClB,CAAC;CACH;AA0ID,eAAO,MAAM,wBAAwB,EAAE,SAAS,2BAA2B,EAe1E,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAAkC,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './manifest/index.js';
@@ -0,0 +1,152 @@
1
+ // src/manifest/index.ts
2
+ var OFFICIAL_PLUGIN_NAMES = [
3
+ "agent-handoff",
4
+ "cost-tracker",
5
+ "file-watcher",
6
+ "git-autocommit",
7
+ "auto-doc",
8
+ "shell-check",
9
+ "cron",
10
+ "template-engine",
11
+ "semver-bump",
12
+ "secret-scanner",
13
+ "todo-tracker",
14
+ "token-budget",
15
+ "lint-gate",
16
+ "branch-guard",
17
+ "diff-summary",
18
+ "commit-validator",
19
+ "format-on-save",
20
+ "test-runner-gate",
21
+ "import-organizer",
22
+ "knowledge-graph",
23
+ "todo-listener",
24
+ "session-recap",
25
+ "spec-linker",
26
+ "loop-breaker",
27
+ "path-guard",
28
+ "process-guard",
29
+ "context-pins",
30
+ "checkpoint",
31
+ "error-lens",
32
+ "dep-guard",
33
+ "config-validator",
34
+ "notify-hub",
35
+ "changelog-writer",
36
+ "injection-shield",
37
+ "llm-cache",
38
+ "model-router",
39
+ "pr-drafter",
40
+ "prompt-firewall",
41
+ "auto-escalate",
42
+ "test-coverage-gate",
43
+ "type-gate",
44
+ "token-throttle",
45
+ "plugin-stack-observer",
46
+ "dead-code-detector",
47
+ "dependency-vulnerability-gate",
48
+ "migration-planner",
49
+ "semantic-search-indexer",
50
+ "auto-i18n-extractor",
51
+ "doc-sync-guard",
52
+ "api-compatibility-gate",
53
+ "performance-regression-gate",
54
+ "test-flake-detector",
55
+ "schema-evolution-guard",
56
+ "license-audit-gate",
57
+ "accessibility-auditor",
58
+ "security-hotspot-scanner",
59
+ "duplicate-code-detector",
60
+ "code-metrics",
61
+ "refactor-suggester",
62
+ "test-generator",
63
+ "release-notes-generator",
64
+ "smart-rename",
65
+ "feature-flag-tracker",
66
+ "interface-contract-guard"
67
+ ];
68
+ var MEDIUM_RISK_PLUGINS = /* @__PURE__ */ new Set([
69
+ "agent-handoff",
70
+ "auto-doc",
71
+ "accessibility-auditor",
72
+ "file-watcher",
73
+ "cron",
74
+ "template-engine",
75
+ "token-budget",
76
+ "lint-gate",
77
+ "commit-validator",
78
+ "format-on-save",
79
+ "test-runner-gate",
80
+ "import-organizer",
81
+ "path-guard",
82
+ "checkpoint",
83
+ "dep-guard",
84
+ "api-compatibility-gate",
85
+ "notify-hub",
86
+ "llm-cache",
87
+ "model-router",
88
+ "auto-escalate",
89
+ "token-throttle",
90
+ "test-coverage-gate",
91
+ "test-flake-detector",
92
+ "performance-regression-gate",
93
+ "type-gate",
94
+ "interface-contract-guard",
95
+ "smart-rename"
96
+ ]);
97
+ var HIGH_RISK_PLUGINS = /* @__PURE__ */ new Set([
98
+ "git-autocommit",
99
+ "semver-bump",
100
+ "secret-scanner",
101
+ "branch-guard",
102
+ "process-guard",
103
+ "dependency-vulnerability-gate",
104
+ "license-audit-gate",
105
+ "security-hotspot-scanner",
106
+ "schema-evolution-guard",
107
+ "prompt-firewall"
108
+ ]);
109
+ var DEFAULT_ACTIVE_PLUGINS = /* @__PURE__ */ new Set([
110
+ "cost-tracker",
111
+ "secret-scanner",
112
+ "todo-tracker",
113
+ "token-budget",
114
+ "diff-summary",
115
+ "knowledge-graph",
116
+ "loop-breaker",
117
+ "process-guard",
118
+ "context-pins",
119
+ "error-lens",
120
+ "dep-guard",
121
+ "config-validator",
122
+ "injection-shield"
123
+ ]);
124
+ function auditRisk(name) {
125
+ if (HIGH_RISK_PLUGINS.has(name)) return "high";
126
+ if (MEDIUM_RISK_PLUGINS.has(name)) return "medium";
127
+ return "low";
128
+ }
129
+ function exportName(name) {
130
+ return `${name.replace(/-([a-z0-9])/g, (_, char) => char.toUpperCase())}Plugin`;
131
+ }
132
+ var OFFICIAL_PLUGIN_MANIFEST = Object.freeze(
133
+ OFFICIAL_PLUGIN_NAMES.map(
134
+ (name) => Object.freeze({
135
+ name,
136
+ exportName: exportName(name),
137
+ packageSubpath: `./${name}`,
138
+ sourcePath: `./src/${name}`,
139
+ importSpecifier: `@wrongstack/plugins/${name}`,
140
+ audit: Object.freeze({
141
+ risk: auditRisk(name),
142
+ defaultState: DEFAULT_ACTIVE_PLUGINS.has(name) ? "active" : "inactive",
143
+ canDisable: true
144
+ })
145
+ })
146
+ )
147
+ );
148
+ var OFFICIAL_PLUGIN_NAME_SET = new Set(OFFICIAL_PLUGIN_NAMES);
149
+ export {
150
+ OFFICIAL_PLUGIN_MANIFEST,
151
+ OFFICIAL_PLUGIN_NAME_SET
152
+ };
@@ -25,7 +25,7 @@
25
25
  *
26
26
  * @public
27
27
  */
28
- import type { Plugin } from '@wrongstack/core';
28
+ import type { Plugin } from '@wrongstack/core/types';
29
29
  export interface MigrationAiAnalysis {
30
30
  summary: string;
31
31
  riskLevel: 'low' | 'medium' | 'high' | 'unknown';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migration-planner/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAwP/C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IACjD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAwED,QAAA,MAAM,MAAM,EAAE,MA+Sb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migration-planner/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAwPrD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IACjD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAwED,QAAA,MAAM,MAAM,EAAE,MA+Sb,CAAC;eAEa,MAAM"}
@@ -63,7 +63,8 @@ function withinProjectPath(projectRoot, candidate) {
63
63
  return rel === "" || !rel.startsWith("..") && !isAbsolute(rel);
64
64
  }
65
65
  function withinProject(p) {
66
- return withinProjectPath(process.cwd(), p) || relative(process.cwd(), p) === ".";
66
+ const cwd = process.cwd();
67
+ return withinProjectPath(cwd, p) || relative(cwd, p) === ".";
67
68
  }
68
69
 
69
70
  // src/migration-planner/index.ts
@@ -42,7 +42,7 @@
42
42
  *
43
43
  * @public
44
44
  */
45
- import type { Plugin } from '@wrongstack/core';
45
+ import type { Plugin } from '@wrongstack/core/types';
46
46
  interface RouteRule {
47
47
  /** Match when the request's total char size is <= this. */
48
48
  maxChars?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model-router/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,KAAK,EAAE,MAAM,EAAa,MAAM,kBAAkB,CAAC;AAM1D,UAAU,SAAS;IACjB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;CACf;AA8DD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAgBxE;AAED,6DAA6D;AAC7D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAQ9F;AAMD,QAAA,MAAM,MAAM,EAAE,MAyKb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model-router/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,KAAK,EAAE,MAAM,EAAa,MAAM,wBAAwB,CAAC;AAMhE,UAAU,SAAS;IACjB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;CACf;AA8DD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAgBxE;AAED,6DAA6D;AAC7D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAQ9F;AAMD,QAAA,MAAM,MAAM,EAAE,MAyKb,CAAC;eAEa,MAAM"}
@@ -1,4 +1,4 @@
1
- import type { Plugin } from '@wrongstack/core';
1
+ import type { Plugin } from '@wrongstack/core/types';
2
2
  declare const plugin: Plugin;
3
3
  export default plugin;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notify-hub/index.ts"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAmD,MAAM,EAAE,MAAM,kBAAkB,CAAC;AA8NhG,QAAA,MAAM,MAAM,EAAE,MAwRb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notify-hub/index.ts"],"names":[],"mappings":"AAyDA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,wBAAwB,CAAC;AA8N7D,QAAA,MAAM,MAAM,EAAE,MAwRb,CAAC;eAEa,MAAM"}
@@ -14,7 +14,7 @@
14
14
  * @module notify-hub
15
15
  * @public
16
16
  */
17
- import type { NotificationChannel, NotificationMessage, NotificationResult } from '@wrongstack/core';
17
+ import type { NotificationChannel, NotificationMessage, NotificationResult } from '@wrongstack/core/notifications';
18
18
  export interface WebhookChannelOptions {
19
19
  /** HTTP(S) endpoint that receives JSON POSTs. */
20
20
  readonly webhookUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-channel.d.ts","sourceRoot":"","sources":["../../src/notify-hub/webhook-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAmBrG,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAChE,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtD;AAED,qBAAa,0BAA2B,YAAW,mBAAmB;;IACpE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAiBnC,YAAY,IAAI,EAAE,qBAAqB,EAMtC;IAMK,OAAO,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6DnE;IAEK,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAYjE;IAMD,4DAA4D;IAC5D,YAAY,IAAI,IAAI,CAGnB;IAED,qCAAqC;IACrC,aAAa,IAAI;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAE9D;IAED,gDAAgD;IAChD,QAAQ,IAAI;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAOA;CACF"}
1
+ {"version":3,"file":"webhook-channel.d.ts","sourceRoot":"","sources":["../../src/notify-hub/webhook-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAmBnH,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAChE,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtD;AAED,qBAAa,0BAA2B,YAAW,mBAAmB;;IACpE,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAiBnC,YAAY,IAAI,EAAE,qBAAqB,EAMtC;IAMK,OAAO,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6DnE;IAEK,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAYjE;IAMD,4DAA4D;IAC5D,YAAY,IAAI,IAAI,CAGnB;IAED,qCAAqC;IACrC,aAAa,IAAI;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAE9D;IAED,gDAAgD;IAChD,QAAQ,IAAI;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAOA;CACF"}
@@ -31,7 +31,7 @@
31
31
  *
32
32
  * @public
33
33
  */
34
- import type { Plugin } from '@wrongstack/core';
34
+ import type { Plugin } from '@wrongstack/core/types';
35
35
  /**
36
36
  * Compile a glob pattern to a RegExp. Supports `**` (any depth),
37
37
  * `*` (within one segment), and `?` (single char). Matching is done
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/path-guard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAwE/C;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAyBvD;AAWD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB5D;AAMD,QAAA,MAAM,MAAM,EAAE,MA8Kb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/path-guard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAwErD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAyBvD;AAWD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB5D;AAMD,QAAA,MAAM,MAAM,EAAE,MA8Kb,CAAC;eAEa,MAAM"}
@@ -25,7 +25,7 @@
25
25
  *
26
26
  * @public
27
27
  */
28
- import type { Plugin } from '@wrongstack/core';
28
+ import type { Plugin } from '@wrongstack/core/types';
29
29
  declare const plugin: Plugin;
30
30
  export default plugin;
31
31
  //# sourceMappingURL=index.d.ts.map