@wrongstack/plugins 0.298.0 → 0.298.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,20 @@
1
+ export interface PluginAuditEntry {
2
+ name: string;
3
+ risk: 'low' | 'medium' | 'high';
4
+ summary: string;
5
+ defaultState: 'active' | 'inactive';
6
+ canDisable: boolean;
7
+ }
8
+ /**
9
+ * Host-owned plugins that are not published by @wrongstack/plugins.
10
+ * Mirrors the entries the CLI host previously defined inline in
11
+ * `packages/cli/src/plugin-management.ts`.
12
+ */
13
+ export declare const HOST_PLUGIN_AUDIT_ENTRIES: readonly PluginAuditEntry[];
14
+ /**
15
+ * Every plugin the host knows about: host-owned first (preserving the CLI's
16
+ * historical ordering), then the generated official catalog. Frozen so no
17
+ * consumer can mutate the shared catalog at runtime.
18
+ */
19
+ export declare const PLUGIN_AUDIT_ENTRIES: readonly PluginAuditEntry[];
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ export * from './plugin-audit-catalog/index.js';
@@ -0,0 +1,526 @@
1
+ // src/audit/index.ts
2
+ var OFFICIAL_PLUGIN_AUDIT_ENTRIES = [
3
+ {
4
+ name: "agent-handoff",
5
+ risk: "medium",
6
+ summary: "Listens for subagent.done events and posts structured handoff notes to the project mailbox",
7
+ defaultState: "inactive",
8
+ canDisable: true
9
+ },
10
+ {
11
+ name: "cost-tracker",
12
+ risk: "low",
13
+ summary: "Tracks LLM token usage and estimated cost per session with per-model breakdown",
14
+ defaultState: "active",
15
+ canDisable: true
16
+ },
17
+ {
18
+ name: "file-watcher",
19
+ risk: "medium",
20
+ summary: "Watches project files and emits events when changes occur (add, change, delete)",
21
+ defaultState: "inactive",
22
+ canDisable: true
23
+ },
24
+ {
25
+ name: "git-autocommit",
26
+ risk: "high",
27
+ summary: "AI-powered git staging and conventional commit message generation",
28
+ defaultState: "inactive",
29
+ canDisable: true
30
+ },
31
+ {
32
+ name: "auto-doc",
33
+ risk: "medium",
34
+ summary: "Auto-generates JSDoc/TSDoc comments for functions, classes, types, and interfaces",
35
+ defaultState: "inactive",
36
+ canDisable: true
37
+ },
38
+ {
39
+ name: "shell-check",
40
+ risk: "low",
41
+ summary: "Runs shellcheck analysis on bash/shell scripts and surfaces issues with severity levels",
42
+ defaultState: "inactive",
43
+ canDisable: true
44
+ },
45
+ {
46
+ name: "cron",
47
+ risk: "medium",
48
+ summary: "Schedules recurring tasks using beforeIteration/afterIteration extension hooks",
49
+ defaultState: "inactive",
50
+ canDisable: true
51
+ },
52
+ {
53
+ name: "template-engine",
54
+ risk: "medium",
55
+ summary: "Expands file templates with variable substitution, conditionals, and loops",
56
+ defaultState: "inactive",
57
+ canDisable: true
58
+ },
59
+ {
60
+ name: "semver-bump",
61
+ risk: "high",
62
+ summary: "Conventional-commit-driven semver version bumps with changelog generation",
63
+ defaultState: "inactive",
64
+ canDisable: true
65
+ },
66
+ {
67
+ name: "secret-scanner",
68
+ risk: "high",
69
+ summary: "Pre-tool hook that blocks (or optionally redacts) tools whose arguments contain plaintext credentials",
70
+ defaultState: "active",
71
+ canDisable: true
72
+ },
73
+ {
74
+ name: "todo-tracker",
75
+ risk: "low",
76
+ summary: "Persistent, project-scoped todo backlog that survives across sessions",
77
+ defaultState: "active",
78
+ canDisable: true
79
+ },
80
+ {
81
+ name: "token-budget",
82
+ risk: "medium",
83
+ summary: "Enforces a per-session token budget \u2014 warns at a threshold and stops the agent loop when the limit is hit",
84
+ defaultState: "active",
85
+ canDisable: true
86
+ },
87
+ {
88
+ name: "lint-gate",
89
+ risk: "medium",
90
+ summary: "Pre-tool hook that runs biome/eslint on would-be file content before write or edit commits",
91
+ defaultState: "inactive",
92
+ canDisable: true
93
+ },
94
+ {
95
+ name: "branch-guard",
96
+ risk: "high",
97
+ summary: "Pre-tool hook that blocks commits, pushes, and merges to protected branches (default: main, master)",
98
+ defaultState: "inactive",
99
+ canDisable: true
100
+ },
101
+ {
102
+ name: "diff-summary",
103
+ risk: "low",
104
+ summary: "PostToolUse hook that injects a compact git diff into the LLM context after every write or edit",
105
+ defaultState: "active",
106
+ canDisable: true
107
+ },
108
+ {
109
+ name: "commit-validator",
110
+ risk: "medium",
111
+ summary: "PreToolUse hook that validates conventional-commit format before git_autocommit or bash git commit runs",
112
+ defaultState: "inactive",
113
+ canDisable: true
114
+ },
115
+ {
116
+ name: "format-on-save",
117
+ risk: "medium",
118
+ summary: "PostToolUse hook that runs biome format --write on the file after every write or edit",
119
+ defaultState: "inactive",
120
+ canDisable: true
121
+ },
122
+ {
123
+ name: "test-runner-gate",
124
+ risk: "medium",
125
+ summary: "PostToolUse hook that runs the relevant test file after every write or edit to a source file",
126
+ defaultState: "inactive",
127
+ canDisable: true
128
+ },
129
+ {
130
+ name: "import-organizer",
131
+ risk: "medium",
132
+ summary: "PostToolUse hook that re-sorts and de-duplicates imports in a file after every write or edit",
133
+ defaultState: "inactive",
134
+ canDisable: true
135
+ },
136
+ {
137
+ name: "knowledge-graph",
138
+ risk: "low",
139
+ summary: "Accumulates structured (subject, relation, object) facts about the project and queries them across sessions",
140
+ defaultState: "active",
141
+ canDisable: true
142
+ },
143
+ {
144
+ name: "todo-listener",
145
+ risk: "low",
146
+ summary: "PostToolUse hook on `todo` tool \u2014 broadcasts a status update to the project mailbox so other agents can see what this one is working on",
147
+ defaultState: "inactive",
148
+ canDisable: true
149
+ },
150
+ {
151
+ name: "session-recap",
152
+ risk: "low",
153
+ summary: "Stop hook that posts a one-page session summary (tokens, tools, commits, last activity) to the project mailbox",
154
+ defaultState: "inactive",
155
+ canDisable: true
156
+ },
157
+ {
158
+ name: "spec-linker",
159
+ risk: "low",
160
+ summary: "Markdown link auditor for plugin references. PostToolUse surfaces unlinked references; PreToolUse on `write` (autoFix) wraps them in markdown links via modifiedInput.",
161
+ defaultState: "inactive",
162
+ canDisable: true
163
+ },
164
+ {
165
+ name: "loop-breaker",
166
+ risk: "low",
167
+ summary: "Detects runaway tool-call loops (identical repeats and A-B-A-B oscillation) \u2014 warns the model, then blocks",
168
+ defaultState: "active",
169
+ canDisable: true
170
+ },
171
+ {
172
+ name: "path-guard",
173
+ risk: "medium",
174
+ summary: "Blocks or warns about writes, edits, and destructive shell commands touching protected paths (lockfiles, .env, .git, migrations)",
175
+ defaultState: "inactive",
176
+ canDisable: true
177
+ },
178
+ {
179
+ name: "process-guard",
180
+ risk: "high",
181
+ summary: "Blocks kill commands (taskkill, Stop-Process, kill, pkill, wmic) that target active WrongStack processes or their host terminals.",
182
+ defaultState: "active",
183
+ canDisable: true
184
+ },
185
+ {
186
+ name: "context-pins",
187
+ risk: "low",
188
+ summary: "Pin durable facts into the system prompt (pin_add/pin_remove/pin_list) \u2014 pins survive compaction and persist across sessions",
189
+ defaultState: "active",
190
+ canDisable: true
191
+ },
192
+ {
193
+ name: "checkpoint",
194
+ risk: "medium",
195
+ summary: "In-session file snapshots: auto-captures content before every write/edit and restores any pre-edit state on demand",
196
+ defaultState: "inactive",
197
+ canDisable: true
198
+ },
199
+ {
200
+ name: "error-lens",
201
+ risk: "low",
202
+ summary: "Distills failed command output into a compact digest (error line + project stack frames) and flags repeated failures",
203
+ defaultState: "active",
204
+ canDisable: true
205
+ },
206
+ {
207
+ name: "dep-guard",
208
+ risk: "medium",
209
+ summary: "Supervises dependency installs: blocks deny-listed packages, flags typosquat lookalikes, and optionally warns on unpinned versions",
210
+ defaultState: "active",
211
+ canDisable: true
212
+ },
213
+ {
214
+ name: "config-validator",
215
+ risk: "low",
216
+ summary: "Validates JSON/JSONC/YAML/TOML files right after write/edit and reports syntax problems in the same turn",
217
+ defaultState: "active",
218
+ canDisable: true
219
+ },
220
+ {
221
+ name: "notify-hub",
222
+ risk: "medium",
223
+ summary: "POSTs session events (stop, tool errors, budget thresholds) and ad-hoc notify_send messages to a configurable webhook",
224
+ defaultState: "inactive",
225
+ canDisable: true
226
+ },
227
+ {
228
+ name: "changelog-writer",
229
+ risk: "low",
230
+ summary: "Collects session work (commits, edits, manual notes) and writes Keep-a-Changelog entries under [Unreleased] on demand",
231
+ defaultState: "inactive",
232
+ canDisable: true
233
+ },
234
+ {
235
+ name: "injection-shield",
236
+ risk: "low",
237
+ summary: "Scans tool output (fetched pages, files) for prompt-injection patterns and warns the model that content is data, not instructions",
238
+ defaultState: "active",
239
+ canDisable: true
240
+ },
241
+ {
242
+ name: "llm-cache",
243
+ risk: "medium",
244
+ summary: "Caches identical provider requests and short-circuits the provider call on a hit (wrapProviderRunner). Opt-in; deterministic-only by default.",
245
+ defaultState: "inactive",
246
+ canDisable: true
247
+ },
248
+ {
249
+ name: "model-router",
250
+ risk: "medium",
251
+ summary: "Routes each provider call to a different model by declarative size/tool rules (wrapProviderRunner). Opt-in; dry-run by default; routes within the active provider only.",
252
+ defaultState: "inactive",
253
+ canDisable: true
254
+ },
255
+ {
256
+ name: "pr-drafter",
257
+ risk: "low",
258
+ summary: "Collects session work (commits, edited files, diff) and drafts a pull-request description",
259
+ defaultState: "inactive",
260
+ canDisable: true
261
+ },
262
+ {
263
+ name: "prompt-firewall",
264
+ risk: "high",
265
+ summary: "Scans the provider wire for credential leaks before context reaches the LLM API (wrapProviderRunner); redact/warn/block. Opt-in; redact by default.",
266
+ defaultState: "inactive",
267
+ canDisable: true
268
+ },
269
+ {
270
+ name: "auto-escalate",
271
+ risk: "medium",
272
+ summary: "On retryable provider errors, retries the turn with the next model in an escalation ladder (onError). Opt-in; defers to default recovery otherwise.",
273
+ defaultState: "inactive",
274
+ canDisable: true
275
+ },
276
+ {
277
+ name: "test-coverage-gate",
278
+ risk: "medium",
279
+ summary: "PostToolUse hook that detects test coverage regressions after source-file edits",
280
+ defaultState: "inactive",
281
+ canDisable: true
282
+ },
283
+ {
284
+ name: "type-gate",
285
+ risk: "medium",
286
+ summary: "PostToolUse hook that runs TypeScript type-checking after every write or edit to a source file",
287
+ defaultState: "inactive",
288
+ canDisable: true
289
+ },
290
+ {
291
+ name: "token-throttle",
292
+ risk: "medium",
293
+ summary: "Rolling-window tokens/min budget that delays provider calls to stay under a rate limit (wrapProviderRunner). Opt-in; delay capped by maxDelayMs.",
294
+ defaultState: "inactive",
295
+ canDisable: true
296
+ },
297
+ {
298
+ name: "plugin-stack-observer",
299
+ risk: "low",
300
+ summary: "Observes the wrapProviderRunner stack and exposes it to operators (plugin_stack_status) and, optionally, to the LLM (system-prompt contributor).",
301
+ defaultState: "inactive",
302
+ canDisable: true
303
+ },
304
+ {
305
+ name: "dependency-vulnerability-gate",
306
+ risk: "high",
307
+ summary: "PostToolUse hook that runs npm/pnpm audit after dependency installs and blocks or warns on vulnerabilities above a severity threshold",
308
+ defaultState: "inactive",
309
+ canDisable: true
310
+ },
311
+ {
312
+ name: "migration-planner",
313
+ risk: "low",
314
+ summary: "Builds evidence-backed migration checklists with optional host-routed LLM risk analysis",
315
+ defaultState: "inactive",
316
+ canDisable: true
317
+ },
318
+ {
319
+ name: "semantic-search-indexer",
320
+ risk: "low",
321
+ summary: "Builds an in-memory keyword index over project source files and answers ranked search queries",
322
+ defaultState: "inactive",
323
+ canDisable: true
324
+ },
325
+ {
326
+ name: "auto-i18n-extractor",
327
+ risk: "low",
328
+ summary: "Detects hardcoded user-facing strings in UI source files and suggests translation keys",
329
+ defaultState: "inactive",
330
+ canDisable: true
331
+ },
332
+ {
333
+ name: "doc-sync-guard",
334
+ risk: "low",
335
+ summary: "PostToolUse hook that tracks changed public source files and warns when README/docs edits omit them",
336
+ defaultState: "inactive",
337
+ canDisable: true
338
+ },
339
+ {
340
+ name: "api-compatibility-gate",
341
+ risk: "medium",
342
+ summary: "PostToolUse hook that detects breaking API changes (removed exports) in entry-point files after writes or edits",
343
+ defaultState: "inactive",
344
+ canDisable: true
345
+ },
346
+ {
347
+ name: "performance-regression-gate",
348
+ risk: "medium",
349
+ summary: "Compares benchmark results to detect performance regressions and reports metrics that increased beyond the configured threshold",
350
+ defaultState: "inactive",
351
+ canDisable: true
352
+ },
353
+ {
354
+ name: "test-flake-detector",
355
+ risk: "medium",
356
+ summary: "Runs a test command multiple times and reports tests that fail non-deterministically",
357
+ defaultState: "inactive",
358
+ canDisable: true
359
+ },
360
+ {
361
+ name: "schema-evolution-guard",
362
+ risk: "high",
363
+ summary: "PostToolUse hook that guards database/API schema changes by detecting destructive patterns in schema files",
364
+ defaultState: "inactive",
365
+ canDisable: true
366
+ },
367
+ {
368
+ name: "license-audit-gate",
369
+ risk: "high",
370
+ summary: "PostToolUse hook that audits dependency licenses after package-manager install/add commands and blocks disallowed licenses",
371
+ defaultState: "inactive",
372
+ canDisable: true
373
+ },
374
+ {
375
+ name: "accessibility-auditor",
376
+ risk: "medium",
377
+ summary: "Audits .tsx/.jsx/.html/.vue files for common accessibility issues and reports findings after writes/edits",
378
+ defaultState: "inactive",
379
+ canDisable: true
380
+ },
381
+ {
382
+ name: "security-hotspot-scanner",
383
+ risk: "high",
384
+ summary: "Scans source code for security anti-patterns and warns after writes/edits that introduce new hotspots",
385
+ defaultState: "inactive",
386
+ canDisable: true
387
+ },
388
+ {
389
+ name: "dead-code-detector",
390
+ risk: "low",
391
+ summary: "Lightweight regex-based scan for exported identifiers that appear unused anywhere in the project",
392
+ defaultState: "inactive",
393
+ canDisable: true
394
+ },
395
+ {
396
+ name: "duplicate-code-detector",
397
+ risk: "low",
398
+ summary: "Finds duplicated code blocks across source files using normalized-line fingerprinting",
399
+ defaultState: "inactive",
400
+ canDisable: true
401
+ },
402
+ {
403
+ name: "code-metrics",
404
+ risk: "low",
405
+ summary: "Computes per-file line counts, function counts, and cyclomatic-complexity-like scores",
406
+ defaultState: "inactive",
407
+ canDisable: true
408
+ },
409
+ {
410
+ name: "refactor-suggester",
411
+ risk: "low",
412
+ summary: "Suggests refactoring opportunities using regex-based smell detection",
413
+ defaultState: "inactive",
414
+ canDisable: true
415
+ },
416
+ {
417
+ name: "test-generator",
418
+ risk: "low",
419
+ summary: "Generates framework-correct test skeletons with optional host-routed LLM test authoring",
420
+ defaultState: "inactive",
421
+ canDisable: true
422
+ },
423
+ {
424
+ name: "release-notes-generator",
425
+ risk: "low",
426
+ summary: "Generates traceable release notes from conventional commits with optional LLM polishing",
427
+ defaultState: "inactive",
428
+ canDisable: true
429
+ },
430
+ {
431
+ name: "smart-rename",
432
+ risk: "medium",
433
+ summary: "Whole-word identifier rename inside a single source file",
434
+ defaultState: "inactive",
435
+ canDisable: true
436
+ },
437
+ {
438
+ name: "feature-flag-tracker",
439
+ risk: "low",
440
+ summary: "Scans source files for feature-flag-like expressions and reports usages",
441
+ defaultState: "inactive",
442
+ canDisable: true
443
+ },
444
+ {
445
+ name: "interface-contract-guard",
446
+ risk: "medium",
447
+ summary: "Checks TypeScript interfaces for visible implementers and warns about contract drift",
448
+ defaultState: "inactive",
449
+ canDisable: true
450
+ }
451
+ ];
452
+
453
+ // src/plugin-audit-catalog/index.ts
454
+ var HOST_PLUGIN_AUDIT_ENTRIES = [
455
+ {
456
+ name: "wstack-prompts",
457
+ risk: "medium",
458
+ summary: "Prompt library and prompt authoring commands.",
459
+ defaultState: "active",
460
+ canDisable: true
461
+ },
462
+ {
463
+ name: "wstack-sync",
464
+ risk: "medium",
465
+ summary: "Cloud sync commands for prompts, skills, settings, memory, and history.",
466
+ defaultState: "active",
467
+ canDisable: true
468
+ },
469
+ {
470
+ name: "wstack-git",
471
+ risk: "high",
472
+ summary: "Git commands for commit, status checks, and push.",
473
+ defaultState: "active",
474
+ canDisable: true
475
+ },
476
+ {
477
+ name: "wstack-observability",
478
+ risk: "low",
479
+ summary: "Runtime metrics and health slash commands.",
480
+ defaultState: "active",
481
+ canDisable: true
482
+ },
483
+ {
484
+ name: "wstack-chimera",
485
+ risk: "medium",
486
+ summary: "Spawns a post-session code review subagent when explicitly enabled.",
487
+ defaultState: "inactive",
488
+ canDisable: true
489
+ },
490
+ {
491
+ name: "wstack-skills",
492
+ risk: "medium",
493
+ summary: "Skill library, authoring, install, update, and uninstall commands.",
494
+ defaultState: "active",
495
+ canDisable: true
496
+ },
497
+ {
498
+ name: "wstack-plan",
499
+ risk: "medium",
500
+ summary: "Strategic plan board slash command.",
501
+ defaultState: "active",
502
+ canDisable: true
503
+ },
504
+ {
505
+ name: "@wrongstack/plug-lsp",
506
+ risk: "medium",
507
+ summary: "Language Server Protocol tools and slash commands.",
508
+ defaultState: "inactive",
509
+ canDisable: true
510
+ },
511
+ {
512
+ name: "telegram",
513
+ risk: "medium",
514
+ summary: "Telegram bridge for messages, approvals, and notifications.",
515
+ defaultState: "inactive",
516
+ canDisable: true
517
+ }
518
+ ];
519
+ var PLUGIN_AUDIT_ENTRIES = Object.freeze([
520
+ ...HOST_PLUGIN_AUDIT_ENTRIES,
521
+ ...OFFICIAL_PLUGIN_AUDIT_ENTRIES
522
+ ]);
523
+ export {
524
+ HOST_PLUGIN_AUDIT_ENTRIES,
525
+ PLUGIN_AUDIT_ENTRIES
526
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/plugins",
3
- "version": "0.298.0",
3
+ "version": "0.298.1",
4
4
  "description": "Official WrongStack collection of focused plugins for code quality, security, observability, planning, and agent coordination",
5
5
  "license": "MIT",
6
6
  "author": "ECOSTACK TECHNOLOGY OÜ",
@@ -24,6 +24,10 @@
24
24
  "types": "./dist/audit.d.ts",
25
25
  "import": "./dist/audit.js"
26
26
  },
27
+ "./plugin-audit-catalog": {
28
+ "types": "./dist/plugin-audit-catalog.d.ts",
29
+ "import": "./dist/plugin-audit-catalog.js"
30
+ },
27
31
  "./agent-handoff": {
28
32
  "types": "./dist/agent-handoff.d.ts",
29
33
  "import": "./dist/agent-handoff.js"
@@ -290,13 +294,13 @@
290
294
  "!dist/**/*.map"
291
295
  ],
292
296
  "devDependencies": {
293
- "@types/node": "^26.1.1",
297
+ "@types/node": "^26.1.2",
294
298
  "typescript": "^7.0.2",
295
299
  "vitest": "^4.1.10"
296
300
  },
297
301
  "dependencies": {
298
- "@wrongstack/core": "0.298.0",
299
- "@wrongstack/tools": "0.298.0"
302
+ "@wrongstack/core": "0.298.1",
303
+ "@wrongstack/tools": "0.298.1"
300
304
  },
301
305
  "scripts": {
302
306
  "build": "node ../../scripts/build-package.mjs",