@farmslot/recipe-cli 0.18.4 → 0.19.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/CHANGELOG.md +8 -0
- package/dist/harness/commands/checklist.d.ts.map +1 -1
- package/dist/harness/commands/checklist.js +5 -0
- package/dist/harness/commands/checklist.js.map +1 -1
- package/dist/harness/commands/recipe-quality.d.ts +2 -0
- package/dist/harness/commands/recipe-quality.d.ts.map +1 -1
- package/dist/harness/commands/recipe-quality.js +14 -3
- package/dist/harness/commands/recipe-quality.js.map +1 -1
- package/dist/harness/commands/review.d.ts +8 -0
- package/dist/harness/commands/review.d.ts.map +1 -0
- package/dist/harness/commands/review.js +283 -0
- package/dist/harness/commands/review.js.map +1 -0
- package/dist/harness/commands/task-init.d.ts +6 -1
- package/dist/harness/commands/task-init.d.ts.map +1 -1
- package/dist/harness/commands/task-init.js +12 -3
- package/dist/harness/commands/task-init.js.map +1 -1
- package/dist/harness/context.d.ts +5 -1
- package/dist/harness/context.d.ts.map +1 -1
- package/dist/harness/context.js +1 -1
- package/dist/harness/context.js.map +1 -1
- package/dist/harness/index.d.ts +3 -1
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +3 -1
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/project-helpers.d.ts +8 -0
- package/dist/harness/project-helpers.d.ts.map +1 -0
- package/dist/harness/project-helpers.js +296 -0
- package/dist/harness/project-helpers.js.map +1 -0
- package/dist/harness/project-host.d.ts +2 -0
- package/dist/harness/project-host.d.ts.map +1 -1
- package/dist/harness/project-host.js +21 -0
- package/dist/harness/project-host.js.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,14 @@ All notable changes to `@farmslot/recipe-cli` are tracked here.
|
|
|
6
6
|
|
|
7
7
|
- Active-development baseline; add user-facing changes here before release or package publication.
|
|
8
8
|
|
|
9
|
+
## 0.19.0 - 2026-10-15
|
|
10
|
+
|
|
11
|
+
- Compose shared task, review and quality helpers from project policy while preserving retained task bindings.
|
|
12
|
+
|
|
13
|
+
## 0.18.5 - 2026-10-15
|
|
14
|
+
|
|
15
|
+
- Use the operator-wait runtime and protocol dependency set.
|
|
16
|
+
|
|
9
17
|
## 0.18.4 - 2026-10-15
|
|
10
18
|
|
|
11
19
|
- Use the plain SDK contracts throughout recipe execution and validate partial runtime plugins without force casts.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checklist.d.ts","sourceRoot":"","sources":["../../../src/harness/commands/checklist.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"checklist.d.ts","sourceRoot":"","sources":["../../../src/harness/commands/checklist.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAgEtE,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/C;AAED,MAAM,WAAW,uBAAuB;IAGtC,QAAQ,CAAC,CACP,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,KAAK,EAAE,SAAS,GAAG,MAAM,GAEvB,gBAAgB,CAAC,MAAM,CAAC,GACxB;QACE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,EAAE,KAAK,CAAC;KACf,CAAC;IAEN,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAEzC,cAAc,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAyHD,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,CA+DjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checklist.js","sourceRoot":"","sources":["../../../src/harness/commands/checklist.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,8EAA8E;AAC9E,yBAAyB;AACzB,OAAO,EAAE,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAE7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC;AAC/F,gFAAgF;AAChF,gFAAgF;AAChF,0EAA0E;AAC1E,qEAAqE;AACrE,MAAM,EAAE,qBAAqB,EAAE,GAC7B,OAAO,CAAC,sDAAsD,CAM7D,CAAC;AACJ,MAAM,EAAE,mCAAmC,EAAE,GAC3C,OAAO,CAAC,sDAAsD,CAQ7D,CAAC;AAMJ,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GACxC,OAAO,CAAC,kDAAkD,CAGzD,CAAC;AAEJ,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,UAAU;IACV,aAAa;IACb,UAAU;IACV,UAAU;IACV,eAAe;IACf,YAAY;
|
|
1
|
+
{"version":3,"file":"checklist.js","sourceRoot":"","sources":["../../../src/harness/commands/checklist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type CliOptions } from '../parse-args.js';
|
|
2
2
|
export interface RecipeQualityCommandOptions {
|
|
3
|
+
/** Project quality rules consumed by canonical quality help. */
|
|
4
|
+
guidance?: string;
|
|
3
5
|
subcommands?: Readonly<Record<string, (options: CliOptions) => Promise<number>>>;
|
|
4
6
|
subcommandOptions?: {
|
|
5
7
|
names: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipe-quality.d.ts","sourceRoot":"","sources":["../../../src/harness/commands/recipe-quality.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"recipe-quality.d.ts","sourceRoot":"","sources":["../../../src/harness/commands/recipe-quality.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,UAAU,EAAuC,MAAM,kBAAkB,CAAC;AAGxF,MAAM,WAAW,2BAA2B;IAC1C,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAGjF,iBAAiB,CAAC,EAAE;QAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAEtF,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoCD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EAAE,EACd,cAAc,GAAE,2BAAgC,GAC/C,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import fs from 'node:fs';
|
|
7
7
|
import path from 'node:path';
|
|
8
8
|
import { buildRecipeQualityArtifact, } from '@farmslot/agent-runtime';
|
|
9
|
+
import { harnessContext } from '../context-state.js';
|
|
9
10
|
import { harnessHost } from '../host.js';
|
|
10
11
|
import { optionFlag, optionString, parseArgs } from '../parse-args.js';
|
|
11
12
|
import { EXIT, usageOut } from '../shared.js';
|
|
@@ -40,8 +41,16 @@ export async function handleRecipeQuality(argv, commandOptions = {}) {
|
|
|
40
41
|
const json = optionFlag(options, 'json');
|
|
41
42
|
const action = positional[0];
|
|
42
43
|
const subcommand = action === undefined ? undefined : commandOptions.subcommands?.[action];
|
|
43
|
-
if (subcommand)
|
|
44
|
-
|
|
44
|
+
if (subcommand) {
|
|
45
|
+
const context = harnessContext();
|
|
46
|
+
return subcommand({
|
|
47
|
+
...(context?.adapter ? { adapter: context.adapter.value } : {}),
|
|
48
|
+
...(context?.project
|
|
49
|
+
? { library: context.project.libraries.map((entry) => `${entry.name}=${entry.root}`) }
|
|
50
|
+
: {}),
|
|
51
|
+
...options,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
45
54
|
const only = commandOptions.subcommandOptions;
|
|
46
55
|
if (only && only.names.some((key) => options[key] !== undefined)) {
|
|
47
56
|
return usageOut(json, 'recipe-quality', only.message, only.userAction);
|
|
@@ -55,7 +64,9 @@ export async function handleRecipeQuality(argv, commandOptions = {}) {
|
|
|
55
64
|
: (commandOptions.missingAction ?? 'missing action: use build');
|
|
56
65
|
const usage = `${buildUsage()}\n` +
|
|
57
66
|
` Shorthand: ${harnessHost().name} recipe-quality --input <compact.json> --output <path> [--json]` +
|
|
58
|
-
(commandOptions.usageNote
|
|
67
|
+
((commandOptions.usageNote ?? commandOptions.guidance)
|
|
68
|
+
? `\n Note: ${commandOptions.usageNote ?? commandOptions.guidance}`
|
|
69
|
+
: '');
|
|
59
70
|
return usageOut(json, 'recipe-quality', message, usage);
|
|
60
71
|
}
|
|
61
72
|
return buildArtifact(options, json);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipe-quality.js","sourceRoot":"","sources":["../../../src/harness/commands/recipe-quality.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,2CAA2C;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,0BAA0B,GAE3B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAmB,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"recipe-quality.js","sourceRoot":"","sources":["../../../src/harness/commands/recipe-quality.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface ReviewCommandOptions {
|
|
2
|
+
baseRules?: string;
|
|
3
|
+
runtimeIds?: readonly string[];
|
|
4
|
+
parityRuntimeIds?: Readonly<Record<string, string>>;
|
|
5
|
+
}
|
|
6
|
+
/** Review uses the host's authorized library composition without a private resolver. */
|
|
7
|
+
export declare function handleReview(argv: string[], policy?: ReviewCommandOptions): Promise<number>;
|
|
8
|
+
//# sourceMappingURL=review.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/harness/commands/review.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AA+KD,wFAAwF;AACxF,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,MAAM,CAAC,CAkHjB"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { isRecord } from '@farmslot/protocol';
|
|
5
|
+
import { harnessContext } from '../context-state.js';
|
|
6
|
+
import { harnessHost } from '../host.js';
|
|
7
|
+
import { optionFlag, optionString, parseArgs, usageError } from '../parse-args.js';
|
|
8
|
+
function globToRegExp(glob) {
|
|
9
|
+
let out = '^';
|
|
10
|
+
for (let i = 0; i < glob.length; i += 1) {
|
|
11
|
+
const char = glob[i];
|
|
12
|
+
if (char === '*') {
|
|
13
|
+
if (glob[i + 1] === '*') {
|
|
14
|
+
const slashAfter = glob[i + 2] === '/';
|
|
15
|
+
out += slashAfter ? '(?:.*/)?' : '.*';
|
|
16
|
+
i += slashAfter ? 2 : 1;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
out += '[^/]*';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else if (char === '?') {
|
|
23
|
+
out += '[^/]';
|
|
24
|
+
}
|
|
25
|
+
else if (char === '[') {
|
|
26
|
+
const negated = glob[i + 1] === '!';
|
|
27
|
+
const bodyStart = i + 1 + (negated ? 1 : 0);
|
|
28
|
+
// A `]` right after the opening bracket is a literal member of the class.
|
|
29
|
+
const close = glob.indexOf(']', glob[bodyStart] === ']' ? bodyStart + 1 : bodyStart);
|
|
30
|
+
if (close === -1) {
|
|
31
|
+
out += '\\[';
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
out += `[${negated ? '^' : ''}${glob.slice(bodyStart, close).replace(/[\\\]]/g, '\\$&')}]`;
|
|
35
|
+
i = close;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
out += char.replace(/[.+^${}()|\\]/g, '\\$&');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return new RegExp(`${out}$`);
|
|
43
|
+
}
|
|
44
|
+
function matchOwnedFiles(files, globs) {
|
|
45
|
+
const patterns = globs.map(globToRegExp);
|
|
46
|
+
return files.filter((file) => patterns.some((pattern) => pattern.test(file)));
|
|
47
|
+
}
|
|
48
|
+
function git(target, args) {
|
|
49
|
+
return execFileSync('git', ['-C', target, ...args], {
|
|
50
|
+
encoding: 'utf8',
|
|
51
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function defaultBaseRef(target) {
|
|
55
|
+
for (const candidate of ['origin/main', 'main', 'origin/develop', 'develop']) {
|
|
56
|
+
try {
|
|
57
|
+
git(target, ['rev-parse', '--verify', '--quiet', `${candidate}^{commit}`]);
|
|
58
|
+
return candidate;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Try the next conventional base.
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return 'HEAD';
|
|
65
|
+
}
|
|
66
|
+
// Files touched by the change: committed since the base, plus the working tree.
|
|
67
|
+
function changedFiles(target, base) {
|
|
68
|
+
const ref = base ?? defaultBaseRef(target);
|
|
69
|
+
const lists = [
|
|
70
|
+
ref === 'HEAD' ? '' : git(target, ['diff', '--name-only', `${ref}...HEAD`]),
|
|
71
|
+
git(target, ['diff', '--name-only', 'HEAD']),
|
|
72
|
+
git(target, ['ls-files', '--others', '--exclude-standard']),
|
|
73
|
+
];
|
|
74
|
+
const files = new Set();
|
|
75
|
+
for (const list of lists)
|
|
76
|
+
for (const line of list.split('\n'))
|
|
77
|
+
if (line.trim())
|
|
78
|
+
files.add(line.trim());
|
|
79
|
+
return { base: ref, files: [...files].sort() };
|
|
80
|
+
}
|
|
81
|
+
function parseSections(markdown) {
|
|
82
|
+
const lines = markdown.split('\n');
|
|
83
|
+
const introLines = [];
|
|
84
|
+
const sections = [];
|
|
85
|
+
let current;
|
|
86
|
+
let inFence = false;
|
|
87
|
+
for (const line of lines) {
|
|
88
|
+
if (/^```/.test(line)) {
|
|
89
|
+
inFence = !inFence;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (inFence)
|
|
93
|
+
continue;
|
|
94
|
+
const heading = /^## +(.+?)\s*$/.exec(line);
|
|
95
|
+
if (heading) {
|
|
96
|
+
if (current)
|
|
97
|
+
sections.push(finishSection(current));
|
|
98
|
+
current = { title: heading[1].trim(), body: [] };
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (current)
|
|
102
|
+
current.body.push(line);
|
|
103
|
+
else if (!/^# /.test(line))
|
|
104
|
+
introLines.push(line);
|
|
105
|
+
}
|
|
106
|
+
if (current)
|
|
107
|
+
sections.push(finishSection(current));
|
|
108
|
+
return { intro: introLines.join('\n').trim(), sections };
|
|
109
|
+
}
|
|
110
|
+
// The summary is the first paragraph (wrapped lines joined) or, without prose, the first bullet.
|
|
111
|
+
function finishSection(section) {
|
|
112
|
+
const lines = section.body.map((line) => line.trim());
|
|
113
|
+
const firstBulletStart = lines.findIndex((line) => line.startsWith('- '));
|
|
114
|
+
// Prose only counts before the first bullet; a bullet's wrapped lines are not prose.
|
|
115
|
+
const proseLines = firstBulletStart === -1 ? lines : lines.slice(0, firstBulletStart);
|
|
116
|
+
const proseStart = proseLines.findIndex((line) => line && !line.startsWith('#'));
|
|
117
|
+
let firstProse;
|
|
118
|
+
if (proseStart !== -1) {
|
|
119
|
+
const paragraph = [];
|
|
120
|
+
for (const line of proseLines.slice(proseStart)) {
|
|
121
|
+
if (!line || line.startsWith('#'))
|
|
122
|
+
break;
|
|
123
|
+
paragraph.push(line);
|
|
124
|
+
}
|
|
125
|
+
firstProse = paragraph.join(' ');
|
|
126
|
+
}
|
|
127
|
+
let firstBullet;
|
|
128
|
+
if (firstBulletStart !== -1) {
|
|
129
|
+
const bullet = [lines[firstBulletStart].replace(/^- /, '')];
|
|
130
|
+
for (const line of lines.slice(firstBulletStart + 1)) {
|
|
131
|
+
if (!line || line.startsWith('- ') || line.startsWith('#'))
|
|
132
|
+
break;
|
|
133
|
+
bullet.push(line);
|
|
134
|
+
}
|
|
135
|
+
firstBullet = bullet.join(' ');
|
|
136
|
+
}
|
|
137
|
+
const raw = firstProse ?? firstBullet ?? '';
|
|
138
|
+
return { title: section.title, summary: firstSentences(plainText(raw), SUMMARY_LIMIT) };
|
|
139
|
+
}
|
|
140
|
+
const SUMMARY_LIMIT = 220;
|
|
141
|
+
// Keep whole sentences while they fit the limit; a single overlong sentence is cut at a word.
|
|
142
|
+
function firstSentences(text, limit) {
|
|
143
|
+
if (text.length <= limit)
|
|
144
|
+
return text;
|
|
145
|
+
// A sentence ends at terminal punctuation followed by whitespace, so `perpsConfig.ts` stays whole.
|
|
146
|
+
const sentences = text.split(/(?<=[.!?])\s+/);
|
|
147
|
+
let out = '';
|
|
148
|
+
for (const sentence of sentences) {
|
|
149
|
+
if (out && `${out} ${sentence}`.length > limit)
|
|
150
|
+
break;
|
|
151
|
+
out = out ? `${out} ${sentence}` : sentence;
|
|
152
|
+
}
|
|
153
|
+
if (out.length > limit)
|
|
154
|
+
out = `${out.slice(0, limit).replace(/\s+\S*$/, '')}…`;
|
|
155
|
+
return out || text.slice(0, limit);
|
|
156
|
+
}
|
|
157
|
+
function plainText(markdown) {
|
|
158
|
+
return markdown
|
|
159
|
+
.replace(/\*\*([^*]+)\*\*/g, '$1')
|
|
160
|
+
.replace(/`([^`]+)`/g, '$1')
|
|
161
|
+
.replace(/\s+/g, ' ')
|
|
162
|
+
.trim();
|
|
163
|
+
}
|
|
164
|
+
function ownedPaths(library, runtime) {
|
|
165
|
+
const file = path.join(library.root, 'owned-paths.json');
|
|
166
|
+
if (!fs.existsSync(file))
|
|
167
|
+
return undefined;
|
|
168
|
+
const value = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
169
|
+
if (!isRecord(value) || typeof value.domain !== 'string' || !isRecord(value.repos))
|
|
170
|
+
throw usageError(`Invalid owned-paths.json: ${file}`);
|
|
171
|
+
const globs = value.repos[runtime] ?? [];
|
|
172
|
+
if (!Array.isArray(globs) || !globs.every((entry) => typeof entry === 'string'))
|
|
173
|
+
throw usageError(`Invalid owned paths for ${runtime}: ${file}`);
|
|
174
|
+
return { domain: value.domain, globs };
|
|
175
|
+
}
|
|
176
|
+
/** Review uses the host's authorized library composition without a private resolver. */
|
|
177
|
+
export async function handleReview(argv, policy = {}) {
|
|
178
|
+
const { positional, options } = parseArgs(argv);
|
|
179
|
+
const action = positional[0];
|
|
180
|
+
if (action !== 'checklist' && action !== 'domain')
|
|
181
|
+
throw usageError('Use farmslot review checklist|domain.');
|
|
182
|
+
const context = harnessContext();
|
|
183
|
+
const target = context?.target.value ?? path.resolve(optionString(options, 'target') ?? '.');
|
|
184
|
+
const runtime = context?.adapter?.value ?? 'unscoped';
|
|
185
|
+
if (policy.runtimeIds && !policy.runtimeIds.includes(runtime))
|
|
186
|
+
throw usageError(`Review runtime must be one of ${policy.runtimeIds.join(', ')}.`);
|
|
187
|
+
const libraries = context?.project?.libraries ?? [];
|
|
188
|
+
const domain = optionString(options, 'domain') ?? context?.project?.domain;
|
|
189
|
+
if (action === 'domain') {
|
|
190
|
+
let result;
|
|
191
|
+
if (domain)
|
|
192
|
+
result = { domain, source: 'declared', adapter: runtime, target };
|
|
193
|
+
else {
|
|
194
|
+
const changed = changedFiles(target, optionString(options, 'base'));
|
|
195
|
+
const matches = libraries
|
|
196
|
+
.flatMap((library) => {
|
|
197
|
+
const owned = ownedPaths(library, runtime);
|
|
198
|
+
const matched = owned ? matchOwnedFiles(changed.files, owned.globs) : [];
|
|
199
|
+
return owned && matched.length
|
|
200
|
+
? [{ domain: owned.domain, library: library.root, matched }]
|
|
201
|
+
: [];
|
|
202
|
+
})
|
|
203
|
+
.sort((left, right) => right.matched.length - left.matched.length);
|
|
204
|
+
result = {
|
|
205
|
+
domain: matches[0]?.domain ?? null,
|
|
206
|
+
source: matches.length ? 'owned-paths' : 'none',
|
|
207
|
+
adapter: runtime,
|
|
208
|
+
target,
|
|
209
|
+
base: changed.base,
|
|
210
|
+
changedFiles: changed.files.length,
|
|
211
|
+
libraries,
|
|
212
|
+
matches,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
process.stdout.write(optionFlag(options, 'json')
|
|
216
|
+
? `${JSON.stringify({ command: 'domain', ...result }, null, 2)}\n`
|
|
217
|
+
: `${result.domain ?? 'none'}\n`);
|
|
218
|
+
return 0;
|
|
219
|
+
}
|
|
220
|
+
const library = domain ? libraries.find((entry) => entry.name === domain) : undefined;
|
|
221
|
+
if (domain && !library)
|
|
222
|
+
throw usageError(`No authorized recipe library found for domain "${domain}".`);
|
|
223
|
+
const base = optionString(options, 'base') ?? defaultBaseRef(target);
|
|
224
|
+
const since = optionString(options, 'since');
|
|
225
|
+
const range = since ? `${since}..HEAD` : `${base}...HEAD`;
|
|
226
|
+
const lines = [
|
|
227
|
+
`# Review checklist — ${domain ? `${domain} (${runtime})` : runtime}`,
|
|
228
|
+
'',
|
|
229
|
+
`Scope: \`git diff ${range}\`${since ? ' (incremental re-review since the last verdict)' : ''}.`,
|
|
230
|
+
'',
|
|
231
|
+
'## Setup',
|
|
232
|
+
];
|
|
233
|
+
let step = 0;
|
|
234
|
+
const item = (text) => {
|
|
235
|
+
lines.push(`- [ ] ${++step}. ${text}`);
|
|
236
|
+
};
|
|
237
|
+
item(since
|
|
238
|
+
? `Re-read the previous findings, then list only the files changed in \`git diff --name-only ${range}\`; confirm each earlier finding is addressed or explicitly declined.`
|
|
239
|
+
: `Read the task or PR description and the linked ticket, then list the changed files with \`git diff --name-only ${range}\`.`);
|
|
240
|
+
item(domain
|
|
241
|
+
? `Confirm the domain is ${domain} (\`farmslot review domain\`) and read the domain library.`
|
|
242
|
+
: 'Run `farmslot review domain` to check whether a team library owns the changed files; if one does, re-run with --domain.');
|
|
243
|
+
lines.push('', '## Base review');
|
|
244
|
+
for (const rule of (policy.baseRules ?? '').split('\n').filter((line) => line.trim()))
|
|
245
|
+
item(rule);
|
|
246
|
+
if (library) {
|
|
247
|
+
const files = ['antipatterns.md', `antipatterns.${runtime}.md`];
|
|
248
|
+
for (const name of files) {
|
|
249
|
+
const file = path.join(library.root, 'review', name);
|
|
250
|
+
if (fs.existsSync(file)) {
|
|
251
|
+
lines.push('', `## Domain patterns (${domain})`);
|
|
252
|
+
for (const section of parseSections(fs.readFileSync(file, 'utf8')).sections)
|
|
253
|
+
item(`${section.title}: ${section.summary}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
lines.push('', '## Parity');
|
|
258
|
+
const parity = policy.parityRuntimeIds?.[runtime];
|
|
259
|
+
const reference = parity
|
|
260
|
+
? process.env[`${harnessHost().envPrefix}_REF_${parity.toUpperCase()}`]
|
|
261
|
+
: undefined;
|
|
262
|
+
if (parity)
|
|
263
|
+
item(reference
|
|
264
|
+
? `Compare touched behavior with ${parity} at ${reference}${library && fs.existsSync(path.join(library.root, 'review/parity.md')) ? ' using review/parity.md' : ''}; record every divergence under the library parity rule.`
|
|
265
|
+
: `Parity with ${parity}: not checked. Record the missing reference in the verdict.`);
|
|
266
|
+
else
|
|
267
|
+
item('Check consumers of each changed public contract.');
|
|
268
|
+
lines.push('', '## Verdict');
|
|
269
|
+
item('Post APPROVE or REQUEST CHANGES, findings ordered by severity with file:line; state what was not checked and why.');
|
|
270
|
+
const checklist = `${lines.join('\n')}\n`;
|
|
271
|
+
const out = optionString(options, 'out');
|
|
272
|
+
if (out) {
|
|
273
|
+
fs.mkdirSync(path.dirname(path.resolve(out)), { recursive: true });
|
|
274
|
+
fs.writeFileSync(path.resolve(out), checklist);
|
|
275
|
+
}
|
|
276
|
+
process.stdout.write(optionFlag(options, 'json')
|
|
277
|
+
? `${JSON.stringify({ command: 'review', subcommand: 'checklist', target, adapter: runtime, domain: domain ?? null, library: library ?? null, reference: reference ?? null, referenceMissing: parity && !reference ? `no ${parity} checkout found` : null, base, since: since ?? null, out: out ? path.resolve(out) : null, checklist }, null, 2)}\n`
|
|
278
|
+
: out
|
|
279
|
+
? `review checklist: ${path.resolve(out)}\n`
|
|
280
|
+
: checklist);
|
|
281
|
+
return 0;
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/harness/commands/review.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import type { TaskExecutionInput } from '@farmslot/agent-runtime';
|
|
2
|
+
import type { ChecklistCommandOptions, ChecklistStepGate } from './checklist.js';
|
|
1
3
|
export interface TaskInitCommandOptions {
|
|
2
4
|
surface?: string;
|
|
3
5
|
}
|
|
4
|
-
export
|
|
6
|
+
export interface ProjectTaskCommandOptions extends TaskInitCommandOptions, ChecklistCommandOptions {
|
|
7
|
+
stepGates: readonly ChecklistStepGate[];
|
|
8
|
+
}
|
|
9
|
+
export declare function handleTaskInit(argv: string[], options?: TaskInitCommandOptions, execution?: TaskExecutionInput): Promise<number>;
|
|
5
10
|
//# sourceMappingURL=task-init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-init.d.ts","sourceRoot":"","sources":["../../../src/harness/commands/task-init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"task-init.d.ts","sourceRoot":"","sources":["../../../src/harness/commands/task-init.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,yBAAyB,CAAC;AAQlF,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIjF,MAAM,WAAW,sBAAsB;IAErC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB,EAAE,uBAAuB;IAChG,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACzC;AA2BD,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,sBAA2B,EACpC,SAAS,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAkDjB"}
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
// mark, inputs/); this wrapper adds the defaults only the host knows.
|
|
4
4
|
import { spawnSync } from 'node:child_process';
|
|
5
5
|
import { createRequire } from 'node:module';
|
|
6
|
+
import { pathToFileURL } from 'node:url';
|
|
6
7
|
import { contextAdapter } from '../context-state.js';
|
|
7
8
|
import { harnessHost } from '../host.js';
|
|
9
|
+
import { usageError } from '../parse-args.js';
|
|
8
10
|
import { harnessExecutable } from '../paths.js';
|
|
9
11
|
import { EXIT } from '../shared.js';
|
|
10
12
|
const require = createRequire(import.meta.url);
|
|
@@ -15,11 +17,11 @@ function hasOption(argv, name) {
|
|
|
15
17
|
// that routes through the host's checklist gates instead of the runtime's own
|
|
16
18
|
// engine, and the platform of the checkout the command runs in. Run mode is not
|
|
17
19
|
// one of them: only a control plane knows it, and it selects nothing here.
|
|
18
|
-
function hostDefaults(argv, options) {
|
|
20
|
+
function hostDefaults(argv, options, retained = false) {
|
|
19
21
|
const defaults = [];
|
|
20
22
|
if (options.surface && !hasOption(argv, '--surface'))
|
|
21
23
|
defaults.push('--surface', options.surface);
|
|
22
|
-
if (!hasOption(argv, '--mark-command')) {
|
|
24
|
+
if (!retained && !hasOption(argv, '--mark-command')) {
|
|
23
25
|
defaults.push('--mark-command', `${harnessExecutable()} checklist mark`);
|
|
24
26
|
}
|
|
25
27
|
if (!hasOption(argv, '--platform')) {
|
|
@@ -29,7 +31,7 @@ function hostDefaults(argv, options) {
|
|
|
29
31
|
}
|
|
30
32
|
return defaults;
|
|
31
33
|
}
|
|
32
|
-
export async function handleTaskInit(argv, options = {}) {
|
|
34
|
+
export async function handleTaskInit(argv, options = {}, execution) {
|
|
33
35
|
const host = harnessHost().name;
|
|
34
36
|
if (argv[0] !== 'init') {
|
|
35
37
|
console.error(`usage: ${host} task init <task-dir> --flow f --template id --title t [options]`);
|
|
@@ -44,6 +46,13 @@ export async function handleTaskInit(argv, options = {}) {
|
|
|
44
46
|
console.error(`${host} task init: installed @farmslot/agent-runtime does not expose the task-directory command: ${error instanceof Error ? error.message : String(error)}`);
|
|
45
47
|
return EXIT.runtime;
|
|
46
48
|
}
|
|
49
|
+
if (execution) {
|
|
50
|
+
if (hasOption(forwarded, '--mark-command'))
|
|
51
|
+
throw usageError('A retained task must use its frozen CLI task mark command so provider gates remain enforced.');
|
|
52
|
+
const module = await import(pathToFileURL(entrypoint).href);
|
|
53
|
+
await module.taskInitFromArgv([...forwarded, ...hostDefaults(forwarded, options, true)], execution, await import('@farmslot/agent-runtime'));
|
|
54
|
+
return EXIT.ok;
|
|
55
|
+
}
|
|
47
56
|
const result = spawnSync(process.execPath, [entrypoint, ...forwarded, ...hostDefaults(forwarded, options)], { env: process.env, stdio: 'inherit' });
|
|
48
57
|
if (result.error) {
|
|
49
58
|
console.error(`${host} task init: ${result.error.message}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-init.js","sourceRoot":"","sources":["../../../src/harness/commands/task-init.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,iFAAiF;AACjF,sEAAsE;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"task-init.js","sourceRoot":"","sources":["../../../src/harness/commands/task-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,7 +68,7 @@ export declare function formatHarnessContext(context: HarnessContext): string;
|
|
|
68
68
|
export declare function runtimeContextOwned(root: string, file: string, context: Readonly<Record<string, unknown>>): boolean;
|
|
69
69
|
/** Registered pack metadata. `root` is the directory containing project.json. */
|
|
70
70
|
export interface ConfiguredRecipeProject {
|
|
71
|
-
config: ProjectConfig
|
|
71
|
+
config: Pick<ProjectConfig, 'name' | 'repoUrl' | 'paths' | 'apps' | 'recipe'>;
|
|
72
72
|
root: string;
|
|
73
73
|
}
|
|
74
74
|
export interface ResolveProjectContextOptions extends ResolveHarnessContextOptions {
|
|
@@ -88,6 +88,9 @@ export interface ProjectProvider {
|
|
|
88
88
|
engine?: RecipeEngine;
|
|
89
89
|
/** Project presentation and owned companions consumed by the shared lifecycle handlers. */
|
|
90
90
|
commandOptions?: {
|
|
91
|
+
task?: import('./commands/task-init.js').ProjectTaskCommandOptions;
|
|
92
|
+
recipeQuality?: import('./commands/recipe-quality.js').RecipeQualityCommandOptions;
|
|
93
|
+
review?: import('./commands/review.js').ReviewCommandOptions;
|
|
91
94
|
doctor?: Partial<import('./commands/doctor.js').DoctorCommandOptions>;
|
|
92
95
|
status?: import('./commands/status.js').StatusCommandOptions;
|
|
93
96
|
stop?: import('./commands/stop.js').StopCommandOptions;
|
|
@@ -114,6 +117,7 @@ export declare function resolveProjectContext(options: ResolveProjectContextOpti
|
|
|
114
117
|
export declare function authorizedProjectLibraries(context: HarnessContext): ResolvedProjectLibrary[];
|
|
115
118
|
/** The shared direct/hosted loader. Source identity is checked before import. */
|
|
116
119
|
export declare function loadProjectProvider(context: HarnessContext, options?: LoadProjectProviderOptions): Promise<ProjectProvider>;
|
|
120
|
+
export declare function readProject(file: string): ProjectConfig;
|
|
117
121
|
/** The package owning a resolved entry, including entries below nested source/dist directories. */
|
|
118
122
|
export declare function recipePackageRoot(file: string): string;
|
|
119
123
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/harness/context.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,cAAc,EAEpB,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EACL,KAAK,qBAAqB,EAI3B,MAAM,sBAAsB,CAAC;AAW9B,OAAO,EAGL,KAAK,cAAc,EAGnB,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAO9D,OAAO,EAA0B,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,4BAA4B;IAC3C,oDAAoD;IACpD,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,gGAAgG;IAChG,WAAW,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACpC,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAKD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,cAAc,CAAC,CA6FzB;AAoCD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC1C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAoD/E;AAmBD,8GAA8G;AAC9G,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CA4BpE;AAwGD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACzC,OAAO,CAMT;AA+FD,iFAAiF;AACjF,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/harness/context.ts"],"names":[],"mappings":"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"}
|
package/dist/harness/context.js
CHANGED
|
@@ -777,7 +777,7 @@ export async function loadProjectProvider(context, options = {}) {
|
|
|
777
777
|
};
|
|
778
778
|
return result;
|
|
779
779
|
}
|
|
780
|
-
function readProject(file) {
|
|
780
|
+
export function readProject(file) {
|
|
781
781
|
const raw = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
782
782
|
// project.json uses the existing pack spelling; registered protocol values
|
|
783
783
|
// already use camelCase. Only the binding's fields need normalization here.
|