@nanocollective/sentinel 0.1.0-alpha.0 → 0.1.0-alpha.2
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/cli.js +58 -16
- package/dist/cli.js.map +1 -1
- package/dist/dedup/hash.d.ts +6 -3
- package/dist/dedup/hash.d.ts.map +1 -1
- package/dist/dedup/hash.js +7 -9
- package/dist/dedup/hash.js.map +1 -1
- package/dist/dedup/reconcile.d.ts +2 -0
- package/dist/dedup/reconcile.d.ts.map +1 -1
- package/dist/dedup/reconcile.js +57 -23
- package/dist/dedup/reconcile.js.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/init/templates.d.ts.map +1 -1
- package/dist/init/templates.js +14 -1
- package/dist/init/templates.js.map +1 -1
- package/dist/issues/gh-client.d.ts +2 -0
- package/dist/issues/gh-client.d.ts.map +1 -1
- package/dist/issues/gh-client.js +22 -0
- package/dist/issues/gh-client.js.map +1 -1
- package/dist/issues/types.d.ts +7 -0
- package/dist/issues/types.d.ts.map +1 -1
- package/dist/observe/dashboard.d.ts +9 -0
- package/dist/observe/dashboard.d.ts.map +1 -0
- package/dist/observe/dashboard.js +87 -0
- package/dist/observe/dashboard.js.map +1 -0
- package/dist/observe/record.d.ts +11 -0
- package/dist/observe/record.d.ts.map +1 -0
- package/dist/observe/record.js +66 -0
- package/dist/observe/record.js.map +1 -0
- package/dist/observe/types.d.ts +48 -0
- package/dist/observe/types.d.ts.map +1 -0
- package/dist/observe/types.js +8 -0
- package/dist/observe/types.js.map +1 -0
- package/dist/orchestrator/extract.d.ts +2 -1
- package/dist/orchestrator/extract.d.ts.map +1 -1
- package/dist/orchestrator/extract.js +94 -2
- package/dist/orchestrator/extract.js.map +1 -1
- package/dist/run/clone.d.ts +9 -11
- package/dist/run/clone.d.ts.map +1 -1
- package/dist/run/clone.js +24 -32
- package/dist/run/clone.js.map +1 -1
- package/dist/run/expand.d.ts +26 -0
- package/dist/run/expand.d.ts.map +1 -0
- package/dist/run/expand.js +62 -0
- package/dist/run/expand.js.map +1 -0
- package/dist/run/preview.d.ts +11 -3
- package/dist/run/preview.d.ts.map +1 -1
- package/dist/run/preview.js +14 -1
- package/dist/run/preview.js.map +1 -1
- package/dist/run/repo-lister.d.ts +16 -0
- package/dist/run/repo-lister.d.ts.map +1 -0
- package/dist/run/repo-lister.js +46 -0
- package/dist/run/repo-lister.js.map +1 -0
- package/dist/run/run.d.ts +10 -5
- package/dist/run/run.d.ts.map +1 -1
- package/dist/run/run.js +24 -8
- package/dist/run/run.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -8,16 +8,19 @@
|
|
|
8
8
|
* The init command's logic lives in ./init; this file is the interactive glue
|
|
9
9
|
* (prompting, printing) and is excluded from coverage.
|
|
10
10
|
*/
|
|
11
|
-
import { readFileSync, writeFileSync } from 'node:fs';
|
|
11
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, } from 'node:fs';
|
|
12
12
|
import { dirname, join, resolve } from 'node:path';
|
|
13
13
|
import { createInterface } from 'node:readline/promises';
|
|
14
14
|
import { parseConfig } from './config/parse.js';
|
|
15
15
|
import { parseInitArgs } from './init/args.js';
|
|
16
16
|
import { scaffold } from './init/scaffold.js';
|
|
17
17
|
import { ghIssueClient } from './issues/gh-client.js';
|
|
18
|
+
import { renderDashboard } from './observe/dashboard.js';
|
|
19
|
+
import { buildRunRecord, recordFilename } from './observe/record.js';
|
|
18
20
|
import { nanocoderRunner } from './orchestrator/nanocoder-runner.js';
|
|
19
|
-
import {
|
|
21
|
+
import { prepareRepo } from './run/clone.js';
|
|
20
22
|
import { renderPreview } from './run/preview.js';
|
|
23
|
+
import { ghRepoLister } from './run/repo-lister.js';
|
|
21
24
|
import { renderReport } from './run/report.js';
|
|
22
25
|
import { runFromConfig, runLocal } from './run/run.js';
|
|
23
26
|
import { fsPackLoader, fsRepoFiles } from './run/sources.js';
|
|
@@ -147,6 +150,32 @@ function writeReport(markdown, output) {
|
|
|
147
150
|
console.log(markdown);
|
|
148
151
|
}
|
|
149
152
|
}
|
|
153
|
+
function writeRunRecord(record, recordsDir) {
|
|
154
|
+
mkdirSync(recordsDir, { recursive: true });
|
|
155
|
+
const path = join(recordsDir, recordFilename(record.timestamp));
|
|
156
|
+
writeFileSync(path, `${JSON.stringify(record, null, 2)}\n`);
|
|
157
|
+
console.log(`Wrote run record to ${path}`);
|
|
158
|
+
}
|
|
159
|
+
function writeDashboard(recordsDir, dashboardDir) {
|
|
160
|
+
const records = [];
|
|
161
|
+
if (existsSync(recordsDir)) {
|
|
162
|
+
for (const name of readdirSync(recordsDir)) {
|
|
163
|
+
if (!name.endsWith('.json')) {
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
try {
|
|
167
|
+
records.push(JSON.parse(readFileSync(join(recordsDir, name), 'utf8')));
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
// Skip a malformed record rather than fail the whole dashboard.
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
mkdirSync(dashboardDir, { recursive: true });
|
|
175
|
+
const path = join(dashboardDir, 'index.html');
|
|
176
|
+
writeFileSync(path, renderDashboard(records));
|
|
177
|
+
console.log(`Wrote dashboard to ${path}`);
|
|
178
|
+
}
|
|
150
179
|
async function runRun(argv) {
|
|
151
180
|
if (argv.includes('--help') || argv.includes('-h')) {
|
|
152
181
|
console.log(RUN_USAGE);
|
|
@@ -180,28 +209,19 @@ async function runRun(argv) {
|
|
|
180
209
|
}
|
|
181
210
|
const dryRun = flags.get('dry-run') === true;
|
|
182
211
|
const workspace = flagStr(flags, 'workspace') ?? '.';
|
|
183
|
-
|
|
184
|
-
if (flags.get('no-clone') !== true) {
|
|
185
|
-
const repos = parsed.config.targets
|
|
186
|
-
.map(target => target.repo)
|
|
187
|
-
.filter((repo) => Boolean(repo));
|
|
188
|
-
const ensured = ensureTargets(repos, workspace);
|
|
189
|
-
for (const repo of ensured.cloned) {
|
|
190
|
-
console.log(`cloned ${repo}`);
|
|
191
|
-
}
|
|
192
|
-
for (const { repo, error } of ensured.errors) {
|
|
193
|
-
console.error(`clone failed for ${repo}: ${error}`);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
212
|
+
const noClone = flags.get('no-clone') === true;
|
|
196
213
|
// The client is available whenever a token is present — a dry run uses it to
|
|
197
214
|
// read existing issues for the preview, a live run to file.
|
|
198
215
|
const hasToken = Boolean(process.env.GITHUB_TOKEN);
|
|
216
|
+
const now = new Date().toISOString();
|
|
199
217
|
const report = await runFromConfig(parsed.config, {
|
|
200
218
|
runner: nanocoderRunner,
|
|
201
219
|
files: fsRepoFiles,
|
|
202
220
|
packs: fsPackLoader,
|
|
203
221
|
client: hasToken ? ghIssueClient : undefined,
|
|
204
|
-
|
|
222
|
+
repoLister: ghRepoLister,
|
|
223
|
+
cloneRepo: noClone ? undefined : prepareRepo,
|
|
224
|
+
now,
|
|
205
225
|
}, {
|
|
206
226
|
workspaceDir: workspace,
|
|
207
227
|
packsDir: flagStr(flags, 'packs-dir') ?? join(dirname(configPath), 'rule-packs'),
|
|
@@ -209,6 +229,9 @@ async function runRun(argv) {
|
|
|
209
229
|
// nanocoder runs with cwd set to the audited repo.
|
|
210
230
|
configDir: resolve(flagStr(flags, 'config-dir') ?? dirname(configPath)),
|
|
211
231
|
configRepo: flagStr(flags, 'config-repo') ?? process.env.GITHUB_REPOSITORY,
|
|
232
|
+
resolveAfterMisses: flagStr(flags, 'resolve-after-misses')
|
|
233
|
+
? Number(flagStr(flags, 'resolve-after-misses'))
|
|
234
|
+
: undefined,
|
|
212
235
|
dryRun,
|
|
213
236
|
});
|
|
214
237
|
// Dry run with a token renders the grouped preview; otherwise the plain
|
|
@@ -217,9 +240,15 @@ async function runRun(argv) {
|
|
|
217
240
|
? renderPreview(report.previews)
|
|
218
241
|
: renderReport(report.outcome);
|
|
219
242
|
writeReport(markdown, output);
|
|
243
|
+
for (const error of report.targetErrors) {
|
|
244
|
+
console.error(`target: ${error}`);
|
|
245
|
+
}
|
|
220
246
|
if (report.filed) {
|
|
221
247
|
for (const { repo: repoName, result } of report.reconciled) {
|
|
222
248
|
console.log(`${repoName}: filed ${result.created.length}, touched ${result.touched}, resolved ${result.resolved}`);
|
|
249
|
+
for (const error of result.errors) {
|
|
250
|
+
console.error(` ${repoName} — ${error}`);
|
|
251
|
+
}
|
|
223
252
|
}
|
|
224
253
|
}
|
|
225
254
|
else if (dryRun) {
|
|
@@ -228,6 +257,19 @@ async function runRun(argv) {
|
|
|
228
257
|
else {
|
|
229
258
|
console.log('No GITHUB_TOKEN — no issues filed.');
|
|
230
259
|
}
|
|
260
|
+
// Commit the durable run record and regenerate the static dashboard.
|
|
261
|
+
if (flags.get('no-record') !== true) {
|
|
262
|
+
const mode = dryRun
|
|
263
|
+
? 'dry-run'
|
|
264
|
+
: report.filed
|
|
265
|
+
? 'live'
|
|
266
|
+
: 'audit-only';
|
|
267
|
+
const recordsDir = flagStr(flags, 'records-dir') ?? 'runs';
|
|
268
|
+
writeRunRecord(buildRunRecord(report, now, mode), recordsDir);
|
|
269
|
+
if (flags.get('no-dashboard') !== true) {
|
|
270
|
+
writeDashboard(recordsDir, flagStr(flags, 'dashboard-dir') ?? 'dashboard');
|
|
271
|
+
}
|
|
272
|
+
}
|
|
231
273
|
return 0;
|
|
232
274
|
}
|
|
233
275
|
async function main(argv) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../source/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../source/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EACN,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAC,eAAe,EAAC,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,cAAc,CAAC;AACrD,OAAO,EAAC,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE3D,MAAM,KAAK,GAAG;;;;;;8DAMgD,CAAC;AAE/D,MAAM,UAAU,GAAG;;;;;;;;;;;;;;gEAc6C,CAAC;AAEjE,KAAK,UAAU,aAAa,CAAC,OAAoB;IAChD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,CAAC,CAAC;IAC3E,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,KAAK,EAAE,KAAa,EAAE,OAAe,EAAmB,EAAE;YACrE,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,KAAK,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrE,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7C,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,GAAG,CAC3B,oDAAoD,EACpD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CACzB,CAAC;QACF,MAAM,OAAO,GAAG,UAAU;aACxB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtC,OAAO,EAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC;IAChE,CAAC;YAAS,CAAC;QACV,EAAE,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;AACF,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAc;IACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,CAAC,CAAC;IACV,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,CAAC;IACV,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,WAAW;QAC1B,CAAC,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC;QACrC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAElB,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,sCAAsC,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,CAAC,GAAG,CACV,mOAAmO,CACnO,CAAC;IACF,OAAO,CAAC,CAAC;AACV,CAAC;AAED,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;iDAkB+B,CAAC;AAElD,SAAS,OAAO,CAAC,IAAc;IAC9B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,SAAS;QACV,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,SAAS;QACV,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpB,CAAC,EAAE,CAAC;QACL,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrB,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,OAAO,CACf,KAAiC,EACjC,GAAW;IAEX,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,MAA0B;IAChE,IAAI,MAAM,EAAE,CAAC;QACZ,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;AACF,CAAC;AAED,SAAS,cAAc,CAAC,MAAiB,EAAE,UAAkB;IAC5D,SAAS,CAAC,UAAU,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB,EAAE,YAAoB;IAC/D,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,SAAS;YACV,CAAC;YACD,IAAI,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;YAAC,MAAM,CAAC;gBACR,gEAAgE;YACjE,CAAC;QACF,CAAC;IACF,CAAC;IACD,SAAS,CAAC,YAAY,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAc;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC;IACV,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAExC,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,KAAK,GAAgB;YAC1B,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,QAAQ;YAChD,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,cAAc;SAChD,CAAC;QACF,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAC7B,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,EAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAC;QAC7C,8DAA8D;QAC9D,EAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,EAAC,CACjE,CAAC;QACF,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,CAAC,CAAC;IACV,CAAC;IAED,sBAAsB;IACtB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,eAAe,CAAC;IAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,CAAC,CAAC;IACV,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC;IACrD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAE/C,6EAA6E;IAC7E,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,aAAa,CACjC,MAAM,CAAC,MAAM,EACb;QACC,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QAC5C,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QAC5C,GAAG;KACH,EACD;QACC,YAAY,EAAE,SAAS;QACvB,QAAQ,EACP,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;QACvE,wEAAwE;QACxE,mDAAmD;QACnD,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;QACvE,UAAU,EACT,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC/D,kBAAkB,EAAE,OAAO,CAAC,KAAK,EAAE,sBAAsB,CAAC;YACzD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;YAChD,CAAC,CAAC,SAAS;QACZ,MAAM;KACN,CACD,CAAC;IAEF,wEAAwE;IACxE,mBAAmB;IACnB,MAAM,QAAQ,GACb,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACnC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE9B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1D,OAAO,CAAC,GAAG,CACV,GAAG,QAAQ,WAAW,MAAM,CAAC,OAAO,CAAC,MAAM,aAAa,MAAM,CAAC,OAAO,cAAc,MAAM,CAAC,QAAQ,EAAE,CACrG,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,MAAM,KAAK,EAAE,CAAC,CAAC;YAC3C,CAAC;QACF,CAAC;IACF,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACnD,CAAC;IAED,qEAAqE;IACrE,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;QACrC,MAAM,IAAI,GAAY,MAAM;YAC3B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,CAAC,KAAK;gBACb,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,YAAY,CAAC;QACjB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC;QAC3D,cAAc,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,cAAc,CACb,UAAU,EACV,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,WAAW,CAC9C,CAAC;QACH,CAAC;IACF,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,IAAc;IACjC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEhC,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,MAAM;YACV,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,KAAK;YACT,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC;QACV;YACC,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC;IACX,CAAC;AACF,CAAC;AAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
|
package/dist/dedup/hash.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The content hash that identifies a finding across runs. Computed over the
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* fields that stay stable when the same finding is re-audited: rule, file, and
|
|
4
|
+
* category. The line range is deliberately excluded — LLMs report slightly
|
|
5
|
+
* different spans for the same issue between runs, so including it would break
|
|
6
|
+
* dedup and refile duplicates. The trade-off is that two distinct findings of
|
|
7
|
+
* the same rule in the same file collapse to one issue, which is the cleaner
|
|
8
|
+
* outcome for a maintainer anyway (see docs/findings/index.md#dedup).
|
|
6
9
|
*/
|
|
7
10
|
import type { Finding } from '../findings/types.js';
|
|
8
11
|
/** A stable 16-hex-char content hash for a finding. */
|
package/dist/dedup/hash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../source/dedup/hash.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../source/dedup/hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAC;AAElD,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAGpD"}
|
package/dist/dedup/hash.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The content hash that identifies a finding across runs. Computed over the
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* fields that stay stable when the same finding is re-audited: rule, file, and
|
|
4
|
+
* category. The line range is deliberately excluded — LLMs report slightly
|
|
5
|
+
* different spans for the same issue between runs, so including it would break
|
|
6
|
+
* dedup and refile duplicates. The trade-off is that two distinct findings of
|
|
7
|
+
* the same rule in the same file collapse to one issue, which is the cleaner
|
|
8
|
+
* outcome for a maintainer anyway (see docs/findings/index.md#dedup).
|
|
6
9
|
*/
|
|
7
10
|
import { createHash } from 'node:crypto';
|
|
8
11
|
/** A stable 16-hex-char content hash for a finding. */
|
|
9
12
|
export function findingHash(finding) {
|
|
10
|
-
const salient = [
|
|
11
|
-
finding.rule,
|
|
12
|
-
finding.file,
|
|
13
|
-
`${finding.lineRange.start}-${finding.lineRange.end}`,
|
|
14
|
-
finding.category,
|
|
15
|
-
].join('\n');
|
|
13
|
+
const salient = [finding.rule, finding.file, finding.category].join('\n');
|
|
16
14
|
return createHash('sha256').update(salient).digest('hex').slice(0, 16);
|
|
17
15
|
}
|
|
18
16
|
//# sourceMappingURL=hash.js.map
|
package/dist/dedup/hash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../source/dedup/hash.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../source/dedup/hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAGvC,uDAAuD;AACvD,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC3C,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -20,6 +20,8 @@ export interface ReconcileResult {
|
|
|
20
20
|
suppressed: number;
|
|
21
21
|
/** Findings removed by the per-repo override's suppress rules. */
|
|
22
22
|
suppressedByOverride: number;
|
|
23
|
+
/** Per-operation failures that were tolerated (create/update/close). */
|
|
24
|
+
errors: string[];
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* Reconcile this run's findings against the issues already on the target repo.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../source/dedup/reconcile.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAC,KAAK,OAAO,EAAyB,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EACX,YAAY,EACZ,aAAa,EACb,eAAe,EACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,
|
|
1
|
+
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../source/dedup/reconcile.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAC,KAAK,OAAO,EAAyB,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EACX,YAAY,EACZ,aAAa,EACb,eAAe,EACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAEN,KAAK,gBAAgB,EAErB,MAAM,WAAW,CAAC;AAEnB,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wEAAwE;IACxE,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAqBD;;;GAGG;AACH,wBAAsB,iBAAiB,CACtC,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,gBAAqB,EAC9B,QAAQ,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,eAAe,CAAC,CAgG1B"}
|
package/dist/dedup/reconcile.js
CHANGED
|
@@ -9,10 +9,19 @@ import { meetsSeverityThreshold } from '../findings/types.js';
|
|
|
9
9
|
import { buildIssueContent, targetRepoFor } from '../issues/file.js';
|
|
10
10
|
import { applyRepoOverride } from '../suppression/apply.js';
|
|
11
11
|
import { upsertMarker } from './markers.js';
|
|
12
|
-
import { planReconciliation } from './plan.js';
|
|
12
|
+
import { planReconciliation, SUPPRESSION_LABELS, } from './plan.js';
|
|
13
13
|
function trackedBody(body, now) {
|
|
14
14
|
return upsertMarker(upsertMarker(body, 'last-seen', now), 'misses', '0');
|
|
15
15
|
}
|
|
16
|
+
/** Run a mutation, recording (not throwing) its failure so the run continues. */
|
|
17
|
+
async function tolerate(errors, label, op) {
|
|
18
|
+
try {
|
|
19
|
+
await op();
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
errors.push(`${label}: ${error instanceof Error ? error.message : String(error)}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
16
25
|
/**
|
|
17
26
|
* Reconcile this run's findings against the issues already on the target repo.
|
|
18
27
|
* `now` is passed in (ISO string) so the executor stays deterministic.
|
|
@@ -28,46 +37,71 @@ export async function reconcileFindings(findings, config, client, context, now,
|
|
|
28
37
|
const { kept, suppressed: overrideSuppressed, threshold, } = applyRepoOverride(findings, config, override);
|
|
29
38
|
const qualifying = kept.filter(finding => meetsSeverityThreshold(finding.severity, threshold));
|
|
30
39
|
const plan = planReconciliation(qualifying, existing, options);
|
|
40
|
+
const errors = [];
|
|
41
|
+
// Sentinel's own labels must exist before filing or GitHub rejects them.
|
|
42
|
+
if (plan.toCreate.length > 0) {
|
|
43
|
+
await tolerate(errors, 'ensure labels', () => client.ensureLabels({
|
|
44
|
+
repo: targetRepo,
|
|
45
|
+
labels: [config.issues.label, ...SUPPRESSION_LABELS],
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
31
48
|
const created = [];
|
|
32
49
|
for (const finding of plan.toCreate) {
|
|
33
50
|
const content = buildIssueContent(finding, config, context);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
51
|
+
try {
|
|
52
|
+
created.push(await client.createIssue({
|
|
53
|
+
repo: targetRepo,
|
|
54
|
+
...content,
|
|
55
|
+
body: trackedBody(content.body, now),
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
errors.push(`create (${finding.file}): ${error instanceof Error ? error.message : String(error)}`);
|
|
60
|
+
}
|
|
40
61
|
}
|
|
62
|
+
let touched = 0;
|
|
41
63
|
for (const { issue } of plan.toTouch) {
|
|
42
|
-
await
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
64
|
+
await tolerate(errors, `touch #${issue.number}`, async () => {
|
|
65
|
+
await client.updateIssue({
|
|
66
|
+
repo: targetRepo,
|
|
67
|
+
number: issue.number,
|
|
68
|
+
body: trackedBody(issue.body, now),
|
|
69
|
+
});
|
|
70
|
+
touched++;
|
|
46
71
|
});
|
|
47
72
|
}
|
|
73
|
+
let incremented = 0;
|
|
48
74
|
for (const { issue, misses } of plan.toIncrementMiss) {
|
|
49
|
-
await
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
75
|
+
await tolerate(errors, `age #${issue.number}`, async () => {
|
|
76
|
+
await client.updateIssue({
|
|
77
|
+
repo: targetRepo,
|
|
78
|
+
number: issue.number,
|
|
79
|
+
body: upsertMarker(issue.body, 'misses', String(misses)),
|
|
80
|
+
});
|
|
81
|
+
incremented++;
|
|
53
82
|
});
|
|
54
83
|
}
|
|
84
|
+
let resolved = 0;
|
|
55
85
|
for (const issue of plan.toResolve) {
|
|
56
|
-
await
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
86
|
+
await tolerate(errors, `resolve #${issue.number}`, async () => {
|
|
87
|
+
await client.closeIssue({
|
|
88
|
+
repo: targetRepo,
|
|
89
|
+
number: issue.number,
|
|
90
|
+
reason: 'completed',
|
|
91
|
+
comment: 'Sentinel is auto-resolving this finding: it has not recurred across recent audit runs.',
|
|
92
|
+
});
|
|
93
|
+
resolved++;
|
|
61
94
|
});
|
|
62
95
|
}
|
|
63
96
|
return {
|
|
64
97
|
targetRepo,
|
|
65
98
|
created,
|
|
66
|
-
touched
|
|
67
|
-
incremented
|
|
68
|
-
resolved
|
|
99
|
+
touched,
|
|
100
|
+
incremented,
|
|
101
|
+
resolved,
|
|
69
102
|
suppressed: plan.suppressed.length,
|
|
70
103
|
suppressedByOverride: overrideSuppressed.length,
|
|
104
|
+
errors,
|
|
71
105
|
};
|
|
72
106
|
}
|
|
73
107
|
//# sourceMappingURL=reconcile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../source/dedup/reconcile.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAe,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAMnE,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../source/dedup/reconcile.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,8 +22,11 @@ export { configReadme, nanocoderConfig, sentinelYaml, starterPack, workflowYaml,
|
|
|
22
22
|
export { DEFAULT_INIT_OPTIONS, type InitOptions, type ScaffoldFile, } from './init/types.js';
|
|
23
23
|
export { buildIssueBody, buildIssueTitle } from './issues/body.js';
|
|
24
24
|
export { buildIssueContent, fileFindings, qualifyingFindings, targetRepoFor, } from './issues/file.js';
|
|
25
|
-
export { buildGhCloseArgs, buildGhEditArgs, buildGhIssueArgs, buildGhListArgs, ghIssueClient, parseIssueList, parseIssueUrl, } from './issues/gh-client.js';
|
|
25
|
+
export { buildGhCloseArgs, buildGhEditArgs, buildGhIssueArgs, buildGhLabelArgs, buildGhListArgs, ghIssueClient, parseIssueList, parseIssueUrl, } from './issues/gh-client.js';
|
|
26
26
|
export type { CreatedIssue, CreateIssueParams, ExistingIssue, FiledIssue, FilingContext, FilingError, FilingResult, GitHubClient, IssueContent, IssueQueryClient, ReconcileClient, } from './issues/types.js';
|
|
27
|
+
export { renderDashboard } from './observe/dashboard.js';
|
|
28
|
+
export { buildRunRecord, recordFilename } from './observe/record.js';
|
|
29
|
+
export type { FilingSummary, PackRunRecord, RepoRunRecord, RunMode, RunRecord, SeverityCounts, } from './observe/types.js';
|
|
27
30
|
export { runAudit } from './orchestrator/audit.js';
|
|
28
31
|
export { type AutoFixOptions, type AutoFixResult, buildAutoFixPrompt, runAuditWithAutoFix, } from './orchestrator/auto-fix.js';
|
|
29
32
|
export { extractJsonArray } from './orchestrator/extract.js';
|
|
@@ -37,8 +40,10 @@ export { globToRegExp, matchesAppliesTo, matchesGlob, } from './rule-packs/glob.
|
|
|
37
40
|
export { parseRulePack, splitFrontmatter } from './rule-packs/parse.js';
|
|
38
41
|
export type { AppliesTo, ParseResult, RulePack, RulePackError, RulePackManifest, } from './rule-packs/types.js';
|
|
39
42
|
export { auditPack, type PackAuditContext } from './run/audit.js';
|
|
40
|
-
export { buildCloneArgs, type
|
|
41
|
-
export { type
|
|
43
|
+
export { buildCloneArgs, type PrepareResult, prepareRepo, } from './run/clone.js';
|
|
44
|
+
export { type ExpandResult, expandTargets, type ResolvedRepoTarget, } from './run/expand.js';
|
|
45
|
+
export { type DryRunPreview, type PackFailure, type PreviewEntry, previewReconciliation, renderPreview, } from './run/preview.js';
|
|
46
|
+
export { buildRepoListArgs, ghRepoLister, parseRepoList, type RepoLister, } from './run/repo-lister.js';
|
|
42
47
|
export { countFindings, renderReport } from './run/report.js';
|
|
43
48
|
export { type RunConfigOptions, type RunDeps, type RunLocalDeps, type RunReport, runFromConfig, runLocal, } from './run/run.js';
|
|
44
49
|
export { isEnabledPackPath, unionPatterns } from './run/select.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,MAAM,GACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACN,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,kBAAkB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,KAAK,eAAe,EACpB,iBAAiB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACX,UAAU,EACV,OAAO,EACP,SAAS,EACT,QAAQ,GACR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,WAAW,EACX,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,UAAU,EACV,YAAY,GACZ,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACX,eAAe,EACf,gBAAgB,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAC,KAAK,cAAc,EAAE,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAC,KAAK,cAAc,EAAE,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACN,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,WAAW,EACX,YAAY,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjE,OAAO,EACN,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACb,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACX,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AACjD,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,kBAAkB,EAClB,mBAAmB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,cAAc,GACd,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACd,aAAa,GACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACN,YAAY,EACZ,gBAAgB,EAChB,WAAW,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACtE,YAAY,EACX,SAAS,EACT,WAAW,EACX,QAAQ,EACR,aAAa,EACb,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,SAAS,EAAE,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,9 @@ export { configReadme, nanocoderConfig, sentinelYaml, starterPack, workflowYaml,
|
|
|
19
19
|
export { DEFAULT_INIT_OPTIONS, } from './init/types.js';
|
|
20
20
|
export { buildIssueBody, buildIssueTitle } from './issues/body.js';
|
|
21
21
|
export { buildIssueContent, fileFindings, qualifyingFindings, targetRepoFor, } from './issues/file.js';
|
|
22
|
-
export { buildGhCloseArgs, buildGhEditArgs, buildGhIssueArgs, buildGhListArgs, ghIssueClient, parseIssueList, parseIssueUrl, } from './issues/gh-client.js';
|
|
22
|
+
export { buildGhCloseArgs, buildGhEditArgs, buildGhIssueArgs, buildGhLabelArgs, buildGhListArgs, ghIssueClient, parseIssueList, parseIssueUrl, } from './issues/gh-client.js';
|
|
23
|
+
export { renderDashboard } from './observe/dashboard.js';
|
|
24
|
+
export { buildRunRecord, recordFilename } from './observe/record.js';
|
|
23
25
|
export { runAudit } from './orchestrator/audit.js';
|
|
24
26
|
export { buildAutoFixPrompt, runAuditWithAutoFix, } from './orchestrator/auto-fix.js';
|
|
25
27
|
export { extractJsonArray } from './orchestrator/extract.js';
|
|
@@ -29,8 +31,10 @@ export { resolveDependencies } from './rule-packs/dependencies.js';
|
|
|
29
31
|
export { globToRegExp, matchesAppliesTo, matchesGlob, } from './rule-packs/glob.js';
|
|
30
32
|
export { parseRulePack, splitFrontmatter } from './rule-packs/parse.js';
|
|
31
33
|
export { auditPack } from './run/audit.js';
|
|
32
|
-
export { buildCloneArgs } from './run/clone.js';
|
|
34
|
+
export { buildCloneArgs, prepareRepo, } from './run/clone.js';
|
|
35
|
+
export { expandTargets, } from './run/expand.js';
|
|
33
36
|
export { previewReconciliation, renderPreview, } from './run/preview.js';
|
|
37
|
+
export { buildRepoListArgs, ghRepoLister, parseRepoList, } from './run/repo-lister.js';
|
|
34
38
|
export { countFindings, renderReport } from './run/report.js';
|
|
35
39
|
export { runFromConfig, runLocal, } from './run/run.js';
|
|
36
40
|
export { isEnabledPackPath, unionPatterns } from './run/select.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAa5D,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACN,kBAAkB,EAGlB,kBAAkB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEN,iBAAiB,GACjB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACN,WAAW,EACX,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,UAAU,EACV,YAAY,GACZ,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAsB,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAsB,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACN,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,WAAW,EACX,YAAY,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,oBAAoB,GAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjE,OAAO,EACN,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACb,MAAM,uBAAuB,CAAC;AAc/B,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAGN,kBAAkB,EAClB,mBAAmB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,cAAc,GACd,MAAM,oCAAoC,CAAC;AAO5C,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACN,YAAY,EACZ,gBAAgB,EAChB,WAAW,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAQtE,OAAO,EAAC,SAAS,EAAwB,MAAM,gBAAgB,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAa5D,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACN,kBAAkB,EAGlB,kBAAkB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEN,iBAAiB,GACjB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACN,WAAW,EACX,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,UAAU,EACV,YAAY,GACZ,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAsB,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAsB,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACN,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,WAAW,EACX,YAAY,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,oBAAoB,GAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjE,OAAO,EACN,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,GACb,MAAM,uBAAuB,CAAC;AAc/B,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AASnE,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAGN,kBAAkB,EAClB,mBAAmB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,cAAc,GACd,MAAM,oCAAoC,CAAC;AAO5C,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACN,YAAY,EACZ,gBAAgB,EAChB,WAAW,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAQtE,OAAO,EAAC,SAAS,EAAwB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACN,cAAc,EAEd,WAAW,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEN,aAAa,GAEb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIN,qBAAqB,EACrB,aAAa,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,iBAAiB,EACjB,YAAY,EACZ,aAAa,GAEb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAKN,aAAa,EACb,QAAQ,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAC,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAU3D,OAAO,EACN,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GAElB,MAAM,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../source/init/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AAY5C,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAwBzD;AAED,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../source/init/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AAY5C,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAwBzD;AAED,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA2DzD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAmCpC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAkBxC;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAmCzD"}
|
package/dist/init/templates.js
CHANGED
|
@@ -54,8 +54,9 @@ concurrency:
|
|
|
54
54
|
group: sentinel
|
|
55
55
|
cancel-in-progress: false
|
|
56
56
|
|
|
57
|
+
# contents: write lets the run commit its record and dashboard back to this repo.
|
|
57
58
|
permissions:
|
|
58
|
-
contents:
|
|
59
|
+
contents: write
|
|
59
60
|
issues: write
|
|
60
61
|
|
|
61
62
|
jobs:
|
|
@@ -83,6 +84,16 @@ jobs:
|
|
|
83
84
|
--workspace "$RUNNER_TEMP/sentinel"
|
|
84
85
|
--output "$GITHUB_STEP_SUMMARY"
|
|
85
86
|
\${{ github.event.inputs.dry_run == 'true' && '--dry-run' || '' }}
|
|
87
|
+
|
|
88
|
+
- name: Commit run record and dashboard
|
|
89
|
+
run: |
|
|
90
|
+
git config user.name "github-actions[bot]"
|
|
91
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
92
|
+
git add runs dashboard
|
|
93
|
+
if ! git diff --cached --quiet; then
|
|
94
|
+
git commit -m "chore: sentinel run record [skip ci]"
|
|
95
|
+
git push
|
|
96
|
+
fi
|
|
86
97
|
`;
|
|
87
98
|
}
|
|
88
99
|
/**
|
|
@@ -182,6 +193,8 @@ the example block and set its key as an environment variable / Actions secret.
|
|
|
182
193
|
- \`agents.config.json\` — Nanocoder provider/model wiring.
|
|
183
194
|
- \`rule-packs/\` — your rule packs (you author these).
|
|
184
195
|
- \`.github/workflows/sentinel.yml\` — the scheduled audit.
|
|
196
|
+
- \`runs/\` — a committed JSON record per run (the durable history).
|
|
197
|
+
- \`dashboard/\` — a generated static \`index.html\`; serve it via GitHub Pages.
|
|
185
198
|
`;
|
|
186
199
|
}
|
|
187
200
|
//# sourceMappingURL=templates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../source/init/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,SAAS,YAAY,CAAC,OAAiB;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACnE,OAAO,IAAI;SACT,GAAG,CACH,IAAI,CAAC,EAAE,CACN,aAAa,IAAI,4DAA4D,CAC9E;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,OAAoB;IAChD,OAAO;;;;;EAKN,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;aAGlB,OAAO,CAAC,QAAQ;;;sBAGP,OAAO,CAAC,iBAAiB;;;;cAIjC,OAAO,CAAC,QAAQ;WACnB,OAAO,CAAC,KAAK;;;;WAIb,OAAO,CAAC,KAAK;;CAEvB,CAAC;AACF,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,YAAY,CAAC,OAAoB;IAChD,OAAO;;;;eAIO,OAAO,CAAC,QAAQ
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../source/init/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,SAAS,YAAY,CAAC,OAAiB;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACnE,OAAO,IAAI;SACT,GAAG,CACH,IAAI,CAAC,EAAE,CACN,aAAa,IAAI,4DAA4D,CAC9E;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,OAAoB;IAChD,OAAO;;;;;EAKN,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;aAGlB,OAAO,CAAC,QAAQ;;;sBAGP,OAAO,CAAC,iBAAiB;;;;cAIjC,OAAO,CAAC,QAAQ;WACnB,OAAO,CAAC,KAAK;;;;WAIb,OAAO,CAAC,KAAK;;CAEvB,CAAC;AACF,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,YAAY,CAAC,OAAoB;IAChD,OAAO;;;;eAIO,OAAO,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqD9B,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCP,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe;IAC9B,OAAO,GAAG,IAAI,CAAC,SAAS,CACvB;QACC,SAAS,EAAE;YACV,SAAS,EAAE;gBACV;oBACC,IAAI,EAAE,yCAAyC;oBAC/C,WAAW,EAAE,WAAW;oBACxB,OAAO,EAAE,sCAAsC;oBAC/C,MAAM,EAAE,uBAAuB;oBAC/B,MAAM,EAAE,CAAC,eAAe,CAAC;iBACzB;aACD;SACD;KACD,EACD,IAAI,EACJ,CAAC,CACD,IAAI,CAAC;AACP,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAAC,OAAoB;IAChD,OAAO;;;;;;;;;;;;;;wDAcgD,OAAO,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;CAmBvE,CAAC;AACF,CAAC"}
|
|
@@ -15,6 +15,8 @@ export declare function buildGhListArgs(repo: string, label: string): string[];
|
|
|
15
15
|
export declare function buildGhEditArgs(repo: string, issueNumber: number, body: string): string[];
|
|
16
16
|
/** Build the `gh issue close` argv. */
|
|
17
17
|
export declare function buildGhCloseArgs(repo: string, issueNumber: number, reason?: string, comment?: string): string[];
|
|
18
|
+
/** Build the `gh label create` argv (idempotent via --force). */
|
|
19
|
+
export declare function buildGhLabelArgs(repo: string, label: string): string[];
|
|
18
20
|
/** Parse the JSON `gh issue list --json ...` prints into ExistingIssues. */
|
|
19
21
|
export declare function parseIssueList(json: string): ExistingIssue[];
|
|
20
22
|
export declare const ghIssueClient: ReconcileClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh-client.d.ts","sourceRoot":"","sources":["../../source/issues/gh-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACX,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,MAAM,YAAY,CAAC;AAEpB,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAkBpE;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAOjE;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAerE;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAC9B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACV,MAAM,EAAE,CAEV;AAED,uCAAuC;AACvC,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACd,MAAM,EAAE,CASV;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAe5D;AA2BD,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"gh-client.d.ts","sourceRoot":"","sources":["../../source/issues/gh-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACX,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,MAAM,YAAY,CAAC;AAEpB,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAkBpE;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAOjE;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAerE;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAC9B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACV,MAAM,EAAE,CAEV;AAED,uCAAuC;AACvC,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACd,MAAM,EAAE,CASV;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAatE;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAe5D;AA2BD,eAAO,MAAM,aAAa,EAAE,eAoD3B,CAAC"}
|
package/dist/issues/gh-client.js
CHANGED
|
@@ -66,6 +66,21 @@ export function buildGhCloseArgs(repo, issueNumber, reason, comment) {
|
|
|
66
66
|
}
|
|
67
67
|
return args;
|
|
68
68
|
}
|
|
69
|
+
/** Build the `gh label create` argv (idempotent via --force). */
|
|
70
|
+
export function buildGhLabelArgs(repo, label) {
|
|
71
|
+
return [
|
|
72
|
+
'label',
|
|
73
|
+
'create',
|
|
74
|
+
label,
|
|
75
|
+
'--repo',
|
|
76
|
+
repo,
|
|
77
|
+
'--color',
|
|
78
|
+
'5319e7',
|
|
79
|
+
'--description',
|
|
80
|
+
'Managed by Sentinel',
|
|
81
|
+
'--force',
|
|
82
|
+
];
|
|
83
|
+
}
|
|
69
84
|
/** Parse the JSON `gh issue list --json ...` prints into ExistingIssues. */
|
|
70
85
|
export function parseIssueList(json) {
|
|
71
86
|
const raw = JSON.parse(json);
|
|
@@ -109,6 +124,13 @@ export const ghIssueClient = {
|
|
|
109
124
|
}
|
|
110
125
|
return created;
|
|
111
126
|
},
|
|
127
|
+
async ensureLabels({ repo, labels }) {
|
|
128
|
+
// Best effort: a label that already exists or a transient failure must not
|
|
129
|
+
// abort the run — filing tolerates a missing label per issue.
|
|
130
|
+
for (const label of labels) {
|
|
131
|
+
runGh(buildGhLabelArgs(repo, label));
|
|
132
|
+
}
|
|
133
|
+
},
|
|
112
134
|
async listIssues({ repo, label }) {
|
|
113
135
|
const result = runGh(buildGhListArgs(repo, label));
|
|
114
136
|
if (result.status !== 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh-client.js","sourceRoot":"","sources":["../../source/issues/gh-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gh-client.js","sourceRoot":"","sources":["../../source/issues/gh-client.ts"],"names":[],"mappings":"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"}
|
package/dist/issues/types.d.ts
CHANGED
|
@@ -36,6 +36,13 @@ export interface ExistingIssue {
|
|
|
36
36
|
}
|
|
37
37
|
/** Reading and mutating existing issues, needed by the dedup reconcile step. */
|
|
38
38
|
export interface IssueQueryClient {
|
|
39
|
+
/** Ensure the given labels exist on the repo (create the missing ones).
|
|
40
|
+
* Filing or applying a label GitHub does not know about fails, so Sentinel
|
|
41
|
+
* creates its own labels up front. */
|
|
42
|
+
ensureLabels(params: {
|
|
43
|
+
repo: string;
|
|
44
|
+
labels: string[];
|
|
45
|
+
}): Promise<void>;
|
|
39
46
|
listIssues(params: {
|
|
40
47
|
repo: string;
|
|
41
48
|
label: string;
|