@vibe-agent-toolkit/cli 0.1.34-rc.2 → 0.1.35
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/dist/bin.js +4 -0
- package/dist/bin.js.map +1 -1
- package/dist/commands/audit/git-url-clone.d.ts +32 -0
- package/dist/commands/audit/git-url-clone.d.ts.map +1 -0
- package/dist/commands/audit/git-url-clone.js +135 -0
- package/dist/commands/audit/git-url-clone.js.map +1 -0
- package/dist/commands/audit/provenance.d.ts +33 -0
- package/dist/commands/audit/provenance.d.ts.map +1 -0
- package/dist/commands/audit/provenance.js +57 -0
- package/dist/commands/audit/provenance.js.map +1 -0
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +218 -72
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.d.ts +11 -0
- package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.js +78 -1
- package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
- package/dist/commands/claude/marketplace/publish-tree.d.ts +9 -0
- package/dist/commands/claude/marketplace/publish-tree.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/publish-tree.js +14 -1
- package/dist/commands/claude/marketplace/publish-tree.js.map +1 -1
- package/dist/commands/claude/marketplace/publish.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/publish.js +19 -0
- package/dist/commands/claude/marketplace/publish.js.map +1 -1
- package/dist/commands/claude/marketplace/tag-utils.d.ts +11 -0
- package/dist/commands/claude/marketplace/tag-utils.d.ts.map +1 -0
- package/dist/commands/claude/marketplace/tag-utils.js +17 -0
- package/dist/commands/claude/marketplace/tag-utils.js.map +1 -0
- package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/validate.js +2 -1
- package/dist/commands/claude/marketplace/validate.js.map +1 -1
- package/dist/commands/claude/plugin/build.d.ts.map +1 -1
- package/dist/commands/claude/plugin/build.js +49 -25
- package/dist/commands/claude/plugin/build.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-changelog.d.ts +18 -0
- package/dist/commands/claude/plugin/plugin-changelog.d.ts.map +1 -0
- package/dist/commands/claude/plugin/plugin-changelog.js +27 -0
- package/dist/commands/claude/plugin/plugin-changelog.js.map +1 -0
- package/dist/commands/claude/plugin/plugin-json-merge.d.ts +29 -0
- package/dist/commands/claude/plugin/plugin-json-merge.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-json-merge.js +28 -14
- package/dist/commands/claude/plugin/plugin-json-merge.js.map +1 -1
- package/dist/commands/corpus/index.d.ts +6 -0
- package/dist/commands/corpus/index.d.ts.map +1 -0
- package/dist/commands/corpus/index.js +53 -0
- package/dist/commands/corpus/index.js.map +1 -0
- package/dist/commands/corpus/report.d.ts +75 -0
- package/dist/commands/corpus/report.d.ts.map +1 -0
- package/dist/commands/corpus/report.js +83 -0
- package/dist/commands/corpus/report.js.map +1 -0
- package/dist/commands/corpus/runner.d.ts +24 -0
- package/dist/commands/corpus/runner.d.ts.map +1 -0
- package/dist/commands/corpus/runner.js +246 -0
- package/dist/commands/corpus/runner.js.map +1 -0
- package/dist/commands/corpus/scan.d.ts +15 -0
- package/dist/commands/corpus/scan.d.ts.map +1 -0
- package/dist/commands/corpus/scan.js +90 -0
- package/dist/commands/corpus/scan.js.map +1 -0
- package/dist/commands/corpus/seed.d.ts +178 -0
- package/dist/commands/corpus/seed.d.ts.map +1 -0
- package/dist/commands/corpus/seed.js +63 -0
- package/dist/commands/corpus/seed.js.map +1 -0
- package/dist/commands/inventory.d.ts +17 -0
- package/dist/commands/inventory.d.ts.map +1 -0
- package/dist/commands/inventory.js +90 -0
- package/dist/commands/inventory.js.map +1 -0
- package/dist/utils/git-url.d.ts +43 -0
- package/dist/utils/git-url.d.ts.map +1 -0
- package/dist/utils/git-url.js +135 -0
- package/dist/utils/git-url.js.map +1 -0
- package/docs/audit.md +54 -3
- package/package.json +11 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-changelog.d.ts","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/plugin-changelog.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACxC,MAAM,GAAG,SAAS,CASpB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { safePath } from '@vibe-agent-toolkit/utils';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the per-plugin CHANGELOG file path for a marketplace publish.
|
|
5
|
+
*
|
|
6
|
+
* Resolution order:
|
|
7
|
+
* 1. If `entry.changelog` is provided, treat it as a path relative to the
|
|
8
|
+
* plugin source dir. Returns the absolute path if the file exists; else
|
|
9
|
+
* `undefined` (a config-supplied path that doesn't resolve is a no-op).
|
|
10
|
+
* 2. Otherwise, default to `<pluginSourceDir>/CHANGELOG.md` if that file
|
|
11
|
+
* exists; else `undefined`.
|
|
12
|
+
*
|
|
13
|
+
* The default path is anchored to the plugin's *source* dir (the `source`
|
|
14
|
+
* field on the marketplace plugin entry, default `plugins/<name>`). Callers
|
|
15
|
+
* pass the resolved source dir directly — this helper does not assume layout.
|
|
16
|
+
*/
|
|
17
|
+
export function resolvePluginChangelogPath(pluginSourceDir, entry) {
|
|
18
|
+
if (entry.changelog) {
|
|
19
|
+
const configured = safePath.join(pluginSourceDir, entry.changelog);
|
|
20
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
21
|
+
return existsSync(configured) ? configured : undefined;
|
|
22
|
+
}
|
|
23
|
+
const defaulted = safePath.join(pluginSourceDir, 'CHANGELOG.md');
|
|
24
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename
|
|
25
|
+
return existsSync(defaulted) ? defaulted : undefined;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=plugin-changelog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-changelog.js","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/plugin-changelog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,0BAA0B,CACxC,eAAuB,EACvB,KAAyC;IAEzC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACnE,mEAAmE;QACnE,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IACD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IACjE,mEAAmE;IACnE,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC"}
|
|
@@ -6,10 +6,21 @@
|
|
|
6
6
|
* - Author wins on: all other keys (keywords, repository, homepage, license, ...)
|
|
7
7
|
* - description: config.description ?? author.description ?? `${name} plugin`
|
|
8
8
|
*
|
|
9
|
+
* Version resolution lives in `resolveVersion` (config > plugin.json > root) and
|
|
10
|
+
* happens at the caller in `build.ts`. By the time `mergePluginJson` runs, the
|
|
11
|
+
* value passed in `vat.version` IS the resolved answer — this function does no
|
|
12
|
+
* additional precedence work for version.
|
|
13
|
+
*
|
|
9
14
|
* Mismatches on VAT-winning fields produce warnings — never errors.
|
|
10
15
|
*/
|
|
11
16
|
export interface VatGeneratedFields {
|
|
12
17
|
name: string;
|
|
18
|
+
/**
|
|
19
|
+
* The resolved plugin version (already gone through the precedence chain in
|
|
20
|
+
* `resolveVersion`). `undefined` only when all sources (config, plugin.json,
|
|
21
|
+
* root package.json) are absent — in which case `version` is omitted from
|
|
22
|
+
* the merged output entirely.
|
|
23
|
+
*/
|
|
13
24
|
version: string | undefined;
|
|
14
25
|
author: {
|
|
15
26
|
name: string;
|
|
@@ -25,5 +36,23 @@ export interface MergePluginJsonResult {
|
|
|
25
36
|
merged: Record<string, unknown>;
|
|
26
37
|
warnings: string[];
|
|
27
38
|
}
|
|
39
|
+
export interface ResolveVersionLogger {
|
|
40
|
+
warn(message: string): void;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Resolve the effective plugin version using the precedence chain:
|
|
44
|
+
* marketplace-config-supplied version > plugin.json:version > root package.json version
|
|
45
|
+
*
|
|
46
|
+
* If both the config and plugin.json supply a version and they disagree, a warning is
|
|
47
|
+
* emitted via the supplied logger (config still wins). When agreement holds — or when
|
|
48
|
+
* one side is absent — no warning is emitted.
|
|
49
|
+
*
|
|
50
|
+
* Returns `undefined` only when all three sources are absent.
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveVersion(configEntry: {
|
|
53
|
+
version?: string | undefined;
|
|
54
|
+
} | undefined, authorJson: {
|
|
55
|
+
version?: string | undefined;
|
|
56
|
+
} | undefined, rootVersion: string | undefined, logger?: ResolveVersionLogger): string | undefined;
|
|
28
57
|
export declare function mergePluginJson(args: MergePluginJsonArgs): MergePluginJsonResult;
|
|
29
58
|
//# sourceMappingURL=plugin-json-merge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-json-merge.d.ts","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/plugin-json-merge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"plugin-json-merge.d.ts","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/plugin-json-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,kBAAkB,CAAC;IACxB,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AA+CD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,SAAS,EACzD,UAAU,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,SAAS,EACxD,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,MAAM,GAAE,oBAA8B,GACrC,MAAM,GAAG,SAAS,CAYpB;AAcD,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,CAiBhF"}
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
* - Author wins on: all other keys (keywords, repository, homepage, license, ...)
|
|
7
7
|
* - description: config.description ?? author.description ?? `${name} plugin`
|
|
8
8
|
*
|
|
9
|
+
* Version resolution lives in `resolveVersion` (config > plugin.json > root) and
|
|
10
|
+
* happens at the caller in `build.ts`. By the time `mergePluginJson` runs, the
|
|
11
|
+
* value passed in `vat.version` IS the resolved answer — this function does no
|
|
12
|
+
* additional precedence work for version.
|
|
13
|
+
*
|
|
9
14
|
* Mismatches on VAT-winning fields produce warnings — never errors.
|
|
10
15
|
*/
|
|
11
16
|
const VAT_OWNED_KEYS = new Set(['name', 'version', 'author']);
|
|
@@ -37,22 +42,30 @@ function collectWarnings(vat, authorJson, mergedAuthor) {
|
|
|
37
42
|
if ('name' in authorJson && authorJson['name'] !== vat.name) {
|
|
38
43
|
warnings.push(`plugin.json "name" mismatch: author value ${JSON.stringify(authorJson['name'])} ignored; using VAT-generated "${vat.name}".`);
|
|
39
44
|
}
|
|
40
|
-
if (vat.version !== undefined &&
|
|
41
|
-
'version' in authorJson &&
|
|
42
|
-
authorJson['version'] !== vat.version) {
|
|
43
|
-
warnings.push(`plugin.json "version" mismatch: author value ${JSON.stringify(authorJson['version'])} ignored; using VAT-generated "${vat.version}".`);
|
|
44
|
-
}
|
|
45
45
|
if ('author' in authorJson && !deepEqual(authorJson['author'], mergedAuthor)) {
|
|
46
46
|
warnings.push(`plugin.json "author" mismatch: author-supplied value discarded; using VAT-generated author object.`);
|
|
47
47
|
}
|
|
48
48
|
return warnings;
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Resolve the effective plugin version using the precedence chain:
|
|
52
|
+
* marketplace-config-supplied version > plugin.json:version > root package.json version
|
|
53
|
+
*
|
|
54
|
+
* If both the config and plugin.json supply a version and they disagree, a warning is
|
|
55
|
+
* emitted via the supplied logger (config still wins). When agreement holds — or when
|
|
56
|
+
* one side is absent — no warning is emitted.
|
|
57
|
+
*
|
|
58
|
+
* Returns `undefined` only when all three sources are absent.
|
|
59
|
+
*/
|
|
60
|
+
export function resolveVersion(configEntry, authorJson, rootVersion, logger = console) {
|
|
61
|
+
const config = configEntry?.version;
|
|
62
|
+
const author = authorJson?.version;
|
|
63
|
+
if (config && author && config !== author) {
|
|
64
|
+
logger.warn(`Plugin version mismatch: marketplace config declares ${config}, ` +
|
|
65
|
+
`plugin.json declares ${author}. Using config (${config}). ` +
|
|
66
|
+
`Reconcile by removing one or the other.`);
|
|
67
|
+
}
|
|
68
|
+
return config ?? author ?? rootVersion;
|
|
56
69
|
}
|
|
57
70
|
function resolveDescription(vat, configDescription, authorJson) {
|
|
58
71
|
const authorDescription = authorJson && typeof authorJson['description'] === 'string'
|
|
@@ -64,9 +77,10 @@ export function mergePluginJson(args) {
|
|
|
64
77
|
const { vat, configDescription, authorJson } = args;
|
|
65
78
|
const merged = collectAuthorPassthrough(authorJson);
|
|
66
79
|
merged['name'] = vat.name;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
80
|
+
// Version is already resolved by the caller via resolveVersion.
|
|
81
|
+
// Omit entirely when no source supplied a value.
|
|
82
|
+
if (vat.version !== undefined) {
|
|
83
|
+
merged['version'] = vat.version;
|
|
70
84
|
}
|
|
71
85
|
merged['author'] = buildAuthorObject(vat);
|
|
72
86
|
merged['description'] = resolveDescription(vat, configDescription, authorJson);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-json-merge.js","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/plugin-json-merge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"plugin-json-merge.js","sourceRoot":"","sources":["../../../../src/commands/claude/plugin/plugin-json-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA6BH,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEnF,SAAS,SAAS,CAAC,CAAU,EAAE,CAAU;IACvC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAuB;IAChD,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK;QACrB,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE;QACpD,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,wBAAwB,CAC/B,UAA+C;IAE/C,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,IAAI,CAAC,UAAU;QAAE,OAAO,GAAG,CAAC;IAC5B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QACpC,IAAI,CAAC,KAAK,aAAa;YAAE,SAAS;QAClC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CACtB,GAAuB,EACvB,UAA+C,EAC/C,YAAqB;IAErB,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,MAAM,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5D,QAAQ,CAAC,IAAI,CACX,6CAA6C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,kCAAkC,GAAG,CAAC,IAAI,IAAI,CAC9H,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;QAC7E,QAAQ,CAAC,IAAI,CACX,oGAAoG,CACrG,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,WAAyD,EACzD,UAAwD,EACxD,WAA+B,EAC/B,SAA+B,OAAO;IAEtC,MAAM,MAAM,GAAG,WAAW,EAAE,OAAO,CAAC;IACpC,MAAM,MAAM,GAAG,UAAU,EAAE,OAAO,CAAC;IAEnC,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CACT,wDAAwD,MAAM,IAAI;YAChE,wBAAwB,MAAM,mBAAmB,MAAM,KAAK;YAC5D,yCAAyC,CAC5C,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,IAAI,MAAM,IAAI,WAAW,CAAC;AACzC,CAAC;AAED,SAAS,kBAAkB,CACzB,GAAuB,EACvB,iBAAqC,EACrC,UAA+C;IAE/C,MAAM,iBAAiB,GACrB,UAAU,IAAI,OAAO,UAAU,CAAC,aAAa,CAAC,KAAK,QAAQ;QACzD,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;QAC3B,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,iBAAiB,IAAI,iBAAiB,IAAI,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAyB;IACvD,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEpD,MAAM,MAAM,GAA4B,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAC7E,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IAE1B,gEAAgE;IAChE,iDAAiD;IACjD,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,CAAC,aAAa,CAAC,GAAG,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAE/E,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/corpus/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,mBAAmB,IAAI,OAAO,CAoD7C"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Corpus command group — Phase 1 ships only `scan`.
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { corpusScanCommand } from './scan.js';
|
|
6
|
+
export function createCorpusCommand() {
|
|
7
|
+
const corpus = new Command('corpus');
|
|
8
|
+
corpus
|
|
9
|
+
.description('Run vat audit (and optionally vat skill review) at scale across a tracked plugin seed')
|
|
10
|
+
.helpCommand(false);
|
|
11
|
+
corpus
|
|
12
|
+
.command('scan [seed-file]')
|
|
13
|
+
.description('Audit each plugin in the seed; write a per-run snapshot under --out')
|
|
14
|
+
.argument('[seed-file]', 'Path to seed YAML (default: corpus/seed.yaml)')
|
|
15
|
+
.requiredOption('--out <dir>', 'Output directory for the run snapshot (no default — must be specified)')
|
|
16
|
+
.option('--with-review', 'Also invoke vat skill review per plugin (LLM-backed; uses API tokens)')
|
|
17
|
+
.option('--debug', 'Enable debug logging and preserve cloned tempdirs')
|
|
18
|
+
.action(async function (seedFile) {
|
|
19
|
+
await corpusScanCommand(seedFile, this.optsWithGlobals());
|
|
20
|
+
})
|
|
21
|
+
.addHelpText('after', `
|
|
22
|
+
Description:
|
|
23
|
+
Reads a seed YAML listing plugins to audit (each entry: { source, name,
|
|
24
|
+
validation? }), runs 'vat audit' against each (and optionally 'vat skill
|
|
25
|
+
review' with --with-review), writes summary.yaml plus per-plugin sibling
|
|
26
|
+
files into a date-sha subdirectory of --out.
|
|
27
|
+
|
|
28
|
+
source forms accepted (same as vat audit):
|
|
29
|
+
- local path (absolute or relative)
|
|
30
|
+
- https://host/owner/repo.git[#ref[:subpath]]
|
|
31
|
+
- GitHub web URL (https://github.com/owner/repo/tree/<ref>/<subpath>)
|
|
32
|
+
- GitHub shorthand (owner/repo, with optional #ref:subpath)
|
|
33
|
+
- SSH URL (git@host:owner/repo.git or ssh://...)
|
|
34
|
+
- file:// URL (local bare-repo testing)
|
|
35
|
+
|
|
36
|
+
Output:
|
|
37
|
+
<--out>/<UTC-date>-<vat-short-sha>/
|
|
38
|
+
summary.yaml # index: per-plugin status + totals
|
|
39
|
+
<name>-audit.yaml # full audit output per plugin
|
|
40
|
+
<name>-review.md # full skill-review output (only with --with-review)
|
|
41
|
+
|
|
42
|
+
Exit codes:
|
|
43
|
+
0 - scan completed (regardless of unloadable plugins)
|
|
44
|
+
2 - scan failed to start (seed missing, --out missing, etc.)
|
|
45
|
+
130 - interrupted by SIGINT (partial results written)
|
|
46
|
+
|
|
47
|
+
Example:
|
|
48
|
+
$ vat corpus scan --out ~/scratch/vat-corpus-runs
|
|
49
|
+
$ vat corpus scan corpus/seed.yaml --out ~/scratch/vat-corpus-runs --with-review
|
|
50
|
+
`);
|
|
51
|
+
return corpus;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/corpus/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAA0B,MAAM,WAAW,CAAC;AAEtE,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErC,MAAM;SACH,WAAW,CAAC,uFAAuF,CAAC;SACpG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEtB,MAAM;SACH,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,qEAAqE,CAAC;SAClF,QAAQ,CAAC,aAAa,EAAE,+CAA+C,CAAC;SACxE,cAAc,CAAC,aAAa,EAAE,wEAAwE,CAAC;SACvG,MAAM,CAAC,eAAe,EAAE,uEAAuE,CAAC;SAChG,MAAM,CAAC,SAAS,EAAE,mDAAmD,CAAC;SACtE,MAAM,CAAC,KAAK,WAA0B,QAA4B;QACjE,MAAM,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAuB,CAAC,CAAC;IACjF,CAAC,CAAC;SACD,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BL,CACI,CAAC;IAEJ,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run-summary types + writer for `vat corpus scan`.
|
|
3
|
+
*
|
|
4
|
+
* `summary.yaml` is the index for one scan run. Per-plugin full audit
|
|
5
|
+
* outputs and full skill-review outputs are written as sibling files
|
|
6
|
+
* referenced by relative `output_path`. Totals are derived from the
|
|
7
|
+
* per-plugin rows so callers can pass raw rows and let this module
|
|
8
|
+
* compute aggregates.
|
|
9
|
+
*/
|
|
10
|
+
export type AuditStatus = 'success' | 'warning' | 'error' | 'unloadable';
|
|
11
|
+
export type ReviewStatus = 'ok' | 'error' | 'skipped';
|
|
12
|
+
export interface AuditSummary {
|
|
13
|
+
errors: number;
|
|
14
|
+
warnings: number;
|
|
15
|
+
info: number;
|
|
16
|
+
files_scanned: number;
|
|
17
|
+
}
|
|
18
|
+
export interface AuditOutcome {
|
|
19
|
+
status: AuditStatus;
|
|
20
|
+
duration_ms: number;
|
|
21
|
+
summary?: AuditSummary;
|
|
22
|
+
findings_emitted?: number;
|
|
23
|
+
output_path?: string;
|
|
24
|
+
error?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ReviewOutcome {
|
|
27
|
+
status: ReviewStatus;
|
|
28
|
+
duration_ms: number;
|
|
29
|
+
output_path?: string;
|
|
30
|
+
error?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface PluginRow {
|
|
33
|
+
source: string;
|
|
34
|
+
name: string;
|
|
35
|
+
validation_applied: boolean;
|
|
36
|
+
audit: AuditOutcome;
|
|
37
|
+
review: ReviewOutcome;
|
|
38
|
+
}
|
|
39
|
+
export interface RunReport {
|
|
40
|
+
schema_version: 1;
|
|
41
|
+
generated_at: string;
|
|
42
|
+
vat_version: string;
|
|
43
|
+
vat_commit: string;
|
|
44
|
+
seed_file: string;
|
|
45
|
+
flags: {
|
|
46
|
+
with_review: boolean;
|
|
47
|
+
debug: boolean;
|
|
48
|
+
};
|
|
49
|
+
plugins: PluginRow[];
|
|
50
|
+
}
|
|
51
|
+
export interface RunTotals {
|
|
52
|
+
plugins: number;
|
|
53
|
+
audit_clean: number;
|
|
54
|
+
audit_warning: number;
|
|
55
|
+
audit_error: number;
|
|
56
|
+
unloadable: number;
|
|
57
|
+
reviewed?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Compute totals over the per-plugin rows.
|
|
61
|
+
*/
|
|
62
|
+
export declare function computeTotals(report: RunReport): RunTotals;
|
|
63
|
+
/**
|
|
64
|
+
* Build the run directory name: `<YYYY-MM-DD>-<vat-short-sha>`.
|
|
65
|
+
* Date is the UTC date of `generated_at`.
|
|
66
|
+
*/
|
|
67
|
+
export declare function runDirectoryName(report: RunReport): string;
|
|
68
|
+
/**
|
|
69
|
+
* Write `summary.yaml` (and create the run directory) under `outDir`.
|
|
70
|
+
* Returns the absolute path of the created run directory. Per-plugin
|
|
71
|
+
* sibling files (audit outputs, review outputs) are written by the
|
|
72
|
+
* runner — this function only writes the summary index.
|
|
73
|
+
*/
|
|
74
|
+
export declare function writeRunReport(report: RunReport, outDir: string): Promise<string>;
|
|
75
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/commands/corpus/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;AACzE,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,OAAO,CAAC;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,CAAC,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAChD,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAmC1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAG1D;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBvF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run-summary types + writer for `vat corpus scan`.
|
|
3
|
+
*
|
|
4
|
+
* `summary.yaml` is the index for one scan run. Per-plugin full audit
|
|
5
|
+
* outputs and full skill-review outputs are written as sibling files
|
|
6
|
+
* referenced by relative `output_path`. Totals are derived from the
|
|
7
|
+
* per-plugin rows so callers can pass raw rows and let this module
|
|
8
|
+
* compute aggregates.
|
|
9
|
+
*/
|
|
10
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
11
|
+
import { safePath } from '@vibe-agent-toolkit/utils';
|
|
12
|
+
import * as yaml from 'js-yaml';
|
|
13
|
+
/**
|
|
14
|
+
* Compute totals over the per-plugin rows.
|
|
15
|
+
*/
|
|
16
|
+
export function computeTotals(report) {
|
|
17
|
+
const totals = {
|
|
18
|
+
plugins: report.plugins.length,
|
|
19
|
+
audit_clean: 0,
|
|
20
|
+
audit_warning: 0,
|
|
21
|
+
audit_error: 0,
|
|
22
|
+
unloadable: 0,
|
|
23
|
+
};
|
|
24
|
+
for (const row of report.plugins) {
|
|
25
|
+
switch (row.audit.status) {
|
|
26
|
+
case 'success': {
|
|
27
|
+
totals.audit_clean += 1;
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
case 'warning': {
|
|
31
|
+
totals.audit_warning += 1;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
case 'error': {
|
|
35
|
+
totals.audit_error += 1;
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
case 'unloadable': {
|
|
39
|
+
totals.unloadable += 1;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (report.flags.with_review) {
|
|
45
|
+
totals.reviewed = report.plugins.filter((p) => p.review.status !== 'skipped').length;
|
|
46
|
+
}
|
|
47
|
+
return totals;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Build the run directory name: `<YYYY-MM-DD>-<vat-short-sha>`.
|
|
51
|
+
* Date is the UTC date of `generated_at`.
|
|
52
|
+
*/
|
|
53
|
+
export function runDirectoryName(report) {
|
|
54
|
+
const datePart = report.generated_at.slice(0, 10); // 'YYYY-MM-DD'
|
|
55
|
+
return `${datePart}-${report.vat_commit}`;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Write `summary.yaml` (and create the run directory) under `outDir`.
|
|
59
|
+
* Returns the absolute path of the created run directory. Per-plugin
|
|
60
|
+
* sibling files (audit outputs, review outputs) are written by the
|
|
61
|
+
* runner — this function only writes the summary index.
|
|
62
|
+
*/
|
|
63
|
+
export async function writeRunReport(report, outDir) {
|
|
64
|
+
const runDir = safePath.join(outDir, runDirectoryName(report));
|
|
65
|
+
// eslint-disable-next-line local/no-fs-mkdirSync, security/detect-non-literal-fs-filename -- the corpus output dir is caller-supplied; mkdir-recursive is the right call here
|
|
66
|
+
mkdirSync(runDir, { recursive: true });
|
|
67
|
+
const totals = computeTotals(report);
|
|
68
|
+
const dump = {
|
|
69
|
+
schema_version: report.schema_version,
|
|
70
|
+
generated_at: report.generated_at,
|
|
71
|
+
vat_version: report.vat_version,
|
|
72
|
+
vat_commit: report.vat_commit,
|
|
73
|
+
seed_file: report.seed_file,
|
|
74
|
+
flags: report.flags,
|
|
75
|
+
plugins: report.plugins,
|
|
76
|
+
totals,
|
|
77
|
+
};
|
|
78
|
+
const summaryPath = safePath.join(runDir, 'summary.yaml');
|
|
79
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- summaryPath composed under our run dir
|
|
80
|
+
writeFileSync(summaryPath, yaml.dump(dump, { lineWidth: -1 }), 'utf-8');
|
|
81
|
+
return runDir;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/commands/corpus/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAuDhC;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAiB;IAC7C,MAAM,MAAM,GAAc;QACxB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;QAC9B,WAAW,EAAE,CAAC;QACd,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,CAAC;KACd,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjC,QAAQ,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACzB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;gBACxB,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;gBAC1B,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;gBACxB,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;gBACvB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IACvF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe;IAClE,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAiB,EAAE,MAAc;IACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,8KAA8K;IAC9K,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG;QACX,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM;KACP,CAAC;IAEF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1D,6GAA6G;IAC7G,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAExE,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-plugin orchestrator for `vat corpus scan`.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 scope: resolve source (local or URL), optionally overlay a
|
|
5
|
+
* synthetic `vibe-agent-toolkit.config.yaml` from the entry's `validation:`
|
|
6
|
+
* block, run `vat audit` in-process, optionally invoke `vat skill review`,
|
|
7
|
+
* write per-plugin sibling files into the run directory, and return a
|
|
8
|
+
* PluginRow. Per-plugin failures never abort the loop.
|
|
9
|
+
*
|
|
10
|
+
* URL handling clones via Layer 1's `withClonedRepo` helper. Validation
|
|
11
|
+
* overlay (Task 5) is added on top of this base.
|
|
12
|
+
*/
|
|
13
|
+
import type { PluginRow } from './report.js';
|
|
14
|
+
import type { PluginEntry } from './seed.js';
|
|
15
|
+
export interface RunnerOptions {
|
|
16
|
+
runDir: string;
|
|
17
|
+
withReview: boolean;
|
|
18
|
+
debug: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Run audit + optional review against one plugin entry.
|
|
22
|
+
*/
|
|
23
|
+
export declare function auditOnePlugin(entry: PluginEntry, opts: RunnerOptions): Promise<PluginRow>;
|
|
24
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/commands/corpus/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH,OAAO,KAAK,EAA2C,SAAS,EAAiB,MAAM,aAAa,CAAC;AACrG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAqB7C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;CAChB;AA0BD;;GAEG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,SAAS,CAAC,CAKpB"}
|