@farmslot/recipe-cli 0.11.4 → 0.13.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 +10 -0
- package/dist/discovery-index.d.ts +9 -0
- package/dist/discovery-index.d.ts.map +1 -1
- package/dist/discovery-index.js +4 -1
- package/dist/discovery-index.js.map +1 -1
- package/dist/harness/adapter-plugins.d.ts +2 -1
- package/dist/harness/adapter-plugins.d.ts.map +1 -1
- package/dist/harness/adapter-plugins.js +1 -1
- package/dist/harness/adapter-plugins.js.map +1 -1
- package/dist/harness/adapters.d.ts +1 -0
- package/dist/harness/adapters.d.ts.map +1 -1
- package/dist/harness/adapters.js +1 -1
- package/dist/harness/adapters.js.map +1 -1
- package/dist/harness/catalog.d.ts +8 -1
- package/dist/harness/catalog.d.ts.map +1 -1
- package/dist/harness/catalog.js +125 -1
- package/dist/harness/catalog.js.map +1 -1
- package/dist/harness/commands/call.d.ts +7 -0
- package/dist/harness/commands/call.d.ts.map +1 -1
- package/dist/harness/commands/call.js +15 -10
- package/dist/harness/commands/call.js.map +1 -1
- package/dist/harness/commands/discover.d.ts +4 -0
- package/dist/harness/commands/discover.d.ts.map +1 -1
- package/dist/harness/commands/discover.js +7 -7
- package/dist/harness/commands/discover.js.map +1 -1
- package/dist/harness/commands/run.d.ts +12 -1
- package/dist/harness/commands/run.d.ts.map +1 -1
- package/dist/harness/commands/run.js +90 -21
- package/dist/harness/commands/run.js.map +1 -1
- package/dist/harness/conformance.d.ts +35 -0
- package/dist/harness/conformance.d.ts.map +1 -0
- package/dist/harness/conformance.js +244 -0
- package/dist/harness/conformance.js.map +1 -0
- package/dist/harness/context-state.d.ts +55 -0
- package/dist/harness/context-state.d.ts.map +1 -1
- package/dist/harness/context-state.js +11 -0
- package/dist/harness/context-state.js.map +1 -1
- package/dist/harness/context.d.ts +51 -2
- package/dist/harness/context.d.ts.map +1 -1
- package/dist/harness/context.js +461 -26
- package/dist/harness/context.js.map +1 -1
- package/dist/harness/execution-provenance.d.ts +9 -5
- package/dist/harness/execution-provenance.d.ts.map +1 -1
- package/dist/harness/execution-provenance.js +56 -5
- package/dist/harness/execution-provenance.js.map +1 -1
- package/dist/harness/harness-cli.d.ts +3 -0
- package/dist/harness/harness-cli.d.ts.map +1 -1
- package/dist/harness/harness-cli.js +9 -3
- package/dist/harness/harness-cli.js.map +1 -1
- package/dist/harness/host.d.ts +10 -0
- package/dist/harness/host.d.ts.map +1 -1
- package/dist/harness/host.js +26 -0
- package/dist/harness/host.js.map +1 -1
- package/dist/harness/index.d.ts +12 -9
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +12 -9
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/json-stream.d.ts +7 -2
- package/dist/harness/json-stream.d.ts.map +1 -1
- package/dist/harness/json-stream.js +76 -10
- package/dist/harness/json-stream.js.map +1 -1
- package/dist/harness/library-provenance.d.ts +2 -1
- package/dist/harness/library-provenance.d.ts.map +1 -1
- package/dist/harness/library-provenance.js +5 -1
- package/dist/harness/library-provenance.js.map +1 -1
- package/dist/harness/live-adapter-contract.d.ts +1 -1
- package/dist/harness/live-adapter-contract.d.ts.map +1 -1
- package/dist/harness/live-adapter-contract.js +38 -96
- package/dist/harness/live-adapter-contract.js.map +1 -1
- package/dist/harness/parse-args.d.ts +2 -0
- package/dist/harness/parse-args.d.ts.map +1 -1
- package/dist/harness/parse-args.js +4 -1
- package/dist/harness/parse-args.js.map +1 -1
- package/dist/harness/paths.d.ts +4 -0
- package/dist/harness/paths.d.ts.map +1 -1
- package/dist/harness/paths.js +22 -0
- package/dist/harness/paths.js.map +1 -1
- package/dist/harness/project-command.d.ts +11 -0
- package/dist/harness/project-command.d.ts.map +1 -0
- package/dist/harness/project-command.js +32 -0
- package/dist/harness/project-command.js.map +1 -0
- package/dist/harness/project-host.d.ts +22 -0
- package/dist/harness/project-host.d.ts.map +1 -0
- package/dist/harness/project-host.js +201 -0
- package/dist/harness/project-host.js.map +1 -0
- package/dist/harness/recipe-library.d.ts +12 -5
- package/dist/harness/recipe-library.d.ts.map +1 -1
- package/dist/harness/recipe-library.js +27 -8
- package/dist/harness/recipe-library.js.map +1 -1
- package/dist/harness/recipe-validation.d.ts +2 -1
- package/dist/harness/recipe-validation.d.ts.map +1 -1
- package/dist/harness/recipe-validation.js +4 -9
- package/dist/harness/recipe-validation.js.map +1 -1
- package/dist/harness/run-diagnostics.d.ts +2 -0
- package/dist/harness/run-diagnostics.d.ts.map +1 -1
- package/dist/harness/run-diagnostics.js +41 -0
- package/dist/harness/run-diagnostics.js.map +1 -1
- package/dist/harness/run-engine.d.ts +20 -2
- package/dist/harness/run-engine.d.ts.map +1 -1
- package/dist/harness/run-engine.js +227 -21
- package/dist/harness/run-engine.js.map +1 -1
- package/dist/harness/run-options.d.ts +2 -0
- package/dist/harness/run-options.d.ts.map +1 -1
- package/dist/harness/run-options.js +7 -5
- package/dist/harness/run-options.js.map +1 -1
- package/dist/harness/shared.d.ts +1 -0
- package/dist/harness/shared.d.ts.map +1 -1
- package/dist/harness/shared.js +62 -189
- package/dist/harness/shared.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { digestRecipeDocument, } from '@farmslot/protocol';
|
|
3
|
+
import { loadRecipeLibraries } from '@farmslot/recipe-runner';
|
|
4
|
+
import { libraryName } from './adapter-plugins.js';
|
|
5
|
+
import { writeContainedArtifact } from './artifact-files.js';
|
|
6
|
+
import { fileFingerprint, inputSourceSnapshot, providerSourceSnapshot, sourceIsDirty, sourceSnapshot, } from './execution-provenance.js';
|
|
7
|
+
import { optionString } from './parse-args.js';
|
|
8
|
+
import { recipeOutputRoots } from './paths.js';
|
|
9
|
+
import { resolveRecipeInvocation } from './recipe-library.js';
|
|
10
|
+
import { validateRunRecipeStatic } from './recipe-validation.js';
|
|
11
|
+
import { activateRecipeRuntimeEnvironment, preflightRecipe, } from './run-engine.js';
|
|
12
|
+
import { recipeRunOptionsFromCli, recipeTrustOptionsFromCli } from './run-options.js';
|
|
13
|
+
export function conformanceChecksPass(checks) {
|
|
14
|
+
const required = checks.filter((check) => check.required);
|
|
15
|
+
return (required.length > 0 &&
|
|
16
|
+
required.every((check) => check.status === 'pass' && check.evidence?.plan !== undefined));
|
|
17
|
+
}
|
|
18
|
+
/** Bind static and live claims to the same code, configuration and target identities. */
|
|
19
|
+
export async function recipeConformanceIdentity(catalog, options) {
|
|
20
|
+
return resolvedConformanceIdentity(options, await resolveConformanceInputs(catalog, options));
|
|
21
|
+
}
|
|
22
|
+
async function resolveConformanceInputs(catalog, options) {
|
|
23
|
+
const adapter = options.context.adapter?.value;
|
|
24
|
+
if (!adapter)
|
|
25
|
+
throw new Error('Conformance requires a resolved adapter.');
|
|
26
|
+
const invocations = await Promise.all(options.recipes.map(async (invocation) => {
|
|
27
|
+
const resolution = await resolveRecipeInvocation(catalog, invocation.recipe, adapter, undefined, options.librarySources);
|
|
28
|
+
const recipeFile = 'recipeFile' in resolution.resolved ? resolution.resolved.recipeFile : undefined;
|
|
29
|
+
return { ...invocation, ...resolution, recipeFile };
|
|
30
|
+
}));
|
|
31
|
+
const librarySources = new Map();
|
|
32
|
+
for (const source of [
|
|
33
|
+
...options.librarySources,
|
|
34
|
+
...invocations.flatMap((invocation) => invocation.librarySources),
|
|
35
|
+
]) {
|
|
36
|
+
librarySources.set(JSON.stringify([source.name, path.resolve(source.root)]), source);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
invocations,
|
|
40
|
+
librarySources: [...librarySources.values()],
|
|
41
|
+
configurationPaths: [
|
|
42
|
+
...new Set([
|
|
43
|
+
...options.configurationPaths,
|
|
44
|
+
...invocations.flatMap((invocation) => invocation.recipeFile ? [invocation.recipeFile] : []),
|
|
45
|
+
].map((file) => path.resolve(file))),
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function resolvedConformanceIdentity(options, inputs) {
|
|
50
|
+
const adapter = options.context.adapter?.value;
|
|
51
|
+
if (!adapter)
|
|
52
|
+
throw new Error('Conformance requires a resolved adapter.');
|
|
53
|
+
const excludedRoots = [
|
|
54
|
+
options.artifactsDir,
|
|
55
|
+
...(options.context.project
|
|
56
|
+
? recipeOutputRoots(options.context.target.value, options.context.project)
|
|
57
|
+
: []),
|
|
58
|
+
];
|
|
59
|
+
const checkout = sourceSnapshot(options.context.project?.checkoutRoot ?? options.context.target.value, undefined, excludedRoots);
|
|
60
|
+
const provider = options.context.project
|
|
61
|
+
? providerSourceSnapshot(options.providerRoot, options.context.project.provider.module, excludedRoots)
|
|
62
|
+
: inputSourceSnapshot(options.providerRoot, excludedRoots);
|
|
63
|
+
return {
|
|
64
|
+
project: options.project,
|
|
65
|
+
app: options.app ?? null,
|
|
66
|
+
domain: options.domain ?? null,
|
|
67
|
+
adapter,
|
|
68
|
+
target: options.context.target.value,
|
|
69
|
+
trustDigest: digestRecipeDocument(recipeTrustOptionsFromCli(options.cli ?? {})),
|
|
70
|
+
selection: {
|
|
71
|
+
slot: options.context.slot?.value ?? null,
|
|
72
|
+
adapterTarget: options.context.adapter?.requested ?? options.context.adapter?.value ?? null,
|
|
73
|
+
poolSlot: options.context.slot?.value
|
|
74
|
+
? (options.context.slot.poolSlot ??
|
|
75
|
+
(options.context.slot.source === 'slot' ? options.context.slot.value : null))
|
|
76
|
+
: null,
|
|
77
|
+
device: typeof options.cli?.device === 'string' ? options.cli.device : null,
|
|
78
|
+
ports: {
|
|
79
|
+
...(options.context.slot?.value ? options.context.slot.ports : {}),
|
|
80
|
+
...Object.fromEntries(Object.entries(options.context.ports ?? {}).flatMap(([name, port]) => port.value === undefined ? [] : [[name, port.value]])),
|
|
81
|
+
},
|
|
82
|
+
provider: options.context.project?.provider.module ?? null,
|
|
83
|
+
manifest: options.context.project?.manifest ?? null,
|
|
84
|
+
},
|
|
85
|
+
checkout: withDirtyDigest(checkout),
|
|
86
|
+
provider: withDirtyDigest(provider),
|
|
87
|
+
implementation: options.implementationSources?.map((source) => ({
|
|
88
|
+
name: source.name,
|
|
89
|
+
...withDirtyDigest(source.module
|
|
90
|
+
? providerSourceSnapshot(source.root, source.module, excludedRoots)
|
|
91
|
+
: inputSourceSnapshot(source.root, excludedRoots)),
|
|
92
|
+
})),
|
|
93
|
+
libraries: inputs.librarySources.map((source) => ({
|
|
94
|
+
name: libraryName(source),
|
|
95
|
+
path: path.resolve(source.root),
|
|
96
|
+
...withDirtyDigest(inputSourceSnapshot(source.root, excludedRoots)),
|
|
97
|
+
})),
|
|
98
|
+
invocations: inputs.invocations.map((invocation) => ({
|
|
99
|
+
recipe: invocation.recipe,
|
|
100
|
+
paramsDigest: digestRecipeDocument(invocation.params ?? {}),
|
|
101
|
+
})),
|
|
102
|
+
configuration: inputs.configurationPaths.map((file) => ({
|
|
103
|
+
path: path.resolve(file),
|
|
104
|
+
sourceFingerprint: fileFingerprint(file),
|
|
105
|
+
})),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export function assertConformanceReportCurrent(report, identity) {
|
|
109
|
+
if (report.schemaVersion !== 1 || !sameConformanceIdentity(report.identity, identity)) {
|
|
110
|
+
throw new Error('Conformance report is stale; rerun farmslot doctor --conformance.');
|
|
111
|
+
}
|
|
112
|
+
if (report.status !== 'pass' || !conformanceChecksPass(report.checks)) {
|
|
113
|
+
throw new Error('Conformance report has no passing evidence for every required check.');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** Inspect declared invocations through the execution preflight without launching or executing. */
|
|
117
|
+
export async function checkRecipeConformance(engine, options) {
|
|
118
|
+
const inputs = await resolveConformanceInputs(engine, options);
|
|
119
|
+
const identity = resolvedConformanceIdentity(options, inputs);
|
|
120
|
+
const checks = [];
|
|
121
|
+
if (options.recipes.length === 0) {
|
|
122
|
+
checks.push({
|
|
123
|
+
id: 'recipe.invocations',
|
|
124
|
+
status: 'missing',
|
|
125
|
+
required: true,
|
|
126
|
+
message: 'Declare at least one recipe invocation to check.',
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
const cli = {
|
|
130
|
+
...options.cli,
|
|
131
|
+
artifactsDir: options.artifactsDir,
|
|
132
|
+
target: identity.target,
|
|
133
|
+
adapter: identity.adapter,
|
|
134
|
+
};
|
|
135
|
+
const runtimeOptions = recipeRunOptionsFromCli(identity.adapter, cli);
|
|
136
|
+
const manifestPath = optionString(cli, 'actionManifest');
|
|
137
|
+
const resolution = {
|
|
138
|
+
recipes: [],
|
|
139
|
+
actions: [],
|
|
140
|
+
};
|
|
141
|
+
const restoreEnvironment = activateRecipeRuntimeEnvironment(identity.adapter, identity.target, runtimeOptions);
|
|
142
|
+
try {
|
|
143
|
+
for (const invocation of inputs.invocations) {
|
|
144
|
+
const id = `recipe.${invocation.recipe}`;
|
|
145
|
+
try {
|
|
146
|
+
const libraries = await loadRecipeLibraries(invocation.librarySources, {
|
|
147
|
+
adapter: identity.adapter,
|
|
148
|
+
});
|
|
149
|
+
const manifest = await engine.resolveActionManifest(identity.adapter, manifestPath, invocation.librarySources);
|
|
150
|
+
resolution.recipes.push(...[...libraries.recipes.values()]
|
|
151
|
+
.filter((recipe) => !recipe.aliasFor)
|
|
152
|
+
.map(({ ref, source, shadows }) => ({
|
|
153
|
+
ref,
|
|
154
|
+
source,
|
|
155
|
+
shadows,
|
|
156
|
+
invocation: invocation.recipe,
|
|
157
|
+
})));
|
|
158
|
+
resolution.actions.push(...[...manifest.actionSources].map(([action, source]) => ({
|
|
159
|
+
action,
|
|
160
|
+
source: source.name,
|
|
161
|
+
invocation: invocation.recipe,
|
|
162
|
+
...(source.shadows ? { shadows: source.shadows } : {}),
|
|
163
|
+
})));
|
|
164
|
+
const validated = await validateRunRecipeStatic(engine, invocation.recipe, identity.adapter, cli, invocation.params, undefined, invocation);
|
|
165
|
+
if (validated.usageError || validated.errorCount > 0) {
|
|
166
|
+
checks.push({
|
|
167
|
+
id,
|
|
168
|
+
status: 'fail',
|
|
169
|
+
required: true,
|
|
170
|
+
message: validated.usageError?.message ??
|
|
171
|
+
validated.findings.map((finding) => finding.message).join('; '),
|
|
172
|
+
});
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
const execution = await preflightRecipe(engine, identity.adapter, validated.recipeFile, options.artifactsDir, identity.target, manifestPath, {
|
|
176
|
+
...runtimeOptions,
|
|
177
|
+
readOnly: true,
|
|
178
|
+
cli,
|
|
179
|
+
params: validated.effectiveParams,
|
|
180
|
+
librarySources: validated.librarySources,
|
|
181
|
+
stdoutIsMachineContract: true,
|
|
182
|
+
});
|
|
183
|
+
checks.push({
|
|
184
|
+
id,
|
|
185
|
+
status: 'pass',
|
|
186
|
+
required: true,
|
|
187
|
+
message: 'Dependency, parameter, handler and authorization preflight passed.',
|
|
188
|
+
...(execution.plan ? { evidence: { plan: execution.plan } } : {}),
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
checks.push({
|
|
193
|
+
id,
|
|
194
|
+
status: 'fail',
|
|
195
|
+
required: true,
|
|
196
|
+
message: error instanceof Error ? error.message : String(error),
|
|
197
|
+
...(error instanceof Error &&
|
|
198
|
+
'userAction' in error &&
|
|
199
|
+
typeof error.userAction === 'string'
|
|
200
|
+
? { userAction: error.userAction }
|
|
201
|
+
: {}),
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
finally {
|
|
207
|
+
restoreEnvironment();
|
|
208
|
+
}
|
|
209
|
+
const current = await recipeConformanceIdentity(engine, options);
|
|
210
|
+
if (!sameConformanceIdentity(identity, current)) {
|
|
211
|
+
checks.push({
|
|
212
|
+
id: 'inputs.stable',
|
|
213
|
+
status: 'fail',
|
|
214
|
+
required: true,
|
|
215
|
+
message: 'Code or configuration changed while checking.',
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
const passed = conformanceChecksPass(checks);
|
|
219
|
+
return {
|
|
220
|
+
schemaVersion: 1,
|
|
221
|
+
checkedAt: new Date().toISOString(),
|
|
222
|
+
identity,
|
|
223
|
+
status: passed ? 'pass' : 'fail',
|
|
224
|
+
mode: 'static',
|
|
225
|
+
checks,
|
|
226
|
+
capabilities: [{ name: 'recipe.preflight', status: passed ? 'verified' : 'failed' }],
|
|
227
|
+
resolution,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
function sameConformanceIdentity(left, right) {
|
|
231
|
+
return JSON.stringify(left) === JSON.stringify(right);
|
|
232
|
+
}
|
|
233
|
+
function withDirtyDigest(source) {
|
|
234
|
+
return {
|
|
235
|
+
...source,
|
|
236
|
+
dirtyDigest: sourceIsDirty(source) ? source.sourceFingerprint : null,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
export async function writeRecipeConformanceReport(artifactsDir, report) {
|
|
240
|
+
const relative = 'conformance-report.json';
|
|
241
|
+
await writeContainedArtifact(artifactsDir, relative, `${JSON.stringify(report, null, 2)}\n`, 'Conformance report');
|
|
242
|
+
return path.join(artifactsDir, relative);
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=conformance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../src/harness/conformance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
+
import type { RecipeConformanceSource } from '@farmslot/protocol';
|
|
2
|
+
import type { RecipeLibrarySource } from '@farmslot/recipe-runner';
|
|
1
3
|
import { CliError } from './cli-error.js';
|
|
2
4
|
/** Where a context value came from, strongest first. */
|
|
3
5
|
export type ContextSource = 'flag' | 'binding' | 'slot' | 'detect' | 'default';
|
|
4
6
|
/** The detect predicate that matched a checkout. */
|
|
5
7
|
export type DetectMatch = 'remote' | 'files';
|
|
6
8
|
export interface HarnessContext {
|
|
9
|
+
project?: ResolvedProjectBinding;
|
|
10
|
+
/** The owned binding file actually read, including an explicit runtime-dir environment override. */
|
|
11
|
+
runtimeConfigPath?: string;
|
|
7
12
|
adapter?: {
|
|
8
13
|
value: string;
|
|
14
|
+
/** Selected target alias before provider normalization, such as ios or android. */
|
|
15
|
+
requested?: string;
|
|
9
16
|
source: ContextSource;
|
|
10
17
|
/**
|
|
11
18
|
* The human label: '--adapter', '--platform' or 'positional' (flag),
|
|
@@ -34,6 +41,8 @@ export interface HarnessContext {
|
|
|
34
41
|
detail: 'slot-config' | 'slot-config (~/farmslot-node/pool)' | 'runtime-context';
|
|
35
42
|
session?: string;
|
|
36
43
|
poolFile?: string;
|
|
44
|
+
/** Matched pool slot when a scratch runtime supplies a different identity. */
|
|
45
|
+
poolSlot?: string;
|
|
37
46
|
ports: Record<string, number>;
|
|
38
47
|
} | {
|
|
39
48
|
value: null;
|
|
@@ -75,6 +84,52 @@ export interface HarnessContext {
|
|
|
75
84
|
};
|
|
76
85
|
}>>;
|
|
77
86
|
}
|
|
87
|
+
export interface ResolvedProjectLibrary extends RecipeLibrarySource {
|
|
88
|
+
name: string;
|
|
89
|
+
owner?: string;
|
|
90
|
+
revision?: string;
|
|
91
|
+
identity: RecipeConformanceSource;
|
|
92
|
+
overriddenSource?: {
|
|
93
|
+
root: string;
|
|
94
|
+
owner: string;
|
|
95
|
+
revision?: string;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export interface ResolvedProjectBinding {
|
|
99
|
+
name: string;
|
|
100
|
+
source: ContextSource;
|
|
101
|
+
root: string;
|
|
102
|
+
configPath: string;
|
|
103
|
+
checkoutRoot: string;
|
|
104
|
+
app?: string;
|
|
105
|
+
domain?: string;
|
|
106
|
+
template?: string;
|
|
107
|
+
manifest?: string;
|
|
108
|
+
runtimeDir: string;
|
|
109
|
+
farmRuntimeDir: string;
|
|
110
|
+
artifactDir: string;
|
|
111
|
+
provider: {
|
|
112
|
+
ref: string;
|
|
113
|
+
module: string;
|
|
114
|
+
export: string;
|
|
115
|
+
package?: string;
|
|
116
|
+
version?: string;
|
|
117
|
+
root: string;
|
|
118
|
+
revision?: string;
|
|
119
|
+
identity: RecipeConformanceSource;
|
|
120
|
+
authority: 'configured' | 'installed' | 'discovered';
|
|
121
|
+
};
|
|
122
|
+
libraries: ResolvedProjectLibrary[];
|
|
123
|
+
}
|
|
124
|
+
export declare class ProjectBindingError extends CliError {
|
|
125
|
+
readonly code: string;
|
|
126
|
+
readonly userAction: string;
|
|
127
|
+
readonly candidates?: readonly string[] | undefined;
|
|
128
|
+
readonly details?: {
|
|
129
|
+
candidates: readonly string[];
|
|
130
|
+
};
|
|
131
|
+
constructor(code: string, message: string, userAction: string, candidates?: readonly string[] | undefined);
|
|
132
|
+
}
|
|
78
133
|
/** A generic port option a command may take: `--cdp-port`, `--watcher-port`. */
|
|
79
134
|
export type ContextPortName = 'cdp' | 'watcher';
|
|
80
135
|
/** One adapter whose detect predicates matched a checkout. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-state.d.ts","sourceRoot":"","sources":["../../src/harness/context-state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-state.d.ts","sourceRoot":"","sources":["../../src/harness/context-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,17 @@
|
|
|
4
4
|
// plugin loader.
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import { CliError } from './cli-error.js';
|
|
7
|
+
export class ProjectBindingError extends CliError {
|
|
8
|
+
constructor(code, message, userAction, candidates) {
|
|
9
|
+
super(candidates?.length ? `${message} Candidates: ${candidates.join(', ')}.` : message, 2);
|
|
10
|
+
this.code = code;
|
|
11
|
+
this.userAction = userAction;
|
|
12
|
+
this.candidates = candidates;
|
|
13
|
+
this.name = 'ProjectBindingError';
|
|
14
|
+
if (candidates)
|
|
15
|
+
this.details = { candidates };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
7
18
|
/** More than one adapter matched a checkout, with nothing to choose between them. Exit 2. */
|
|
8
19
|
export class AdapterAmbiguousError extends CliError {
|
|
9
20
|
constructor(target, candidates) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-state.js","sourceRoot":"","sources":["../../src/harness/context-state.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wEAAwE;AACxE,4EAA4E;AAC5E,iBAAiB;AACjB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"context-state.js","sourceRoot":"","sources":["../../src/harness/context-state.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wEAAwE;AACxE,4EAA4E;AAC5E,iBAAiB;AACjB,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgH1C,MAAM,OAAO,mBAAoB,SAAQ,QAAQ;IAE/C,YACW,IAAY,EACrB,OAAe,EACN,UAAkB,EAClB,UAA8B;QAEvC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,gBAAgB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QALnF,SAAI,GAAJ,IAAI,CAAQ;QAEZ,eAAU,GAAV,UAAU,CAAQ;QAClB,eAAU,GAAV,UAAU,CAAoB;QAGvC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,UAAU;YAAE,IAAI,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,CAAC;IAChD,CAAC;CACF;AAYD,6FAA6F;AAC7F,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IAIjD,YAAY,MAAc,EAAE,UAA8B;QACxD,MAAM,MAAM,GAAG,UAAU;aACtB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;aAC5E,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,2EAA2E;QAC3E,KAAK,CAAC,GAAG,MAAM,mCAAmC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QARxD,SAAI,GAAG,mBAAmB,CAAC;QASlC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,mBAAmB,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACrG,CAAC;CACF;AAED,IAAI,OAAmC,CAAC;AAExC,4DAA4D;AAC5D,MAAM,UAAU,iBAAiB,CAAC,OAAmC;IACnE,OAAO,GAAG,OAAO,CAAC;AACpB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,OAAO,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7F,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,mBAAmB;IACjC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import type { PlatformAdapter } from '@farmslot/adapter-sdk';
|
|
2
|
+
import { type ProjectConfig } from '@farmslot/protocol';
|
|
1
3
|
import { type AdapterLibraryOptions } from './adapter-plugins.js';
|
|
2
|
-
import type
|
|
4
|
+
import { type HarnessContext, type ResolvedProjectLibrary } from './context-state.js';
|
|
5
|
+
import { type HarnessHostConfig } from './host.js';
|
|
6
|
+
import type { CliOptions, ParsedArgs } from './parse-args.js';
|
|
7
|
+
import { type ProjectCommandInvocation } from './project-command.js';
|
|
8
|
+
import type { RecipeEngine } from './run-engine.js';
|
|
3
9
|
export interface ResolveHarnessContextOptions {
|
|
4
10
|
/** The command's tokens, after the command name. */
|
|
5
11
|
tokens: readonly string[];
|
|
@@ -24,8 +30,14 @@ export interface ResolveHarnessContextOptions {
|
|
|
24
30
|
* reports `slot: { value: null, source: 'none', detail: 'no-pool-dir' }`.
|
|
25
31
|
*/
|
|
26
32
|
slotPoolDir?: string;
|
|
33
|
+
/** false for help/completion, which never execute on the selected slot. */
|
|
34
|
+
strictSlot?: boolean;
|
|
35
|
+
/** Pool selector by default; legacy provision commands use --slot as a new identity. */
|
|
36
|
+
slotSelection?: 'pool' | 'identity';
|
|
27
37
|
/** The adapter when nothing else decides. */
|
|
28
38
|
defaultAdapter?: string;
|
|
39
|
+
/** App runtime target; pool lookup remains rooted at the checkout. */
|
|
40
|
+
runtimeTarget?: string;
|
|
29
41
|
}
|
|
30
42
|
/**
|
|
31
43
|
* Resolve the invocation's context. Throws AdapterAmbiguousError when detection
|
|
@@ -49,9 +61,46 @@ export declare function contextPorts(context: HarnessContext, tokens: readonly s
|
|
|
49
61
|
export declare function formatHarnessContext(context: HarnessContext): string;
|
|
50
62
|
/**
|
|
51
63
|
* Whether the runtime context read from `file` belongs to the checkout `root`:
|
|
52
|
-
* its `repoRoot` is
|
|
64
|
+
* its `repoRoot` is the selected target or its Git top level (real paths), or, without
|
|
53
65
|
* `repoRoot`, the file sits inside `root`. Anything else is another
|
|
54
66
|
* checkout's (an inherited RECIPE_RUNTIME_CONTEXT) and describes nothing here.
|
|
55
67
|
*/
|
|
56
68
|
export declare function runtimeContextOwned(root: string, file: string, context: Readonly<Record<string, unknown>>): boolean;
|
|
69
|
+
/** Registered pack metadata. `root` is the directory containing project.json. */
|
|
70
|
+
export interface ConfiguredRecipeProject {
|
|
71
|
+
config: ProjectConfig;
|
|
72
|
+
root: string;
|
|
73
|
+
}
|
|
74
|
+
export interface ResolveProjectContextOptions extends ResolveHarnessContextOptions {
|
|
75
|
+
projects?: readonly ConfiguredRecipeProject[];
|
|
76
|
+
/** Explicit operator-owned project registry, with <name>/project.json entries. */
|
|
77
|
+
projectsDir?: string;
|
|
78
|
+
defaultProject?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface ProjectProvider {
|
|
81
|
+
runtime: PlatformAdapter;
|
|
82
|
+
engine?: RecipeEngine;
|
|
83
|
+
cancel?(): void | Promise<void>;
|
|
84
|
+
finalize?(): void | Promise<void>;
|
|
85
|
+
}
|
|
86
|
+
export interface LoadProjectProviderOptions {
|
|
87
|
+
/** Exact module paths or declared refs authorized by this invocation's operator. */
|
|
88
|
+
authorizedProviders?: readonly string[];
|
|
89
|
+
host?: HarnessHostConfig;
|
|
90
|
+
hostHints?: Pick<HarnessHostConfig, 'doctorHint' | 'supportsLast'>;
|
|
91
|
+
command?: string;
|
|
92
|
+
options?: CliOptions;
|
|
93
|
+
/** Target and paths already resolved by the shared host, authoritative over raw input. */
|
|
94
|
+
resolvedOptions?: CliOptions;
|
|
95
|
+
invocation?: ProjectCommandInvocation;
|
|
96
|
+
onParsedInvocation?(invocation: ParsedArgs): void;
|
|
97
|
+
}
|
|
98
|
+
/** Read project metadata and resolve defaults without importing executable code. */
|
|
99
|
+
export declare function resolveProjectContext(options: ResolveProjectContextOptions): Promise<HarnessContext>;
|
|
100
|
+
/** Executable library authority comes from resolution, never mutable report metadata. */
|
|
101
|
+
export declare function authorizedProjectLibraries(context: HarnessContext): ResolvedProjectLibrary[];
|
|
102
|
+
/** The shared direct/hosted loader. Source identity is checked before import. */
|
|
103
|
+
export declare function loadProjectProvider(context: HarnessContext, options?: LoadProjectProviderOptions): Promise<ProjectProvider>;
|
|
104
|
+
/** The package owning a resolved entry, including entries below nested source/dist directories. */
|
|
105
|
+
export declare function recipePackageRoot(file: string): string;
|
|
57
106
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/harness/context.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,qBAAqB,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/harness/context.ts"],"names":[],"mappings":"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"}
|