@farmslot/recipe-cli 0.2.0 → 0.3.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 (79) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +13 -9
  3. package/dist/harness/adapters.d.ts +25 -0
  4. package/dist/harness/adapters.d.ts.map +1 -0
  5. package/dist/harness/adapters.js +87 -0
  6. package/dist/harness/adapters.js.map +1 -0
  7. package/dist/harness/artifact-files.d.ts +11 -0
  8. package/dist/harness/artifact-files.d.ts.map +1 -0
  9. package/dist/harness/artifact-files.js +75 -0
  10. package/dist/harness/artifact-files.js.map +1 -0
  11. package/dist/harness/checkout-lock.d.ts +13 -0
  12. package/dist/harness/checkout-lock.d.ts.map +1 -0
  13. package/dist/harness/checkout-lock.js +211 -0
  14. package/dist/harness/checkout-lock.js.map +1 -0
  15. package/dist/harness/cli-color.d.ts +25 -0
  16. package/dist/harness/cli-color.d.ts.map +1 -0
  17. package/dist/harness/cli-color.js +101 -0
  18. package/dist/harness/cli-color.js.map +1 -0
  19. package/dist/harness/command-journal.d.ts +25 -0
  20. package/dist/harness/command-journal.d.ts.map +1 -0
  21. package/dist/harness/command-journal.js +322 -0
  22. package/dist/harness/command-journal.js.map +1 -0
  23. package/dist/harness/commands/last.d.ts +3 -0
  24. package/dist/harness/commands/last.d.ts.map +1 -0
  25. package/dist/harness/commands/last.js +59 -0
  26. package/dist/harness/commands/last.js.map +1 -0
  27. package/dist/harness/commands/launch.d.ts +2 -0
  28. package/dist/harness/commands/launch.d.ts.map +1 -0
  29. package/dist/harness/commands/launch.js +105 -0
  30. package/dist/harness/commands/launch.js.map +1 -0
  31. package/dist/harness/commands/reload.d.ts +2 -0
  32. package/dist/harness/commands/reload.d.ts.map +1 -0
  33. package/dist/harness/commands/reload.js +24 -0
  34. package/dist/harness/commands/reload.js.map +1 -0
  35. package/dist/harness/commands/stop.d.ts +9 -0
  36. package/dist/harness/commands/stop.d.ts.map +1 -0
  37. package/dist/harness/commands/stop.js +60 -0
  38. package/dist/harness/commands/stop.js.map +1 -0
  39. package/dist/harness/heal-bounds.d.ts +15 -0
  40. package/dist/harness/heal-bounds.d.ts.map +1 -0
  41. package/dist/harness/heal-bounds.js +194 -0
  42. package/dist/harness/heal-bounds.js.map +1 -0
  43. package/dist/harness/host.d.ts +37 -0
  44. package/dist/harness/host.d.ts.map +1 -0
  45. package/dist/harness/host.js +48 -0
  46. package/dist/harness/host.js.map +1 -0
  47. package/dist/harness/index.d.ts +19 -0
  48. package/dist/harness/index.d.ts.map +1 -0
  49. package/dist/harness/index.js +22 -0
  50. package/dist/harness/index.js.map +1 -0
  51. package/dist/harness/json-stream.d.ts +19 -0
  52. package/dist/harness/json-stream.d.ts.map +1 -0
  53. package/dist/harness/json-stream.js +59 -0
  54. package/dist/harness/json-stream.js.map +1 -0
  55. package/dist/harness/leaf-invoke.d.ts +8 -0
  56. package/dist/harness/leaf-invoke.d.ts.map +1 -0
  57. package/dist/harness/leaf-invoke.js +31 -0
  58. package/dist/harness/leaf-invoke.js.map +1 -0
  59. package/dist/harness/library-provenance.d.ts +3 -0
  60. package/dist/harness/library-provenance.d.ts.map +1 -0
  61. package/dist/harness/library-provenance.js +31 -0
  62. package/dist/harness/library-provenance.js.map +1 -0
  63. package/dist/harness/overlay.d.ts +17 -0
  64. package/dist/harness/overlay.d.ts.map +1 -0
  65. package/dist/harness/overlay.js +415 -0
  66. package/dist/harness/overlay.js.map +1 -0
  67. package/dist/harness/parse-args.d.ts +35 -0
  68. package/dist/harness/parse-args.d.ts.map +1 -0
  69. package/dist/harness/parse-args.js +249 -0
  70. package/dist/harness/parse-args.js.map +1 -0
  71. package/dist/harness/paths.d.ts +15 -0
  72. package/dist/harness/paths.d.ts.map +1 -0
  73. package/dist/harness/paths.js +29 -0
  74. package/dist/harness/paths.js.map +1 -0
  75. package/dist/harness/shared.d.ts +43 -0
  76. package/dist/harness/shared.d.ts.map +1 -0
  77. package/dist/harness/shared.js +414 -0
  78. package/dist/harness/shared.js.map +1 -0
  79. package/package.json +9 -2
@@ -0,0 +1,35 @@
1
+ export type CliOptionValue = string | boolean | readonly string[];
2
+ export type CliOptions = Record<string, CliOptionValue>;
3
+ export interface ParsedArgs {
4
+ positional: string[];
5
+ options: CliOptions;
6
+ rawArgv: string[];
7
+ }
8
+ export declare class CliError extends Error {
9
+ readonly exitCode: number;
10
+ constructor(message: string, exitCode: number);
11
+ }
12
+ export declare function usageError(message: string): CliError;
13
+ export interface ParseArgsOptions {
14
+ recordIsFlag?: boolean;
15
+ }
16
+ export declare function parseArgs(argv: string[], parse?: ParseArgsOptions): ParsedArgs;
17
+ export declare function parseRecipeParamAssignments(values: readonly string[]): Record<string, unknown>;
18
+ export declare function optionString(options: CliOptions, key: string): string | undefined;
19
+ export declare function optionStrings(options: CliOptions, key: string): readonly string[] | undefined;
20
+ export declare function optionFlag(options: CliOptions, key: string): boolean;
21
+ export declare function applyRuntimeDirOption(options: CliOptions): void;
22
+ export declare function applyWatcherPortOption(options: CliOptions): void;
23
+ export declare function requiredOption(options: CliOptions, key: string, message: string): string;
24
+ export declare function adapterOption(options: CliOptions): string;
25
+ export declare function targetPath(options: CliOptions): string;
26
+ export declare function actionManifestPathOption(options: CliOptions, adapter: string): string;
27
+ export declare function parsePort(value: string | undefined, errorMessage: string): number;
28
+ export declare function resolveAdapter(options: CliOptions): {
29
+ adapter: string;
30
+ target: string;
31
+ };
32
+ export declare function shellQuote(value: string): string;
33
+ export declare function shellQuoteArg(value: string): string;
34
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
35
+ //# sourceMappingURL=parse-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-args.d.ts","sourceRoot":"","sources":["../../src/harness/parse-args.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,MAAM,EAAE,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAOD,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACd,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAK9C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAEpD;AAED,MAAM,WAAW,gBAAgB;IAE/B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,gBAAqB,GAAG,UAAU,CAoElF;AAqBD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2B9F;AAoBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKjF;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAO7F;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAGpE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAG/D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAMhE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIxF;AASD,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAQzD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEtD;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGrF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAIjF;AAKD,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAcvF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE"}
@@ -0,0 +1,249 @@
1
+ // Shared argv/option parsing for dispatch-backed commands: positionals,
2
+ // camelCased options, repeatable `--library`, and the typed usage error.
3
+ import path from 'node:path';
4
+ import { adapterDetectNext, adapterFlags, adapterForPlatform, adapterPortEnv, assertAdapter, detectAdapter, harnessAdapter, undetectedAdapterMessage, } from './adapters.js';
5
+ import { EXIT } from './shared.js';
6
+ // Typed exit-code error: carries exitCode so both the global catch (the host bin)
7
+ // and the host's delegate() wrapper classify the error correctly rather than always
8
+ // returning 1. Usage errors (bad args / unsupported flags) carry EXIT.usage (2);
9
+ // validation errors carry EXIT.validation (5). Never throw a plain new Error() for
10
+ // user-facing bad-args cases — use usageError() so the exit code is preserved.
11
+ export class CliError extends Error {
12
+ constructor(message, exitCode) {
13
+ super(message);
14
+ this.name = 'CliError';
15
+ this.exitCode = exitCode;
16
+ }
17
+ }
18
+ export function usageError(message) {
19
+ return new CliError(message, EXIT.usage);
20
+ }
21
+ export function parseArgs(argv, parse = {}) {
22
+ const positional = [];
23
+ const options = {};
24
+ const booleanOptions = new Set([
25
+ 'json',
26
+ 'jsonStream',
27
+ 'resetProfile',
28
+ 'preserveProfile',
29
+ 'record',
30
+ 'plan',
31
+ 'proof',
32
+ 'list',
33
+ 'describe',
34
+ 'raw',
35
+ 'matrix',
36
+ 'categories',
37
+ 'fix',
38
+ 'force',
39
+ 'expectLive',
40
+ 'printReady',
41
+ 'fast',
42
+ 'allDevices',
43
+ 'watch',
44
+ 'help',
45
+ 'noOpen',
46
+ ...adapterFlags('commands'),
47
+ ]);
48
+ const repeatableOptions = new Set(['library']);
49
+ for (let i = 0; i < argv.length; i += 1) {
50
+ const arg = argv[i];
51
+ if (!arg.startsWith('--')) {
52
+ positional.push(arg);
53
+ continue;
54
+ }
55
+ const body = arg.slice(2);
56
+ const equalsIndex = body.indexOf('=');
57
+ const rawKey = equalsIndex === -1 ? body : body.slice(0, equalsIndex);
58
+ const inlineValue = equalsIndex === -1 ? undefined : body.slice(equalsIndex + 1);
59
+ const key = normalizeOptionKey(rawKey);
60
+ if (key === 'recordVideo') {
61
+ options.recordVideo = parseRecordVideoMode(inlineValue);
62
+ continue;
63
+ }
64
+ if (key === 'recordBaseline') {
65
+ options.record = true;
66
+ continue;
67
+ }
68
+ if (key === 'record') {
69
+ if (parse.recordIsFlag) {
70
+ options.record = true;
71
+ continue;
72
+ }
73
+ options.recordVideo = 'full-run';
74
+ continue;
75
+ }
76
+ if (booleanOptions.has(key)) {
77
+ options[key] = true;
78
+ continue;
79
+ }
80
+ if (inlineValue !== undefined) {
81
+ assignOption(options, key, inlineValue, repeatableOptions);
82
+ continue;
83
+ }
84
+ if (i + 1 >= argv.length)
85
+ throw usageError(`Missing value for ${arg}`);
86
+ assignOption(options, key, argv[i + 1], repeatableOptions);
87
+ i += 1;
88
+ }
89
+ return { positional, options, rawArgv: [...argv] };
90
+ }
91
+ function assignOption(options, key, value, repeatableOptions) {
92
+ if (!repeatableOptions.has(key)) {
93
+ options[key] = value;
94
+ return;
95
+ }
96
+ const existing = options[key];
97
+ if (existing === undefined) {
98
+ options[key] = [value];
99
+ return;
100
+ }
101
+ if (!Array.isArray(existing))
102
+ throw usageError(`--${key} has conflicting values.`);
103
+ options[key] = [...existing, value];
104
+ }
105
+ export function parseRecipeParamAssignments(values) {
106
+ const params = {};
107
+ for (const assignment of values) {
108
+ const separator = assignment.indexOf('=');
109
+ if (separator <= 0) {
110
+ throw usageError(`recipe parameter ${JSON.stringify(assignment)} must use key=value.`);
111
+ }
112
+ const key = assignment.slice(0, separator).trim();
113
+ if (!key)
114
+ throw usageError(`recipe parameter ${JSON.stringify(assignment)} has an empty key.`);
115
+ if (Object.hasOwn(params, key)) {
116
+ throw usageError(`recipe parameter ${JSON.stringify(key)} was provided more than once.`);
117
+ }
118
+ const raw = assignment.slice(separator + 1);
119
+ let value;
120
+ try {
121
+ value = JSON.parse(raw);
122
+ }
123
+ catch {
124
+ value = raw;
125
+ }
126
+ Object.defineProperty(params, key, {
127
+ value,
128
+ enumerable: true,
129
+ configurable: true,
130
+ writable: true,
131
+ });
132
+ }
133
+ return params;
134
+ }
135
+ function parseRecordVideoMode(value) {
136
+ if (value === undefined || value === '' || value === 'true')
137
+ return 'full-run';
138
+ if (value === 'off' || value === 'false')
139
+ return false;
140
+ if (value === 'proof-window' || value === 'proof_window') {
141
+ throw usageError('--record-video=proof-window is not supported yet; use --record-video=full-run.');
142
+ }
143
+ if (value !== 'full-run') {
144
+ throw usageError('--record-video must be full-run or off.');
145
+ }
146
+ return 'full-run';
147
+ }
148
+ function normalizeOptionKey(key) {
149
+ return key.replace(/-([a-z])/gu, (_, character) => character.toUpperCase());
150
+ }
151
+ export function optionString(options, key) {
152
+ const value = options[key];
153
+ if (value === undefined)
154
+ return undefined;
155
+ if (typeof value !== 'string')
156
+ throw usageError(`--${key} requires a value.`);
157
+ return value;
158
+ }
159
+ export function optionStrings(options, key) {
160
+ const value = options[key];
161
+ if (value === undefined)
162
+ return undefined;
163
+ if (!Array.isArray(value) || value.some((entry) => typeof entry !== 'string')) {
164
+ throw usageError(`--${key} requires a value.`);
165
+ }
166
+ return value;
167
+ }
168
+ export function optionFlag(options, key) {
169
+ const value = options[key];
170
+ return value === true;
171
+ }
172
+ export function applyRuntimeDirOption(options) {
173
+ const runtimeDir = optionString(options, 'runtimeDir');
174
+ if (runtimeDir)
175
+ process.env.RECIPE_RUNTIME_DIR = runtimeDir;
176
+ }
177
+ export function applyWatcherPortOption(options) {
178
+ const watcherPort = optionString(options, 'watcherPort');
179
+ if (!watcherPort)
180
+ return;
181
+ process.env.WATCHER_PORT = watcherPort;
182
+ process.env.RECIPE_WATCHER_PORT = watcherPort;
183
+ for (const name of adapterPortEnv())
184
+ process.env[name] = watcherPort;
185
+ }
186
+ export function requiredOption(options, key, message) {
187
+ const value = optionString(options, key);
188
+ if (!value)
189
+ throw usageError(message);
190
+ return value;
191
+ }
192
+ // An unknown adapter is a usage error; an empty registry is an internal one
193
+ // and keeps its own error.
194
+ function adapterUsageError(error) {
195
+ if (error instanceof Error && error.message.startsWith('internal:'))
196
+ return error;
197
+ return usageError(error instanceof Error ? error.message : String(error));
198
+ }
199
+ export function adapterOption(options) {
200
+ const adapter = optionString(options, 'adapter');
201
+ try {
202
+ assertAdapter(adapter);
203
+ }
204
+ catch (error) {
205
+ throw adapterUsageError(error);
206
+ }
207
+ return adapter;
208
+ }
209
+ export function targetPath(options) {
210
+ return path.resolve(optionString(options, 'target') ?? process.cwd());
211
+ }
212
+ export function actionManifestPathOption(options, adapter) {
213
+ const configured = optionString(options, 'actionManifest');
214
+ return configured ? path.resolve(configured) : harnessAdapter(adapter).actions.manifestPath();
215
+ }
216
+ export function parsePort(value, errorMessage) {
217
+ const port = Number(value);
218
+ if (!Number.isInteger(port) || port <= 0)
219
+ throw usageError(errorMessage);
220
+ return port;
221
+ }
222
+ // Shared adapter resolution: explicit --adapter/--platform, else auto-detect from
223
+ // --target/cwd (the exact detect story doctor/verify/install use). Lets `call`,
224
+ // `run --plan`, and `completion-candidates` work in a checkout without a flag.
225
+ export function resolveAdapter(options) {
226
+ const target = targetPath(options);
227
+ const explicit = optionString(options, 'adapter') ?? adapterForPlatform(optionString(options, 'platform'));
228
+ const adapter = explicit ?? detectAdapter(target);
229
+ if (!adapter) {
230
+ throw usageError(`${undetectedAdapterMessage(target)}\n Next: ${adapterDetectNext()}`);
231
+ }
232
+ try {
233
+ assertAdapter(adapter);
234
+ }
235
+ catch (error) {
236
+ throw adapterUsageError(error);
237
+ }
238
+ return { adapter, target };
239
+ }
240
+ export function shellQuote(value) {
241
+ return `'${value.replace(/'/gu, `'\\''`)}'`;
242
+ }
243
+ export function shellQuoteArg(value) {
244
+ return /^[A-Za-z0-9_./:=@+-]+$/u.test(value) ? value : shellQuote(value);
245
+ }
246
+ export function isRecord(value) {
247
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
248
+ }
249
+ //# sourceMappingURL=parse-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-args.js","sourceRoot":"","sources":["../../src/harness/parse-args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export declare const DEFAULT_RECIPE_RUNTIME_DIR = "temp/recipe/runtime";
2
+ export declare const DEFAULT_RECIPE_HARNESS_ROOT = "temp/recipe/harness";
3
+ /** The checkout-relative runtime directory: `RECIPE_RUNTIME_DIR`, else the default. */
4
+ export declare function recipeRuntimeDir(): string;
5
+ /** The checkout-relative overlay directory: `RECIPE_HARNESS_ROOT`, else the default. */
6
+ export declare function recipeHarnessRoot(): string;
7
+ export declare function recipeRuntimePath(projectRoot: string, ...segments: string[]): string;
8
+ export declare function recipeHarnessPath(projectRoot: string, ...segments: string[]): string;
9
+ /**
10
+ * The host executable serving this run. The host bin exports its own resolved
11
+ * path as `<envPrefix>_EXECUTABLE`, so a command that re-enters the harness
12
+ * reaches the install a task locked onto rather than whatever PATH resolves to.
13
+ */
14
+ export declare function harnessExecutable(): string;
15
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/harness/paths.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAChE,eAAO,MAAM,2BAA2B,wBAAwB,CAAC;AAEjE,uFAAuF;AACvF,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAEpF;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C"}
@@ -0,0 +1,29 @@
1
+ import path from 'node:path';
2
+ import { harnessHost, hostEnvName, validateRelativeRecipePath } from './host.js';
3
+ // The checkout layout every host and shell leaf shares (`temp/recipe/runtime/<adapter>/`).
4
+ export const DEFAULT_RECIPE_RUNTIME_DIR = 'temp/recipe/runtime';
5
+ export const DEFAULT_RECIPE_HARNESS_ROOT = 'temp/recipe/harness';
6
+ /** The checkout-relative runtime directory: `RECIPE_RUNTIME_DIR`, else the default. */
7
+ export function recipeRuntimeDir() {
8
+ return validateRelativeRecipePath('RECIPE_RUNTIME_DIR', process.env.RECIPE_RUNTIME_DIR || DEFAULT_RECIPE_RUNTIME_DIR);
9
+ }
10
+ /** The checkout-relative overlay directory: `RECIPE_HARNESS_ROOT`, else the default. */
11
+ export function recipeHarnessRoot() {
12
+ return validateRelativeRecipePath('RECIPE_HARNESS_ROOT', process.env.RECIPE_HARNESS_ROOT || DEFAULT_RECIPE_HARNESS_ROOT);
13
+ }
14
+ export function recipeRuntimePath(projectRoot, ...segments) {
15
+ return path.join(projectRoot, recipeRuntimeDir(), ...segments);
16
+ }
17
+ export function recipeHarnessPath(projectRoot, ...segments) {
18
+ return path.join(projectRoot, recipeHarnessRoot(), ...segments);
19
+ }
20
+ /**
21
+ * The host executable serving this run. The host bin exports its own resolved
22
+ * path as `<envPrefix>_EXECUTABLE`, so a command that re-enters the harness
23
+ * reaches the install a task locked onto rather than whatever PATH resolves to.
24
+ */
25
+ export function harnessExecutable() {
26
+ const host = harnessHost();
27
+ return path.resolve(process.env[hostEnvName('EXECUTABLE')] ?? path.join(host.packageRoot, host.bin));
28
+ }
29
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/harness/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAEjF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAAqB,CAAC;AAChE,MAAM,CAAC,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;AAEjE,uFAAuF;AACvF,MAAM,UAAU,gBAAgB;IAC9B,OAAO,0BAA0B,CAC/B,oBAAoB,EACpB,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,0BAA0B,CAC7D,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,0BAA0B,CAC/B,qBAAqB,EACrB,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,2BAA2B,CAC/D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAmB,EAAE,GAAG,QAAkB;IAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAAmB,EAAE,GAAG,QAAkB;IAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,OAAO,CACjB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAChF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,43 @@
1
+ export declare const EXIT: {
2
+ readonly ok: 0;
3
+ readonly runtime: 1;
4
+ readonly usage: 2;
5
+ readonly infra: 3;
6
+ readonly bounded: 4;
7
+ readonly validation: 5;
8
+ };
9
+ export declare function writeInteractiveProgress(json: boolean, message: string, { stdoutIsTTY, stream, }?: {
10
+ stdoutIsTTY?: boolean;
11
+ stream?: Pick<NodeJS.WriteStream, 'write'>;
12
+ }): boolean;
13
+ export interface ParsedFlags {
14
+ positional: string[];
15
+ options: Record<string, string | boolean>;
16
+ }
17
+ export declare function parseFlags(argv: string[], booleans: Set<string>): ParsedFlags;
18
+ export declare function str(options: Record<string, string | boolean>, key: string): string | undefined;
19
+ export declare function flag(options: Record<string, string | boolean>, key: string): boolean;
20
+ export declare function targetOf(options: Record<string, string | boolean>): string;
21
+ export declare function resolveFlagsAdapter(options: Record<string, string | boolean>, target: string, hint?: string): string | undefined;
22
+ export interface ScriptResult {
23
+ error?: Error;
24
+ status: number;
25
+ output: string;
26
+ timedOut?: boolean;
27
+ timeoutMs?: number;
28
+ }
29
+ export interface StreamingSpawnOptions {
30
+ stage?: string;
31
+ capture?: boolean;
32
+ stdin?: 'ignore' | 'inherit';
33
+ forward?: 'stderr' | 'original' | 'none';
34
+ env?: Record<string, string>;
35
+ timeoutMs?: number;
36
+ }
37
+ export declare function scriptOverride(scriptPath: string): string | undefined;
38
+ export declare function spawnScript(script: string, args: string[], cwd: string, json: boolean, env?: Record<string, string>): ScriptResult;
39
+ export declare function spawnInherit(script: string, args: string[], cwd: string): number;
40
+ export declare function spawnScriptStreaming(script: string, args: string[], cwd: string, options?: Record<string, string> | StreamingSpawnOptions): Promise<ScriptResult>;
41
+ export declare function usageOut(json: boolean, command: string, message: string, userAction: string): number;
42
+ export declare function checkoutBusyOut(json: boolean, command: string, message: string, lockPath: string): number;
43
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/harness/shared.ts"],"names":[],"mappings":"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"}