@farmslot/protocol 0.82.3 → 0.83.1

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 (50) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/contracts/acceptance.d.ts +2 -0
  3. package/dist/contracts/acceptance.d.ts.map +1 -1
  4. package/dist/contracts/acceptance.js +2 -0
  5. package/dist/contracts/acceptance.js.map +1 -1
  6. package/dist/contracts/agents.d.ts +2 -0
  7. package/dist/contracts/agents.d.ts.map +1 -1
  8. package/dist/contracts/agents.js.map +1 -1
  9. package/dist/contracts/config.d.ts +8 -0
  10. package/dist/contracts/config.d.ts.map +1 -1
  11. package/dist/contracts/config.js +9 -0
  12. package/dist/contracts/config.js.map +1 -1
  13. package/dist/contracts/runs.d.ts +13 -0
  14. package/dist/contracts/runs.d.ts.map +1 -1
  15. package/dist/contracts/runs.js +11 -0
  16. package/dist/contracts/runs.js.map +1 -1
  17. package/dist/contracts/task.d.ts +2 -1
  18. package/dist/contracts/task.d.ts.map +1 -1
  19. package/dist/contracts/task.js +2 -2
  20. package/dist/contracts/task.js.map +1 -1
  21. package/dist/node/farm-layout.d.ts.map +1 -1
  22. package/dist/node/farm-layout.js +2 -3
  23. package/dist/node/farm-layout.js.map +1 -1
  24. package/dist/node/farm-paths-storage.d.ts +6 -0
  25. package/dist/node/farm-paths-storage.d.ts.map +1 -0
  26. package/dist/node/farm-paths-storage.js +54 -0
  27. package/dist/node/farm-paths-storage.js.map +1 -0
  28. package/dist/node/farm-paths.d.ts +149 -0
  29. package/dist/node/farm-paths.d.ts.map +1 -0
  30. package/dist/node/farm-paths.js +422 -0
  31. package/dist/node/farm-paths.js.map +1 -0
  32. package/dist/node/farmslot-home.d.ts +1 -7
  33. package/dist/node/farmslot-home.d.ts.map +1 -1
  34. package/dist/node/farmslot-home.js +6 -16
  35. package/dist/node/farmslot-home.js.map +1 -1
  36. package/dist/node/slot-by-repo.d.ts.map +1 -1
  37. package/dist/node/slot-by-repo.js +11 -3
  38. package/dist/node/slot-by-repo.js.map +1 -1
  39. package/dist/node/tree-fingerprint.d.ts +9 -0
  40. package/dist/node/tree-fingerprint.d.ts.map +1 -0
  41. package/dist/node/tree-fingerprint.js +30 -0
  42. package/dist/node/tree-fingerprint.js.map +1 -0
  43. package/dist/rpc/nodes.d.ts +2 -0
  44. package/dist/rpc/nodes.d.ts.map +1 -1
  45. package/dist/rpc/nodes.js.map +1 -1
  46. package/dist/version.d.ts +1 -1
  47. package/dist/version.js +1 -1
  48. package/package.json +11 -1
  49. package/scripts/acceptance.d.mts +5 -0
  50. package/scripts/acceptance.mjs +34 -0
@@ -1,6 +1,8 @@
1
+ import type { NodeFarmPaths } from '../node/farm-paths.js';
1
2
  import type { PeerVersionDeclaration } from '../peer-versions.js';
2
3
  import type { NodeLinkCapabilities } from '../transport/node-link.js';
3
4
  export interface NodeInfo extends PeerVersionDeclaration {
5
+ farmPaths?: NodeFarmPaths;
4
6
  machine: string;
5
7
  pid: number;
6
8
  nodeLink?: NodeLinkCapabilities;
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/rpc/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,MAAM,WAAW,QAAS,SAAQ,sBAAsB;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2FAA2F;IAC3F,WAAW,CAAC,EAAE,CAAC,CAAC;IAChB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,sBAAsB,CAAC;CAC/C;AAED,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAE3C,UAAU,oBAAoB;IAC5B,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,WAAW,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CACnC;AAED,MAAM,MAAM,cAAc,GACtB,CAAC,oBAAoB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GACtD,CAAC,oBAAoB,GAAG;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAE7D,wFAAwF;AACxF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,OAAO,EAAE,MAAM,IAAI,GAClB,MAAM,IAAI,CAOZ;AAED,6FAA6F;AAC7F,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,EACtD,SAAS,SAAwB,EACjC,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB;IAAE,SAAS,IAAI,IAAI,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE,CAkBxC"}
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/rpc/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,MAAM,WAAW,QAAS,SAAQ,sBAAsB;IACtD,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2FAA2F;IAC3F,WAAW,CAAC,EAAE,CAAC,CAAC;IAChB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,sBAAsB,CAAC;CAC/C;AAED,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAE3C,UAAU,oBAAoB;IAC5B,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,WAAW,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CACnC;AAED,MAAM,MAAM,cAAc,GACtB,CAAC,oBAAoB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GACtD,CAAC,oBAAoB,GAAG;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAE7D,wFAAwF;AACxF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,OAAO,EAAE,MAAM,IAAI,GAClB,MAAM,IAAI,CAOZ;AAED,6FAA6F;AAC7F,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,EACtD,SAAS,SAAwB,EACjC,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB;IAAE,SAAS,IAAI,IAAI,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE,CAkBxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/rpc/nodes.ts"],"names":[],"mappings":"AA2CA,yEAAyE;AACzE,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAkB3C,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAClC,MAA+B,EAC/B,OAAmB;IAEnB,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,sBAAsB,CACpC,aAAsD,EACtD,SAAS,GAAG,qBAAqB,EACjC,QAAqB;IAErB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,KAAgD,CAAC;IACrD,OAAO;QACL,SAAS;YACP,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,QAAQ,EAAE,EAAE,CAAC;gBACb,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAClB,CAAC;QACD,OAAO;YACL,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/rpc/nodes.ts"],"names":[],"mappings":"AA6CA,yEAAyE;AACzE,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAkB3C,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAClC,MAA+B,EAC/B,OAAmB;IAEnB,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,sBAAsB,CACpC,aAAsD,EACtD,SAAS,GAAG,qBAAqB,EACjC,QAAqB;IAErB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,KAAgD,CAAC;IACrD,OAAO;QACL,SAAS;YACP,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,QAAQ,EAAE,EAAE,CAAC;gBACb,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAClB,CAAC;QACD,OAAO;YACL,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const PROTOCOL_VERSION = "0.82.3";
1
+ export declare const PROTOCOL_VERSION = "0.83.1";
2
2
  /** Node-facing additions since this release remain additive or capability-gated. */
3
3
  export declare const MINIMUM_PROTOCOL_VERSION = "0.76.0";
4
4
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // Published protocol release plus an explicit oldest-supported peer.
2
2
  // Different release numbers are harmless when both declared bounds are met;
3
3
  // optional methods/events still require their existing feature capabilities.
4
- export const PROTOCOL_VERSION = '0.82.3';
4
+ export const PROTOCOL_VERSION = '0.83.1';
5
5
  /** Node-facing additions since this release remain additive or capability-gated. */
6
6
  export const MINIMUM_PROTOCOL_VERSION = '0.76.0';
7
7
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farmslot/protocol",
3
- "version": "0.82.3",
3
+ "version": "0.83.1",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -360,6 +360,16 @@
360
360
  "import": "./dist/node/farmslot-home.js",
361
361
  "default": "./dist/node/farmslot-home.js"
362
362
  },
363
+ "./node/farm-paths": {
364
+ "types": "./dist/node/farm-paths.d.ts",
365
+ "import": "./dist/node/farm-paths.js",
366
+ "default": "./dist/node/farm-paths.js"
367
+ },
368
+ "./node/tree-fingerprint": {
369
+ "types": "./dist/node/tree-fingerprint.d.ts",
370
+ "import": "./dist/node/tree-fingerprint.js",
371
+ "default": "./dist/node/tree-fingerprint.js"
372
+ },
363
373
  "./node/farm-layout": {
364
374
  "types": "./dist/node/farm-layout.d.ts",
365
375
  "import": "./dist/node/farm-layout.js",
@@ -13,6 +13,11 @@ export const ACCEPTANCE_VERDICTS: readonly [
13
13
  export const ACCEPTANCE_PROOF_MODES: readonly ['state', 'visual', 'mixed', 'review'];
14
14
  export const ACCEPTANCE_CRITERION_ID_PATTERN: RegExp;
15
15
  export function acceptanceCriterionId(index: number): string;
16
+ export function normalizeAcceptanceCriteria(items: readonly string[]): string[];
17
+ export function ticketCriteriaAsRegistered(
18
+ rawTicketCriteria: readonly string[],
19
+ registration?: unknown,
20
+ ): Array<{ id: string; text: string }>;
16
21
  export function registeredAcceptanceCriteria(
17
22
  criteria: readonly unknown[],
18
23
  registration?: unknown,
@@ -28,6 +28,38 @@ function filterWorkerAcceptanceCriteria(criteria, registration, flow) {
28
28
  return criteria.filter((row) => derived.has(row.id));
29
29
  }
30
30
 
31
+ /** Preserve task-init text, including continuation lines, without list/check markers. */
32
+ function normalizeAcceptanceCriteria(items) {
33
+ return items
34
+ .map((item) =>
35
+ item
36
+ .split('\n')
37
+ .map((line) =>
38
+ line
39
+ .trim()
40
+ .replace(/^[-*]\s+/, '')
41
+ .replace(/^\[(?: |x|X)\]\s*/, '')
42
+ .trim(),
43
+ )
44
+ .filter(Boolean)
45
+ .join('\n'),
46
+ )
47
+ .filter(Boolean);
48
+ }
49
+
50
+ /** Convert only raw ticket originals to the representation written by task init. */
51
+ function ticketCriteriaAsRegistered(rawTicketCriteria, registration) {
52
+ const normalized = normalizeAcceptanceCriteria(rawTicketCriteria);
53
+ // Older registrations may have frozen raw originals. Validate those against
54
+ // the raw ticket; otherwise validate the task-init representation exactly.
55
+ const criteria =
56
+ isRecord(registration) &&
57
+ acceptanceCriteriaMatch(registeredAcceptanceCriteria(rawTicketCriteria), registration.original)
58
+ ? rawTicketCriteria
59
+ : normalized;
60
+ return registeredAcceptanceCriteria(criteria, registration);
61
+ }
62
+
31
63
  function registeredAcceptanceCriteria(criteria, registration) {
32
64
  const original = criteria
33
65
  .filter((text) => String(text).trim().length > 0)
@@ -323,8 +355,10 @@ export {
323
355
  acceptanceVerdictLabel,
324
356
  filterWorkerAcceptanceCriteria,
325
357
  INHERITED_ACCEPTANCE_INPUT,
358
+ normalizeAcceptanceCriteria,
326
359
  registeredAcceptanceCriteria,
327
360
  renderAcceptanceCoverage,
328
361
  summarizeAcceptanceStatus,
362
+ ticketCriteriaAsRegistered,
329
363
  validateAcceptanceStatusLedger,
330
364
  };