@farmslot/agent-runtime 0.23.3 → 0.25.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 +9 -0
- package/dist/native/host-cleanup-recovery.d.ts.map +1 -1
- package/dist/native/host-cleanup-recovery.js +15 -3
- package/dist/native/host-cleanup-recovery.js.map +1 -1
- package/dist/native/process-tree.d.ts +1 -0
- package/dist/native/process-tree.d.ts.map +1 -1
- package/dist/native/process-tree.js +9 -4
- package/dist/native/process-tree.js.map +1 -1
- package/dist/task-init/execution-provenance.d.ts +47 -0
- package/dist/task-init/execution-provenance.d.ts.map +1 -0
- package/dist/task-init/execution-provenance.js +226 -0
- package/dist/task-init/execution-provenance.js.map +1 -0
- package/dist/task-init/index.d.ts +5 -0
- package/dist/task-init/index.d.ts.map +1 -1
- package/dist/task-init/index.js +25 -4
- package/dist/task-init/index.js.map +1 -1
- package/dist/task-init/pin.d.ts +6 -0
- package/dist/task-init/pin.d.ts.map +1 -0
- package/dist/task-init/pin.js +77 -0
- package/dist/task-init/pin.js.map +1 -0
- package/dist/task-init/runtime-command.d.ts +3 -1
- package/dist/task-init/runtime-command.d.ts.map +1 -1
- package/dist/task-init/runtime-command.js +7 -2
- package/dist/task-init/runtime-command.js.map +1 -1
- package/dist/task-init/task-document.d.ts +2 -0
- package/dist/task-init/task-document.d.ts.map +1 -1
- package/dist/task-init/task-document.js +12 -0
- package/dist/task-init/task-document.js.map +1 -1
- package/dist/task-init/write.d.ts +4 -2
- package/dist/task-init/write.d.ts.map +1 -1
- package/dist/task-init/write.js +7 -5
- package/dist/task-init/write.js.map +1 -1
- package/package.json +4 -4
- package/scripts/mark-checklist-step.cjs +60 -7
- package/scripts/mark-io.cjs +10 -0
- package/scripts/subtask-unit.cjs +5 -3
- package/scripts/task-init-cli.mjs +13 -8
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
- Active-development baseline; add user-facing changes here before release or package publication.
|
|
6
6
|
|
|
7
|
+
## 0.25.0 - 2026-10-15
|
|
8
|
+
|
|
9
|
+
- Retain task tooling and selected inputs with shared byte verification and frozen task callbacks.
|
|
10
|
+
|
|
11
|
+
## 0.24.0 - 2026-10-15
|
|
12
|
+
|
|
13
|
+
- Preserve native host census provenance after process exit and reconcile stopped hosts from retained kernel parent evidence without deleting journals or relaxing process-safety checks.
|
|
14
|
+
- Support explicit operator wait and resume marks without settling the worker or changing its checklist.
|
|
15
|
+
|
|
7
16
|
## 0.23.3 - 2026-10-15
|
|
8
17
|
|
|
9
18
|
- Align the published dependency set with the plain runtime and action contract names.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-cleanup-recovery.d.ts","sourceRoot":"","sources":["../../src/native/host-cleanup-recovery.ts"],"names":[],"mappings":"AA+CA,+EAA+E;AAC/E,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,IAAI,
|
|
1
|
+
{"version":3,"file":"host-cleanup-recovery.d.ts","sourceRoot":"","sources":["../../src/native/host-cleanup-recovery.ts"],"names":[],"mappings":"AA+CA,+EAA+E;AAC/E,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,IAAI,CAuIN"}
|
|
@@ -59,6 +59,8 @@ export function recoverStoppedNativeHost(root, supervisorPid, hostPid) {
|
|
|
59
59
|
if (!hostObserved && observations.length)
|
|
60
60
|
throw new Error('Native cleanup recovery cannot identify the old host');
|
|
61
61
|
const journals = {};
|
|
62
|
+
let unattributedSession = false;
|
|
63
|
+
let hostObservationJournal;
|
|
62
64
|
const sessionRoot = join(root, 'sessions');
|
|
63
65
|
for (const name of readdirSync(sessionRoot).filter((name) => name.endsWith('.journal'))) {
|
|
64
66
|
const bytes = privateBytes(join(sessionRoot, name));
|
|
@@ -74,9 +76,8 @@ export function recoverStoppedNativeHost(root, supervisorPid, hostPid) {
|
|
|
74
76
|
if (entry.info !== undefined) {
|
|
75
77
|
if (!object(entry.info) || typeof entry.info.generation !== 'string')
|
|
76
78
|
throw new Error('Native cleanup recovery has malformed session identity');
|
|
77
|
-
// An unobserved startup can be quarantined only if it never owned a session.
|
|
78
79
|
if (!hostObserved && (!pid(entry.info.hostPid) || entry.info.hostPid === hostPid))
|
|
79
|
-
|
|
80
|
+
unattributedSession = true;
|
|
80
81
|
info = entry.info;
|
|
81
82
|
projected.info = { generation: entry.info.generation };
|
|
82
83
|
}
|
|
@@ -97,11 +98,21 @@ export function recoverStoppedNativeHost(root, supervisorPid, hostPid) {
|
|
|
97
98
|
throw new Error('Native cleanup recovery has malformed runner identity');
|
|
98
99
|
pids.add(info.processPid);
|
|
99
100
|
groups.add(info.processPid);
|
|
100
|
-
|
|
101
|
+
const processes = journalProcesses(entries) ?? [];
|
|
102
|
+
// This kernel-recorded parent link attests that the host was released.
|
|
103
|
+
// Fresh absence checks below still cover every recorded process and group.
|
|
104
|
+
if (!hostObserved &&
|
|
105
|
+
processes.some((entry) => entry.pid === info.processPid && entry.parent === hostPid))
|
|
106
|
+
hostObservationJournal ??= name;
|
|
107
|
+
for (const observed of processes)
|
|
101
108
|
observe(observed);
|
|
102
109
|
}
|
|
103
110
|
journals[name] = digest(bytes);
|
|
104
111
|
}
|
|
112
|
+
if (hostObservationJournal)
|
|
113
|
+
hostObserved = true;
|
|
114
|
+
if (!hostObserved && unattributedSession)
|
|
115
|
+
throw new Error('Unobserved native host recovery cannot exclude a session from that host');
|
|
105
116
|
const snapshot = readNativeProcessSnapshot();
|
|
106
117
|
if (!snapshot.has(process.pid))
|
|
107
118
|
throw new Error('Native cleanup recovery process census is incomplete');
|
|
@@ -140,6 +151,7 @@ export function recoverStoppedNativeHost(root, supervisorPid, hostPid) {
|
|
|
140
151
|
supervisorPid,
|
|
141
152
|
hostPid,
|
|
142
153
|
originalCleanup: cleanup,
|
|
154
|
+
...(hostObservationJournal ? { hostObservationJournal } : {}),
|
|
143
155
|
originalCleanupSha256: digest(original),
|
|
144
156
|
journalSha256: journals,
|
|
145
157
|
verifiedStoppedPids: [...pids],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-cleanup-recovery.js","sourceRoot":"","sources":["../../src/native/host-cleanup-recovery.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"host-cleanup-recovery.js","sourceRoot":"","sources":["../../src/native/host-cleanup-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ export declare class NativeProcessTree {
|
|
|
20
20
|
private readonly root;
|
|
21
21
|
private owned;
|
|
22
22
|
private readonly rootIdentity;
|
|
23
|
+
private readonly rootObservation;
|
|
23
24
|
constructor(root: number);
|
|
24
25
|
capture(): void;
|
|
25
26
|
observe(failed: (error: Error) => void, observed?: (snapshot: ProcessIdentity[]) => void): () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-tree.d.ts","sourceRoot":"","sources":["../../src/native/process-tree.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;CACpC;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,mBAAmB,EAAE,GACtC,eAAe,EAAE,GAAG,SAAS,CAmB/B;AA+CD,qFAAqF;AACrF,wBAAgB,yBAAyB,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAExE;AA4ED,4EAA4E;AAC5E,qBAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"process-tree.d.ts","sourceRoot":"","sources":["../../src/native/process-tree.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;CACpC;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,mBAAmB,EAAE,GACtC,eAAe,EAAE,GAAG,SAAS,CAmB/B;AA+CD,qFAAqF;AACrF,wBAAgB,yBAAyB,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAExE;AA4ED,4EAA4E;AAC5E,qBAAa,iBAAiB;IAIhB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBACrB,IAAI,EAAE,MAAM;IAQzC,OAAO,IAAI,IAAI;IAGf,OAAO,CACL,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAC9B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,IAAI,GAC/C,MAAM,IAAI;IAwBb,OAAO,CAAC,aAAa;IA0BrB,iFAAiF;IACjF,QAAQ,IAAI,eAAe,EAAE;IAO7B,4FAA4F;IAC5F,IAAI,IAAI,IAAI;IAwBZ,KAAK,IAAI,OAAO;IAOhB,OAAO,CAAC,SAAS;IAWjB,0FAA0F;IAC1F,SAAS,IAAI,IAAI;CAKlB"}
|
|
@@ -147,10 +147,11 @@ export class NativeProcessTree {
|
|
|
147
147
|
this.root = root;
|
|
148
148
|
this.owned = new Map();
|
|
149
149
|
const snapshot = processes();
|
|
150
|
-
const
|
|
151
|
-
if (!identity)
|
|
150
|
+
const observation = snapshot.get(root);
|
|
151
|
+
if (!observation?.identity)
|
|
152
152
|
throw new Error('Native process identity is unavailable');
|
|
153
|
-
this.rootIdentity = identity;
|
|
153
|
+
this.rootIdentity = observation.identity;
|
|
154
|
+
this.rootObservation = { ...observation };
|
|
154
155
|
this.applySnapshot(snapshot);
|
|
155
156
|
}
|
|
156
157
|
capture() {
|
|
@@ -211,7 +212,11 @@ export class NativeProcessTree {
|
|
|
211
212
|
}
|
|
212
213
|
/** Last observed identities remain useful when a later census cannot be read. */
|
|
213
214
|
snapshot() {
|
|
214
|
-
|
|
215
|
+
const observations = [...this.owned.values()];
|
|
216
|
+
// Keep cleanup provenance after exit; only the live map authorizes signals.
|
|
217
|
+
if (this.owned.get(this.root)?.identity !== this.rootIdentity)
|
|
218
|
+
observations.unshift(this.rootObservation);
|
|
219
|
+
return observations.map((identity) => ({ ...identity }));
|
|
215
220
|
}
|
|
216
221
|
/** Freeze observed owners before the final ancestry scan, preventing new child launches. */
|
|
217
222
|
stop() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-tree.js","sourceRoot":"","sources":["../../src/native/process-tree.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"process-tree.js","sourceRoot":"","sources":["../../src/native/process-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type RecipeConformanceIdentity } from '@farmslot/protocol';
|
|
2
|
+
export type TaskRecipeBindingIdentity = Pick<RecipeConformanceIdentity, 'project' | 'app' | 'domain' | 'adapter' | 'target' | 'provider' | 'implementation' | 'libraries' | 'configuration'>;
|
|
3
|
+
export interface TaskRetainedInput {
|
|
4
|
+
source: string;
|
|
5
|
+
path: string;
|
|
6
|
+
sha256: string;
|
|
7
|
+
}
|
|
8
|
+
export interface TaskExecutionProvenance {
|
|
9
|
+
schemaVersion: 1;
|
|
10
|
+
pin: string;
|
|
11
|
+
package: {
|
|
12
|
+
name: string;
|
|
13
|
+
version: string;
|
|
14
|
+
};
|
|
15
|
+
source: {
|
|
16
|
+
kind: string;
|
|
17
|
+
packageRoot: string;
|
|
18
|
+
};
|
|
19
|
+
resolvedExecutable: string;
|
|
20
|
+
entrySha256: string;
|
|
21
|
+
packageTreeSha256: string;
|
|
22
|
+
recordedAt: string;
|
|
23
|
+
bindingIdentity: TaskRecipeBindingIdentity | null;
|
|
24
|
+
retainedInputs: TaskRetainedInput[];
|
|
25
|
+
}
|
|
26
|
+
export interface TaskExecutionInput {
|
|
27
|
+
executable: string;
|
|
28
|
+
packageRoot: string;
|
|
29
|
+
distributionRoot: string;
|
|
30
|
+
bindingIdentity: TaskRecipeBindingIdentity | null;
|
|
31
|
+
/** All executable provider/library inputs and selected configuration bytes. */
|
|
32
|
+
inputs: readonly string[];
|
|
33
|
+
/** Host selection data. Its bytes are retained and verified with the tooling. */
|
|
34
|
+
selectedConfiguration?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare class TaskProvenanceError extends Error {
|
|
37
|
+
readonly code: string;
|
|
38
|
+
readonly exitCode = 5;
|
|
39
|
+
constructor(code: string, message: string);
|
|
40
|
+
}
|
|
41
|
+
/** Producer-owned pin identity, allocated before rendering but written only after validation. */
|
|
42
|
+
export declare function taskExecutionPin(taskDir: string, input: TaskExecutionInput): string;
|
|
43
|
+
/** Verify through the trusted installed runtime before invoking the recorded executable. */
|
|
44
|
+
export declare function verifyTaskExecutionProvenance(taskDir: string, expectedBindingIdentity: TaskRecipeBindingIdentity | null): TaskExecutionProvenance;
|
|
45
|
+
/** Called by the task producer after selection and before it emits a marker. */
|
|
46
|
+
export declare function retainTaskExecution(taskDir: string, input: TaskExecutionInput): TaskExecutionProvenance;
|
|
47
|
+
//# sourceMappingURL=execution-provenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-provenance.d.ts","sourceRoot":"","sources":["../../src/task-init/execution-provenance.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,yBAAyB,EAE/B,MAAM,oBAAoB,CAAC;AAI5B,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,yBAAyB,EACvB,SAAS,GACT,KAAK,GACL,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,WAAW,GACX,eAAe,CAClB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,CAAC,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAClD,cAAc,EAAE,iBAAiB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAClD,+EAA+E;IAC/E,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAI1C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAHvB,QAAQ,CAAC,QAAQ,KAAK;gBAGX,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;CAKlB;AAUD,iGAAiG;AACjG,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAanF;AAiFD,4FAA4F;AAC5F,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,uBAAuB,EAAE,yBAAyB,GAAG,IAAI,GACxD,uBAAuB,CA4FzB;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,GACxB,uBAAuB,CAiGzB"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
6
|
+
import { isRecord, } from '@farmslot/protocol';
|
|
7
|
+
import { retainTaskInput, taskInputDigest } from './pin.js';
|
|
8
|
+
export class TaskProvenanceError extends Error {
|
|
9
|
+
constructor(code, message) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.code = code;
|
|
12
|
+
this.exitCode = 5;
|
|
13
|
+
this.name = 'TaskProvenanceError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const receiptFile = 'artifacts/harness-provenance.json';
|
|
17
|
+
const pinPaths = new WeakMap();
|
|
18
|
+
function taskPinRoot() {
|
|
19
|
+
return path.resolve(process.env.FARMSLOT_HOME || path.join(os.homedir(), '.farmslot'), 'task-pins');
|
|
20
|
+
}
|
|
21
|
+
/** Producer-owned pin identity, allocated before rendering but written only after validation. */
|
|
22
|
+
export function taskExecutionPin(taskDir, input) {
|
|
23
|
+
let paths = pinPaths.get(input);
|
|
24
|
+
if (!paths) {
|
|
25
|
+
paths = new Map();
|
|
26
|
+
pinPaths.set(input, paths);
|
|
27
|
+
}
|
|
28
|
+
const key = path.resolve(taskDir);
|
|
29
|
+
let pin = paths.get(key);
|
|
30
|
+
if (!pin) {
|
|
31
|
+
pin = path.join(taskPinRoot(), randomUUID().replaceAll('-', ''));
|
|
32
|
+
paths.set(key, pin);
|
|
33
|
+
}
|
|
34
|
+
return pin;
|
|
35
|
+
}
|
|
36
|
+
const sha256 = (file) => createHash('sha256').update(fs.readFileSync(file)).digest('hex');
|
|
37
|
+
function isRetainedInput(value) {
|
|
38
|
+
return (isRecord(value) &&
|
|
39
|
+
typeof value.source === 'string' &&
|
|
40
|
+
typeof value.path === 'string' &&
|
|
41
|
+
typeof value.sha256 === 'string');
|
|
42
|
+
}
|
|
43
|
+
function isSource(value) {
|
|
44
|
+
return (isRecord(value) &&
|
|
45
|
+
(value.head === null || typeof value.head === 'string') &&
|
|
46
|
+
typeof value.status === 'string' &&
|
|
47
|
+
typeof value.sourceFingerprint === 'string' &&
|
|
48
|
+
(value.dirtyDigest === undefined ||
|
|
49
|
+
value.dirtyDigest === null ||
|
|
50
|
+
typeof value.dirtyDigest === 'string'));
|
|
51
|
+
}
|
|
52
|
+
function isBindingIdentity(value) {
|
|
53
|
+
if (value === null)
|
|
54
|
+
return true;
|
|
55
|
+
return (isRecord(value) &&
|
|
56
|
+
typeof value.project === 'string' &&
|
|
57
|
+
typeof value.adapter === 'string' &&
|
|
58
|
+
typeof value.target === 'string' &&
|
|
59
|
+
(value.app === null || typeof value.app === 'string') &&
|
|
60
|
+
(value.domain === null || typeof value.domain === 'string') &&
|
|
61
|
+
isSource(value.provider) &&
|
|
62
|
+
(value.implementation === undefined ||
|
|
63
|
+
(Array.isArray(value.implementation) &&
|
|
64
|
+
value.implementation.every((entry) => isRecord(entry) && typeof entry.name === 'string' && isSource(entry)))) &&
|
|
65
|
+
Array.isArray(value.libraries) &&
|
|
66
|
+
value.libraries.every((entry) => isRecord(entry) &&
|
|
67
|
+
typeof entry.name === 'string' &&
|
|
68
|
+
(entry.path === undefined || typeof entry.path === 'string') &&
|
|
69
|
+
isSource(entry)) &&
|
|
70
|
+
Array.isArray(value.configuration) &&
|
|
71
|
+
value.configuration.every((entry) => isRecord(entry) &&
|
|
72
|
+
typeof entry.path === 'string' &&
|
|
73
|
+
typeof entry.sourceFingerprint === 'string'));
|
|
74
|
+
}
|
|
75
|
+
function isReceipt(value) {
|
|
76
|
+
return (isRecord(value) &&
|
|
77
|
+
value.schemaVersion === 1 &&
|
|
78
|
+
typeof value.pin === 'string' &&
|
|
79
|
+
isRecord(value.package) &&
|
|
80
|
+
typeof value.package.name === 'string' &&
|
|
81
|
+
typeof value.package.version === 'string' &&
|
|
82
|
+
isRecord(value.source) &&
|
|
83
|
+
typeof value.source.kind === 'string' &&
|
|
84
|
+
typeof value.source.packageRoot === 'string' &&
|
|
85
|
+
typeof value.resolvedExecutable === 'string' &&
|
|
86
|
+
typeof value.entrySha256 === 'string' &&
|
|
87
|
+
typeof value.packageTreeSha256 === 'string' &&
|
|
88
|
+
typeof value.recordedAt === 'string' &&
|
|
89
|
+
isBindingIdentity(value.bindingIdentity) &&
|
|
90
|
+
Array.isArray(value.retainedInputs) &&
|
|
91
|
+
value.retainedInputs.length > 0 &&
|
|
92
|
+
value.retainedInputs.every(isRetainedInput));
|
|
93
|
+
}
|
|
94
|
+
/** Verify through the trusted installed runtime before invoking the recorded executable. */
|
|
95
|
+
export function verifyTaskExecutionProvenance(taskDir, expectedBindingIdentity) {
|
|
96
|
+
const value = JSON.parse(fs.readFileSync(path.join(taskDir, receiptFile), 'utf8'));
|
|
97
|
+
if (isRecord(value) && !('bindingIdentity' in value)) {
|
|
98
|
+
throw new TaskProvenanceError('TASK_PROVENANCE_LEGACY', 'This task retains a legacy receipt. Use its original pinned marker.');
|
|
99
|
+
}
|
|
100
|
+
if (!isReceipt(value))
|
|
101
|
+
throw new TaskProvenanceError('TASK_PROVENANCE_INVALID', 'The task execution receipt is invalid.');
|
|
102
|
+
const taskRoot = fs.realpathSync(taskDir);
|
|
103
|
+
const storeRoot = fs.realpathSync(taskPinRoot());
|
|
104
|
+
if (storeRoot === taskRoot || storeRoot.startsWith(`${taskRoot}${path.sep}`))
|
|
105
|
+
throw new TaskProvenanceError('TASK_PROVENANCE_INVALID', 'The installation pin store must be outside the task.');
|
|
106
|
+
const pin = fs.realpathSync(value.pin);
|
|
107
|
+
if (path.dirname(pin) !== fs.realpathSync(taskPinRoot()))
|
|
108
|
+
throw new TaskProvenanceError('TASK_PROVENANCE_INVALID', 'The task pin is outside the configured installation store.');
|
|
109
|
+
const authority = JSON.parse(fs.readFileSync(path.join(pin, 'provenance.json'), 'utf8'));
|
|
110
|
+
if (!isRecord(authority) ||
|
|
111
|
+
typeof authority.taskDir !== 'string' ||
|
|
112
|
+
fs.realpathSync(authority.taskDir) !== fs.realpathSync(taskDir) ||
|
|
113
|
+
!isDeepStrictEqual(authority.receipt, value)) {
|
|
114
|
+
throw new TaskProvenanceError('TASK_PROVENANCE_INVALID', 'The task receipt differs from its producer-owned installation pin.');
|
|
115
|
+
}
|
|
116
|
+
const inputsRoot = fs.realpathSync(path.join(taskDir, 'inputs'));
|
|
117
|
+
const within = (root, file) => file === root || file.startsWith(`${root}${path.sep}`);
|
|
118
|
+
const distribution = fs.realpathSync(value.retainedInputs[0].path);
|
|
119
|
+
if (value.package.name !== '@farmslot/cli' ||
|
|
120
|
+
value.source.kind !== 'task-retained' ||
|
|
121
|
+
distribution !== fs.realpathSync(path.join(pin, 'cli')) ||
|
|
122
|
+
!within(distribution, fs.realpathSync(value.source.packageRoot)) ||
|
|
123
|
+
!within(distribution, fs.realpathSync(value.resolvedExecutable))) {
|
|
124
|
+
throw new TaskProvenanceError('TASK_PROVENANCE_INVALID', 'The task must retain its Farmslot CLI installation.');
|
|
125
|
+
}
|
|
126
|
+
if (!isDeepStrictEqual(value.bindingIdentity, expectedBindingIdentity)) {
|
|
127
|
+
throw new TaskProvenanceError('TASK_BINDING_CHANGED', 'The selected tooling binding differs from the task binding.');
|
|
128
|
+
}
|
|
129
|
+
for (const input of value.retainedInputs) {
|
|
130
|
+
if (!within(inputsRoot, fs.realpathSync(input.path)) &&
|
|
131
|
+
!within(pin, fs.realpathSync(input.path)))
|
|
132
|
+
throw new TaskProvenanceError('TASK_PROVENANCE_INVALID', 'A retained task input escapes its task directory.');
|
|
133
|
+
if (taskInputDigest(input.path) !== input.sha256) {
|
|
134
|
+
throw new TaskProvenanceError('TASK_INPUT_CHANGED', `Retained task input changed: ${input.path}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const manifest = JSON.parse(fs.readFileSync(path.join(value.source.packageRoot, 'package.json'), 'utf8'));
|
|
138
|
+
if (!isRecord(manifest) ||
|
|
139
|
+
manifest.name !== value.package.name ||
|
|
140
|
+
manifest.version !== value.package.version ||
|
|
141
|
+
sha256(value.resolvedExecutable) !== value.entrySha256 ||
|
|
142
|
+
taskInputDigest(value.source.packageRoot) !== value.packageTreeSha256) {
|
|
143
|
+
throw new TaskProvenanceError('TASK_EXECUTABLE_CHANGED', 'The retained task executable or its package changed.');
|
|
144
|
+
}
|
|
145
|
+
return value;
|
|
146
|
+
}
|
|
147
|
+
/** Called by the task producer after selection and before it emits a marker. */
|
|
148
|
+
export function retainTaskExecution(taskDir, input) {
|
|
149
|
+
if (fs.existsSync(path.join(taskDir, receiptFile))) {
|
|
150
|
+
return verifyTaskExecutionProvenance(taskDir, input.bindingIdentity);
|
|
151
|
+
}
|
|
152
|
+
const distribution = fs.realpathSync(input.distributionRoot);
|
|
153
|
+
const packageRoot = fs.realpathSync(input.packageRoot);
|
|
154
|
+
const executable = fs.realpathSync(input.executable);
|
|
155
|
+
for (const selected of [packageRoot, executable]) {
|
|
156
|
+
const relative = path.relative(distribution, selected);
|
|
157
|
+
if (relative.startsWith(`..${path.sep}`) || relative === '..' || path.isAbsolute(relative)) {
|
|
158
|
+
throw new TaskProvenanceError('TASK_INSTALL_UNSUPPORTED', 'The CLI must belong to its selected installed distribution.');
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const pin = taskExecutionPin(taskDir, input);
|
|
162
|
+
const store = taskPinRoot();
|
|
163
|
+
if (store === path.resolve(taskDir) || store.startsWith(`${path.resolve(taskDir)}${path.sep}`))
|
|
164
|
+
throw new TaskProvenanceError('TASK_PROVENANCE_INVALID', 'The installation pin store must be outside the task.');
|
|
165
|
+
fs.mkdirSync(store, { recursive: true });
|
|
166
|
+
const staging = fs.mkdtempSync(path.join(store, '.staging-'));
|
|
167
|
+
try {
|
|
168
|
+
const cli = retainTaskInput(distribution, path.join(staging, 'cli'), [
|
|
169
|
+
path.resolve(taskDir),
|
|
170
|
+
store,
|
|
171
|
+
]);
|
|
172
|
+
const retainedInputs = [{ ...cli, path: path.join(pin, 'cli') }];
|
|
173
|
+
for (const source of [...new Set(input.inputs.map((file) => fs.realpathSync(file)))]) {
|
|
174
|
+
if (retainedInputs.some((entry) => source === entry.source || source.startsWith(`${entry.source}${path.sep}`)))
|
|
175
|
+
continue;
|
|
176
|
+
const relative = path.join('inputs', String(retainedInputs.length));
|
|
177
|
+
const copied = retainTaskInput(source, path.join(staging, relative), [
|
|
178
|
+
path.resolve(taskDir),
|
|
179
|
+
store,
|
|
180
|
+
]);
|
|
181
|
+
retainedInputs.push({ ...copied, path: path.join(pin, relative) });
|
|
182
|
+
}
|
|
183
|
+
fs.mkdirSync(path.join(taskDir, 'inputs'), { recursive: true });
|
|
184
|
+
if (input.selectedConfiguration !== undefined) {
|
|
185
|
+
const selection = path.resolve(taskDir, 'inputs/recipe-binding.json');
|
|
186
|
+
fs.writeFileSync(selection, input.selectedConfiguration, { flag: 'wx' });
|
|
187
|
+
retainedInputs.push({
|
|
188
|
+
source: selection,
|
|
189
|
+
path: selection,
|
|
190
|
+
sha256: taskInputDigest(selection),
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
const retainedPackage = path.join(pin, 'cli', path.relative(distribution, packageRoot));
|
|
194
|
+
const retainedExecutable = path.join(pin, 'cli', path.relative(distribution, executable));
|
|
195
|
+
const copiedPackage = path.join(staging, 'cli', path.relative(distribution, packageRoot));
|
|
196
|
+
const copiedExecutable = path.join(staging, 'cli', path.relative(distribution, executable));
|
|
197
|
+
const manifest = JSON.parse(fs.readFileSync(path.join(copiedPackage, 'package.json'), 'utf8'));
|
|
198
|
+
if (!isRecord(manifest) ||
|
|
199
|
+
manifest.name !== '@farmslot/cli' ||
|
|
200
|
+
typeof manifest.version !== 'string')
|
|
201
|
+
throw new TaskProvenanceError('TASK_INSTALL_UNSUPPORTED', 'The selected CLI has no package identity.');
|
|
202
|
+
const receipt = {
|
|
203
|
+
schemaVersion: 1,
|
|
204
|
+
pin,
|
|
205
|
+
package: { name: manifest.name, version: manifest.version },
|
|
206
|
+
source: { kind: 'task-retained', packageRoot: retainedPackage },
|
|
207
|
+
resolvedExecutable: retainedExecutable,
|
|
208
|
+
entrySha256: sha256(copiedExecutable),
|
|
209
|
+
packageTreeSha256: taskInputDigest(copiedPackage),
|
|
210
|
+
recordedAt: new Date().toISOString(),
|
|
211
|
+
bindingIdentity: input.bindingIdentity,
|
|
212
|
+
retainedInputs,
|
|
213
|
+
};
|
|
214
|
+
fs.writeFileSync(path.join(staging, 'provenance.json'), JSON.stringify({ taskDir: fs.realpathSync(taskDir), receipt }) + '\n', { mode: 0o444, flag: 'wx' });
|
|
215
|
+
fs.renameSync(staging, pin);
|
|
216
|
+
fs.mkdirSync(path.join(taskDir, 'artifacts'), { recursive: true });
|
|
217
|
+
fs.writeFileSync(path.join(taskDir, receiptFile), JSON.stringify(receipt, null, 2) + '\n', {
|
|
218
|
+
flag: 'wx',
|
|
219
|
+
});
|
|
220
|
+
return receipt;
|
|
221
|
+
}
|
|
222
|
+
finally {
|
|
223
|
+
fs.rmSync(staging, { recursive: true, force: true });
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=execution-provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-provenance.js","sourceRoot":"","sources":["../../src/task-init/execution-provenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { type ExecutionTemplateReference, type ExecutionTemplateRunMode, type TemplateProvenance, type WorkerTerminalContractDocument } from '@farmslot/protocol';
|
|
2
2
|
import type { ExecutionTemplateSource } from '../execution-template/types.js';
|
|
3
|
+
import { type TaskExecutionInput, type TaskExecutionProvenance } from './execution-provenance.js';
|
|
3
4
|
import { type HandoffExecutionTemplate, type HandoffMetadata, type HandoffSourceKind } from './task-document.js';
|
|
4
5
|
import { type WrittenTaskDir } from './write.js';
|
|
5
6
|
export * from './branch-update.js';
|
|
6
7
|
export * from './discover.js';
|
|
8
|
+
export { type TaskExecutionInput, type TaskExecutionProvenance, type TaskRecipeBindingIdentity, verifyTaskExecutionProvenance, } from './execution-provenance.js';
|
|
7
9
|
export * from './task-document.js';
|
|
8
10
|
export * from './write.js';
|
|
9
11
|
export { renderTemplatePlaceholders } from '@farmslot/protocol';
|
|
@@ -51,12 +53,15 @@ export interface TaskInitSpec {
|
|
|
51
53
|
/** Addendum template inserted before the checklist pointer; rendered with the same vars as the checklist. */
|
|
52
54
|
addendum?: string | null;
|
|
53
55
|
markCommand?: string;
|
|
56
|
+
/** Root CLI invocations retain tooling before the task marker is emitted. */
|
|
57
|
+
execution?: TaskExecutionInput;
|
|
54
58
|
terminalContract?: WorkerTerminalContractDocument;
|
|
55
59
|
bugInput?: unknown;
|
|
56
60
|
}
|
|
57
61
|
export interface TaskInitResult extends WrittenTaskDir {
|
|
58
62
|
executionTemplate: HandoffExecutionTemplate;
|
|
59
63
|
handoffMetadata: HandoffMetadata;
|
|
64
|
+
executionProvenance?: TaskExecutionProvenance;
|
|
60
65
|
}
|
|
61
66
|
export declare function taskInit(spec: TaskInitSpec): Promise<TaskInitResult>;
|
|
62
67
|
export interface TaskProvenance {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task-init/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAE7B,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACpC,MAAM,oBAAoB,CAAC;AAO5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task-init/index.ts"],"names":[],"mappings":"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"}
|
package/dist/task-init/index.js
CHANGED
|
@@ -11,11 +11,13 @@ import path from 'node:path';
|
|
|
11
11
|
import { renderTemplatePlaceholders, } from '@farmslot/protocol';
|
|
12
12
|
import { selectExecutionTemplate } from '../execution-template/select.js';
|
|
13
13
|
import { executionTemplateReference, readExecutionTemplateSnapshot, } from '../execution-template/snapshot.js';
|
|
14
|
-
import {
|
|
14
|
+
import { retainTaskExecution, taskExecutionPin, } from './execution-provenance.js';
|
|
15
|
+
import { installedTaskCommands, quoteTaskPath } from './runtime-command.js';
|
|
15
16
|
import { buildBranchUpdateGuardCommand, buildBranchUpdateInstructions, buildHandoffMetadata, buildTaskDocument, HANDOFF_INPUT, } from './task-document.js';
|
|
16
17
|
import { writeTaskDir } from './write.js';
|
|
17
18
|
export * from './branch-update.js';
|
|
18
19
|
export * from './discover.js';
|
|
20
|
+
export { verifyTaskExecutionProvenance, } from './execution-provenance.js';
|
|
19
21
|
export * from './task-document.js';
|
|
20
22
|
export * from './write.js';
|
|
21
23
|
// The renderer lives in protocol; re-exported so CLI wrappers reach it through the runtime entry.
|
|
@@ -36,6 +38,14 @@ export async function taskInit(spec) {
|
|
|
36
38
|
...(spec.template.explicitId ? { explicitId: spec.template.explicitId } : {}),
|
|
37
39
|
});
|
|
38
40
|
const taskDirLabel = spec.taskDirLabel ?? spec.taskDir;
|
|
41
|
+
const taskCommands = spec.execution
|
|
42
|
+
? installedTaskCommands((file) => {
|
|
43
|
+
const relative = path.relative(spec.execution.distributionRoot, file);
|
|
44
|
+
if (relative === '..' || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative))
|
|
45
|
+
throw new Error('The task runtime must belong to the retained CLI distribution.');
|
|
46
|
+
return path.join(taskExecutionPin(spec.taskDir, spec.execution), 'cli', relative);
|
|
47
|
+
})
|
|
48
|
+
: installedTaskCommands();
|
|
39
49
|
const vars = {
|
|
40
50
|
TICKET: spec.task.ticket ?? '',
|
|
41
51
|
TITLE: spec.task.title,
|
|
@@ -48,7 +58,7 @@ export async function taskInit(spec) {
|
|
|
48
58
|
...(spec.domain ? { DOMAIN: spec.domain } : {}),
|
|
49
59
|
TEMPLATE: selected.entry.id,
|
|
50
60
|
TASK_DIR: taskDirLabel,
|
|
51
|
-
...
|
|
61
|
+
...taskCommands,
|
|
52
62
|
...(spec.task.sourceRef
|
|
53
63
|
? /^https?:\/\//.test(spec.task.sourceRef)
|
|
54
64
|
? { TICKET_URL: spec.task.sourceRef }
|
|
@@ -97,17 +107,28 @@ export async function taskInit(spec) {
|
|
|
97
107
|
: null,
|
|
98
108
|
hasTicketData: spec.bugInput !== undefined,
|
|
99
109
|
});
|
|
110
|
+
const executionProvenance = spec.execution
|
|
111
|
+
? retainTaskExecution(spec.taskDir, spec.execution)
|
|
112
|
+
: undefined;
|
|
100
113
|
const written = await writeTaskDir({
|
|
101
114
|
taskDir: spec.taskDir,
|
|
102
115
|
taskMarkdown,
|
|
103
116
|
checklistMarkdown,
|
|
104
|
-
|
|
117
|
+
fixedMarkCommand: executionProvenance !== undefined,
|
|
118
|
+
markCommand: executionProvenance
|
|
119
|
+
? `${quoteTaskPath(executionProvenance.resolvedExecutable)} task mark`
|
|
120
|
+
: spec.markCommand,
|
|
105
121
|
handoff: handoffMetadata,
|
|
106
122
|
terminalContract,
|
|
107
123
|
bugInput: spec.bugInput,
|
|
108
124
|
deterministicCommands: vars,
|
|
109
125
|
});
|
|
110
|
-
return {
|
|
126
|
+
return {
|
|
127
|
+
...written,
|
|
128
|
+
executionTemplate,
|
|
129
|
+
handoffMetadata,
|
|
130
|
+
...(executionProvenance ? { executionProvenance } : {}),
|
|
131
|
+
};
|
|
111
132
|
}
|
|
112
133
|
/**
|
|
113
134
|
* Selected-template provenance for a task dir. Reads `inputs/handoff.json`;
|