@earendil-works/pi-coding-agent 0.85.0 → 0.85.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 (271) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +0 -2
  3. package/dist/bun/cli.d.ts +3 -1
  4. package/dist/bun/cli.d.ts.map +1 -1
  5. package/dist/bun/cli.js +3 -12
  6. package/dist/bun/cli.js.map +1 -1
  7. package/dist/bun/sandbox-env-setup.d.ts +2 -0
  8. package/dist/bun/sandbox-env-setup.d.ts.map +1 -0
  9. package/dist/bun/sandbox-env-setup.js +4 -0
  10. package/dist/bun/sandbox-env-setup.js.map +1 -0
  11. package/dist/bundle/chunks/{anthropic-messages-QAQLEQIY.js → anthropic-messages-VWZZOSJQ.js} +1 -1
  12. package/dist/bundle/chunks/{azure-openai-responses-Q7MJBRE6.js → azure-openai-responses-BJLAM6CD.js} +1 -1
  13. package/dist/bundle/chunks/{chunk-R7UUJ4C2.js → chunk-CLNPYIDP.js} +1 -1
  14. package/dist/bundle/chunks/chunk-JVUZSMYM.js +1547 -0
  15. package/dist/bundle/chunks/{chunk-2KVJKXS2.js → chunk-U6ZMQKGD.js} +1 -1
  16. package/dist/bundle/chunks/github-copilot.js +1 -1
  17. package/dist/bundle/chunks/{google-generative-ai-BSMTYDAM.js → google-generative-ai-Q2K7FBDI.js} +1 -1
  18. package/dist/bundle/chunks/{google-vertex-5C3HASOJ.js → google-vertex-7UJBF4S7.js} +1 -1
  19. package/dist/bundle/chunks/{node-EM5FIVUN.js → node-KG362ECQ.js} +1 -1
  20. package/dist/bundle/chunks/{openai-codex-responses-YJOO52RW.js → openai-codex-responses-R6VYZTVY.js} +1 -1
  21. package/dist/bundle/chunks/{openai-completions-QOT3QX7D.js → openai-completions-EKZT2IH2.js} +1 -1
  22. package/dist/bundle/chunks/openai-responses-TFDINO6W.js +2 -0
  23. package/dist/bundle/chunks/{pi-messages-EGZIFQGG.js → pi-messages-PML4SPVJ.js} +1 -1
  24. package/dist/bundle/cli.js +1 -1
  25. package/dist/bundle/index.js +1 -1
  26. package/dist/bundle/rpc-entry.js +1 -1
  27. package/dist/cli/args.d.ts.map +1 -1
  28. package/dist/cli/args.js +0 -2
  29. package/dist/cli/args.js.map +1 -1
  30. package/dist/cli/setup.d.ts +2 -0
  31. package/dist/cli/setup.d.ts.map +1 -0
  32. package/dist/cli/setup.js +12 -0
  33. package/dist/cli/setup.js.map +1 -0
  34. package/dist/cli.d.ts.map +1 -1
  35. package/dist/cli.js +3 -25
  36. package/dist/cli.js.map +1 -1
  37. package/dist/core/keybindings.d.ts +5 -0
  38. package/dist/core/keybindings.d.ts.map +1 -1
  39. package/dist/core/keybindings.js +4 -0
  40. package/dist/core/keybindings.js.map +1 -1
  41. package/dist/main.d.ts.map +1 -1
  42. package/dist/main.js +0 -122
  43. package/dist/main.js.map +1 -1
  44. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  45. package/dist/modes/interactive/components/model-selector.js +5 -5
  46. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  47. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  48. package/dist/modes/interactive/components/scoped-models-selector.js +8 -8
  49. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  50. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  51. package/dist/modes/interactive/components/thinking-selector.js +4 -4
  52. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  53. package/docs/containerization.md +45 -0
  54. package/docs/development.md +19 -0
  55. package/docs/environment-variables.md +2 -2
  56. package/docs/keybindings.md +2 -1
  57. package/docs/models.md +1 -1
  58. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  59. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  60. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  61. package/examples/extensions/gondolin/package-lock.json +2 -2
  62. package/examples/extensions/gondolin/package.json +1 -1
  63. package/examples/extensions/sandbox/package-lock.json +2 -2
  64. package/examples/extensions/sandbox/package.json +1 -1
  65. package/examples/extensions/with-deps/package-lock.json +2 -2
  66. package/examples/extensions/with-deps/package.json +1 -1
  67. package/npm-shrinkwrap.json +20 -46
  68. package/package.json +13 -12
  69. package/dist/bundle/chunks/chunk-EQ6DR6XK.js +0 -5
  70. package/dist/bundle/chunks/chunk-LZKJTKCT.js +0 -2
  71. package/dist/bundle/chunks/chunk-WBE4J4AU.js +0 -9
  72. package/dist/bundle/chunks/chunk-WZB2R5YO.js +0 -1558
  73. package/dist/bundle/chunks/openai-responses-U7LNPQN4.js +0 -2
  74. package/dist/bundle/client.js +0 -2
  75. package/dist/bundle/coordinator.js +0 -3
  76. package/dist/cli/experimental/cli.d.ts +0 -10
  77. package/dist/cli/experimental/cli.d.ts.map +0 -1
  78. package/dist/cli/experimental/cli.js +0 -9
  79. package/dist/cli/experimental/cli.js.map +0 -1
  80. package/dist/cli/experimental/command-options.d.ts +0 -28
  81. package/dist/cli/experimental/command-options.d.ts.map +0 -1
  82. package/dist/cli/experimental/command-options.js +0 -84
  83. package/dist/cli/experimental/command-options.js.map +0 -1
  84. package/dist/cli/experimental/command.d.ts +0 -70
  85. package/dist/cli/experimental/command.d.ts.map +0 -1
  86. package/dist/cli/experimental/command.js +0 -144
  87. package/dist/cli/experimental/command.js.map +0 -1
  88. package/dist/cli/experimental/commands/client.d.ts +0 -19
  89. package/dist/cli/experimental/commands/client.d.ts.map +0 -1
  90. package/dist/cli/experimental/commands/client.js +0 -63
  91. package/dist/cli/experimental/commands/client.js.map +0 -1
  92. package/dist/cli/experimental/commands/server.d.ts +0 -17
  93. package/dist/cli/experimental/commands/server.d.ts.map +0 -1
  94. package/dist/cli/experimental/commands/server.js +0 -44
  95. package/dist/cli/experimental/commands/server.js.map +0 -1
  96. package/dist/client/index.d.ts +0 -2
  97. package/dist/client/index.d.ts.map +0 -1
  98. package/dist/client/index.js +0 -2
  99. package/dist/client/index.js.map +0 -1
  100. package/dist/experimental/client-runtime.d.ts +0 -43
  101. package/dist/experimental/client-runtime.d.ts.map +0 -1
  102. package/dist/experimental/client-runtime.js +0 -183
  103. package/dist/experimental/client-runtime.js.map +0 -1
  104. package/dist/experimental/client-tui-chat.d.ts +0 -14
  105. package/dist/experimental/client-tui-chat.d.ts.map +0 -1
  106. package/dist/experimental/client-tui-chat.js +0 -171
  107. package/dist/experimental/client-tui-chat.js.map +0 -1
  108. package/dist/experimental/client-tui.d.ts +0 -37
  109. package/dist/experimental/client-tui.d.ts.map +0 -1
  110. package/dist/experimental/client-tui.js +0 -702
  111. package/dist/experimental/client-tui.js.map +0 -1
  112. package/dist/experimental/client.d.ts +0 -25
  113. package/dist/experimental/client.d.ts.map +0 -1
  114. package/dist/experimental/client.js +0 -99
  115. package/dist/experimental/client.js.map +0 -1
  116. package/dist/experimental/coordinator-entry.d.ts +0 -3
  117. package/dist/experimental/coordinator-entry.d.ts.map +0 -1
  118. package/dist/experimental/coordinator-entry.js +0 -11
  119. package/dist/experimental/coordinator-entry.js.map +0 -1
  120. package/dist/experimental/coordinator.d.ts +0 -38
  121. package/dist/experimental/coordinator.d.ts.map +0 -1
  122. package/dist/experimental/coordinator.js +0 -570
  123. package/dist/experimental/coordinator.js.map +0 -1
  124. package/dist/experimental/mini/main.d.ts +0 -7
  125. package/dist/experimental/mini/main.d.ts.map +0 -1
  126. package/dist/experimental/mini/main.js +0 -21
  127. package/dist/experimental/mini/main.js.map +0 -1
  128. package/dist/experimental/mini/server/entry.d.ts +0 -3
  129. package/dist/experimental/mini/server/entry.d.ts.map +0 -1
  130. package/dist/experimental/mini/server/entry.js +0 -11
  131. package/dist/experimental/mini/server/entry.js.map +0 -1
  132. package/dist/experimental/mini/server/run.d.ts +0 -13
  133. package/dist/experimental/mini/server/run.d.ts.map +0 -1
  134. package/dist/experimental/mini/server/run.js +0 -150
  135. package/dist/experimental/mini/server/run.js.map +0 -1
  136. package/dist/experimental/mini/shared/protocol.d.ts +0 -127
  137. package/dist/experimental/mini/shared/protocol.d.ts.map +0 -1
  138. package/dist/experimental/mini/shared/protocol.js +0 -13
  139. package/dist/experimental/mini/shared/protocol.js.map +0 -1
  140. package/dist/experimental/mini/shared/rpc.d.ts +0 -49
  141. package/dist/experimental/mini/shared/rpc.d.ts.map +0 -1
  142. package/dist/experimental/mini/shared/rpc.js +0 -171
  143. package/dist/experimental/mini/shared/rpc.js.map +0 -1
  144. package/dist/experimental/mini/shared/transport.d.ts +0 -35
  145. package/dist/experimental/mini/shared/transport.d.ts.map +0 -1
  146. package/dist/experimental/mini/shared/transport.js +0 -94
  147. package/dist/experimental/mini/shared/transport.js.map +0 -1
  148. package/dist/experimental/mini/tui/run.d.ts +0 -9
  149. package/dist/experimental/mini/tui/run.d.ts.map +0 -1
  150. package/dist/experimental/mini/tui/run.js +0 -62
  151. package/dist/experimental/mini/tui/run.js.map +0 -1
  152. package/dist/experimental/mini/tui/session.d.ts +0 -26
  153. package/dist/experimental/mini/tui/session.d.ts.map +0 -1
  154. package/dist/experimental/mini/tui/session.js +0 -94
  155. package/dist/experimental/mini/tui/session.js.map +0 -1
  156. package/dist/experimental/mini/tui/view.d.ts +0 -10
  157. package/dist/experimental/mini/tui/view.d.ts.map +0 -1
  158. package/dist/experimental/mini/tui/view.js +0 -459
  159. package/dist/experimental/mini/tui/view.js.map +0 -1
  160. package/dist/experimental/mini/worker/entry.d.ts +0 -3
  161. package/dist/experimental/mini/worker/entry.d.ts.map +0 -1
  162. package/dist/experimental/mini/worker/entry.js +0 -10
  163. package/dist/experimental/mini/worker/entry.js.map +0 -1
  164. package/dist/experimental/mini/worker/lane-service.d.ts +0 -44
  165. package/dist/experimental/mini/worker/lane-service.d.ts.map +0 -1
  166. package/dist/experimental/mini/worker/lane-service.js +0 -97
  167. package/dist/experimental/mini/worker/lane-service.js.map +0 -1
  168. package/dist/experimental/mini/worker/models-service.d.ts +0 -19
  169. package/dist/experimental/mini/worker/models-service.d.ts.map +0 -1
  170. package/dist/experimental/mini/worker/models-service.js +0 -136
  171. package/dist/experimental/mini/worker/models-service.js.map +0 -1
  172. package/dist/experimental/mini/worker/run.d.ts +0 -14
  173. package/dist/experimental/mini/worker/run.d.ts.map +0 -1
  174. package/dist/experimental/mini/worker/run.js +0 -88
  175. package/dist/experimental/mini/worker/run.js.map +0 -1
  176. package/dist/experimental/plugin.d.ts +0 -4
  177. package/dist/experimental/plugin.d.ts.map +0 -1
  178. package/dist/experimental/plugin.js +0 -4
  179. package/dist/experimental/plugin.js.map +0 -1
  180. package/dist/experimental/plugins/bundled.d.ts +0 -7
  181. package/dist/experimental/plugins/bundled.d.ts.map +0 -1
  182. package/dist/experimental/plugins/bundled.js +0 -48
  183. package/dist/experimental/plugins/bundled.js.map +0 -1
  184. package/dist/experimental/plugins/package.d.ts +0 -18
  185. package/dist/experimental/plugins/package.d.ts.map +0 -1
  186. package/dist/experimental/plugins/package.js +0 -113
  187. package/dist/experimental/plugins/package.js.map +0 -1
  188. package/dist/experimental/process.d.ts +0 -20
  189. package/dist/experimental/process.d.ts.map +0 -1
  190. package/dist/experimental/process.js +0 -85
  191. package/dist/experimental/process.js.map +0 -1
  192. package/dist/experimental/radius-auth.d.ts +0 -17
  193. package/dist/experimental/radius-auth.d.ts.map +0 -1
  194. package/dist/experimental/radius-auth.js +0 -52
  195. package/dist/experimental/radius-auth.js.map +0 -1
  196. package/dist/experimental/radius-relay.d.ts +0 -90
  197. package/dist/experimental/radius-relay.d.ts.map +0 -1
  198. package/dist/experimental/radius-relay.js +0 -582
  199. package/dist/experimental/radius-relay.js.map +0 -1
  200. package/dist/experimental/server.d.ts +0 -75
  201. package/dist/experimental/server.d.ts.map +0 -1
  202. package/dist/experimental/server.js +0 -682
  203. package/dist/experimental/server.js.map +0 -1
  204. package/dist/experimental/services/agent-controller-provider.d.ts +0 -4
  205. package/dist/experimental/services/agent-controller-provider.d.ts.map +0 -1
  206. package/dist/experimental/services/agent-controller-provider.js +0 -84
  207. package/dist/experimental/services/agent-controller-provider.js.map +0 -1
  208. package/dist/experimental/services/agent-controller.d.ts +0 -57
  209. package/dist/experimental/services/agent-controller.d.ts.map +0 -1
  210. package/dist/experimental/services/agent-controller.js +0 -3
  211. package/dist/experimental/services/agent-controller.js.map +0 -1
  212. package/dist/experimental/services/connection.d.ts +0 -40
  213. package/dist/experimental/services/connection.d.ts.map +0 -1
  214. package/dist/experimental/services/connection.js +0 -300
  215. package/dist/experimental/services/connection.js.map +0 -1
  216. package/dist/experimental/services/models-provider.d.ts +0 -16
  217. package/dist/experimental/services/models-provider.d.ts.map +0 -1
  218. package/dist/experimental/services/models-provider.js +0 -116
  219. package/dist/experimental/services/models-provider.js.map +0 -1
  220. package/dist/experimental/services/models.d.ts +0 -36
  221. package/dist/experimental/services/models.d.ts.map +0 -1
  222. package/dist/experimental/services/models.js +0 -3
  223. package/dist/experimental/services/models.js.map +0 -1
  224. package/dist/experimental/services/plugins.d.ts +0 -16
  225. package/dist/experimental/services/plugins.d.ts.map +0 -1
  226. package/dist/experimental/services/plugins.js +0 -4
  227. package/dist/experimental/services/plugins.js.map +0 -1
  228. package/dist/experimental/services/presentation-ui.d.ts +0 -13
  229. package/dist/experimental/services/presentation-ui.d.ts.map +0 -1
  230. package/dist/experimental/services/presentation-ui.js +0 -3
  231. package/dist/experimental/services/presentation-ui.js.map +0 -1
  232. package/dist/experimental/services/server.d.ts +0 -19
  233. package/dist/experimental/services/server.d.ts.map +0 -1
  234. package/dist/experimental/services/server.js +0 -104
  235. package/dist/experimental/services/server.js.map +0 -1
  236. package/dist/experimental/services/sessions.d.ts +0 -28
  237. package/dist/experimental/services/sessions.d.ts.map +0 -1
  238. package/dist/experimental/services/sessions.js +0 -4
  239. package/dist/experimental/services/sessions.js.map +0 -1
  240. package/dist/experimental/services/slash-commands-provider.d.ts +0 -14
  241. package/dist/experimental/services/slash-commands-provider.d.ts.map +0 -1
  242. package/dist/experimental/services/slash-commands-provider.js +0 -200
  243. package/dist/experimental/services/slash-commands-provider.js.map +0 -1
  244. package/dist/experimental/services/slash-commands.d.ts +0 -24
  245. package/dist/experimental/services/slash-commands.d.ts.map +0 -1
  246. package/dist/experimental/services/slash-commands.js +0 -3
  247. package/dist/experimental/services/slash-commands.js.map +0 -1
  248. package/dist/experimental/services/transcript-provider.d.ts +0 -12
  249. package/dist/experimental/services/transcript-provider.d.ts.map +0 -1
  250. package/dist/experimental/services/transcript-provider.js +0 -109
  251. package/dist/experimental/services/transcript-provider.js.map +0 -1
  252. package/dist/experimental/services/transcript.d.ts +0 -13
  253. package/dist/experimental/services/transcript.d.ts.map +0 -1
  254. package/dist/experimental/services/transcript.js +0 -3
  255. package/dist/experimental/services/transcript.js.map +0 -1
  256. package/dist/experimental/services/worker.d.ts +0 -28
  257. package/dist/experimental/services/worker.d.ts.map +0 -1
  258. package/dist/experimental/services/worker.js +0 -107
  259. package/dist/experimental/services/worker.js.map +0 -1
  260. package/dist/experimental/session-worker-manager.d.ts +0 -24
  261. package/dist/experimental/session-worker-manager.d.ts.map +0 -1
  262. package/dist/experimental/session-worker-manager.js +0 -691
  263. package/dist/experimental/session-worker-manager.js.map +0 -1
  264. package/dist/experimental/session-worker.d.ts +0 -188
  265. package/dist/experimental/session-worker.d.ts.map +0 -1
  266. package/dist/experimental/session-worker.js +0 -785
  267. package/dist/experimental/session-worker.js.map +0 -1
  268. package/dist/experimental/source-resolver.d.ts +0 -2
  269. package/dist/experimental/source-resolver.d.ts.map +0 -1
  270. package/dist/experimental/source-resolver.js +0 -71
  271. package/dist/experimental/source-resolver.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-worker.js","sourceRoot":"","sources":["../../src/experimental/session-worker.ts"],"names":[],"mappings":"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","sourcesContent":["import { createConnection, type Socket } from \"node:net\";\nimport { isAbsolute } from \"node:path\";\nimport {\n\tisJsonValue,\n\ttype JsonValue,\n\tparseServiceProviderUpdate,\n\tREMOTE_SERVICE_ERROR_CODES,\n\tRemoteServiceError,\n\ttype RemoteServiceErrorCode,\n\ttype ServiceCall,\n\ttype ServiceProviderUpdate,\n} from \"@earendil-works/chord\";\nimport {\n\tAgentHarness,\n\ttype AgentHarness as AgentHarnessInstance,\n\ttype AgentLane,\n\tBACKGROUND_CONTEXT,\n\tcreateBashTool,\n\tcreateReadTool,\n\tcreateWriteTool,\n\ttype JsonlSessionMetadata,\n\tJsonlSessionRepo,\n\ttype Session,\n\tTODO_CONTEXT,\n\twithCancel,\n} from \"@earendil-works/pi-agent-core\";\nimport { NodeExecutionEnv } from \"@earendil-works/pi-agent-core/node\";\nimport lockfile from \"proper-lockfile\";\nimport Type, { type Static } from \"typebox\";\nimport { Check } from \"typebox/value\";\nimport { findInitialModel, resolveCliModel } from \"../core/model-resolver.ts\";\nimport { ModelRuntime } from \"../core/model-runtime.ts\";\nimport { SettingsManager } from \"../core/settings-manager.ts\";\nimport { COORDINATOR_PROTOCOL_VERSION } from \"./coordinator.ts\";\nimport { createSessionPluginFacetLoader } from \"./plugins/bundled.ts\";\nimport {\n\tconsumeInternalProcessRole,\n\tencodeControlLine,\n\tisDirectInternalProcessEntry,\n\tMAX_CONTROL_LINE_BYTES,\n} from \"./process.ts\";\nimport {\n\tcreateSessionWorkerServices,\n\ttype SessionWorkerRuntime,\n\ttype SessionWorkerServices,\n\ttype WorkerServiceScope,\n} from \"./services/worker.ts\";\n\nexport type { SessionWorkerRuntime } from \"./services/worker.ts\";\n\nconst StrictObject = <const T extends Parameters<typeof Type.Object>[0]>(properties: T) =>\n\tType.Object(properties, { additionalProperties: false });\nconst OpaqueJsonValueSchema = Type.Unsafe<JsonValue>(Type.Unknown());\nconst ServiceCallSchema = Type.Unsafe<ServiceCall>(\n\tStrictObject({\n\t\tserviceId: Type.String({ minLength: 1 }),\n\t\tinstance: Type.Optional(\n\t\t\tStrictObject({ key: Type.String({ minLength: 1 }), generation: Type.Integer({ minimum: 1 }) }),\n\t\t),\n\t\tmember: Type.String({ minLength: 1 }),\n\t\targs: Type.Array(Type.Unknown()),\n\t}),\n);\nconst RemoteServiceErrorCodeSchema = Type.Unsafe<RemoteServiceErrorCode>(\n\tType.String({ pattern: `^(?:${REMOTE_SERVICE_ERROR_CODES.join(\"|\")})$` }),\n);\n\nexport const SESSION_WORKER_CONTROL_ADDRESS_ENV = \"PI_SESSION_WORKER_CONTROL_ADDRESS\";\nexport const SESSION_WORKER_CONTROL_TOKEN_ENV = \"PI_SESSION_WORKER_CONTROL_TOKEN\";\nexport const SESSION_WORKER_SESSION_KEY_ENV = \"PI_SESSION_WORKER_SESSION_KEY_BASE64\";\nexport const SESSION_WORKER_PEER_ID_ENV = \"PI_SESSION_WORKER_PEER_ID\";\n\nexport const SessionWorkerMetadataSchema = StrictObject({\n\tid: Type.String({ minLength: 1 }),\n\tcreatedAt: Type.Integer(),\n\tstorageVersion: Type.Integer(),\n\tcwd: Type.String(),\n\tpath: Type.String(),\n\tmodifiedAt: Type.Number(),\n\tparentSessionId: Type.Optional(Type.String()),\n});\n\nexport const SessionWorkerOptionsSchema = StrictObject({\n\tsessionDir: Type.String({ minLength: 1 }),\n\tmetadata: SessionWorkerMetadataSchema,\n\tprovider: Type.Optional(Type.String({ minLength: 1 })),\n\tmodel: Type.Optional(Type.String({ minLength: 1 })),\n\tpluginManifestPaths: Type.Array(Type.String({ minLength: 1 })),\n});\nexport type SessionWorkerOptions = Static<typeof SessionWorkerOptionsSchema>;\n\nexport const WorkerOperationScopeSchema = StrictObject({\n\tserverConnectionId: Type.String(),\n\tattachmentId: Type.String(),\n});\nexport type WorkerOperationScope = WorkerServiceScope;\n\nexport const WorkerOperationRequestSchema = StrictObject({\n\ttype: Type.Literal(\"operation\"),\n\trequestId: Type.String({ minLength: 1 }),\n\tscope: WorkerOperationScopeSchema,\n\tcall: ServiceCallSchema,\n});\nexport type WorkerOperationRequest = Static<typeof WorkerOperationRequestSchema>;\n\nexport const WorkerOperationResponseSchema = Type.Union([\n\tStrictObject({\n\t\ttype: Type.Literal(\"operation_result\"),\n\t\trequestId: Type.String({ minLength: 1 }),\n\t\tscope: WorkerOperationScopeSchema,\n\t\tresult: Type.Optional(OpaqueJsonValueSchema),\n\t}),\n\tStrictObject({\n\t\ttype: Type.Literal(\"operation_error\"),\n\t\trequestId: Type.String({ minLength: 1 }),\n\t\tscope: WorkerOperationScopeSchema,\n\t\tcode: Type.Optional(RemoteServiceErrorCodeSchema),\n\t\tmessage: Type.String(),\n\t}),\n]);\nexport type WorkerOperationResponse = Static<typeof WorkerOperationResponseSchema>;\n\nexport const SessionWorkerCommandSchema = Type.Union([\n\tType.Object({ type: Type.Literal(\"shutdown\") }),\n\tType.Object({ type: Type.Literal(\"discover_workers\") }),\n\tType.Object({\n\t\ttype: Type.Literal(\"session_demand\"),\n\t\tserverConnectionId: Type.String(),\n\t\trequestId: Type.String(),\n\t\tattachmentId: Type.String(),\n\t\tattached: Type.Boolean(),\n\t}),\n\tWorkerOperationRequestSchema,\n\tStrictObject({\n\t\ttype: Type.Literal(\"operation_cancel\"),\n\t\trequestId: Type.String({ minLength: 1 }),\n\t\tscope: WorkerOperationScopeSchema,\n\t}),\n]);\nexport type SessionWorkerCommand = Static<typeof SessionWorkerCommandSchema>;\n\nexport const SessionWorkerEventSchema = Type.Union([\n\tType.Object({\n\t\ttype: Type.Literal(\"worker_ready\"),\n\t\ttoken: Type.String(),\n\t\tsessionKey: Type.String(),\n\t\tsessionId: Type.String(),\n\t\tpid: Type.Integer({ minimum: 1 }),\n\t\tmetadata: SessionWorkerMetadataSchema,\n\t\tpluginManifestPaths: Type.Array(Type.String({ minLength: 1 })),\n\t}),\n\tType.Object({\n\t\ttype: Type.Literal(\"worker_failed\"),\n\t\ttoken: Type.String(),\n\t\tsessionKey: Type.String(),\n\t\tmessage: Type.String(),\n\t}),\n\tType.Object({\n\t\ttype: Type.Literal(\"demand_applied\"),\n\t\ttoken: Type.String(),\n\t\tsessionKey: Type.String(),\n\t\trequestId: Type.String(),\n\t\tattachmentId: Type.String(),\n\t\tattached: Type.Boolean(),\n\t}),\n\tType.Object({\n\t\ttype: Type.Literal(\"demand_rejected\"),\n\t\ttoken: Type.String(),\n\t\tsessionKey: Type.String(),\n\t\trequestId: Type.String(),\n\t\tmessage: Type.String(),\n\t}),\n\tType.Object({\n\t\ttype: Type.Literal(\"operation_response\"),\n\t\ttoken: Type.String(),\n\t\tsessionKey: Type.String(),\n\t\tresponse: WorkerOperationResponseSchema,\n\t}),\n\tType.Object({\n\t\ttype: Type.Literal(\"service_update\"),\n\t\ttoken: Type.String(),\n\t\tsessionKey: Type.String(),\n\t\tscope: WorkerOperationScopeSchema,\n\t\tsubscriptionId: Type.String({ minLength: 1 }),\n\t\tupdate: Type.Unknown(),\n\t}),\n]);\nexport type SessionWorkerEvent = Static<typeof SessionWorkerEventSchema>;\n\n/** Worker-local reconciliation of server-generation demand and Harness activity. */\nexport class WorkerLifecycle {\n\treadonly #initialDemandGraceMs: number;\n\treadonly #orphanDemandGraceMs: number;\n\treadonly #onRetire: () => void;\n\treadonly #demands = new Map<string, { serverConnectionId: string; attachmentId: string; timer?: NodeJS.Timeout }>();\n\treadonly #activeOperations = new Set<string>();\n\t#currentServerConnectionId: string | undefined;\n\t#initialTimer: NodeJS.Timeout | undefined;\n\t#demandInitialized: boolean;\n\t#retirementHolds = 0;\n\t#retiring = false;\n\n\tconstructor(options: {\n\t\tinitialServerConnectionId?: string;\n\t\tinitialDemandGraceMs: number;\n\t\torphanDemandGraceMs: number;\n\t\tonRetire(): void;\n\t}) {\n\t\tthis.#currentServerConnectionId = options.initialServerConnectionId;\n\t\tthis.#initialDemandGraceMs = options.initialDemandGraceMs;\n\t\tthis.#orphanDemandGraceMs = options.orphanDemandGraceMs;\n\t\tthis.#onRetire = options.onRetire;\n\t\tthis.#demandInitialized = false;\n\t\tthis.#initialTimer = setTimeout(() => {\n\t\t\tthis.#initialTimer = undefined;\n\t\t\tthis.#demandInitialized = true;\n\t\t\tthis.#reconcile();\n\t\t}, this.#initialDemandGraceMs);\n\t\tthis.#initialTimer.unref();\n\t}\n\n\tserverConnected(serverConnectionId: string): void {\n\t\tthis.#currentServerConnectionId = serverConnectionId;\n\t\tfor (const demand of this.#demands.values()) {\n\t\t\tif (demand.serverConnectionId !== serverConnectionId || !demand.timer) continue;\n\t\t\tclearTimeout(demand.timer);\n\t\t\tdelete demand.timer;\n\t\t}\n\t}\n\n\tserverDisconnected(serverConnectionId: string): void {\n\t\tif (this.#currentServerConnectionId === serverConnectionId) this.#currentServerConnectionId = undefined;\n\t\tfor (const [key, demand] of this.#demands) {\n\t\t\tif (demand.serverConnectionId !== serverConnectionId || demand.timer) continue;\n\t\t\tdemand.timer = setTimeout(() => {\n\t\t\t\tif (this.#demands.get(key) !== demand) return;\n\t\t\t\tthis.#demands.delete(key);\n\t\t\t\tthis.#reconcile();\n\t\t\t}, this.#orphanDemandGraceMs);\n\t\t\tdemand.timer.unref();\n\t\t}\n\t}\n\n\tbeginRequest(serverConnectionId: string, attachmentId: string): () => void {\n\t\tif (this.#retiring) throw new Error(\"Session worker is retiring\");\n\t\tif (serverConnectionId !== this.#currentServerConnectionId) {\n\t\t\tthrow new Error(\"Session worker received a request from a stale server generation\");\n\t\t}\n\t\tconst demand = this.#demands.get(demandKey(serverConnectionId, attachmentId));\n\t\tif (!demand || demand.timer) {\n\t\t\tthrow new Error(\"Session worker request does not match the active attachment\");\n\t\t}\n\t\treturn this.holdRetirement();\n\t}\n\n\tholdRetirement(): () => void {\n\t\tthis.#retirementHolds += 1;\n\t\tlet released = false;\n\t\treturn () => {\n\t\t\tif (released) return;\n\t\t\treleased = true;\n\t\t\tthis.#retirementHolds -= 1;\n\t\t\tthis.#reconcile();\n\t\t};\n\t}\n\n\tsetDemand(serverConnectionId: string, attachmentId: string, attached: boolean): void {\n\t\tif (this.#retiring) throw new Error(\"Session worker is retiring\");\n\t\tif (serverConnectionId !== this.#currentServerConnectionId) {\n\t\t\tthrow new Error(\"Session worker received demand from a stale server generation\");\n\t\t}\n\t\tthis.#demandInitialized = true;\n\t\tif (this.#initialTimer) {\n\t\t\tclearTimeout(this.#initialTimer);\n\t\t\tthis.#initialTimer = undefined;\n\t\t}\n\t\tconst key = demandKey(serverConnectionId, attachmentId);\n\t\tconst previous = this.#demands.get(key);\n\t\tif (previous?.timer) clearTimeout(previous.timer);\n\t\tif (attached) this.#demands.set(key, { serverConnectionId, attachmentId });\n\t\telse this.#demands.delete(key);\n\t\tthis.#reconcile();\n\t}\n\n\toperationStarted(kind: \"run\" | \"compaction\" | \"navigation\", lane: string, operationId: string): void {\n\t\tthis.#activeOperations.add(`${kind}\\0${lane}\\0${operationId}`);\n\t}\n\n\toperationStopped(kind: \"run\" | \"compaction\" | \"navigation\", lane: string, operationId: string): void {\n\t\tthis.#activeOperations.delete(`${kind}\\0${lane}\\0${operationId}`);\n\t\tthis.#reconcile();\n\t}\n\n\tclose(): void {\n\t\tif (this.#initialTimer) clearTimeout(this.#initialTimer);\n\t\tfor (const demand of this.#demands.values()) {\n\t\t\tif (demand.timer) clearTimeout(demand.timer);\n\t\t}\n\t\tthis.#demands.clear();\n\t}\n\n\t#reconcile(): void {\n\t\tif (\n\t\t\tthis.#retiring ||\n\t\t\t!this.#demandInitialized ||\n\t\t\tthis.#retirementHolds !== 0 ||\n\t\t\tthis.#activeOperations.size !== 0 ||\n\t\t\tthis.#demands.size !== 0\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tthis.#retiring = true;\n\t\tthis.#onRetire();\n\t}\n}\n\nconst DEFAULT_INITIAL_DEMAND_GRACE_MS = 10_000;\nconst DEFAULT_ORPHAN_DEMAND_GRACE_MS = 30_000;\nexport const SESSION_WORKER_INITIAL_DEMAND_GRACE_ENV = \"__PI_SESSION_WORKER_INITIAL_DEMAND_GRACE_MS\";\nexport const SESSION_WORKER_ORPHAN_DEMAND_GRACE_ENV = \"__PI_SESSION_WORKER_ORPHAN_DEMAND_GRACE_MS\";\n\nconst CoordinatorInputSchema = Type.Union([\n\tType.Object({\n\t\ttype: Type.Literal(\"peer_registered\"),\n\t\tpeerId: Type.String(),\n\t\tserverConnectionId: Type.Optional(Type.String()),\n\t}),\n\tType.Object({ type: Type.Literal(\"server_connected\"), serverConnectionId: Type.String() }),\n\tType.Object({ type: Type.Literal(\"server_disconnected\"), serverConnectionId: Type.String() }),\n\tType.Object({ type: Type.Literal(\"message\"), from: Type.Literal(\"server\"), payload: Type.Unknown() }),\n]);\ntype CoordinatorInput = Static<typeof CoordinatorInputSchema>;\n\ninterface WorkerControl {\n\treadonly initialServerConnectionId?: string;\n\treadonly messages: AsyncIterable<unknown>;\n\treadonly socket: Socket;\n\tsend(event: SessionWorkerEvent): Promise<void>;\n}\n\nlet failureControl: WorkerControl | undefined;\n\nasync function connectControl(): Promise<WorkerControl> {\n\tconst address = process.env[SESSION_WORKER_CONTROL_ADDRESS_ENV];\n\tconst token = process.env[SESSION_WORKER_CONTROL_TOKEN_ENV];\n\tconst encodedSessionKey = process.env[SESSION_WORKER_SESSION_KEY_ENV];\n\tif (!address || !token || !encodedSessionKey) throw new Error(\"Session worker requires a control address\");\n\tconst peerId = process.env[SESSION_WORKER_PEER_ID_ENV];\n\tif (!peerId) throw new Error(\"Session worker requires a peer ID\");\n\tconst socket = createConnection(address);\n\tawait new Promise<void>((resolve, reject) => {\n\t\tsocket.once(\"connect\", resolve);\n\t\tsocket.once(\"error\", reject);\n\t});\n\tconst messages = createJsonLineMessages(socket);\n\tawait writeJsonLine(socket, { type: \"register_peer\", protocol: COORDINATOR_PROTOCOL_VERSION, peerId });\n\tconst registered = await messages[Symbol.asyncIterator]().next();\n\tif (\n\t\tregistered.done ||\n\t\t!Check(CoordinatorInputSchema, registered.value) ||\n\t\tregistered.value.type !== \"peer_registered\"\n\t) {\n\t\tthrow new Error(\"Coordinator rejected the session worker registration\");\n\t}\n\treturn {\n\t\t...(registered.value.serverConnectionId === undefined\n\t\t\t? {}\n\t\t\t: { initialServerConnectionId: registered.value.serverConnectionId }),\n\t\tmessages,\n\t\tsocket,\n\t\tsend: (event) => writeJsonLine(socket, { type: \"send\", to: \"server\", payload: event }),\n\t};\n}\n\nasync function readCommands(\n\tcontrol: WorkerControl,\n\thandlers: {\n\t\tonShutdown(): void;\n\t\tonDiscovery(): void;\n\t\tonDemand(command: Extract<SessionWorkerCommand, { type: \"session_demand\" }>): Promise<void>;\n\t\tonOperation(command: WorkerOperationRequest): void;\n\t\tonOperationCancel(command: Extract<SessionWorkerCommand, { type: \"operation_cancel\" }>): void;\n\t\tonServerConnected(serverConnectionId: string): void;\n\t\tonServerDisconnected(serverConnectionId: string): void;\n\t},\n): Promise<void> {\n\tfor await (const value of control.messages) {\n\t\tif (!Check(CoordinatorInputSchema, value)) {\n\t\t\tcontrol.socket.destroy(new Error(\"Coordinator sent an invalid worker message\"));\n\t\t\treturn;\n\t\t}\n\t\tconst message: CoordinatorInput = value;\n\t\tif (message.type === \"server_connected\") {\n\t\t\thandlers.onServerConnected(message.serverConnectionId);\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.type === \"server_disconnected\") {\n\t\t\thandlers.onServerDisconnected(message.serverConnectionId);\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.type !== \"message\" || !Check(SessionWorkerCommandSchema, message.payload)) continue;\n\t\tconst command: SessionWorkerCommand = message.payload;\n\t\tif (command.type === \"shutdown\") handlers.onShutdown();\n\t\telse if (command.type === \"discover_workers\") handlers.onDiscovery();\n\t\telse if (command.type === \"session_demand\") await handlers.onDemand(command);\n\t\telse if (command.type === \"operation_cancel\") handlers.onOperationCancel(command);\n\t\telse handlers.onOperation(command);\n\t}\n}\n\nfunction createJsonLineMessages(socket: Socket): AsyncIterable<unknown> {\n\tconst queued: unknown[] = [];\n\tconst waiters: ((value: unknown) => void)[] = [];\n\tlet buffered = \"\";\n\tsocket.setEncoding(\"utf8\");\n\tsocket.on(\"data\", (chunk: string) => {\n\t\tbuffered += chunk;\n\t\tif (Buffer.byteLength(buffered) > MAX_CONTROL_LINE_BYTES) {\n\t\t\tsocket.destroy(new Error(\"Session worker control message is too large\"));\n\t\t\treturn;\n\t\t}\n\t\twhile (true) {\n\t\t\tconst newline = buffered.indexOf(\"\\n\");\n\t\t\tif (newline === -1) return;\n\t\t\tconst line = buffered.slice(0, newline);\n\t\t\tbuffered = buffered.slice(newline + 1);\n\t\t\ttry {\n\t\t\t\tconst value: unknown = JSON.parse(line);\n\t\t\t\tconst waiter = waiters.shift();\n\t\t\t\tif (waiter) waiter(value);\n\t\t\t\telse queued.push(value);\n\t\t\t} catch {\n\t\t\t\tsocket.destroy(new Error(\"Session worker received invalid control JSON\"));\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t});\n\treturn {\n\t\t[Symbol.asyncIterator]() {\n\t\t\treturn {\n\t\t\t\tnext: async () => {\n\t\t\t\t\tconst value = queued.shift() ?? (await new Promise<unknown>((resolve) => waiters.push(resolve)));\n\t\t\t\t\treturn { done: false as const, value };\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n\nfunction writeJsonLine(socket: Socket, message: unknown): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tsocket.write(encodeControlLine(message), (error) => {\n\t\t\tif (error) reject(error);\n\t\t\telse resolve();\n\t\t});\n\t});\n}\n\nfunction toWorkerServiceUpdate(update: ServiceProviderUpdate): ServiceProviderUpdate {\n\tif (!isJsonValue(update)) throw new Error(\"Service produced a non-JSON update\");\n\treturn parseServiceProviderUpdate(update);\n}\n\nfunction demandKey(serverConnectionId: string, attachmentId: string): string {\n\treturn `${serverConnectionId}\\0${attachmentId}`;\n}\n\nfunction sameScope(left: WorkerOperationScope, right: WorkerOperationScope): boolean {\n\treturn left.serverConnectionId === right.serverConnectionId && left.attachmentId === right.attachmentId;\n}\n\nfunction lifecycleDelay(name: string, fallback: number): number {\n\tconst value = process.env[name];\n\tif (value === undefined) return fallback;\n\tconst parsed = Number(value);\n\tif (!Number.isSafeInteger(parsed) || parsed < 0) throw new Error(`${name} must be a non-negative safe integer`);\n\treturn parsed;\n}\n\nasync function closeResources(resources: {\n\tharness?: AgentHarnessInstance;\n\tservices?: SessionWorkerServices;\n\tsession?: Session<JsonlSessionMetadata>;\n\trepo: JsonlSessionRepo;\n\texecutionEnv: NodeExecutionEnv;\n\treleaseOwnership: () => Promise<void>;\n}): Promise<void> {\n\tconst errors: unknown[] = [];\n\ttry {\n\t\tawait resources.services?.dispose();\n\t} catch (error) {\n\t\terrors.push(error);\n\t}\n\ttry {\n\t\tif (resources.harness) await resources.harness.close(TODO_CONTEXT);\n\t\telse await resources.session?.close(TODO_CONTEXT);\n\t} catch (error) {\n\t\terrors.push(error);\n\t}\n\ttry {\n\t\tawait resources.repo.close(TODO_CONTEXT);\n\t} catch (error) {\n\t\terrors.push(error);\n\t}\n\ttry {\n\t\tawait resources.executionEnv.cleanup(TODO_CONTEXT);\n\t} catch (error) {\n\t\terrors.push(error);\n\t}\n\ttry {\n\t\tawait resources.releaseOwnership();\n\t} catch (error) {\n\t\terrors.push(error);\n\t}\n\tif (errors.length === 1) throw errors[0];\n\tif (errors.length > 1) throw new AggregateError(errors, \"Session worker cleanup failed\");\n}\n\nexport type CreateSessionWorkerHarness = (\n\tsession: Session<JsonlSessionMetadata>,\n\toptions: SessionWorkerOptions,\n\texecutionEnv: NodeExecutionEnv,\n) => Promise<SessionWorkerRuntime>;\n\nasync function run(options: SessionWorkerOptions, createHarness: CreateSessionWorkerHarness): Promise<void> {\n\tconst { sessionDir, metadata } = options;\n\tconst sessionId = metadata.id;\n\tconst control = await connectControl();\n\tconst token = process.env[SESSION_WORKER_CONTROL_TOKEN_ENV]!;\n\tconst sessionKey = Buffer.from(process.env[SESSION_WORKER_SESSION_KEY_ENV]!, \"base64url\").toString();\n\tfailureControl = control;\n\tconst pluginManifestPaths = options.pluginManifestPaths;\n\tconst releaseOwnership = await lockfile.lock(metadata.path, {\n\t\trealpath: true,\n\t\tstale: 2_000,\n\t\tupdate: 1_000,\n\t\tretries: { retries: 320, factor: 1, minTimeout: 25, maxTimeout: 25, maxRetryTime: 8_000 },\n\t});\n\tconst executionEnv = new NodeExecutionEnv({ cwd: metadata.cwd });\n\tconst repo = new JsonlSessionRepo({ fileSystem: executionEnv, sessionsRoot: sessionDir });\n\tlet session: Session<JsonlSessionMetadata> | undefined;\n\tlet harness: AgentHarnessInstance | undefined;\n\tlet lane: AgentLane | undefined;\n\tlet services: SessionWorkerServices | undefined;\n\ttry {\n\t\tsession = await repo.open(metadata, TODO_CONTEXT);\n\t\tconst runtime = await createHarness(session, options, executionEnv);\n\t\tharness = runtime.harness;\n\t\tlane = runtime.lane ?? (await harness.lane(\"main\", TODO_CONTEXT));\n\t\tservices = await createSessionWorkerServices({\n\t\t\tlane,\n\t\t\tmodelRuntime: runtime.modelRuntime,\n\t\t\tsettingsManager: runtime.settingsManager,\n\t\t\tfacetLoader: runtime.facetLoader,\n\t\t\tpublish: (scope, subscriptionId, update) =>\n\t\t\t\tcontrol.send({\n\t\t\t\t\ttype: \"service_update\",\n\t\t\t\t\ttoken,\n\t\t\t\t\tsessionKey,\n\t\t\t\t\tscope,\n\t\t\t\t\tsubscriptionId,\n\t\t\t\t\tupdate: toWorkerServiceUpdate(update),\n\t\t\t\t}),\n\t\t});\n\t} catch (error) {\n\t\ttry {\n\t\t\tawait closeResources({ harness, services, session, repo, executionEnv, releaseOwnership });\n\t\t} catch (cleanupError) {\n\t\t\tthrow new AggregateError([error, cleanupError], \"Session worker startup and cleanup failed\");\n\t\t}\n\t\tthrow error;\n\t}\n\n\tconst activeRequests = new Map<\n\t\tstring,\n\t\t{ readonly scope: WorkerOperationScope; readonly cancel: (reason?: unknown) => void }\n\t>();\n\tlet lifecycle: WorkerLifecycle | undefined;\n\tlet removeLifecycleListeners: (() => void)[] = [];\n\tlet closing: Promise<void> | undefined;\n\tconst close = (): Promise<void> => {\n\t\tif (closing) return closing;\n\t\tlifecycle?.close();\n\t\tservices.removeSubscriptions(() => true);\n\t\tfor (const request of activeRequests.values()) request.cancel(new Error(\"Session worker is closing\"));\n\t\tactiveRequests.clear();\n\t\tfor (const remove of removeLifecycleListeners) remove();\n\t\tremoveLifecycleListeners = [];\n\t\tclosing = closeResources({ harness, services, repo, executionEnv, releaseOwnership });\n\t\treturn closing;\n\t};\n\tconst closeAndExit = (): void => {\n\t\tvoid close().then(\n\t\t\t() => process.exit(0),\n\t\t\t(error: unknown) => {\n\t\t\t\tconsole.error(error);\n\t\t\t\tprocess.exit(1);\n\t\t\t},\n\t\t);\n\t};\n\n\tlifecycle = new WorkerLifecycle({\n\t\tinitialServerConnectionId: control.initialServerConnectionId,\n\t\tinitialDemandGraceMs: lifecycleDelay(SESSION_WORKER_INITIAL_DEMAND_GRACE_ENV, DEFAULT_INITIAL_DEMAND_GRACE_MS),\n\t\torphanDemandGraceMs: lifecycleDelay(SESSION_WORKER_ORPHAN_DEMAND_GRACE_ENV, DEFAULT_ORPHAN_DEMAND_GRACE_MS),\n\t\tonRetire: closeAndExit,\n\t});\n\tremoveLifecycleListeners = [\n\t\tharness.events.on(\"run_start\", (event) => lifecycle?.operationStarted(\"run\", event.lane, event.runId)),\n\t\tharness.events.on(\"run_resume\", (event) => lifecycle?.operationStarted(\"run\", event.lane, event.runId)),\n\t\tharness.events.on(\"run_suspend\", (event) => lifecycle?.operationStopped(\"run\", event.lane, event.runId)),\n\t\tharness.events.on(\"run_end\", (event) => lifecycle?.operationStopped(\"run\", event.lane, event.runId)),\n\t\tharness.events.on(\"compaction_start\", (event) =>\n\t\t\tlifecycle?.operationStarted(\"compaction\", event.lane, event.runId),\n\t\t),\n\t\tharness.events.on(\"compaction_end\", (event) =>\n\t\t\tlifecycle?.operationStopped(\"compaction\", event.lane, event.runId),\n\t\t),\n\t\tharness.events.on(\"navigation_start\", (event) =>\n\t\t\tlifecycle?.operationStarted(\"navigation\", event.lane, event.runId),\n\t\t),\n\t\tharness.events.on(\"navigation_end\", (event) =>\n\t\t\tlifecycle?.operationStopped(\"navigation\", event.lane, event.runId),\n\t\t),\n\t\tharness.events.on(\"fault\", closeAndExit),\n\t];\n\n\tconst handleOperation = async (request: WorkerOperationRequest): Promise<void> => {\n\t\tlet releaseRequest = (): void => {};\n\t\tconst cancellable = withCancel(BACKGROUND_CONTEXT);\n\t\ttry {\n\t\t\treleaseRequest = lifecycle!.beginRequest(request.scope.serverConnectionId, request.scope.attachmentId);\n\t\t\tactiveRequests.set(request.requestId, { scope: request.scope, cancel: cancellable.cancel });\n\t\t\tconst result = await services.invoke(request.call, request.scope, cancellable.context);\n\t\t\tif (result !== undefined && !isJsonValue(result)) throw new Error(\"Service produced a non-JSON result\");\n\t\t\tawait control.send({\n\t\t\t\ttype: \"operation_response\",\n\t\t\t\ttoken,\n\t\t\t\tsessionKey,\n\t\t\t\tresponse: {\n\t\t\t\t\ttype: \"operation_result\",\n\t\t\t\t\trequestId: request.requestId,\n\t\t\t\t\tscope: request.scope,\n\t\t\t\t\t...(result === undefined ? {} : { result }),\n\t\t\t\t},\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlet code: RemoteServiceErrorCode | undefined;\n\t\t\tif (error instanceof RemoteServiceError) {\n\t\t\t\tcode = error.code;\n\t\t\t} else if (error instanceof Error && \"code\" in error) {\n\t\t\t\tconst candidate = error.code;\n\t\t\t\tif (Check(RemoteServiceErrorCodeSchema, candidate)) code = candidate;\n\t\t\t}\n\t\t\tawait control.send({\n\t\t\t\ttype: \"operation_response\",\n\t\t\t\ttoken,\n\t\t\t\tsessionKey,\n\t\t\t\tresponse: {\n\t\t\t\t\ttype: \"operation_error\",\n\t\t\t\t\trequestId: request.requestId,\n\t\t\t\t\tscope: request.scope,\n\t\t\t\t\t...(code === undefined ? {} : { code }),\n\t\t\t\t\tmessage: error instanceof Error ? error.message : String(error),\n\t\t\t\t},\n\t\t\t});\n\t\t} finally {\n\t\t\tif (activeRequests.get(request.requestId)?.cancel === cancellable.cancel) {\n\t\t\t\tactiveRequests.delete(request.requestId);\n\t\t\t}\n\t\t\treleaseRequest();\n\t\t}\n\t};\n\n\tlet ready = false;\n\tconst announce = (): void => {\n\t\tif (!ready) return;\n\t\tvoid control\n\t\t\t.send({\n\t\t\t\ttype: \"worker_ready\",\n\t\t\t\ttoken,\n\t\t\t\tsessionKey,\n\t\t\t\tsessionId,\n\t\t\t\tpid: process.pid,\n\t\t\t\tmetadata,\n\t\t\t\tpluginManifestPaths: [...pluginManifestPaths],\n\t\t\t})\n\t\t\t.catch(() => closeAndExit());\n\t};\n\tvoid readCommands(control, {\n\t\tonShutdown: closeAndExit,\n\t\tonDiscovery: announce,\n\t\tonDemand: async (command) => {\n\t\t\tconst releaseRetirement = lifecycle?.holdRetirement() ?? (() => {});\n\t\t\ttry {\n\t\t\t\ttry {\n\t\t\t\t\tif (!command.attached) {\n\t\t\t\t\t\tconst matches = (scope: WorkerOperationScope): boolean =>\n\t\t\t\t\t\t\tscope.serverConnectionId === command.serverConnectionId &&\n\t\t\t\t\t\t\tscope.attachmentId === command.attachmentId;\n\t\t\t\t\t\tservices.removeSubscriptions(matches);\n\t\t\t\t\t}\n\t\t\t\t\tlifecycle?.setDemand(command.serverConnectionId, command.attachmentId, command.attached);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tawait control.send({\n\t\t\t\t\t\ttype: \"demand_rejected\",\n\t\t\t\t\t\ttoken,\n\t\t\t\t\t\tsessionKey,\n\t\t\t\t\t\trequestId: command.requestId,\n\t\t\t\t\t\tmessage: error instanceof Error ? error.message : String(error),\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait control.send({\n\t\t\t\t\ttype: \"demand_applied\",\n\t\t\t\t\ttoken,\n\t\t\t\t\tsessionKey,\n\t\t\t\t\trequestId: command.requestId,\n\t\t\t\t\tattachmentId: command.attachmentId,\n\t\t\t\t\tattached: command.attached,\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\treleaseRetirement();\n\t\t\t}\n\t\t},\n\t\tonOperation: (request) => {\n\t\t\tvoid handleOperation(request).catch(() => closeAndExit());\n\t\t},\n\t\tonOperationCancel: (command) => {\n\t\t\tconst active = activeRequests.get(command.requestId);\n\t\t\tif (active !== undefined && sameScope(active.scope, command.scope)) {\n\t\t\t\tactive.cancel(new DOMException(\"Service operation cancelled\", \"AbortError\"));\n\t\t\t}\n\t\t},\n\t\tonServerConnected: (serverConnectionId) => lifecycle?.serverConnected(serverConnectionId),\n\t\tonServerDisconnected: (serverConnectionId) => {\n\t\t\tconst matches = (scope: WorkerOperationScope): boolean => scope.serverConnectionId === serverConnectionId;\n\t\t\tservices.removeSubscriptions(matches);\n\t\t\tfor (const request of activeRequests.values()) {\n\t\t\t\tif (matches(request.scope)) request.cancel(new Error(\"Server disconnected\"));\n\t\t\t}\n\t\t\tlifecycle?.serverDisconnected(serverConnectionId);\n\t\t},\n\t}).catch(() => closeAndExit());\n\tcontrol.socket.once(\"close\", closeAndExit);\n\tcontrol.socket.once(\"error\", () => closeAndExit());\n\tprocess.once(\"SIGTERM\", closeAndExit);\n\tprocess.once(\"SIGINT\", closeAndExit);\n\n\ttry {\n\t\tready = true;\n\t\tawait control.send({\n\t\t\ttype: \"worker_ready\",\n\t\t\ttoken,\n\t\t\tsessionKey,\n\t\t\tsessionId,\n\t\t\tpid: process.pid,\n\t\t\tmetadata,\n\t\t\tpluginManifestPaths: [...pluginManifestPaths],\n\t\t});\n\t} catch (error) {\n\t\ttry {\n\t\t\tawait close();\n\t\t} catch (cleanupError) {\n\t\t\tthrow new AggregateError([error, cleanupError], \"Session worker readiness and cleanup failed\");\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nexport async function runSessionWorkerWithHarness(\n\targs: readonly string[],\n\tcreateHarness: CreateSessionWorkerHarness,\n): Promise<void> {\n\ttry {\n\t\tif (args.length !== 1) throw new Error(\"Session worker requires one options argument\");\n\t\tlet options: unknown;\n\t\ttry {\n\t\t\toptions = JSON.parse(args[0]!);\n\t\t} catch (error) {\n\t\t\tthrow new Error(\"Session worker received invalid options\", { cause: error });\n\t\t}\n\t\tif (\n\t\t\t!Check(SessionWorkerOptionsSchema, options) ||\n\t\t\t!isAbsolute(options.sessionDir) ||\n\t\t\t!isAbsolute(options.metadata.cwd) ||\n\t\t\t!isAbsolute(options.metadata.path) ||\n\t\t\t(options.provider !== undefined && options.model === undefined)\n\t\t) {\n\t\t\tthrow new Error(\"Session worker received invalid options\");\n\t\t}\n\t\tawait run(options, createHarness);\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconst token = process.env[SESSION_WORKER_CONTROL_TOKEN_ENV];\n\t\tconst encodedSessionKey = process.env[SESSION_WORKER_SESSION_KEY_ENV];\n\t\tif (token && encodedSessionKey) {\n\t\t\tconst sessionKey = Buffer.from(encodedSessionKey, \"base64url\").toString();\n\t\t\tawait failureControl?.send({ type: \"worker_failed\", token, sessionKey, message }).catch(() => {});\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nasync function createCodingAgentHarness(\n\tsession: Session<JsonlSessionMetadata>,\n\toptions: SessionWorkerOptions,\n\texecutionEnv: NodeExecutionEnv,\n): Promise<SessionWorkerRuntime> {\n\tconst modelRuntime = await ModelRuntime.create();\n\tconst settingsManager = SettingsManager.create(session.metadata.cwd);\n\tlet resolved: Awaited<ReturnType<typeof findInitialModel>> | ReturnType<typeof resolveCliModel>;\n\tif (options.model === undefined) {\n\t\tresolved = await findInitialModel({\n\t\t\tscopedModels: [],\n\t\t\tisContinuing: true,\n\t\t\tdefaultProvider: settingsManager.getDefaultProvider(),\n\t\t\tdefaultModelId: settingsManager.getDefaultModel(),\n\t\t\tdefaultThinkingLevel: settingsManager.getDefaultThinkingLevel(),\n\t\t\tmodelRuntime,\n\t\t});\n\t} else {\n\t\tresolved = resolveCliModel({\n\t\t\tcliProvider: options.provider,\n\t\t\tcliModel: options.model,\n\t\t\tmodelRuntime,\n\t\t});\n\t\tif (resolved.error) throw new Error(`Session worker could not resolve model: ${resolved.error}`);\n\t}\n\tif (!resolved.model) throw new Error(\"Session worker could not resolve a model\");\n\tconst tools = [createReadTool(), createWriteTool(), createBashTool()];\n\tconst activeToolNames = tools.map((tool) => tool.name);\n\tconst harness = (\n\t\tawait AgentHarness.create(\n\t\t\t{\n\t\t\t\tsession,\n\t\t\t\tmodels: modelRuntime,\n\t\t\t\tmodel: resolved.model,\n\t\t\t\tthinkingLevel: resolved.thinkingLevel,\n\t\t\t\ttools,\n\t\t\t\tactiveToolNames,\n\t\t\t\ttoolContext: { env: executionEnv },\n\t\t\t\tresources: {},\n\t\t\t},\n\t\t\tTODO_CONTEXT,\n\t\t)\n\t).harness;\n\ttry {\n\t\tconst lane = await harness.lane(\"main\", TODO_CONTEXT);\n\t\tconst currentActiveToolNames = await lane.getActiveTools(TODO_CONTEXT);\n\t\tif (\n\t\t\tcurrentActiveToolNames.length !== activeToolNames.length ||\n\t\t\tcurrentActiveToolNames.some((name, index) => name !== activeToolNames[index])\n\t\t) {\n\t\t\tawait lane.setActiveTools(activeToolNames, TODO_CONTEXT);\n\t\t}\n\t\treturn {\n\t\t\tharness,\n\t\t\tlane,\n\t\t\tmodelRuntime,\n\t\t\tsettingsManager,\n\t\t\tfacetLoader: createSessionPluginFacetLoader(options.pluginManifestPaths),\n\t\t};\n\t} catch (error) {\n\t\ttry {\n\t\t\tawait harness.close(TODO_CONTEXT);\n\t\t} catch (cleanupError) {\n\t\t\tthrow new AggregateError([error, cleanupError], \"Session worker model selection and cleanup failed\");\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nexport function runSessionWorkerProcess(args: readonly string[]): Promise<void> {\n\treturn runSessionWorkerWithHarness(args, createCodingAgentHarness);\n}\n\nif (isDirectInternalProcessEntry(import.meta.url)) {\n\tconst role = consumeInternalProcessRole();\n\tif (role !== \"session-worker\") {\n\t\tthrow new Error(\"Session worker entrypoint requires an internal session-worker invocation\");\n\t}\n\tvoid runSessionWorkerProcess(process.argv.slice(2)).catch(() => process.exit(1));\n}\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=source-resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"source-resolver.d.ts","sourceRoot":"","sources":["../../src/experimental/source-resolver.ts"],"names":[],"mappings":"","sourcesContent":["import { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { registerHooks } from \"node:module\";\nimport { extname, resolve, sep } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\n\n// Node strips TypeScript natively, but it does not apply the workspace source\n// aliases from tsconfig.json. Internal source processes preload this resolver so\n// they cannot silently fall through to stale package dist files.\n\ninterface TsConfig {\n\treadonly compilerOptions?: {\n\t\treadonly paths?: Readonly<Record<string, readonly string[]>>;\n\t};\n}\n\ninterface SourceAlias {\n\treadonly pattern: string;\n\treadonly prefix: string;\n\treadonly suffix: string;\n\treadonly replacements: readonly string[];\n}\n\nconst repositoryRoot = fileURLToPath(new URL(\"../../../..\", import.meta.url));\nconst tsconfigPath = resolve(repositoryRoot, \"tsconfig.json\");\nconst tsconfig = JSON.parse(readFileSync(tsconfigPath, \"utf8\")) as TsConfig;\nconst paths = tsconfig.compilerOptions?.paths;\nif (!paths) throw new Error(`Source runtime requires compilerOptions.paths in ${tsconfigPath}`);\n\nconst aliases: SourceAlias[] = Object.entries(paths)\n\t.filter(([pattern]) => pattern.startsWith(\"@earendil-works/\"))\n\t.map(([pattern, replacements]) => {\n\t\tconst wildcard = pattern.indexOf(\"*\");\n\t\tif (wildcard !== -1 && pattern.indexOf(\"*\", wildcard + 1) !== -1) {\n\t\t\tthrow new Error(`Source runtime does not support multiple wildcards in ${pattern}`);\n\t\t}\n\t\treturn {\n\t\t\tpattern,\n\t\t\tprefix: wildcard === -1 ? pattern : pattern.slice(0, wildcard),\n\t\t\tsuffix: wildcard === -1 ? \"\" : pattern.slice(wildcard + 1),\n\t\t\treplacements,\n\t\t};\n\t})\n\t.sort((left, right) => right.pattern.length - left.pattern.length);\n\nregisterHooks({\n\tresolve(specifier, context, nextResolve) {\n\t\tlet matchedPattern: string | undefined;\n\t\tfor (const alias of aliases) {\n\t\t\tconst wildcard = matchAlias(alias, specifier);\n\t\t\tif (wildcard === undefined) continue;\n\t\t\tmatchedPattern ??= alias.pattern;\n\t\t\tfor (const replacement of alias.replacements) {\n\t\t\t\tconst resolved = resolveSourcePath(replacement.replace(\"*\", wildcard));\n\t\t\t\tif (resolved) return { url: pathToFileURL(resolved).href, shortCircuit: true };\n\t\t\t}\n\t\t}\n\t\tif (matchedPattern) {\n\t\t\tthrow new Error(`Source runtime could not resolve ${specifier} through tsconfig path ${matchedPattern}`);\n\t\t}\n\t\treturn nextResolve(specifier, context);\n\t},\n});\n\nfunction matchAlias(alias: SourceAlias, specifier: string): string | undefined {\n\tif (!alias.pattern.includes(\"*\")) return specifier === alias.pattern ? \"\" : undefined;\n\tif (!specifier.startsWith(alias.prefix) || !specifier.endsWith(alias.suffix)) return undefined;\n\treturn specifier.slice(alias.prefix.length, specifier.length - alias.suffix.length);\n}\n\nfunction resolveSourcePath(replacement: string): string | undefined {\n\tconst basePath = resolve(repositoryRoot, replacement);\n\tconst rootPrefix = repositoryRoot.endsWith(sep) ? repositoryRoot : `${repositoryRoot}${sep}`;\n\tif (!basePath.startsWith(rootPrefix)) return undefined;\n\tconst extension = extname(basePath);\n\tconst sourceExtension =\n\t\textension === \".js\" ? \".ts\" : extension === \".mjs\" ? \".mts\" : extension === \".cjs\" ? \".cts\" : undefined;\n\tconst candidates = sourceExtension\n\t\t? [basePath, `${basePath.slice(0, -extension.length)}${sourceExtension}`]\n\t\t: extension === \".ts\" || extension === \".mts\" || extension === \".cts\" || extension === \".json\"\n\t\t\t? [basePath]\n\t\t\t: [basePath, `${basePath}.ts`, resolve(basePath, \"index.ts\")];\n\tfor (const candidate of candidates) {\n\t\tif (existsSync(candidate) && statSync(candidate).isFile()) return candidate;\n\t}\n\treturn undefined;\n}\n"]}
@@ -1,71 +0,0 @@
1
- import { existsSync, readFileSync, statSync } from "node:fs";
2
- import { registerHooks } from "node:module";
3
- import { extname, resolve, sep } from "node:path";
4
- import { fileURLToPath, pathToFileURL } from "node:url";
5
- const repositoryRoot = fileURLToPath(new URL("../../../..", import.meta.url));
6
- const tsconfigPath = resolve(repositoryRoot, "tsconfig.json");
7
- const tsconfig = JSON.parse(readFileSync(tsconfigPath, "utf8"));
8
- const paths = tsconfig.compilerOptions?.paths;
9
- if (!paths)
10
- throw new Error(`Source runtime requires compilerOptions.paths in ${tsconfigPath}`);
11
- const aliases = Object.entries(paths)
12
- .filter(([pattern]) => pattern.startsWith("@earendil-works/"))
13
- .map(([pattern, replacements]) => {
14
- const wildcard = pattern.indexOf("*");
15
- if (wildcard !== -1 && pattern.indexOf("*", wildcard + 1) !== -1) {
16
- throw new Error(`Source runtime does not support multiple wildcards in ${pattern}`);
17
- }
18
- return {
19
- pattern,
20
- prefix: wildcard === -1 ? pattern : pattern.slice(0, wildcard),
21
- suffix: wildcard === -1 ? "" : pattern.slice(wildcard + 1),
22
- replacements,
23
- };
24
- })
25
- .sort((left, right) => right.pattern.length - left.pattern.length);
26
- registerHooks({
27
- resolve(specifier, context, nextResolve) {
28
- let matchedPattern;
29
- for (const alias of aliases) {
30
- const wildcard = matchAlias(alias, specifier);
31
- if (wildcard === undefined)
32
- continue;
33
- matchedPattern ??= alias.pattern;
34
- for (const replacement of alias.replacements) {
35
- const resolved = resolveSourcePath(replacement.replace("*", wildcard));
36
- if (resolved)
37
- return { url: pathToFileURL(resolved).href, shortCircuit: true };
38
- }
39
- }
40
- if (matchedPattern) {
41
- throw new Error(`Source runtime could not resolve ${specifier} through tsconfig path ${matchedPattern}`);
42
- }
43
- return nextResolve(specifier, context);
44
- },
45
- });
46
- function matchAlias(alias, specifier) {
47
- if (!alias.pattern.includes("*"))
48
- return specifier === alias.pattern ? "" : undefined;
49
- if (!specifier.startsWith(alias.prefix) || !specifier.endsWith(alias.suffix))
50
- return undefined;
51
- return specifier.slice(alias.prefix.length, specifier.length - alias.suffix.length);
52
- }
53
- function resolveSourcePath(replacement) {
54
- const basePath = resolve(repositoryRoot, replacement);
55
- const rootPrefix = repositoryRoot.endsWith(sep) ? repositoryRoot : `${repositoryRoot}${sep}`;
56
- if (!basePath.startsWith(rootPrefix))
57
- return undefined;
58
- const extension = extname(basePath);
59
- const sourceExtension = extension === ".js" ? ".ts" : extension === ".mjs" ? ".mts" : extension === ".cjs" ? ".cts" : undefined;
60
- const candidates = sourceExtension
61
- ? [basePath, `${basePath.slice(0, -extension.length)}${sourceExtension}`]
62
- : extension === ".ts" || extension === ".mts" || extension === ".cts" || extension === ".json"
63
- ? [basePath]
64
- : [basePath, `${basePath}.ts`, resolve(basePath, "index.ts")];
65
- for (const candidate of candidates) {
66
- if (existsSync(candidate) && statSync(candidate).isFile())
67
- return candidate;
68
- }
69
- return undefined;
70
- }
71
- //# sourceMappingURL=source-resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"source-resolver.js","sourceRoot":"","sources":["../../src/experimental/source-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { registerHooks } from \"node:module\";\nimport { extname, resolve, sep } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\n\n// Node strips TypeScript natively, but it does not apply the workspace source\n// aliases from tsconfig.json. Internal source processes preload this resolver so\n// they cannot silently fall through to stale package dist files.\n\ninterface TsConfig {\n\treadonly compilerOptions?: {\n\t\treadonly paths?: Readonly<Record<string, readonly string[]>>;\n\t};\n}\n\ninterface SourceAlias {\n\treadonly pattern: string;\n\treadonly prefix: string;\n\treadonly suffix: string;\n\treadonly replacements: readonly string[];\n}\n\nconst repositoryRoot = fileURLToPath(new URL(\"../../../..\", import.meta.url));\nconst tsconfigPath = resolve(repositoryRoot, \"tsconfig.json\");\nconst tsconfig = JSON.parse(readFileSync(tsconfigPath, \"utf8\")) as TsConfig;\nconst paths = tsconfig.compilerOptions?.paths;\nif (!paths) throw new Error(`Source runtime requires compilerOptions.paths in ${tsconfigPath}`);\n\nconst aliases: SourceAlias[] = Object.entries(paths)\n\t.filter(([pattern]) => pattern.startsWith(\"@earendil-works/\"))\n\t.map(([pattern, replacements]) => {\n\t\tconst wildcard = pattern.indexOf(\"*\");\n\t\tif (wildcard !== -1 && pattern.indexOf(\"*\", wildcard + 1) !== -1) {\n\t\t\tthrow new Error(`Source runtime does not support multiple wildcards in ${pattern}`);\n\t\t}\n\t\treturn {\n\t\t\tpattern,\n\t\t\tprefix: wildcard === -1 ? pattern : pattern.slice(0, wildcard),\n\t\t\tsuffix: wildcard === -1 ? \"\" : pattern.slice(wildcard + 1),\n\t\t\treplacements,\n\t\t};\n\t})\n\t.sort((left, right) => right.pattern.length - left.pattern.length);\n\nregisterHooks({\n\tresolve(specifier, context, nextResolve) {\n\t\tlet matchedPattern: string | undefined;\n\t\tfor (const alias of aliases) {\n\t\t\tconst wildcard = matchAlias(alias, specifier);\n\t\t\tif (wildcard === undefined) continue;\n\t\t\tmatchedPattern ??= alias.pattern;\n\t\t\tfor (const replacement of alias.replacements) {\n\t\t\t\tconst resolved = resolveSourcePath(replacement.replace(\"*\", wildcard));\n\t\t\t\tif (resolved) return { url: pathToFileURL(resolved).href, shortCircuit: true };\n\t\t\t}\n\t\t}\n\t\tif (matchedPattern) {\n\t\t\tthrow new Error(`Source runtime could not resolve ${specifier} through tsconfig path ${matchedPattern}`);\n\t\t}\n\t\treturn nextResolve(specifier, context);\n\t},\n});\n\nfunction matchAlias(alias: SourceAlias, specifier: string): string | undefined {\n\tif (!alias.pattern.includes(\"*\")) return specifier === alias.pattern ? \"\" : undefined;\n\tif (!specifier.startsWith(alias.prefix) || !specifier.endsWith(alias.suffix)) return undefined;\n\treturn specifier.slice(alias.prefix.length, specifier.length - alias.suffix.length);\n}\n\nfunction resolveSourcePath(replacement: string): string | undefined {\n\tconst basePath = resolve(repositoryRoot, replacement);\n\tconst rootPrefix = repositoryRoot.endsWith(sep) ? repositoryRoot : `${repositoryRoot}${sep}`;\n\tif (!basePath.startsWith(rootPrefix)) return undefined;\n\tconst extension = extname(basePath);\n\tconst sourceExtension =\n\t\textension === \".js\" ? \".ts\" : extension === \".mjs\" ? \".mts\" : extension === \".cjs\" ? \".cts\" : undefined;\n\tconst candidates = sourceExtension\n\t\t? [basePath, `${basePath.slice(0, -extension.length)}${sourceExtension}`]\n\t\t: extension === \".ts\" || extension === \".mts\" || extension === \".cts\" || extension === \".json\"\n\t\t\t? [basePath]\n\t\t\t: [basePath, `${basePath}.ts`, resolve(basePath, \"index.ts\")];\n\tfor (const candidate of candidates) {\n\t\tif (existsSync(candidate) && statSync(candidate).isFile()) return candidate;\n\t}\n\treturn undefined;\n}\n"]}