@wrongstack/plugins 0.293.0 → 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
@@ -0,0 +1,74 @@
1
+ // src/factories/index.ts
2
+ var OFFICIAL_PLUGIN_SPECIFIERS = [
3
+ "@wrongstack/plugins/agent-handoff",
4
+ "@wrongstack/plugins/cost-tracker",
5
+ "@wrongstack/plugins/file-watcher",
6
+ "@wrongstack/plugins/git-autocommit",
7
+ "@wrongstack/plugins/auto-doc",
8
+ "@wrongstack/plugins/shell-check",
9
+ "@wrongstack/plugins/cron",
10
+ "@wrongstack/plugins/template-engine",
11
+ "@wrongstack/plugins/semver-bump",
12
+ "@wrongstack/plugins/secret-scanner",
13
+ "@wrongstack/plugins/todo-tracker",
14
+ "@wrongstack/plugins/token-budget",
15
+ "@wrongstack/plugins/lint-gate",
16
+ "@wrongstack/plugins/branch-guard",
17
+ "@wrongstack/plugins/diff-summary",
18
+ "@wrongstack/plugins/commit-validator",
19
+ "@wrongstack/plugins/format-on-save",
20
+ "@wrongstack/plugins/test-runner-gate",
21
+ "@wrongstack/plugins/import-organizer",
22
+ "@wrongstack/plugins/knowledge-graph",
23
+ "@wrongstack/plugins/todo-listener",
24
+ "@wrongstack/plugins/session-recap",
25
+ "@wrongstack/plugins/spec-linker",
26
+ "@wrongstack/plugins/loop-breaker",
27
+ "@wrongstack/plugins/path-guard",
28
+ "@wrongstack/plugins/process-guard",
29
+ "@wrongstack/plugins/context-pins",
30
+ "@wrongstack/plugins/checkpoint",
31
+ "@wrongstack/plugins/error-lens",
32
+ "@wrongstack/plugins/dep-guard",
33
+ "@wrongstack/plugins/config-validator",
34
+ "@wrongstack/plugins/notify-hub",
35
+ "@wrongstack/plugins/changelog-writer",
36
+ "@wrongstack/plugins/injection-shield",
37
+ "@wrongstack/plugins/llm-cache",
38
+ "@wrongstack/plugins/model-router",
39
+ "@wrongstack/plugins/pr-drafter",
40
+ "@wrongstack/plugins/prompt-firewall",
41
+ "@wrongstack/plugins/auto-escalate",
42
+ "@wrongstack/plugins/test-coverage-gate",
43
+ "@wrongstack/plugins/type-gate",
44
+ "@wrongstack/plugins/token-throttle",
45
+ "@wrongstack/plugins/plugin-stack-observer",
46
+ "@wrongstack/plugins/dead-code-detector",
47
+ "@wrongstack/plugins/dependency-vulnerability-gate",
48
+ "@wrongstack/plugins/migration-planner",
49
+ "@wrongstack/plugins/semantic-search-indexer",
50
+ "@wrongstack/plugins/auto-i18n-extractor",
51
+ "@wrongstack/plugins/doc-sync-guard",
52
+ "@wrongstack/plugins/api-compatibility-gate",
53
+ "@wrongstack/plugins/performance-regression-gate",
54
+ "@wrongstack/plugins/test-flake-detector",
55
+ "@wrongstack/plugins/schema-evolution-guard",
56
+ "@wrongstack/plugins/license-audit-gate",
57
+ "@wrongstack/plugins/accessibility-auditor",
58
+ "@wrongstack/plugins/security-hotspot-scanner",
59
+ "@wrongstack/plugins/duplicate-code-detector",
60
+ "@wrongstack/plugins/code-metrics",
61
+ "@wrongstack/plugins/refactor-suggester",
62
+ "@wrongstack/plugins/test-generator",
63
+ "@wrongstack/plugins/release-notes-generator",
64
+ "@wrongstack/plugins/smart-rename",
65
+ "@wrongstack/plugins/feature-flag-tracker",
66
+ "@wrongstack/plugins/interface-contract-guard"
67
+ ];
68
+ var OFFICIAL_PLUGIN_FACTORIES = OFFICIAL_PLUGIN_SPECIFIERS.map(
69
+ (specifier) => async () => (await import(specifier)).default
70
+ );
71
+ export {
72
+ OFFICIAL_PLUGIN_FACTORIES,
73
+ OFFICIAL_PLUGIN_SPECIFIERS
74
+ };
@@ -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 FeatureFlagUsage {
28
28
  flag: string;
29
29
  file: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feature-flag-tracker/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAS/C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AA0ID,QAAA,MAAM,MAAM,EAAE,MA+Mb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feature-flag-tracker/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AASrD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AA6ID,QAAA,MAAM,MAAM,EAAE,MA+Mb,CAAC;eAEa,MAAM"}
@@ -1,9 +1,8 @@
1
1
  // src/feature-flag-tracker/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) {
@@ -128,16 +128,16 @@ function scanFile(filePath, content, patterns, maxFindings) {
128
128
  }
129
129
  return usages.slice(0, maxFindings);
130
130
  }
131
- function scanPath(rawPath, cfg) {
131
+ async function scanPath(rawPath, cfg) {
132
132
  const root = process.cwd();
133
133
  const resolved = isAbsolute2(rawPath) ? resolve2(rawPath) : resolve2(root, rawPath);
134
134
  const exts = normalizeExtensions(cfg.extensions);
135
- const files = collectSourceFiles(resolved, { extensions: exts });
135
+ const files = await collectSourceFilesAsync(resolved, { extensions: exts });
136
136
  const patterns = compilePatterns(cfg.patterns);
137
137
  const usages = [];
138
138
  for (const p of files) {
139
139
  try {
140
- const content = readFileSync(p, "utf-8");
140
+ const content = await readFile(p, "utf-8");
141
141
  usages.push(...scanFile(p, content, patterns, cfg.maxFindings));
142
142
  if (usages.length >= cfg.maxFindings) break;
143
143
  } catch {
@@ -191,7 +191,7 @@ var plugin = {
191
191
  state.hookUnregister = null;
192
192
  }
193
193
  const cfg = readConfig(api.config.extensions?.["feature-flag-tracker"]);
194
- const hook = (input) => {
194
+ const hook = async (input) => {
195
195
  if (!cfg.enabled) return;
196
196
  if (input.toolResult?.isError) return;
197
197
  const inp = input.toolInput ?? {};
@@ -204,7 +204,7 @@ var plugin = {
204
204
  const resolved = resolve2(process.cwd(), sourcePath);
205
205
  let content;
206
206
  try {
207
- content = readFileSync(resolved, "utf-8");
207
+ content = await readFile(resolved, "utf-8");
208
208
  } catch {
209
209
  state.errorCount += 1;
210
210
  return;
@@ -242,7 +242,7 @@ Make sure flag behavior is intentional and consider updating flag inventory/docs
242
242
  state.scanCount += 1;
243
243
  let result;
244
244
  try {
245
- result = scanPath(rawPath, cfg);
245
+ result = await scanPath(rawPath, cfg);
246
246
  } catch (err) {
247
247
  state.errorCount += 1;
248
248
  return { ok: false, error: String(err) };
@@ -6,7 +6,7 @@
6
6
  * - watch_stop: Stop a watch by ID
7
7
  * - watch_list: List all active watches
8
8
  */
9
- import type { Plugin } from '@wrongstack/core';
9
+ import type { Plugin } from '@wrongstack/core/types';
10
10
  declare const plugin: Plugin;
11
11
  export default plugin;
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/file-watcher/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AA2D/C,QAAA,MAAM,MAAM,EAAE,MAsYb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/file-watcher/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAqErD,QAAA,MAAM,MAAM,EAAE,MA8Yb,CAAC;eAEa,MAAM"}
@@ -27,7 +27,7 @@
27
27
  *
28
28
  * @public
29
29
  */
30
- import type { Plugin } from '@wrongstack/core';
30
+ import type { Plugin } from '@wrongstack/core/types';
31
31
  declare const plugin: Plugin;
32
32
  export default plugin;
33
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/format-on-save/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AA0P/C,QAAA,MAAM,MAAM,EAAE,MAuPb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/format-on-save/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AA0PrD,QAAA,MAAM,MAAM,EAAE,MAuPb,CAAC;eAEa,MAAM"}
@@ -16,7 +16,8 @@ function withinProjectPath(projectRoot, candidate) {
16
16
  return rel === "" || !rel.startsWith("..") && !isAbsolute(rel);
17
17
  }
18
18
  function withinProject(p) {
19
- return withinProjectPath(process.cwd(), p) || relative(process.cwd(), p) === ".";
19
+ const cwd = process.cwd();
20
+ return withinProjectPath(cwd, p) || relative(cwd, p) === ".";
20
21
  }
21
22
 
22
23
  // src/format-on-save/index.ts
@@ -0,0 +1,65 @@
1
+ export { default as accessibilityAuditorPlugin } from './accessibility-auditor/index.js';
2
+ export { default as agentHandoffPlugin } from './agent-handoff/index.js';
3
+ export { default as apiCompatibilityGatePlugin } from './api-compatibility-gate/index.js';
4
+ export { default as autoDocPlugin } from './auto-doc/index.js';
5
+ export { default as autoEscalatePlugin } from './auto-escalate/index.js';
6
+ export { default as autoI18nExtractorPlugin } from './auto-i18n-extractor/index.js';
7
+ export { default as branchGuardPlugin } from './branch-guard/index.js';
8
+ export { default as changelogWriterPlugin } from './changelog-writer/index.js';
9
+ export { default as checkpointPlugin } from './checkpoint/index.js';
10
+ export { default as codeMetricsPlugin } from './code-metrics/index.js';
11
+ export { default as commitValidatorPlugin } from './commit-validator/index.js';
12
+ export { default as configValidatorPlugin } from './config-validator/index.js';
13
+ export { default as contextPinsPlugin } from './context-pins/index.js';
14
+ export { default as costTrackerPlugin } from './cost-tracker/index.js';
15
+ export { default as cronPlugin } from './cron/index.js';
16
+ export { default as deadCodeDetectorPlugin } from './dead-code-detector/index.js';
17
+ export { default as depGuardPlugin } from './dep-guard/index.js';
18
+ export { default as dependencyVulnerabilityGatePlugin } from './dependency-vulnerability-gate/index.js';
19
+ export { default as diffSummaryPlugin } from './diff-summary/index.js';
20
+ export { default as docSyncGuardPlugin } from './doc-sync-guard/index.js';
21
+ export { default as duplicateCodeDetectorPlugin } from './duplicate-code-detector/index.js';
22
+ export { default as errorLensPlugin } from './error-lens/index.js';
23
+ export { default as featureFlagTrackerPlugin } from './feature-flag-tracker/index.js';
24
+ export { default as fileWatcherPlugin } from './file-watcher/index.js';
25
+ export { default as formatOnSavePlugin } from './format-on-save/index.js';
26
+ export { default as gitAutocommitPlugin } from './git-autocommit/index.js';
27
+ export { default as importOrganizerPlugin } from './import-organizer/index.js';
28
+ export { default as injectionShieldPlugin } from './injection-shield/index.js';
29
+ export { default as interfaceContractGuardPlugin } from './interface-contract-guard/index.js';
30
+ export { default as knowledgeGraphPlugin } from './knowledge-graph/index.js';
31
+ export { default as licenseAuditGatePlugin } from './license-audit-gate/index.js';
32
+ export { default as lintGatePlugin } from './lint-gate/index.js';
33
+ export { default as llmCachePlugin } from './llm-cache/index.js';
34
+ export { default as loopBreakerPlugin } from './loop-breaker/index.js';
35
+ export { default as migrationPlannerPlugin } from './migration-planner/index.js';
36
+ export { default as modelRouterPlugin } from './model-router/index.js';
37
+ export { default as notifyHubPlugin } from './notify-hub/index.js';
38
+ export { default as pathGuardPlugin } from './path-guard/index.js';
39
+ export { default as performanceRegressionGatePlugin } from './performance-regression-gate/index.js';
40
+ export { default as pluginStackObserverPlugin } from './plugin-stack-observer/index.js';
41
+ export { default as prDrafterPlugin } from './pr-drafter/index.js';
42
+ export { default as processGuardPlugin } from './process-guard/index.js';
43
+ export { default as promptFirewallPlugin } from './prompt-firewall/index.js';
44
+ export { default as refactorSuggesterPlugin } from './refactor-suggester/index.js';
45
+ export { default as releaseNotesGeneratorPlugin } from './release-notes-generator/index.js';
46
+ export { default as schemaEvolutionGuardPlugin } from './schema-evolution-guard/index.js';
47
+ export { default as secretScannerPlugin } from './secret-scanner/index.js';
48
+ export { default as securityHotspotScannerPlugin } from './security-hotspot-scanner/index.js';
49
+ export { default as semanticSearchIndexerPlugin } from './semantic-search-indexer/index.js';
50
+ export { default as semverBumpPlugin } from './semver-bump/index.js';
51
+ export { default as sessionRecapPlugin } from './session-recap/index.js';
52
+ export { default as shellCheckPlugin } from './shell-check/index.js';
53
+ export { default as smartRenamePlugin } from './smart-rename/index.js';
54
+ export { default as specLinkerPlugin } from './spec-linker/index.js';
55
+ export { default as templateEnginePlugin } from './template-engine/index.js';
56
+ export { default as testCoverageGatePlugin } from './test-coverage-gate/index.js';
57
+ export { default as testFlakeDetectorPlugin } from './test-flake-detector/index.js';
58
+ export { default as testGeneratorPlugin } from './test-generator/index.js';
59
+ export { default as testRunnerGatePlugin } from './test-runner-gate/index.js';
60
+ export { default as todoListenerPlugin } from './todo-listener/index.js';
61
+ export { default as todoTrackerPlugin } from './todo-tracker/index.js';
62
+ export { default as tokenBudgetPlugin } from './token-budget/index.js';
63
+ export { default as tokenThrottlePlugin } from './token-throttle/index.js';
64
+ export { default as typeGatePlugin } from './type-gate/index.js';
65
+ //# sourceMappingURL=generated-plugin-exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-plugin-exports.d.ts","sourceRoot":"","sources":["../src/generated-plugin-exports.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  * - For staging: use `git_autocommit` with `files` (it stages automatically), or `bash` with `git add`.
10
10
  * - For status: use the built-in `git` tool with `command: "status"` or `command: "diff"`.
11
11
  */
12
- import type { Plugin } from '@wrongstack/core';
12
+ import type { Plugin } from '@wrongstack/core/types';
13
13
  declare const plugin: Plugin;
14
14
  export default plugin;
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/git-autocommit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAoT/C,QAAA,MAAM,MAAM,EAAE,MAsXb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/git-autocommit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAoTrD,QAAA,MAAM,MAAM,EAAE,MAsXb,CAAC;eAEa,MAAM"}
@@ -44,7 +44,7 @@
44
44
  *
45
45
  * @public
46
46
  */
47
- import type { Plugin } from '@wrongstack/core';
47
+ import type { Plugin } from '@wrongstack/core/types';
48
48
  declare const plugin: Plugin;
49
49
  export default plugin;
50
50
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/import-organizer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAoR/C,QAAA,MAAM,MAAM,EAAE,MA8Nb,CAAC;eAEa,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/import-organizer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAoRrD,QAAA,MAAM,MAAM,EAAE,MA8Nb,CAAC;eAEa,MAAM"}
@@ -17,7 +17,8 @@ function withinProjectPath(projectRoot, candidate) {
17
17
  return rel === "" || !rel.startsWith("..") && !isAbsolute(rel);
18
18
  }
19
19
  function withinProject(p) {
20
- return withinProjectPath(process.cwd(), p) || relative(process.cwd(), p) === ".";
20
+ const cwd = process.cwd();
21
+ return withinProjectPath(cwd, p) || relative(cwd, p) === ".";
21
22
  }
22
23
 
23
24
  // src/import-organizer/index.ts
package/dist/index.d.ts CHANGED
@@ -1,187 +1,8 @@
1
1
  /**
2
- * @wrongstack/plugins — Official WrongStack Plugin Suite
2
+ * @wrongstack/plugins — official plugin suite.
3
3
  *
4
- * Exported plugins (63 total; most use tools or lifecycle hooks, while
5
- * provider-wire plugins register a full AgentExtension
6
- * — wrapProviderRunner / onError — wrapping the provider call itself):
7
- * 1. auto-doc — Auto-generates JSDoc/TSDoc (dryRun for preview)
8
- * 2. git-autocommit — AI-powered commit messages (git_autocommit/status_summary removed)
9
- * 3. shell-check — Runs shellcheck on files or directories (merged)
10
- * 4. cost-tracker — Tracks LLM token usage and estimated cost per session
11
- * 5. file-watcher — Watches project files and emits events on changes
12
- * 6. cron — Schedules recurring tasks via extension hooks
13
- * 7. template-engine — Expands file templates with variable substitution
14
- * 8. semver-bump — Conventional-commit-driven semver version bumps
15
- * 9. secret-scanner — Pre+post-tool hooks that block, redact, or warn
16
- * about plaintext credentials flowing into/out of tools
17
- * 10. todo-tracker — Persistent, project-scoped todo backlog that
18
- * survives across sessions
19
- * 11. token-budget — Enforces a per-session token budget — warns at a
20
- * threshold and stops the agent loop when the limit is hit
21
- * 12. lint-gate — Pre-tool hook that runs biome/eslint on would-be
22
- * file content before write or edit commits it
23
- * 13. branch-guard — Pre-tool hook that blocks commits, pushes, and
24
- * merges to protected branches (default: main, master)
25
- * 14. diff-summary — Post-tool hook that injects a compact git diff
26
- * into the LLM context after every write or edit
27
- * 15. commit-validator — Pre-tool hook that validates conventional-commit
28
- * format before git_autocommit or bash git commit runs
29
- * 16. format-on-save — Post-tool hook that runs biome format --write
30
- * on the file after every write or edit
31
- * 17. test-runner-gate — Post-tool hook that runs the relevant test
32
- * file after every write or edit to a source file
33
- * 18. import-organizer — Post-tool hook that runs biome check --write --unsafe
34
- * on the file after write or edit, re-sorting imports
35
- * and applying safe fixes (falls back to eslint --fix)
36
- * 19. todo-listener — Post-tool hook on `todo` that broadcasts the new list
37
- * to the project mailbox (api.mailbox.send) so other
38
- * agents can see what this one is working on
39
- * 20. session-recap — Stop hook that posts a one-page session summary
40
- * (tokens, tool calls, commits, transcript tail) to
41
- * the project mailbox when the agent loop ends
42
- * 21. spec-linker — Post-tool hook on write/edit that scans markdown
43
- * files for unlinked plugin references and surfaces
44
- * them to the LLM via additionalContext
45
- * 22. loop-breaker — Pre-tool hook that detects runaway tool-call loops
46
- * (identical repeats + A-B-A-B oscillation), warns
47
- * the model, then blocks
48
- * 23. path-guard — Pre-tool hook that blocks writes/edits/destructive
49
- * shell commands touching protected paths (lockfiles,
50
- * .env, .git, migrations)
51
- * 24. context-pins — pin_add/pin_remove/pin_list tools + system prompt
52
- * contributor: pinned facts survive compaction and
53
- * persist across sessions
54
- * 25. checkpoint — In-session file snapshots: auto-captures content
55
- * before write/edit; checkpoint_restore rolls any
56
- * file back to a pre-edit state
57
- * 26. error-lens — Post-tool hook that distills failed command output
58
- * into a compact digest (error line + project stack
59
- * frames) and flags repeated failures
60
- * 27. dep-guard — Pre-tool hook that supervises dependency installs:
61
- * deny list, typosquat lookalike warnings, unpinned
62
- * version warnings
63
- * 28. config-validator — Post-tool hook that validates JSON/JSONC/YAML/TOML
64
- * files right after write/edit and reports syntax
65
- * problems in the same turn
66
- * 29. notify-hub — POSTs session events (stop, tool errors, budget
67
- * thresholds) and ad-hoc notify_send messages to a
68
- * configurable webhook
69
- * 30. changelog-writer — Collects session work (commits, edits, manual
70
- * notes) and writes Keep-a-Changelog entries under
71
- * [Unreleased] on demand
72
- * 31. injection-shield — Post-tool hook that scans tool output for
73
- * prompt-injection patterns and warns the model that
74
- * content is data, not instructions
75
- * 32. llm-cache — wrapProviderRunner: caches identical deterministic
76
- * provider requests and short-circuits the call on a hit
77
- * 33. model-router — wrapProviderRunner: routes each call to a different
78
- * model by declarative size/tool rules (within the provider)
79
- * 34. prompt-firewall — wrapProviderRunner: detects/redacts/blocks credential
80
- * leaks on the provider wire (warn/redact/block)
81
- * 35. auto-escalate — onError: retries with the next model in an escalation
82
- * ladder on transient provider errors
83
- * 36. token-throttle — wrapProviderRunner: rolling-window tokens/min budget
84
- * that delays provider calls to stay under a rate limit
85
- *
86
- * New plugins (2026-07 follow-up batch):
87
- * 37. duplicate-code-detector — Detects duplicate/similar code blocks across
88
- * source files using normalized-line fingerprints
89
- * 38. code-metrics — Computes lines-of-code, comment ratio, function
90
- * count, and approximate cyclomatic complexity
91
- * 39. refactor-suggester — Flags long functions, deep nesting, many
92
- * parameters, magic numbers, and console.log usage
93
- * 40. test-generator — Generates framework-correct test files with an
94
- * optional behavior-focused api.llm pass
95
- * 41. release-notes-generator — Produces traceable notes with optional,
96
- * hash-preserving api.llm polish
97
- * 42. smart-rename — Whole-word symbol rename with preview and
98
- * optional apply
99
- * 43. feature-flag-tracker — Scans source files for feature-flag usage and
100
- * reports flag inventory
101
- * 44. interface-contract-guard — Warns when TypeScript interfaces change or
102
- * lack implementers
103
- *
104
- * Plugins 32–36 are OPT-IN (enabled:false by default) because they change
105
- * provider-call semantics.
106
- *
107
- * Removed (use the equivalent built-in tools instead — see
108
- * `DEPRECATED_PLUGIN_NAMES` in `packages/cli/src/wiring/plugins.ts`
109
- * for the loader-level migration warning):
110
- * - web-search → built-in `search` + `fetch`
111
- * - json-path → built-in `json` tool (action: query|validate|transform|merge)
112
- *
113
- * Usage in WrongStack config:
114
- * ```json
115
- * {
116
- * "plugins": {
117
- * "auto-doc": { "enabled": true },
118
- * "git-autocommit": { "conventionalCommits": true }
119
- * }
120
- * }
121
- * ```
4
+ * Public exports are generated from the typed manifest. Add or remove plugin
5
+ * identity in `src/manifest/index.ts`, then run `pnpm plugins:manifest:write`.
122
6
  */
123
- export { default as agentHandoffPlugin } from './agent-handoff/index.js';
124
- export { default as autoDocPlugin } from './auto-doc/index.js';
125
- export { default as autoEscalatePlugin } from './auto-escalate/index.js';
126
- export { default as branchGuardPlugin } from './branch-guard/index.js';
127
- export { default as changelogWriterPlugin } from './changelog-writer/index.js';
128
- export { default as checkpointPlugin } from './checkpoint/index.js';
129
- export { default as commitValidatorPlugin } from './commit-validator/index.js';
130
- export { default as configValidatorPlugin } from './config-validator/index.js';
131
- export { default as contextPinsPlugin } from './context-pins/index.js';
132
- export { default as costTrackerPlugin } from './cost-tracker/index.js';
133
- export { default as cronPlugin } from './cron/index.js';
134
- export { default as depGuardPlugin } from './dep-guard/index.js';
135
- export { default as diffSummaryPlugin } from './diff-summary/index.js';
136
- export { default as errorLensPlugin } from './error-lens/index.js';
137
- export { default as fileWatcherPlugin } from './file-watcher/index.js';
138
- export { default as formatOnSavePlugin } from './format-on-save/index.js';
139
- export { default as gitAutocommitPlugin } from './git-autocommit/index.js';
140
- export { default as importOrganizerPlugin } from './import-organizer/index.js';
141
- export { default as injectionShieldPlugin } from './injection-shield/index.js';
142
- export { default as knowledgeGraphPlugin } from './knowledge-graph/index.js';
143
- export { default as lintGatePlugin } from './lint-gate/index.js';
144
- export { default as llmCachePlugin } from './llm-cache/index.js';
145
- export { default as loopBreakerPlugin } from './loop-breaker/index.js';
146
- export { default as modelRouterPlugin } from './model-router/index.js';
147
- export { default as notifyHubPlugin } from './notify-hub/index.js';
148
- export { default as pathGuardPlugin } from './path-guard/index.js';
149
- export { default as processGuardPlugin } from './process-guard/index.js';
150
- export { default as pluginStackObserverPlugin } from './plugin-stack-observer/index.js';
151
- export { default as prDrafterPlugin } from './pr-drafter/index.js';
152
- export { default as promptFirewallPlugin } from './prompt-firewall/index.js';
153
- export { default as secretScannerPlugin } from './secret-scanner/index.js';
154
- export { default as semverBumpPlugin } from './semver-bump/index.js';
155
- export { default as sessionRecapPlugin } from './session-recap/index.js';
156
- export { default as shellCheckPlugin } from './shell-check/index.js';
157
- export { default as specLinkerPlugin } from './spec-linker/index.js';
158
- export { default as templateEnginePlugin } from './template-engine/index.js';
159
- export { default as testCoverageGatePlugin } from './test-coverage-gate/index.js';
160
- export { default as testRunnerGatePlugin } from './test-runner-gate/index.js';
161
- export { default as typeGatePlugin } from './type-gate/index.js';
162
- export { default as accessibilityAuditorPlugin } from './accessibility-auditor/index.js';
163
- export { default as apiCompatibilityGatePlugin } from './api-compatibility-gate/index.js';
164
- export { default as autoI18nExtractorPlugin } from './auto-i18n-extractor/index.js';
165
- export { default as codeMetricsPlugin } from './code-metrics/index.js';
166
- export { default as deadCodeDetectorPlugin } from './dead-code-detector/index.js';
167
- export { default as dependencyVulnerabilityGatePlugin } from './dependency-vulnerability-gate/index.js';
168
- export { default as docSyncGuardPlugin } from './doc-sync-guard/index.js';
169
- export { default as duplicateCodeDetectorPlugin } from './duplicate-code-detector/index.js';
170
- export { default as featureFlagTrackerPlugin } from './feature-flag-tracker/index.js';
171
- export { default as interfaceContractGuardPlugin } from './interface-contract-guard/index.js';
172
- export { default as licenseAuditGatePlugin } from './license-audit-gate/index.js';
173
- export { default as migrationPlannerPlugin } from './migration-planner/index.js';
174
- export { default as performanceRegressionGatePlugin } from './performance-regression-gate/index.js';
175
- export { default as refactorSuggesterPlugin } from './refactor-suggester/index.js';
176
- export { default as releaseNotesGeneratorPlugin } from './release-notes-generator/index.js';
177
- export { default as schemaEvolutionGuardPlugin } from './schema-evolution-guard/index.js';
178
- export { default as securityHotspotScannerPlugin } from './security-hotspot-scanner/index.js';
179
- export { default as semanticSearchIndexerPlugin } from './semantic-search-indexer/index.js';
180
- export { default as smartRenamePlugin } from './smart-rename/index.js';
181
- export { default as testFlakeDetectorPlugin } from './test-flake-detector/index.js';
182
- export { default as testGeneratorPlugin } from './test-generator/index.js';
183
- export { default as todoListenerPlugin } from './todo-listener/index.js';
184
- export { default as todoTrackerPlugin } from './todo-tracker/index.js';
185
- export { default as tokenBudgetPlugin } from './token-budget/index.js';
186
- export { default as tokenThrottlePlugin } from './token-throttle/index.js';
7
+ export * from './generated-plugin-exports.js';
187
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,+BAA+B,CAAC"}