@farmslot/protocol 0.83.1 → 0.84.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 (253) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/checklist-target.d.ts +5 -1
  3. package/dist/checklist-target.d.ts.map +1 -1
  4. package/dist/checklist-target.js +41 -0
  5. package/dist/checklist-target.js.map +1 -1
  6. package/dist/client-cache/cache.d.ts.map +1 -1
  7. package/dist/client-cache/cache.js +370 -26
  8. package/dist/client-cache/cache.js.map +1 -1
  9. package/dist/client-cache/command-method.d.ts +1 -1
  10. package/dist/client-cache/command-method.d.ts.map +1 -1
  11. package/dist/client-cache/command-method.js +1 -0
  12. package/dist/client-cache/command-method.js.map +1 -1
  13. package/dist/client-cache/entity-collection.d.ts +115 -0
  14. package/dist/client-cache/entity-collection.d.ts.map +1 -0
  15. package/dist/client-cache/entity-collection.js +323 -0
  16. package/dist/client-cache/entity-collection.js.map +1 -0
  17. package/dist/client-cache/entity-guards.d.ts +47 -0
  18. package/dist/client-cache/entity-guards.d.ts.map +1 -0
  19. package/dist/client-cache/entity-guards.js +193 -0
  20. package/dist/client-cache/entity-guards.js.map +1 -0
  21. package/dist/client-cache/entity-views.d.ts +62 -0
  22. package/dist/client-cache/entity-views.d.ts.map +1 -0
  23. package/dist/client-cache/entity-views.js +386 -0
  24. package/dist/client-cache/entity-views.js.map +1 -0
  25. package/dist/client-cache/index.d.ts +4 -0
  26. package/dist/client-cache/index.d.ts.map +1 -1
  27. package/dist/client-cache/index.js +4 -0
  28. package/dist/client-cache/index.js.map +1 -1
  29. package/dist/client-cache/keys.d.ts +13 -0
  30. package/dist/client-cache/keys.d.ts.map +1 -1
  31. package/dist/client-cache/keys.js +1 -0
  32. package/dist/client-cache/keys.js.map +1 -1
  33. package/dist/client-cache/native-history.d.ts +9 -2
  34. package/dist/client-cache/native-history.d.ts.map +1 -1
  35. package/dist/client-cache/native-history.js +66 -18
  36. package/dist/client-cache/native-history.js.map +1 -1
  37. package/dist/client-cache/registry.d.ts +15 -0
  38. package/dist/client-cache/registry.d.ts.map +1 -1
  39. package/dist/client-cache/registry.js +10 -0
  40. package/dist/client-cache/registry.js.map +1 -1
  41. package/dist/client-cache/run-details.d.ts +2 -1
  42. package/dist/client-cache/run-details.d.ts.map +1 -1
  43. package/dist/client-cache/run-details.js.map +1 -1
  44. package/dist/client-cache/run-list-versions.d.ts.map +1 -1
  45. package/dist/client-cache/run-list-versions.js.map +1 -1
  46. package/dist/client-cache/sync-state.d.ts +23 -0
  47. package/dist/client-cache/sync-state.d.ts.map +1 -0
  48. package/dist/client-cache/sync-state.js +39 -0
  49. package/dist/client-cache/sync-state.js.map +1 -0
  50. package/dist/client-cache/text-links.d.ts +11 -0
  51. package/dist/client-cache/text-links.d.ts.map +1 -0
  52. package/dist/client-cache/text-links.js +61 -0
  53. package/dist/client-cache/text-links.js.map +1 -0
  54. package/dist/client-cache/types.d.ts +11 -0
  55. package/dist/client-cache/types.d.ts.map +1 -1
  56. package/dist/contracts/agents.d.ts +6 -0
  57. package/dist/contracts/agents.d.ts.map +1 -1
  58. package/dist/contracts/agents.js.map +1 -1
  59. package/dist/contracts/analytics.d.ts +2 -2
  60. package/dist/contracts/analytics.d.ts.map +1 -1
  61. package/dist/contracts/evals.d.ts +9 -0
  62. package/dist/contracts/evals.d.ts.map +1 -1
  63. package/dist/contracts/evals.js +5 -0
  64. package/dist/contracts/evals.js.map +1 -1
  65. package/dist/contracts/family.d.ts +1 -1
  66. package/dist/contracts/family.d.ts.map +1 -1
  67. package/dist/contracts/pr-rules.d.ts +1 -1
  68. package/dist/contracts/pr-rules.d.ts.map +1 -1
  69. package/dist/contracts/pr-rules.js +3 -1
  70. package/dist/contracts/pr-rules.js.map +1 -1
  71. package/dist/contracts/review-workspace.d.ts +12 -0
  72. package/dist/contracts/review-workspace.d.ts.map +1 -1
  73. package/dist/contracts/review-workspace.js +9 -2
  74. package/dist/contracts/review-workspace.js.map +1 -1
  75. package/dist/contracts/reviews.d.ts +1 -1
  76. package/dist/contracts/reviews.d.ts.map +1 -1
  77. package/dist/contracts/run-lifecycle-view.d.ts.map +1 -1
  78. package/dist/contracts/run-lifecycle-view.js +9 -7
  79. package/dist/contracts/run-lifecycle-view.js.map +1 -1
  80. package/dist/contracts/runs.d.ts +77 -23
  81. package/dist/contracts/runs.d.ts.map +1 -1
  82. package/dist/contracts/runs.js +2 -2
  83. package/dist/contracts/runs.js.map +1 -1
  84. package/dist/contracts/slot-recovery.d.ts +10 -1
  85. package/dist/contracts/slot-recovery.d.ts.map +1 -1
  86. package/dist/contracts/slot-recovery.js +18 -10
  87. package/dist/contracts/slot-recovery.js.map +1 -1
  88. package/dist/contracts/slots.d.ts +31 -1
  89. package/dist/contracts/slots.d.ts.map +1 -1
  90. package/dist/contracts/task.d.ts +2 -0
  91. package/dist/contracts/task.d.ts.map +1 -1
  92. package/dist/contracts/task.js.map +1 -1
  93. package/dist/contracts/template-placeholders.d.ts.map +1 -1
  94. package/dist/contracts/template-placeholders.js +3 -2
  95. package/dist/contracts/template-placeholders.js.map +1 -1
  96. package/dist/deep-freeze.d.ts +6 -0
  97. package/dist/deep-freeze.d.ts.map +1 -0
  98. package/dist/deep-freeze.js +13 -0
  99. package/dist/deep-freeze.js.map +1 -0
  100. package/dist/file-stamp.d.ts +10 -0
  101. package/dist/file-stamp.d.ts.map +1 -0
  102. package/dist/file-stamp.js +12 -0
  103. package/dist/file-stamp.js.map +1 -0
  104. package/dist/fleet/host-load.d.ts +18 -0
  105. package/dist/fleet/host-load.d.ts.map +1 -0
  106. package/dist/fleet/host-load.js +30 -0
  107. package/dist/fleet/host-load.js.map +1 -0
  108. package/dist/fleet/stale.d.ts +13 -0
  109. package/dist/fleet/stale.d.ts.map +1 -0
  110. package/dist/fleet/stale.js +18 -0
  111. package/dist/fleet/stale.js.map +1 -0
  112. package/dist/fleet/summary.d.ts +8 -0
  113. package/dist/fleet/summary.d.ts.map +1 -0
  114. package/dist/fleet/summary.js +45 -0
  115. package/dist/fleet/summary.js.map +1 -0
  116. package/dist/index.d.ts +6 -0
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +6 -0
  119. package/dist/index.js.map +1 -1
  120. package/dist/integrations/pr-rule-config.d.ts +2 -0
  121. package/dist/integrations/pr-rule-config.d.ts.map +1 -1
  122. package/dist/integrations/pr-rule-config.js +17 -4
  123. package/dist/integrations/pr-rule-config.js.map +1 -1
  124. package/dist/integrations/pr-workflow-defaults.d.ts.map +1 -1
  125. package/dist/integrations/pr-workflow-defaults.js +6 -3
  126. package/dist/integrations/pr-workflow-defaults.js.map +1 -1
  127. package/dist/node/farm-paths.d.ts +5 -0
  128. package/dist/node/farm-paths.d.ts.map +1 -1
  129. package/dist/node/farm-paths.js +64 -27
  130. package/dist/node/farm-paths.js.map +1 -1
  131. package/dist/node/pack-portability.d.ts +16 -0
  132. package/dist/node/pack-portability.d.ts.map +1 -1
  133. package/dist/node/pack-portability.js +169 -32
  134. package/dist/node/pack-portability.js.map +1 -1
  135. package/dist/node/slot-by-repo.d.ts +15 -1
  136. package/dist/node/slot-by-repo.d.ts.map +1 -1
  137. package/dist/node/slot-by-repo.js +115 -31
  138. package/dist/node/slot-by-repo.js.map +1 -1
  139. package/dist/node/tcp-metrics.d.ts +7 -0
  140. package/dist/node/tcp-metrics.d.ts.map +1 -0
  141. package/dist/node/tcp-metrics.js +131 -0
  142. package/dist/node/tcp-metrics.js.map +1 -0
  143. package/dist/performance/ranking.d.ts.map +1 -1
  144. package/dist/performance/ranking.js +1 -0
  145. package/dist/performance/ranking.js.map +1 -1
  146. package/dist/performance/recorder.d.ts.map +1 -1
  147. package/dist/performance/recorder.js +1 -1
  148. package/dist/performance/recorder.js.map +1 -1
  149. package/dist/performance/types.d.ts +5 -1
  150. package/dist/performance/types.d.ts.map +1 -1
  151. package/dist/performance/types.js +3 -0
  152. package/dist/performance/types.js.map +1 -1
  153. package/dist/performance/validation.d.ts.map +1 -1
  154. package/dist/performance/validation.js +19 -9
  155. package/dist/performance/validation.js.map +1 -1
  156. package/dist/recipe/common.d.ts.map +1 -1
  157. package/dist/recipe/common.js +2 -1
  158. package/dist/recipe/common.js.map +1 -1
  159. package/dist/recipe/manifest.js +1 -1
  160. package/dist/recipe/manifest.js.map +1 -1
  161. package/dist/rpc/auth.d.ts +6 -0
  162. package/dist/rpc/auth.d.ts.map +1 -1
  163. package/dist/rpc/auth.js.map +1 -1
  164. package/dist/rpc/clip.d.ts +38 -0
  165. package/dist/rpc/clip.d.ts.map +1 -0
  166. package/dist/rpc/clip.js +26 -0
  167. package/dist/rpc/clip.js.map +1 -0
  168. package/dist/rpc/eval.d.ts +5 -0
  169. package/dist/rpc/eval.d.ts.map +1 -1
  170. package/dist/rpc/fleet.d.ts +28 -1
  171. package/dist/rpc/fleet.d.ts.map +1 -1
  172. package/dist/rpc/fleet.js.map +1 -1
  173. package/dist/rpc/fs.d.ts +18 -0
  174. package/dist/rpc/fs.d.ts.map +1 -1
  175. package/dist/rpc/fs.js +2 -0
  176. package/dist/rpc/fs.js.map +1 -1
  177. package/dist/rpc/index.d.ts +1 -0
  178. package/dist/rpc/index.d.ts.map +1 -1
  179. package/dist/rpc/index.js +1 -0
  180. package/dist/rpc/index.js.map +1 -1
  181. package/dist/rpc/native-session.d.ts +31 -0
  182. package/dist/rpc/native-session.d.ts.map +1 -1
  183. package/dist/rpc/native-session.js.map +1 -1
  184. package/dist/rpc/pr.d.ts +24 -0
  185. package/dist/rpc/pr.d.ts.map +1 -1
  186. package/dist/rpc/registry.d.ts +3 -0
  187. package/dist/rpc/registry.d.ts.map +1 -1
  188. package/dist/rpc/registry.js +4 -0
  189. package/dist/rpc/registry.js.map +1 -1
  190. package/dist/rpc/run.d.ts +2 -1
  191. package/dist/rpc/run.d.ts.map +1 -1
  192. package/dist/rpc/run.js.map +1 -1
  193. package/dist/rpc/runner-models.d.ts.map +1 -1
  194. package/dist/rpc/runner-models.js +1 -0
  195. package/dist/rpc/runner-models.js.map +1 -1
  196. package/dist/rpc/slot.d.ts +26 -1
  197. package/dist/rpc/slot.d.ts.map +1 -1
  198. package/dist/rpc/slot.js +1 -0
  199. package/dist/rpc/slot.js.map +1 -1
  200. package/dist/runs/evidence-summary.d.ts +60 -4
  201. package/dist/runs/evidence-summary.d.ts.map +1 -1
  202. package/dist/runs/evidence-summary.js +148 -12
  203. package/dist/runs/evidence-summary.js.map +1 -1
  204. package/dist/runs/family-readiness.d.ts +4 -3
  205. package/dist/runs/family-readiness.d.ts.map +1 -1
  206. package/dist/runs/family-readiness.js.map +1 -1
  207. package/dist/runs/linked-tickets.d.ts +1 -1
  208. package/dist/runs/linked-tickets.d.ts.map +1 -1
  209. package/dist/runs/list-row.d.ts +57 -0
  210. package/dist/runs/list-row.d.ts.map +1 -0
  211. package/dist/runs/list-row.js +2 -0
  212. package/dist/runs/list-row.js.map +1 -0
  213. package/dist/runs/list-trim.d.ts +36 -4
  214. package/dist/runs/list-trim.d.ts.map +1 -1
  215. package/dist/runs/list-trim.js +327 -9
  216. package/dist/runs/list-trim.js.map +1 -1
  217. package/dist/runs/list-version.d.ts +2 -1
  218. package/dist/runs/list-version.d.ts.map +1 -1
  219. package/dist/runs/list-version.js.map +1 -1
  220. package/dist/runs/review-chain.d.ts +34 -2
  221. package/dist/runs/review-chain.d.ts.map +1 -1
  222. package/dist/runs/review-chain.js +31 -4
  223. package/dist/runs/review-chain.js.map +1 -1
  224. package/dist/runs/review-retries.d.ts +13 -3
  225. package/dist/runs/review-retries.d.ts.map +1 -1
  226. package/dist/runs/review-retries.js.map +1 -1
  227. package/dist/runs/run-family-groups.d.ts +7 -7
  228. package/dist/runs/run-family-groups.d.ts.map +1 -1
  229. package/dist/runs/run-family-groups.js.map +1 -1
  230. package/dist/runs/run-list-filter.d.ts +2 -1
  231. package/dist/runs/run-list-filter.d.ts.map +1 -1
  232. package/dist/runs/run-list-filter.js.map +1 -1
  233. package/dist/runs/run-list-observation.d.ts.map +1 -1
  234. package/dist/runs/run-list-observation.js.map +1 -1
  235. package/dist/runs/run-list-view.d.ts +3 -2
  236. package/dist/runs/run-list-view.d.ts.map +1 -1
  237. package/dist/runs/run-list-view.js.map +1 -1
  238. package/dist/slots/tracking-branch.d.ts.map +1 -1
  239. package/dist/slots/tracking-branch.js +4 -3
  240. package/dist/slots/tracking-branch.js.map +1 -1
  241. package/dist/surfaces/view-state.js +1 -1
  242. package/dist/surfaces/view-state.js.map +1 -1
  243. package/dist/transport/events.d.ts +42 -12
  244. package/dist/transport/events.d.ts.map +1 -1
  245. package/dist/transport/events.js +0 -1
  246. package/dist/transport/events.js.map +1 -1
  247. package/dist/transport/observations.d.ts +2 -0
  248. package/dist/transport/observations.d.ts.map +1 -1
  249. package/dist/version.d.ts +1 -1
  250. package/dist/version.js +1 -1
  251. package/package.json +12 -1
  252. package/scripts/literal-replacement.d.mts +2 -0
  253. package/scripts/literal-replacement.mjs +4 -0
@@ -0,0 +1,62 @@
1
+ import type { ResourceChangeEntry } from '../transport/events.js';
2
+ import { type ResourceKey } from './keys.js';
3
+ import type { ResourceQuery } from './registry.js';
4
+ import type { StoredResourceRows } from './store.js';
5
+ /** Reads the cache sends for a view; the reply data is untrusted JSON. */
6
+ export type EntityViewRequest = (params: unknown, signal: AbortSignal) => Promise<unknown>;
7
+ /** The view's answer from what the collection holds. */
8
+ export interface EntityViewAnswer {
9
+ data: unknown;
10
+ /** Verified on this connection with nothing notified left unread. */
11
+ current: boolean;
12
+ }
13
+ /** What the cache needs from any entity view, independent of its entity type. */
14
+ export interface EntityView {
15
+ readonly storeId: string;
16
+ /** The id of the collection key this view applies itself; its other dependencies are read. */
17
+ readonly collectionKeyId: string;
18
+ /** Rows were hydrated from this store, if any. */
19
+ hydratedFrom?: object;
20
+ serves(query: ResourceQuery): boolean;
21
+ /** Applies a notification; true when it concerns this view. */
22
+ applyChange(change: ResourceChangeEntry): boolean;
23
+ sync(request: EntityViewRequest, onPage?: (done: number, total: number) => void): Promise<boolean>;
24
+ answer(): EntityViewAnswer | undefined;
25
+ hydrate(stored: StoredResourceRows): void;
26
+ /** The view holds rows or a listing. */
27
+ readonly held: boolean;
28
+ /** Rows a full read already put on screen, when the view holds none of its own. */
29
+ seed(full: unknown): void;
30
+ /** Something this view cannot apply changed what the gateway serves: read the listing again. */
31
+ requireVersions(): void;
32
+ /** Rows changed since the last call and the collection data, for one store merge. */
33
+ takeUnstored(): {
34
+ data: unknown;
35
+ metaChanged: boolean;
36
+ upserts: Array<{
37
+ id: string;
38
+ version: string;
39
+ body: unknown;
40
+ bytes: number;
41
+ }>;
42
+ deletes: string[];
43
+ /** UTF-8 JSON bytes of the whole stored collection after this merge. */
44
+ bytes: number;
45
+ };
46
+ unverify(): void;
47
+ clear(): void;
48
+ }
49
+ /** The farm fleet's stored rows; one collection answers the one fleet.status view. */
50
+ export declare const FLEET_ENTITY_STORE_ID: string;
51
+ export declare function createFleetEntityView(): EntityView;
52
+ /** Store ids that hold entity rows rather than a view's reply. */
53
+ export declare function isEntityStoreId(id: string): boolean;
54
+ /** The stored rows of one pr.list scope. */
55
+ export declare function prEntityStoreId(project: string | undefined): string;
56
+ /** The pr.list scope of a view query, or undefined when the query is not a pr.list view. */
57
+ export declare function prViewProject(query: ResourceQuery): {
58
+ project?: string;
59
+ } | undefined;
60
+ /** One pr.list scope; `collectionKey` is the view query's upstream key. */
61
+ export declare function createPREntityView(project: string | undefined, collectionKey: ResourceKey): EntityView;
62
+ //# sourceMappingURL=entity-views.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-views.d.ts","sourceRoot":"","sources":["../../src/client-cache/entity-views.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAelE,OAAO,EAAyB,KAAK,WAAW,EAAiB,MAAM,WAAW,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE3F,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;IACtC,+DAA+D;IAC/D,WAAW,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC;IAClD,IAAI,CACF,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAC7C,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,MAAM,IAAI,gBAAgB,GAAG,SAAS,CAAC;IACvC,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC1C,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,mFAAmF;IACnF,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,gGAAgG;IAChG,eAAe,IAAI,IAAI,CAAC;IACxB,qFAAqF;IACrF,YAAY,IAAI;QACd,IAAI,EAAE,OAAO,CAAC;QACd,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9E,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,wEAAwE;QACxE,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,IAAI,IAAI,CAAC;IACjB,KAAK,IAAI,IAAI,CAAC;CACf;AAqRD,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,QAA8C,CAAC;AAEjF,wBAAgB,qBAAqB,IAAI,UAAU,CA4FlD;AA+BD,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAKnD;AAED,4CAA4C;AAC5C,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEnE;AAED,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOpF;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,aAAa,EAAE,WAAW,GACzB,UAAU,CAwCZ"}
@@ -0,0 +1,386 @@
1
+ import { reattachHostLoad } from '../fleet/host-load.js';
2
+ import { staleFleet } from '../fleet/stale.js';
3
+ import { computeSummary } from '../fleet/summary.js';
4
+ import { Methods } from '../rpc/registry.js';
5
+ import { EntityCollection, } from './entity-collection.js';
6
+ import { admitEntity, entityContentVersion, isMachineHealthEntity, isPRStatusEntity, isSlotEntity, prEntityId, } from './entity-guards.js';
7
+ import { canonicalResourceJson, resourceKeyId } from './keys.js';
8
+ const encoder = new TextEncoder();
9
+ function isRecord(value) {
10
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
11
+ }
12
+ function versionsOf(data) {
13
+ if (!isRecord(data) || !Array.isArray(data.versions))
14
+ return undefined;
15
+ const versions = data.versions.filter((entry) => isRecord(entry) && typeof entry.id === 'string' && typeof entry.version === 'string');
16
+ const marker = data.membershipRevision;
17
+ return {
18
+ versions,
19
+ ...(typeof marker === 'number' && Number.isSafeInteger(marker) ? { marker } : {}),
20
+ };
21
+ }
22
+ function pageOf(data) {
23
+ if (!isRecord(data))
24
+ return { entities: [], versions: [] };
25
+ return {
26
+ entities: Array.isArray(data.entities) ? data.entities : [],
27
+ versions: Array.isArray(data.versions)
28
+ ? data.versions.filter((entry) => isRecord(entry) && typeof entry.id === 'string' && typeof entry.version === 'string')
29
+ : [],
30
+ };
31
+ }
32
+ function invalidReply(method) {
33
+ return Object.assign(new Error(`The gateway sent an invalid ${method} versions reply.`), {
34
+ code: 'RESOURCE_STATE_MISSING',
35
+ });
36
+ }
37
+ class SpecView {
38
+ constructor(spec) {
39
+ this.spec = spec;
40
+ this.metaUnstored = false;
41
+ /** Stored bytes per row, for the collection entry's size. */
42
+ this.rowBytes = new Map();
43
+ /** Non-entity changes notified since the outstanding versions request was sent, by field id. */
44
+ this.metaPatches = new Map();
45
+ this.metaSequence = 0;
46
+ this.collectionKeyId = resourceKeyId(spec.collectionKey);
47
+ this.collection = new EntityCollection({
48
+ idOf: spec.idOf,
49
+ accept: (value, id, version) => admitEntity(spec.guard, spec.idOf, value, id, version),
50
+ fetchVersions: async (signal) => {
51
+ const sent = this.metaSequence;
52
+ const data = await this.send({ ...spec.viewParams, versions: true }, signal);
53
+ const listing = versionsOf(data);
54
+ const meta = isRecord(data) ? spec.readMeta(data) : undefined;
55
+ if (!listing || meta === undefined)
56
+ throw invalidReply(spec.method);
57
+ if (!signal.aborted) {
58
+ // A change notified after the request was sent is newer than the reply's field.
59
+ let merged = meta;
60
+ for (const [id, change] of this.metaPatches)
61
+ if (change.at > sent)
62
+ merged = change.patch(merged);
63
+ else
64
+ this.metaPatches.delete(id);
65
+ this.meta = merged;
66
+ this.metaUnstored = true;
67
+ }
68
+ return {
69
+ versions: listing.versions,
70
+ ...(listing.marker === undefined ? {} : { membershipRevision: listing.marker }),
71
+ };
72
+ },
73
+ fetchPage: async (ids, signal) => pageOf(await this.send({ ...spec.viewParams, ids }, signal)),
74
+ onPage: (done, total) => this.onPage?.(done, total),
75
+ });
76
+ }
77
+ get storeId() {
78
+ return this.spec.storeId;
79
+ }
80
+ send(params, signal) {
81
+ if (!this.request)
82
+ throw new Error('Entity view read outside a sync');
83
+ return this.request(params, signal);
84
+ }
85
+ serves(query) {
86
+ return (query.method === this.spec.method &&
87
+ canonicalResourceJson(query.params) === canonicalResourceJson(this.spec.viewParams));
88
+ }
89
+ applyChange(change) {
90
+ if (resourceKeyId(change.key) === this.collectionKeyId) {
91
+ this.collection.noteMembership(change.membershipRevision);
92
+ return true;
93
+ }
94
+ const id = this.spec.entityId(change.key);
95
+ if (id !== undefined) {
96
+ const pushed = change.changedEntity;
97
+ if (change.kind === 'deleted')
98
+ this.collection.applyDeleted(id);
99
+ else if (!pushed || pushed.family !== this.spec.family || typeof pushed.version !== 'string')
100
+ this.collection.applyUnknown(id);
101
+ else if (pushed.entity === undefined)
102
+ this.collection.applyVersion(id, pushed.version);
103
+ else
104
+ this.collection.applyEntity(id, pushed.entity, pushed.version);
105
+ return true;
106
+ }
107
+ const other = this.spec.applyOther?.(change, this.meta);
108
+ if (!other)
109
+ return false;
110
+ if (other.patch) {
111
+ this.metaPatches.set(other.id, { at: ++this.metaSequence, patch: other.patch });
112
+ if (this.meta !== undefined) {
113
+ this.meta = other.patch(this.meta);
114
+ this.metaUnstored = true;
115
+ }
116
+ }
117
+ // Only a versions read carries these fields; the marker cannot say so.
118
+ if (other.reread)
119
+ this.requireVersions();
120
+ return true;
121
+ }
122
+ requireVersions() {
123
+ this.collection.noteMembership(undefined);
124
+ }
125
+ async sync(request, onPage) {
126
+ this.request = request;
127
+ this.onPage = onPage;
128
+ try {
129
+ return await this.collection.sync();
130
+ }
131
+ finally {
132
+ if (this.request === request)
133
+ this.request = undefined;
134
+ if (this.onPage === onPage)
135
+ this.onPage = undefined;
136
+ }
137
+ }
138
+ answer() {
139
+ const rows = this.collection.assemble();
140
+ if (!rows || this.meta === undefined)
141
+ return undefined;
142
+ const current = this.collection.current;
143
+ return { data: this.spec.answer(rows, this.meta, current), current };
144
+ }
145
+ hydrate(stored) {
146
+ this.collection.hydrate(stored.rows);
147
+ for (const row of stored.rows)
148
+ this.rowBytes.set(row.id, row.bytes);
149
+ const data = stored.entry?.data;
150
+ if (this.meta === undefined && this.spec.isMeta(data))
151
+ this.meta = data;
152
+ }
153
+ get held() {
154
+ return this.collection.held;
155
+ }
156
+ seed(full) {
157
+ if (this.held || !isRecord(full))
158
+ return;
159
+ const seeded = this.spec.fromFull(full);
160
+ if (!seeded)
161
+ return;
162
+ // Admitted like any stored row, at the version of the body itself: the listing decides.
163
+ this.collection.hydrate(seeded.rows.map(({ id, body }) => ({ id, version: entityContentVersion(body), body })));
164
+ if (this.meta === undefined && this.spec.isMeta(seeded.meta))
165
+ this.meta = seeded.meta;
166
+ }
167
+ takeUnstored() {
168
+ const { upserts, deletes } = this.collection.takeUnstored();
169
+ const metaChanged = this.metaUnstored;
170
+ this.metaUnstored = false;
171
+ const stored = upserts.map(({ id, version, entity }) => {
172
+ const bytes = encoder.encode(JSON.stringify(entity)).byteLength;
173
+ this.rowBytes.set(id, bytes);
174
+ return { id, version, body: entity, bytes };
175
+ });
176
+ for (const id of deletes)
177
+ this.rowBytes.delete(id);
178
+ let bytes = encoder.encode(JSON.stringify(this.meta ?? null)).byteLength;
179
+ for (const size of this.rowBytes.values())
180
+ bytes += size;
181
+ return { data: this.meta, metaChanged, upserts: stored, deletes, bytes };
182
+ }
183
+ unverify() {
184
+ this.collection.unverify();
185
+ }
186
+ clear() {
187
+ this.collection.clear();
188
+ this.meta = undefined;
189
+ this.metaUnstored = false;
190
+ this.metaPatches.clear();
191
+ this.rowBytes.clear();
192
+ this.hydratedFrom = undefined;
193
+ }
194
+ }
195
+ const SUMMARY_FIELDS = [
196
+ 'total',
197
+ 'ready',
198
+ 'busy',
199
+ 'held',
200
+ 'manual',
201
+ 'disabled',
202
+ 'blocked',
203
+ 'warmCount',
204
+ ];
205
+ function isFleetSummary(value) {
206
+ return isRecord(value) && SUMMARY_FIELDS.every((field) => typeof value[field] === 'number');
207
+ }
208
+ function isFleetMeta(value) {
209
+ return (isRecord(value) &&
210
+ typeof value.checkedAt === 'string' &&
211
+ isFleetSummary(value.summary) &&
212
+ (value.machines === undefined ||
213
+ (Array.isArray(value.machines) && value.machines.every(isMachineHealthEntity))) &&
214
+ (value.poolErrors === undefined || Array.isArray(value.poolErrors)) &&
215
+ (value.stale === undefined || value.stale === true));
216
+ }
217
+ /** The farm fleet's stored rows; one collection answers the one fleet.status view. */
218
+ export const FLEET_ENTITY_STORE_ID = `${Methods.FLEET_STATUS}:{"versions":true}`;
219
+ export function createFleetEntityView() {
220
+ return new SpecView({
221
+ method: Methods.FLEET_STATUS,
222
+ storeId: FLEET_ENTITY_STORE_ID,
223
+ viewParams: {},
224
+ collectionKey: { family: 'slots', scope: 'farm' },
225
+ family: 'slot',
226
+ entityId: (key) => (key.family === 'slot' ? key.slotId : undefined),
227
+ idOf: (entity) => entity.slot,
228
+ guard: isSlotEntity,
229
+ readMeta: (data) => {
230
+ const meta = {
231
+ summary: data.summary,
232
+ checkedAt: data.checkedAt,
233
+ ...(data.machines === undefined ? {} : { machines: data.machines }),
234
+ ...(data.poolErrors === undefined ? {} : { poolErrors: data.poolErrors }),
235
+ ...(data.stale === undefined ? {} : { stale: data.stale }),
236
+ };
237
+ return isFleetMeta(meta) ? meta : undefined;
238
+ },
239
+ isMeta: isFleetMeta,
240
+ applyOther: (change, meta) => {
241
+ if (change.key.family !== 'node' || !('nodeId' in change.key))
242
+ return undefined;
243
+ const id = change.key.nodeId;
244
+ const pushed = change.changedEntity;
245
+ if (change.kind === 'deleted')
246
+ return {
247
+ id,
248
+ patch: (held) => ({
249
+ ...held,
250
+ machines: (held.machines ?? []).filter((row) => row.machine !== id),
251
+ }),
252
+ };
253
+ if (pushed?.family !== 'node' || typeof pushed.version !== 'string')
254
+ return { id, reread: true };
255
+ if (pushed.entity === undefined) {
256
+ const held = meta?.machines?.find((row) => row.machine === id);
257
+ return held && entityContentVersion(held) === pushed.version
258
+ ? undefined
259
+ : { id, reread: true };
260
+ }
261
+ if (!admitEntity(isMachineHealthEntity, (row) => row.machine, pushed.entity, id, pushed.version))
262
+ return { id, reread: true };
263
+ const entity = pushed.entity;
264
+ return {
265
+ id,
266
+ patch: (held) => {
267
+ const machines = held.machines ?? [];
268
+ return {
269
+ ...held,
270
+ machines: machines.some((row) => row.machine === id)
271
+ ? machines.map((row) => (row.machine === id ? entity : row))
272
+ : [...machines, entity],
273
+ };
274
+ },
275
+ };
276
+ },
277
+ fromFull: (data) => {
278
+ const fleet = data.fleet;
279
+ if (!isRecord(fleet) || !Array.isArray(fleet.slots))
280
+ return undefined;
281
+ return {
282
+ rows: fleet.slots.flatMap((row) => {
283
+ if (!isRecord(row) || typeof row.slot !== 'string')
284
+ return [];
285
+ // Host load is the machine's; a slot entity never carries it.
286
+ const { hostLoad: _hostLoad, ...body } = row;
287
+ return [{ id: row.slot, body }];
288
+ }),
289
+ meta: {
290
+ summary: fleet.summary,
291
+ checkedAt: fleet.checkedAt,
292
+ ...(fleet.machines === undefined ? {} : { machines: fleet.machines }),
293
+ ...(fleet.poolErrors === undefined ? {} : { poolErrors: fleet.poolErrors }),
294
+ ...(fleet.stale === true ? { stale: true } : {}),
295
+ },
296
+ };
297
+ },
298
+ answer: (rows, meta, current) => {
299
+ const slots = reattachHostLoad(rows, meta.machines);
300
+ const fleet = {
301
+ checkedAt: meta.checkedAt,
302
+ slots,
303
+ // A partial collection keeps the gateway's own counts until every row is held.
304
+ summary: current ? computeSummary(slots) : meta.summary,
305
+ ...(meta.machines ? { machines: meta.machines } : {}),
306
+ ...(meta.poolErrors ? { poolErrors: meta.poolErrors } : {}),
307
+ };
308
+ // The full read's rule, after the counts as the gateway takes them.
309
+ return { fleet: meta.stale ? staleFleet(fleet) : fleet };
310
+ },
311
+ });
312
+ }
313
+ function isObservation(value) {
314
+ return (isRecord(value) &&
315
+ (value.status === 'ready' || value.status === 'stale' || value.status === 'error') &&
316
+ (value.observedAt === undefined || typeof value.observedAt === 'number') &&
317
+ (value.error === undefined ||
318
+ (isRecord(value.error) &&
319
+ typeof value.error.code === 'string' &&
320
+ typeof value.error.message === 'string')));
321
+ }
322
+ function isPRMeta(value) {
323
+ return (isRecord(value) &&
324
+ (value.observation === undefined || isObservation(value.observation)) &&
325
+ (value.fetchedAt === undefined || typeof value.fetchedAt === 'string') &&
326
+ (value.refreshing === undefined || typeof value.refreshing === 'boolean'));
327
+ }
328
+ /** Store ids that hold entity rows rather than a view's reply. */
329
+ export function isEntityStoreId(id) {
330
+ return (id === FLEET_ENTITY_STORE_ID ||
331
+ (id.startsWith(`${Methods.PR_LIST}:`) && id.endsWith('"versions":true}')));
332
+ }
333
+ /** The stored rows of one pr.list scope. */
334
+ export function prEntityStoreId(project) {
335
+ return `${Methods.PR_LIST}:${canonicalResourceJson({ ...(project === undefined ? {} : { project }), versions: true })}`;
336
+ }
337
+ /** The pr.list scope of a view query, or undefined when the query is not a pr.list view. */
338
+ export function prViewProject(query) {
339
+ if (query.method !== Methods.PR_LIST)
340
+ return undefined;
341
+ const project = query.params && typeof query.params === 'object'
342
+ ? Reflect.get(query.params, 'project')
343
+ : undefined;
344
+ return typeof project === 'string' ? { project } : {};
345
+ }
346
+ /** One pr.list scope; `collectionKey` is the view query's upstream key. */
347
+ export function createPREntityView(project, collectionKey) {
348
+ const queryId = collectionKey.family === 'upstream' ? collectionKey.queryId : '';
349
+ return new SpecView({
350
+ method: Methods.PR_LIST,
351
+ storeId: prEntityStoreId(project),
352
+ viewParams: project === undefined ? {} : { project },
353
+ collectionKey,
354
+ family: 'upstream',
355
+ entityId: (key) => key.family === 'upstream' && 'prKey' in key && key.queryId === queryId
356
+ ? key.prKey
357
+ : undefined,
358
+ idOf: prEntityId,
359
+ guard: isPRStatusEntity,
360
+ readMeta: (data) => {
361
+ const meta = {
362
+ ...(data.observation === undefined ? {} : { observation: data.observation }),
363
+ ...(data.fetchedAt === undefined ? {} : { fetchedAt: data.fetchedAt }),
364
+ ...(data.refreshing === undefined ? {} : { refreshing: data.refreshing }),
365
+ };
366
+ return isPRMeta(meta) ? meta : undefined;
367
+ },
368
+ isMeta: isPRMeta,
369
+ fromFull: (data) => {
370
+ if (!Array.isArray(data.prs))
371
+ return undefined;
372
+ return {
373
+ rows: data.prs.flatMap((row) => isRecord(row) && typeof row.repo === 'string' && typeof row.pr === 'number'
374
+ ? [{ id: `${row.repo}/${row.pr}`, body: row }]
375
+ : []),
376
+ meta: {
377
+ ...(data.observation === undefined ? {} : { observation: data.observation }),
378
+ ...(data.fetchedAt === undefined ? {} : { fetchedAt: data.fetchedAt }),
379
+ ...(data.refreshing === undefined ? {} : { refreshing: data.refreshing }),
380
+ },
381
+ };
382
+ },
383
+ answer: (rows, meta) => ({ prs: rows, ...meta }),
384
+ });
385
+ }
386
+ //# sourceMappingURL=entity-views.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-views.js","sourceRoot":"","sources":["../../src/client-cache/entity-views.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ export * from './command-method.js';
5
5
  export { runResourceStoreConformance } from './conformance.js';
6
6
  export * from './content.js';
7
7
  export * from './diff-apply.js';
8
+ export * from './entity-collection.js';
9
+ export * from './entity-guards.js';
8
10
  export * from './held-data.js';
9
11
  export * from './keys.js';
10
12
  export * from './native-conversation.js';
@@ -15,8 +17,10 @@ export { gitSourceAlias, readGitSource, readStoredResource } from './read-stored
15
17
  export * from './registry.js';
16
18
  export { RUN_LIST_COLLECTION_ID, type RunListCollectionData } from './run-list-versions.js';
17
19
  export * from './store.js';
20
+ export * from './sync-state.js';
18
21
  export * from './terminal-text.js';
19
22
  export * from './text-diff.js';
23
+ export * from './text-links.js';
20
24
  export { createResourceCacheTransport, requestResourceRead, type ResourceClientConnection, type ResourceConnectionInputs, } from './transport.js';
21
25
  export * from './types.js';
22
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client-cache/index.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrF,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,GAC9B,MAAM,gBAAgB,CAAC;AACxB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client-cache/index.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrF,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,GAC9B,MAAM,gBAAgB,CAAC;AACxB,cAAc,YAAY,CAAC"}
@@ -5,6 +5,8 @@ export * from './command-method.js';
5
5
  export { runResourceStoreConformance } from './conformance.js';
6
6
  export * from './content.js';
7
7
  export * from './diff-apply.js';
8
+ export * from './entity-collection.js';
9
+ export * from './entity-guards.js';
8
10
  export * from './held-data.js';
9
11
  export * from './keys.js';
10
12
  export * from './native-conversation.js';
@@ -15,8 +17,10 @@ export { gitSourceAlias, readGitSource, readStoredResource } from './read-stored
15
17
  export * from './registry.js';
16
18
  export { RUN_LIST_COLLECTION_ID } from './run-list-versions.js';
17
19
  export * from './store.js';
20
+ export * from './sync-state.js';
18
21
  export * from './terminal-text.js';
19
22
  export * from './text-diff.js';
23
+ export * from './text-links.js';
20
24
  export { createResourceCacheTransport, requestResourceRead, } from './transport.js';
21
25
  export * from './types.js';
22
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client-cache/index.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrF,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAA8B,MAAM,wBAAwB,CAAC;AAC5F,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,GAGpB,MAAM,gBAAgB,CAAC;AACxB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client-cache/index.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrF,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAA8B,MAAM,wBAAwB,CAAC;AAC5F,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,GAGpB,MAAM,gBAAgB,CAAC;AACxB,cAAc,YAAY,CAAC"}
@@ -101,6 +101,9 @@ export type ResourceKey = {
101
101
  family: 'copilot';
102
102
  ownerId: string;
103
103
  sessionId?: string;
104
+ } | {
105
+ family: 'clipboard';
106
+ scope: 'farm';
104
107
  } | {
105
108
  family: 'gateway-update';
106
109
  scope: 'gateway';
@@ -108,6 +111,16 @@ export type ResourceKey = {
108
111
  family: 'upstream';
109
112
  integration: 'github' | 'packages' | 'providers';
110
113
  queryId: string;
114
+ }
115
+ /**
116
+ * Per-PR entity key for entity-sync (ADR-071 Amendment 4).
117
+ * `prKey` is `${repo}/${pr}` and is unique within the collector's queryId scope.
118
+ */
119
+ | {
120
+ family: 'upstream';
121
+ integration: 'github';
122
+ queryId: string;
123
+ prKey: string;
111
124
  };
112
125
  /** A family outside this list may come from a newer gateway, so no query can rule it out. */
113
126
  export declare function isKnownResourceFamily(family: unknown): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/client-cache/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/client-cache/keys.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/F;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC7E;IACE,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1E;IAAE,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5F;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,gBAAgB,CAAC;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACD;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAC9C;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAC3F;;;GAGG;GACD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAmClF,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAE9D;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,kBAAkB,EAAE,CAAC;CACpC;AAED,8FAA8F;AAC9F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAS5D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAEtD;AAED,qFAAqF;AACrF,eAAO,MAAM,4BAA4B,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAMvF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAEtF,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,SAAU,CAAC"}
@@ -26,6 +26,7 @@ const RESOURCE_KEY_FAMILIES = {
26
26
  planning: true,
27
27
  assessment: true,
28
28
  copilot: true,
29
+ clipboard: true,
29
30
  'gateway-update': true,
30
31
  upstream: true,
31
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/client-cache/keys.ts"],"names":[],"mappings":"AA0CA,MAAM,qBAAqB,GAAwC;IACjE,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;IACf,gBAAgB,EAAE,IAAI;IACtB,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;IACb,gBAAgB,EAAE,IAAI;IACtB,QAAQ,EAAE,IAAI;CACf,CAAC;AAEF,6FAA6F;AAC7F,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpF,CAAC;AAcD,8FAA8F;AAC9F,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IACxF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACnF,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SAC3B,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;SAC1C,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;SAC5E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAgB;IAC5C,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,4BAA4B,GAAmD;IAC1F,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,GAAG;IACb,gBAAgB,EAAE,GAAG;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAmD;IACzF,KAAK,EAAE,MAAM;CACd,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/client-cache/keys.ts"],"names":[],"mappings":"AAgDA,MAAM,qBAAqB,GAAwC;IACjE,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;IACf,gBAAgB,EAAE,IAAI;IACtB,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,gBAAgB,EAAE,IAAI;IACtB,QAAQ,EAAE,IAAI;CACf,CAAC;AAEF,6FAA6F;AAC7F,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpF,CAAC;AAcD,8FAA8F;AAC9F,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IACxF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACnF,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SAC3B,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;SAC1C,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;SAC5E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAgB;IAC5C,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,4BAA4B,GAAmD;IAC1F,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,GAAG;IACb,gBAAgB,EAAE,GAAG;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAmD;IACzF,KAAK,EAAE,MAAM;CACd,CAAC;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAAC"}
@@ -7,13 +7,20 @@ export interface NativeTimelineEntry {
7
7
  event: NativeSessionEvent;
8
8
  text: string;
9
9
  }
10
- export declare function nativeTimeline(events: NativeSessionEvent[]): NativeTimelineEntry[];
10
+ /**
11
+ * `previous` is the caller's last result. An entry whose kind, text and source events are
12
+ * unchanged is returned as the same object, so a renderer can skip it: a streamed delta then
13
+ * changes only the entry it extends.
14
+ */
15
+ export declare function nativeTimeline(events: NativeSessionEvent[], previous?: readonly NativeTimelineEntry[]): NativeTimelineEntry[];
11
16
  /** A checklist's progress, "3 of 5 steps"; a proposal's markdown. */
12
17
  export declare function nativePlanText(plan: NativeSessionPlan): string;
13
18
  /** The mark before a checklist step: done, current or waiting. */
14
19
  export declare function nativePlanStepMark(status: NativePlanStep['status']): string;
15
20
  /** A proposal's copy action, before a copy (`undefined`), after it, and when it failed. */
16
21
  export declare function nativePlanCopyLabel(copied?: boolean): string;
22
+ /** A message's copy action (`action`), after a copy, and when the copy failed. */
23
+ export declare function nativeMessageCopyLabel(copied?: boolean, action?: string): string;
17
24
  /** The first message of the session Implement starts: the proposed plan, to carry out. */
18
25
  export declare function nativeImplementPrompt(plan: string): string;
19
26
  /**
@@ -218,7 +225,7 @@ export type NativeTimelineRow =
218
225
  * A turn ends at `turn.completed`, or at `session.closed` when its host stopped mid-turn.
219
226
  * Messages and statuses stay; a running turn has no summary.
220
227
  */
221
- export declare function nativeTimelineRows(entries: NativeTimelineEntry[]): NativeTimelineRow[];
228
+ export declare function nativeTimelineRows(entries: NativeTimelineEntry[], previous?: readonly NativeTimelineRow[]): NativeTimelineRow[];
222
229
  /**
223
230
  * Tools and plans shown running in a live read here. A turn the reader watched starts open when
224
231
  * it finishes, so its tools and plan don't fold away under them. A stored snapshot is not live: a