@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.
Files changed (37) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/native/host-cleanup-recovery.d.ts.map +1 -1
  3. package/dist/native/host-cleanup-recovery.js +15 -3
  4. package/dist/native/host-cleanup-recovery.js.map +1 -1
  5. package/dist/native/process-tree.d.ts +1 -0
  6. package/dist/native/process-tree.d.ts.map +1 -1
  7. package/dist/native/process-tree.js +9 -4
  8. package/dist/native/process-tree.js.map +1 -1
  9. package/dist/task-init/execution-provenance.d.ts +47 -0
  10. package/dist/task-init/execution-provenance.d.ts.map +1 -0
  11. package/dist/task-init/execution-provenance.js +226 -0
  12. package/dist/task-init/execution-provenance.js.map +1 -0
  13. package/dist/task-init/index.d.ts +5 -0
  14. package/dist/task-init/index.d.ts.map +1 -1
  15. package/dist/task-init/index.js +25 -4
  16. package/dist/task-init/index.js.map +1 -1
  17. package/dist/task-init/pin.d.ts +6 -0
  18. package/dist/task-init/pin.d.ts.map +1 -0
  19. package/dist/task-init/pin.js +77 -0
  20. package/dist/task-init/pin.js.map +1 -0
  21. package/dist/task-init/runtime-command.d.ts +3 -1
  22. package/dist/task-init/runtime-command.d.ts.map +1 -1
  23. package/dist/task-init/runtime-command.js +7 -2
  24. package/dist/task-init/runtime-command.js.map +1 -1
  25. package/dist/task-init/task-document.d.ts +2 -0
  26. package/dist/task-init/task-document.d.ts.map +1 -1
  27. package/dist/task-init/task-document.js +12 -0
  28. package/dist/task-init/task-document.js.map +1 -1
  29. package/dist/task-init/write.d.ts +4 -2
  30. package/dist/task-init/write.d.ts.map +1 -1
  31. package/dist/task-init/write.js +7 -5
  32. package/dist/task-init/write.js.map +1 -1
  33. package/package.json +4 -4
  34. package/scripts/mark-checklist-step.cjs +60 -7
  35. package/scripts/mark-io.cjs +10 -0
  36. package/scripts/subtask-unit.cjs +5 -3
  37. 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,CA4HN"}
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
- throw new Error('Unobserved native host recovery cannot exclude a session from that host');
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
- for (const observed of journalProcesses(entries) ?? [])
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;IAGhB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBACT,IAAI,EAAE,MAAM;IAOzC,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;IAG7B,4FAA4F;IAC5F,IAAI,IAAI,IAAI;IAwBZ,KAAK,IAAI,OAAO;IAOhB,OAAO,CAAC,SAAS;IAWjB,0FAA0F;IAC1F,SAAS,IAAI,IAAI;CAKlB"}
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 identity = snapshot.get(root)?.identity;
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
- return [...this.owned.values()].map((identity) => ({ ...identity }));
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;AAG9E,OAAO,EAML,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAUhE,mGAAmG;AACnG,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,8BAA8B,CAMhC;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,uBAAuB,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,4GAA4G;IAC5G,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,UAAU,EAAE,iBAAiB,CAAC;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,8BAA8B,CAAC;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CA+F1E;AAED,MAAM,WAAW,cAAc;IAC7B,iBAAiB,CAAC,EAAE,wBAAwB,GAAG,0BAA0B,CAAC;IAC1E,kBAAkB,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;CACpE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAgBzE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task-init/index.ts"],"names":[],"mappings":"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"}
@@ -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 { installedTaskCommands } from './runtime-command.js';
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
- ...installedTaskCommands(),
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
- markCommand: spec.markCommand,
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 { ...written, executionTemplate, handoffMetadata };
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`;