@farmslot/agent-runtime 0.12.0 → 0.14.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 (91) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/bin/farmslot-agent.mjs +7 -0
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/native/registry.d.ts.map +1 -1
  8. package/dist/native/registry.js +6 -1
  9. package/dist/native/registry.js.map +1 -1
  10. package/dist/task-init/index.d.ts.map +1 -1
  11. package/dist/task-init/index.js +1 -0
  12. package/dist/task-init/index.js.map +1 -1
  13. package/dist/task-init/task-document.d.ts +16 -2
  14. package/dist/task-init/task-document.d.ts.map +1 -1
  15. package/dist/task-init/task-document.js +21 -8
  16. package/dist/task-init/task-document.js.map +1 -1
  17. package/package.json +7 -3
  18. package/scripts/acceptance-cli.cjs +139 -0
  19. package/scripts/acceptance-ledger.cjs +413 -0
  20. package/scripts/check-task-artifact-contract.mjs +25 -1
  21. package/scripts/checklist-target.cjs +56 -0
  22. package/scripts/mark-checklist-step.cjs +111 -61
  23. package/scripts/mark-io.cjs +118 -0
  24. package/scripts/review-terminal.cjs +6 -1
  25. package/scripts/subtask-unit.cjs +725 -0
  26. package/scripts/task-init-cli.mjs +4 -0
  27. package/scripts/worker-terminal-contract.cjs +25 -1
  28. package/dist/execution-template/execution-template.test.d.ts +0 -2
  29. package/dist/execution-template/execution-template.test.d.ts.map +0 -1
  30. package/dist/execution-template/execution-template.test.js +0 -795
  31. package/dist/execution-template/execution-template.test.js.map +0 -1
  32. package/dist/native/account-observation.test.d.ts +0 -2
  33. package/dist/native/account-observation.test.d.ts.map +0 -1
  34. package/dist/native/account-observation.test.js +0 -256
  35. package/dist/native/account-observation.test.js.map +0 -1
  36. package/dist/native/account-profiles.test.d.ts +0 -2
  37. package/dist/native/account-profiles.test.d.ts.map +0 -1
  38. package/dist/native/account-profiles.test.js +0 -172
  39. package/dist/native/account-profiles.test.js.map +0 -1
  40. package/dist/native/acp.test.d.ts +0 -2
  41. package/dist/native/acp.test.d.ts.map +0 -1
  42. package/dist/native/acp.test.js +0 -257
  43. package/dist/native/acp.test.js.map +0 -1
  44. package/dist/native/affinity.test.d.ts +0 -2
  45. package/dist/native/affinity.test.d.ts.map +0 -1
  46. package/dist/native/affinity.test.js +0 -30
  47. package/dist/native/affinity.test.js.map +0 -1
  48. package/dist/native/cursor-model.test.d.ts +0 -2
  49. package/dist/native/cursor-model.test.d.ts.map +0 -1
  50. package/dist/native/cursor-model.test.js +0 -40
  51. package/dist/native/cursor-model.test.js.map +0 -1
  52. package/dist/native/durability.test.d.ts +0 -2
  53. package/dist/native/durability.test.d.ts.map +0 -1
  54. package/dist/native/durability.test.js +0 -976
  55. package/dist/native/durability.test.js.map +0 -1
  56. package/dist/native/filesystem-policy.test.d.ts +0 -2
  57. package/dist/native/filesystem-policy.test.d.ts.map +0 -1
  58. package/dist/native/filesystem-policy.test.js +0 -136
  59. package/dist/native/filesystem-policy.test.js.map +0 -1
  60. package/dist/native/process-tree.test.d.ts +0 -2
  61. package/dist/native/process-tree.test.d.ts.map +0 -1
  62. package/dist/native/process-tree.test.js +0 -174
  63. package/dist/native/process-tree.test.js.map +0 -1
  64. package/dist/native/process.test.d.ts +0 -2
  65. package/dist/native/process.test.d.ts.map +0 -1
  66. package/dist/native/process.test.js +0 -56
  67. package/dist/native/process.test.js.map +0 -1
  68. package/dist/native/registry.test.d.ts +0 -2
  69. package/dist/native/registry.test.d.ts.map +0 -1
  70. package/dist/native/registry.test.js +0 -13
  71. package/dist/native/registry.test.js.map +0 -1
  72. package/dist/native/review-sandbox.test.d.ts +0 -2
  73. package/dist/native/review-sandbox.test.d.ts.map +0 -1
  74. package/dist/native/review-sandbox.test.js +0 -40
  75. package/dist/native/review-sandbox.test.js.map +0 -1
  76. package/dist/native/worker-history.test.d.ts +0 -2
  77. package/dist/native/worker-history.test.d.ts.map +0 -1
  78. package/dist/native/worker-history.test.js +0 -195
  79. package/dist/native/worker-history.test.js.map +0 -1
  80. package/dist/native/worker-launch.test.d.ts +0 -2
  81. package/dist/native/worker-launch.test.d.ts.map +0 -1
  82. package/dist/native/worker-launch.test.js +0 -61
  83. package/dist/native/worker-launch.test.js.map +0 -1
  84. package/dist/native/worker-relocation.test.d.ts +0 -2
  85. package/dist/native/worker-relocation.test.d.ts.map +0 -1
  86. package/dist/native/worker-relocation.test.js +0 -110
  87. package/dist/native/worker-relocation.test.js.map +0 -1
  88. package/dist/task-init/discover.test.d.ts +0 -2
  89. package/dist/task-init/discover.test.d.ts.map +0 -1
  90. package/dist/task-init/discover.test.js +0 -58
  91. package/dist/task-init/discover.test.js.map +0 -1
@@ -18,6 +18,7 @@ function usage(exitCode = 0) {
18
18
  ' --package-templates <path> [--package-id id] [--project-name name] [--domain d]',
19
19
  ' Run: [--run-mode m] — run mode used to match project default rules',
20
20
  ' Task: --title t [--task-text s | --task-file path] [--ticket key] [--source-ref url]',
21
+ ' [--acceptance "criterion"]... — one per criterion; position N becomes ledger id AC-N',
21
22
  ' Identity: [--surface s] [--project name] [--repo owner/name] [--attempt-id id]',
22
23
  ' Rendering: [--var KEY=VALUE]... [--task-dir-label label] [--mode-preamble text]',
23
24
  ' [--addendum-file path] [--mark-command "cmd"] [--json]',
@@ -43,6 +44,7 @@ function parseArgs(args) {
43
44
  taskFile: null,
44
45
  ticket: null,
45
46
  sourceRef: null,
47
+ acceptance: [],
46
48
  surface: 'cli',
47
49
  project: null,
48
50
  repo: null,
@@ -65,6 +67,7 @@ function parseArgs(args) {
65
67
  else if (arg === '--task-file') opts.taskFile = takeValue(args, i++, arg);
66
68
  else if (arg === '--ticket') opts.ticket = takeValue(args, i++, arg);
67
69
  else if (arg === '--source-ref') opts.sourceRef = takeValue(args, i++, arg);
70
+ else if (arg === '--acceptance') opts.acceptance.push(takeValue(args, i++, arg));
68
71
  else if (arg === '--surface') opts.surface = takeValue(args, i++, arg);
69
72
  else if (arg === '--project') opts.project = takeValue(args, i++, arg);
70
73
  else if (arg === '--repo') opts.repo = takeValue(args, i++, arg);
@@ -136,6 +139,7 @@ async function main() {
136
139
  title: opts.title,
137
140
  description,
138
141
  sourceKind: opts.taskFile ? 'file' : 'text',
142
+ ...(opts.acceptance.length > 0 ? { acceptanceCriteria: opts.acceptance } : {}),
139
143
  ...(opts.ticket ? { ticket: opts.ticket } : {}),
140
144
  ...(opts.sourceRef ? { sourceRef: opts.sourceRef } : {}),
141
145
  },
@@ -14,13 +14,24 @@
14
14
  * @property {boolean} [requireRecipeCoverage]
15
15
  */
16
16
 
17
+ /**
18
+ * Acceptance-ledger rules for a terminal mark (ADR-060). `require` is the opt-in
19
+ * that makes a missing or incomplete ledger block `complete`; it defaults to
20
+ * false so a project whose templates do not write one yet is unaffected.
21
+ * `allowWeak` lets a flow finish with `weak` or `missing` verdicts.
22
+ * @typedef {object} WorkerTerminalAcceptanceRules
23
+ * @property {boolean} [require]
24
+ * @property {boolean} [allowWeak]
25
+ */
26
+
17
27
  /**
18
28
  * @typedef {object} WorkerTerminalProjectConfig
19
29
  * @property {boolean} [requireSignal]
30
+ * @property {WorkerTerminalAcceptanceRules} [acceptance]
20
31
  * @property {Partial<Record<WorkerTerminalCommand, WorkerTerminalCommandSpec>>} [complete]
21
32
  * @property {Partial<Record<WorkerTerminalCommand, WorkerTerminalCommandSpec>>} [no-change]
22
33
  * @property {Partial<Record<WorkerTerminalCommand, WorkerTerminalCommandSpec>>} [blocked]
23
- * @property {Record<string, Partial<Record<WorkerTerminalCommand, WorkerTerminalCommandSpec>>>} [flows]
34
+ * @property {Record<string, Partial<Record<WorkerTerminalCommand, WorkerTerminalCommandSpec>> & {acceptance?: WorkerTerminalAcceptanceRules}>} [flows]
24
35
  * @property {WorkerTerminalWhenPresentRule[]} [whenPresent]
25
36
  */
26
37
 
@@ -30,6 +41,7 @@
30
41
  * @property {string} flowType
31
42
  * @property {string} [mode]
32
43
  * @property {boolean} requireSignal
44
+ * @property {WorkerTerminalAcceptanceRules} [acceptance]
33
45
  * @property {Record<WorkerTerminalCommand, WorkerTerminalCommandSpec>} commands
34
46
  * @property {WorkerTerminalWhenPresentRule[]} whenPresent
35
47
  * @property {string} resolvedAt
@@ -224,11 +236,23 @@ function resolveWorkerTerminalContract(projectConfig, flowType, options = {}) {
224
236
  }))
225
237
  : DEFAULT_WHEN_PRESENT.map((rule) => ({ ...rule, alsoRequire: [...rule.alsoRequire] }));
226
238
 
239
+ const acceptanceRules =
240
+ projectConfig?.acceptance || flowLayer?.acceptance
241
+ ? { ...projectConfig?.acceptance, ...flowLayer?.acceptance }
242
+ : undefined;
243
+ const acceptance = acceptanceRules
244
+ ? {
245
+ ...(acceptanceRules.require ? { require: true } : {}),
246
+ ...(acceptanceRules.allowWeak ? { allowWeak: true } : {}),
247
+ }
248
+ : null;
249
+
227
250
  return {
228
251
  schemaVersion: 1,
229
252
  flowType: flowKey,
230
253
  ...(mode ? { mode } : {}),
231
254
  requireSignal,
255
+ ...(acceptance && Object.keys(acceptance).length > 0 ? { acceptance } : {}),
232
256
  commands,
233
257
  whenPresent,
234
258
  resolvedAt: now,
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=execution-template.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"execution-template.test.d.ts","sourceRoot":"","sources":["../../src/execution-template/execution-template.test.ts"],"names":[],"mappings":""}