@farmslot/agent-runtime 0.9.0 → 0.11.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 +20 -1
- package/README.md +1 -1
- package/bin/farmslot-agent.mjs +1 -1
- package/dist/execution-template/create.d.ts.map +1 -1
- package/dist/execution-template/create.js +4 -9
- package/dist/execution-template/create.js.map +1 -1
- package/dist/execution-template/execution-template.test.js +85 -34
- package/dist/execution-template/execution-template.test.js.map +1 -1
- package/dist/execution-template/frontmatter.d.ts +6 -3
- package/dist/execution-template/frontmatter.d.ts.map +1 -1
- package/dist/execution-template/frontmatter.js +8 -10
- package/dist/execution-template/frontmatter.js.map +1 -1
- package/dist/execution-template/index.d.ts +2 -2
- package/dist/execution-template/index.d.ts.map +1 -1
- package/dist/execution-template/index.js +2 -2
- package/dist/execution-template/index.js.map +1 -1
- package/dist/execution-template/infer.d.ts +2 -3
- package/dist/execution-template/infer.d.ts.map +1 -1
- package/dist/execution-template/infer.js +2 -19
- package/dist/execution-template/infer.js.map +1 -1
- package/dist/execution-template/lint.d.ts.map +1 -1
- package/dist/execution-template/lint.js +12 -14
- package/dist/execution-template/lint.js.map +1 -1
- package/dist/execution-template/resolve.d.ts.map +1 -1
- package/dist/execution-template/resolve.js +0 -2
- package/dist/execution-template/resolve.js.map +1 -1
- package/dist/execution-template/select.d.ts.map +1 -1
- package/dist/execution-template/select.js +4 -8
- package/dist/execution-template/select.js.map +1 -1
- package/dist/execution-template/snapshot.d.ts.map +1 -1
- package/dist/execution-template/snapshot.js +0 -1
- package/dist/execution-template/snapshot.js.map +1 -1
- package/dist/execution-template/types.d.ts +10 -5
- package/dist/execution-template/types.d.ts.map +1 -1
- package/dist/execution-template/types.js.map +1 -1
- package/dist/native/account-claude.d.ts +5 -0
- package/dist/native/account-claude.d.ts.map +1 -0
- package/dist/native/account-claude.js +42 -0
- package/dist/native/account-claude.js.map +1 -0
- package/dist/native/account-codex.d.ts +4 -0
- package/dist/native/account-codex.d.ts.map +1 -0
- package/dist/native/account-codex.js +51 -0
- package/dist/native/account-codex.js.map +1 -0
- package/dist/native/account-common.d.ts +30 -0
- package/dist/native/account-common.d.ts.map +1 -0
- package/dist/native/account-common.js +155 -0
- package/dist/native/account-common.js.map +1 -0
- package/dist/native/account-cursor.d.ts +5 -0
- package/dist/native/account-cursor.d.ts.map +1 -0
- package/dist/native/account-cursor.js +48 -0
- package/dist/native/account-cursor.js.map +1 -0
- package/dist/native/account-grok.d.ts +4 -0
- package/dist/native/account-grok.d.ts.map +1 -0
- package/dist/native/account-grok.js +55 -0
- package/dist/native/account-grok.js.map +1 -0
- package/dist/native/account-observation.test.d.ts +2 -0
- package/dist/native/account-observation.test.d.ts.map +1 -0
- package/dist/native/account-observation.test.js +256 -0
- package/dist/native/account-observation.test.js.map +1 -0
- package/dist/native/account-profiles.d.ts +11 -0
- package/dist/native/account-profiles.d.ts.map +1 -0
- package/dist/native/account-profiles.js +172 -0
- package/dist/native/account-profiles.js.map +1 -0
- package/dist/native/account-profiles.test.d.ts +2 -0
- package/dist/native/account-profiles.test.d.ts.map +1 -0
- package/dist/native/account-profiles.test.js +172 -0
- package/dist/native/account-profiles.test.js.map +1 -0
- package/dist/native/account-types.d.ts +11 -0
- package/dist/native/account-types.d.ts.map +1 -0
- package/dist/native/account-types.js +2 -0
- package/dist/native/account-types.js.map +1 -0
- package/dist/native/acp-requests.d.ts +11 -0
- package/dist/native/acp-requests.d.ts.map +1 -0
- package/dist/native/acp-requests.js +109 -0
- package/dist/native/acp-requests.js.map +1 -0
- package/dist/native/acp-rpc.d.ts +15 -0
- package/dist/native/acp-rpc.d.ts.map +1 -0
- package/dist/native/acp-rpc.js +73 -0
- package/dist/native/acp-rpc.js.map +1 -0
- package/dist/native/acp.d.ts +15 -0
- package/dist/native/acp.d.ts.map +1 -0
- package/dist/native/acp.js +285 -0
- package/dist/native/acp.js.map +1 -0
- package/dist/native/acp.test.d.ts +2 -0
- package/dist/native/acp.test.d.ts.map +1 -0
- package/dist/native/acp.test.js +257 -0
- package/dist/native/acp.test.js.map +1 -0
- package/dist/native/claude.d.ts.map +1 -1
- package/dist/native/claude.js +14 -0
- package/dist/native/claude.js.map +1 -1
- package/dist/native/client.d.ts +13 -0
- package/dist/native/client.d.ts.map +1 -1
- package/dist/native/client.js +112 -1
- package/dist/native/client.js.map +1 -1
- package/dist/native/codex.d.ts.map +1 -1
- package/dist/native/codex.js +61 -3
- package/dist/native/codex.js.map +1 -1
- package/dist/native/cursor-model.d.ts +6 -0
- package/dist/native/cursor-model.d.ts.map +1 -0
- package/dist/native/cursor-model.js +74 -0
- package/dist/native/cursor-model.js.map +1 -0
- package/dist/native/cursor-model.test.d.ts +2 -0
- package/dist/native/cursor-model.test.d.ts.map +1 -0
- package/dist/native/cursor-model.test.js +40 -0
- package/dist/native/cursor-model.test.js.map +1 -0
- package/dist/native/cursor.d.ts +2 -0
- package/dist/native/cursor.d.ts.map +1 -0
- package/dist/native/cursor.js +30 -0
- package/dist/native/cursor.js.map +1 -0
- package/dist/native/durability.test.js +461 -1
- package/dist/native/durability.test.js.map +1 -1
- package/dist/native/filesystem-policy.test.d.ts +2 -0
- package/dist/native/filesystem-policy.test.d.ts.map +1 -0
- package/dist/native/filesystem-policy.test.js +136 -0
- package/dist/native/filesystem-policy.test.js.map +1 -0
- package/dist/native/grok.d.ts +2 -0
- package/dist/native/grok.d.ts.map +1 -0
- package/dist/native/grok.js +17 -0
- package/dist/native/grok.js.map +1 -0
- package/dist/native/host.js +39 -0
- package/dist/native/host.js.map +1 -1
- package/dist/native/index.d.ts +3 -0
- package/dist/native/index.d.ts.map +1 -1
- package/dist/native/index.js +3 -0
- package/dist/native/index.js.map +1 -1
- package/dist/native/ipc.d.ts +59 -0
- package/dist/native/ipc.d.ts.map +1 -1
- package/dist/native/ipc.js +76 -4
- package/dist/native/ipc.js.map +1 -1
- package/dist/native/manager.d.ts +22 -4
- package/dist/native/manager.d.ts.map +1 -1
- package/dist/native/manager.js +386 -46
- package/dist/native/manager.js.map +1 -1
- package/dist/native/process-tree.d.ts +11 -0
- package/dist/native/process-tree.d.ts.map +1 -1
- package/dist/native/process-tree.js +123 -20
- package/dist/native/process-tree.js.map +1 -1
- package/dist/native/process-tree.test.js +126 -1
- package/dist/native/process-tree.test.js.map +1 -1
- package/dist/native/process.d.ts +5 -1
- package/dist/native/process.d.ts.map +1 -1
- package/dist/native/process.js +36 -13
- package/dist/native/process.js.map +1 -1
- package/dist/native/process.test.d.ts +2 -0
- package/dist/native/process.test.d.ts.map +1 -0
- package/dist/native/process.test.js +56 -0
- package/dist/native/process.test.js.map +1 -0
- package/dist/native/profile-service.d.ts +5 -0
- package/dist/native/profile-service.d.ts.map +1 -0
- package/dist/native/profile-service.js +76 -0
- package/dist/native/profile-service.js.map +1 -0
- package/dist/native/registry.d.ts +20 -0
- package/dist/native/registry.d.ts.map +1 -0
- package/dist/native/registry.js +89 -0
- package/dist/native/registry.js.map +1 -0
- package/dist/native/registry.test.d.ts +2 -0
- package/dist/native/registry.test.d.ts.map +1 -0
- package/dist/native/registry.test.js +13 -0
- package/dist/native/registry.test.js.map +1 -0
- package/dist/native/review-sandbox.d.ts +12 -0
- package/dist/native/review-sandbox.d.ts.map +1 -0
- package/dist/native/review-sandbox.js +6 -0
- package/dist/native/review-sandbox.js.map +1 -0
- package/dist/native/review-sandbox.test.d.ts +2 -0
- package/dist/native/review-sandbox.test.d.ts.map +1 -0
- package/dist/native/review-sandbox.test.js +40 -0
- package/dist/native/review-sandbox.test.js.map +1 -0
- package/dist/native/service.d.ts.map +1 -1
- package/dist/native/service.js +42 -8
- package/dist/native/service.js.map +1 -1
- package/dist/native/supervisor.js +121 -33
- package/dist/native/supervisor.js.map +1 -1
- package/dist/native/types.d.ts +11 -1
- package/dist/native/types.d.ts.map +1 -1
- package/dist/native/worker-history.d.ts +16 -0
- package/dist/native/worker-history.d.ts.map +1 -0
- package/dist/native/worker-history.js +77 -0
- package/dist/native/worker-history.js.map +1 -0
- package/dist/native/worker-history.test.d.ts +2 -0
- package/dist/native/worker-history.test.d.ts.map +1 -0
- package/dist/native/worker-history.test.js +195 -0
- package/dist/native/worker-history.test.js.map +1 -0
- package/dist/native/worker-launch.d.ts +72 -0
- package/dist/native/worker-launch.d.ts.map +1 -0
- package/dist/native/worker-launch.js +134 -0
- package/dist/native/worker-launch.js.map +1 -0
- package/dist/native/worker-launch.test.d.ts +2 -0
- package/dist/native/worker-launch.test.d.ts.map +1 -0
- package/dist/native/worker-launch.test.js +61 -0
- package/dist/native/worker-launch.test.js.map +1 -0
- package/dist/native/worker-relocation.test.d.ts +2 -0
- package/dist/native/worker-relocation.test.d.ts.map +1 -0
- package/dist/native/worker-relocation.test.js +110 -0
- package/dist/native/worker-relocation.test.js.map +1 -0
- package/dist/native/worker-service.d.ts +4 -0
- package/dist/native/worker-service.d.ts.map +1 -0
- package/dist/native/worker-service.js +85 -0
- package/dist/native/worker-service.js.map +1 -0
- package/dist/task-init/discover.d.ts +26 -0
- package/dist/task-init/discover.d.ts.map +1 -0
- package/dist/task-init/discover.js +64 -0
- package/dist/task-init/discover.js.map +1 -0
- package/dist/task-init/discover.test.d.ts +2 -0
- package/dist/task-init/discover.test.d.ts.map +1 -0
- package/dist/task-init/discover.test.js +58 -0
- package/dist/task-init/discover.test.js.map +1 -0
- package/dist/task-init/index.d.ts +6 -1
- package/dist/task-init/index.d.ts.map +1 -1
- package/dist/task-init/index.js +8 -3
- package/dist/task-init/index.js.map +1 -1
- package/dist/task-init/task-document.d.ts.map +1 -1
- package/dist/task-init/task-document.js +2 -2
- package/dist/task-init/task-document.js.map +1 -1
- package/dist/task-init/write.d.ts +0 -6
- package/dist/task-init/write.d.ts.map +1 -1
- package/dist/task-init/write.js +1 -8
- package/dist/task-init/write.js.map +1 -1
- package/package.json +3 -3
- package/scripts/cursor-session-discovery.cjs +48 -0
- package/scripts/execution-template-cli.mjs +8 -11
- package/scripts/review-filesystem.cjs +39 -0
- package/scripts/review-session.cjs +45 -0
- package/scripts/review-terminal.cjs +134 -0
- package/scripts/task-init-cli.mjs +3 -3
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Finding task directories in a checkout. `task init` writes them under the
|
|
2
|
+
// tasks root as `<flow>/<slug>-<stamp>` on the farm and
|
|
3
|
+
// `recipe-cook/<stamp>-<slug>` from the skill (docs/reference/
|
|
4
|
+
// task-directory-contract.md), so every reader that wants "the task in progress
|
|
5
|
+
// here" needs the same walk: the directory whose signal or checklist was written
|
|
6
|
+
// last. Symlinked entries are not followed; a task directory is a real directory.
|
|
7
|
+
import { readdirSync, statSync } from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { INTERACTIVE_CHECKLIST_MARKDOWN, TASK_PROGRESS_MARKDOWN, WORKER_SIGNAL_FILE, } from '@farmslot/protocol';
|
|
10
|
+
/**
|
|
11
|
+
* How deep under the tasks root a task directory may sit. Both documented
|
|
12
|
+
* shapes are depth 2; one extra level covers a grouped flow. The walk stops at
|
|
13
|
+
* a directory that qualifies, so a task's `artifacts/` (which mirrors task
|
|
14
|
+
* files) is never mistaken for a task of its own.
|
|
15
|
+
*/
|
|
16
|
+
export const TASK_DIR_SEARCH_DEPTH = 3;
|
|
17
|
+
function fileMtimeMs(file) {
|
|
18
|
+
const stat = statSync(file, { throwIfNoEntry: false });
|
|
19
|
+
return stat?.isFile() ? stat.mtimeMs : null;
|
|
20
|
+
}
|
|
21
|
+
function newest(...values) {
|
|
22
|
+
const known = values.filter((value) => value !== null);
|
|
23
|
+
return known.length > 0 ? Math.max(...known) : null;
|
|
24
|
+
}
|
|
25
|
+
/** Every directory under `tasksRoot` that holds a signal or a checklist. */
|
|
26
|
+
export function discoverTaskDirs(tasksRoot) {
|
|
27
|
+
const found = [];
|
|
28
|
+
if (!statSync(tasksRoot, { throwIfNoEntry: false })?.isDirectory())
|
|
29
|
+
return found;
|
|
30
|
+
const visit = (dir, depth) => {
|
|
31
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
32
|
+
if (!entry.isDirectory())
|
|
33
|
+
continue;
|
|
34
|
+
const child = path.join(dir, entry.name);
|
|
35
|
+
const signalMtimeMs = fileMtimeMs(path.join(child, WORKER_SIGNAL_FILE));
|
|
36
|
+
const checklistMtimeMs = newest(fileMtimeMs(path.join(child, INTERACTIVE_CHECKLIST_MARKDOWN)), fileMtimeMs(path.join(child, TASK_PROGRESS_MARKDOWN)));
|
|
37
|
+
if (signalMtimeMs !== null || checklistMtimeMs !== null) {
|
|
38
|
+
found.push({ dir: child, signalMtimeMs, checklistMtimeMs });
|
|
39
|
+
}
|
|
40
|
+
else if (depth < TASK_DIR_SEARCH_DEPTH) {
|
|
41
|
+
visit(child, depth + 1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
visit(tasksRoot, 1);
|
|
46
|
+
return found;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The task directory a reader lands on without naming one: the one written to
|
|
50
|
+
* last, by signal or by checklist. A checklist counts because between
|
|
51
|
+
* `task init` and the worker's first `mark start` the live task has no signal
|
|
52
|
+
* yet, and a reader must not fall back to the previous, finished task then.
|
|
53
|
+
* Equal times prefer the signalled task, then the lexically first path, so two
|
|
54
|
+
* readers of one checkout never land on different tasks.
|
|
55
|
+
*/
|
|
56
|
+
export function latestTaskDir(tasksRoot) {
|
|
57
|
+
const ranked = discoverTaskDirs(tasksRoot)
|
|
58
|
+
.map((entry) => ({ entry, at: newest(entry.signalMtimeMs, entry.checklistMtimeMs) }))
|
|
59
|
+
.sort((left, right) => right.at - left.at ||
|
|
60
|
+
Number(right.entry.signalMtimeMs !== null) - Number(left.entry.signalMtimeMs !== null) ||
|
|
61
|
+
left.entry.dir.localeCompare(right.entry.dir));
|
|
62
|
+
return ranked[0]?.entry.dir;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=discover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/task-init/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.test.d.ts","sourceRoot":"","sources":["../../src/task-init/discover.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Task-dir discovery is what every "which task is this checkout on" reader
|
|
2
|
+
// (status views, harness watch) relies on: the task written to last wins,
|
|
3
|
+
// whether by signal or by checklist, and nothing else under the root counts.
|
|
4
|
+
import assert from 'node:assert/strict';
|
|
5
|
+
import { mkdirSync, mkdtempSync, utimesSync, writeFileSync } from 'node:fs';
|
|
6
|
+
import { tmpdir } from 'node:os';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import test from 'node:test';
|
|
9
|
+
import { discoverTaskDirs, latestTaskDir } from './discover.js';
|
|
10
|
+
const START = Date.parse('2026-01-01T00:00:00.000Z');
|
|
11
|
+
function tasksRoot() {
|
|
12
|
+
return path.join(mkdtempSync(path.join(tmpdir(), 'farmslot-task-dirs-')), 'temp', 'tasks');
|
|
13
|
+
}
|
|
14
|
+
function taskDir(root, rel, files) {
|
|
15
|
+
const dir = path.join(root, rel);
|
|
16
|
+
mkdirSync(dir, { recursive: true });
|
|
17
|
+
for (const [name, atMs] of Object.entries(files)) {
|
|
18
|
+
const file = path.join(dir, name);
|
|
19
|
+
writeFileSync(file, '');
|
|
20
|
+
utimesSync(file, new Date(atMs), new Date(atMs));
|
|
21
|
+
}
|
|
22
|
+
return dir;
|
|
23
|
+
}
|
|
24
|
+
test('discoverTaskDirs lists directories holding a signal or a checklist, and does not descend into them', () => {
|
|
25
|
+
const tasks = tasksRoot();
|
|
26
|
+
assert.deepEqual(discoverTaskDirs(tasks), [], 'a missing root discovers nothing');
|
|
27
|
+
assert.equal(latestTaskDir(tasks), undefined);
|
|
28
|
+
const older = taskDir(tasks, 'fix/older-0101', { 'SIGNAL.json': START, 'TASK.md': START });
|
|
29
|
+
const grouped = taskDir(tasks, 'fix/deeper/newer', { 'SIGNAL.json': START + 60_000 });
|
|
30
|
+
mkdirSync(path.join(tasks, 'fix/empty'), { recursive: true });
|
|
31
|
+
// The artifact mirror copies task files under artifacts/; that is not a task.
|
|
32
|
+
taskDir(tasks, 'fix/older-0101/artifacts/mirror', { 'TASK.md': START + 90_000 });
|
|
33
|
+
const found = discoverTaskDirs(tasks)
|
|
34
|
+
.map((entry) => entry.dir)
|
|
35
|
+
.sort();
|
|
36
|
+
assert.deepEqual(found, [grouped, older].sort());
|
|
37
|
+
assert.equal(latestTaskDir(tasks), grouped);
|
|
38
|
+
});
|
|
39
|
+
test('latestTaskDir is the task written to last, by signal or by checklist', () => {
|
|
40
|
+
const tasks = tasksRoot();
|
|
41
|
+
const finished = taskDir(tasks, 'fix/finished', { 'SIGNAL.json': START + 60_000 });
|
|
42
|
+
// Between `task init` and `mark start` the live task has a checklist and no signal.
|
|
43
|
+
const started = taskDir(tasks, 'dev/just-initialised', { 'CHECKLIST.md': START + 120_000 });
|
|
44
|
+
assert.equal(latestTaskDir(tasks), started);
|
|
45
|
+
// Once it signals, its signal time is what counts.
|
|
46
|
+
taskDir(tasks, 'dev/just-initialised', { 'SIGNAL.json': START + 180_000 });
|
|
47
|
+
assert.equal(latestTaskDir(tasks), started);
|
|
48
|
+
assert.notEqual(latestTaskDir(tasks), finished);
|
|
49
|
+
});
|
|
50
|
+
test('latestTaskDir breaks equal times by signal presence, then by path', () => {
|
|
51
|
+
const tasks = tasksRoot();
|
|
52
|
+
const b = taskDir(tasks, 'qa/b', { 'TASK.md': START + 1_000 });
|
|
53
|
+
taskDir(tasks, 'qa/c', { 'TASK.md': START + 1_000 });
|
|
54
|
+
assert.equal(latestTaskDir(tasks), b, 'equal times resolve to the lexically first path');
|
|
55
|
+
const signalled = taskDir(tasks, 'qa/d', { 'SIGNAL.json': START + 1_000 });
|
|
56
|
+
assert.equal(latestTaskDir(tasks), signalled, 'a signal outranks a checklist at the same time');
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=discover.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.test.js","sourceRoot":"","sources":["../../src/task-init/discover.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { type ExecutionTemplateReference, type ExecutionTemplateRunMode, type Te
|
|
|
2
2
|
import type { ExecutionTemplateSource } from '../execution-template/types.js';
|
|
3
3
|
import { type HandoffExecutionTemplate, type HandoffMetadata, type HandoffSourceKind } from './task-document.js';
|
|
4
4
|
import { type WrittenTaskDir } from './write.js';
|
|
5
|
+
export * from './discover.js';
|
|
5
6
|
export * from './task-document.js';
|
|
6
7
|
export * from './write.js';
|
|
7
8
|
export { renderTemplatePlaceholders } from '@farmslot/protocol';
|
|
@@ -20,7 +21,11 @@ export interface TaskInitSpec {
|
|
|
20
21
|
/** How the worker should refer to the task dir (`TASK_DIR` placeholder); defaults to `taskDir` as given. */
|
|
21
22
|
taskDirLabel?: string;
|
|
22
23
|
flow: string;
|
|
23
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Run mode of this run. Templates carry none; it selects project default
|
|
26
|
+
* rules (`when.runMode`), fills `{{MODE}}`, and picks the terminal contract.
|
|
27
|
+
*/
|
|
28
|
+
runMode?: ExecutionTemplateRunMode;
|
|
24
29
|
platform: string;
|
|
25
30
|
domain?: string;
|
|
26
31
|
template: TaskInitTemplateSelection;
|
|
@@ -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;AAE9E,OAAO,EAIL,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,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,OAAO,EAAE,wBAAwB,CAAC;
|
|
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;AAE9E,OAAO,EAIL,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,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,CAmF1E;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"}
|
package/dist/task-init/index.js
CHANGED
|
@@ -13,6 +13,7 @@ import { selectExecutionTemplate } from '../execution-template/select.js';
|
|
|
13
13
|
import { executionTemplateReference, readExecutionTemplateSnapshot, } from '../execution-template/snapshot.js';
|
|
14
14
|
import { buildHandoffMetadata, buildTaskDocument, HANDOFF_INPUT, } from './task-document.js';
|
|
15
15
|
import { writeTaskDir } from './write.js';
|
|
16
|
+
export * from './discover.js';
|
|
16
17
|
export * from './task-document.js';
|
|
17
18
|
export * from './write.js';
|
|
18
19
|
// The renderer lives in protocol; re-exported so CLI wrappers reach it through the runtime entry.
|
|
@@ -28,7 +29,7 @@ export async function taskInit(spec) {
|
|
|
28
29
|
sources: spec.template.sources,
|
|
29
30
|
flow: spec.flow,
|
|
30
31
|
platform: spec.platform,
|
|
31
|
-
runMode: spec.runMode,
|
|
32
|
+
...(spec.runMode ? { runMode: spec.runMode } : {}),
|
|
32
33
|
...(spec.domain ? { domain: spec.domain } : {}),
|
|
33
34
|
...(spec.template.explicitId ? { explicitId: spec.template.explicitId } : {}),
|
|
34
35
|
});
|
|
@@ -37,7 +38,10 @@ export async function taskInit(spec) {
|
|
|
37
38
|
TICKET: spec.task.ticket ?? '',
|
|
38
39
|
TITLE: spec.task.title,
|
|
39
40
|
FLOW: spec.flow,
|
|
40
|
-
|
|
41
|
+
// Same rule as DOMAIN below: an unset value supplies no placeholder, so a
|
|
42
|
+
// template that spells {{MODE}} fails the guard instead of rendering a
|
|
43
|
+
// made-up default.
|
|
44
|
+
...(spec.runMode ? { MODE: spec.runMode } : {}),
|
|
41
45
|
PLATFORM: spec.platform,
|
|
42
46
|
...(spec.domain ? { DOMAIN: spec.domain } : {}),
|
|
43
47
|
TEMPLATE: selected.entry.id,
|
|
@@ -56,7 +60,8 @@ export async function taskInit(spec) {
|
|
|
56
60
|
selectionReason: selected.reason,
|
|
57
61
|
...reference,
|
|
58
62
|
};
|
|
59
|
-
const terminalContract = spec.terminalContract ??
|
|
63
|
+
const terminalContract = spec.terminalContract ??
|
|
64
|
+
builtinTerminalContract(spec.flow, { ...(spec.runMode ? { mode: spec.runMode } : {}) });
|
|
60
65
|
const handoffMetadata = buildHandoffMetadata({
|
|
61
66
|
attemptId: spec.handoff.attemptId ?? randomUUID(),
|
|
62
67
|
surface: spec.handoff.surface,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/task-init/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,kEAAkE;AAClE,uEAAuE;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAGL,0BAA0B,GAG3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,GAId,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAuB,MAAM,YAAY,CAAC;AAE/D,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,kGAAkG;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAQ/C,mGAAmG;AACnG,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,UAA2C,EAAE;IAE7C,MAAM,EAAE,6BAA6B,EAAE,GACrC,OAAO,CAAC,4CAA4C,CAEnD,CAAC;IACJ,OAAO,6BAA6B,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/task-init/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-document.d.ts","sourceRoot":"","sources":["../../src/task-init/task-document.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACpC,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,eAAO,MAAM,SAAS,0BAA0B,CAAC;AACjD,wFAAwF;AACxF,eAAO,MAAM,+BAA+B,qBAAqB,CAAC;AAwClE;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAkB7E;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iEAAiE;IACjE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"task-document.d.ts","sourceRoot":"","sources":["../../src/task-init/task-document.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,7 +80,7 @@ export function buildTaskDocument(input) {
|
|
|
80
80
|
const sections = [`# ${input.flowType}: ${title}`, ''];
|
|
81
81
|
if (input.modePreamble.trim())
|
|
82
82
|
sections.push(input.modePreamble, '');
|
|
83
|
-
sections.push('## Task', '', '```text', taskBlock, '
|
|
83
|
+
sections.push('## Task', '', '```text', taskBlock, '```', '', '## Description', '', input.description || '_No description_', '', '## Acceptance Criteria', '', renderAcceptanceCriteria(input.acceptanceCriteria));
|
|
84
84
|
if (input.affectedArea && input.affectedArea !== '_Not specified_') {
|
|
85
85
|
sections.push('', '## Affected Area', '', input.affectedArea);
|
|
86
86
|
}
|
|
@@ -103,7 +103,7 @@ export function buildTaskDocument(input) {
|
|
|
103
103
|
if (input.addendum?.trim()) {
|
|
104
104
|
sections.push('', input.addendum.trim());
|
|
105
105
|
}
|
|
106
|
-
sections.push('', '## Checklist', '', `Follow \`${taskDir}/${EXECUTION_CHECKLIST_DOCUMENT}\` top to bottom. That file is the only checklist that counts.`, `Marker: \`${taskDir}/mark\`, run from the repo root. \`mark start\` once when work begins, \`mark N\` after each step (visible 1-based number), then \`mark complete --mark-last\`, \`mark no-change --reason "…"\`, or \`mark blocked --reason "…"\`.`, 'Never hand-write `SIGNAL.json`. Do not add step checkboxes to this document;
|
|
106
|
+
sections.push('', '## Checklist', '', `Follow \`${taskDir}/${EXECUTION_CHECKLIST_DOCUMENT}\` top to bottom. That file is the only checklist that counts.`, `Marker: \`${taskDir}/mark\`, run from the repo root. \`mark start\` once when work begins, \`mark N\` after each step (visible 1-based number), then \`mark complete --mark-last\`, \`mark no-change --reason "…"\`, or \`mark blocked --reason "…"\`.`, 'Never hand-write `SIGNAL.json`. Do not add step checkboxes to this document; append notes (for example `## Recipe ACs`) below.', '', '## Inputs', '', `Under \`${taskDir}/inputs/\`:`, '', `- \`${path.basename(HANDOFF_INPUT)}\` — run identity, selected checklist provenance, and terminal report paths`, '- `worker-terminal-contract.json` — artifacts required before a terminal mark');
|
|
107
107
|
if (input.hasTicketData) {
|
|
108
108
|
sections.push(`- \`${path.basename(BUG_INPUT)}\` — full ticket data as fetched`);
|
|
109
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-document.js","sourceRoot":"","sources":["../../src/task-init/task-document.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"task-document.js","sourceRoot":"","sources":["../../src/task-init/task-document.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,12 +28,6 @@ export interface WriteTaskDirInput {
|
|
|
28
28
|
terminalContract: WorkerTerminalContractDocument;
|
|
29
29
|
/** Ticket data as fetched, written to inputs/bug-input.json when present. */
|
|
30
30
|
bugInput?: unknown;
|
|
31
|
-
/**
|
|
32
|
-
* Transition only: also write `checklist-target.json` with the default target so
|
|
33
|
-
* a mark engine older than 0.9 (which fails closed without it) keeps working on
|
|
34
|
-
* slots not yet redeployed. Absent means the same thing. Remove next release.
|
|
35
|
-
*/
|
|
36
|
-
writeChecklistManifest?: boolean;
|
|
37
31
|
}
|
|
38
32
|
export interface WrittenTaskDir {
|
|
39
33
|
taskDir: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/task-init/write.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/task-init/write.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,8BAA8B,EACpC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEpF,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AAIpD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,8FAA8F;AAC9F,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,gBAAgB,EAAE,8BAA8B,CAAC;IACjD,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAmCpF"}
|
package/dist/task-init/write.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
// The task-dir writer: the only code that lays out a task directory. A control
|
|
2
2
|
// plane and a harness both call it, so the two surfaces cannot drift.
|
|
3
|
-
import { existsSync } from 'node:fs';
|
|
4
3
|
import { chmod, mkdir, writeFile } from 'node:fs/promises';
|
|
5
4
|
import path from 'node:path';
|
|
6
5
|
import { fileURLToPath } from 'node:url';
|
|
7
|
-
import {
|
|
6
|
+
import { EXECUTION_CHECKLIST_DOCUMENT, WORKER_TERMINAL_CONTRACT_INPUT, } from '@farmslot/protocol';
|
|
8
7
|
import { BUG_INPUT, HANDOFF_INPUT } from './task-document.js';
|
|
9
8
|
export const TASK_DOCUMENT = 'TASK.md';
|
|
10
9
|
export const MARK_SHIM = 'mark';
|
|
@@ -54,12 +53,6 @@ export async function writeTaskDir(input) {
|
|
|
54
53
|
await writeFile(handoff, `${JSON.stringify(input.handoff, null, 2)}\n`, 'utf-8');
|
|
55
54
|
const terminalContract = path.join(taskDir, WORKER_TERMINAL_CONTRACT_INPUT);
|
|
56
55
|
await writeFile(terminalContract, `${JSON.stringify(input.terminalContract, null, 2)}\n`, 'utf-8');
|
|
57
|
-
if (input.writeChecklistManifest) {
|
|
58
|
-
const checklistName = existsSync(path.join(taskDir, EXECUTION_CHECKLIST_DOCUMENT))
|
|
59
|
-
? EXECUTION_CHECKLIST_DOCUMENT
|
|
60
|
-
: TASK_DOCUMENT;
|
|
61
|
-
await writeFile(path.join(taskDir, CHECKLIST_TARGET_MANIFEST), `${JSON.stringify({ checklist: checklistName, signal: 'SIGNAL.json' }, null, 2)}\n`, 'utf-8');
|
|
62
|
-
}
|
|
63
56
|
let bugInput = null;
|
|
64
57
|
if (input.bugInput !== undefined) {
|
|
65
58
|
bugInput = path.join(taskDir, BUG_INPUT);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/task-init/write.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sEAAsE;AAEtE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/task-init/write.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farmslot/agent-runtime",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
32
|
"typecheck": "yarn workspace @farmslot/protocol build && tsc --noEmit --project tsconfig.json",
|
|
33
|
-
"test": "node test/mark-checklist-step.test.cjs && node test/checklist-target-sync.test.mjs && node test/package-exports.test.cjs && node test/check-task-artifact-contract.test.cjs && node test/recipe-quality-builder.test.cjs && node test/task-init.test.mjs && node ../../scripts/quality/run-tsx-tests.mjs --cwd . --tsconfig tsconfig.json src/execution-template && node ../../scripts/quality/run-tsx-tests.mjs --cwd . --tsconfig tsconfig.json src/native",
|
|
33
|
+
"test": "node test/mark-checklist-step.test.cjs && node test/checklist-target-sync.test.mjs && node test/package-exports.test.cjs && node test/check-task-artifact-contract.test.cjs && node test/recipe-quality-builder.test.cjs && node test/task-init.test.mjs && node ../../scripts/quality/run-tsx-tests.mjs --cwd . --tsconfig tsconfig.json src/execution-template && node ../../scripts/quality/run-tsx-tests.mjs --cwd . --tsconfig tsconfig.json src/task-init && node ../../scripts/quality/run-tsx-tests.mjs --cwd . --tsconfig tsconfig.json src/native",
|
|
34
34
|
"format": "prettier --write --ignore-path ../../.prettierignore .",
|
|
35
35
|
"format:check": "prettier --check --ignore-path ../../.prettierignore .",
|
|
36
36
|
"lint": "eslint \"src/**/*.ts\"",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"prepublishOnly": "node ../../scripts/quality/check-farmslot-package-readiness.mjs --publish --packages @farmslot/agent-runtime"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@farmslot/protocol": "0.
|
|
44
|
+
"@farmslot/protocol": "0.29.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/node": "^22.0.0",
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Read-only recovery for older terminal launches that did not persist their chat ID.
|
|
2
|
+
const fs = require('node:fs');
|
|
3
|
+
const path = require('node:path');
|
|
4
|
+
const input = JSON.parse(process.argv.at(-1));
|
|
5
|
+
const root = input.root.replace(/^~(?=\/|$)/, process.env.HOME);
|
|
6
|
+
const matches = [];
|
|
7
|
+
if (
|
|
8
|
+
!path.isAbsolute(input.cwd) ||
|
|
9
|
+
!Number.isFinite(input.startedAt) ||
|
|
10
|
+
!Number.isFinite(input.completedAt) ||
|
|
11
|
+
input.completedAt < input.startedAt
|
|
12
|
+
)
|
|
13
|
+
throw Error('Invalid session discovery bounds');
|
|
14
|
+
function directories(parent) {
|
|
15
|
+
try {
|
|
16
|
+
return fs
|
|
17
|
+
.readdirSync(parent, { withFileTypes: true })
|
|
18
|
+
.filter((entry) => entry.isDirectory())
|
|
19
|
+
.map((entry) => path.join(parent, entry.name));
|
|
20
|
+
} catch (error) {
|
|
21
|
+
if (error.code === 'ENOENT') return [];
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
for (const workspace of directories(root))
|
|
26
|
+
for (const chat of directories(workspace)) {
|
|
27
|
+
if (!/^[a-f0-9]{8}(?:-[a-f0-9]{4}){3}-[a-f0-9]{12}$/i.test(path.basename(chat))) continue;
|
|
28
|
+
let meta;
|
|
29
|
+
try {
|
|
30
|
+
meta = JSON.parse(fs.readFileSync(path.join(chat, 'meta.json'), 'utf8'));
|
|
31
|
+
} catch (error) {
|
|
32
|
+
// Concurrently created or truncated metadata is not evidence of a recoverable chat.
|
|
33
|
+
if (error.code === 'ENOENT' || error instanceof SyntaxError) continue;
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
if (
|
|
37
|
+
meta.schemaVersion === 1 &&
|
|
38
|
+
meta.hasConversation === true &&
|
|
39
|
+
meta.cwd === input.cwd &&
|
|
40
|
+
Number.isFinite(meta.createdAtMs) &&
|
|
41
|
+
meta.createdAtMs >= input.startedAt &&
|
|
42
|
+
meta.createdAtMs <= input.completedAt
|
|
43
|
+
)
|
|
44
|
+
matches.push({ sessionId: path.basename(chat) });
|
|
45
|
+
}
|
|
46
|
+
if (matches.length > 1)
|
|
47
|
+
throw Error('Several chats match the review workspace; session recovery is ambiguous');
|
|
48
|
+
process.stdout.write(JSON.stringify(matches[0] ?? null));
|
|
@@ -17,10 +17,12 @@ function usage(exitCode = 0) {
|
|
|
17
17
|
'list --dir <path> --domain-dir <domain=path> --project-worker <path> --package-templates <path>',
|
|
18
18
|
' [--project-name name] [--package-id id] [--flow f] [--run-mode m]',
|
|
19
19
|
' [--platform p] [--domain d] [--no-include-shadowed] [--json]',
|
|
20
|
-
'materialize <output> --flow f --run-mode m
|
|
20
|
+
'materialize <output> --flow f --platform p [--run-mode m] [--domain d] [--id id]',
|
|
21
21
|
' [the same source options as list] [--provenance path] [--json]',
|
|
22
22
|
'lint <file-or-dir> [--json]',
|
|
23
|
-
'new <path> [--flow f] [--
|
|
23
|
+
'new <path> [--flow f] [--platform p] [--title t] [--force] [--json]',
|
|
24
|
+
'',
|
|
25
|
+
'--run-mode is the run mode used to match project default rules; templates have none.',
|
|
24
26
|
].join('\n');
|
|
25
27
|
(exitCode === 0 ? console.log : console.error)(text);
|
|
26
28
|
process.exit(exitCode);
|
|
@@ -174,18 +176,17 @@ async function cmdList(args, runtime) {
|
|
|
174
176
|
if (opts.id) throw new Error('--id is only valid with materialize');
|
|
175
177
|
const sources = buildSources(opts, runtime);
|
|
176
178
|
const templates =
|
|
177
|
-
opts.flow && opts.platform
|
|
179
|
+
opts.flow && opts.platform
|
|
178
180
|
? runtime.listCompatibleExecutionTemplates({
|
|
179
181
|
sources,
|
|
180
182
|
flow: opts.flow,
|
|
181
183
|
platform: opts.platform,
|
|
182
|
-
runMode: opts.runMode,
|
|
184
|
+
...(opts.runMode ? { runMode: opts.runMode } : {}),
|
|
183
185
|
...(opts.domain ? { domain: opts.domain } : {}),
|
|
184
186
|
})
|
|
185
187
|
: runtime.listExecutionTemplates({
|
|
186
188
|
sources,
|
|
187
189
|
flow: opts.flow,
|
|
188
|
-
runMode: opts.runMode,
|
|
189
190
|
platform: opts.platform,
|
|
190
191
|
domain: opts.domain,
|
|
191
192
|
includeShadowed: opts.includeShadowed,
|
|
@@ -203,7 +204,7 @@ async function cmdList(args, runtime) {
|
|
|
203
204
|
for (const entry of catalog) {
|
|
204
205
|
const shadow = entry.shadowedBy ? ` (shadowed by ${entry.shadowedBy})` : '';
|
|
205
206
|
process.stdout.write(
|
|
206
|
-
`${entry.id}\t${entry.flow}\t${entry.
|
|
207
|
+
`${entry.id}\t${entry.flow}\t${entry.platforms.join(',')}\t${entry.sourceId}${shadow}\n`,
|
|
207
208
|
);
|
|
208
209
|
}
|
|
209
210
|
}
|
|
@@ -212,7 +213,6 @@ async function cmdMaterialize(args, runtime) {
|
|
|
212
213
|
const opts = parseCatalogArgs(args, { materialize: true });
|
|
213
214
|
if (!opts.output) throw new Error('materialize requires <output>');
|
|
214
215
|
if (!opts.flow) throw new Error('materialize requires --flow');
|
|
215
|
-
if (!opts.runMode) throw new Error('materialize requires --run-mode');
|
|
216
216
|
if (!opts.platform) throw new Error('materialize requires --platform');
|
|
217
217
|
const output = resolve(opts.output);
|
|
218
218
|
if (existsSync(output)) {
|
|
@@ -227,7 +227,7 @@ async function cmdMaterialize(args, runtime) {
|
|
|
227
227
|
sources: buildSources(opts, runtime),
|
|
228
228
|
flow: opts.flow,
|
|
229
229
|
platform: opts.platform,
|
|
230
|
-
runMode: opts.runMode,
|
|
230
|
+
...(opts.runMode ? { runMode: opts.runMode } : {}),
|
|
231
231
|
...(opts.domain ? { domain: opts.domain } : {}),
|
|
232
232
|
...(opts.id ? { explicitId: opts.id } : {}),
|
|
233
233
|
});
|
|
@@ -282,7 +282,6 @@ async function cmdNew(args, runtime) {
|
|
|
282
282
|
let pathArg = null;
|
|
283
283
|
const opts = {
|
|
284
284
|
flow: undefined,
|
|
285
|
-
runMode: undefined,
|
|
286
285
|
platforms: undefined,
|
|
287
286
|
title: undefined,
|
|
288
287
|
force: false,
|
|
@@ -291,7 +290,6 @@ async function cmdNew(args, runtime) {
|
|
|
291
290
|
for (let i = 0; i < args.length; i += 1) {
|
|
292
291
|
const arg = args[i];
|
|
293
292
|
if (arg === '--flow') opts.flow = takeValue(args, i++, arg);
|
|
294
|
-
else if (arg === '--run-mode') opts.runMode = parseRunMode(takeValue(args, i++, arg));
|
|
295
293
|
else if (arg === '--platform') {
|
|
296
294
|
opts.platforms = takeValue(args, i++, arg)
|
|
297
295
|
.split(',')
|
|
@@ -308,7 +306,6 @@ async function cmdNew(args, runtime) {
|
|
|
308
306
|
const created = runtime.createExecutionTemplate({
|
|
309
307
|
path: pathArg,
|
|
310
308
|
flow: opts.flow,
|
|
311
|
-
runMode: opts.runMode,
|
|
312
309
|
platforms: opts.platforms,
|
|
313
310
|
title: opts.title,
|
|
314
311
|
force: opts.force,
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const { accessSync, constants } = require('node:fs');
|
|
2
|
+
const { mkdir, realpath } = require('node:fs/promises');
|
|
3
|
+
const { join } = require('node:path');
|
|
4
|
+
|
|
5
|
+
function available() {
|
|
6
|
+
if (process.platform !== 'darwin') return false;
|
|
7
|
+
try {
|
|
8
|
+
accessSync('/usr/bin/sandbox-exec', constants.X_OK);
|
|
9
|
+
return true;
|
|
10
|
+
} catch (error) {
|
|
11
|
+
if (['ENOENT', 'EACCES'].includes(error.code)) return false;
|
|
12
|
+
throw error;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
async function sandbox(policy, runtimeRoots) {
|
|
16
|
+
if (!available())
|
|
17
|
+
throw new Error('This runner needs the macOS review sandbox on its execution node');
|
|
18
|
+
const temporaryDirectory = join(policy.writableRoots[0], '.review-runtime', 'tmp');
|
|
19
|
+
await mkdir(temporaryDirectory, { recursive: true, mode: 0o700 });
|
|
20
|
+
const writable = await Promise.all(policy.writableRoots.map((root) => realpath(root)));
|
|
21
|
+
const readOnly = await Promise.all(policy.readOnlyRoots.map((root) => realpath(root)));
|
|
22
|
+
for (const root of runtimeRoots) {
|
|
23
|
+
await mkdir(root, { recursive: true, mode: 0o700 });
|
|
24
|
+
writable.push(await realpath(root));
|
|
25
|
+
}
|
|
26
|
+
const profile = [
|
|
27
|
+
'(version 1)',
|
|
28
|
+
'(allow default)',
|
|
29
|
+
'(deny file-write*)',
|
|
30
|
+
...writable.map((root) => `(allow file-write* (subpath ${JSON.stringify(root)}))`),
|
|
31
|
+
'(allow file-write* (literal "/dev/null") (literal "/dev/tty"))',
|
|
32
|
+
...readOnly.map((root) => `(deny file-write* (subpath ${JSON.stringify(root)}))`),
|
|
33
|
+
].join('\n');
|
|
34
|
+
return {
|
|
35
|
+
sandbox: { executable: '/usr/bin/sandbox-exec', args: ['-p', profile] },
|
|
36
|
+
temporaryDirectory,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
module.exports = { available, sandbox };
|