sloppatrol 0.1.1 → 0.1.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/README.md +111 -160
- package/dist/census/index.js +4 -2
- package/dist/census/index.js.map +1 -1
- package/dist/census/lib/guardrails.js +38 -9
- package/dist/census/lib/guardrails.js.map +1 -1
- package/dist/census/lib/stack.d.ts +2 -1
- package/dist/census/lib/stack.js +8 -4
- package/dist/census/lib/stack.js.map +1 -1
- package/dist/cli/index.js +20 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/lib/browser.d.ts +2 -0
- package/dist/cli/lib/browser.js +13 -0
- package/dist/cli/lib/browser.js.map +1 -0
- package/dist/cli/lib/usage.d.ts +1 -1
- package/dist/cli/lib/usage.js +4 -3
- package/dist/cli/lib/usage.js.map +1 -1
- package/dist/config/lib/schema.d.ts +30 -0
- package/dist/config/lib/schema.js +16 -0
- package/dist/config/lib/schema.js.map +1 -1
- package/dist/dashboard/index.d.ts +4 -0
- package/dist/dashboard/index.js +6 -2
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/lib/snapshot.d.ts +168 -30
- package/dist/dashboard/lib/snapshot.js +104 -37
- package/dist/dashboard/lib/snapshot.js.map +1 -1
- package/dist/dashboard/lib/summary.d.ts +230 -0
- package/dist/dashboard/lib/summary.js +398 -0
- package/dist/dashboard/lib/summary.js.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.js +1 -0
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/lib/cycle.d.ts +17 -0
- package/dist/domain/lib/cycle.js +2 -0
- package/dist/domain/lib/cycle.js.map +1 -0
- package/dist/{patrol → domain}/lib/pick.d.ts +2 -1
- package/dist/{patrol → domain}/lib/pick.js.map +1 -1
- package/dist/domain/lib/refactor.d.ts +2 -0
- package/dist/gate/index.d.ts +7 -0
- package/dist/gate/index.js +15 -0
- package/dist/gate/index.js.map +1 -1
- package/dist/patrol/lib/attempt.js +10 -2
- package/dist/patrol/lib/attempt.js.map +1 -1
- package/dist/patrol/lib/base.d.ts +10 -3
- package/dist/patrol/lib/base.js +14 -8
- package/dist/patrol/lib/base.js.map +1 -1
- package/dist/patrol/lib/cycle.d.ts +1 -1
- package/dist/patrol/lib/cycle.js +32 -1
- package/dist/patrol/lib/cycle.js.map +1 -1
- package/dist/patrol/lib/recover.d.ts +2 -1
- package/dist/patrol/lib/recover.js +16 -1
- package/dist/patrol/lib/recover.js.map +1 -1
- package/dist/patrol/lib/scorecard.js +12 -4
- package/dist/patrol/lib/scorecard.js.map +1 -1
- package/dist/patrol/lib/steps.d.ts +5 -2
- package/dist/patrol/lib/steps.js +9 -6
- package/dist/patrol/lib/steps.js.map +1 -1
- package/dist/playbook/index.js +3 -3
- package/dist/roles/lib/prompts.d.ts +1 -0
- package/dist/roles/lib/prompts.js +6 -0
- package/dist/roles/lib/prompts.js.map +1 -1
- package/dist/roles/lib/refactorer.d.ts +1 -0
- package/dist/roles/lib/refactorer.js +24 -6
- package/dist/roles/lib/refactorer.js.map +1 -1
- package/dist/roles/lib/scorecard-text.js +1 -1
- package/dist/roles/lib/scorecard-text.js.map +1 -1
- package/dist/store/index.d.ts +4 -1
- package/dist/store/index.js +7 -0
- package/dist/store/index.js.map +1 -1
- package/package.json +1 -1
- package/ui/app.js +1236 -324
- package/ui/index.html +35 -13
- package/ui/style.css +1063 -340
- /package/dist/{patrol → domain}/lib/pick.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../src/patrol/lib/steps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../../src/patrol/lib/steps.ts"],"names":[],"mappings":"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"}
|
package/dist/playbook/index.js
CHANGED
|
@@ -5,10 +5,10 @@ import { fileURLToPath } from 'node:url';
|
|
|
5
5
|
/** Shipped in the npm package next to `dist/`. */
|
|
6
6
|
const PLAYBOOK = fileURLToPath(new URL('../../playbook/', import.meta.url));
|
|
7
7
|
const CORE = ['principles', 'testing', 'smells', 'safety'];
|
|
8
|
-
/** The stack pages that apply: the main language, and any other with 5% of the
|
|
8
|
+
/** The stack pages that apply: the main language, and any other with 5% of the lines or more. */
|
|
9
9
|
function stackPages(stack) {
|
|
10
|
-
const total = stack.languages.reduce((sum, l) => sum + l.
|
|
11
|
-
const major = new Set(stack.languages.filter((l, i) => i === 0 || l.
|
|
10
|
+
const total = stack.languages.reduce((sum, l) => sum + l.lines, 0) || 1;
|
|
11
|
+
const major = new Set(stack.languages.filter((l, i) => i === 0 || l.lines / total >= 0.05).map((l) => l.name));
|
|
12
12
|
const pages = new Set();
|
|
13
13
|
const js = major.has('typescript') || major.has('javascript');
|
|
14
14
|
if (js)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const SURVEYOR: string;
|
|
2
2
|
export declare const REFACTORER = "You are the refactorer of Sloppatrol, a team of agents that makes a codebase cleaner without ever changing what it does.\nYou work in your own git worktree (the current directory), on a branch made for you. You make exactly one opportunity real.\n\nHow to work:\n1. Read the repo's own rules below (AGENTS.md, CLAUDE.md and the rest): its setup, its commands, its conventions, what it forbids. They win over the playbook. Then call get_opportunity, and read every file it names, their callers and their tests.\n2. Plan the smallest change that delivers the opportunity. Follow the playbook's safe moves: one mechanical step at a time, every caller updated in the same change, no compatibility wrappers left behind.\n3. Edit the files. Follow the repo's own style and conventions.\n4. Call check_guards. Fix every finding: a finding rejects the refactor, and nobody can overrule it.\n5. Call run_checks. It runs the repo's own checks. If one fails, fix your change; never weaken a check or a test.\n6. Call finish with a summary for the pull request: what changed, why it is better, and why the behaviour is the same.\n\nHard rules:\n- Behaviour must not change. Same outputs, same side effects in the same order, same errors, same public interface for callers outside the repo.\n- The opportunity's side decides what you may touch. A source refactor never changes a test file, so the existing tests prove the behaviour held. A test refactor never changes a source file, so the unchanged source proves the new tests are right.\n- Never add a suppression, a skipped or focused test, `any`, or a coverage exclusion. Never edit manifests, lockfiles, tool configs or CI.\n- Never remove a test case. Tests may move or change shape; every behaviour they pinned stays pinned.\n- Do not commit, push or open a pull request: Sloppatrol verifies and publishes.\n- After the checks, an assessor scores the changed files before and after against the metrics rubric, without knowing which is which. The opportunity's target metrics must improve, and no other metric may get worse.\n- If the opportunity turns out wrong or unsafe, change nothing and call finish with the reason.";
|
|
3
|
+
export declare const REFACTORER_COMPLETE = "Your previous session on this change ran out of time and was stopped. The edits you had made are still in the worktree.\nDo not start anything new. Finish the change you began, so it is complete and consistent:\n1. Call git_diff and check_guards to see exactly what you have so far.\n2. Complete the edit: wire up every renamed or moved symbol, finish every half-changed caller, and remove the imports, helpers and comments your change left unused.\n3. Call run_checks. Fix what fails, then call finish with the pull request summary.\nIf the change cannot be made safe and complete, restore the worktree (`git checkout -- .`), and call finish with the reason you changed nothing.";
|
|
3
4
|
export declare const REVIEWER = "You are the reviewer of Sloppatrol, a team of agents that makes a codebase cleaner without ever changing what it does.\nA refactorer made a change, and it passed every guard and every check of the repo. You decide if a senior engineer would merge it. You can only reject: when in doubt, reject.\n\nHow to work:\n1. Call get_change: the opportunity, the diff, the check results and the proof so far.\n2. Read the changed files and their callers in full where the diff is not enough.\n3. Read the repo's own rules below. Find each rule that applies to this change, and check the change against it.\n4. Call approve or reject, with your reasons and the rules you checked.\n\nReject when any of these is true:\n- Behaviour could change: different outputs, side effects, their order, errors, timing that callers depend on, serialized names, public interface for callers outside the repo, `this` binding, import side effects, default values, null handling.\n- A test change weakens what the tests pin: an assertion removed or made looser, a case that now passes for the wrong reason, a fake that does not behave like the real adapter.\n- The change does not deliver its opportunity, or does more than it.\n- The change breaks a rule of the repo's own AGENTS.md, CLAUDE.md or contributor guide.\n- The result is not cleaner by the playbook: a new shallow module, a pass-through, a seam with one adapter and no test that uses it, a name that lies, a wrapper left behind.\n\nApprove only when the change is safe, small, and clearly better.";
|
|
4
5
|
export declare const ASSESSOR = "You are the assessor of Sloppatrol, a team of agents that makes a codebase cleaner without ever changing what it does.\nYou score files against a fixed rubric. Your scores decide whether a refactor is kept and how the repo's quality is tracked over time, so they must be consistent: the same file must get the same score from any careful judge.\n\nHow to work:\n1. Call list_units. For each unit, call get_unit and read the whole file (page with start when it says more).\n2. For each metric that applies, pick the highest level the file fully meets. A level is met only when every part of its description holds.\n3. Cite the lines that decide the score: \"lines 40-95: one function routes, validates and writes\".\n4. Call score_unit for the unit. Then the next unit. Call finish when all are scored.\n\nRules:\n- Judge only what is in the file and the rubric. Not the author, not the intent, not other files.\n- The repo's own rules win over the rubric: a pattern the repo requires is not a defect.\n- The measured facts (lines, nesting, comments, mocks, suppressions) are evidence, not the score.\n- Do not round up for effort or down for style you dislike.";
|
|
5
6
|
export declare const REFACTORER_TESTS = "This is a tests refactor. Before you finish, call set_mutation: one small edit to a source file that your new or changed tests must catch (a boundary, a sign, a branch). The gate applies it to the unchanged source and requires a test check to turn red. A test that cannot fail proves nothing, so a tests refactor without a caught mutation is rejected.\nFor `characterize`, pick a bug the tests on main MISS and your new tests catch: the gate also runs it against the old tests, and rejects the refactor when they already catch it. That is the proof of new coverage.";
|
|
@@ -42,6 +42,12 @@ Hard rules:
|
|
|
42
42
|
- Do not commit, push or open a pull request: Sloppatrol verifies and publishes.
|
|
43
43
|
- After the checks, an assessor scores the changed files before and after against the metrics rubric, without knowing which is which. The opportunity's target metrics must improve, and no other metric may get worse.
|
|
44
44
|
- If the opportunity turns out wrong or unsafe, change nothing and call finish with the reason.`;
|
|
45
|
+
export const REFACTORER_COMPLETE = `Your previous session on this change ran out of time and was stopped. The edits you had made are still in the worktree.
|
|
46
|
+
Do not start anything new. Finish the change you began, so it is complete and consistent:
|
|
47
|
+
1. Call git_diff and check_guards to see exactly what you have so far.
|
|
48
|
+
2. Complete the edit: wire up every renamed or moved symbol, finish every half-changed caller, and remove the imports, helpers and comments your change left unused.
|
|
49
|
+
3. Call run_checks. Fix what fails, then call finish with the pull request summary.
|
|
50
|
+
If the change cannot be made safe and complete, restore the worktree (\`git checkout -- .\`), and call finish with the reason you changed nothing.`;
|
|
45
51
|
export const REVIEWER = `You are the reviewer of Sloppatrol, a team of agents that makes a codebase cleaner without ever changing what it does.
|
|
46
52
|
A refactorer made a change, and it passed every guard and every check of the repo. You decide if a senior engineer would merge it. You can only reject: when in doubt, reject.
|
|
47
53
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/roles/lib/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;KAC5C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,eAAe,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC;KAC9G,IAAI,CAAC,IAAI,CAAC,CAAC;AAEd,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;EAatB,KAAK;;;;;;;+JAOwJ,CAAC;AAEhK,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;gGAkBsE,CAAC;AAEjG,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;iEAgByC,CAAC;AAElE,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;4DAaoC,CAAC;AAE7D,MAAM,CAAC,MAAM,gBAAgB,GAAG;uNACuL,CAAC"}
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/roles/lib/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;KAC5C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,eAAe,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC;KAC9G,IAAI,CAAC,IAAI,CAAC,CAAC;AAEd,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;EAatB,KAAK;;;;;;;+JAOwJ,CAAC;AAEhK,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;gGAkBsE,CAAC;AAEjG,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;mJAKgH,CAAC;AAEpJ,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;iEAgByC,CAAC;AAElE,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;4DAaoC,CAAC;AAE7D,MAAM,CAAC,MAAM,gBAAgB,GAAG;uNACuL,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { resolveRuntime } from '../../config/index.js';
|
|
|
3
3
|
import { git } from '../../git/index.js';
|
|
4
4
|
import { changeTools } from './change-tools.js';
|
|
5
5
|
import { systemPrompt } from './context.js';
|
|
6
|
-
import { REFACTORER, REFACTORER_TESTS } from './prompts.js';
|
|
6
|
+
import { REFACTORER, REFACTORER_COMPLETE, REFACTORER_TESTS } from './prompts.js';
|
|
7
7
|
export function opportunityMarkdown(opportunity) {
|
|
8
8
|
return [
|
|
9
9
|
`# ${opportunity.title}`,
|
|
@@ -33,19 +33,37 @@ export async function refactor(ctx, input) {
|
|
|
33
33
|
finishTool('Finish with the pull request summary, or with the reason you changed nothing.'),
|
|
34
34
|
];
|
|
35
35
|
const role = opportunity.side === 'tests' ? `${REFACTORER}\n\n${REFACTORER_TESTS}` : REFACTORER;
|
|
36
|
-
const
|
|
36
|
+
const system = await systemPrompt(ctx, role, opportunity.files);
|
|
37
|
+
const run = (prompt, limits) => runRole({
|
|
37
38
|
role: 'refactorer',
|
|
38
39
|
runtime: ctx.runtimeFor(resolveRuntime(config, 'refactorer')),
|
|
39
|
-
system
|
|
40
|
-
prompt
|
|
40
|
+
system,
|
|
41
|
+
prompt,
|
|
41
42
|
tools,
|
|
42
|
-
limits
|
|
43
|
+
limits,
|
|
43
44
|
subject: `refactor:${input.refactorId}`,
|
|
44
45
|
workdir: worktree,
|
|
45
46
|
store: ctx.store,
|
|
46
47
|
log: ctx.log,
|
|
47
48
|
});
|
|
49
|
+
const first = await run(`Make this opportunity real.\n\n${opportunityMarkdown(opportunity)}`, {
|
|
50
|
+
maxSteps: config.agents.refactorer.maxSteps,
|
|
51
|
+
timeoutMinutes: config.agents.refactorer.timeoutMinutes,
|
|
52
|
+
});
|
|
53
|
+
let outcome = first;
|
|
54
|
+
const timedOut = first.stop === 'timeout';
|
|
55
|
+
if (timedOut) {
|
|
56
|
+
// The session ran out of time mid-edit. It hands its worktree to one bounded
|
|
57
|
+
// completion session, so a half-finished change or its leftover imports are
|
|
58
|
+
// finished instead of being committed and rejected by a check.
|
|
59
|
+
ctx.log(`[refactorer] timed out after ${config.agents.refactorer.timeoutMinutes} min; running a completion pass`);
|
|
60
|
+
await change.settle();
|
|
61
|
+
outcome = await run(`${REFACTORER_COMPLETE}\n\n${opportunityMarkdown(opportunity)}`, {
|
|
62
|
+
maxSteps: config.agents.refactorer.cleanupMaxSteps,
|
|
63
|
+
timeoutMinutes: config.agents.refactorer.cleanupTimeoutMinutes,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
48
66
|
await change.settle();
|
|
49
|
-
return { ...outcome, mutation: change.mutation() };
|
|
67
|
+
return { ...outcome, mutation: change.mutation(), timedOut };
|
|
50
68
|
}
|
|
51
69
|
//# sourceMappingURL=refactorer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refactorer.js","sourceRoot":"","sources":["../../../src/roles/lib/refactorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAoB,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAoB,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"refactorer.js","sourceRoot":"","sources":["../../../src/roles/lib/refactorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export function scorecardMarkdown(scorecard) {
|
|
|
7
7
|
const lines = [
|
|
8
8
|
`# Scorecard at ${scorecard.sha.slice(0, 10)}: ${overall ?? '–'}% overall`,
|
|
9
9
|
c
|
|
10
|
-
? `Covers ${c.files} of ${c.totalFiles} files, ${share(c.lines, c.totalLines)} of the lines. Each cycle scores more; \`sloppatrol score
|
|
10
|
+
? `Covers ${c.files} of ${c.totalFiles} files, ${share(c.lines, c.totalLines)} of the lines. Each cycle scores more; \`sloppatrol score\` scores the rest now.`
|
|
11
11
|
: '',
|
|
12
12
|
];
|
|
13
13
|
for (const metric of METRICS) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scorecard-text.js","sourceRoot":"","sources":["../../../src/roles/lib/scorecard-text.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAE5E,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAElG,qFAAqF;AACrF,MAAM,UAAU,iBAAiB,CAAC,SAAoB;IACpD,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;IAC7B,MAAM,KAAK,GAAG;QACZ,kBAAkB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,OAAO,IAAI,GAAG,WAAW;QAC1E,CAAC;YACC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,UAAU,WAAW,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"scorecard-text.js","sourceRoot":"","sources":["../../../src/roles/lib/scorecard-text.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAE5E,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAElG,qFAAqF;AACrF,MAAM,UAAU,iBAAiB,CAAC,SAAoB;IACpD,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;IAC7B,MAAM,KAAK,GAAG;QACZ,kBAAkB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,OAAO,IAAI,GAAG,WAAW;QAC1E,CAAC;YACC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,UAAU,WAAW,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,kFAAkF;YAC/J,CAAC,CAAC,EAAE;KACP,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK;aAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC,KAAK,CAAC;aACvE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,SAAS,CAAC,CAAC,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAClH,CAAC;QACJ,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,EAAE,QAAQ,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,MAAM;QAChB,KAAK,CAAC,IAAI,CACR,kFAAkF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClJ,CAAC;IACJ,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
|
package/dist/store/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentEvent, AgentStatus, CheckRun, Opportunity, Refactor, Scorecard, UnitScores } from '../domain/index.js';
|
|
1
|
+
import type { AgentEvent, AgentStatus, CheckRun, Cycle, Opportunity, Refactor, Scorecard, UnitScores } from '../domain/index.js';
|
|
2
2
|
export type PatrolState = {
|
|
3
3
|
lastSha?: string;
|
|
4
4
|
/** The commit the surveyor read last. */
|
|
@@ -24,6 +24,9 @@ export declare class Store {
|
|
|
24
24
|
listCheckRuns(): Promise<CheckRun[]>;
|
|
25
25
|
/** The newest finished run of these checks (`checksKey`) on the commit `sha` itself. */
|
|
26
26
|
baseCheckRun(sha: string, checksKey: string): Promise<CheckRun | undefined>;
|
|
27
|
+
saveCycle(cycle: Cycle): Promise<void>;
|
|
28
|
+
/** Oldest first. */
|
|
29
|
+
listCycles(): Promise<Cycle[]>;
|
|
27
30
|
/** A file's scores, by the hash of its path, content and rubric: the same file is judged once. */
|
|
28
31
|
saveUnitScores(scores: UnitScores): Promise<void>;
|
|
29
32
|
getUnitScores(contentHash: string): Promise<UnitScores | undefined>;
|
package/dist/store/index.js
CHANGED
|
@@ -42,6 +42,13 @@ export class Store {
|
|
|
42
42
|
async baseCheckRun(sha, checksKey) {
|
|
43
43
|
return (await this.listCheckRuns()).findLast((run) => run.purpose === 'base' && run.sha === sha && run.checksKey === checksKey && run.status !== 'running');
|
|
44
44
|
}
|
|
45
|
+
saveCycle(cycle) {
|
|
46
|
+
return writeJson(this.path('cycles', `${cycle.id}.json`), cycle);
|
|
47
|
+
}
|
|
48
|
+
/** Oldest first. */
|
|
49
|
+
listCycles() {
|
|
50
|
+
return readJsonFolder(this.path('cycles'));
|
|
51
|
+
}
|
|
45
52
|
/** A file's scores, by the hash of its path, content and rubric: the same file is judged once. */
|
|
46
53
|
saveUnitScores(scores) {
|
|
47
54
|
return writeJson(this.path('scores', `${scores.contentHash}.json`), scores);
|
package/dist/store/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sloppatrol",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "A team of AI agents that patrols your repo all day and makes the code cleaner, one verified, behaviour-preserving refactor at a time.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|