MCPcopy Create free account
hub / github.com/SethGammon/Citadel / collectProof

Function collectProof

scripts/live-github-steward-proof.js:250–281  ·  view source on GitHub ↗
(workDir, owner, repoName, repoUrl, transcript, args)

Source from the content-addressed store, hash-verified

248}
249
250function collectProof(workDir, owner, repoName, repoUrl, transcript, args) {
251 const queue = readJson(path.join(workDir, '.agent-steward', 'queue.json'));
252 const events = parseJsonl(path.join(workDir, '.agent-steward', 'events.jsonl'));
253 const deploys = parseJsonl(path.join(workDir, '.agent-steward', 'live-deploys.jsonl'));
254 const prs = JSON.parse(gh(['pr', 'list', '--repo', `${owner}/${repoName}`, '--state', 'all', '--json', 'number,state,mergedAt,headRefName,url']));
255 const proof = {
256 generatedAt: new Date().toISOString(),
257 repo: `${owner}/${repoName}`,
258 repoUrl,
259 localWorkDir: workDir,
260 settings: args,
261 summary: {
262 prs: prs.length,
263 mergedPrs: prs.filter((pr) => pr.state === 'MERGED').length,
264 landedQueueItems: queue.filter((item) => item.status === 'landed').length,
265 deploys: deploys.length,
266 updatedBranchEvents: events.filter((event) => event.type === 'updated-branch').length,
267 waitingEvents: events.filter((event) => event.type === 'waiting-for-checks').length,
268 repairEvents: events.filter((event) => event.type === 'repair-needed').length,
269 },
270 prs,
271 queue,
272 events,
273 deploys,
274 transcript,
275 };
276 const outDir = path.join(PROJECT_ROOT, '.planning', 'live-proof');
277 fs.mkdirSync(outDir, { recursive: true });
278 const outPath = path.join(outDir, `${repoName}.json`);
279 fs.writeFileSync(outPath, `${JSON.stringify(proof, null, 2)}\n`, 'utf8');
280 return { proof, outPath };
281}
282
283async function main() {
284 const args = parseArgs(process.argv.slice(2));

Callers 1

mainFunction · 0.85

Calls 3

parseJsonlFunction · 0.85
ghFunction · 0.85
readJsonFunction · 0.70

Tested by

no test coverage detected