@farmslot/agent-runtime 0.9.0 → 0.11.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 (224) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/README.md +1 -1
  3. package/bin/farmslot-agent.mjs +1 -1
  4. package/dist/execution-template/create.d.ts.map +1 -1
  5. package/dist/execution-template/create.js +4 -9
  6. package/dist/execution-template/create.js.map +1 -1
  7. package/dist/execution-template/execution-template.test.js +85 -34
  8. package/dist/execution-template/execution-template.test.js.map +1 -1
  9. package/dist/execution-template/frontmatter.d.ts +6 -3
  10. package/dist/execution-template/frontmatter.d.ts.map +1 -1
  11. package/dist/execution-template/frontmatter.js +8 -10
  12. package/dist/execution-template/frontmatter.js.map +1 -1
  13. package/dist/execution-template/index.d.ts +2 -2
  14. package/dist/execution-template/index.d.ts.map +1 -1
  15. package/dist/execution-template/index.js +2 -2
  16. package/dist/execution-template/index.js.map +1 -1
  17. package/dist/execution-template/infer.d.ts +2 -3
  18. package/dist/execution-template/infer.d.ts.map +1 -1
  19. package/dist/execution-template/infer.js +2 -19
  20. package/dist/execution-template/infer.js.map +1 -1
  21. package/dist/execution-template/lint.d.ts.map +1 -1
  22. package/dist/execution-template/lint.js +12 -14
  23. package/dist/execution-template/lint.js.map +1 -1
  24. package/dist/execution-template/resolve.d.ts.map +1 -1
  25. package/dist/execution-template/resolve.js +0 -2
  26. package/dist/execution-template/resolve.js.map +1 -1
  27. package/dist/execution-template/select.d.ts.map +1 -1
  28. package/dist/execution-template/select.js +4 -8
  29. package/dist/execution-template/select.js.map +1 -1
  30. package/dist/execution-template/snapshot.d.ts.map +1 -1
  31. package/dist/execution-template/snapshot.js +0 -1
  32. package/dist/execution-template/snapshot.js.map +1 -1
  33. package/dist/execution-template/types.d.ts +10 -5
  34. package/dist/execution-template/types.d.ts.map +1 -1
  35. package/dist/execution-template/types.js.map +1 -1
  36. package/dist/native/account-claude.d.ts +5 -0
  37. package/dist/native/account-claude.d.ts.map +1 -0
  38. package/dist/native/account-claude.js +42 -0
  39. package/dist/native/account-claude.js.map +1 -0
  40. package/dist/native/account-codex.d.ts +4 -0
  41. package/dist/native/account-codex.d.ts.map +1 -0
  42. package/dist/native/account-codex.js +51 -0
  43. package/dist/native/account-codex.js.map +1 -0
  44. package/dist/native/account-common.d.ts +30 -0
  45. package/dist/native/account-common.d.ts.map +1 -0
  46. package/dist/native/account-common.js +155 -0
  47. package/dist/native/account-common.js.map +1 -0
  48. package/dist/native/account-cursor.d.ts +5 -0
  49. package/dist/native/account-cursor.d.ts.map +1 -0
  50. package/dist/native/account-cursor.js +48 -0
  51. package/dist/native/account-cursor.js.map +1 -0
  52. package/dist/native/account-grok.d.ts +4 -0
  53. package/dist/native/account-grok.d.ts.map +1 -0
  54. package/dist/native/account-grok.js +55 -0
  55. package/dist/native/account-grok.js.map +1 -0
  56. package/dist/native/account-observation.test.d.ts +2 -0
  57. package/dist/native/account-observation.test.d.ts.map +1 -0
  58. package/dist/native/account-observation.test.js +256 -0
  59. package/dist/native/account-observation.test.js.map +1 -0
  60. package/dist/native/account-profiles.d.ts +11 -0
  61. package/dist/native/account-profiles.d.ts.map +1 -0
  62. package/dist/native/account-profiles.js +172 -0
  63. package/dist/native/account-profiles.js.map +1 -0
  64. package/dist/native/account-profiles.test.d.ts +2 -0
  65. package/dist/native/account-profiles.test.d.ts.map +1 -0
  66. package/dist/native/account-profiles.test.js +172 -0
  67. package/dist/native/account-profiles.test.js.map +1 -0
  68. package/dist/native/account-types.d.ts +11 -0
  69. package/dist/native/account-types.d.ts.map +1 -0
  70. package/dist/native/account-types.js +2 -0
  71. package/dist/native/account-types.js.map +1 -0
  72. package/dist/native/acp-requests.d.ts +11 -0
  73. package/dist/native/acp-requests.d.ts.map +1 -0
  74. package/dist/native/acp-requests.js +109 -0
  75. package/dist/native/acp-requests.js.map +1 -0
  76. package/dist/native/acp-rpc.d.ts +15 -0
  77. package/dist/native/acp-rpc.d.ts.map +1 -0
  78. package/dist/native/acp-rpc.js +73 -0
  79. package/dist/native/acp-rpc.js.map +1 -0
  80. package/dist/native/acp.d.ts +15 -0
  81. package/dist/native/acp.d.ts.map +1 -0
  82. package/dist/native/acp.js +285 -0
  83. package/dist/native/acp.js.map +1 -0
  84. package/dist/native/acp.test.d.ts +2 -0
  85. package/dist/native/acp.test.d.ts.map +1 -0
  86. package/dist/native/acp.test.js +257 -0
  87. package/dist/native/acp.test.js.map +1 -0
  88. package/dist/native/claude.d.ts.map +1 -1
  89. package/dist/native/claude.js +14 -0
  90. package/dist/native/claude.js.map +1 -1
  91. package/dist/native/client.d.ts +13 -0
  92. package/dist/native/client.d.ts.map +1 -1
  93. package/dist/native/client.js +112 -1
  94. package/dist/native/client.js.map +1 -1
  95. package/dist/native/codex.d.ts.map +1 -1
  96. package/dist/native/codex.js +61 -3
  97. package/dist/native/codex.js.map +1 -1
  98. package/dist/native/cursor-model.d.ts +6 -0
  99. package/dist/native/cursor-model.d.ts.map +1 -0
  100. package/dist/native/cursor-model.js +74 -0
  101. package/dist/native/cursor-model.js.map +1 -0
  102. package/dist/native/cursor-model.test.d.ts +2 -0
  103. package/dist/native/cursor-model.test.d.ts.map +1 -0
  104. package/dist/native/cursor-model.test.js +40 -0
  105. package/dist/native/cursor-model.test.js.map +1 -0
  106. package/dist/native/cursor.d.ts +2 -0
  107. package/dist/native/cursor.d.ts.map +1 -0
  108. package/dist/native/cursor.js +30 -0
  109. package/dist/native/cursor.js.map +1 -0
  110. package/dist/native/durability.test.js +461 -1
  111. package/dist/native/durability.test.js.map +1 -1
  112. package/dist/native/filesystem-policy.test.d.ts +2 -0
  113. package/dist/native/filesystem-policy.test.d.ts.map +1 -0
  114. package/dist/native/filesystem-policy.test.js +136 -0
  115. package/dist/native/filesystem-policy.test.js.map +1 -0
  116. package/dist/native/grok.d.ts +2 -0
  117. package/dist/native/grok.d.ts.map +1 -0
  118. package/dist/native/grok.js +17 -0
  119. package/dist/native/grok.js.map +1 -0
  120. package/dist/native/host.js +39 -0
  121. package/dist/native/host.js.map +1 -1
  122. package/dist/native/index.d.ts +3 -0
  123. package/dist/native/index.d.ts.map +1 -1
  124. package/dist/native/index.js +3 -0
  125. package/dist/native/index.js.map +1 -1
  126. package/dist/native/ipc.d.ts +59 -0
  127. package/dist/native/ipc.d.ts.map +1 -1
  128. package/dist/native/ipc.js +76 -4
  129. package/dist/native/ipc.js.map +1 -1
  130. package/dist/native/manager.d.ts +22 -4
  131. package/dist/native/manager.d.ts.map +1 -1
  132. package/dist/native/manager.js +386 -46
  133. package/dist/native/manager.js.map +1 -1
  134. package/dist/native/process-tree.d.ts +11 -0
  135. package/dist/native/process-tree.d.ts.map +1 -1
  136. package/dist/native/process-tree.js +123 -20
  137. package/dist/native/process-tree.js.map +1 -1
  138. package/dist/native/process-tree.test.js +126 -1
  139. package/dist/native/process-tree.test.js.map +1 -1
  140. package/dist/native/process.d.ts +5 -1
  141. package/dist/native/process.d.ts.map +1 -1
  142. package/dist/native/process.js +36 -13
  143. package/dist/native/process.js.map +1 -1
  144. package/dist/native/process.test.d.ts +2 -0
  145. package/dist/native/process.test.d.ts.map +1 -0
  146. package/dist/native/process.test.js +56 -0
  147. package/dist/native/process.test.js.map +1 -0
  148. package/dist/native/profile-service.d.ts +5 -0
  149. package/dist/native/profile-service.d.ts.map +1 -0
  150. package/dist/native/profile-service.js +76 -0
  151. package/dist/native/profile-service.js.map +1 -0
  152. package/dist/native/registry.d.ts +20 -0
  153. package/dist/native/registry.d.ts.map +1 -0
  154. package/dist/native/registry.js +89 -0
  155. package/dist/native/registry.js.map +1 -0
  156. package/dist/native/registry.test.d.ts +2 -0
  157. package/dist/native/registry.test.d.ts.map +1 -0
  158. package/dist/native/registry.test.js +13 -0
  159. package/dist/native/registry.test.js.map +1 -0
  160. package/dist/native/review-sandbox.d.ts +12 -0
  161. package/dist/native/review-sandbox.d.ts.map +1 -0
  162. package/dist/native/review-sandbox.js +6 -0
  163. package/dist/native/review-sandbox.js.map +1 -0
  164. package/dist/native/review-sandbox.test.d.ts +2 -0
  165. package/dist/native/review-sandbox.test.d.ts.map +1 -0
  166. package/dist/native/review-sandbox.test.js +40 -0
  167. package/dist/native/review-sandbox.test.js.map +1 -0
  168. package/dist/native/service.d.ts.map +1 -1
  169. package/dist/native/service.js +42 -8
  170. package/dist/native/service.js.map +1 -1
  171. package/dist/native/supervisor.js +121 -33
  172. package/dist/native/supervisor.js.map +1 -1
  173. package/dist/native/types.d.ts +11 -1
  174. package/dist/native/types.d.ts.map +1 -1
  175. package/dist/native/worker-history.d.ts +16 -0
  176. package/dist/native/worker-history.d.ts.map +1 -0
  177. package/dist/native/worker-history.js +77 -0
  178. package/dist/native/worker-history.js.map +1 -0
  179. package/dist/native/worker-history.test.d.ts +2 -0
  180. package/dist/native/worker-history.test.d.ts.map +1 -0
  181. package/dist/native/worker-history.test.js +195 -0
  182. package/dist/native/worker-history.test.js.map +1 -0
  183. package/dist/native/worker-launch.d.ts +72 -0
  184. package/dist/native/worker-launch.d.ts.map +1 -0
  185. package/dist/native/worker-launch.js +134 -0
  186. package/dist/native/worker-launch.js.map +1 -0
  187. package/dist/native/worker-launch.test.d.ts +2 -0
  188. package/dist/native/worker-launch.test.d.ts.map +1 -0
  189. package/dist/native/worker-launch.test.js +61 -0
  190. package/dist/native/worker-launch.test.js.map +1 -0
  191. package/dist/native/worker-relocation.test.d.ts +2 -0
  192. package/dist/native/worker-relocation.test.d.ts.map +1 -0
  193. package/dist/native/worker-relocation.test.js +110 -0
  194. package/dist/native/worker-relocation.test.js.map +1 -0
  195. package/dist/native/worker-service.d.ts +4 -0
  196. package/dist/native/worker-service.d.ts.map +1 -0
  197. package/dist/native/worker-service.js +85 -0
  198. package/dist/native/worker-service.js.map +1 -0
  199. package/dist/task-init/discover.d.ts +26 -0
  200. package/dist/task-init/discover.d.ts.map +1 -0
  201. package/dist/task-init/discover.js +64 -0
  202. package/dist/task-init/discover.js.map +1 -0
  203. package/dist/task-init/discover.test.d.ts +2 -0
  204. package/dist/task-init/discover.test.d.ts.map +1 -0
  205. package/dist/task-init/discover.test.js +58 -0
  206. package/dist/task-init/discover.test.js.map +1 -0
  207. package/dist/task-init/index.d.ts +6 -1
  208. package/dist/task-init/index.d.ts.map +1 -1
  209. package/dist/task-init/index.js +8 -3
  210. package/dist/task-init/index.js.map +1 -1
  211. package/dist/task-init/task-document.d.ts.map +1 -1
  212. package/dist/task-init/task-document.js +2 -2
  213. package/dist/task-init/task-document.js.map +1 -1
  214. package/dist/task-init/write.d.ts +0 -6
  215. package/dist/task-init/write.d.ts.map +1 -1
  216. package/dist/task-init/write.js +1 -8
  217. package/dist/task-init/write.js.map +1 -1
  218. package/package.json +3 -3
  219. package/scripts/cursor-session-discovery.cjs +48 -0
  220. package/scripts/execution-template-cli.mjs +8 -11
  221. package/scripts/review-filesystem.cjs +39 -0
  222. package/scripts/review-session.cjs +45 -0
  223. package/scripts/review-terminal.cjs +134 -0
  224. package/scripts/task-init-cli.mjs +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-history.test.js","sourceRoot":"","sources":["../../src/native/worker-history.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import type { NativeSessionCreateParams, NativeSessionInfo, SafetyTier } from '@farmslot/protocol';
2
+ /** Private gateway/node/host contract. Public session RPCs never accept this environment. */
3
+ export interface NativeWorkerLaunch {
4
+ leaseId: string;
5
+ executable?: string;
6
+ accountLabel?: string;
7
+ environment: {
8
+ set: Record<string, string>;
9
+ unset: string[];
10
+ };
11
+ effort?: string;
12
+ safetyTier: SafetyTier;
13
+ filesystemPolicy?: NativeWorkerFilesystemPolicy;
14
+ }
15
+ /** Source stays readable; tools may write only the separate task/output roots. */
16
+ export interface NativeWorkerFilesystemPolicy {
17
+ readOnlyRoots: string[];
18
+ writableRoots: string[];
19
+ }
20
+ export declare function validateNativeWorkerFilesystemPolicy(value: unknown): NativeWorkerFilesystemPolicy;
21
+ export declare const NATIVE_WORKER_STATE = "native.worker.state";
22
+ export declare const NATIVE_WORKER_ENSURE = "native.worker.ensure";
23
+ export declare const NATIVE_WORKER_RESUME = "native.worker.resume";
24
+ export declare const NATIVE_WORKER_SEND = "native.worker.send";
25
+ export declare const NATIVE_WORKER_RESPOND = "native.worker.respond";
26
+ export declare const NATIVE_WORKER_CLOSE = "native.worker.close";
27
+ export declare const NATIVE_WORKER_INTERRUPT = "native.worker.interrupt";
28
+ export declare const NATIVE_WORKER_TRANSFER = "native.worker.transfer";
29
+ export declare const NATIVE_WORKER_CANCEL = "native.worker.cancel";
30
+ export declare const NATIVE_WORKER_READ = "native.worker.read";
31
+ export declare const NATIVE_WORKER_METHODS: readonly string[];
32
+ export interface NativeWorkerTarget {
33
+ sessionId: string;
34
+ executionNodeId?: string;
35
+ generation: string;
36
+ leaseId: string;
37
+ }
38
+ export interface NativeWorkerCancelTarget extends Omit<NativeWorkerTarget, 'generation'> {
39
+ generation?: string;
40
+ /** Cancelling a reserved successor may still find the source lease on the host. */
41
+ sourceLeaseId?: string;
42
+ /** Fence this durable recovery operation even if its launch has not reached the host. */
43
+ resumeCommandId?: string;
44
+ }
45
+ export type NativeWorkerCancelResult = {
46
+ sessionId: string;
47
+ leaseId: string;
48
+ generation?: string;
49
+ } & ({
50
+ cancelled: true;
51
+ session?: NativeSessionInfo;
52
+ } | {
53
+ cancelled: false;
54
+ reason: 'generation-changed';
55
+ generation: string;
56
+ session?: undefined;
57
+ });
58
+ export interface NativeWorkerResumeParams extends NativeSessionCreateParams {
59
+ sessionId: string;
60
+ resumeSessionId: string;
61
+ generation: string;
62
+ commandId: string;
63
+ /** Explicit same-host parking relocation, fenced by the old generation and saved launch digest. */
64
+ relocation?: {
65
+ fromCwd: string;
66
+ };
67
+ }
68
+ export declare function decodeNativeWorkerLaunch(value: unknown): NativeWorkerLaunch;
69
+ /** Journals compare launch settings without retaining project environment values. */
70
+ export declare function nativeWorkerLaunchDigest(launch: NativeWorkerLaunch): string;
71
+ export declare function nativeWorkerEnvironment(launch: NativeWorkerLaunch): NodeJS.ProcessEnv;
72
+ //# sourceMappingURL=worker-launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-launch.d.ts","sourceRoot":"","sources":["../../src/native/worker-launch.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEnG,6FAA6F;AAC7F,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;CACjD;AAED,kFAAkF;AAClF,MAAM,WAAW,4BAA4B;IAC3C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,CAyBjG;AAED,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAWlD,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AACD,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,CACA;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAChD;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,CAC9F,CAAC;AAEF,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC;AAQD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAwD3E;AAED,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAgB3E;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAiBrF"}
@@ -0,0 +1,134 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { existsSync } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { delimiter, isAbsolute, join, relative, sep } from 'node:path';
5
+ export function validateNativeWorkerFilesystemPolicy(value) {
6
+ const policy = object(value);
7
+ if (Object.keys(policy).some((key) => !['readOnlyRoots', 'writableRoots'].includes(key)))
8
+ throw new Error('Unsupported native worker filesystem policy field');
9
+ for (const name of ['readOnlyRoots', 'writableRoots']) {
10
+ const roots = policy[name];
11
+ if (!Array.isArray(roots) ||
12
+ !roots.length ||
13
+ roots.some((root) => typeof root !== 'string' || !isAbsolute(root) || root.includes('\0')))
14
+ throw new Error('Native worker filesystem roots must be nonempty absolute paths');
15
+ }
16
+ const result = policy;
17
+ const within = (root, file) => {
18
+ const child = relative(root, file);
19
+ return child === '' || (child !== '..' && !child.startsWith(`..${sep}`) && !isAbsolute(child));
20
+ };
21
+ if (result.readOnlyRoots.some((source) => result.writableRoots.some((output) => within(source, output) || within(output, source))))
22
+ throw new Error('Native worker source and writable roots must not overlap');
23
+ return result;
24
+ }
25
+ export const NATIVE_WORKER_STATE = 'native.worker.state';
26
+ export const NATIVE_WORKER_ENSURE = 'native.worker.ensure';
27
+ export const NATIVE_WORKER_RESUME = 'native.worker.resume';
28
+ export const NATIVE_WORKER_SEND = 'native.worker.send';
29
+ export const NATIVE_WORKER_RESPOND = 'native.worker.respond';
30
+ export const NATIVE_WORKER_CLOSE = 'native.worker.close';
31
+ export const NATIVE_WORKER_INTERRUPT = 'native.worker.interrupt';
32
+ export const NATIVE_WORKER_TRANSFER = 'native.worker.transfer';
33
+ export const NATIVE_WORKER_CANCEL = 'native.worker.cancel';
34
+ export const NATIVE_WORKER_READ = 'native.worker.read';
35
+ export const NATIVE_WORKER_METHODS = [
36
+ NATIVE_WORKER_READ,
37
+ NATIVE_WORKER_STATE,
38
+ NATIVE_WORKER_ENSURE,
39
+ NATIVE_WORKER_RESUME,
40
+ NATIVE_WORKER_SEND,
41
+ NATIVE_WORKER_RESPOND,
42
+ NATIVE_WORKER_CLOSE,
43
+ NATIVE_WORKER_INTERRUPT,
44
+ NATIVE_WORKER_TRANSFER,
45
+ NATIVE_WORKER_CANCEL,
46
+ ];
47
+ function object(value) {
48
+ if (!value || typeof value !== 'object' || Array.isArray(value))
49
+ throw new Error('Invalid native worker launch object');
50
+ return value;
51
+ }
52
+ export function decodeNativeWorkerLaunch(value) {
53
+ const launch = object(value);
54
+ if (Object.keys(launch).some((key) => ![
55
+ 'leaseId',
56
+ 'executable',
57
+ 'accountLabel',
58
+ 'environment',
59
+ 'effort',
60
+ 'safetyTier',
61
+ 'filesystemPolicy',
62
+ ].includes(key)))
63
+ throw new Error('Unsupported native worker launch field');
64
+ if (!['sandboxed', 'full-auto', 'dangerous'].includes(String(launch.safetyTier)))
65
+ throw new Error('Invalid native worker safety tier');
66
+ if (typeof launch.leaseId !== 'string' ||
67
+ !/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/.test(launch.leaseId))
68
+ throw new Error('Native worker leaseId must be a lowercase UUID');
69
+ for (const key of ['executable', 'accountLabel', 'effort'])
70
+ if (launch[key] !== undefined && (typeof launch[key] !== 'string' || !launch[key].trim()))
71
+ throw new Error(`Invalid native worker ${key}`);
72
+ if (typeof launch.effort === 'string' && !/^[a-z][a-z0-9_-]*$/.test(launch.effort))
73
+ throw new Error('Invalid native worker effort');
74
+ const environment = object(launch.environment);
75
+ if (Object.keys(environment).some((key) => !['set', 'unset'].includes(key)))
76
+ throw new Error('Unsupported native worker environment field');
77
+ const set = object(environment.set);
78
+ const unset = environment.unset;
79
+ const validName = (name) => typeof name === 'string' && /^[A-Za-z_][A-Za-z0-9_]*$/.test(name);
80
+ if (!Array.isArray(unset) ||
81
+ !unset.every(validName) ||
82
+ !Object.keys(set).every(validName) ||
83
+ !Object.values(set).every((item) => typeof item === 'string' && !item.includes('\0')))
84
+ throw new Error('Invalid native worker environment mutation');
85
+ return {
86
+ leaseId: launch.leaseId,
87
+ ...(typeof launch.executable === 'string' ? { executable: launch.executable } : {}),
88
+ ...(typeof launch.accountLabel === 'string' ? { accountLabel: launch.accountLabel } : {}),
89
+ ...(typeof launch.effort === 'string' ? { effort: launch.effort } : {}),
90
+ safetyTier: launch.safetyTier,
91
+ ...(launch.filesystemPolicy === undefined
92
+ ? {}
93
+ : {
94
+ filesystemPolicy: validateNativeWorkerFilesystemPolicy(launch.filesystemPolicy),
95
+ }),
96
+ environment: { set: set, unset },
97
+ };
98
+ }
99
+ /** Journals compare launch settings without retaining project environment values. */
100
+ export function nativeWorkerLaunchDigest(launch) {
101
+ return createHash('sha256')
102
+ .update(JSON.stringify({
103
+ executable: launch.executable,
104
+ accountLabel: launch.accountLabel,
105
+ safetyTier: launch.safetyTier,
106
+ effort: launch.effort,
107
+ ...(launch.filesystemPolicy ? { filesystemPolicy: launch.filesystemPolicy } : {}),
108
+ environment: {
109
+ set: Object.entries(launch.environment.set).sort(([a], [b]) => a.localeCompare(b)),
110
+ unset: [...new Set(launch.environment.unset)].sort(),
111
+ },
112
+ }))
113
+ .digest('hex');
114
+ }
115
+ export function nativeWorkerEnvironment(launch) {
116
+ const unset = new Set(launch.environment.unset);
117
+ // Object.fromEntries treats names as data, including names matching Object.prototype keys.
118
+ const env = Object.fromEntries([
119
+ ...Object.entries(process.env).filter(([key]) => !unset.has(key)),
120
+ ...Object.entries(launch.environment.set),
121
+ ]);
122
+ env.DISABLE_OMC = '1';
123
+ env.DISABLE_OMX = '1';
124
+ const shims = join(env.ASDF_DATA_DIR ?? join(env.HOME ?? homedir(), '.asdf'), 'shims');
125
+ if (existsSync(shims))
126
+ env.PATH = `${shims}${delimiter}${env.PATH ?? ''}`;
127
+ delete env.CLAUDECODE;
128
+ // Workers do not need control-plane credentials, including configured overrides.
129
+ delete env.FARMSLOT_NODE_TOKEN;
130
+ delete env.FARMSLOT_GATEWAY_TOKEN;
131
+ delete env.FARMSLOT_GATEWAY_PASSWORD;
132
+ return env;
133
+ }
134
+ //# sourceMappingURL=worker-launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-launch.js","sourceRoot":"","sources":["../../src/native/worker-launch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worker-launch.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-launch.test.d.ts","sourceRoot":"","sources":["../../src/native/worker-launch.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { nativeWorkerEnvironment } from './worker-launch.js';
4
+ test('worker environments remove inherited and configured control-plane credentials', () => {
5
+ const originalEnvironment = process.env;
6
+ const credentials = {
7
+ FARMSLOT_NODE_TOKEN: 'synthetic-node-token',
8
+ FARMSLOT_GATEWAY_TOKEN: 'synthetic-gateway-token',
9
+ FARMSLOT_GATEWAY_PASSWORD: 'synthetic-gateway-password',
10
+ };
11
+ try {
12
+ // Replace the environment rather than reading any real credential values.
13
+ process.env = { ...credentials, CODEX_LB_API_KEY: 'synthetic-runner-key' };
14
+ for (const set of [{}, credentials]) {
15
+ const env = nativeWorkerEnvironment({
16
+ leaseId: 'fixture-lease',
17
+ safetyTier: 'sandboxed',
18
+ environment: { set, unset: [] },
19
+ });
20
+ for (const name of Object.keys(credentials))
21
+ assert.equal(Object.hasOwn(env, name), false);
22
+ assert.equal(env.CODEX_LB_API_KEY, 'synthetic-runner-key');
23
+ assert.equal(env.DISABLE_OMC, '1');
24
+ assert.equal(env.DISABLE_OMX, '1');
25
+ }
26
+ assert.deepEqual(credentials, {
27
+ FARMSLOT_NODE_TOKEN: 'synthetic-node-token',
28
+ FARMSLOT_GATEWAY_TOKEN: 'synthetic-gateway-token',
29
+ FARMSLOT_GATEWAY_PASSWORD: 'synthetic-gateway-password',
30
+ });
31
+ }
32
+ finally {
33
+ process.env = originalEnvironment;
34
+ }
35
+ });
36
+ test('filesystem launch contract rejects overlapping source grants and binds grants into its digest', async () => {
37
+ const { decodeNativeWorkerLaunch, nativeWorkerLaunchDigest, validateNativeWorkerFilesystemPolicy, } = await import('./worker-launch.js');
38
+ const launch = {
39
+ leaseId: '10000000-0000-4000-8000-000000000001',
40
+ safetyTier: 'sandboxed',
41
+ environment: { set: {}, unset: [] },
42
+ filesystemPolicy: { readOnlyRoots: ['/repo'], writableRoots: ['/task', '/output'] },
43
+ };
44
+ const decoded = decodeNativeWorkerLaunch(launch);
45
+ assert.deepEqual(decoded.filesystemPolicy, launch.filesystemPolicy);
46
+ assert.notEqual(nativeWorkerLaunchDigest(decoded), nativeWorkerLaunchDigest({ ...decoded, filesystemPolicy: undefined }));
47
+ assert.notEqual(nativeWorkerLaunchDigest(decoded), nativeWorkerLaunchDigest({
48
+ ...decoded,
49
+ filesystemPolicy: { ...launch.filesystemPolicy, writableRoots: ['/other'] },
50
+ }));
51
+ for (const writableRoots of [['/'], ['/repo'], ['/repo/output'], ['/repo/../repo']]) {
52
+ assert.throws(() => validateNativeWorkerFilesystemPolicy({ ...launch.filesystemPolicy, writableRoots }), /overlap/);
53
+ }
54
+ for (const invalid of [
55
+ {},
56
+ { ...launch.filesystemPolicy, writableRoots: ['relative'] },
57
+ { ...launch.filesystemPolicy, writableRoots: [] },
58
+ ])
59
+ assert.throws(() => validateNativeWorkerFilesystemPolicy(invalid), /absolute paths/);
60
+ });
61
+ //# sourceMappingURL=worker-launch.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-launch.test.js","sourceRoot":"","sources":["../../src/native/worker-launch.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worker-relocation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-relocation.test.d.ts","sourceRoot":"","sources":["../../src/native/worker-relocation.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,110 @@
1
+ import assert from 'node:assert/strict';
2
+ import { execFileSync } from 'node:child_process';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { chmodSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
5
+ import { tmpdir } from 'node:os';
6
+ import { join } from 'node:path';
7
+ import test from 'node:test';
8
+ import { NativeSessionClient } from './client.js';
9
+ import { decodeRequest } from './ipc.js';
10
+ import { NativeSessionManager } from './manager.js';
11
+ import { NATIVE_WORKER_RESUME } from './worker-launch.js';
12
+ const executable = `#!/usr/bin/env node
13
+ if(process.argv.includes('--version')) { console.log('fixture 1'); process.exit(0); }
14
+ const send=m=>process.stdout.write(JSON.stringify(m)+'\\n');
15
+ require('node:readline').createInterface({input:process.stdin}).on('line',line=>{
16
+ const m=JSON.parse(line);
17
+ if(m.method==='initialize')send({id:m.id,result:{}});
18
+ if(m.method==='thread/start'||m.method==='thread/resume')send({id:m.id,result:{thread:{id:m.params.threadId||'saved-conversation'}}});
19
+ });
20
+ `;
21
+ test('worker relocation preserves lease/account and requires an explicit sibling-worktree move', async () => {
22
+ const root = mkdtempSync(join(tmpdir(), 'native-relocation-'));
23
+ const source = join(root, 'source');
24
+ const target = join(root, 'target');
25
+ const unrelated = join(root, 'unrelated');
26
+ const binary = join(root, 'codex');
27
+ writeFileSync(binary, executable);
28
+ chmodSync(binary, 0o700);
29
+ const git = (args, cwd = root) => execFileSync('git', args, { cwd, stdio: 'pipe' });
30
+ git(['init', source]);
31
+ git([
32
+ '-c',
33
+ 'user.name=Fixture',
34
+ '-c',
35
+ 'user.email=fixture@example.invalid',
36
+ 'commit',
37
+ '--allow-empty',
38
+ '-m',
39
+ 'test: initialize fixture',
40
+ ], source);
41
+ git(['worktree', 'add', '-b', 'target', target], source);
42
+ git(['init', unrelated]);
43
+ const manager = new NativeSessionManager(join(root, 'state'));
44
+ const launch = {
45
+ leaseId: randomUUID(),
46
+ executable: binary,
47
+ accountLabel: 'original',
48
+ safetyTier: 'full-auto',
49
+ environment: { set: { CODEX_HOME: join(root, 'account') }, unset: [] },
50
+ };
51
+ let sessionId;
52
+ try {
53
+ const before = await manager.ensure('owner', { sessionId: randomUUID(), runner: 'codex', cwd: source }, launch);
54
+ sessionId = before.id;
55
+ const params = {
56
+ sessionId: before.id,
57
+ resumeSessionId: before.nativeSessionId,
58
+ runner: 'codex',
59
+ cwd: target,
60
+ generation: before.generation,
61
+ commandId: randomUUID(),
62
+ };
63
+ await assert.rejects(manager.resumeWorker('owner', { ...params, relocation: { fromCwd: source } }, launch), /Close the current/);
64
+ await manager.closeWorker('owner', before.id, before.generation, launch.leaseId);
65
+ await assert.rejects(manager.resumeWorker('owner', params, launch), /working directory/);
66
+ await assert.rejects(manager.resumeWorker('owner', { ...params, relocation: { fromCwd: unrelated } }, launch), /exact previous workspace/);
67
+ await assert.rejects(manager.resumeWorker('owner', { ...params, cwd: unrelated, relocation: { fromCwd: source } }, launch), /sibling worktrees/);
68
+ await assert.rejects(manager.resumeWorker('owner', { ...params, relocation: { fromCwd: source } }, { ...launch, accountLabel: 'other' }), /account execution context/);
69
+ const cancelledCommand = randomUUID();
70
+ await manager.cancelWorker('owner', before.id, launch.leaseId, before.generation, undefined, cancelledCommand);
71
+ await assert.rejects(manager.resumeWorker('owner', { ...params, commandId: cancelledCommand, relocation: { fromCwd: source } }, launch), /cancelled before launch/);
72
+ const next = await manager.resumeWorker('owner', { ...params, relocation: { fromCwd: source } }, launch);
73
+ assert.equal(next.id, before.id);
74
+ assert.equal(next.nativeSessionId, before.nativeSessionId);
75
+ assert.equal(next.workerLeaseId, launch.leaseId);
76
+ assert.equal(next.cwd, target);
77
+ assert.notEqual(next.generation, before.generation);
78
+ await assert.rejects(manager.resumeWorker('owner', { ...params, relocation: { fromCwd: source } }, launch), /generation|lease/i);
79
+ }
80
+ finally {
81
+ if (sessionId)
82
+ await manager.close('owner', sessionId);
83
+ rmSync(root, { recursive: true, force: true });
84
+ }
85
+ });
86
+ test('private state routing separates owners and IPC preserves explicit relocation', () => {
87
+ const client = new NativeSessionClient('/private/native-state');
88
+ const sessionId = randomUUID();
89
+ assert.notEqual(client.workerStateDirectory('one', sessionId), client.workerStateDirectory('two', sessionId));
90
+ assert.ok(client.workerStateDirectory('one', sessionId).startsWith('/private/native-state/workers/'));
91
+ const request = decodeRequest({
92
+ method: NATIVE_WORKER_RESUME,
93
+ owner: 'owner',
94
+ params: {
95
+ sessionId,
96
+ runner: 'codex',
97
+ cwd: '/target',
98
+ generation: 'generation',
99
+ commandId: 'command',
100
+ resumeSessionId: 'saved',
101
+ relocation: { fromCwd: '/source' },
102
+ },
103
+ launch: { leaseId: randomUUID(), safetyTier: 'full-auto', environment: { set: {}, unset: [] } },
104
+ });
105
+ assert.equal(request.method, NATIVE_WORKER_RESUME);
106
+ if (request.method !== NATIVE_WORKER_RESUME)
107
+ throw new Error('Wrong request');
108
+ assert.deepEqual(request.params.relocation, { fromCwd: '/source' });
109
+ });
110
+ //# sourceMappingURL=worker-relocation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-relocation.test.js","sourceRoot":"","sources":["../../src/native/worker-relocation.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { NativeSessionClient } from './client.js';
2
+ /** Private execution-node operation. The gateway derives launch settings from its run/slot config. */
3
+ export declare function routeNativeWorkerSession(client: NativeSessionClient, owner: string, method: string, value: unknown): Promise<unknown>;
4
+ //# sourceMappingURL=worker-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-service.d.ts","sourceRoot":"","sources":["../../src/native/worker-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAgBvD,sGAAsG;AACtG,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,OAAO,CAAC,CA8FlB"}
@@ -0,0 +1,85 @@
1
+ import { decodeRequest } from './ipc.js';
2
+ import { NativeSessionMethodError } from './service.js';
3
+ import { NATIVE_WORKER_CANCEL, NATIVE_WORKER_CLOSE, NATIVE_WORKER_ENSURE, NATIVE_WORKER_INTERRUPT, NATIVE_WORKER_READ, NATIVE_WORKER_RESPOND, NATIVE_WORKER_RESUME, NATIVE_WORKER_SEND, NATIVE_WORKER_STATE, NATIVE_WORKER_TRANSFER, } from './worker-launch.js';
4
+ /** Private execution-node operation. The gateway derives launch settings from its run/slot config. */
5
+ export async function routeNativeWorkerSession(client, owner, method, value) {
6
+ if (!value || typeof value !== 'object' || Array.isArray(value))
7
+ throw new NativeSessionMethodError('INVALID_PARAMS', 'Expected native worker parameters');
8
+ const params = value;
9
+ if (params.executionNodeId !== undefined && params.executionNodeId !== client.executionNodeId)
10
+ throw new NativeSessionMethodError('INVALID_PARAMS', 'Native worker targets another execution node');
11
+ if (method === NATIVE_WORKER_STATE) {
12
+ if (typeof params.sessionId !== 'string' ||
13
+ !/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/.test(params.sessionId))
14
+ throw new NativeSessionMethodError('INVALID_PARAMS', 'Expected a reserved worker session ID');
15
+ return { stateDirectory: client.prepareWorkerState(owner, params.sessionId) };
16
+ }
17
+ let request;
18
+ try {
19
+ request = decodeRequest({
20
+ method,
21
+ owner,
22
+ params,
23
+ launch: params.launch,
24
+ id: params.sessionId,
25
+ generation: params.generation,
26
+ leaseId: params.leaseId,
27
+ sourceLeaseId: params.sourceLeaseId,
28
+ resumeCommandId: params.resumeCommandId,
29
+ commandId: params.commandId,
30
+ text: params.text,
31
+ requestId: params.requestId,
32
+ response: params.response,
33
+ after: params.after,
34
+ limit: params.limit,
35
+ });
36
+ }
37
+ catch (error) {
38
+ throw new NativeSessionMethodError('INVALID_PARAMS', error.message);
39
+ }
40
+ try {
41
+ if (request.method === NATIVE_WORKER_READ)
42
+ return await client.readWorker(owner, request.id, request.leaseId, request.after, request.limit);
43
+ if (request.method === NATIVE_WORKER_RESPOND) {
44
+ await client.respondWorker(owner, { sessionId: request.id, generation: request.generation, leaseId: request.leaseId }, request.requestId, request.response);
45
+ return { responded: true };
46
+ }
47
+ if (request.method === NATIVE_WORKER_CANCEL)
48
+ return await client.cancelWorker(owner, {
49
+ sessionId: request.id,
50
+ generation: request.generation,
51
+ leaseId: request.leaseId,
52
+ sourceLeaseId: request.sourceLeaseId,
53
+ resumeCommandId: request.resumeCommandId,
54
+ });
55
+ if (request.method === NATIVE_WORKER_ENSURE)
56
+ return { session: await client.ensureWorker(owner, request.params, request.launch) };
57
+ if (request.method === NATIVE_WORKER_RESUME)
58
+ return { session: await client.resumeWorker(owner, request.params, request.launch) };
59
+ if (request.method === NATIVE_WORKER_SEND ||
60
+ request.method === NATIVE_WORKER_CLOSE ||
61
+ request.method === NATIVE_WORKER_INTERRUPT ||
62
+ request.method === NATIVE_WORKER_TRANSFER) {
63
+ const target = {
64
+ sessionId: request.id,
65
+ generation: request.generation,
66
+ leaseId: request.leaseId,
67
+ };
68
+ if (request.method === NATIVE_WORKER_SEND)
69
+ return await client.sendWorker(owner, target, request.commandId, request.text);
70
+ if (request.method === NATIVE_WORKER_CLOSE)
71
+ return { closed: true, session: await client.closeWorker(owner, target) };
72
+ if (request.method === NATIVE_WORKER_TRANSFER)
73
+ return { session: await client.transferWorker(owner, target, request.launch) };
74
+ await client.interruptWorker(owner, target);
75
+ return { interrupted: true };
76
+ }
77
+ throw new NativeSessionMethodError('INVALID_PARAMS', 'Unknown native worker operation');
78
+ }
79
+ catch (error) {
80
+ if (error instanceof NativeSessionMethodError)
81
+ throw error;
82
+ throw new NativeSessionMethodError('NATIVE_SESSION_ERROR', error.message);
83
+ }
84
+ }
85
+ //# sourceMappingURL=worker-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-service.js","sourceRoot":"","sources":["../../src/native/worker-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * How deep under the tasks root a task directory may sit. Both documented
3
+ * shapes are depth 2; one extra level covers a grouped flow. The walk stops at
4
+ * a directory that qualifies, so a task's `artifacts/` (which mirrors task
5
+ * files) is never mistaken for a task of its own.
6
+ */
7
+ export declare const TASK_DIR_SEARCH_DEPTH = 3;
8
+ export interface DiscoveredTaskDir {
9
+ dir: string;
10
+ /** Latest modification of SIGNAL.json, or null when the task never signalled. */
11
+ signalMtimeMs: number | null;
12
+ /** Latest modification of CHECKLIST.md or TASK.md. */
13
+ checklistMtimeMs: number | null;
14
+ }
15
+ /** Every directory under `tasksRoot` that holds a signal or a checklist. */
16
+ export declare function discoverTaskDirs(tasksRoot: string): DiscoveredTaskDir[];
17
+ /**
18
+ * The task directory a reader lands on without naming one: the one written to
19
+ * last, by signal or by checklist. A checklist counts because between
20
+ * `task init` and the worker's first `mark start` the live task has no signal
21
+ * yet, and a reader must not fall back to the previous, finished task then.
22
+ * Equal times prefer the signalled task, then the lexically first path, so two
23
+ * readers of one checkout never land on different tasks.
24
+ */
25
+ export declare function latestTaskDir(tasksRoot: string): string | undefined;
26
+ //# sourceMappingURL=discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/task-init/discover.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,iFAAiF;IACjF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sDAAsD;IACtD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAYD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAqBvE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUnE"}