@farmslot/recipe-cli 0.6.0 → 0.8.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 CHANGED
@@ -6,6 +6,29 @@ 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.8.0 - 2026-10-07
10
+
11
+ - Bounded healing classifies a failure matching an adapter's `failurePatterns.environment` as `ENVIRONMENT_NOT_READY` (exit 4, the adapter's message and next step) instead of `APP_LOGIC_FAILURE`. `FailureClass` gains `'environment'`.
12
+ - Fix `ensureAdapterLoaded` for a built-in adapter when a library entry doesn't parse: a malformed `RECIPE_LIBRARY_PATH` such as `=foo`, an empty entry such as `extra=` from an unset variable, or a bad `--library`. The built-in now runs instead of failing with `RECIPE_LIBRARY_PATH_INVALID`.
13
+ - Its conflict check reads each entry on its own: a malformed entry drops only itself, so a library that resolves and claims the built-in's id still refuses it with `ADAPTER_ID_CONFLICT`, even when a bad entry shares its value (`claims=<lib>:=foo`). `adapterChoices` lists the same entries.
14
+ - An unnamed entry takes its resolved directory's name, as recipe-runner's resolver names it, so `--library .` (or `..`) overrides the `RECIPE_LIBRARY_PATH` entry of that name here too, flag before environment before configured.
15
+ - A plugin id with a bad entry still refuses. `createHarnessCli` prints library refusals (path or manifest, a `RecipeResolutionError`) the way it prints other refusals: the code, message and next step (`--json` envelope, NDJSON under `--json-stream`), exit 2.
16
+ - `spawnScriptStreaming` listens for parent signals (`SIGINT`, `SIGTERM`, `SIGHUP`, `SIGQUIT`) before it starts the leaf. A signal that arrived while the leaf was starting used to end the harness and leave the detached leaf running.
17
+ - Publish with adapter-sdk 0.6.0, agent-runtime 0.17.0, protocol 0.34.0 and recipe-runner 0.26.0.
18
+
19
+ ## 0.7.0 - 2026-10-06
20
+
21
+ - Add `createHarnessCli({ host, adapters, libraries, commands, help, beforeDispatch, catalog, adopt, configuredLibraries, replacedOptions })` to `@farmslot/recipe-cli/harness`, the generic front door a product harness presets. `main(argv)` returns `{ exitCode, exit }` and `run()` exits with it.
22
+ - It provides the grouped help (the host's intro, groups and footer, the `<PREFIX>_BIN` dev override line and the prepared-slot line), per-command `--help`, `-v/--version`, which prints the host's package version as one line (a host `package.json` without a version is a startup error), and `--version --verbose`, which adds `@farmslot/recipe-cli <version>` (one line when the host is recipe-cli itself).
23
+ - Each public command carries its `contract`, so the command list and the grammar can't drift apart. Hidden commands keep their private grammar.
24
+ - Order per invocation: `beforeDispatch` (unless the command sets `nudge: false`); help for no arguments; `raw` commands; the public grammar; `libraries.hydrate(--target)`; `ensureAdapterLoaded` for the adapter the command selects (`selectedAdapterId`), with the `--library` entries, the host's `configuredLibraries()` and `adopt`, and the environment the operator started the command with (libraries that `libraries.hydrate` adds never load plugins) (a refused plugin, `AdapterPluginError` or the import fence's `RECIPE_SOURCE_INVALID`, prints its code and next step, or the NDJSON `error` and `complete` events under `--json-stream`, exit 2); `--help` after `--` handed to the command; `call <action> --help` through the `catalog`; commander.
25
+ - One error mapper: a command that throws exits with the error's `exitCode` (a `CliError`), else 1. A public command sets `process.exitCode` by default and a hidden one exits at once; `exit` overrides either.
26
+ - Add the public command contract to `@farmslot/recipe-cli/harness`: `validatePublicInvocation(argv, commands, { replacedOptions })` returns a stable `CLI_*` usage error naming the host, or null.
27
+ - Option builders: `booleanOption`, `valueOption`, `optionalValueOption`, `contractOptions`. `OptionSpec.choices` can be a function of the tokens after the command, read at validation time (for example `(tokens) => adapterChoices(optionValues(tokens, '--library'))`). `optionValues(tokens, option)` returns every value an option takes before `--`.
28
+ - Command hooks: `bypass` (a sub-grammar another tool checks), `refine` (command rules, given `ContractFailures`) and `missingPositionalAction`.
29
+ - `publicCommandTokens(commands)` lists every name and alias.
30
+ - Publish with adapter-sdk 0.5.1, agent-runtime 0.17.0, protocol 0.34.0 and recipe-runner 0.26.0.
31
+
9
32
  ## 0.6.0 - 2026-10-06
10
33
 
11
34
  - **BREAKING:** a run plans with a runner that has no trusted mutation. `createRunner` no longer receives the mutation `trustedMutation.load` returned for the runner that computes the plan; only the mutation `authorize` returns reaches a runner. A host whose runner reads `options.trustedMutation` during construction or preflight now sees `undefined` there; move that check to `authorize`, which receives the loaded mutation and the plan.
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-plugins.d.ts","sourceRoot":"","sources":["../../src/harness/adapter-plugins.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAOL,KAAK,+BAA+B,EACpC,KAAK,mBAAmB,EAGzB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,QAAQ,EAAY,MAAM,iBAAiB,CAAC;AAIrD,MAAM,MAAM,sBAAsB,GAC9B,yBAAyB,GACzB,wBAAwB,GACxB,4BAA4B,GAC5B,qBAAqB,GACrB,yBAAyB,CAAC;AAE9B,kDAAkD;AAClD,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAChB,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAM9E;AAED,6DAA6D;AAC7D,MAAM,WAAW,eAAgB,SAAQ,+BAA+B;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,8FAA8F;IAC9F,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D;;;OAGG;IACH,KAAK,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAAC;CACnD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,SAAS,GAAE,SAAS,MAAM,EAAO,EACjC,OAAO,GAAE,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,KAAK,CAAM,GAC9D,MAAM,EAAE,CAGV;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAK/E;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAEzE;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,IAAI,mBAAmB,EAAE,CAE5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,kBAAkB,EAAE,CAQ1D;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAcf;AA2JD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,GAAG,eAAe,CA6B/F;AAuJD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC3D,MAAM,CAqBR"}
1
+ {"version":3,"file":"adapter-plugins.d.ts","sourceRoot":"","sources":["../../src/harness/adapter-plugins.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAOL,KAAK,+BAA+B,EACpC,KAAK,mBAAmB,EAGzB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,QAAQ,EAAY,MAAM,iBAAiB,CAAC;AAIrD,MAAM,MAAM,sBAAsB,GAC9B,yBAAyB,GACzB,wBAAwB,GACxB,4BAA4B,GAC5B,qBAAqB,GACrB,yBAAyB,CAAC;AAE9B,kDAAkD;AAClD,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAChB,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAM9E;AAED,6DAA6D;AAC7D,MAAM,WAAW,eAAgB,SAAQ,+BAA+B;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,8FAA8F;IAC9F,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D;;;OAGG;IACH,KAAK,CAAC,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAAC;CACnD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,SAAS,GAAE,SAAS,MAAM,EAAO,EACjC,OAAO,GAAE,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,KAAK,CAAM,GAC9D,MAAM,EAAE,CAGV;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAK/E;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAEzE;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,IAAI,mBAAmB,EAAE,CAE5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,kBAAkB,EAAE,CAQ1D;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAcf;AA2JD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,GAAG,eAAe,CA6B/F;AAiKD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC3D,MAAM,CAqBR"}
@@ -270,10 +270,14 @@ function builtinConflict(id, claims) {
270
270
  }
271
271
  async function declarations(options, mode) {
272
272
  // No recipePath: a task-local library beside a recipe never declares adapters.
273
- const sources = withConfigured(await resolveRecipeLibrarySources({
274
- cliEntries: [...(options.libraries ?? [])],
275
- ...(options.env ? { env: options.env } : {}),
276
- }), options.configured);
273
+ // Selecting a built-in checks the entries that parse, the set adapterChoices
274
+ // reads, so an entry that doesn't parse never blocks it.
275
+ const sources = withConfigured(mode.lenient
276
+ ? librarySourcesSync(options.libraries ?? [], options.env)
277
+ : await resolveRecipeLibrarySources({
278
+ cliEntries: [...(options.libraries ?? [])],
279
+ ...(options.env ? { env: options.env } : {}),
280
+ }), options.configured);
277
281
  const declared = [];
278
282
  for (const source of sources) {
279
283
  let manifest;
@@ -293,8 +297,10 @@ async function declarations(options, mode) {
293
297
  }
294
298
  return declared;
295
299
  }
300
+ // An unnamed entry takes its resolved directory's name, as recipe-runner's
301
+ // resolver names it, so `--library .` overrides the same-named env library.
296
302
  function libraryName(source) {
297
- return source.name ?? path.basename(source.root);
303
+ return source.name ?? path.basename(path.resolve(source.root));
298
304
  }
299
305
  /**
300
306
  * `resolveRecipeLibrarySources` without the file system, for the grammar: the
@@ -321,15 +327,19 @@ function withConfigured(sources, configured = []) {
321
327
  }
322
328
  return result;
323
329
  }
330
+ // Each entry of a colon-joined value on its own, so a malformed entry drops
331
+ // only itself and the libraries beside it still count.
324
332
  function safeParse(value) {
325
- try {
326
- return parseRecipeLibraryPath(value);
327
- }
328
- catch {
329
- // A malformed entry adds no adapter ids to the grammar; the command that
330
- // resolves its libraries reports RECIPE_LIBRARY_PATH_INVALID itself.
331
- return [];
332
- }
333
+ return value.split(':').flatMap((entry) => {
334
+ try {
335
+ return parseRecipeLibraryPath(entry);
336
+ }
337
+ catch {
338
+ // A malformed entry adds no adapter ids and claims nothing; the command
339
+ // that resolves its libraries reports RECIPE_LIBRARY_PATH_INVALID itself.
340
+ return [];
341
+ }
342
+ });
333
343
  }
334
344
  function declaredIdsIn(root) {
335
345
  let text;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-plugins.js","sourceRoot":"","sources":["../../src/harness/adapter-plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter-plugins.js","sourceRoot":"","sources":["../../src/harness/adapter-plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ export type CliUsageErrorCode = 'CLI_UNKNOWN_COMMAND' | 'CLI_UNKNOWN_OPTION' | 'CLI_MISSING_OPTION_VALUE' | 'CLI_INVALID_OPTION_VALUE' | 'CLI_MISSING_POSITIONAL' | 'CLI_INVALID_POSITIONAL' | 'CLI_EXCESS_POSITIONAL' | 'CLI_UNEXPECTED_PASSTHROUGH';
2
+ export interface OptionSpec {
3
+ kind: 'boolean' | 'value' | 'optional-value';
4
+ /**
5
+ * Accepted values. A function is read at validation time with the tokens
6
+ * after the command (registry ids plus the ids `--library` entries declare).
7
+ */
8
+ choices?: readonly string[] | ((tokens: readonly string[]) => readonly string[]);
9
+ }
10
+ export interface PositionalSpec {
11
+ label: string;
12
+ choices?: readonly string[];
13
+ pattern?: RegExp;
14
+ validate?: (value: string) => boolean;
15
+ validDescription?: string;
16
+ }
17
+ export interface CliUsageError {
18
+ code: CliUsageErrorCode;
19
+ command: string;
20
+ message: string;
21
+ userAction: string;
22
+ }
23
+ /** The failures a command's `refine` hook builds, with the command's own recovery lines. */
24
+ export interface ContractFailures {
25
+ usage(code: CliUsageErrorCode, message: string): CliUsageError;
26
+ missingPositional(message: string): CliUsageError;
27
+ }
28
+ export interface CommandContract {
29
+ usage?: string;
30
+ options: Readonly<Record<string, OptionSpec>>;
31
+ positionals?: readonly PositionalSpec[];
32
+ minimumPositionals?: number;
33
+ variadic?: PositionalSpec;
34
+ requiredUnless?: readonly string[];
35
+ noPositionalsWith?: readonly string[];
36
+ leadingPositionals?: number;
37
+ allowPassthrough?: boolean;
38
+ /** A sub-grammar another tool validates: skip this contract entirely. */
39
+ bypass?: (tokens: readonly string[]) => boolean;
40
+ /** Command-specific rules, after option parsing and before the positional checks. */
41
+ refine?: (positionals: readonly string[], seenOptions: ReadonlySet<string>, fail: ContractFailures) => CliUsageError | null;
42
+ /** The recovery for a missing positional, given the command's example. */
43
+ missingPositionalAction?: (example: string) => string;
44
+ }
45
+ /** A command the contract knows: its name, aliases, example and grammar. */
46
+ export interface ContractedCommand {
47
+ name: string;
48
+ aliases?: readonly string[];
49
+ example: string;
50
+ contract: CommandContract;
51
+ }
52
+ export interface ContractValidationOptions {
53
+ /** Retired option spellings and the option that replaces each, for the suggestion. */
54
+ replacedOptions?: Readonly<Record<string, string>>;
55
+ }
56
+ export declare const booleanOption: () => OptionSpec;
57
+ export declare const valueOption: (choices?: OptionSpec["choices"]) => OptionSpec;
58
+ export declare const optionalValueOption: (choices?: OptionSpec["choices"]) => OptionSpec;
59
+ export declare const contractOptions: (...groups: Record<string, OptionSpec>[]) => Readonly<Record<string, OptionSpec>>;
60
+ /**
61
+ * The usage error for `argv`, or null when it is valid. `commands` is the
62
+ * host's public table; its order is the order "Valid commands" lists.
63
+ */
64
+ export declare function validatePublicInvocation(argv: readonly string[], commands: readonly ContractedCommand[], validation?: ContractValidationOptions): CliUsageError | null;
65
+ /** Every value `option` takes in `tokens` before any `--`, separate (`--x v`) or inline (`--x=v`). */
66
+ export declare function optionValues(tokens: readonly string[], option: string): string[];
67
+ /** Every public command name and alias, in table order. */
68
+ export declare function publicCommandTokens(commands: readonly ContractedCommand[]): string[];
69
+ //# sourceMappingURL=command-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-contract.d.ts","sourceRoot":"","sources":["../../src/harness/command-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,243 @@
1
+ // The strict public grammar a host CLI checks before commander can consume a
2
+ // typo as a value: each public command declares its options and positionals,
3
+ // and a mismatch becomes a stable, machine-readable usage error.
4
+ import { harnessHost } from './host.js';
5
+ import { closest } from './suggest.js';
6
+ export const booleanOption = () => ({ kind: 'boolean' });
7
+ export const valueOption = (choices) => ({
8
+ kind: 'value',
9
+ ...(choices ? { choices } : {}),
10
+ });
11
+ export const optionalValueOption = (choices) => ({
12
+ kind: 'optional-value',
13
+ ...(choices ? { choices } : {}),
14
+ });
15
+ export const contractOptions = (...groups) => Object.assign({}, ...groups);
16
+ /**
17
+ * The usage error for `argv`, or null when it is valid. `commands` is the
18
+ * host's public table; its order is the order "Valid commands" lists.
19
+ */
20
+ export function validatePublicInvocation(argv, commands, validation = {}) {
21
+ const host = harnessHost().name;
22
+ const examples = Object.fromEntries(commands.map((command) => [command.name, command.example]));
23
+ const token = argv[0];
24
+ if (!token || token === '--help' || token === '-h' || token === '--version' || token === '-v')
25
+ return null;
26
+ const resolved = resolveContractedCommand(token, commands);
27
+ if (!resolved) {
28
+ const suggestion = closest(token, publicCommandTokens(commands));
29
+ if (token.startsWith('-')) {
30
+ return {
31
+ code: 'CLI_UNKNOWN_OPTION',
32
+ command: host,
33
+ message: `unknown top-level option '${token}'. Valid top-level options: --help, --version.`,
34
+ userAction: actionFor(token, closest(token, ['--help', '--version']), `${host} --help`),
35
+ };
36
+ }
37
+ return {
38
+ code: 'CLI_UNKNOWN_COMMAND',
39
+ command: token,
40
+ message: `unknown command '${token}'. Valid commands: ${commands.map((command) => command.name).join(', ')}.`,
41
+ userAction: actionFor(token, suggestion, suggestion
42
+ ? exampleFor(host, resolveContractedCommand(suggestion, commands)?.name, examples)
43
+ : `${host} --help`),
44
+ };
45
+ }
46
+ const { name, contract } = resolved;
47
+ const tokens = argv.slice(1);
48
+ if (contract.bypass?.(tokens))
49
+ return null;
50
+ const fail = {
51
+ usage: (code, message) => usageFailure(host, code, name, message, examples),
52
+ missingPositional: (message) => missingPositionalFailure(host, name, message, contract, examples),
53
+ };
54
+ const positionals = [];
55
+ const seenOptions = new Set();
56
+ const validOptions = Object.keys(contract.options);
57
+ for (let index = 0; index < tokens.length; index += 1) {
58
+ const argument = tokens[index] ?? '';
59
+ if (argument === '--') {
60
+ if (!contract.allowPassthrough) {
61
+ return fail.usage('CLI_UNEXPECTED_PASSTHROUGH', 'this command does not accept `--` passthrough.');
62
+ }
63
+ break;
64
+ }
65
+ if (!argument.startsWith('-') || argument === '-') {
66
+ positionals.push(argument);
67
+ continue;
68
+ }
69
+ const equals = argument.indexOf('=');
70
+ const optionName = equals === -1 ? argument : argument.slice(0, equals);
71
+ const inlineValue = equals === -1 ? undefined : argument.slice(equals + 1);
72
+ const spec = contract.options[optionName];
73
+ if (!spec) {
74
+ const suggestion = validation.replacedOptions?.[optionName] ?? closest(optionName, validOptions);
75
+ return {
76
+ code: 'CLI_UNKNOWN_OPTION',
77
+ command: name,
78
+ message: `unknown option '${optionName}'.`,
79
+ userAction: actionFor(optionName, suggestion, exampleFor(host, name, examples)),
80
+ };
81
+ }
82
+ seenOptions.add(optionName);
83
+ if (spec.kind === 'boolean') {
84
+ if (inlineValue !== undefined) {
85
+ return fail.usage('CLI_INVALID_OPTION_VALUE', `${optionName} is a flag and does not take a value.`);
86
+ }
87
+ continue;
88
+ }
89
+ if (spec.kind === 'optional-value' && inlineValue === undefined)
90
+ continue;
91
+ const optionValue = inlineValue ?? tokens[index + 1];
92
+ const nextTokenIsOption = inlineValue === undefined &&
93
+ (optionValue === '-h' || optionValue === '--' || optionValue?.startsWith('--'));
94
+ if (optionValue === undefined ||
95
+ (spec.kind === 'value' && optionValue === '') ||
96
+ nextTokenIsOption) {
97
+ return fail.usage('CLI_MISSING_OPTION_VALUE', `${optionName} requires a value.`);
98
+ }
99
+ if (inlineValue === undefined)
100
+ index += 1;
101
+ const choices = typeof spec.choices === 'function' ? spec.choices(tokens) : spec.choices;
102
+ if (choices && !choices.includes(optionValue)) {
103
+ const suggestion = closest(optionValue, choices);
104
+ return {
105
+ code: 'CLI_INVALID_OPTION_VALUE',
106
+ command: name,
107
+ message: `${optionName} must be ${formatChoiceList(choices)}; received '${optionValue}'.`,
108
+ userAction: actionFor(optionValue, suggestion, exampleFor(host, name, examples)),
109
+ };
110
+ }
111
+ }
112
+ if (seenOptions.has('--help') || seenOptions.has('-h'))
113
+ return null;
114
+ const refined = contract.refine?.(positionals, seenOptions, fail);
115
+ if (refined)
116
+ return refined;
117
+ if (contract.leadingPositionals &&
118
+ !contract.requiredUnless?.some((option) => seenOptions.has(option)) &&
119
+ tokens
120
+ .slice(0, contract.leadingPositionals)
121
+ .some((argument) => !argument || argument.startsWith('-'))) {
122
+ const missing = contract.positionals?.[0]?.label ?? 'argument';
123
+ return fail.missingPositional(`${name} requires <${missing}> first.`);
124
+ }
125
+ const forbiddingOption = contract.noPositionalsWith?.find((option) => seenOptions.has(option));
126
+ if (forbiddingOption && positionals.length > 0) {
127
+ return fail.usage('CLI_EXCESS_POSITIONAL', `${forbiddingOption} does not accept positional '${positionals[0]}'.`);
128
+ }
129
+ const minimum = contract.requiredUnless?.some((option) => seenOptions.has(option))
130
+ ? 0
131
+ : (contract.minimumPositionals ?? 0);
132
+ if (positionals.length < minimum) {
133
+ const missingSpec = contract.positionals?.[positionals.length];
134
+ const missing = missingSpec?.label ?? 'argument';
135
+ const valid = missingSpec?.choices?.length
136
+ ? ` Choose one: ${missingSpec.choices.join('|')}.`
137
+ : '';
138
+ const usage = contract.usage ? ` Usage: ${contract.usage}.` : '';
139
+ return fail.missingPositional(`missing required <${missing}>.${valid}${usage}`);
140
+ }
141
+ const fixed = contract.positionals ?? [];
142
+ for (let index = 0; index < Math.min(positionals.length, fixed.length); index += 1) {
143
+ if (invalidPositional(positionals[index] ?? '', fixed[index]))
144
+ return positionalFailure(host, name, positionals[index] ?? '', fixed[index], examples);
145
+ }
146
+ if (positionals.length > fixed.length && !contract.variadic) {
147
+ const unexpected = positionals[fixed.length] ?? '';
148
+ return fail.usage('CLI_EXCESS_POSITIONAL', `unexpected positional '${unexpected}'; this command accepts ${formatPositionals(contract)}.`);
149
+ }
150
+ if (contract.variadic) {
151
+ for (const positional of positionals.slice(fixed.length)) {
152
+ if (invalidPositional(positional, contract.variadic)) {
153
+ return positionalFailure(host, name, positional, contract.variadic, examples);
154
+ }
155
+ }
156
+ }
157
+ return null;
158
+ }
159
+ /** Every value `option` takes in `tokens` before any `--`, separate (`--x v`) or inline (`--x=v`). */
160
+ export function optionValues(tokens, option) {
161
+ const values = [];
162
+ const divider = tokens.indexOf('--');
163
+ const scope = divider === -1 ? tokens : tokens.slice(0, divider);
164
+ for (let index = 0; index < scope.length; index += 1) {
165
+ const token = scope[index] ?? '';
166
+ if (token === option && index + 1 < scope.length)
167
+ values.push(scope[(index += 1)] ?? '');
168
+ else if (token.startsWith(`${option}=`))
169
+ values.push(token.slice(option.length + 1));
170
+ }
171
+ return values;
172
+ }
173
+ /** Every public command name and alias, in table order. */
174
+ export function publicCommandTokens(commands) {
175
+ return commands.flatMap((command) => [command.name, ...(command.aliases ?? [])]);
176
+ }
177
+ function resolveContractedCommand(token, commands) {
178
+ return (commands.find((command) => command.name === token) ??
179
+ commands.find((command) => command.aliases?.includes(token)));
180
+ }
181
+ function usageFailure(host, code, command, message, examples) {
182
+ return {
183
+ code,
184
+ command,
185
+ message,
186
+ userAction: `Try: ${exampleFor(host, command, examples)}. Inspect options: ${host} ${command} --help`,
187
+ };
188
+ }
189
+ function missingPositionalFailure(host, command, message, contract, examples) {
190
+ if (contract.missingPositionalAction) {
191
+ return {
192
+ code: 'CLI_MISSING_POSITIONAL',
193
+ command,
194
+ message,
195
+ userAction: contract.missingPositionalAction(exampleFor(host, command, examples)),
196
+ };
197
+ }
198
+ return usageFailure(host, 'CLI_MISSING_POSITIONAL', command, message, examples);
199
+ }
200
+ function positionalFailure(host, command, received, spec, examples) {
201
+ const valid = spec.validDescription ??
202
+ (spec.choices
203
+ ? spec.choices.join(', ')
204
+ : spec.pattern || spec.validate
205
+ ? `a valid <${spec.label}>`
206
+ : `<${spec.label}>`);
207
+ const suggestion = spec.choices ? closest(received, spec.choices) : undefined;
208
+ return {
209
+ code: 'CLI_INVALID_POSITIONAL',
210
+ command,
211
+ message: `invalid <${spec.label}> '${received}'. Valid values: ${valid}.`,
212
+ userAction: actionFor(received, suggestion, exampleFor(host, command, examples)),
213
+ };
214
+ }
215
+ function invalidPositional(value, spec) {
216
+ if (!spec)
217
+ return true;
218
+ if (spec.choices && !spec.choices.includes(value))
219
+ return true;
220
+ if (spec.validate && !spec.validate(value))
221
+ return true;
222
+ return Boolean(spec.pattern && !spec.pattern.test(value));
223
+ }
224
+ function formatChoiceList(choices) {
225
+ if (choices.length === 1)
226
+ return choices[0] ?? '';
227
+ if (choices.length === 2)
228
+ return `${choices[0]} or ${choices[1]}`;
229
+ return `${choices.slice(0, -1).join(', ')}, or ${choices[choices.length - 1]}`;
230
+ }
231
+ function formatPositionals(contract) {
232
+ const fixed = (contract.positionals ?? []).map((spec) => `<${spec.label}>`);
233
+ if (contract.variadic)
234
+ fixed.push(`[<${contract.variadic.label}> ...]`);
235
+ return fixed.length > 0 ? fixed.join(' ') : 'no positionals';
236
+ }
237
+ function actionFor(received, suggestion, example) {
238
+ return `${suggestion ? `Did you mean '${suggestion}' instead of '${received}'? ` : ''}Try: ${example}`;
239
+ }
240
+ function exampleFor(host, command, examples) {
241
+ return command ? (examples[command] ?? `${host} ${command} --help`) : `${host} --help`;
242
+ }
243
+ //# sourceMappingURL=command-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-contract.js","sourceRoot":"","sources":["../../src/harness/command-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import type { AdapterRegistry } from '@farmslot/adapter-sdk';
2
+ import { type AdapterLoadOptions } from './adapter-plugins.js';
3
+ import type { RecipeCatalog } from './catalog.js';
4
+ import { type CommandContract } from './command-contract.js';
5
+ import { type HarnessHostConfig } from './host.js';
6
+ interface CommandBase {
7
+ name: string;
8
+ /** `now`: process.exit(code) at once. `code`: set process.exitCode and let open work drain. */
9
+ exit?: 'now' | 'code';
10
+ /** Whether the host's `beforeDispatch` hook runs for this command. Default true. */
11
+ nudge?: boolean;
12
+ /** `argv` is everything after the command token. A thrown error exits with its `exitCode`, else 1. */
13
+ run(argv: string[]): number | Promise<number>;
14
+ }
15
+ /** A command the grouped help lists and the public grammar checks. Default exit: `code`. */
16
+ export interface PublicHarnessCommand extends CommandBase {
17
+ hidden?: false;
18
+ aliases?: readonly string[];
19
+ summary: string;
20
+ example: string;
21
+ /** Printed for `<command> --help`. */
22
+ helpText: string;
23
+ contract: CommandContract;
24
+ /** Runs before the grammar check, library hydration and commander (a bootstrap command). */
25
+ raw?: boolean;
26
+ }
27
+ /** Real routing absent from the help, with its own private grammar. Default exit: `now`. */
28
+ export interface HiddenHarnessCommand extends CommandBase {
29
+ hidden: true;
30
+ }
31
+ export type HarnessCommand = PublicHarnessCommand | HiddenHarnessCommand;
32
+ export type HelpPaint = (style: string, text: string) => string;
33
+ export interface HarnessHelpGroup {
34
+ title: string;
35
+ blurb: string;
36
+ commands: readonly string[];
37
+ }
38
+ export interface HarnessHelp {
39
+ /** The commander program description. */
40
+ description: string;
41
+ /** The lines above the groups. */
42
+ intro(paint: HelpPaint): string[];
43
+ groups: readonly HarnessHelpGroup[];
44
+ /** The lines below the groups, after one blank line. */
45
+ footer(paint: HelpPaint): string[];
46
+ /** The adapter a runtime context's `platform` names, when it is not an adapter id. */
47
+ slotAdapter?(platform: string): string | undefined;
48
+ }
49
+ export interface HarnessCliOptions {
50
+ host: HarnessHostConfig;
51
+ adapters: AdapterRegistry;
52
+ /** Makes every library this machine resolves visible (RECIPE_LIBRARY_PATH) before dispatch. */
53
+ libraries?: {
54
+ hydrate(target: string): Promise<void>;
55
+ };
56
+ /** Public commands in the order "Valid commands" lists them, plus hidden ones. */
57
+ commands: readonly HarnessCommand[];
58
+ help: HarnessHelp;
59
+ /** Runs once per invocation before any command (an update nudge). */
60
+ beforeDispatch?(argv: readonly string[]): void;
61
+ /** When set, `call <action> --help` renders the action's fields above call's help. */
62
+ catalog?: RecipeCatalog;
63
+ /** Turns a library-declared adapter into the host's adapter before it registers. */
64
+ adopt?: AdapterLoadOptions['adopt'];
65
+ /** Libraries the host configures (a config file), searched after the others for adapters. */
66
+ configuredLibraries?(): AdapterLoadOptions['configured'];
67
+ /** Retired option spellings and their replacements, for the unknown-option suggestion. */
68
+ replacedOptions?: Readonly<Record<string, string>>;
69
+ }
70
+ export interface HarnessCliResult {
71
+ exitCode: number;
72
+ exit: 'now' | 'code';
73
+ }
74
+ export interface HarnessCli {
75
+ /** Parse and dispatch `argv` (without node and script); never exits the process. */
76
+ main(argv: readonly string[]): Promise<HarnessCliResult>;
77
+ /** `main(process.argv.slice(2))`, then exit as the command asked. */
78
+ run(argv?: readonly string[]): Promise<void>;
79
+ }
80
+ export declare function createHarnessCli(options: HarnessCliOptions): HarnessCli;
81
+ export {};
82
+ //# sourceMappingURL=harness-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-cli.d.ts","sourceRoot":"","sources":["../../src/harness/harness-cli.ts"],"names":[],"mappings":"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"}