@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.
- package/README.md +7 -71
- package/dist/accessibility-auditor/index.d.ts +1 -1
- package/dist/accessibility-auditor/index.d.ts.map +1 -1
- package/dist/accessibility-auditor.js +31 -31
- package/dist/agent-handoff/index.d.ts +1 -1
- package/dist/agent-handoff/index.d.ts.map +1 -1
- package/dist/api-compatibility-gate/index.d.ts +1 -1
- package/dist/api-compatibility-gate/index.d.ts.map +1 -1
- package/dist/api-compatibility-gate.js +21 -16
- package/dist/audit/index.d.ts +386 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit.d.ts +1 -0
- package/dist/audit.js +454 -0
- package/dist/auto-doc/index.d.ts +1 -1
- package/dist/auto-doc/index.d.ts.map +1 -1
- package/dist/auto-escalate/index.d.ts +1 -1
- package/dist/auto-escalate/index.d.ts.map +1 -1
- package/dist/auto-i18n-extractor/index.d.ts +1 -1
- package/dist/auto-i18n-extractor/index.d.ts.map +1 -1
- package/dist/auto-i18n-extractor.js +2 -1
- package/dist/branch-guard/index.d.ts +1 -1
- package/dist/branch-guard/index.d.ts.map +1 -1
- package/dist/branch-guard.js +9 -1
- package/dist/catalog.d.ts +5 -30
- package/dist/catalog.d.ts.map +1 -1
- package/dist/changelog-writer/index.d.ts +1 -1
- package/dist/changelog-writer/index.d.ts.map +1 -1
- package/dist/checkpoint/index.d.ts +1 -1
- package/dist/checkpoint/index.d.ts.map +1 -1
- package/dist/checkpoint.js +7 -8
- package/dist/code-metrics/index.d.ts +1 -1
- package/dist/code-metrics/index.d.ts.map +1 -1
- package/dist/code-metrics.js +29 -29
- package/dist/commit-validator/index.d.ts +1 -1
- package/dist/commit-validator/index.d.ts.map +1 -1
- package/dist/config-validator/index.d.ts +1 -1
- package/dist/config-validator/index.d.ts.map +1 -1
- package/dist/context-pins/index.d.ts +1 -1
- package/dist/context-pins/index.d.ts.map +1 -1
- package/dist/cost-tracker/index.d.ts +1 -1
- package/dist/cost-tracker/index.d.ts.map +1 -1
- package/dist/cost-tracker.js +9 -2
- package/dist/cron/index.d.ts +1 -1
- package/dist/cron/index.d.ts.map +1 -1
- package/dist/dead-code-detector/index.d.ts +1 -1
- package/dist/dead-code-detector/index.d.ts.map +1 -1
- package/dist/dead-code-detector.js +26 -18
- package/dist/dep-guard/index.d.ts +1 -1
- package/dist/dep-guard/index.d.ts.map +1 -1
- package/dist/dependency-vulnerability-gate/index.d.ts +1 -1
- package/dist/dependency-vulnerability-gate/index.d.ts.map +1 -1
- package/dist/dependency-vulnerability-gate.js +34 -22
- package/dist/diff-summary/index.d.ts +1 -1
- package/dist/diff-summary/index.d.ts.map +1 -1
- package/dist/diff-summary.js +28 -29
- package/dist/doc-sync-guard/index.d.ts +1 -1
- package/dist/doc-sync-guard/index.d.ts.map +1 -1
- package/dist/doc-sync-guard.js +2 -1
- package/dist/duplicate-code-detector/index.d.ts +26 -1
- package/dist/duplicate-code-detector/index.d.ts.map +1 -1
- package/dist/duplicate-code-detector.js +178 -67
- package/dist/error-lens/index.d.ts +1 -1
- package/dist/error-lens/index.d.ts.map +1 -1
- package/dist/factories/index.d.ts +4 -0
- package/dist/factories/index.d.ts.map +1 -0
- package/dist/factories.d.ts +1 -0
- package/dist/factories.js +74 -0
- package/dist/feature-flag-tracker/index.d.ts +1 -1
- package/dist/feature-flag-tracker/index.d.ts.map +1 -1
- package/dist/feature-flag-tracker.js +29 -29
- package/dist/file-watcher/index.d.ts +1 -1
- package/dist/file-watcher/index.d.ts.map +1 -1
- package/dist/format-on-save/index.d.ts +1 -1
- package/dist/format-on-save/index.d.ts.map +1 -1
- package/dist/format-on-save.js +2 -1
- package/dist/generated-plugin-exports.d.ts +65 -0
- package/dist/generated-plugin-exports.d.ts.map +1 -0
- package/dist/git-autocommit/index.d.ts +1 -1
- package/dist/git-autocommit/index.d.ts.map +1 -1
- package/dist/import-organizer/index.d.ts +1 -1
- package/dist/import-organizer/index.d.ts.map +1 -1
- package/dist/import-organizer.js +2 -1
- package/dist/index.d.ts +4 -183
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17675 -17377
- package/dist/injection-shield/index.d.ts +1 -1
- package/dist/injection-shield/index.d.ts.map +1 -1
- package/dist/interface-contract-guard/index.d.ts +1 -1
- package/dist/interface-contract-guard/index.d.ts.map +1 -1
- package/dist/interface-contract-guard.js +29 -29
- package/dist/knowledge-graph/index.d.ts +1 -1
- package/dist/knowledge-graph/index.d.ts.map +1 -1
- package/dist/license-audit-gate/index.d.ts +1 -1
- package/dist/license-audit-gate/index.d.ts.map +1 -1
- package/dist/lint-gate/index.d.ts +1 -1
- package/dist/lint-gate/index.d.ts.map +1 -1
- package/dist/lint-gate.js +10 -1
- package/dist/llm-cache/index.d.ts +5 -1
- package/dist/llm-cache/index.d.ts.map +1 -1
- package/dist/llm-cache.js +16 -8
- package/dist/loop-breaker/index.d.ts +1 -1
- package/dist/loop-breaker/index.d.ts.map +1 -1
- package/dist/loop-breaker.js +10 -4
- package/dist/manifest/index.d.ts +16 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest.d.ts +1 -0
- package/dist/manifest.js +152 -0
- package/dist/migration-planner/index.d.ts +1 -1
- package/dist/migration-planner/index.d.ts.map +1 -1
- package/dist/migration-planner.js +2 -1
- package/dist/model-router/index.d.ts +1 -1
- package/dist/model-router/index.d.ts.map +1 -1
- package/dist/notify-hub/index.d.ts +1 -1
- package/dist/notify-hub/index.d.ts.map +1 -1
- package/dist/notify-hub/webhook-channel.d.ts +1 -1
- package/dist/notify-hub/webhook-channel.d.ts.map +1 -1
- package/dist/path-guard/index.d.ts +1 -1
- package/dist/path-guard/index.d.ts.map +1 -1
- package/dist/performance-regression-gate/index.d.ts +1 -1
- package/dist/performance-regression-gate/index.d.ts.map +1 -1
- package/dist/plugin-stack-observer/index.d.ts +1 -1
- package/dist/plugin-stack-observer/index.d.ts.map +1 -1
- package/dist/pr-drafter/index.d.ts +1 -1
- package/dist/pr-drafter/index.d.ts.map +1 -1
- package/dist/pr-drafter.js +28 -29
- package/dist/process-guard/index.d.ts +1 -1
- package/dist/process-guard/index.d.ts.map +1 -1
- package/dist/prompt-firewall/index.d.ts +1 -1
- package/dist/prompt-firewall/index.d.ts.map +1 -1
- package/dist/refactor-suggester/index.d.ts +1 -1
- package/dist/refactor-suggester/index.d.ts.map +1 -1
- package/dist/refactor-suggester.js +29 -29
- package/dist/release-notes-generator/index.d.ts +1 -1
- package/dist/release-notes-generator/index.d.ts.map +1 -1
- package/dist/release-notes-generator.js +29 -22
- package/dist/runtime/index.d.ts +15 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/llm.d.ts +1 -1
- package/dist/runtime/llm.d.ts.map +1 -1
- package/dist/runtime.js +43 -2
- package/dist/schema-evolution-guard/index.d.ts +1 -1
- package/dist/schema-evolution-guard/index.d.ts.map +1 -1
- package/dist/schema-evolution-guard.js +2 -1
- package/dist/secret-scanner/index.d.ts +1 -1
- package/dist/secret-scanner/index.d.ts.map +1 -1
- package/dist/secret-scanner.js +7 -1
- package/dist/security-hotspot-scanner/index.d.ts +1 -1
- package/dist/security-hotspot-scanner/index.d.ts.map +1 -1
- package/dist/security-hotspot-scanner.js +26 -19
- package/dist/semantic-search-indexer/index.d.ts +1 -1
- package/dist/semantic-search-indexer/index.d.ts.map +1 -1
- package/dist/semver-bump/index.d.ts +1 -1
- package/dist/semver-bump/index.d.ts.map +1 -1
- package/dist/semver-bump.js +78 -43
- package/dist/session-recap/index.d.ts +1 -1
- package/dist/session-recap/index.d.ts.map +1 -1
- package/dist/shell-check/index.d.ts +1 -1
- package/dist/shell-check/index.d.ts.map +1 -1
- package/dist/smart-rename/index.d.ts +1 -1
- package/dist/smart-rename/index.d.ts.map +1 -1
- package/dist/spec-linker/index.d.ts +1 -1
- package/dist/spec-linker/index.d.ts.map +1 -1
- package/dist/spec-linker.js +222 -20772
- package/dist/template-engine/index.d.ts +1 -1
- package/dist/template-engine/index.d.ts.map +1 -1
- package/dist/template-engine.js +4 -6
- package/dist/test-coverage-gate/index.d.ts +1 -1
- package/dist/test-coverage-gate/index.d.ts.map +1 -1
- package/dist/test-coverage-gate.js +29 -14
- package/dist/test-flake-detector/index.d.ts +1 -1
- package/dist/test-flake-detector/index.d.ts.map +1 -1
- package/dist/test-flake-detector.js +31 -20
- package/dist/test-generator/index.d.ts +1 -1
- package/dist/test-generator/index.d.ts.map +1 -1
- package/dist/test-runner-gate/index.d.ts +1 -1
- package/dist/test-runner-gate/index.d.ts.map +1 -1
- package/dist/test-runner-gate.js +2 -1
- package/dist/todo-listener/index.d.ts +1 -32
- package/dist/todo-listener/index.d.ts.map +1 -1
- package/dist/todo-tracker/index.d.ts +1 -1
- package/dist/todo-tracker/index.d.ts.map +1 -1
- package/dist/token-budget/index.d.ts +1 -1
- package/dist/token-budget/index.d.ts.map +1 -1
- package/dist/token-throttle/index.d.ts +1 -1
- package/dist/token-throttle/index.d.ts.map +1 -1
- package/dist/type-gate/index.d.ts +1 -1
- package/dist/type-gate/index.d.ts.map +1 -1
- package/dist/type-gate.js +11 -4
- package/package.json +80 -68
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - template_create: Save a named template to the plugin store
|
|
8
8
|
* - template_list: List all saved templates
|
|
9
9
|
*/
|
|
10
|
-
import type { Plugin } from '@wrongstack/core';
|
|
10
|
+
import type { Plugin } from '@wrongstack/core/types';
|
|
11
11
|
declare const plugin: Plugin;
|
|
12
12
|
export default plugin;
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/template-engine/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/template-engine/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAsHrD,QAAA,MAAM,MAAM,EAAE,MA4Sb,CAAC;eAEa,MAAM"}
|
package/dist/template-engine.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// src/template-engine/index.ts
|
|
2
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
3
|
import { isAbsolute } from "node:path";
|
|
3
4
|
var API_VERSION = "^0.1.10";
|
|
4
5
|
var templates = /* @__PURE__ */ new Map();
|
|
@@ -119,8 +120,7 @@ var plugin = {
|
|
|
119
120
|
if (output_path) {
|
|
120
121
|
const pathError = validateRelativeTemplatePath("output_path", output_path);
|
|
121
122
|
if (pathError) return { ok: false, error: pathError };
|
|
122
|
-
|
|
123
|
-
writeFileSync(output_path, result, "utf-8");
|
|
123
|
+
await writeFile(output_path, result, "utf-8");
|
|
124
124
|
return {
|
|
125
125
|
ok: true,
|
|
126
126
|
output_path,
|
|
@@ -173,8 +173,7 @@ var plugin = {
|
|
|
173
173
|
}
|
|
174
174
|
let content;
|
|
175
175
|
try {
|
|
176
|
-
|
|
177
|
-
content = readFileSync(template_path, "utf-8");
|
|
176
|
+
content = await readFile(template_path, "utf-8");
|
|
178
177
|
} catch (err) {
|
|
179
178
|
return { ok: false, error: `Could not read template file: ${err}` };
|
|
180
179
|
}
|
|
@@ -187,8 +186,7 @@ var plugin = {
|
|
|
187
186
|
if (output_path) {
|
|
188
187
|
const pathError = validateRelativeTemplatePath("output_path", output_path);
|
|
189
188
|
if (pathError) return { ok: false, error: pathError };
|
|
190
|
-
|
|
191
|
-
writeFileSync(output_path, result, "utf-8");
|
|
189
|
+
await writeFile(output_path, result, "utf-8");
|
|
192
190
|
return {
|
|
193
191
|
ok: true,
|
|
194
192
|
template_path,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-coverage-gate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-coverage-gate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAwIrD,QAAA,MAAM,MAAM,EAAE,MA0Ob,CAAC;eAEa,MAAM"}
|
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
// src/test-coverage-gate/index.ts
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
|
-
|
|
3
|
+
|
|
4
|
+
// src/runtime/index.ts
|
|
5
|
+
import { basename, extname, isAbsolute, relative, resolve } from "node:path";
|
|
6
|
+
var MAX_BUFFER_BYTES = 16 * 1024 * 1024;
|
|
7
|
+
function hasLeadingDash(arg) {
|
|
8
|
+
return arg.length > 0 && arg.startsWith("-");
|
|
9
|
+
}
|
|
10
|
+
function withinProjectPath(projectRoot, candidate) {
|
|
11
|
+
if (candidate.length === 0 || candidate.length > 4096) return false;
|
|
12
|
+
if (hasLeadingDash(candidate)) return false;
|
|
13
|
+
const resolved = isAbsolute(candidate) ? resolve(candidate) : resolve(projectRoot, candidate);
|
|
14
|
+
const rel = relative(projectRoot, resolved);
|
|
15
|
+
return rel === "" || !rel.startsWith("..") && !isAbsolute(rel);
|
|
16
|
+
}
|
|
17
|
+
function withinProject(p) {
|
|
18
|
+
const cwd = process.cwd();
|
|
19
|
+
return withinProjectPath(cwd, p) || relative(cwd, p) === ".";
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// src/test-coverage-gate/index.ts
|
|
4
23
|
var API_VERSION = "^0.1.10";
|
|
5
24
|
var state = {
|
|
6
25
|
invocationCount: 0,
|
|
@@ -21,28 +40,24 @@ var DEFAULTS = {
|
|
|
21
40
|
deltaThreshold: 1,
|
|
22
41
|
runOnChange: [".ts", ".tsx", ".js", ".jsx"]
|
|
23
42
|
};
|
|
43
|
+
var runOnChangeSet = new Set(DEFAULTS.runOnChange);
|
|
24
44
|
function readConfig(raw) {
|
|
25
|
-
if (!raw || typeof raw !== "object")
|
|
45
|
+
if (!raw || typeof raw !== "object") {
|
|
46
|
+
runOnChangeSet = new Set(DEFAULTS.runOnChange);
|
|
47
|
+
return { ...DEFAULTS };
|
|
48
|
+
}
|
|
26
49
|
const r = raw;
|
|
50
|
+
const runOnChange = Array.isArray(r["runOnChange"]) ? r["runOnChange"].filter((x) => typeof x === "string") : DEFAULTS.runOnChange;
|
|
51
|
+
runOnChangeSet = new Set(runOnChange);
|
|
27
52
|
return {
|
|
28
53
|
enabled: r["enabled"] !== false,
|
|
29
54
|
coveragePath: typeof r["coveragePath"] === "string" ? r["coveragePath"] : DEFAULTS.coveragePath,
|
|
30
55
|
threshold: typeof r["threshold"] === "number" && r["threshold"] >= 0 && r["threshold"] <= 100 ? r["threshold"] : DEFAULTS.threshold,
|
|
31
56
|
mode: r["mode"] === "block" ? "block" : DEFAULTS.mode,
|
|
32
57
|
deltaThreshold: typeof r["deltaThreshold"] === "number" && r["deltaThreshold"] >= 0 ? r["deltaThreshold"] : DEFAULTS.deltaThreshold,
|
|
33
|
-
runOnChange
|
|
58
|
+
runOnChange
|
|
34
59
|
};
|
|
35
60
|
}
|
|
36
|
-
function withinProject(p) {
|
|
37
|
-
if (typeof p !== "string" || p.length === 0 || p.length > 4096) return false;
|
|
38
|
-
const root = process.cwd();
|
|
39
|
-
const resolved = isAbsolute(p) ? resolve(p) : resolve(root, p);
|
|
40
|
-
const rel = relative(root, resolved);
|
|
41
|
-
if (rel === "" || rel === ".") return true;
|
|
42
|
-
if (rel.startsWith("..")) return false;
|
|
43
|
-
if (isAbsolute(rel)) return false;
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
61
|
function readCoverageSummary(coveragePath) {
|
|
47
62
|
try {
|
|
48
63
|
const raw = readFileSync(coveragePath, "utf-8");
|
|
@@ -125,7 +140,7 @@ var plugin = {
|
|
|
125
140
|
if (!sourcePath || typeof sourcePath !== "string") return;
|
|
126
141
|
if (!withinProject(sourcePath)) return;
|
|
127
142
|
const ext = sourcePath.includes(".") ? sourcePath.slice(sourcePath.lastIndexOf(".")).toLowerCase() : "";
|
|
128
|
-
if (!
|
|
143
|
+
if (!runOnChangeSet.has(ext)) {
|
|
129
144
|
state.skippedCount += 1;
|
|
130
145
|
return;
|
|
131
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-flake-detector/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-flake-detector/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAyQrD,QAAA,MAAM,MAAM,EAAE,MA6Nb,CAAC;eAEa,MAAM"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/test-flake-detector/index.ts
|
|
2
|
-
import {
|
|
2
|
+
import { execFile } from "node:child_process";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import { dirname, isAbsolute, relative, resolve } from "node:path";
|
|
@@ -144,24 +144,35 @@ function resolveTestCommand(baseCommand, testPattern) {
|
|
|
144
144
|
};
|
|
145
145
|
}
|
|
146
146
|
function runOnce(command, timeoutMs) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
147
|
+
return new Promise((resolveRun) => {
|
|
148
|
+
execFile(
|
|
149
|
+
command.cmd,
|
|
150
|
+
command.args,
|
|
151
|
+
{
|
|
152
|
+
encoding: "utf8",
|
|
153
|
+
timeout: timeoutMs,
|
|
154
|
+
cwd: process.cwd(),
|
|
155
|
+
windowsHide: true,
|
|
156
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
157
|
+
shell: false
|
|
158
|
+
},
|
|
159
|
+
(error, stdout, stderr) => {
|
|
160
|
+
if (!error) {
|
|
161
|
+
resolveRun({ output: stdout });
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (error.killed) {
|
|
165
|
+
resolveRun({ output: stdout, error: `timeout after ${timeoutMs}ms` });
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
resolveRun({
|
|
169
|
+
output: `${stdout}
|
|
170
|
+
${stderr}`.trim(),
|
|
171
|
+
error: error.message || "test command exited with non-zero code"
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
);
|
|
175
|
+
});
|
|
165
176
|
}
|
|
166
177
|
var plugin = {
|
|
167
178
|
name: "test-flake-detector",
|
|
@@ -251,7 +262,7 @@ var plugin = {
|
|
|
251
262
|
let runsCompleted = 0;
|
|
252
263
|
const runErrors = [];
|
|
253
264
|
for (let run = 1; run <= requestedRuns; run += 1) {
|
|
254
|
-
const { output, error } = runOnce(command, cfg.timeoutMs);
|
|
265
|
+
const { output, error } = await runOnce(command, cfg.timeoutMs);
|
|
255
266
|
state.runCount += 1;
|
|
256
267
|
if (error) {
|
|
257
268
|
state.errorCount += 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-generator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-generator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAkGrD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;CAChD;AAkLD,QAAA,MAAM,MAAM,EAAE,MAqLb,CAAC;eAEa,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-runner-gate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-runner-gate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAscrD,QAAA,MAAM,MAAM,EAAE,MA+Tb,CAAC;eAEa,MAAM"}
|
package/dist/test-runner-gate.js
CHANGED
|
@@ -17,7 +17,8 @@ function withinProjectPath(projectRoot, candidate) {
|
|
|
17
17
|
return rel === "" || !rel.startsWith("..") && !isAbsolute(rel);
|
|
18
18
|
}
|
|
19
19
|
function withinProject(p) {
|
|
20
|
-
|
|
20
|
+
const cwd = process.cwd();
|
|
21
|
+
return withinProjectPath(cwd, p) || relative(cwd, p) === ".";
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
// src/test-runner-gate/index.ts
|
|
@@ -1,35 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* todo-listener plugin — PostToolUse hook on the `todo` tool that
|
|
3
|
-
* broadcasts a structured status update to the project mailbox.
|
|
4
|
-
*
|
|
5
|
-
* When the agent (or any plugin) calls the built-in `todo` tool, the
|
|
6
|
-
* full todo list is replaced in `ctx.todos`. The hook fires after the
|
|
7
|
-
* tool completes, reads the new state, and posts a compact summary
|
|
8
|
-
* to the project mailbox so that other agents in the same project
|
|
9
|
-
* (terminals, WebUIs, shadow agents) can see what this agent is
|
|
10
|
-
* working on in real time.
|
|
11
|
-
*
|
|
12
|
-
* Use cases:
|
|
13
|
-
* - Multi-agent fleets where a coordinator should know which
|
|
14
|
-
* sub-agent is working on which item
|
|
15
|
-
* - Long-running sessions where a user opens a second terminal and
|
|
16
|
-
* wants to see the in-progress plan
|
|
17
|
-
* - Shadow agents that audit progress across the project
|
|
18
|
-
*
|
|
19
|
-
* Config (`config.extensions['todo-listener']`):
|
|
20
|
-
*
|
|
21
|
-
* ```jsonc
|
|
22
|
-
* {
|
|
23
|
-
* "enabled": false,
|
|
24
|
-
* "subjectPrefix": "todo: ",
|
|
25
|
-
* "broadcastOnChange": true,
|
|
26
|
-
* "cooldownMs": 30000
|
|
27
|
-
* }
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
|
-
* @public
|
|
31
|
-
*/
|
|
32
|
-
import type { Plugin } from '@wrongstack/core';
|
|
1
|
+
import type { Plugin } from '@wrongstack/core/types';
|
|
33
2
|
declare const plugin: Plugin;
|
|
34
3
|
export default plugin;
|
|
35
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/todo-listener/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/todo-listener/index.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAmGrD,QAAA,MAAM,MAAM,EAAE,MAqNb,CAAC;eAEa,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/todo-tracker/index.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/todo-tracker/index.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAmKrD,QAAA,MAAM,MAAM,EAAE,MAsZb,CAAC;eAEa,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/token-budget/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/token-budget/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAqFrD,QAAA,MAAM,MAAM,EAAE,MA8Qb,CAAC;eAEa,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/token-throttle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAa,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/token-throttle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,MAAM,EAAa,MAAM,wBAAwB,CAAC;AA8ChE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,CAE5E;AAED,0CAA0C;AAC1C,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,EAAE,EACrB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,CAoBR;AA4CD,QAAA,MAAM,MAAM,EAAE,MAoKb,CAAC;eAEa,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/type-gate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/type-gate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAuNrD,QAAA,MAAM,MAAM,EAAE,MAkOb,CAAC;eAEa,MAAM"}
|
package/dist/type-gate.js
CHANGED
|
@@ -185,7 +185,8 @@ function runRunnerCommand(argv, options) {
|
|
|
185
185
|
});
|
|
186
186
|
}
|
|
187
187
|
function withinProject(p) {
|
|
188
|
-
|
|
188
|
+
const cwd = process.cwd();
|
|
189
|
+
return withinProjectPath(cwd, p) || relative(cwd, p) === ".";
|
|
189
190
|
}
|
|
190
191
|
|
|
191
192
|
// src/type-gate/index.ts
|
|
@@ -209,9 +210,15 @@ var DEFAULTS = {
|
|
|
209
210
|
maxErrors: 5,
|
|
210
211
|
runOnChange: [".ts", ".tsx", ".js", ".jsx", ".mts", ".cts"]
|
|
211
212
|
};
|
|
213
|
+
var runOnChangeSet = new Set(DEFAULTS.runOnChange);
|
|
212
214
|
function readConfig(raw) {
|
|
213
|
-
if (!raw || typeof raw !== "object")
|
|
215
|
+
if (!raw || typeof raw !== "object") {
|
|
216
|
+
runOnChangeSet = new Set(DEFAULTS.runOnChange);
|
|
217
|
+
return { ...DEFAULTS };
|
|
218
|
+
}
|
|
214
219
|
const r = raw;
|
|
220
|
+
const runOnChange = Array.isArray(r["runOnChange"]) ? r["runOnChange"].filter((x) => typeof x === "string") : DEFAULTS.runOnChange;
|
|
221
|
+
runOnChangeSet = new Set(runOnChange);
|
|
215
222
|
return {
|
|
216
223
|
enabled: r["enabled"] === true,
|
|
217
224
|
command: typeof r["command"] === "string" ? r["command"] : DEFAULTS.command,
|
|
@@ -219,7 +226,7 @@ function readConfig(raw) {
|
|
|
219
226
|
timeoutMs: typeof r["timeoutMs"] === "number" && r["timeoutMs"] > 0 ? r["timeoutMs"] : DEFAULTS.timeoutMs,
|
|
220
227
|
failSeverity: r["failSeverity"] === "block" ? "block" : DEFAULTS.failSeverity,
|
|
221
228
|
maxErrors: typeof r["maxErrors"] === "number" && r["maxErrors"] >= 1 && r["maxErrors"] <= 50 ? r["maxErrors"] : DEFAULTS.maxErrors,
|
|
222
|
-
runOnChange
|
|
229
|
+
runOnChange
|
|
223
230
|
};
|
|
224
231
|
}
|
|
225
232
|
var TSC_RUNTIME = {
|
|
@@ -362,7 +369,7 @@ var plugin = {
|
|
|
362
369
|
if (!sourcePath || typeof sourcePath !== "string") return;
|
|
363
370
|
if (!withinProject(sourcePath)) return;
|
|
364
371
|
const ext = sourcePath.includes(".") ? sourcePath.slice(sourcePath.lastIndexOf(".")).toLowerCase() : "";
|
|
365
|
-
if (!
|
|
372
|
+
if (!runOnChangeSet.has(ext)) {
|
|
366
373
|
state.skippedCount += 1;
|
|
367
374
|
return;
|
|
368
375
|
}
|