@farmslot/agent-runtime 0.13.0 → 0.15.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 +11 -0
- package/dist/native/registry.d.ts.map +1 -1
- package/dist/native/registry.js +6 -1
- package/dist/native/registry.js.map +1 -1
- package/package.json +2 -2
- package/scripts/acceptance-ledger.cjs +2 -1
- package/scripts/mark-checklist-step.cjs +15 -1
- package/scripts/review-terminal.cjs +6 -1
- package/scripts/subtask-unit.cjs +2 -1
- package/scripts/worker-terminal-contract.cjs +19 -8
- package/dist/execution-template/execution-template.test.d.ts +0 -2
- package/dist/execution-template/execution-template.test.d.ts.map +0 -1
- package/dist/execution-template/execution-template.test.js +0 -795
- package/dist/execution-template/execution-template.test.js.map +0 -1
- package/dist/execution-template/subtask-render-parity.test.d.ts +0 -2
- package/dist/execution-template/subtask-render-parity.test.d.ts.map +0 -1
- package/dist/execution-template/subtask-render-parity.test.js +0 -63
- package/dist/execution-template/subtask-render-parity.test.js.map +0 -1
- package/dist/native/account-observation.test.d.ts +0 -2
- package/dist/native/account-observation.test.d.ts.map +0 -1
- package/dist/native/account-observation.test.js +0 -256
- package/dist/native/account-observation.test.js.map +0 -1
- package/dist/native/account-profiles.test.d.ts +0 -2
- package/dist/native/account-profiles.test.d.ts.map +0 -1
- package/dist/native/account-profiles.test.js +0 -172
- package/dist/native/account-profiles.test.js.map +0 -1
- package/dist/native/acp.test.d.ts +0 -2
- package/dist/native/acp.test.d.ts.map +0 -1
- package/dist/native/acp.test.js +0 -257
- package/dist/native/acp.test.js.map +0 -1
- package/dist/native/affinity.test.d.ts +0 -2
- package/dist/native/affinity.test.d.ts.map +0 -1
- package/dist/native/affinity.test.js +0 -30
- package/dist/native/affinity.test.js.map +0 -1
- package/dist/native/cursor-model.test.d.ts +0 -2
- package/dist/native/cursor-model.test.d.ts.map +0 -1
- package/dist/native/cursor-model.test.js +0 -40
- package/dist/native/cursor-model.test.js.map +0 -1
- package/dist/native/durability.test.d.ts +0 -2
- package/dist/native/durability.test.d.ts.map +0 -1
- package/dist/native/durability.test.js +0 -976
- package/dist/native/durability.test.js.map +0 -1
- package/dist/native/filesystem-policy.test.d.ts +0 -2
- package/dist/native/filesystem-policy.test.d.ts.map +0 -1
- package/dist/native/filesystem-policy.test.js +0 -136
- package/dist/native/filesystem-policy.test.js.map +0 -1
- package/dist/native/process-tree.test.d.ts +0 -2
- package/dist/native/process-tree.test.d.ts.map +0 -1
- package/dist/native/process-tree.test.js +0 -174
- package/dist/native/process-tree.test.js.map +0 -1
- package/dist/native/process.test.d.ts +0 -2
- package/dist/native/process.test.d.ts.map +0 -1
- package/dist/native/process.test.js +0 -56
- package/dist/native/process.test.js.map +0 -1
- package/dist/native/registry.test.d.ts +0 -2
- package/dist/native/registry.test.d.ts.map +0 -1
- package/dist/native/registry.test.js +0 -13
- package/dist/native/registry.test.js.map +0 -1
- package/dist/native/review-sandbox.test.d.ts +0 -2
- package/dist/native/review-sandbox.test.d.ts.map +0 -1
- package/dist/native/review-sandbox.test.js +0 -40
- package/dist/native/review-sandbox.test.js.map +0 -1
- package/dist/native/worker-history.test.d.ts +0 -2
- package/dist/native/worker-history.test.d.ts.map +0 -1
- package/dist/native/worker-history.test.js +0 -195
- package/dist/native/worker-history.test.js.map +0 -1
- package/dist/native/worker-launch.test.d.ts +0 -2
- package/dist/native/worker-launch.test.d.ts.map +0 -1
- package/dist/native/worker-launch.test.js +0 -61
- package/dist/native/worker-launch.test.js.map +0 -1
- package/dist/native/worker-relocation.test.d.ts +0 -2
- package/dist/native/worker-relocation.test.d.ts.map +0 -1
- package/dist/native/worker-relocation.test.js +0 -110
- package/dist/native/worker-relocation.test.js.map +0 -1
- package/dist/task-init/discover.test.d.ts +0 -2
- package/dist/task-init/discover.test.d.ts.map +0 -1
- package/dist/task-init/discover.test.js +0 -58
- package/dist/task-init/discover.test.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
- Active-development baseline; add user-facing changes here before release or package publication.
|
|
6
6
|
|
|
7
|
+
## 0.15.0 - 2026-09-28
|
|
8
|
+
|
|
9
|
+
- QA tasks complete with one HTML report and structured evidence, without requiring a duplicate Markdown report.
|
|
10
|
+
|
|
11
|
+
## 0.14.0 - 2026-09-27
|
|
12
|
+
|
|
13
|
+
- Resolve acceptance requirements per worker flow, so fix-bug tasks can require verdicts without blocking review runs.
|
|
14
|
+
- Bind terminal-review task marks to the launch attempt so repeated bootstrap by delegated workers preserves parent identity and checklist progress.
|
|
15
|
+
- Static Claude reviews initialize workspace trust with the launch environment and keep tool-runner scratch files writable inside the review sandbox.
|
|
16
|
+
- The published `dist/` no longer carries compiled test modules. The build config excludes `src/**/*.test.ts`, matching the other workspace packages; 0.13.0 shipped 17 of them (`.js`, `.d.ts` and both maps each) including the native durability and review-sandbox suites.
|
|
17
|
+
|
|
7
18
|
## 0.13.0 - 2026-09-20
|
|
8
19
|
|
|
9
20
|
- `mark N` on a step whose box and timing event are already recorded is a true no-op: it prints `already marked N` and leaves SIGNAL.json untouched instead of rewriting it with a new timestamp. A resume from `blocked`, a box checked by hand, `start` and every terminal mark still write.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/native/registry.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAM9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;IAClE,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE;QACP,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjF,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QACzB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;QAC7B,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;KAChF,CAAC;CACH;AAED,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/native/registry.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAM9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;IAClE,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE;QACP,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjF,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QACzB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;QAC7B,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;KAChF,CAAC;CACH;AAED,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAgF1E,CAAC"}
|
package/dist/native/registry.js
CHANGED
|
@@ -26,7 +26,12 @@ export const nativeRunnerDefinitions = {
|
|
|
26
26
|
},
|
|
27
27
|
claude: {
|
|
28
28
|
supportsReadOnlyWorkspace: hostReviewSandboxAvailable(),
|
|
29
|
-
reviewRuntimeRoots: (env) => [
|
|
29
|
+
reviewRuntimeRoots: (env) => [
|
|
30
|
+
env.CLAUDE_CONFIG_DIR ?? join(env.HOME ?? homedir(), '.claude'),
|
|
31
|
+
// Claude Code creates its tool-runner scratch directory outside
|
|
32
|
+
// CLAUDE_CONFIG_DIR. Keep that state writable inside the review sandbox.
|
|
33
|
+
...(typeof process.getuid === 'function' ? [join('/tmp', `claude-${process.getuid()}`)] : []),
|
|
34
|
+
],
|
|
30
35
|
adapter: claudeNativeAdapter,
|
|
31
36
|
binary: 'claude',
|
|
32
37
|
supportsWorkers: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/native/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAmBjE,sFAAsF;AACtF,MAAM,CAAC,MAAM,uBAAuB,GAA2C;IAC7E,KAAK,EAAE;QACL,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,OAAO;QACf,eAAe,EAAE,IAAI;QACrB,yBAAyB,EAAE,IAAI;QAC/B,aAAa,EAAE,KAAK;QACpB,OAAO,EAAE;YACP,WAAW,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YACvD,KAAK,EAAE,CAAC,gBAAgB,EAAE,eAAe,CAAC;YAC1C,SAAS,EAAE,CAAC,OAAO,CAAC;YACpB,OAAO,EAAE,mBAAmB;SAC7B;KACF;IACD,MAAM,EAAE;QACN,yBAAyB,EAAE,0BAA0B,EAAE;QACvD,kBAAkB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/native/registry.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.15.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"prepublishOnly": "node ../../scripts/quality/check-farmslot-package-readiness.mjs --publish --packages @farmslot/agent-runtime"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@farmslot/protocol": "0.
|
|
48
|
+
"@farmslot/protocol": "0.32.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@types/node": "^22.0.0",
|
|
@@ -3,7 +3,8 @@ const path = require('node:path');
|
|
|
3
3
|
|
|
4
4
|
const { atomicWrite, readJson } = require('./mark-io.cjs');
|
|
5
5
|
|
|
6
|
-
// Acceptance-criteria ledger (ADR-060
|
|
6
|
+
// Acceptance-criteria ledger (ADR-060; contract in docs/reference/agent-runtime.md
|
|
7
|
+
// and docs/reference/task-directory-contract.md).
|
|
7
8
|
//
|
|
8
9
|
// `farmslot-agent ac` is the only writer of artifacts/acceptance-status.json, the
|
|
9
10
|
// way `mark` is the only writer of SIGNAL.json. The ids come from task init, which
|
|
@@ -35,6 +35,7 @@ const LEARNINGS_ARTIFACT = path.join('artifacts', 'learnings.md');
|
|
|
35
35
|
const ARTIFACT_CONTRACT_SCRIPT = path.resolve(__dirname, 'check-task-artifact-contract.mjs');
|
|
36
36
|
|
|
37
37
|
const FLOW_REPORT_ARTIFACTS = {
|
|
38
|
+
qa: ['report.html', 'qa-report.md', 'report.md'],
|
|
38
39
|
'fix-bug': ['pr-description.md', 'report.md'],
|
|
39
40
|
'review-pr': ['review.md', 'report.md'],
|
|
40
41
|
dev: ['pr-description.md', 'report.md'],
|
|
@@ -393,7 +394,9 @@ function assertTerminalPackagedEvidence(taskPath, taskDir, terminalCommand) {
|
|
|
393
394
|
function buildSignalUpdate(signal, terminal, target, timing, events, now, taskPath, _taskDir) {
|
|
394
395
|
const base = {
|
|
395
396
|
...pickSignalPassthrough(signal),
|
|
396
|
-
...(isStartCommand
|
|
397
|
+
...(isStartCommand
|
|
398
|
+
? { attemptId: process.env.FARMSLOT_SIGNAL_ATTEMPT_ID || randomUUID() }
|
|
399
|
+
: {}),
|
|
397
400
|
step: target?.label ?? signal.step ?? 'complete',
|
|
398
401
|
checklistTiming: {
|
|
399
402
|
schemaVersion: 1,
|
|
@@ -507,6 +510,17 @@ const target = isStartCommand
|
|
|
507
510
|
|
|
508
511
|
const now = new Date().toISOString();
|
|
509
512
|
const signal = readJson(signalPath);
|
|
513
|
+
// The launcher owns the attempt. Descendants may repeat bootstrap, but must not
|
|
514
|
+
// replace the parent's identity or reset progress within that same attempt.
|
|
515
|
+
if (
|
|
516
|
+
isStartCommand &&
|
|
517
|
+
process.env.FARMSLOT_SIGNAL_ATTEMPT_ID &&
|
|
518
|
+
signal.attemptId === process.env.FARMSLOT_SIGNAL_ATTEMPT_ID &&
|
|
519
|
+
signal.status === 'running'
|
|
520
|
+
) {
|
|
521
|
+
console.log('signal already started');
|
|
522
|
+
process.exit(0);
|
|
523
|
+
}
|
|
510
524
|
const timing =
|
|
511
525
|
signal.checklistTiming && typeof signal.checklistTiming === 'object'
|
|
512
526
|
? signal.checklistTiming
|
|
@@ -75,7 +75,6 @@ async function main() {
|
|
|
75
75
|
const guard = await sandbox(policy, runtimeRoots);
|
|
76
76
|
const promptFile = path.join(task, '.terminal-prompt.txt');
|
|
77
77
|
fs.writeFileSync(promptFile, input.prompt, { mode: 0o600 });
|
|
78
|
-
if (input.setup) check(cp.spawnSync('/bin/sh', ['-c', input.setup], { cwd, encoding: 'utf8' }));
|
|
79
78
|
const environment = {
|
|
80
79
|
...process.env,
|
|
81
80
|
...input.environment.set,
|
|
@@ -91,12 +90,18 @@ async function main() {
|
|
|
91
90
|
'FARMSLOT_GATEWAY_PASSWORD',
|
|
92
91
|
])
|
|
93
92
|
delete environment[key];
|
|
93
|
+
environment.FARMSLOT_SIGNAL_ATTEMPT_ID = require('node:crypto').randomUUID();
|
|
94
|
+
if (input.setup)
|
|
95
|
+
check(
|
|
96
|
+
cp.spawnSync('/bin/sh', ['-c', input.setup], { cwd, env: environment, encoding: 'utf8' }),
|
|
97
|
+
);
|
|
94
98
|
const commandFile = path.join(task, '.terminal-start.cjs');
|
|
95
99
|
const record = {
|
|
96
100
|
runId: input.runId,
|
|
97
101
|
workspaceId: input.workspaceId,
|
|
98
102
|
session: input.session,
|
|
99
103
|
startedAt: new Date().toISOString(),
|
|
104
|
+
signalAttemptId: environment.FARMSLOT_SIGNAL_ATTEMPT_ID,
|
|
100
105
|
};
|
|
101
106
|
const launch = `const cp=require('node:child_process');const env={...process.env};for(const key of ['FARMSLOT_NODE_TOKEN','FARMSLOT_GATEWAY_TOKEN','FARMSLOT_GATEWAY_PASSWORD','CLAUDECODE'])delete env[key];const r=cp.spawnSync(${JSON.stringify(guard.sandbox.executable)},${JSON.stringify([...guard.sandbox.args, '/bin/sh', '-c', input.command])},{cwd:${JSON.stringify(cwd)},env,stdio:'inherit'});process.exit(r.status??1);`;
|
|
102
107
|
fs.writeFileSync(commandFile, launch, { mode: 0o600 });
|
package/scripts/subtask-unit.cjs
CHANGED
|
@@ -24,7 +24,8 @@ const {
|
|
|
24
24
|
writeSignal,
|
|
25
25
|
} = require('./mark-io.cjs');
|
|
26
26
|
|
|
27
|
-
// Child checklist units (ADR-060
|
|
27
|
+
// Child checklist units (ADR-060; contract in docs/reference/agent-runtime.md
|
|
28
|
+
// and docs/reference/task-directory-contract.md).
|
|
28
29
|
//
|
|
29
30
|
// `mark` is the only writer of `subtasks/`: it materializes a child checklist
|
|
30
31
|
// from a source, registers it in `subtasks/index.json`, and maintains the child
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
* @property {Partial<Record<WorkerTerminalCommand, WorkerTerminalCommandSpec>>} [complete]
|
|
32
32
|
* @property {Partial<Record<WorkerTerminalCommand, WorkerTerminalCommandSpec>>} [no-change]
|
|
33
33
|
* @property {Partial<Record<WorkerTerminalCommand, WorkerTerminalCommandSpec>>} [blocked]
|
|
34
|
-
* @property {Record<string, Partial<Record<WorkerTerminalCommand, WorkerTerminalCommandSpec
|
|
34
|
+
* @property {Record<string, Partial<Record<WorkerTerminalCommand, WorkerTerminalCommandSpec>> & {acceptance?: WorkerTerminalAcceptanceRules}>} [flows]
|
|
35
35
|
* @property {WorkerTerminalWhenPresentRule[]} [whenPresent]
|
|
36
36
|
*/
|
|
37
37
|
|
|
@@ -141,6 +141,14 @@ const BUILTIN_FLOW_COMMANDS = {
|
|
|
141
141
|
},
|
|
142
142
|
blocked: { artifacts: [] },
|
|
143
143
|
},
|
|
144
|
+
qa: {
|
|
145
|
+
complete: { report: 'artifacts/report.html', artifacts: [LEARNINGS, 'artifacts/report.html'] },
|
|
146
|
+
'no-change': {
|
|
147
|
+
report: 'artifacts/report.html',
|
|
148
|
+
artifacts: [LEARNINGS, 'artifacts/report.html'],
|
|
149
|
+
},
|
|
150
|
+
blocked: { artifacts: [] },
|
|
151
|
+
},
|
|
144
152
|
'validate-dep': {
|
|
145
153
|
complete: { report: 'artifacts/report.md', artifacts: [LEARNINGS, 'artifacts/report.md'] },
|
|
146
154
|
'no-change': {
|
|
@@ -236,13 +244,16 @@ function resolveWorkerTerminalContract(projectConfig, flowType, options = {}) {
|
|
|
236
244
|
}))
|
|
237
245
|
: DEFAULT_WHEN_PRESENT.map((rule) => ({ ...rule, alsoRequire: [...rule.alsoRequire] }));
|
|
238
246
|
|
|
239
|
-
const
|
|
240
|
-
projectConfig?.acceptance
|
|
241
|
-
? {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
247
|
+
const acceptanceRules =
|
|
248
|
+
projectConfig?.acceptance || flowLayer?.acceptance
|
|
249
|
+
? { ...projectConfig?.acceptance, ...flowLayer?.acceptance }
|
|
250
|
+
: undefined;
|
|
251
|
+
const acceptance = acceptanceRules
|
|
252
|
+
? {
|
|
253
|
+
...(acceptanceRules.require ? { require: true } : {}),
|
|
254
|
+
...(acceptanceRules.allowWeak ? { allowWeak: true } : {}),
|
|
255
|
+
}
|
|
256
|
+
: null;
|
|
246
257
|
|
|
247
258
|
return {
|
|
248
259
|
schemaVersion: 1,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution-template.test.d.ts","sourceRoot":"","sources":["../../src/execution-template/execution-template.test.ts"],"names":[],"mappings":""}
|