@tyroneross/build-loop 0.36.0 → 0.43.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/.agents/plugins/marketplace.json +2 -2
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.cursor/rules/build-loop-surface.mdc +12 -11
- package/.cursor/rules/skill-index.mdc +33 -0
- package/AGENTS.md +213 -34
- package/README.md +99 -31
- package/agents/advisor.md +4 -4
- package/agents/alignment-checker.md +2 -2
- package/agents/architecture-scout.md +4 -4
- package/agents/build-orchestrator.md +38 -36
- package/agents/database-assessor.md +11 -5
- package/agents/design-contract-specialist.md +8 -8
- package/agents/fact-checker.md +13 -3
- package/agents/fix-critique.md +2 -2
- package/agents/independent-auditor.md +60 -7
- package/agents/leak-scanner.md +82 -0
- package/agents/overfitting-reviewer.md +2 -2
- package/agents/plan-critic.md +1 -1
- package/agents/promotion-reviewer.md +5 -5
- package/agents/retrospective-synthesizer.md +138 -35
- package/agents/scope-auditor.md +82 -11
- package/agents/security-reviewer.md +56 -2
- package/agents/self-improvement-architect.md +17 -3
- package/agents/transcript-pattern-miner.md +5 -5
- package/agents/ui-validator.md +1 -1
- package/bin/build-loop-debugger.js +143 -0
- package/bin/build-loop-install.js +1 -4
- package/bin/build-loop-load-probe.js +345 -0
- package/codex-skills/build-loop/SKILL.md +28 -6
- package/commands/feedback.md +37 -0
- package/dist/src/interactive-verifier.d.ts +1 -14
- package/dist/src/interactive-verifier.d.ts.map +1 -1
- package/dist/src/interactive-verifier.js +6 -113
- package/dist/src/interactive-verifier.js.map +1 -1
- package/dist/src/quality.d.ts +5 -0
- package/dist/src/quality.d.ts.map +1 -0
- package/dist/src/quality.js +81 -0
- package/dist/src/quality.js.map +1 -0
- package/dist/src/storage.d.ts.map +1 -1
- package/dist/src/storage.js +37 -3
- package/dist/src/storage.js.map +1 -1
- package/docs/agent-surface-policy.md +35 -31
- package/docs/memory-setup.md +19 -0
- package/hooks/git/pre-push +65 -4
- package/hooks/hooks.json +95 -38
- package/hooks/pre-commit +20 -1
- package/hooks/pre-edit-rally-point.sh +10 -3
- package/hooks/session-start-codex-hook-trust.sh +30 -0
- package/hooks/session-start-git-hooks.sh +3 -1
- package/hooks/session-start-rally-point.sh +52 -4
- package/hooks/session-start-worktree-gc.sh +47 -94
- package/hooks/stop-transcript-sweep.sh +173 -0
- package/hooks/test_closeout.sh +14 -2
- package/package.json +8 -7
- package/scripts/README.md +1 -1
- package/scripts/_paths.py +65 -0
- package/scripts/groundwork_exchange.py +1012 -0
- package/scripts/install_memory.py +33 -1
- package/scripts/lessons_index/ingest.py +13 -2
- package/scripts/lessons_index/query.py +36 -13
- package/scripts/memory_context/__init__.py +108 -14
- package/scripts/memory_graph/__init__.py +5 -1
- package/scripts/project_resolver.py +42 -36
- package/scripts/sync_plugin_cache.py +37 -2
- package/skills/agent-rally-point/SKILL.md +46 -0
- package/skills/api-registry-bridge/SKILL.md +1 -1
- package/skills/architecture/dead/SKILL.md +1 -1
- package/skills/architecture/impact/SKILL.md +1 -1
- package/skills/architecture/review/SKILL.md +1 -1
- package/skills/architecture/rules/SKILL.md +3 -3
- package/skills/architecture/scan/SKILL.md +1 -1
- package/skills/architecture/trace/SKILL.md +1 -1
- package/skills/attribution-standard/SKILL.md +6 -6
- package/skills/auto-decision-capture/SKILL.md +31 -2
- package/skills/auto-finding-capture/SKILL.md +28 -1
- package/skills/build-loop/SKILL.md +131 -23
- package/skills/build-loop/fallbacks.md +16 -21
- package/skills/build-loop/phases/ui-validation.md +2 -2
- package/skills/build-loop/references/advisor-dispatch-ladder.md +1 -1
- package/skills/build-loop/references/apple-native-planning.md +1 -1
- package/skills/build-loop/references/autonomous-and-per-commit-modes.md +11 -5
- package/skills/build-loop/references/autonomy-dashboard.md +115 -0
- package/skills/build-loop/references/capability-routing.md +24 -2
- package/skills/build-loop/references/coordination.md +24 -6
- package/skills/build-loop/references/experiment-results-template.md +15 -3
- package/skills/build-loop/references/leadership.md +1 -1
- package/skills/build-loop/references/memory.md +14 -3
- package/skills/build-loop/references/modular-systems-pack.md +8 -0
- package/skills/build-loop/references/output-style.md +86 -0
- package/skills/build-loop/references/phase-1-assess.md +102 -2
- package/skills/build-loop/references/phase-2-plan.md +9 -1
- package/skills/build-loop/references/phase-3-execute.md +5 -2
- package/skills/build-loop/references/phase-4-review.md +85 -8
- package/skills/build-loop/references/phase-5-iterate.md +76 -8
- package/skills/build-loop/references/phase-6-learn.md +10 -17
- package/skills/build-loop/references/privileged-request-broker.md +254 -0
- package/skills/build-loop/references/resource-aware-execution.md +183 -0
- package/skills/build-loop/references/self-recursive-dev.md +2 -2
- package/skills/build-loop/references/status-output-format.md +207 -0
- package/skills/build-loop/references/verify-dispatch.md +56 -2
- package/skills/building-with-deepagents/SKILL.md +1 -1
- package/skills/claim-scope/SKILL.md +185 -0
- package/skills/color-engine/SKILL.md +103 -0
- package/skills/color-engine/_core.py +464 -0
- package/skills/color-engine/color_engine.py +175 -0
- package/skills/cost-rca/SKILL.md +61 -0
- package/skills/data-plane-worktrees/SKILL.md +139 -0
- package/skills/data-plane-worktrees/agents/openai.yaml +4 -0
- package/skills/database-practice/SKILL.md +200 -0
- package/skills/database-practice/references/diagnostic-queries.sql +126 -0
- package/skills/database-practice/references/vector-and-graph-tuning.md +208 -0
- package/skills/database-practice/scripts/db_table_map.py +1244 -0
- package/skills/database-practice/scripts/test_db_table_map.py +514 -0
- package/skills/debug-loop/SKILL.md +36 -6
- package/skills/debugging-memory/SKILL.md +32 -430
- package/skills/debugging-memory/references/pattern-extraction.md +4 -4
- package/skills/debugging-memory/references/search.md +32 -120
- package/skills/debugging-memory/references/store.md +32 -126
- package/skills/debugging-memory/references/subagent-integration.md +1 -1
- package/skills/decision-queue/SKILL.md +251 -0
- package/skills/decision-queue/assets/template.html +1242 -0
- package/skills/decision-queue/references/example-large-queue-batching.md +164 -0
- package/skills/decision-queue/scripts/regen_template_constants.py +160 -0
- package/skills/defenseclaw-bridge/SKILL.md +2 -2
- package/skills/defenseclaw-bridge/references/dc-config-mapping.md +2 -9
- package/skills/drain-proposals/SKILL.md +53 -0
- package/skills/focused-loop-builder/SKILL.md +31 -0
- package/skills/focused-loop-builder/references/spec-format.md +27 -0
- package/skills/handoff/SKILL.md +169 -8
- package/skills/ibr-bridge/SKILL.md +4 -1
- package/skills/knowledge/SKILL.md +26 -14
- package/skills/knowledge/references/review-mode.md +2 -3
- package/skills/knowledge/templates/madr-minimal.md +1 -1
- package/skills/mcp-builder/SKILL.md +1 -1
- package/skills/model-bakeoff/SKILL.md +48 -10
- package/skills/model-tiering/SKILL.md +92 -31
- package/skills/native-ax-driver/SKILL.md +38 -5
- package/skills/native-ax-driver/scripts/native_driver.py +278 -22
- package/skills/native-ax-driver/scripts/test_native_driver.py +227 -0
- package/skills/optimize/SKILL.md +1 -1
- package/skills/plugin-builder/SKILL.md +48 -1
- package/skills/plugin-builder/references/build-loop-phase-guidance.md +3 -4
- package/skills/plugin-builder/references/distribution.md +13 -2
- package/skills/plugin-builder/references/plugin-hygiene-lessons.md +2 -2
- package/skills/plugin-tests/SKILL.md +2 -2
- package/skills/recursive-retrospective/SKILL.md +1 -1
- package/skills/repo-closeout/SKILL.md +17 -0
- package/skills/repo-closeout/agents/openai.yaml +4 -0
- package/skills/repo-maintenance/SKILL.md +179 -0
- package/skills/repo-maintenance/agents/openai.yaml +4 -0
- package/skills/repo-maintenance/references/pre-public-hygiene.md +134 -0
- package/skills/repo-maintenance/references/repository-taxonomy.md +161 -0
- package/skills/repo-maintenance/references/safety-protocol.md +106 -0
- package/skills/repo-maintenance/references/stack-profiles.md +138 -0
- package/skills/repo-maintenance/scripts/audit_repo_maintenance.py +1198 -0
- package/skills/repo-maintenance/scripts/test_audit_repo_maintenance.py +506 -0
- package/skills/repository-intelligence/SKILL.md +189 -0
- package/skills/repository-intelligence/agents/openai.yaml +4 -0
- package/skills/repository-intelligence/references/assessment-rubric.md +88 -0
- package/skills/repository-intelligence/scripts/repository_inventory.py +347 -0
- package/skills/research/SKILL.md +12 -2
- package/skills/root-cause-analysis/SKILL.md +1 -1
- package/skills/runtime-parity-verification/SKILL.md +36 -1
- package/skills/security-methodology/SKILL.md +23 -10
- package/skills/security-methodology/references/agentic-handoff-templates.md +220 -0
- package/skills/security-methodology/references/cross-source-matrix.md +1 -1
- package/skills/security-methodology/references/owasp-agentic-top-10.md +1 -1
- package/skills/security-scan/SKILL.md +55 -15
- package/skills/self-improve/SKILL.md +70 -50
- package/skills/silent-assumptions/SKILL.md +341 -0
- package/skills/silent-assumptions/references/elicitation-detectors.md +342 -0
- package/skills/spec-writing/SKILL.md +128 -24
- package/skills/spec-writing/scripts/check_checklist.py +114 -15
- package/skills/ui-design/SKILL.md +6 -4
- package/skills/ui-design/references/color-engine.md +132 -0
- package/skills/ui-design/references/design-preferences-from-owned-apps.md +8 -8
- package/skills/ui-design/references/ui-guidance-sources.md +1 -1
- package/skills/ui-design/references/universal-design-principles.alt.md +2 -2
- package/plugin-artifacts/codex/.codex-plugin/plugin.json +0 -41
- package/plugin-artifacts/codex/AGENTS.md +0 -560
- package/plugin-artifacts/codex/BUILD-ARTIFACT.md +0 -5
- package/plugin-artifacts/codex/LICENSE +0 -202
- package/plugin-artifacts/codex/README.md +0 -313
- package/plugin-artifacts/codex/assets/build-loop-plugin-icon.png +0 -0
- package/plugin-artifacts/codex/docs/agent-surface-policy.md +0 -63
- package/plugin-artifacts/codex/references/advisor-dispatch-ladder.md +0 -62
- package/plugin-artifacts/codex/references/agent-role-taxonomy.md +0 -135
- package/plugin-artifacts/codex/references/autonomous-and-per-commit-modes.md +0 -161
- package/plugin-artifacts/codex/references/autonomy-config.md +0 -231
- package/plugin-artifacts/codex/references/backlog-system.md +0 -285
- package/plugin-artifacts/codex/references/capability-routing.md +0 -231
- package/plugin-artifacts/codex/references/codex-subagents.md +0 -106
- package/plugin-artifacts/codex/references/coordination-file-template.md +0 -181
- package/plugin-artifacts/codex/references/coordination-rules.md +0 -552
- package/plugin-artifacts/codex/references/dogfood-reload-checkpoint.md +0 -112
- package/plugin-artifacts/codex/references/halt-and-ask-protocol.md +0 -102
- package/plugin-artifacts/codex/references/implementer-envelope-schema.md +0 -302
- package/plugin-artifacts/codex/references/intent-capability-pack.md +0 -257
- package/plugin-artifacts/codex/references/intent-exploration-prompts.md +0 -96
- package/plugin-artifacts/codex/references/leadership.md +0 -72
- package/plugin-artifacts/codex/references/memory-systems.md +0 -261
- package/plugin-artifacts/codex/references/memory.md +0 -313
- package/plugin-artifacts/codex/references/model-tier-mapping.md +0 -296
- package/plugin-artifacts/codex/references/modular-systems-pack.md +0 -96
- package/plugin-artifacts/codex/references/phase-1-assess.md +0 -249
- package/plugin-artifacts/codex/references/phase-2-plan.md +0 -86
- package/plugin-artifacts/codex/references/phase-3-execute.md +0 -49
- package/plugin-artifacts/codex/references/phase-4-review.md +0 -341
- package/plugin-artifacts/codex/references/phase-5-iterate.md +0 -72
- package/plugin-artifacts/codex/references/phase-6-learn.md +0 -58
- package/plugin-artifacts/codex/references/recent-design-structures.md +0 -274
- package/plugin-artifacts/codex/references/research-trigger-policy.md +0 -140
- package/plugin-artifacts/codex/references/runtime-smoke-triggers.md +0 -42
- package/plugin-artifacts/codex/references/self-review.md +0 -234
- package/plugin-artifacts/codex/references/single-writer-commit-protocol.md +0 -90
- package/plugin-artifacts/codex/references/task-capture-policy.md +0 -68
- package/plugin-artifacts/codex/references/ui-io-contract.md +0 -116
- package/plugin-artifacts/codex/references/ui-spotcheck-protocol.md +0 -65
- package/plugin-artifacts/codex/references/verify-dispatch.md +0 -85
- package/plugin-artifacts/codex/skills/build-loop/SKILL.md +0 -381
- package/plugin-artifacts/codex/skills/build-loop/detect-plugins.mjs +0 -82
- package/plugin-artifacts/codex/skills/build-loop/eval-guide.md +0 -65
- package/plugin-artifacts/codex/skills/build-loop/fallbacks.md +0 -549
- package/plugin-artifacts/codex/skills/build-loop/phases/fact-check.md +0 -42
- package/plugin-artifacts/codex/skills/build-loop/phases/ui-validation.md +0 -267
- package/plugin-artifacts/codex/skills/build-loop/references/advisor-dispatch-ladder.md +0 -62
- package/plugin-artifacts/codex/skills/build-loop/references/apple-native-planning.md +0 -439
- package/plugin-artifacts/codex/skills/build-loop/references/autonomous-and-per-commit-modes.md +0 -161
- package/plugin-artifacts/codex/skills/build-loop/references/capability-routing.md +0 -231
- package/plugin-artifacts/codex/skills/build-loop/references/codex-subagents.md +0 -106
- package/plugin-artifacts/codex/skills/build-loop/references/coordination.md +0 -161
- package/plugin-artifacts/codex/skills/build-loop/references/correction-aware-capture.md +0 -177
- package/plugin-artifacts/codex/skills/build-loop/references/experiment-results-template.md +0 -101
- package/plugin-artifacts/codex/skills/build-loop/references/independent-auditor.md +0 -72
- package/plugin-artifacts/codex/skills/build-loop/references/intent-capability-pack.md +0 -257
- package/plugin-artifacts/codex/skills/build-loop/references/intent-exploration-prompts.md +0 -96
- package/plugin-artifacts/codex/skills/build-loop/references/leadership.md +0 -72
- package/plugin-artifacts/codex/skills/build-loop/references/memory.md +0 -313
- package/plugin-artifacts/codex/skills/build-loop/references/modular-systems-pack.md +0 -96
- package/plugin-artifacts/codex/skills/build-loop/references/output-style.md +0 -222
- package/plugin-artifacts/codex/skills/build-loop/references/pay-it-forward-arch.md +0 -98
- package/plugin-artifacts/codex/skills/build-loop/references/phase-1-assess.md +0 -249
- package/plugin-artifacts/codex/skills/build-loop/references/phase-2-plan.md +0 -86
- package/plugin-artifacts/codex/skills/build-loop/references/phase-3-execute.md +0 -49
- package/plugin-artifacts/codex/skills/build-loop/references/phase-4-review.md +0 -341
- package/plugin-artifacts/codex/skills/build-loop/references/phase-5-iterate.md +0 -72
- package/plugin-artifacts/codex/skills/build-loop/references/phase-6-learn.md +0 -58
- package/plugin-artifacts/codex/skills/build-loop/references/recent-design-structures.md +0 -274
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/ASSESSMENT.md +0 -85
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/STANDALONE_TEST_RUN.md +0 -149
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/01-simple-bugfix.md +0 -32
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/02-ui-build-with-iteration.md +0 -48
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/03-multi-failure-escalation.md +0 -60
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/04-ui-build-ibr-absent.md +0 -51
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/05-refactor-navgator-absent.md +0 -71
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/06-recurring-bug-debugger-absent.md +0 -52
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/trace-comparison.md +0 -202
- package/plugin-artifacts/codex/skills/build-loop/references/self-recursive-dev.md +0 -77
- package/plugin-artifacts/codex/skills/build-loop/references/self-review.md +0 -234
- package/plugin-artifacts/codex/skills/build-loop/references/ui-io-contract.md +0 -116
- package/plugin-artifacts/codex/skills/build-loop/references/verify-dispatch.md +0 -85
- package/plugin-artifacts/codex/skills/build-loop/scanners/audit-design-rules.mjs +0 -476
- package/plugin-artifacts/codex/skills/build-loop/scanners/require-visual-evidence.mjs +0 -239
- package/plugin-artifacts/codex/skills/build-loop/templates/backlog-item.md +0 -35
- package/plugin-artifacts/codex/skills/build-loop/templates/codex-worker-prompt.md +0 -100
- package/plugin-artifacts/codex/skills/build-loop/templates/ui-subagent-prompt.md +0 -179
- package/plugin-artifacts/codex/skills/build-loop/templates/ux-fix-plan.md +0 -40
- package/scripts/build_codex_plugin_artifact.py +0 -321
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com>
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
"use strict";
|
|
5
|
+
|
|
6
|
+
const { randomUUID } = require("node:crypto");
|
|
7
|
+
const fs = require("node:fs");
|
|
8
|
+
const os = require("node:os");
|
|
9
|
+
const path = require("node:path");
|
|
10
|
+
const { spawn, spawnSync } = require("node:child_process");
|
|
11
|
+
|
|
12
|
+
const MAX_WORKERS = 8;
|
|
13
|
+
const MAX_DURATION_SECONDS = 600;
|
|
14
|
+
const TERM_GRACE_MS = 1500;
|
|
15
|
+
const POLL_MS = 25;
|
|
16
|
+
const ID_RE = /^[A-Za-z0-9][A-Za-z0-9._-]{0,79}$/;
|
|
17
|
+
|
|
18
|
+
function fail(message, code = 2) {
|
|
19
|
+
process.stderr.write(`build-loop-load-probe: ${message}\n`);
|
|
20
|
+
process.exit(code);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function parseNumber(raw, name, { min, max }) {
|
|
24
|
+
const value = Number(raw);
|
|
25
|
+
if (!Number.isFinite(value) || value < min || value > max) {
|
|
26
|
+
fail(`${name} must be between ${min} and ${max}`);
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function parseArgs(argv) {
|
|
32
|
+
const divider = argv.indexOf("--");
|
|
33
|
+
const own = divider === -1 ? argv : argv.slice(0, divider);
|
|
34
|
+
const command = divider === -1 ? [] : argv.slice(divider + 1);
|
|
35
|
+
const result = {
|
|
36
|
+
worker: false,
|
|
37
|
+
guardian: false,
|
|
38
|
+
json: false,
|
|
39
|
+
workers: 1,
|
|
40
|
+
durationSeconds: 30,
|
|
41
|
+
runId: null,
|
|
42
|
+
deadlineEpochMs: null,
|
|
43
|
+
command,
|
|
44
|
+
};
|
|
45
|
+
for (let index = 0; index < own.length; index += 1) {
|
|
46
|
+
const arg = own[index];
|
|
47
|
+
if (arg === "--worker") result.worker = true;
|
|
48
|
+
else if (arg === "--guardian") result.guardian = true;
|
|
49
|
+
else if (arg === "--json") result.json = true;
|
|
50
|
+
else if (arg === "--workers") result.workers = parseNumber(own[++index], "--workers", { min: 1, max: 10000 });
|
|
51
|
+
else if (arg === "--duration-seconds") result.durationSeconds = parseNumber(own[++index], "--duration-seconds", { min: 1, max: MAX_DURATION_SECONDS });
|
|
52
|
+
else if (arg === "--run-id") result.runId = own[++index];
|
|
53
|
+
else if (arg === "--deadline-epoch-ms") result.deadlineEpochMs = parseNumber(own[++index], "--deadline-epoch-ms", { min: 1, max: Number.MAX_SAFE_INTEGER });
|
|
54
|
+
else if (arg === "--help" || arg === "-h") {
|
|
55
|
+
process.stdout.write("Usage: build-loop-load-probe [--workers N] [--duration-seconds N] [--run-id ID] [--json] [-- command args...]\n");
|
|
56
|
+
process.exit(0);
|
|
57
|
+
} else fail(`unknown argument: ${arg}`);
|
|
58
|
+
}
|
|
59
|
+
if ((result.worker || result.guardian) && (!ID_RE.test(result.runId || "") || result.deadlineEpochMs === null)) fail("internal worker requires a run id and deadline");
|
|
60
|
+
if (!result.worker && !result.guardian && result.runId !== null) fail("--run-id is internal; the supervisor generates an opaque id");
|
|
61
|
+
if (result.guardian && result.command.length === 0) fail("guardian requires a command");
|
|
62
|
+
if (divider !== -1 && command.length === 0) fail("-- requires a command");
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function cacheRoot() {
|
|
67
|
+
if (process.platform === "darwin") {
|
|
68
|
+
return path.join(os.homedir(), "Library", "Caches", "com.rosslabs.build-loop", "processes");
|
|
69
|
+
}
|
|
70
|
+
return path.join(os.tmpdir(), `build-loop-${process.getuid?.() ?? "user"}`, "processes");
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function atomicWriteJson(file, value, { exclusive = false } = {}) {
|
|
74
|
+
fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
|
|
75
|
+
if (exclusive) {
|
|
76
|
+
const descriptor = fs.openSync(file, "wx", 0o600);
|
|
77
|
+
try { fs.writeFileSync(descriptor, `${JSON.stringify(value, null, 2)}\n`); }
|
|
78
|
+
finally { fs.closeSync(descriptor); }
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const temporary = `${file}.${process.pid}.tmp`;
|
|
82
|
+
fs.writeFileSync(temporary, `${JSON.stringify(value, null, 2)}\n`, { mode: 0o600 });
|
|
83
|
+
fs.renameSync(temporary, file);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function pruneReceipts(root, retentionDays = 7) {
|
|
87
|
+
const cutoff = Date.now() - retentionDays * 24 * 60 * 60 * 1000;
|
|
88
|
+
try {
|
|
89
|
+
for (const name of fs.readdirSync(root)) {
|
|
90
|
+
if (!/^[0-9a-f-]{36}\.json$/.test(name)) continue;
|
|
91
|
+
const file = path.join(root, name);
|
|
92
|
+
if (fs.statSync(file).mtimeMs < cutoff) fs.unlinkSync(file);
|
|
93
|
+
}
|
|
94
|
+
} catch (error) {
|
|
95
|
+
if (error.code !== "ENOENT") process.stderr.write(`build-loop-load-probe: receipt pruning skipped: ${error.message}\n`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function processIdentity(pid) {
|
|
100
|
+
const result = spawnSync("ps", ["-p", String(pid), "-o", "lstart=", "-o", "pgid=", "-o", "stat=", "-o", "command="], { encoding: "utf8" });
|
|
101
|
+
if (result.status !== 0 || !result.stdout.trim()) return null;
|
|
102
|
+
const line = result.stdout.trim();
|
|
103
|
+
const match = line.match(/^(.{24})\s+(\d+)\s+(\S+)\s+(.+)$/);
|
|
104
|
+
if (!match) return null;
|
|
105
|
+
return { startedAtOs: match[1].trim(), pgid: Number(match[2]), state: match[3], command: match[4] };
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function sleep(ms) {
|
|
109
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function workerMain(options) {
|
|
113
|
+
process.title = `bl-load-w-${options.runId.slice(-6)}`;
|
|
114
|
+
let accumulator = 0;
|
|
115
|
+
while (Date.now() < options.deadlineEpochMs) {
|
|
116
|
+
for (let index = 1; index <= 50000; index += 1) accumulator += Math.sqrt(index + accumulator % 17);
|
|
117
|
+
if (!Number.isFinite(accumulator)) accumulator = 0;
|
|
118
|
+
}
|
|
119
|
+
process.exit(0);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
async function waitForExit(children, deadlineMs) {
|
|
123
|
+
while (Date.now() < deadlineMs) {
|
|
124
|
+
if (children.every((entry) => entry.child.exitCode !== null || entry.child.signalCode !== null)) return;
|
|
125
|
+
await sleep(POLL_MS);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function stillOwned(entry) {
|
|
130
|
+
const current = processIdentity(entry.pid);
|
|
131
|
+
if (!current) return { owned: false, gone: true };
|
|
132
|
+
if (current.state.startsWith("Z")) return { owned: false, gone: true };
|
|
133
|
+
return {
|
|
134
|
+
owned: current.startedAtOs === entry.startedAtOs && current.pgid === entry.pgid && (current.command === entry.title || current.command === entry.initialCommand),
|
|
135
|
+
gone: false,
|
|
136
|
+
current,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function processGroupPids(pgid) {
|
|
141
|
+
const result = spawnSync("pgrep", ["-g", String(pgid)], { encoding: "utf8" });
|
|
142
|
+
if (result.status !== 0 && result.status !== 1) throw new Error(`could not inspect process group ${pgid}`);
|
|
143
|
+
return result.stdout.split(/\s+/).filter(Boolean).map(Number).filter((pid) => pid !== process.pid);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function pidStillInGroup(pid, pgid) {
|
|
147
|
+
const result = spawnSync("ps", ["-p", String(pid), "-o", "pgid="], { encoding: "utf8" });
|
|
148
|
+
return result.status === 0 && Number(result.stdout.trim()) === pgid;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
async function guardianMain(options) {
|
|
152
|
+
process.title = `bl-load-t-${options.runId.slice(-6)}`;
|
|
153
|
+
const pgid = process.pid;
|
|
154
|
+
let cleanupPromise = null;
|
|
155
|
+
let requestedSignal = null;
|
|
156
|
+
const target = spawn(options.command[0], options.command.slice(1), { stdio: "inherit" });
|
|
157
|
+
|
|
158
|
+
function cleanupGroup() {
|
|
159
|
+
if (cleanupPromise) return cleanupPromise;
|
|
160
|
+
cleanupPromise = (async () => {
|
|
161
|
+
let members = processGroupPids(pgid);
|
|
162
|
+
for (const pid of members) {
|
|
163
|
+
if (pidStillInGroup(pid, pgid)) {
|
|
164
|
+
try { process.kill(pid, "SIGTERM"); } catch (error) { if (error.code !== "ESRCH") throw error; }
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const termDeadline = Date.now() + TERM_GRACE_MS;
|
|
168
|
+
while (Date.now() < termDeadline && (members = processGroupPids(pgid)).length) await sleep(POLL_MS);
|
|
169
|
+
members = processGroupPids(pgid);
|
|
170
|
+
for (const pid of members) {
|
|
171
|
+
if (pidStillInGroup(pid, pgid)) {
|
|
172
|
+
try { process.kill(pid, "SIGKILL"); } catch (error) { if (error.code !== "ESRCH") throw error; }
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
const killDeadline = Date.now() + TERM_GRACE_MS;
|
|
176
|
+
while (Date.now() < killDeadline && processGroupPids(pgid).length) await sleep(POLL_MS);
|
|
177
|
+
const survivors = processGroupPids(pgid);
|
|
178
|
+
if (survivors.length) throw new Error(`target descendants remain: ${survivors.join(",")}`);
|
|
179
|
+
})();
|
|
180
|
+
return cleanupPromise;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
for (const signal of ["SIGTERM", "SIGINT", "SIGHUP"]) {
|
|
184
|
+
process.once(signal, async () => {
|
|
185
|
+
requestedSignal = signal;
|
|
186
|
+
try { await cleanupGroup(); process.exit(128 + (signal === "SIGTERM" ? 15 : signal === "SIGINT" ? 2 : 1)); }
|
|
187
|
+
catch (error) { process.stderr.write(`build-loop-load-probe guardian: ${error.message}\n`); process.exit(1); }
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
const parentWatch = setInterval(async () => {
|
|
191
|
+
if (process.ppid !== 1) return;
|
|
192
|
+
clearInterval(parentWatch);
|
|
193
|
+
try { await cleanupGroup(); process.exit(1); }
|
|
194
|
+
catch (error) { process.stderr.write(`build-loop-load-probe guardian: ${error.message}\n`); process.exit(1); }
|
|
195
|
+
}, 250);
|
|
196
|
+
|
|
197
|
+
const targetExit = await new Promise((resolve) => {
|
|
198
|
+
target.once("error", () => resolve(127));
|
|
199
|
+
target.once("exit", (code, signal) => resolve(code ?? (signal ? 128 : 1)));
|
|
200
|
+
});
|
|
201
|
+
clearInterval(parentWatch);
|
|
202
|
+
if (!requestedSignal) {
|
|
203
|
+
try { await cleanupGroup(); process.exit(targetExit); }
|
|
204
|
+
catch (error) { process.stderr.write(`build-loop-load-probe guardian: ${error.message}\n`); process.exit(1); }
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
async function supervisorMain(options) {
|
|
209
|
+
if (process.platform === "win32") fail("synthetic load supervision currently supports macOS and Linux only");
|
|
210
|
+
options.runId = randomUUID();
|
|
211
|
+
process.title = `bl-load-s-${options.runId.slice(-6)}`;
|
|
212
|
+
const cpuCount = Math.max(1, os.cpus().length);
|
|
213
|
+
const cpuCap = Math.max(1, cpuCount - 2);
|
|
214
|
+
const workerCount = Math.min(Math.floor(options.workers), cpuCap, MAX_WORKERS);
|
|
215
|
+
const deadlineEpochMs = Date.now() + Math.round(options.durationSeconds * 1000);
|
|
216
|
+
const receiptRoot = cacheRoot();
|
|
217
|
+
pruneReceipts(receiptRoot);
|
|
218
|
+
const receiptPath = path.join(receiptRoot, `${options.runId}.json`);
|
|
219
|
+
const children = [];
|
|
220
|
+
let target = null;
|
|
221
|
+
let cleanupPromise = null;
|
|
222
|
+
let cleanupErrors = [];
|
|
223
|
+
const receipt = {
|
|
224
|
+
schemaVersion: 1,
|
|
225
|
+
product: "build-loop",
|
|
226
|
+
purpose: "bounded-synthetic-cpu-load",
|
|
227
|
+
runId: options.runId,
|
|
228
|
+
state: "starting",
|
|
229
|
+
supervisor: { pid: process.pid, title: process.title },
|
|
230
|
+
requestedWorkers: Math.floor(options.workers),
|
|
231
|
+
admittedWorkers: workerCount,
|
|
232
|
+
startedAt: new Date().toISOString(),
|
|
233
|
+
deadlineAt: new Date(deadlineEpochMs).toISOString(),
|
|
234
|
+
workers: [],
|
|
235
|
+
};
|
|
236
|
+
atomicWriteJson(receiptPath, receipt, { exclusive: true });
|
|
237
|
+
|
|
238
|
+
function cleanup(reason) {
|
|
239
|
+
if (cleanupPromise) return cleanupPromise;
|
|
240
|
+
cleanupPromise = (async () => {
|
|
241
|
+
receipt.state = "stopping";
|
|
242
|
+
receipt.stopReason = reason;
|
|
243
|
+
atomicWriteJson(receiptPath, receipt);
|
|
244
|
+
|
|
245
|
+
// At the hard deadline, let workers finish their current bounded math
|
|
246
|
+
// chunk and deliver their exit event before attempting a signal. This
|
|
247
|
+
// avoids treating the brief running-to-zombie transition as ambiguity.
|
|
248
|
+
if (Date.now() >= deadlineEpochMs) {
|
|
249
|
+
await waitForExit(children, Date.now() + 250);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
for (const entry of children) {
|
|
253
|
+
if (entry.child.exitCode !== null || entry.child.signalCode !== null) continue;
|
|
254
|
+
const check = stillOwned(entry);
|
|
255
|
+
if (!check.gone && !check.owned) {
|
|
256
|
+
cleanupErrors.push(`refused TERM for ambiguous pid ${entry.pid}`);
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
if (check.owned) {
|
|
260
|
+
try { entry.child.kill("SIGTERM"); } catch (error) {
|
|
261
|
+
if (error.code !== "ESRCH") cleanupErrors.push(`TERM pid ${entry.pid}: ${error.message}`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
await waitForExit(children, Date.now() + TERM_GRACE_MS);
|
|
266
|
+
const survivors = children.filter((entry) => {
|
|
267
|
+
const check = stillOwned(entry);
|
|
268
|
+
return !check.gone && check.owned;
|
|
269
|
+
}).map((entry) => entry.pid);
|
|
270
|
+
if (survivors.length) cleanupErrors.push(`owned workers remain until hard deadline: ${survivors.join(",")}`);
|
|
271
|
+
receipt.state = cleanupErrors.length ? "cleanup-failed" : "ended";
|
|
272
|
+
receipt.endedAt = new Date().toISOString();
|
|
273
|
+
receipt.cleanup = { verifiedZeroSurvivors: survivors.length === 0, errors: cleanupErrors };
|
|
274
|
+
atomicWriteJson(receiptPath, receipt);
|
|
275
|
+
})();
|
|
276
|
+
return cleanupPromise;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
for (const signal of ["SIGTERM", "SIGINT", "SIGHUP"]) {
|
|
280
|
+
process.once(signal, async () => {
|
|
281
|
+
if (target && target.exitCode === null && target.signalCode === null) {
|
|
282
|
+
try { target.kill(signal); } catch (error) {
|
|
283
|
+
if (error.code !== "ESRCH") cleanupErrors.push(`target ${signal}: ${error.message}`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
await cleanup(`supervisor-${signal.toLowerCase()}`);
|
|
287
|
+
process.exit(cleanupErrors.length ? 1 : 128 + (signal === "SIGTERM" ? 15 : signal === "SIGINT" ? 2 : 1));
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
try {
|
|
292
|
+
for (let index = 0; index < workerCount; index += 1) {
|
|
293
|
+
const child = spawn(process.execPath, [__filename, "--worker", "--run-id", options.runId, "--deadline-epoch-ms", String(deadlineEpochMs)], {
|
|
294
|
+
detached: true,
|
|
295
|
+
stdio: "ignore",
|
|
296
|
+
});
|
|
297
|
+
let identity = null;
|
|
298
|
+
for (let attempt = 0; attempt < 10 && !identity; attempt += 1) {
|
|
299
|
+
identity = processIdentity(child.pid);
|
|
300
|
+
if (!identity) await sleep(10);
|
|
301
|
+
}
|
|
302
|
+
if (!identity) {
|
|
303
|
+
child.kill("SIGTERM");
|
|
304
|
+
throw new Error(`could not establish identity for worker pid ${child.pid}`);
|
|
305
|
+
}
|
|
306
|
+
const title = `bl-load-w-${options.runId.slice(-6)}`;
|
|
307
|
+
const entry = { child, pid: child.pid, pgid: identity.pgid, startedAtOs: identity.startedAtOs, initialCommand: identity.command, title };
|
|
308
|
+
children.push(entry);
|
|
309
|
+
try {
|
|
310
|
+
os.setPriority(child.pid, os.constants.priority.PRIORITY_BELOW_NORMAL);
|
|
311
|
+
} catch (error) {
|
|
312
|
+
throw new Error(`could not lower priority for worker pid ${child.pid}: ${error.message}`);
|
|
313
|
+
}
|
|
314
|
+
receipt.workers.push({ pid: entry.pid, pgid: entry.pgid, startedAtOs: entry.startedAtOs, title, priority: "below-normal" });
|
|
315
|
+
}
|
|
316
|
+
receipt.state = "running";
|
|
317
|
+
atomicWriteJson(receiptPath, receipt);
|
|
318
|
+
|
|
319
|
+
let commandExit = 0;
|
|
320
|
+
if (options.command.length) {
|
|
321
|
+
target = spawn(process.execPath, [__filename, "--guardian", "--run-id", options.runId, "--deadline-epoch-ms", String(deadlineEpochMs), "--", ...options.command], { stdio: "inherit", detached: true });
|
|
322
|
+
commandExit = await new Promise((resolve) => {
|
|
323
|
+
target.once("error", () => resolve(127));
|
|
324
|
+
target.once("exit", (code, signal) => resolve(code ?? (signal ? 128 : 1)));
|
|
325
|
+
});
|
|
326
|
+
} else {
|
|
327
|
+
await sleep(Math.max(0, deadlineEpochMs - Date.now()));
|
|
328
|
+
}
|
|
329
|
+
await cleanup(options.command.length ? "command-exit" : "deadline");
|
|
330
|
+
const output = { runId: options.runId, requestedWorkers: Math.floor(options.workers), admittedWorkers: workerCount, commandExit, receiptId: options.runId, cleanup: receipt.cleanup };
|
|
331
|
+
if (options.json) process.stdout.write(`${JSON.stringify(output)}\n`);
|
|
332
|
+
else process.stdout.write(`build-loop load probe ${options.runId}: ${workerCount} worker(s), zero survivors verified\n`);
|
|
333
|
+
process.exitCode = cleanupErrors.length ? 1 : commandExit;
|
|
334
|
+
} catch (error) {
|
|
335
|
+
cleanupErrors.push(error.message);
|
|
336
|
+
await cleanup("supervisor-error");
|
|
337
|
+
process.stderr.write(`build-loop-load-probe: ${error.message}\n`);
|
|
338
|
+
process.exitCode = 1;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
const options = parseArgs(process.argv.slice(2));
|
|
343
|
+
if (options.worker) workerMain(options);
|
|
344
|
+
else if (options.guardian) guardianMain(options);
|
|
345
|
+
else supervisorMain(options);
|
|
@@ -1,20 +1,42 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: build-loop
|
|
3
|
-
description: "
|
|
3
|
+
description: "The single Build Loop plugin entrypoint. Use when the user asks to run Build Loop or requests multi-step features, fixes, refactors, migrations, schema/API changes, debugging, optimization, research, repository maintenance, or closeout. Routes plain-language intent automatically without mode selection, including non-Git state isolation through the internal data-plane-worktrees workflow."
|
|
4
|
+
user-invocable: true
|
|
5
|
+
public-justification: "Codex has no commands surface, so a skill is the only way to expose an entrypoint on that host. This wrapper IS the Codex equivalent of /build-loop:run — it is the single public entrypoint, not one of many. The Claude-side skills stay hidden because Claude has commands/run.md to carry that role. Do not add a Claude-side twin of this file."
|
|
4
6
|
---
|
|
5
7
|
|
|
6
8
|
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
7
9
|
|
|
8
10
|
# Build Loop
|
|
9
11
|
|
|
10
|
-
This is the public Codex entrypoint.
|
|
11
|
-
|
|
12
|
+
This is the only public Codex entrypoint. Route the user's plain-language goal
|
|
13
|
+
through the canonical workflow without asking them to choose a mode or helper.
|
|
12
14
|
|
|
13
15
|
Load and follow the canonical workflow:
|
|
14
16
|
|
|
15
17
|
```text
|
|
16
|
-
|
|
18
|
+
../../skills/build-loop/SKILL.md
|
|
17
19
|
```
|
|
18
20
|
|
|
19
|
-
Use internal helper skills only through that workflow
|
|
20
|
-
directly from
|
|
21
|
+
Use internal helper skills only through that workflow. Read their files
|
|
22
|
+
directly from `../../skills/` when the canonical workflow asks for them.
|
|
23
|
+
|
|
24
|
+
Pointers written as `references/<name>.md` inside `skills/build-loop/SKILL.md`
|
|
25
|
+
resolve relative to `skills/build-loop/` — read them at
|
|
26
|
+
`../../skills/build-loop/references/<name>.md`, falling back to the repo-root
|
|
27
|
+
`../../references/<name>.md` when the skill's own directory has no such file.
|
|
28
|
+
|
|
29
|
+
## Completion gate
|
|
30
|
+
|
|
31
|
+
Before declaring a Codex Build Loop run complete:
|
|
32
|
+
|
|
33
|
+
- Integrate every validated run commit into the intended local target branch and
|
|
34
|
+
rerun the canonical verifier on that exact target state.
|
|
35
|
+
- For every run-created branch or worktree that has been merged, load
|
|
36
|
+
`../../references/phase-d-closeout.md` and close it with `collapse_run.py`
|
|
37
|
+
using `--strict --merged-only --owner-released`.
|
|
38
|
+
- Require `strict_success: true`, `bundle_verified: true`, `errors: []`, an
|
|
39
|
+
absent worktree path, and an absent temporary branch ref before saying
|
|
40
|
+
"done."
|
|
41
|
+
- Report the run as partial when any branch or worktree remains open without an
|
|
42
|
+
explicit retained disposition.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: feedback
|
|
3
|
+
description: Report a bug or send feedback about the build-loop plugin
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Report build-loop feedback
|
|
7
|
+
|
|
8
|
+
File the user's report as a GitHub issue on `tyroneross/build-loop`. Issues are this plugin's
|
|
9
|
+
support channel — the manifest carries no contact address by design.
|
|
10
|
+
|
|
11
|
+
## Steps
|
|
12
|
+
|
|
13
|
+
1. Ask what went wrong, if the user has not already said. One question, not a form.
|
|
14
|
+
2. Gather the context that makes a report actionable, without interrogating the user:
|
|
15
|
+
- plugin version from `.claude-plugin/plugin.json`
|
|
16
|
+
- `claude --version`
|
|
17
|
+
- `uname -sm`
|
|
18
|
+
- which command or skill misbehaved, and what it did instead
|
|
19
|
+
3. Show the user the exact title and body you intend to file. Their report, their words.
|
|
20
|
+
4. Create it:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
gh issue create --repo tyroneross/build-loop \
|
|
24
|
+
--title "<one line: what broke>" \
|
|
25
|
+
--body "<what happened / what was expected / steps / versions>"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
5. If `gh` is missing or unauthenticated, do not fail — print the URL so the user
|
|
29
|
+
can open it in a browser: https://github.com/tyroneross/build-loop/issues/new
|
|
30
|
+
|
|
31
|
+
6. Report the resulting issue URL back to the user.
|
|
32
|
+
|
|
33
|
+
## Rules
|
|
34
|
+
|
|
35
|
+
- A GitHub issue is public. Redact secrets, tokens, absolute home paths, and any
|
|
36
|
+
file contents the user has not seen before sending.
|
|
37
|
+
- Never file without showing the user the body first.
|
|
@@ -5,22 +5,9 @@
|
|
|
5
5
|
* Improves incident quality by ensuring all critical fields are filled.
|
|
6
6
|
*/
|
|
7
7
|
import type { Incident } from './types';
|
|
8
|
+
export { calculateQualityScore, generateQualityFeedback } from './quality';
|
|
8
9
|
/**
|
|
9
10
|
* Build a complete incident using interactive prompts
|
|
10
11
|
*/
|
|
11
12
|
export declare function buildIncidentInteractive(baseIncident: Partial<Incident>): Promise<Incident>;
|
|
12
|
-
/**
|
|
13
|
-
* Calculate overall quality score for an incident
|
|
14
|
-
*
|
|
15
|
-
* Scoring rubric:
|
|
16
|
-
* - Root cause analysis: 30% (description length + confidence)
|
|
17
|
-
* - Fix details: 30% (approach + changes documented)
|
|
18
|
-
* - Verification: 20% (verification status)
|
|
19
|
-
* - Documentation: 20% (tags + prevention advice)
|
|
20
|
-
*/
|
|
21
|
-
export declare function calculateQualityScore(incident: Incident | Partial<Incident>): number;
|
|
22
|
-
/**
|
|
23
|
-
* Generate quality feedback text
|
|
24
|
-
*/
|
|
25
|
-
export declare function generateQualityFeedback(incident: Incident): string;
|
|
26
13
|
//# sourceMappingURL=interactive-verifier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-verifier.d.ts","sourceRoot":"","sources":["../../src/interactive-verifier.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAA4D,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"interactive-verifier.d.ts","sourceRoot":"","sources":["../../src/interactive-verifier.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAA4D,MAAM,SAAS,CAAC;AAGlG,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAE3E;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAyDnB"}
|
|
@@ -11,10 +11,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
11
11
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.generateQualityFeedback = exports.calculateQualityScore = void 0;
|
|
14
15
|
exports.buildIncidentInteractive = buildIncidentInteractive;
|
|
15
|
-
exports.calculateQualityScore = calculateQualityScore;
|
|
16
|
-
exports.generateQualityFeedback = generateQualityFeedback;
|
|
17
16
|
const prompts_1 = __importDefault(require("prompts"));
|
|
17
|
+
const quality_1 = require("./quality");
|
|
18
|
+
var quality_2 = require("./quality");
|
|
19
|
+
Object.defineProperty(exports, "calculateQualityScore", { enumerable: true, get: function () { return quality_2.calculateQualityScore; } });
|
|
20
|
+
Object.defineProperty(exports, "generateQualityFeedback", { enumerable: true, get: function () { return quality_2.generateQualityFeedback; } });
|
|
18
21
|
/**
|
|
19
22
|
* Build a complete incident using interactive prompts
|
|
20
23
|
*/
|
|
@@ -36,7 +39,7 @@ async function buildIncidentInteractive(baseIncident) {
|
|
|
36
39
|
incident.files_changed = await collectFilesChanged();
|
|
37
40
|
}
|
|
38
41
|
// 6. Calculate quality score
|
|
39
|
-
const qualityScore = calculateQualityScore(incident);
|
|
42
|
+
const qualityScore = (0, quality_1.calculateQualityScore)(incident);
|
|
40
43
|
// Update completeness
|
|
41
44
|
incident.completeness = {
|
|
42
45
|
symptom: !!incident.symptom && incident.symptom.length >= 20,
|
|
@@ -322,114 +325,4 @@ async function collectFilesChanged() {
|
|
|
322
325
|
});
|
|
323
326
|
return files || [];
|
|
324
327
|
}
|
|
325
|
-
/**
|
|
326
|
-
* Calculate overall quality score for an incident
|
|
327
|
-
*
|
|
328
|
-
* Scoring rubric:
|
|
329
|
-
* - Root cause analysis: 30% (description length + confidence)
|
|
330
|
-
* - Fix details: 30% (approach + changes documented)
|
|
331
|
-
* - Verification: 20% (verification status)
|
|
332
|
-
* - Documentation: 20% (tags + prevention advice)
|
|
333
|
-
*/
|
|
334
|
-
function calculateQualityScore(incident) {
|
|
335
|
-
let score = 0.0;
|
|
336
|
-
// Root cause analysis (0.3 max)
|
|
337
|
-
if (incident.root_cause) {
|
|
338
|
-
// Description quality (0.15 max)
|
|
339
|
-
const descLength = incident.root_cause.description?.length || 0;
|
|
340
|
-
if (descLength >= 50)
|
|
341
|
-
score += 0.10;
|
|
342
|
-
if (descLength >= 100)
|
|
343
|
-
score += 0.05;
|
|
344
|
-
// Confidence (0.15 max)
|
|
345
|
-
const confidence = incident.root_cause.confidence || 0;
|
|
346
|
-
if (confidence >= 0.7)
|
|
347
|
-
score += 0.10;
|
|
348
|
-
if (confidence >= 0.9)
|
|
349
|
-
score += 0.05;
|
|
350
|
-
}
|
|
351
|
-
// Fix details (0.3 max)
|
|
352
|
-
if (incident.fix) {
|
|
353
|
-
// Approach documented (0.15 max)
|
|
354
|
-
if (incident.fix.approach && incident.fix.approach.length >= 20) {
|
|
355
|
-
score += 0.15;
|
|
356
|
-
}
|
|
357
|
-
// Changes documented (0.15 max)
|
|
358
|
-
const changesCount = incident.fix.changes?.length || 0;
|
|
359
|
-
if (changesCount >= 1)
|
|
360
|
-
score += 0.10;
|
|
361
|
-
if (changesCount >= 3)
|
|
362
|
-
score += 0.05;
|
|
363
|
-
}
|
|
364
|
-
// Verification (0.2 max)
|
|
365
|
-
if (incident.verification) {
|
|
366
|
-
if (incident.verification.status === 'verified')
|
|
367
|
-
score += 0.15;
|
|
368
|
-
else if (incident.verification.status === 'partial')
|
|
369
|
-
score += 0.08;
|
|
370
|
-
// Additional verification details (0.05 max)
|
|
371
|
-
if (incident.verification.regression_tests_passed)
|
|
372
|
-
score += 0.025;
|
|
373
|
-
if (incident.verification.user_journey_tested)
|
|
374
|
-
score += 0.025;
|
|
375
|
-
}
|
|
376
|
-
// Documentation (0.2 max)
|
|
377
|
-
const tagsCount = incident.tags?.length || 0;
|
|
378
|
-
if (tagsCount >= 2)
|
|
379
|
-
score += 0.05;
|
|
380
|
-
if (tagsCount >= 3)
|
|
381
|
-
score += 0.05;
|
|
382
|
-
if (tagsCount >= 5)
|
|
383
|
-
score += 0.05;
|
|
384
|
-
// Prevention advice
|
|
385
|
-
if (incident.prevention)
|
|
386
|
-
score += 0.05;
|
|
387
|
-
return Math.min(score, 1.0); // Cap at 1.0
|
|
388
|
-
}
|
|
389
|
-
/**
|
|
390
|
-
* Generate quality feedback text
|
|
391
|
-
*/
|
|
392
|
-
function generateQualityFeedback(incident) {
|
|
393
|
-
const score = calculateQualityScore(incident);
|
|
394
|
-
const percentage = (score * 100).toFixed(0);
|
|
395
|
-
const feedback = [];
|
|
396
|
-
feedback.push(`Overall Quality: ${percentage}%`);
|
|
397
|
-
if (score >= 0.9) {
|
|
398
|
-
feedback.push('✅ Excellent - This incident is well documented and highly reusable.');
|
|
399
|
-
}
|
|
400
|
-
else if (score >= 0.75) {
|
|
401
|
-
feedback.push('✅ Good - This incident has sufficient detail for future reference.');
|
|
402
|
-
}
|
|
403
|
-
else if (score >= 0.5) {
|
|
404
|
-
feedback.push('⚠️ Fair - Consider adding more details to improve reusability.');
|
|
405
|
-
}
|
|
406
|
-
else {
|
|
407
|
-
feedback.push('❌ Poor - This incident needs more detail to be useful.');
|
|
408
|
-
}
|
|
409
|
-
// Specific improvement suggestions
|
|
410
|
-
const suggestions = [];
|
|
411
|
-
if (!incident.root_cause?.description || incident.root_cause.description.length < 50) {
|
|
412
|
-
suggestions.push('- Add more detail to root cause analysis');
|
|
413
|
-
}
|
|
414
|
-
if ((incident.root_cause?.confidence || 0) < 0.7) {
|
|
415
|
-
suggestions.push('- Increase confidence score if diagnosis is clear');
|
|
416
|
-
}
|
|
417
|
-
if (!incident.fix?.approach || incident.fix.approach.length < 20) {
|
|
418
|
-
suggestions.push('- Document the fix approach more thoroughly');
|
|
419
|
-
}
|
|
420
|
-
if ((incident.fix?.changes?.length || 0) === 0) {
|
|
421
|
-
suggestions.push('- Document specific file changes');
|
|
422
|
-
}
|
|
423
|
-
if (incident.verification?.status !== 'verified') {
|
|
424
|
-
suggestions.push('- Verify the fix works before storing');
|
|
425
|
-
}
|
|
426
|
-
if ((incident.tags?.length || 0) < 3) {
|
|
427
|
-
suggestions.push('- Add more tags for better categorization');
|
|
428
|
-
}
|
|
429
|
-
if (suggestions.length > 0) {
|
|
430
|
-
feedback.push('\nSuggestions for improvement:');
|
|
431
|
-
feedback.push(...suggestions);
|
|
432
|
-
}
|
|
433
|
-
return feedback.join('\n');
|
|
434
|
-
}
|
|
435
328
|
//# sourceMappingURL=interactive-verifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-verifier.js","sourceRoot":"","sources":["../../src/interactive-verifier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interactive-verifier.js","sourceRoot":"","sources":["../../src/interactive-verifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Incident } from './types';
|
|
2
|
+
/** Shared incident quality scoring, synced from Coding Debugger v1.9.0. */
|
|
3
|
+
export declare function calculateQualityScore(incident: Incident | Partial<Incident>): number;
|
|
4
|
+
export declare function generateQualityFeedback(incident: Incident): string;
|
|
5
|
+
//# sourceMappingURL=quality.d.ts.map
|