@wrongstack/plugins 0.284.1 → 0.286.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.
- package/README.md +18 -14
- package/dist/accessibility-auditor/index.d.ts +38 -0
- package/dist/accessibility-auditor/index.d.ts.map +1 -0
- package/dist/accessibility-auditor.d.ts +2 -40
- package/dist/accessibility-auditor.js +10 -15
- package/dist/agent-handoff/index.d.ts +35 -0
- package/dist/agent-handoff/index.d.ts.map +1 -0
- package/dist/agent-handoff.d.ts +2 -37
- package/dist/agent-handoff.js +3 -2
- package/dist/api-compatibility-gate/index.d.ts +36 -0
- package/dist/api-compatibility-gate/index.d.ts.map +1 -0
- package/dist/api-compatibility-gate.d.ts +2 -38
- package/dist/api-compatibility-gate.js +6 -6
- package/dist/auto-doc/index.d.ts +20 -0
- package/dist/auto-doc/index.d.ts.map +1 -0
- package/dist/auto-doc.d.ts +2 -22
- package/dist/auto-doc.js +5 -5
- package/dist/auto-escalate/index.d.ts +43 -0
- package/dist/auto-escalate/index.d.ts.map +1 -0
- package/dist/auto-escalate.d.ts +2 -45
- package/dist/auto-escalate.js +5 -2
- package/dist/auto-i18n-extractor/index.d.ts +34 -0
- package/dist/auto-i18n-extractor/index.d.ts.map +1 -0
- package/dist/auto-i18n-extractor.d.ts +2 -36
- package/dist/auto-i18n-extractor.js +6 -7
- package/dist/branch-guard/index.d.ts +32 -0
- package/dist/branch-guard/index.d.ts.map +1 -0
- package/dist/branch-guard.d.ts +2 -34
- package/dist/branch-guard.js +4 -4
- package/dist/catalog.d.ts +39 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/changelog-writer/index.d.ts +71 -0
- package/dist/changelog-writer/index.d.ts.map +1 -0
- package/dist/changelog-writer.d.ts +2 -73
- package/dist/changelog-writer.js +9 -5
- package/dist/checkpoint/index.d.ts +53 -0
- package/dist/checkpoint/index.d.ts.map +1 -0
- package/dist/checkpoint.d.ts +2 -55
- package/dist/checkpoint.js +6 -6
- package/dist/code-metrics/index.d.ts +29 -0
- package/dist/code-metrics/index.d.ts.map +1 -0
- package/dist/code-metrics.d.ts +2 -31
- package/dist/code-metrics.js +13 -15
- package/dist/commit-validator/index.d.ts +31 -0
- package/dist/commit-validator/index.d.ts.map +1 -0
- package/dist/commit-validator.d.ts +2 -33
- package/dist/commit-validator.js +5 -3
- package/dist/config-validator/index.d.ts +46 -0
- package/dist/config-validator/index.d.ts.map +1 -0
- package/dist/config-validator.d.ts +2 -48
- package/dist/config-validator.js +8 -4
- package/dist/context-pins/index.d.ts +43 -0
- package/dist/context-pins/index.d.ts.map +1 -0
- package/dist/context-pins.d.ts +2 -45
- package/dist/context-pins.js +5 -5
- package/dist/cost-tracker/index.d.ts +51 -0
- package/dist/cost-tracker/index.d.ts.map +1 -0
- package/dist/cost-tracker.d.ts +2 -53
- package/dist/cost-tracker.js +4 -4
- package/dist/cron/index.d.ts +12 -0
- package/dist/cron/index.d.ts.map +1 -0
- package/dist/cron.d.ts +2 -14
- package/dist/cron.js +3 -2
- package/dist/dead-code-detector/index.d.ts +32 -0
- package/dist/dead-code-detector/index.d.ts.map +1 -0
- package/dist/dead-code-detector.d.ts +2 -34
- package/dist/dead-code-detector.js +8 -9
- package/dist/dep-guard/index.d.ts +63 -0
- package/dist/dep-guard/index.d.ts.map +1 -0
- package/dist/dep-guard.d.ts +2 -65
- package/dist/dep-guard.js +6 -2
- package/dist/dependency-vulnerability-gate/index.d.ts +33 -0
- package/dist/dependency-vulnerability-gate/index.d.ts.map +1 -0
- package/dist/dependency-vulnerability-gate.d.ts +2 -35
- package/dist/dependency-vulnerability-gate.js +5 -5
- package/dist/diff-summary/index.d.ts +34 -0
- package/dist/diff-summary/index.d.ts.map +1 -0
- package/dist/diff-summary.d.ts +2 -36
- package/dist/diff-summary.js +5 -5
- package/dist/doc-sync-guard/index.d.ts +31 -0
- package/dist/doc-sync-guard/index.d.ts.map +1 -0
- package/dist/doc-sync-guard.d.ts +2 -33
- package/dist/doc-sync-guard.js +4 -4
- package/dist/duplicate-code-detector/index.d.ts +31 -0
- package/dist/duplicate-code-detector/index.d.ts.map +1 -0
- package/dist/duplicate-code-detector.d.ts +2 -33
- package/dist/duplicate-code-detector.js +5 -5
- package/dist/error-lens/index.d.ts +65 -0
- package/dist/error-lens/index.d.ts.map +1 -0
- package/dist/error-lens.d.ts +2 -67
- package/dist/error-lens.js +5 -2
- package/dist/feature-flag-tracker/index.d.ts +36 -0
- package/dist/feature-flag-tracker/index.d.ts.map +1 -0
- package/dist/feature-flag-tracker.d.ts +2 -38
- package/dist/feature-flag-tracker.js +6 -7
- package/dist/file-watcher/index.d.ts +12 -0
- package/dist/file-watcher/index.d.ts.map +1 -0
- package/dist/file-watcher.d.ts +2 -14
- package/dist/file-watcher.js +7 -7
- package/dist/format-on-save/index.d.ts +33 -0
- package/dist/format-on-save/index.d.ts.map +1 -0
- package/dist/format-on-save.d.ts +2 -35
- package/dist/format-on-save.js +6 -6
- package/dist/git-autocommit/index.d.ts +15 -0
- package/dist/git-autocommit/index.d.ts.map +1 -0
- package/dist/git-autocommit.d.ts +2 -17
- package/dist/git-autocommit.js +5 -5
- package/dist/import-organizer/index.d.ts +50 -0
- package/dist/import-organizer/index.d.ts.map +1 -0
- package/dist/import-organizer.d.ts +2 -52
- package/dist/import-organizer.js +6 -6
- package/dist/index.d.ts +186 -64
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +992 -454
- package/dist/injection-shield/index.d.ts +47 -0
- package/dist/injection-shield/index.d.ts.map +1 -0
- package/dist/injection-shield.d.ts +2 -49
- package/dist/injection-shield.js +4 -2
- package/dist/interface-contract-guard/index.d.ts +35 -0
- package/dist/interface-contract-guard/index.d.ts.map +1 -0
- package/dist/interface-contract-guard.d.ts +2 -37
- package/dist/interface-contract-guard.js +6 -7
- package/dist/knowledge-graph/index.d.ts +43 -0
- package/dist/knowledge-graph/index.d.ts.map +1 -0
- package/dist/knowledge-graph.d.ts +2 -45
- package/dist/knowledge-graph.js +5 -5
- package/dist/license-audit-gate/index.d.ts +32 -0
- package/dist/license-audit-gate/index.d.ts.map +1 -0
- package/dist/license-audit-gate.d.ts +2 -34
- package/dist/license-audit-gate.js +6 -7
- package/dist/lint-gate/index.d.ts +31 -0
- package/dist/lint-gate/index.d.ts.map +1 -0
- package/dist/lint-gate.d.ts +2 -33
- package/dist/lint-gate.js +7 -7
- package/dist/llm-cache/index.d.ts +54 -0
- package/dist/llm-cache/index.d.ts.map +1 -0
- package/dist/llm-cache.d.ts +2 -56
- package/dist/llm-cache.js +6 -4
- package/dist/loop-breaker/index.d.ts +4 -0
- package/dist/loop-breaker/index.d.ts.map +1 -0
- package/dist/loop-breaker.d.ts +2 -5
- package/dist/loop-breaker.js +4 -4
- package/dist/migration-planner/index.d.ts +28 -0
- package/dist/migration-planner/index.d.ts.map +1 -0
- package/dist/migration-planner.d.ts +2 -30
- package/dist/migration-planner.js +5 -5
- package/dist/model-router/index.d.ts +67 -0
- package/dist/model-router/index.d.ts.map +1 -0
- package/dist/model-router.d.ts +2 -69
- package/dist/model-router.js +5 -2
- package/dist/notify-hub/index.d.ts +43 -0
- package/dist/notify-hub/index.d.ts.map +1 -0
- package/dist/notify-hub.d.ts +2 -45
- package/dist/notify-hub.js +3 -2
- package/dist/path-guard/index.d.ts +52 -0
- package/dist/path-guard/index.d.ts.map +1 -0
- package/dist/path-guard.d.ts +2 -54
- package/dist/path-guard.js +5 -2
- package/dist/performance-regression-gate/index.d.ts +31 -0
- package/dist/performance-regression-gate/index.d.ts.map +1 -0
- package/dist/performance-regression-gate.d.ts +2 -33
- package/dist/performance-regression-gate.js +5 -5
- package/dist/plugin-stack-observer/index.d.ts +33 -0
- package/dist/plugin-stack-observer/index.d.ts.map +1 -0
- package/dist/plugin-stack-observer.d.ts +2 -35
- package/dist/plugin-stack-observer.js +3 -2
- package/dist/pr-drafter/index.d.ts +33 -0
- package/dist/pr-drafter/index.d.ts.map +1 -0
- package/dist/pr-drafter.d.ts +2 -35
- package/dist/pr-drafter.js +6 -6
- package/dist/prompt-firewall/index.d.ts +55 -0
- package/dist/prompt-firewall/index.d.ts.map +1 -0
- package/dist/prompt-firewall.d.ts +2 -57
- package/dist/prompt-firewall.js +5 -2
- package/dist/refactor-suggester/index.d.ts +36 -0
- package/dist/refactor-suggester/index.d.ts.map +1 -0
- package/dist/refactor-suggester.d.ts +2 -38
- package/dist/refactor-suggester.js +16 -17
- package/dist/release-notes-generator/index.d.ts +25 -0
- package/dist/release-notes-generator/index.d.ts.map +1 -0
- package/dist/release-notes-generator.d.ts +2 -27
- package/dist/release-notes-generator.js +28 -10
- package/dist/runtime/index.d.ts +124 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime.d.ts +1 -0
- package/dist/runtime.js +216 -0
- package/dist/schema-evolution-guard/index.d.ts +40 -0
- package/dist/schema-evolution-guard/index.d.ts.map +1 -0
- package/dist/schema-evolution-guard.d.ts +2 -42
- package/dist/schema-evolution-guard.js +5 -5
- package/dist/secret-scanner/index.d.ts +32 -0
- package/dist/secret-scanner/index.d.ts.map +1 -0
- package/dist/secret-scanner.d.ts +2 -34
- package/dist/secret-scanner.js +3 -2
- package/dist/security-hotspot-scanner/index.d.ts +28 -0
- package/dist/security-hotspot-scanner/index.d.ts.map +1 -0
- package/dist/security-hotspot-scanner.d.ts +2 -30
- package/dist/security-hotspot-scanner.js +6 -6
- package/dist/semantic-search-indexer/index.d.ts +36 -0
- package/dist/semantic-search-indexer/index.d.ts.map +1 -0
- package/dist/semantic-search-indexer.d.ts +2 -38
- package/dist/semantic-search-indexer.js +22 -6
- package/dist/semver-bump/index.d.ts +24 -0
- package/dist/semver-bump/index.d.ts.map +1 -0
- package/dist/semver-bump.d.ts +2 -26
- package/dist/semver-bump.js +10 -8
- package/dist/session-recap/index.d.ts +48 -0
- package/dist/session-recap/index.d.ts.map +1 -0
- package/dist/session-recap.d.ts +2 -50
- package/dist/session-recap.js +6 -4
- package/dist/shell-check/index.d.ts +14 -0
- package/dist/shell-check/index.d.ts.map +1 -0
- package/dist/shell-check.d.ts +2 -16
- package/dist/shell-check.js +6 -6
- package/dist/smart-rename/index.d.ts +24 -0
- package/dist/smart-rename/index.d.ts.map +1 -0
- package/dist/smart-rename.d.ts +2 -26
- package/dist/smart-rename.js +5 -5
- package/dist/spec-linker/index.d.ts +49 -0
- package/dist/spec-linker/index.d.ts.map +1 -0
- package/dist/spec-linker.d.ts +2 -51
- package/dist/spec-linker.js +20086 -244
- package/dist/template-engine/index.d.ts +13 -0
- package/dist/template-engine/index.d.ts.map +1 -0
- package/dist/template-engine.d.ts +2 -15
- package/dist/template-engine.js +7 -7
- package/dist/test-coverage-gate/index.d.ts +35 -0
- package/dist/test-coverage-gate/index.d.ts.map +1 -0
- package/dist/test-coverage-gate.d.ts +2 -37
- package/dist/test-coverage-gate.js +5 -5
- package/dist/test-flake-detector/index.d.ts +25 -0
- package/dist/test-flake-detector/index.d.ts.map +1 -0
- package/dist/test-flake-detector.d.ts +2 -27
- package/dist/test-flake-detector.js +98 -13
- package/dist/test-generator/index.d.ts +30 -0
- package/dist/test-generator/index.d.ts.map +1 -0
- package/dist/test-generator.d.ts +2 -32
- package/dist/test-generator.js +19 -20
- package/dist/test-runner-gate/index.d.ts +35 -0
- package/dist/test-runner-gate/index.d.ts.map +1 -0
- package/dist/test-runner-gate.d.ts +2 -37
- package/dist/test-runner-gate.js +6 -6
- package/dist/todo-listener/index.d.ts +35 -0
- package/dist/todo-listener/index.d.ts.map +1 -0
- package/dist/todo-listener.d.ts +2 -37
- package/dist/todo-listener.js +3 -2
- package/dist/todo-tracker/index.d.ts +4 -0
- package/dist/todo-tracker/index.d.ts.map +1 -0
- package/dist/todo-tracker.d.ts +2 -5
- package/dist/todo-tracker.js +5 -5
- package/dist/token-budget/index.d.ts +38 -0
- package/dist/token-budget/index.d.ts.map +1 -0
- package/dist/token-budget.d.ts +2 -40
- package/dist/token-budget.js +3 -2
- package/dist/token-throttle/index.d.ts +52 -0
- package/dist/token-throttle/index.d.ts.map +1 -0
- package/dist/token-throttle.d.ts +2 -54
- package/dist/token-throttle.js +6 -2
- package/dist/type-gate/index.d.ts +35 -0
- package/dist/type-gate/index.d.ts.map +1 -0
- package/dist/type-gate.d.ts +2 -37
- package/dist/type-gate.js +236 -43
- package/package.json +10 -7
package/README.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# @wrongstack/plugins
|
|
2
2
|
|
|
3
3
|
First-party plugin collection for [WrongStack](https://github.com/WrongStack/WrongStack).
|
|
4
|
-
Sixty-three focused, single-purpose plugins ship in this package.
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
Sixty-three focused, single-purpose plugins ship in this package. Passive,
|
|
5
|
+
broadly applicable diagnostics and bounded safety checks load automatically;
|
|
6
|
+
plugins with automatic mutation, policy enforcement, network egress, background
|
|
7
|
+
work, or provider-call semantic changes are opt-in.
|
|
7
8
|
|
|
8
9
|
## What this is
|
|
9
10
|
|
|
@@ -15,8 +16,10 @@ exports a default `Plugin` object. The host's plugin loader
|
|
|
15
16
|
`secret-scanner` registers `PreToolUse` + `PostToolUse` hooks).
|
|
16
17
|
|
|
17
18
|
Plugins are loaded lazily by `packages/cli/src/wiring/plugins.ts`
|
|
18
|
-
under the `BUILTIN_PLUGIN_FACTORIES` array.
|
|
19
|
-
`
|
|
19
|
+
under the `BUILTIN_PLUGIN_FACTORIES` array. The canonical default is
|
|
20
|
+
`PLUGIN_AUDIT_ENTRIES.defaultState`: list an inactive plugin with
|
|
21
|
+
`{ name: '<plugin>', enabled: true }` to opt in, or list an active plugin with
|
|
22
|
+
`enabled: false` to opt out.
|
|
20
23
|
|
|
21
24
|
## Plugin catalog
|
|
22
25
|
|
|
@@ -34,9 +37,9 @@ under the `BUILTIN_PLUGIN_FACTORIES` array. To opt out, add
|
|
|
34
37
|
| 10 | [`todo-tracker`](./src/todo-tracker) | `todo_tracker_*` | — | Persistent project-scoped backlog that survives sessions |
|
|
35
38
|
| 11 | [`token-budget`](./src/token-budget) | `token_budget_status` | `Stop` + `PostToolUse` | Tracks token use and can warn/stop at configured limits |
|
|
36
39
|
| 12 | [`lint-gate`](./src/lint-gate) | `lint_gate_status` | `PreToolUse` | Lints would-be write/edit content before mutation |
|
|
37
|
-
| 13 | [`branch-guard`](./src/branch-guard) | `branch_guard_status` | `PreToolUse` |
|
|
40
|
+
| 13 | [`branch-guard`](./src/branch-guard) | `branch_guard_status` | `PreToolUse` | Opt-in protected-branch policy for commits, pushes, and merges |
|
|
38
41
|
| 14 | [`diff-summary`](./src/diff-summary) | `diff_summary_status` | `PostToolUse` | Injects compact git diff context after write/edit |
|
|
39
|
-
| 15 | [`commit-validator`](./src/commit-validator) | `commit_validator_status` | `PreToolUse` |
|
|
42
|
+
| 15 | [`commit-validator`](./src/commit-validator) | `commit_validator_status` | `PreToolUse` | Opt-in conventional-commit policy |
|
|
40
43
|
| 16 | [`format-on-save`](./src/format-on-save) | `format_on_save_status` | `PostToolUse` | Runs formatter after write/edit |
|
|
41
44
|
| 17 | [`test-runner-gate`](./src/test-runner-gate) | `test_gate_status` | `PostToolUse` | Runs relevant tests after source edits |
|
|
42
45
|
| 18 | [`import-organizer`](./src/import-organizer) | `import_organizer_status` | `PostToolUse` | Organizes imports and applies safe fixes after write/edit |
|
|
@@ -44,9 +47,9 @@ under the `BUILTIN_PLUGIN_FACTORIES` array. To opt out, add
|
|
|
44
47
|
| 20 | [`session-recap`](./src/session-recap) | `session_recap_status` | `Stop` | Posts a compact session recap to the project mailbox |
|
|
45
48
|
| 21 | [`spec-linker`](./src/spec-linker) | `spec_linker_status` | `PreToolUse` + `PostToolUse` | Detects unlinked plugin references in markdown docs |
|
|
46
49
|
| 22 | [`loop-breaker`](./src/loop-breaker) | `loop_breaker_status` | `PreToolUse` | Detects repeated tool-call loops and oscillations |
|
|
47
|
-
| 23 | [`path-guard`](./src/path-guard) | `path_guard_status` | `PreToolUse` |
|
|
50
|
+
| 23 | [`path-guard`](./src/path-guard) | `path_guard_status` | `PreToolUse` | Opt-in protected-path policy for writes and destructive commands |
|
|
48
51
|
| 24 | [`context-pins`](./src/context-pins) | `pin_add`, `pin_remove`, `pin_list` | System prompt contributor | Persists short pinned facts across compaction/session boundaries |
|
|
49
|
-
| 25 | [`checkpoint`](./src/checkpoint) | `checkpoint_create`, `checkpoint_list`, `checkpoint_restore` | `PreToolUse` |
|
|
52
|
+
| 25 | [`checkpoint`](./src/checkpoint) | `checkpoint_create`, `checkpoint_list`, `checkpoint_restore` | `PreToolUse` | Opt-in in-memory snapshots of pre-edit file contents |
|
|
50
53
|
| 26 | [`error-lens`](./src/error-lens) | `error_lens_history` | `PostToolUse` | Summarizes failed tool output and repeated failure patterns |
|
|
51
54
|
| 27 | [`dep-guard`](./src/dep-guard) | `dep_guard_status` | `PreToolUse` | Supervises dependency installs for deny-list and supply-chain warnings |
|
|
52
55
|
| 28 | [`config-validator`](./src/config-validator) | `config_validator_status` | `PostToolUse` | Validates edited JSON/JSONC/YAML/TOML config files |
|
|
@@ -61,10 +64,10 @@ under the `BUILTIN_PLUGIN_FACTORIES` array. To opt out, add
|
|
|
61
64
|
| 37 | [`type-gate`](./src/type-gate) | `type_gate_status` | `PostToolUse` | Runs `tsc --noEmit` after `write`/`edit` to catch type regressions |
|
|
62
65
|
| 38 | [`test-coverage-gate`](./src/test-coverage-gate) | `coverage_gate_status` | `PostToolUse` | Detects test-coverage regressions after source-file edits |
|
|
63
66
|
| 39 | [`pr-drafter`](./src/pr-drafter) | `pr_draft` | `Stop` + event subscriptions | Drafts a pull-request description from session commits/files/diff |
|
|
64
|
-
| 40 | [`agent-handoff`](./src/agent-handoff) | `handoff_note`, `handoff_status` | `subagent.done` event listener |
|
|
67
|
+
| 40 | [`agent-handoff`](./src/agent-handoff) | `handoff_note`, `handoff_status` | `subagent.done` event listener | Opt-in mailbox publication of subagent results |
|
|
65
68
|
| 41 | [`knowledge-graph`](./src/knowledge-graph) | `kg_add_fact`, `kg_query`, `kg_remove_fact`, `kg_status` | System prompt contributor | Persistent structured (subject, relation, object) project facts |
|
|
66
69
|
| 42 | [`dead-code-detector`](./src/dead-code-detector) | `dead_code_scan` | `PostToolUse` | Regex-based scan for exported identifiers that appear unused |
|
|
67
|
-
| 43 | [`dependency-vulnerability-gate`](./src/dependency-vulnerability-gate) | `dependency_audit_status` | `PostToolUse` |
|
|
70
|
+
| 43 | [`dependency-vulnerability-gate`](./src/dependency-vulnerability-gate) | `dependency_audit_status` | `PostToolUse` | Opt-in blocking `npm/pnpm audit` after installs |
|
|
68
71
|
| 44 | [`migration-planner`](./src/migration-planner) | `migration_plan`, `migration_status` | `PostToolUse` | Reads changelogs and produces version-migration checklists |
|
|
69
72
|
| 45 | [`semantic-search-indexer`](./src/semantic-search-indexer) | `semantic_search`, `semantic_index_status` | — | Lightweight keyword index over project source files |
|
|
70
73
|
| 46 | [`auto-i18n-extractor`](./src/auto-i18n-extractor) | `i18n_extract`, `i18n_status` | `PostToolUse` | Detects hardcoded user-facing strings and suggests i18n keys |
|
|
@@ -722,7 +725,7 @@ the PostToolUse context tells the LLM what to fix.
|
|
|
722
725
|
|
|
723
726
|
**Detection rules** (both hooks):
|
|
724
727
|
- Source matches `config.fileGlobs` (default: `**/*.md`, `**/*.mdx`)
|
|
725
|
-
- The reference matches one of the
|
|
728
|
+
- The reference matches one of the 63 known plugin names
|
|
726
729
|
(case-insensitive)
|
|
727
730
|
- It is NOT already wrapped in a markdown link `[name](...)` or
|
|
728
731
|
inline code `` `name` ``
|
|
@@ -1138,8 +1141,9 @@ const plugin: Plugin = {
|
|
|
1138
1141
|
export default plugin;
|
|
1139
1142
|
```
|
|
1140
1143
|
|
|
1141
|
-
Register the
|
|
1142
|
-
|
|
1144
|
+
Register the subpath export in `package.json#exports` and the named re-export
|
|
1145
|
+
in `src/index.ts`. The centralized package builder discovers plugin entry
|
|
1146
|
+
points from the exports map, so no per-plugin build configuration is needed.
|
|
1143
1147
|
Wire it into the CLI's `BUILTIN_PLUGIN_FACTORIES` if it should
|
|
1144
1148
|
auto-load.
|
|
1145
1149
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* accessibility-auditor plugin — audits UI files for common accessibility
|
|
3
|
+
* issues using fast regex-based heuristics.
|
|
4
|
+
*
|
|
5
|
+
* Tools registered:
|
|
6
|
+
* - a11y_audit : Scan a file or directory for a11y issues.
|
|
7
|
+
* - a11y_status : Show config + per-session counters.
|
|
8
|
+
*
|
|
9
|
+
* Hooks registered:
|
|
10
|
+
* - PostToolUse with matcher `write|edit` to UI files, injecting a short
|
|
11
|
+
* additionalContext summary of any new accessibility issues.
|
|
12
|
+
*
|
|
13
|
+
* Config (`config.extensions['accessibility-auditor']`):
|
|
14
|
+
*
|
|
15
|
+
* ```jsonc
|
|
16
|
+
* {
|
|
17
|
+
* "enabled": true,
|
|
18
|
+
* "includeExtensions": [".tsx", ".jsx", ".html", ".vue"],
|
|
19
|
+
* "maxFindings": 50,
|
|
20
|
+
* "severity": "warn", // "warn" | "block"
|
|
21
|
+
* "onWriteEdit": true
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
import type { Plugin } from '@wrongstack/core';
|
|
28
|
+
export type A11yRule = 'missing-alt' | 'missing-input-label' | 'low-contrast-placeholder' | 'missing-button-text' | 'duplicate-id';
|
|
29
|
+
export interface A11yFinding {
|
|
30
|
+
file: string;
|
|
31
|
+
line: number;
|
|
32
|
+
rule: A11yRule;
|
|
33
|
+
severity: 'error' | 'warning';
|
|
34
|
+
message: string;
|
|
35
|
+
}
|
|
36
|
+
declare const plugin: Plugin;
|
|
37
|
+
export default plugin;
|
|
38
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/accessibility-auditor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAQ/C,MAAM,MAAM,QAAQ,GAChB,aAAa,GACb,qBAAqB,GACrB,0BAA0B,GAC1B,qBAAqB,GACrB,cAAc,CAAC;AAEnB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAwSD,QAAA,MAAM,MAAM,EAAE,MA0Nb,CAAC;eAEa,MAAM"}
|
|
@@ -1,40 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* accessibility-auditor plugin — audits UI files for common accessibility
|
|
5
|
-
* issues using fast regex-based heuristics.
|
|
6
|
-
*
|
|
7
|
-
* Tools registered:
|
|
8
|
-
* - a11y_audit : Scan a file or directory for a11y issues.
|
|
9
|
-
* - a11y_status : Show config + per-session counters.
|
|
10
|
-
*
|
|
11
|
-
* Hooks registered:
|
|
12
|
-
* - PostToolUse with matcher `write|edit` to UI files, injecting a short
|
|
13
|
-
* additionalContext summary of any new accessibility issues.
|
|
14
|
-
*
|
|
15
|
-
* Config (`config.extensions['accessibility-auditor']`):
|
|
16
|
-
*
|
|
17
|
-
* ```jsonc
|
|
18
|
-
* {
|
|
19
|
-
* "enabled": true,
|
|
20
|
-
* "includeExtensions": [".tsx", ".jsx", ".html", ".vue"],
|
|
21
|
-
* "maxFindings": 50,
|
|
22
|
-
* "severity": "warn", // "warn" | "block"
|
|
23
|
-
* "onWriteEdit": true
|
|
24
|
-
* }
|
|
25
|
-
* ```
|
|
26
|
-
*
|
|
27
|
-
* @public
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
type A11yRule = 'missing-alt' | 'missing-input-label' | 'low-contrast-placeholder' | 'missing-button-text' | 'duplicate-id';
|
|
31
|
-
interface A11yFinding {
|
|
32
|
-
file: string;
|
|
33
|
-
line: number;
|
|
34
|
-
rule: A11yRule;
|
|
35
|
-
severity: 'error' | 'warning';
|
|
36
|
-
message: string;
|
|
37
|
-
}
|
|
38
|
-
declare const plugin: Plugin;
|
|
39
|
-
|
|
40
|
-
export { type A11yFinding, type A11yRule, plugin as default };
|
|
1
|
+
export * from './accessibility-auditor/index.js';
|
|
2
|
+
export { default } from './accessibility-auditor/index.js';
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { existsSync, statSync, readFileSync, readdirSync } from 'fs';
|
|
2
|
-
import { isAbsolute, resolve, relative } from 'path';
|
|
3
|
-
|
|
4
1
|
// src/accessibility-auditor/index.ts
|
|
2
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
3
|
+
import { isAbsolute, relative, resolve } from "node:path";
|
|
5
4
|
var API_VERSION = "^0.1.10";
|
|
6
5
|
var state = {
|
|
7
6
|
auditCount: 0,
|
|
@@ -120,24 +119,21 @@ function auditFile(filePath, projectRoot) {
|
|
|
120
119
|
for (let i = 0; i < lines.length; i++) {
|
|
121
120
|
const line = lines[i];
|
|
122
121
|
const lineNo = i + 1;
|
|
123
|
-
|
|
124
|
-
while ((idMatch = ATTR_ID.exec(line)) !== null) {
|
|
122
|
+
for (const idMatch of line.matchAll(ATTR_ID)) {
|
|
125
123
|
const id = idMatch[1];
|
|
126
124
|
const list = idsByValue.get(id) ?? [];
|
|
127
125
|
list.push(lineNo);
|
|
128
126
|
idsByValue.set(id, list);
|
|
129
127
|
}
|
|
130
128
|
ATTR_ID.lastIndex = 0;
|
|
131
|
-
|
|
132
|
-
while ((imgMatch = TAG_IMG.exec(line)) !== null) {
|
|
129
|
+
for (const imgMatch of line.matchAll(TAG_IMG)) {
|
|
133
130
|
const tag = imgMatch[0];
|
|
134
131
|
if (!hasMeaningfulAlt(tag)) {
|
|
135
132
|
add(lineNo, "missing-alt", "error", "<img> is missing meaningful alt text");
|
|
136
133
|
}
|
|
137
134
|
}
|
|
138
135
|
TAG_IMG.lastIndex = 0;
|
|
139
|
-
|
|
140
|
-
while ((inputMatch = TAG_INPUT.exec(line)) !== null) {
|
|
136
|
+
for (const inputMatch of line.matchAll(TAG_INPUT)) {
|
|
141
137
|
const tag = inputMatch[0];
|
|
142
138
|
const typeMatch = tag.match(/\btype\s*=\s*["']?([^"'\s>]*)["']?/i);
|
|
143
139
|
const type = typeMatch ? typeMatch[1].toLowerCase() : "text";
|
|
@@ -162,8 +158,7 @@ function auditFile(filePath, projectRoot) {
|
|
|
162
158
|
}
|
|
163
159
|
}
|
|
164
160
|
TAG_INPUT.lastIndex = 0;
|
|
165
|
-
|
|
166
|
-
while ((buttonMatch = TAG_BUTTON.exec(line)) !== null) {
|
|
161
|
+
for (const buttonMatch of line.matchAll(TAG_BUTTON)) {
|
|
167
162
|
const tag = buttonMatch[0];
|
|
168
163
|
const inner = buttonMatch[1] ?? "";
|
|
169
164
|
const hasText = inner.replace(/\s+/g, "").length > 0;
|
|
@@ -174,8 +169,7 @@ function auditFile(filePath, projectRoot) {
|
|
|
174
169
|
}
|
|
175
170
|
}
|
|
176
171
|
TAG_BUTTON.lastIndex = 0;
|
|
177
|
-
|
|
178
|
-
while ((inputButtonMatch = INPUT_BUTTON.exec(line)) !== null) {
|
|
172
|
+
for (const inputButtonMatch of line.matchAll(INPUT_BUTTON)) {
|
|
179
173
|
const tag = inputButtonMatch[0];
|
|
180
174
|
if (!ATTR_VALUE.test(tag) && !ATTR_ARIA_LABEL.test(tag) && !ATTR_TITLE.test(tag)) {
|
|
181
175
|
add(lineNo, "missing-button-text", "error", `<input type="${inputButtonMatch[1]}"> is missing value/aria-label/title`);
|
|
@@ -407,5 +401,6 @@ var plugin = {
|
|
|
407
401
|
}
|
|
408
402
|
};
|
|
409
403
|
var accessibility_auditor_default = plugin;
|
|
410
|
-
|
|
411
|
-
|
|
404
|
+
export {
|
|
405
|
+
accessibility_auditor_default as default
|
|
406
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-handoff plugin — turns subagent completions into structured
|
|
3
|
+
* handoff notes for the next agent.
|
|
4
|
+
*
|
|
5
|
+
* When a subagent finishes (`subagent.done` event), this plugin extracts
|
|
6
|
+
* its identity, task, result, and any todo context, then posts a compact
|
|
7
|
+
* mailbox message addressed to the parent/leader agent so the next
|
|
8
|
+
* worker or the leader can pick up where it left off.
|
|
9
|
+
*
|
|
10
|
+
* Tools registered:
|
|
11
|
+
* - handoff_note : Manually compose and send a handoff note.
|
|
12
|
+
* - handoff_status : Counters + last handoff id.
|
|
13
|
+
*
|
|
14
|
+
* Events subscribed:
|
|
15
|
+
* - `subagent.done`
|
|
16
|
+
*
|
|
17
|
+
* Config (`config.extensions['agent-handoff']`):
|
|
18
|
+
*
|
|
19
|
+
* ```jsonc
|
|
20
|
+
* {
|
|
21
|
+
* "enabled": true,
|
|
22
|
+
* "subjectPrefix": "handoff: ",
|
|
23
|
+
* "includeResult": true,
|
|
24
|
+
* "includeTodos": true,
|
|
25
|
+
* "maxBodyChars": 4000,
|
|
26
|
+
* "to": "leader" // default recipient alias
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @public
|
|
31
|
+
*/
|
|
32
|
+
import type { Plugin } from '@wrongstack/core';
|
|
33
|
+
declare const plugin: Plugin;
|
|
34
|
+
export default plugin;
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-handoff/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,MAAM,EAA6B,MAAM,kBAAkB,CAAC;AAwK1E,QAAA,MAAM,MAAM,EAAE,MAsNb,CAAC;eAEa,MAAM"}
|
package/dist/agent-handoff.d.ts
CHANGED
|
@@ -1,37 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* agent-handoff plugin — turns subagent completions into structured
|
|
5
|
-
* handoff notes for the next agent.
|
|
6
|
-
*
|
|
7
|
-
* When a subagent finishes (`subagent.done` event), this plugin extracts
|
|
8
|
-
* its identity, task, result, and any todo context, then posts a compact
|
|
9
|
-
* mailbox message addressed to the parent/leader agent so the next
|
|
10
|
-
* worker or the leader can pick up where it left off.
|
|
11
|
-
*
|
|
12
|
-
* Tools registered:
|
|
13
|
-
* - handoff_note : Manually compose and send a handoff note.
|
|
14
|
-
* - handoff_status : Counters + last handoff id.
|
|
15
|
-
*
|
|
16
|
-
* Events subscribed:
|
|
17
|
-
* - `subagent.done`
|
|
18
|
-
*
|
|
19
|
-
* Config (`config.extensions['agent-handoff']`):
|
|
20
|
-
*
|
|
21
|
-
* ```jsonc
|
|
22
|
-
* {
|
|
23
|
-
* "enabled": true,
|
|
24
|
-
* "subjectPrefix": "handoff: ",
|
|
25
|
-
* "includeResult": true,
|
|
26
|
-
* "includeTodos": true,
|
|
27
|
-
* "maxBodyChars": 4000,
|
|
28
|
-
* "to": "leader" // default recipient alias
|
|
29
|
-
* }
|
|
30
|
-
* ```
|
|
31
|
-
*
|
|
32
|
-
* @public
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
declare const plugin: Plugin;
|
|
36
|
-
|
|
37
|
-
export { plugin as default };
|
|
1
|
+
export * from './agent-handoff/index.js';
|
|
2
|
+
export { default } from './agent-handoff/index.js';
|
package/dist/agent-handoff.js
CHANGED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* api-compatibility-gate plugin — guards public API surface changes.
|
|
3
|
+
*
|
|
4
|
+
* Registers a PostToolUse hook on `write|edit` to entry-point files
|
|
5
|
+
* (`index.ts`, `src/index.ts`, or package `main`/`module`/`exports`
|
|
6
|
+
* targets). For each such edit it reads the previous version from git
|
|
7
|
+
* (`git show HEAD:<path>`), parses exported identifiers with simple
|
|
8
|
+
* regex heuristics, and reports any removed exports as breaking changes.
|
|
9
|
+
*
|
|
10
|
+
* Tools registered:
|
|
11
|
+
* - api_compat_status : Show config + per-session counters.
|
|
12
|
+
*
|
|
13
|
+
* Hooks registered:
|
|
14
|
+
* - PostToolUse with matcher `write|edit`.
|
|
15
|
+
*
|
|
16
|
+
* Config (`config.extensions['api-compatibility-gate']`):
|
|
17
|
+
*
|
|
18
|
+
* ```jsonc
|
|
19
|
+
* {
|
|
20
|
+
* "enabled": true,
|
|
21
|
+
* "severity": "warn", // "warn" | "block"
|
|
22
|
+
* "entryPointPatterns": [ // glob-style patterns
|
|
23
|
+
* "**/index.ts",
|
|
24
|
+
* "**/index.js",
|
|
25
|
+
* "**/src/index.ts"
|
|
26
|
+
* ],
|
|
27
|
+
* "trackGitHistory": true // read pre-edit source from git
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @public
|
|
32
|
+
*/
|
|
33
|
+
import type { Plugin } from '@wrongstack/core';
|
|
34
|
+
declare const plugin: Plugin;
|
|
35
|
+
export default plugin;
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api-compatibility-gate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAkR/C,QAAA,MAAM,MAAM,EAAE,MA6Mb,CAAC;eAEa,MAAM"}
|
|
@@ -1,38 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* api-compatibility-gate plugin — guards public API surface changes.
|
|
5
|
-
*
|
|
6
|
-
* Registers a PostToolUse hook on `write|edit` to entry-point files
|
|
7
|
-
* (`index.ts`, `src/index.ts`, or package `main`/`module`/`exports`
|
|
8
|
-
* targets). For each such edit it reads the previous version from git
|
|
9
|
-
* (`git show HEAD:<path>`), parses exported identifiers with simple
|
|
10
|
-
* regex heuristics, and reports any removed exports as breaking changes.
|
|
11
|
-
*
|
|
12
|
-
* Tools registered:
|
|
13
|
-
* - api_compat_status : Show config + per-session counters.
|
|
14
|
-
*
|
|
15
|
-
* Hooks registered:
|
|
16
|
-
* - PostToolUse with matcher `write|edit`.
|
|
17
|
-
*
|
|
18
|
-
* Config (`config.extensions['api-compatibility-gate']`):
|
|
19
|
-
*
|
|
20
|
-
* ```jsonc
|
|
21
|
-
* {
|
|
22
|
-
* "enabled": true,
|
|
23
|
-
* "severity": "warn", // "warn" | "block"
|
|
24
|
-
* "entryPointPatterns": [ // glob-style patterns
|
|
25
|
-
* "**/index.ts",
|
|
26
|
-
* "**/index.js",
|
|
27
|
-
* "**/src/index.ts"
|
|
28
|
-
* ],
|
|
29
|
-
* "trackGitHistory": true // read pre-edit source from git
|
|
30
|
-
* }
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* @public
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
declare const plugin: Plugin;
|
|
37
|
-
|
|
38
|
-
export { plugin as default };
|
|
1
|
+
export * from './api-compatibility-gate/index.js';
|
|
2
|
+
export { default } from './api-compatibility-gate/index.js';
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { execFileSync } from 'child_process';
|
|
2
|
-
import { readFileSync, existsSync } from 'fs';
|
|
3
|
-
import { relative, isAbsolute, dirname, resolve, basename, extname } from 'path';
|
|
4
|
-
|
|
5
1
|
// src/api-compatibility-gate/index.ts
|
|
2
|
+
import { execFileSync } from "node:child_process";
|
|
3
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
+
import { basename, dirname, extname, isAbsolute, relative, resolve } from "node:path";
|
|
6
5
|
var API_VERSION = "^0.1.10";
|
|
7
6
|
var state = {
|
|
8
7
|
invocationCount: 0,
|
|
@@ -353,5 +352,6 @@ var plugin = {
|
|
|
353
352
|
}
|
|
354
353
|
};
|
|
355
354
|
var api_compatibility_gate_default = plugin;
|
|
356
|
-
|
|
357
|
-
|
|
355
|
+
export {
|
|
356
|
+
api_compatibility_gate_default as default
|
|
357
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* auto-doc plugin — Auto-generates JSDoc/TSDoc comments for source files.
|
|
3
|
+
*
|
|
4
|
+
* Tools registered:
|
|
5
|
+
* - auto_doc: Generate and inject doc comments into JS/TS files.
|
|
6
|
+
* Pass `dry_run: true` to preview without writing (replaces the former
|
|
7
|
+
* `auto_doc (dry_run)` tool).
|
|
8
|
+
*
|
|
9
|
+
* LLM mode (opt-in): with `config.extensions['auto-doc'].useLlm = true`
|
|
10
|
+
* (or per-call `use_llm: true`) and a host that wires `api.llm`, each
|
|
11
|
+
* doc comment's prose is written by the LLM from the entity's signature
|
|
12
|
+
* and body instead of the `TODO: describe …` placeholder. Provider/model
|
|
13
|
+
* follow the plugin's `config.extensions['auto-doc'].llm` override, then
|
|
14
|
+
* the session default. Best-effort: any LLM failure (or a bad response)
|
|
15
|
+
* falls back to the template for that entity — a doc comment always lands.
|
|
16
|
+
*/
|
|
17
|
+
import type { Plugin } from '@wrongstack/core';
|
|
18
|
+
declare const plugin: Plugin;
|
|
19
|
+
export default plugin;
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auto-doc/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,MAAM,EAAa,MAAM,kBAAkB,CAAC;AA4W1D,QAAA,MAAM,MAAM,EAAE,MAqIb,CAAC;eAEa,MAAM"}
|
package/dist/auto-doc.d.ts
CHANGED
|
@@ -1,22 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* auto-doc plugin — Auto-generates JSDoc/TSDoc comments for source files.
|
|
5
|
-
*
|
|
6
|
-
* Tools registered:
|
|
7
|
-
* - auto_doc: Generate and inject doc comments into JS/TS files.
|
|
8
|
-
* Pass `dry_run: true` to preview without writing (replaces the former
|
|
9
|
-
* `auto_doc (dry_run)` tool).
|
|
10
|
-
*
|
|
11
|
-
* LLM mode (opt-in): with `config.extensions['auto-doc'].useLlm = true`
|
|
12
|
-
* (or per-call `use_llm: true`) and a host that wires `api.llm`, each
|
|
13
|
-
* doc comment's prose is written by the LLM from the entity's signature
|
|
14
|
-
* and body instead of the `TODO: describe …` placeholder. Provider/model
|
|
15
|
-
* follow the plugin's `config.extensions['auto-doc'].llm` override, then
|
|
16
|
-
* the session default. Best-effort: any LLM failure (or a bad response)
|
|
17
|
-
* falls back to the template for that entity — a doc comment always lands.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
declare const plugin: Plugin;
|
|
21
|
-
|
|
22
|
-
export { plugin as default };
|
|
1
|
+
export * from './auto-doc/index.js';
|
|
2
|
+
export { default } from './auto-doc/index.js';
|
package/dist/auto-doc.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { resolve, isAbsolute, relative } from 'path';
|
|
2
|
-
|
|
3
1
|
// src/auto-doc/index.ts
|
|
2
|
+
import { isAbsolute, relative, resolve } from "node:path";
|
|
4
3
|
var AUTO_DOC_API_VERSION = "^0.1.10";
|
|
5
4
|
function resolveProjectPath(rawPath, cwd = process.cwd()) {
|
|
6
5
|
if (typeof rawPath !== "string" || rawPath.length === 0) return null;
|
|
@@ -187,7 +186,7 @@ async function runAutoDoc(input, api) {
|
|
|
187
186
|
continue;
|
|
188
187
|
}
|
|
189
188
|
try {
|
|
190
|
-
const { readFileSync, writeFileSync } = await import(
|
|
189
|
+
const { readFileSync, writeFileSync } = await import("node:fs");
|
|
191
190
|
let content;
|
|
192
191
|
try {
|
|
193
192
|
content = readFileSync(safeFile, "utf-8");
|
|
@@ -347,5 +346,6 @@ var plugin = {
|
|
|
347
346
|
}
|
|
348
347
|
};
|
|
349
348
|
var auto_doc_default = plugin;
|
|
350
|
-
|
|
351
|
-
|
|
349
|
+
export {
|
|
350
|
+
auto_doc_default as default
|
|
351
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* auto-escalate plugin — turns transient provider errors into a graceful
|
|
3
|
+
* model-escalation ladder instead of a hard failure.
|
|
4
|
+
*
|
|
5
|
+
* Registers an `AgentExtension.onError` hook (wired at agent-loop.ts:636).
|
|
6
|
+
* When a provider call fails with a retryable error (overload, rate
|
|
7
|
+
* limit, timeout, 5xx), the plugin asks the agent loop to retry the turn
|
|
8
|
+
* with the NEXT model in a configured escalation ladder — e.g. a busy
|
|
9
|
+
* fast model escalates to a more capable one that may have spare
|
|
10
|
+
* capacity. On a non-retryable error, or once the ladder is exhausted,
|
|
11
|
+
* it steps aside (returns nothing) so the host's built-in error recovery
|
|
12
|
+
* runs unchanged.
|
|
13
|
+
*
|
|
14
|
+
* Loop constraint: the agent loop caps recovery retries at 2 per turn
|
|
15
|
+
* (agent-loop.ts), so at most the first ~2 rungs of the ladder are used
|
|
16
|
+
* before the loop fails. Order the ladder cheapest→most-capable.
|
|
17
|
+
*
|
|
18
|
+
* Safety posture: opt-in — loads inert until
|
|
19
|
+
* `config.extensions['auto-escalate'].enabled = true`. It never forces a
|
|
20
|
+
* `fail`; it only requests retries with a better model, and otherwise
|
|
21
|
+
* defers to the default handler.
|
|
22
|
+
*
|
|
23
|
+
* Config (`config.extensions['auto-escalate']`):
|
|
24
|
+
*
|
|
25
|
+
* ```jsonc
|
|
26
|
+
* {
|
|
27
|
+
* "enabled": false,
|
|
28
|
+
* "escalation": ["provider/model-standard", "provider/model-premium"],
|
|
29
|
+
* "retryablePatterns": ["overload", "rate.?limit", "429", "50[023]", "timeout", "ETIMEDOUT", "ECONNRESET"]
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* Tools:
|
|
34
|
+
* - `auto_escalate_status` — ladder, patterns, and escalation counters
|
|
35
|
+
*
|
|
36
|
+
* @public
|
|
37
|
+
*/
|
|
38
|
+
import type { Plugin } from '@wrongstack/core';
|
|
39
|
+
export declare function errorText(err: unknown): string;
|
|
40
|
+
export declare function isRetryable(text: string, patterns: RegExp[]): boolean;
|
|
41
|
+
declare const plugin: Plugin;
|
|
42
|
+
export default plugin;
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auto-escalate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAa,MAAM,kBAAkB,CAAC;AAgF1D,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAQ9C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAErE;AAMD,QAAA,MAAM,MAAM,EAAE,MAkJb,CAAC;eAEa,MAAM"}
|
package/dist/auto-escalate.d.ts
CHANGED
|
@@ -1,45 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* auto-escalate plugin — turns transient provider errors into a graceful
|
|
5
|
-
* model-escalation ladder instead of a hard failure.
|
|
6
|
-
*
|
|
7
|
-
* Registers an `AgentExtension.onError` hook (wired at agent-loop.ts:636).
|
|
8
|
-
* When a provider call fails with a retryable error (overload, rate
|
|
9
|
-
* limit, timeout, 5xx), the plugin asks the agent loop to retry the turn
|
|
10
|
-
* with the NEXT model in a configured escalation ladder — e.g. a busy
|
|
11
|
-
* fast model escalates to a more capable one that may have spare
|
|
12
|
-
* capacity. On a non-retryable error, or once the ladder is exhausted,
|
|
13
|
-
* it steps aside (returns nothing) so the host's built-in error recovery
|
|
14
|
-
* runs unchanged.
|
|
15
|
-
*
|
|
16
|
-
* Loop constraint: the agent loop caps recovery retries at 2 per turn
|
|
17
|
-
* (agent-loop.ts), so at most the first ~2 rungs of the ladder are used
|
|
18
|
-
* before the loop fails. Order the ladder cheapest→most-capable.
|
|
19
|
-
*
|
|
20
|
-
* Safety posture: opt-in — loads inert until
|
|
21
|
-
* `config.extensions['auto-escalate'].enabled = true`. It never forces a
|
|
22
|
-
* `fail`; it only requests retries with a better model, and otherwise
|
|
23
|
-
* defers to the default handler.
|
|
24
|
-
*
|
|
25
|
-
* Config (`config.extensions['auto-escalate']`):
|
|
26
|
-
*
|
|
27
|
-
* ```jsonc
|
|
28
|
-
* {
|
|
29
|
-
* "enabled": false,
|
|
30
|
-
* "escalation": ["provider/model-standard", "provider/model-premium"],
|
|
31
|
-
* "retryablePatterns": ["overload", "rate.?limit", "429", "50[023]", "timeout", "ETIMEDOUT", "ECONNRESET"]
|
|
32
|
-
* }
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
35
|
-
* Tools:
|
|
36
|
-
* - `auto_escalate_status` — ladder, patterns, and escalation counters
|
|
37
|
-
*
|
|
38
|
-
* @public
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
declare function errorText(err: unknown): string;
|
|
42
|
-
declare function isRetryable(text: string, patterns: RegExp[]): boolean;
|
|
43
|
-
declare const plugin: Plugin;
|
|
44
|
-
|
|
45
|
-
export { plugin as default, errorText, isRetryable };
|
|
1
|
+
export * from './auto-escalate/index.js';
|
|
2
|
+
export { default } from './auto-escalate/index.js';
|
package/dist/auto-escalate.js
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* auto-i18n-extractor plugin — detects hardcoded user-facing strings in UI
|
|
3
|
+
* source files and suggests translation keys.
|
|
4
|
+
*
|
|
5
|
+
* Tools registered:
|
|
6
|
+
* - i18n_extract : Scan a file/directory path for extractable strings.
|
|
7
|
+
* - i18n_status : Show config + per-session counters.
|
|
8
|
+
*
|
|
9
|
+
* Hooks registered:
|
|
10
|
+
* - PostToolUse with matcher `write|edit` for `.tsx`, `.jsx`, `.vue` files.
|
|
11
|
+
* Scans the written file and injects a short additionalContext with
|
|
12
|
+
* suggested i18n keys when user-facing string literals are found.
|
|
13
|
+
*
|
|
14
|
+
* Config (`config.extensions['auto-i18n-extractor']`):
|
|
15
|
+
*
|
|
16
|
+
* ```jsonc
|
|
17
|
+
* {
|
|
18
|
+
* "enabled": true,
|
|
19
|
+
* "fileExtensions": [".tsx", ".jsx", ".vue"],
|
|
20
|
+
* "minLength": 2,
|
|
21
|
+
* "maxContextStrings": 10,
|
|
22
|
+
* "excludeAttributes": [
|
|
23
|
+
* "className", "class", "testId", "data-testid",
|
|
24
|
+
* "aria-label", "aria-labelledby", "key", "id", "name", "htmlFor"
|
|
25
|
+
* ]
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
import type { Plugin } from '@wrongstack/core';
|
|
32
|
+
declare const plugin: Plugin;
|
|
33
|
+
export default plugin;
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auto-i18n-extractor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAgL/C,QAAA,MAAM,MAAM,EAAE,MAsQb,CAAC;eAEa,MAAM"}
|