@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.
Files changed (33) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/harness/commands/checklist.d.ts.map +1 -1
  3. package/dist/harness/commands/checklist.js +5 -0
  4. package/dist/harness/commands/checklist.js.map +1 -1
  5. package/dist/harness/commands/recipe-quality.d.ts +2 -0
  6. package/dist/harness/commands/recipe-quality.d.ts.map +1 -1
  7. package/dist/harness/commands/recipe-quality.js +14 -3
  8. package/dist/harness/commands/recipe-quality.js.map +1 -1
  9. package/dist/harness/commands/review.d.ts +8 -0
  10. package/dist/harness/commands/review.d.ts.map +1 -0
  11. package/dist/harness/commands/review.js +283 -0
  12. package/dist/harness/commands/review.js.map +1 -0
  13. package/dist/harness/commands/task-init.d.ts +6 -1
  14. package/dist/harness/commands/task-init.d.ts.map +1 -1
  15. package/dist/harness/commands/task-init.js +12 -3
  16. package/dist/harness/commands/task-init.js.map +1 -1
  17. package/dist/harness/context.d.ts +5 -1
  18. package/dist/harness/context.d.ts.map +1 -1
  19. package/dist/harness/context.js +1 -1
  20. package/dist/harness/context.js.map +1 -1
  21. package/dist/harness/index.d.ts +3 -1
  22. package/dist/harness/index.d.ts.map +1 -1
  23. package/dist/harness/index.js +3 -1
  24. package/dist/harness/index.js.map +1 -1
  25. package/dist/harness/project-helpers.d.ts +8 -0
  26. package/dist/harness/project-helpers.d.ts.map +1 -0
  27. package/dist/harness/project-helpers.js +296 -0
  28. package/dist/harness/project-helpers.js.map +1 -0
  29. package/dist/harness/project-host.d.ts +2 -0
  30. package/dist/harness/project-host.d.ts.map +1 -1
  31. package/dist/harness/project-host.js +21 -0
  32. package/dist/harness/project-host.js.map +1 -1
  33. 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;AA2DtE,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
+ {"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"}
@@ -25,6 +25,11 @@ const CHECKLIST_VALUE_OPTIONS = new Set([
25
25
  '--config',
26
26
  '--destination',
27
27
  '--metadata',
28
+ '--who',
29
+ '--report',
30
+ '--var',
31
+ '--step',
32
+ '--from',
28
33
  ]);
29
34
  function parseChecklistArgv(argv) {
30
35
  const positionals = [];
@@ -1 +1 @@
1
- {"version":3,"file":"checklist.js","sourceRoot":"","sources":["../../../src/harness/commands/checklist.ts"],"names":[],"mappings":"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"}
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":"AAcA,OAAO,EAAE,KAAK,UAAU,EAAuC,MAAM,kBAAkB,CAAC;AAGxF,MAAM,WAAW,2BAA2B;IAG1C,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,CAwBjB"}
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
- return subcommand(options);
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 ? `\n Note: ${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":"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"}
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 declare function handleTaskInit(argv: string[], options?: TaskInitCommandOptions): Promise<number>;
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":"AAaA,MAAM,WAAW,sBAAsB;IAErC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAuBD,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,CAAC,CA8BjB"}
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":"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"}
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":"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"}
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,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;IAC9E,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,4BAA6B,SAAQ,4BAA4B;IAChF,8FAA8F;IAC9F,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK;QACpD,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC9C,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,2FAA2F;IAC3F,cAAc,CAAC,EAAE;QACf,IAAI,CAAC,EAAE,OAAO,yBAAyB,EAAE,yBAAyB,CAAC;QACnE,aAAa,CAAC,EAAE,OAAO,8BAA8B,EAAE,2BAA2B,CAAC;QACnF,MAAM,CAAC,EAAE,OAAO,sBAAsB,EAAE,oBAAoB,CAAC;QAC7D,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;QACtE,MAAM,CAAC,EAAE,OAAO,sBAAsB,EAAE,oBAAoB,CAAC;QAC7D,IAAI,CAAC,EAAE,OAAO,oBAAoB,EAAE,kBAAkB,CAAC;QACvD,IAAI,CAAC,EAAE,OAAO,oBAAoB,EAAE,kBAAkB,CAAC;KACxD,CAAC;IACF,MAAM,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,QAAQ,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,0BAA0B;IACzC,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,SAAS,CAAC,EAAE,IAAI,CACd,iBAAiB,EACjB,YAAY,GAAG,eAAe,GAAG,cAAc,GAAG,mBAAmB,CACtE,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,0FAA0F;IAC1F,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,kBAAkB,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CACnD;AAUD,oFAAoF;AACpF,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,cAAc,CAAC,CAwWzB;AAED,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,GAAG,sBAAsB,EAAE,CAO5F;AAED,iFAAiF;AACjF,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,eAAe,CAAC,CAkI1B;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAiBvD;AAmCD,mGAAmG;AACnG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAatD"}
@@ -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.