@farmslot/protocol 0.73.2 → 0.74.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 (194) hide show
  1. package/CHANGELOG.md +22 -8
  2. package/README.md +9 -0
  3. package/dist/client-cache/cache.d.ts +4 -0
  4. package/dist/client-cache/cache.d.ts.map +1 -0
  5. package/dist/client-cache/cache.js +1102 -0
  6. package/dist/client-cache/cache.js.map +1 -0
  7. package/dist/client-cache/collector-admission.d.ts +29 -0
  8. package/dist/client-cache/collector-admission.d.ts.map +1 -0
  9. package/dist/client-cache/collector-admission.js +183 -0
  10. package/dist/client-cache/collector-admission.js.map +1 -0
  11. package/dist/client-cache/command-method.d.ts +5 -0
  12. package/dist/client-cache/command-method.d.ts.map +1 -0
  13. package/dist/client-cache/command-method.js +2 -0
  14. package/dist/client-cache/command-method.js.map +1 -0
  15. package/dist/client-cache/conformance.d.ts +36 -0
  16. package/dist/client-cache/conformance.d.ts.map +1 -0
  17. package/dist/client-cache/conformance.js +578 -0
  18. package/dist/client-cache/conformance.js.map +1 -0
  19. package/dist/client-cache/content.d.ts +29 -0
  20. package/dist/client-cache/content.d.ts.map +1 -0
  21. package/dist/client-cache/content.js +101 -0
  22. package/dist/client-cache/content.js.map +1 -0
  23. package/dist/client-cache/d07-domains.d.ts +17 -0
  24. package/dist/client-cache/d07-domains.d.ts.map +1 -0
  25. package/dist/client-cache/d07-domains.js +111 -0
  26. package/dist/client-cache/d07-domains.js.map +1 -0
  27. package/dist/client-cache/diff-apply.d.ts +29 -0
  28. package/dist/client-cache/diff-apply.d.ts.map +1 -0
  29. package/dist/client-cache/diff-apply.js +206 -0
  30. package/dist/client-cache/diff-apply.js.map +1 -0
  31. package/dist/client-cache/index.d.ts +14 -10
  32. package/dist/client-cache/index.d.ts.map +1 -1
  33. package/dist/client-cache/index.js +14 -1
  34. package/dist/client-cache/index.js.map +1 -1
  35. package/dist/client-cache/keys.d.ts +126 -0
  36. package/dist/client-cache/keys.d.ts.map +1 -0
  37. package/dist/client-cache/keys.js +25 -0
  38. package/dist/client-cache/keys.js.map +1 -0
  39. package/dist/client-cache/native-history.d.ts +64 -0
  40. package/dist/client-cache/native-history.d.ts.map +1 -0
  41. package/dist/client-cache/native-history.js +285 -0
  42. package/dist/client-cache/native-history.js.map +1 -0
  43. package/dist/client-cache/prefetch.d.ts +50 -0
  44. package/dist/client-cache/prefetch.d.ts.map +1 -0
  45. package/dist/client-cache/prefetch.js +507 -0
  46. package/dist/client-cache/prefetch.js.map +1 -0
  47. package/dist/client-cache/registry.d.ts +1365 -0
  48. package/dist/client-cache/registry.d.ts.map +1 -0
  49. package/dist/client-cache/registry.js +1038 -0
  50. package/dist/client-cache/registry.js.map +1 -0
  51. package/dist/client-cache/run-list-versions.d.ts +70 -0
  52. package/dist/client-cache/run-list-versions.d.ts.map +1 -0
  53. package/dist/client-cache/run-list-versions.js +309 -0
  54. package/dist/client-cache/run-list-versions.js.map +1 -0
  55. package/dist/client-cache/store.d.ts +128 -0
  56. package/dist/client-cache/store.d.ts.map +1 -0
  57. package/dist/client-cache/store.js +190 -0
  58. package/dist/client-cache/store.js.map +1 -0
  59. package/dist/client-cache/transport.d.ts +27 -0
  60. package/dist/client-cache/transport.d.ts.map +1 -0
  61. package/dist/client-cache/transport.js +56 -0
  62. package/dist/client-cache/transport.js.map +1 -0
  63. package/dist/client-cache/types.d.ts +116 -0
  64. package/dist/client-cache/types.d.ts.map +1 -0
  65. package/dist/client-cache/types.js +2 -0
  66. package/dist/client-cache/types.js.map +1 -0
  67. package/dist/client-cache/upstream-retention.d.ts +6 -0
  68. package/dist/client-cache/upstream-retention.d.ts.map +1 -0
  69. package/dist/client-cache/upstream-retention.js +28 -0
  70. package/dist/client-cache/upstream-retention.js.map +1 -0
  71. package/dist/client-cache/workspace-retention.d.ts +7 -0
  72. package/dist/client-cache/workspace-retention.d.ts.map +1 -0
  73. package/dist/client-cache/workspace-retention.js +46 -0
  74. package/dist/client-cache/workspace-retention.js.map +1 -0
  75. package/dist/contracts/acceptance-registration.d.ts +0 -6
  76. package/dist/contracts/acceptance-registration.d.ts.map +1 -1
  77. package/dist/contracts/provider-accounts.d.ts +31 -0
  78. package/dist/contracts/provider-accounts.d.ts.map +1 -1
  79. package/dist/contracts/provider-accounts.js +209 -1
  80. package/dist/contracts/provider-accounts.js.map +1 -1
  81. package/dist/contracts/run-bundles.d.ts.map +1 -1
  82. package/dist/contracts/run-bundles.js +2 -0
  83. package/dist/contracts/run-bundles.js.map +1 -1
  84. package/dist/contracts/runs.d.ts +5 -20
  85. package/dist/contracts/runs.d.ts.map +1 -1
  86. package/dist/contracts/runs.js +5 -21
  87. package/dist/contracts/runs.js.map +1 -1
  88. package/dist/contracts/worker-terminal.d.ts +0 -3
  89. package/dist/contracts/worker-terminal.d.ts.map +1 -1
  90. package/dist/contracts/worker-terminal.js.map +1 -1
  91. package/dist/index.d.ts +4 -1
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +4 -1
  94. package/dist/index.js.map +1 -1
  95. package/dist/person-session-client.d.ts +4 -1
  96. package/dist/person-session-client.d.ts.map +1 -1
  97. package/dist/person-session-client.js.map +1 -1
  98. package/dist/rpc/auth.d.ts +17 -0
  99. package/dist/rpc/auth.d.ts.map +1 -1
  100. package/dist/rpc/auth.js.map +1 -1
  101. package/dist/rpc/config.d.ts +2 -0
  102. package/dist/rpc/config.d.ts.map +1 -1
  103. package/dist/rpc/config.js.map +1 -1
  104. package/dist/rpc/fs.d.ts +110 -4
  105. package/dist/rpc/fs.d.ts.map +1 -1
  106. package/dist/rpc/fs.js +7 -1
  107. package/dist/rpc/fs.js.map +1 -1
  108. package/dist/rpc/gateway.d.ts +3 -0
  109. package/dist/rpc/gateway.d.ts.map +1 -1
  110. package/dist/rpc/git.d.ts +42 -0
  111. package/dist/rpc/git.d.ts.map +1 -1
  112. package/dist/rpc/index.d.ts +1 -0
  113. package/dist/rpc/index.d.ts.map +1 -1
  114. package/dist/rpc/index.js +1 -0
  115. package/dist/rpc/index.js.map +1 -1
  116. package/dist/rpc/native-session.d.ts +2 -0
  117. package/dist/rpc/native-session.d.ts.map +1 -1
  118. package/dist/rpc/native-session.js.map +1 -1
  119. package/dist/rpc/nodes.d.ts +2 -0
  120. package/dist/rpc/nodes.d.ts.map +1 -1
  121. package/dist/rpc/nodes.js.map +1 -1
  122. package/dist/rpc/pr-observations.d.ts +22 -0
  123. package/dist/rpc/pr-observations.d.ts.map +1 -0
  124. package/dist/rpc/pr-observations.js +104 -0
  125. package/dist/rpc/pr-observations.js.map +1 -0
  126. package/dist/rpc/pr.d.ts +9 -0
  127. package/dist/rpc/pr.d.ts.map +1 -1
  128. package/dist/rpc/pr.js +1 -1
  129. package/dist/rpc/pr.js.map +1 -1
  130. package/dist/rpc/principal.d.ts +2 -0
  131. package/dist/rpc/principal.d.ts.map +1 -1
  132. package/dist/rpc/registry.d.ts +1 -0
  133. package/dist/rpc/registry.d.ts.map +1 -1
  134. package/dist/rpc/registry.js +2 -0
  135. package/dist/rpc/registry.js.map +1 -1
  136. package/dist/rpc/resource-observers.d.ts +32 -0
  137. package/dist/rpc/resource-observers.d.ts.map +1 -0
  138. package/dist/rpc/resource-observers.js +2 -0
  139. package/dist/rpc/resource-observers.js.map +1 -0
  140. package/dist/rpc/run.d.ts +23 -0
  141. package/dist/rpc/run.d.ts.map +1 -1
  142. package/dist/rpc/run.js.map +1 -1
  143. package/dist/rpc/runner-models.d.ts +15 -0
  144. package/dist/rpc/runner-models.d.ts.map +1 -1
  145. package/dist/rpc/runner-models.js +91 -0
  146. package/dist/rpc/runner-models.js.map +1 -1
  147. package/dist/runs/review-diff-identity.d.ts +15 -0
  148. package/dist/runs/review-diff-identity.d.ts.map +1 -0
  149. package/dist/runs/review-diff-identity.js +47 -0
  150. package/dist/runs/review-diff-identity.js.map +1 -0
  151. package/dist/runs/run-list-filter.d.ts +33 -0
  152. package/dist/runs/run-list-filter.d.ts.map +1 -0
  153. package/dist/runs/run-list-filter.js +116 -0
  154. package/dist/runs/run-list-filter.js.map +1 -0
  155. package/dist/runs/run-list-observation.d.ts +5 -0
  156. package/dist/runs/run-list-observation.d.ts.map +1 -0
  157. package/dist/runs/run-list-observation.js +36 -0
  158. package/dist/runs/run-list-observation.js.map +1 -0
  159. package/dist/runs/run-list-view.d.ts +6 -2
  160. package/dist/runs/run-list-view.d.ts.map +1 -1
  161. package/dist/runs/run-list-view.js +10 -4
  162. package/dist/runs/run-list-view.js.map +1 -1
  163. package/dist/slots/cancelled-run-slot.d.ts +2 -1
  164. package/dist/slots/cancelled-run-slot.d.ts.map +1 -1
  165. package/dist/sources/client.d.ts +10 -1
  166. package/dist/sources/client.d.ts.map +1 -1
  167. package/dist/sources/client.js +23 -4
  168. package/dist/sources/client.js.map +1 -1
  169. package/dist/sources/controller.d.ts +13 -14
  170. package/dist/sources/controller.d.ts.map +1 -1
  171. package/dist/sources/controller.js +87 -82
  172. package/dist/sources/controller.js.map +1 -1
  173. package/dist/sources/status-view.d.ts +2 -0
  174. package/dist/sources/status-view.d.ts.map +1 -1
  175. package/dist/sources/status-view.js +13 -0
  176. package/dist/sources/status-view.js.map +1 -1
  177. package/dist/transport/events.d.ts +1 -4
  178. package/dist/transport/events.d.ts.map +1 -1
  179. package/dist/transport/events.js +1 -0
  180. package/dist/transport/events.js.map +1 -1
  181. package/dist/transport/frames.d.ts +6 -0
  182. package/dist/transport/frames.d.ts.map +1 -1
  183. package/dist/transport/frames.js.map +1 -1
  184. package/dist/transport/observations.d.ts +24 -0
  185. package/dist/transport/observations.d.ts.map +1 -0
  186. package/dist/transport/observations.js +2 -0
  187. package/dist/transport/observations.js.map +1 -0
  188. package/dist/version.d.ts +1 -1
  189. package/dist/version.js +1 -1
  190. package/package.json +1 -1
  191. package/dist/sources/changes.d.ts +0 -37
  192. package/dist/sources/changes.d.ts.map +0 -1
  193. package/dist/sources/changes.js +0 -79
  194. package/dist/sources/changes.js.map +0 -1
@@ -1,37 +0,0 @@
1
- import { type ResourceChangedPayload } from '../transport/events.js';
2
- /** The source revision a controller compares; revisions never compare across epochs. */
3
- export interface SourceRevisionMark {
4
- epoch: string;
5
- revision: number;
6
- }
7
- /** The one carrier decoder. */
8
- export declare function sourceResourceChanges(event: string, payload: unknown): ResourceChangedPayload | undefined;
9
- /** True when `next` is a change a reader holding `seen` has not covered. */
10
- export declare function isNewerSourceRevision(next: SourceRevisionMark, seen: SourceRevisionMark | undefined): boolean;
11
- export interface SourceChangeFeedState {
12
- /** Undefined until this connection's `hello` arrives. */
13
- announced?: boolean;
14
- latest?: SourceRevisionMark;
15
- }
16
- /**
17
- * One feed per gateway connection, fed with every received event. It remembers
18
- * whether `hello` announced the signal so panels mounted later can tell.
19
- */
20
- export declare class SourceChangeFeed {
21
- private state;
22
- private listeners;
23
- getState: () => SourceChangeFeedState;
24
- subscribe: (listener: () => void) => (() => void);
25
- receive(event: string, payload: unknown): void;
26
- /** A new connection must announce again; its revisions start a new comparison. */
27
- disconnected(): void;
28
- }
29
- export declare function createSourceChangeFeed(): SourceChangeFeed;
30
- /** The part of a host's gateway client that feeds source changes. */
31
- export interface SourceChangeConnection {
32
- subscribe(event: string, handler: (payload: unknown) => void): unknown;
33
- onConnectionChange(listener: (state: string) => void): unknown;
34
- }
35
- /** Wire a host connection to its feed; hosts call this once per gateway client. */
36
- export declare function connectSourceChangeFeed(feed: SourceChangeFeed, connection: SourceChangeConnection): void;
37
- //# sourceMappingURL=changes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../src/sources/changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAE7E,wFAAwF;AACxF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD,+BAA+B;AAC/B,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,sBAAsB,GAAG,SAAS,CAapC;AAaD,4EAA4E;AAC5E,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,kBAAkB,GAAG,SAAS,GACnC,OAAO,CAET;AAED,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,SAAS,CAAyB;IAE1C,QAAQ,QAAO,qBAAqB,CAAe;IAEnD,SAAS,GAAI,UAAU,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAG9C;IAEF,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAW9C,kFAAkF;IAClF,YAAY,IAAI,IAAI;CAKrB;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD;AAED,qEAAqE;AACrE,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IACvE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;CAChE;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,gBAAgB,EACtB,UAAU,EAAE,sBAAsB,GACjC,IAAI,CAMN"}
@@ -1,79 +0,0 @@
1
- import { Events } from '../transport/events.js';
2
- /**
3
- * The carrier (ADR-069 Amendment 1). Until `resource.changed` exists the payload rides on
4
- * `hello` and `fleet.updated`; adopting ADR-071 changes only these events and the decoder.
5
- */
6
- const SOURCE_CHANGE_EVENTS = [Events.HELLO, Events.FLEET_UPDATED];
7
- /** The one carrier decoder. */
8
- export function sourceResourceChanges(event, payload) {
9
- if (!SOURCE_CHANGE_EVENTS.includes(event))
10
- return undefined;
11
- const changes = payload?.resourceChanges;
12
- if (!changes || typeof changes !== 'object')
13
- return undefined;
14
- const candidate = changes;
15
- if (candidate.version !== 1 ||
16
- typeof candidate.epoch !== 'string' ||
17
- !candidate.epoch ||
18
- !Array.isArray(candidate.changes))
19
- return undefined;
20
- return candidate;
21
- }
22
- function sourceMark(payload) {
23
- const change = payload.changes.find((entry) => entry?.key?.family === 'sources' &&
24
- entry.key.scope === 'farm' &&
25
- Number.isSafeInteger(entry.revision) &&
26
- entry.revision >= 0);
27
- return change ? { epoch: payload.epoch, revision: change.revision } : undefined;
28
- }
29
- /** True when `next` is a change a reader holding `seen` has not covered. */
30
- export function isNewerSourceRevision(next, seen) {
31
- return !seen || next.epoch !== seen.epoch || next.revision > seen.revision;
32
- }
33
- /**
34
- * One feed per gateway connection, fed with every received event. It remembers
35
- * whether `hello` announced the signal so panels mounted later can tell.
36
- */
37
- export class SourceChangeFeed {
38
- constructor() {
39
- this.state = {};
40
- this.listeners = new Set();
41
- this.getState = () => this.state;
42
- this.subscribe = (listener) => {
43
- this.listeners.add(listener);
44
- return () => this.listeners.delete(listener);
45
- };
46
- }
47
- receive(event, payload) {
48
- const changes = sourceResourceChanges(event, payload);
49
- const mark = changes ? sourceMark(changes) : undefined;
50
- const announced = event === Events.HELLO ? Boolean(mark) : this.state.announced;
51
- const latest = mark && isNewerSourceRevision(mark, this.state.latest) ? mark : this.state.latest;
52
- if (announced === this.state.announced && latest === this.state.latest)
53
- return;
54
- this.state = { announced, latest };
55
- for (const listener of this.listeners)
56
- listener();
57
- }
58
- /** A new connection must announce again; its revisions start a new comparison. */
59
- disconnected() {
60
- if (this.state.announced === undefined && !this.state.latest)
61
- return;
62
- this.state = {};
63
- for (const listener of this.listeners)
64
- listener();
65
- }
66
- }
67
- export function createSourceChangeFeed() {
68
- return new SourceChangeFeed();
69
- }
70
- /** Wire a host connection to its feed; hosts call this once per gateway client. */
71
- export function connectSourceChangeFeed(feed, connection) {
72
- for (const event of SOURCE_CHANGE_EVENTS)
73
- connection.subscribe(event, (payload) => feed.receive(event, payload));
74
- connection.onConnectionChange((state) => {
75
- if (state !== 'connected')
76
- feed.disconnected();
77
- });
78
- }
79
- //# sourceMappingURL=changes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"changes.js","sourceRoot":"","sources":["../../src/sources/changes.ts"],"names":[],"mappings":"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"}