@owlmeans/viable-sdk 0.1.18-rc.43 → 0.1.18-rc.45

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 (294) hide show
  1. package/README.md +3 -3
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/viable-sdk/SKILL.md +37 -37
  4. package/build/api/index.d.ts +2 -0
  5. package/build/api/index.d.ts.map +1 -1
  6. package/build/api/index.js +1 -0
  7. package/build/api/index.js.map +1 -1
  8. package/build/api/remote.d.ts +0 -10
  9. package/build/api/remote.d.ts.map +1 -1
  10. package/build/api/remote.js +2 -37
  11. package/build/api/remote.js.map +1 -1
  12. package/build/api/transport/types.d.ts +14 -0
  13. package/build/api/transport/types.d.ts.map +1 -0
  14. package/build/api/transport/types.js +2 -0
  15. package/build/api/transport/types.js.map +1 -0
  16. package/build/api/transport.d.ts +4 -0
  17. package/build/api/transport.d.ts.map +1 -0
  18. package/build/api/transport.js +32 -0
  19. package/build/api/transport.js.map +1 -0
  20. package/build/executor/boot-check.js +10 -10
  21. package/build/executor/boot-check.js.map +1 -1
  22. package/build/executor/consts.local.d.ts +3 -0
  23. package/build/executor/consts.local.d.ts.map +1 -1
  24. package/build/executor/consts.local.js +4 -1
  25. package/build/executor/consts.local.js.map +1 -1
  26. package/build/executor/env/types.d.ts +40 -0
  27. package/build/executor/env/types.d.ts.map +1 -0
  28. package/build/executor/env/types.js +2 -0
  29. package/build/executor/env/types.js.map +1 -0
  30. package/build/executor/env.d.ts +2 -24
  31. package/build/executor/env.d.ts.map +1 -1
  32. package/build/executor/env.js +36 -54
  33. package/build/executor/env.js.map +1 -1
  34. package/build/executor/errors.js +2 -2
  35. package/build/executor/errors.js.map +1 -1
  36. package/build/executor/files/types.d.ts +106 -0
  37. package/build/executor/files/types.d.ts.map +1 -0
  38. package/build/executor/files/types.js +2 -0
  39. package/build/executor/files/types.js.map +1 -0
  40. package/build/executor/files.d.ts +2 -98
  41. package/build/executor/files.d.ts.map +1 -1
  42. package/build/executor/files.js +54 -123
  43. package/build/executor/files.js.map +1 -1
  44. package/build/executor/git/types.d.ts +19 -0
  45. package/build/executor/git/types.d.ts.map +1 -0
  46. package/build/executor/git/types.js +2 -0
  47. package/build/executor/git/types.js.map +1 -0
  48. package/build/executor/git.d.ts +4 -17
  49. package/build/executor/git.d.ts.map +1 -1
  50. package/build/executor/git.js +204 -199
  51. package/build/executor/git.js.map +1 -1
  52. package/build/executor/glob/types.d.ts +12 -0
  53. package/build/executor/glob/types.d.ts.map +1 -0
  54. package/build/executor/glob/types.js +2 -0
  55. package/build/executor/glob/types.js.map +1 -0
  56. package/build/executor/glob.d.ts +3 -16
  57. package/build/executor/glob.d.ts.map +1 -1
  58. package/build/executor/glob.js +7 -12
  59. package/build/executor/glob.js.map +1 -1
  60. package/build/executor/health/types.d.ts +39 -0
  61. package/build/executor/health/types.d.ts.map +1 -0
  62. package/build/executor/health/types.js +2 -0
  63. package/build/executor/health/types.js.map +1 -0
  64. package/build/executor/health.d.ts +8 -25
  65. package/build/executor/health.d.ts.map +1 -1
  66. package/build/executor/health.js +70 -91
  67. package/build/executor/health.js.map +1 -1
  68. package/build/executor/index.d.ts +9 -1
  69. package/build/executor/index.d.ts.map +1 -1
  70. package/build/executor/index.js +20 -20
  71. package/build/executor/index.js.map +1 -1
  72. package/build/executor/integrity/types.d.ts +25 -0
  73. package/build/executor/integrity/types.d.ts.map +1 -0
  74. package/build/executor/integrity/types.js +2 -0
  75. package/build/executor/integrity/types.js.map +1 -0
  76. package/build/executor/integrity.d.ts +5 -15
  77. package/build/executor/integrity.d.ts.map +1 -1
  78. package/build/executor/integrity.js +27 -30
  79. package/build/executor/integrity.js.map +1 -1
  80. package/build/executor/layout/types.d.ts +69 -0
  81. package/build/executor/layout/types.d.ts.map +1 -0
  82. package/build/executor/layout/types.js +2 -0
  83. package/build/executor/layout/types.js.map +1 -0
  84. package/build/executor/layout.d.ts +9 -56
  85. package/build/executor/layout.d.ts.map +1 -1
  86. package/build/executor/layout.js +35 -82
  87. package/build/executor/layout.js.map +1 -1
  88. package/build/executor/shell/types.d.ts +75 -0
  89. package/build/executor/shell/types.d.ts.map +1 -0
  90. package/build/executor/shell/types.js +2 -0
  91. package/build/executor/shell/types.js.map +1 -0
  92. package/build/executor/shell.d.ts +4 -67
  93. package/build/executor/shell.d.ts.map +1 -1
  94. package/build/executor/shell.js +34 -77
  95. package/build/executor/shell.js.map +1 -1
  96. package/build/executor/spawn/types.d.ts +98 -0
  97. package/build/executor/spawn/types.d.ts.map +1 -0
  98. package/build/executor/spawn/types.js +2 -0
  99. package/build/executor/spawn/types.js.map +1 -0
  100. package/build/executor/spawn.d.ts +3 -88
  101. package/build/executor/spawn.d.ts.map +1 -1
  102. package/build/executor/spawn.js +190 -257
  103. package/build/executor/spawn.js.map +1 -1
  104. package/build/executor/types.d.ts +1 -5
  105. package/build/executor/types.d.ts.map +1 -1
  106. package/build/harness/consts.local.d.ts +16 -1
  107. package/build/harness/consts.local.d.ts.map +1 -1
  108. package/build/harness/consts.local.js +17 -1
  109. package/build/harness/consts.local.js.map +1 -1
  110. package/build/harness/helper.d.ts +4 -0
  111. package/build/harness/helper.d.ts.map +1 -0
  112. package/build/harness/helper.js +71 -0
  113. package/build/harness/helper.js.map +1 -0
  114. package/build/harness/index.d.ts +2 -18
  115. package/build/harness/index.d.ts.map +1 -1
  116. package/build/harness/index.js +2 -80
  117. package/build/harness/index.js.map +1 -1
  118. package/build/harness/templates.d.ts.map +1 -1
  119. package/build/harness/templates.js +2 -17
  120. package/build/harness/templates.js.map +1 -1
  121. package/build/harness/types.d.ts +18 -0
  122. package/build/harness/types.d.ts.map +1 -1
  123. package/build/index.d.ts +9 -0
  124. package/build/index.d.ts.map +1 -1
  125. package/build/index.js +3 -0
  126. package/build/index.js.map +1 -1
  127. package/build/project/dotenv/types.d.ts +39 -0
  128. package/build/project/dotenv/types.d.ts.map +1 -0
  129. package/build/project/dotenv/types.js +2 -0
  130. package/build/project/dotenv/types.js.map +1 -0
  131. package/build/project/dotenv.d.ts +4 -0
  132. package/build/project/dotenv.d.ts.map +1 -0
  133. package/build/project/dotenv.js +56 -0
  134. package/build/project/dotenv.js.map +1 -0
  135. package/build/project/env/types.d.ts +40 -0
  136. package/build/project/env/types.d.ts.map +1 -0
  137. package/build/project/env/types.js +2 -0
  138. package/build/project/env/types.js.map +1 -0
  139. package/build/project/env.d.ts +2 -77
  140. package/build/project/env.d.ts.map +1 -1
  141. package/build/project/env.js +62 -197
  142. package/build/project/env.js.map +1 -1
  143. package/build/project/marker/types.d.ts +33 -0
  144. package/build/project/marker/types.d.ts.map +1 -0
  145. package/build/project/marker/types.js +2 -0
  146. package/build/project/marker/types.js.map +1 -0
  147. package/build/project/marker.d.ts +3 -20
  148. package/build/project/marker.d.ts.map +1 -1
  149. package/build/project/marker.js +36 -46
  150. package/build/project/marker.js.map +1 -1
  151. package/build/project/probe/types.d.ts +22 -0
  152. package/build/project/probe/types.d.ts.map +1 -0
  153. package/build/project/probe/types.js +2 -0
  154. package/build/project/probe/types.js.map +1 -0
  155. package/build/project/probe.d.ts +4 -0
  156. package/build/project/probe.d.ts.map +1 -0
  157. package/build/project/probe.js +39 -0
  158. package/build/project/probe.js.map +1 -0
  159. package/build/project/report/types.d.ts +18 -0
  160. package/build/project/report/types.d.ts.map +1 -0
  161. package/build/project/report/types.js +2 -0
  162. package/build/project/report/types.js.map +1 -0
  163. package/build/project/report.d.ts +7 -0
  164. package/build/project/report.d.ts.map +1 -0
  165. package/build/project/report.js +68 -0
  166. package/build/project/report.js.map +1 -0
  167. package/build/project/setup/types.d.ts +32 -0
  168. package/build/project/setup/types.d.ts.map +1 -0
  169. package/build/project/setup/types.js +2 -0
  170. package/build/project/setup/types.js.map +1 -0
  171. package/build/project/setup.d.ts +3 -29
  172. package/build/project/setup.d.ts.map +1 -1
  173. package/build/project/setup.js +102 -175
  174. package/build/project/setup.js.map +1 -1
  175. package/build/run/index.d.ts +9 -23
  176. package/build/run/index.d.ts.map +1 -1
  177. package/build/run/index.js +9 -147
  178. package/build/run/index.js.map +1 -1
  179. package/build/run/local/types.d.ts +39 -0
  180. package/build/run/local/types.d.ts.map +1 -0
  181. package/build/run/local/types.js +2 -0
  182. package/build/run/local/types.js.map +1 -0
  183. package/build/run/local.d.ts +3 -0
  184. package/build/run/local.d.ts.map +1 -0
  185. package/build/run/local.js +130 -0
  186. package/build/run/local.js.map +1 -0
  187. package/build/run/process/types.d.ts +15 -0
  188. package/build/run/process/types.d.ts.map +1 -0
  189. package/build/run/process/types.js +2 -0
  190. package/build/run/process/types.js.map +1 -0
  191. package/build/run/process.d.ts +4 -0
  192. package/build/run/process.d.ts.map +1 -0
  193. package/build/run/process.js +20 -0
  194. package/build/run/process.js.map +1 -0
  195. package/build/run/state/types.d.ts +35 -0
  196. package/build/run/state/types.d.ts.map +1 -0
  197. package/build/run/state/types.js +2 -0
  198. package/build/run/state/types.js.map +1 -0
  199. package/build/run/state.d.ts +10 -37
  200. package/build/run/state.d.ts.map +1 -1
  201. package/build/run/state.js +89 -127
  202. package/build/run/state.js.map +1 -1
  203. package/build/run/types.d.ts +1 -1
  204. package/build/session/index.d.ts.map +1 -1
  205. package/build/session/index.js +6 -5
  206. package/build/session/index.js.map +1 -1
  207. package/build/task/envelope/types.d.ts +29 -0
  208. package/build/task/envelope/types.d.ts.map +1 -0
  209. package/build/task/envelope/types.js +2 -0
  210. package/build/task/envelope/types.js.map +1 -0
  211. package/build/task/envelope.d.ts +3 -23
  212. package/build/task/envelope.d.ts.map +1 -1
  213. package/build/task/envelope.js +101 -117
  214. package/build/task/envelope.js.map +1 -1
  215. package/build/task/index.d.ts +2 -0
  216. package/build/task/index.d.ts.map +1 -1
  217. package/build/task/index.js.map +1 -1
  218. package/build/task/inquiry/types.d.ts +38 -0
  219. package/build/task/inquiry/types.d.ts.map +1 -0
  220. package/build/task/inquiry/types.js +2 -0
  221. package/build/task/inquiry/types.js.map +1 -0
  222. package/build/task/inquiry.d.ts +3 -32
  223. package/build/task/inquiry.d.ts.map +1 -1
  224. package/build/task/inquiry.js +118 -143
  225. package/build/task/inquiry.js.map +1 -1
  226. package/build/tools/catalogue/types.d.ts +8 -0
  227. package/build/tools/catalogue/types.d.ts.map +1 -0
  228. package/build/tools/catalogue/types.js +2 -0
  229. package/build/tools/catalogue/types.js.map +1 -0
  230. package/build/tools/catalogue.d.ts +5 -3
  231. package/build/tools/catalogue.d.ts.map +1 -1
  232. package/build/tools/catalogue.js +112 -105
  233. package/build/tools/catalogue.js.map +1 -1
  234. package/build/tools/host/types.d.ts +37 -0
  235. package/build/tools/host/types.d.ts.map +1 -0
  236. package/build/tools/host/types.js +2 -0
  237. package/build/tools/host/types.js.map +1 -0
  238. package/build/tools/host.d.ts +4 -0
  239. package/build/tools/host.d.ts.map +1 -0
  240. package/build/tools/host.js +13 -0
  241. package/build/tools/host.js.map +1 -0
  242. package/build/tools/index.d.ts +7 -1
  243. package/build/tools/index.d.ts.map +1 -1
  244. package/build/tools/index.js +1 -1
  245. package/build/tools/index.js.map +1 -1
  246. package/build/tools/kits/types.d.ts +12 -0
  247. package/build/tools/kits/types.d.ts.map +1 -0
  248. package/build/tools/kits/types.js +2 -0
  249. package/build/tools/kits/types.js.map +1 -0
  250. package/build/tools/kits.d.ts +3 -3
  251. package/build/tools/kits.d.ts.map +1 -1
  252. package/build/tools/kits.js +30 -26
  253. package/build/tools/kits.js.map +1 -1
  254. package/build/tools/mcp.js +10 -10
  255. package/build/tools/mcp.js.map +1 -1
  256. package/build/tools/platform.js +2 -2
  257. package/build/tools/platform.js.map +1 -1
  258. package/build/tools/refusal/types.d.ts +82 -0
  259. package/build/tools/refusal/types.d.ts.map +1 -0
  260. package/build/tools/refusal/types.js +2 -0
  261. package/build/tools/refusal/types.js.map +1 -0
  262. package/build/tools/refusal.d.ts +3 -78
  263. package/build/tools/refusal.d.ts.map +1 -1
  264. package/build/tools/refusal.js +518 -580
  265. package/build/tools/refusal.js.map +1 -1
  266. package/build/tools/settings/types.d.ts +32 -0
  267. package/build/tools/settings/types.d.ts.map +1 -0
  268. package/build/tools/settings/types.js +2 -0
  269. package/build/tools/settings/types.js.map +1 -0
  270. package/build/tools/settings.d.ts +3 -28
  271. package/build/tools/settings.d.ts.map +1 -1
  272. package/build/tools/settings.js +40 -58
  273. package/build/tools/settings.js.map +1 -1
  274. package/build/tools/status/types.d.ts +14 -0
  275. package/build/tools/status/types.d.ts.map +1 -0
  276. package/build/tools/status/types.js +2 -0
  277. package/build/tools/status/types.js.map +1 -0
  278. package/build/tools/status.d.ts +3 -6
  279. package/build/tools/status.d.ts.map +1 -1
  280. package/build/tools/status.js +105 -101
  281. package/build/tools/status.js.map +1 -1
  282. package/build/tools/stories/types.d.ts +32 -0
  283. package/build/tools/stories/types.d.ts.map +1 -0
  284. package/build/tools/stories/types.js +2 -0
  285. package/build/tools/stories/types.js.map +1 -0
  286. package/build/tools/stories.d.ts +6 -27
  287. package/build/tools/stories.d.ts.map +1 -1
  288. package/build/tools/stories.js +56 -71
  289. package/build/tools/stories.js.map +1 -1
  290. package/package.json +19 -19
  291. package/build/tools/utils.d.ts +0 -31
  292. package/build/tools/utils.d.ts.map +0 -1
  293. package/build/tools/utils.js +0 -31
  294. package/build/tools/utils.js.map +0 -1
package/README.md CHANGED
@@ -63,7 +63,7 @@ answers them, model tasks queue for the parent agent.
63
63
  sixty. Anything that takes minutes is a JOB: it returns at once and is polled. A tool that blocked
64
64
  would be reported to the user as a hung server rather than as a slow platform.
65
65
 
66
- **A tool that cannot work in a mode is hidden, not failing.** `visibleTools(host)` is the whole
66
+ **A tool that cannot work in a mode is hidden, not failing.** `catalogueHelper.visibleTools(host)` is the whole
67
67
  catalogue a parent sees, and it is exactly the set of things that work for it. A tool offered and
68
68
  then refused is one an agent tries once and remembers as broken.
69
69
 
@@ -75,7 +75,7 @@ throughput problem, it is a corrupted tree.
75
75
  answer is handed everything still outstanding, including what it had already answered. Re-running a build
76
76
  because an acknowledgement was lost is exactly the cost that cache avoids.
77
77
 
78
- **A malformed model-task answer is refused locally.** `parseTaskResult` checks the answer against
78
+ **A malformed model-task answer is refused locally.** `makeTaskEnvelopeModel(task).parseTaskResult` checks the answer against
79
79
  the task before the platform ever sees it — with the subagent's context still open, so the parent
80
80
  can retry immediately. A malformed answer that reached the platform would cost a whole new task, a
81
81
  new subagent and another wait.
@@ -96,7 +96,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
96
96
  your project's skill store (`.agents/skills/`):
97
97
 
98
98
  ```sh
99
- npx @owlmeans/agent-skills@^0.1.18-rc.48
99
+ npx @owlmeans/agent-skills@^0.1.18-rc.49
100
100
  ```
101
101
 
102
102
  The embedded files are version-matched to this package release. Do not edit them
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/viable-sdk",
4
- "version": "0.1.18-rc.43",
5
- "generatedAt": "2026-10-05T08:32:19.089Z",
4
+ "version": "0.1.18-rc.45",
5
+ "generatedAt": "2026-10-05T21:03:06.364Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -8,7 +8,7 @@ user-invocable: false
8
8
  # @owlmeans/viable-sdk
9
9
 
10
10
  **Layer:** Tooling (Node/Bun; not a browser or React package)
11
- **Install:** `"@owlmeans/viable-sdk": "^0.1.18-rc.43"` in `dependencies`
11
+ **Install:** `"@owlmeans/viable-sdk": "^0.1.18-rc.45"` in `dependencies`
12
12
  **Subpaths:** `.` · `./executor` · `./run` · `./tools` · `./task` · `./harness`
13
13
  **Contracts:** `@owlmeans/viable-common` (`./connect`, `./slot`, `./integrity`, and the planning
14
14
  vocabulary — story type and story flow) and `@owlmeans/planning` (the planning protocol tree
@@ -27,18 +27,18 @@ machine, deliver its model calls to the parent agent, and run the generated appl
27
27
  | `makeSdkContext({ apiUrl, token, service?, onRejected? })` | A client context authenticated by one token — a literal or a thunk — with the connector protocols and the planning tree bound and the planning client registered |
28
28
  | `makeRemoteConnectorApi(context)` | `ConnectorApi` over HTTP; its `planning` is the context's planning client facade |
29
29
  | `openSession(opts)` → `SessionRuntime` | One attached session: the operation loop, the task queue, `stats` |
30
- | `renderTaskEnvelope(task, { harness })` · `parseTaskResult(task, raw)` | What the parent agent is told; what its answer is checked against |
30
+ | `makeTaskEnvelopeModel(task)` — `.renderTaskEnvelope({ harness })` · `.parseTaskResult(raw)` | What the parent agent is told; what its answer is checked against |
31
31
  | `makeModelTaskDriver({ models })` · `TaskDriver` | A reference parent agent backed by a chat model (tests, CLIs) |
32
- | `installHarness(dir, harness, opts?)` · `describeHarness(harness)` · `WORKING_RULE` | Set a coding agent up; preview it first |
33
- | `catalogue` · `visibleTools(host)` · `toolByName` · `registerCatalogue(server, deps)` · `serverInstructions({ host })` | The tools and how they reach an MCP server |
34
- | `renderProjectStatus`, `renderStoryStatus(status, { landing? })`, `renderPipelineStatus`, `conversionNext` | Domain status as concise lines ending in the next valid action |
35
- | `resolveStory(deps, projectId, ref)` · `storyQuery(projectId, filter?)` · `renderStories(items, page, total)` · `STORY_ORDER` · `isLandingStory(card)` · `LANDING_MARK` · `LANDING_NOTE` | The story tools' reading of planning cards |
36
- | `PROJECT_SETTINGS` · `projectSettingOf(key)` · `settingsPatch(args)` · `renderProjectSettings(projectId, settings)` · `settingsReach(target)` | The project-settings tools: each setting's label and rule, the patch a call asks for, the rendering |
32
+ | `harnessHelper` — `.installHarness(dir, harness, opts?)` · `.describeHarness(harness)`; `WORKING_RULE` | Set a coding agent up; preview it first |
33
+ | `catalogue` · `catalogueHelper` (`.visibleTools(host)` · `.toolByName`) · `registerCatalogue(server, deps)` · `serverInstructions({ host })` | The tools and how they reach an MCP server |
34
+ | `statusTextHelper` — `.renderProjectStatus`, `.renderStoryStatus(status, { landing? })`, `.renderPipelineStatus`, `.conversionNext` | Domain status as concise lines ending in the next valid action |
35
+ | `storyHelper` — `.resolveStory(deps, projectId, ref)` · `.storyQuery(projectId, filter?)` · `.renderStories(items, page, total)` · `.isLandingStory(card)`; `STORY_ORDER` · `LANDING_MARK` · `LANDING_NOTE` | The story tools' reading of planning cards |
36
+ | `PROJECT_SETTINGS` · `settingsHelper` — `.projectSettingOf(key)` · `.settingsPatch(args)` · `.renderProjectSettings(projectId, settings)` · `.settingsReach(target)` | The project-settings tools: each setting's label and rule, the patch a call asks for, the rendering |
37
37
  | `PLATFORM_CATALOGUE` (`pipelines`, `features`, `capabilities`) · `renderPlatform(catalogue, host)` · `GENERATED_SUMMARY` | What `describe_platform` renders, and the one-sentence product summary `describe_capabilities` ends with |
38
- | `ToolHostKind` (`Stdio`/`Http`) · `ToolHost` · `ToolDeps` · `anyHost`/`localTarget`/`cloudTarget`/`withExecutor`/`delegatedLlm`/`sessionCapable`/`performsModelTasks` | The host description and the availability predicates |
39
- | `./executor`: `makeLocalSlotExecutor(dir, opts?)`, `createLocalFileHelper`, `createLocalShellHelper`, `dispatchGitCommand`, `verifyTarget`/`forgetIntegrity`, `targetPaths`/`apiPath`/`webPath`/`workerPath`, `backendEnv`/`frontendEnv`, `classifyTargetHealth`/`readTargetHealth`, `runBootCheck`, `confineToProject`, the spawn helpers | The publisher's workload, on somebody's laptop |
40
- | `./run`: `runLocal`, `stopLocal`, `localStatus`, `createLocalServer`, `startApi`/`startWorker`/`restartApi`/`stopProcess`, `readRun`/`writeRun`/`clearRun` | Building and running the generated app locally |
41
- | `readMarker`/`writeMarker`/`discoverProject`/`isViableTree` · `readEnv`/`writeEnv`/`envStatus`/`replaceManagedBlock` | The `.viable/connect.json` marker and the managed `.env` block |
38
+ | `ToolHostKind` (`Stdio`/`Http`) · `ToolHost` · `ToolDeps` · `toolHostHelper` (`anyHost`/`localTarget`/`cloudTarget`/`withExecutor`/`delegatedLlm`/`sessionCapable`/`performsModelTasks`) | The host description and the availability predicates |
39
+ | `./executor`: `makeLocalSlotExecutor(dir, opts?)`, `createLocalFileHelper`, `createLocalShellHelper`, `makeLocalGitHelper(dir).dispatchGitCommand`, `integrityHelper` (`verifyTarget`/`forgetIntegrity`), `makeLayoutHelper(dir)` (`targetPaths`/`apiPath`/`webPath`/`workerPath`), `makeTargetEnvHelper(dir)` (`backendEnv`/`frontendEnv`), `healthHelper` (`classifyTargetHealth`/`readTargetHealth`), `runBootCheck`, `confineToProject`, `spawnHelper` | The publisher's workload, on somebody's laptop |
40
+ | `./run`: `makeLocalRunHelper(dir)` (`runLocal`, `stopLocal`, `localStatus`), `createLocalServer`, `makeRunStateHelper(dir)` (`startApi`/`startWorker`/`restartApi`, `readRun`/`writeRun`/`clearRun`), `runProcessHelper.stopProcess` | Building and running the generated app locally |
41
+ | `makeMarkerHelper(dir)` (`readMarker`/`writeMarker`/`discoverProject`/`isViableTree`) · `makeProjectEnvHelper(dir)` (`readEnv`/`writeEnv`/`envStatus`) · `dotenvHelper.replaceManagedBlock` | The `.viable/connect.json` marker and the managed `.env` block |
42
42
  | `SdkError`, `SdkAuthError`, `SdkMisconfigured`, `SdkUnsupported` | Registered `ResilientError` classes |
43
43
  | `ENV_TOKEN`, `ENV_API_URL`, `ENV_MCP_URL`, `ENV_TARGET`, `ENV_LLM`, `ENV_HARNESS`, `ENV_PROJECT_DIR` · `DEFAULT_MCP_URL` · `resolveMcpUrl(values)` · `TOOL_DEADLINE_MS` (45 s) · `COMMIT_WAIT_MS` (20 s) · `COMMIT_POLL_SEC` · `STORY_PAGE_SIZE` · `NEXT_TASK_WAIT_MS` · `PULL_WAIT_MS` | Configuration and deadlines |
44
44
 
@@ -112,7 +112,7 @@ project's inference settings are not a connector call: a person sets them in the
112
112
  the platform's own API. A member is added together with the route in `connectProtocols` and its
113
113
  `connectRef` entry — never one without the others.
114
114
 
115
- ## A SESSION belongs to a host that stays; `sessionCapable` is what says so
115
+ ## A SESSION belongs to a host that stays; `toolHostHelper.sessionCapable` is what says so
116
116
 
117
117
  A session is a connector ATTACHED — a process that drains the project's operations and holds a model
118
118
  task until its answer comes back. The URL-configured host answers one request and forgets, so
@@ -122,7 +122,7 @@ legitimately holding it**, and be abandoned before the first operation was deliv
122
122
  So `ensureSession` — what `confirm_project`, `reinitialize_project`, `develop_story`,
123
123
  `modify_project` and `resume_pipeline` call before returning their job, and `apply_planning_kit`
124
124
  before its write — opens one only on a
125
- `sessionCapable` host, and `next_task`/`submit_task_result` are available on `performsModelTasks`
125
+ `toolHostHelper.sessionCapable` host, and `next_task`/`submit_task_result` are available on `.performsModelTasks`
126
126
  (delegated **and** session-capable) rather than on the account setting alone. `serverInstructions`
127
127
  reads the same predicate: a parent told to call `next_task` when the tool is not in its list is a
128
128
  parent that waits for a run nobody will advance. A host that cannot serve the delegated mode says so
@@ -134,9 +134,9 @@ leaves the reader with nothing to do about it.
134
134
 
135
135
  ## A tool that cannot work in a mode is HIDDEN, not failing
136
136
 
137
- `ToolDefinition.availability` and `visibleTools(host)` decide the catalogue a parent actually sees. A
137
+ `ToolDefinition.availability` and `catalogueHelper.visibleTools(host)` decide the catalogue a parent actually sees. A
138
138
  tool a host cannot serve is a tool the parent tries once, is refused, and remembers as broken — so
139
- the list it reads is exactly the set of things that work for it. Predicates: `anyHost`,
139
+ the list it reads is exactly the set of things that work for it. Predicates (`toolHostHelper`): `anyHost`,
140
140
  `localTarget`, `cloudTarget`, `withExecutor`, `delegatedLlm`.
141
141
 
142
142
  ## 45 seconds is the ceiling, so long operations return domain status
@@ -163,13 +163,13 @@ platform's in-process host. The scope a call answers for is the CREDENTIAL's; a
163
163
 
164
164
  | Tool | Facade call |
165
165
  |---|---|
166
- | `list_stories` | `cards.list({ ...storyQuery(project, { status, area }), page, size, sort: STORY_ORDER })` → `renderStories` |
166
+ | `list_stories` | `cards.list({ ...storyHelper.storyQuery(project, { status, area }), page, size, sort: STORY_ORDER })` → `storyHelper.renderStories` |
167
167
  | `search_stories` | the same with `{ q }` |
168
168
  | `create_story` | `execute({ action: create, card: { kind: card, type: VIABLE_STORY_TYPE, parent, title, fields: { primary: false } } }, { wait: true, timeout: COMMIT_WAIT_MS })` |
169
- | `update_story` | `resolveStory` → `execute({ card, action: update, changes: { title }, expectSeq: head ?? seq }, { wait: true, … })` |
170
- | `delete_story` | `resolveStory` → `execute({ card, action: delete }, { wait: true, … })` → the project-lock poll |
171
- | `develop_story` | `resolveStory` → `execute({ card, action: transit, transition: start }, { wait: true, … })`, tolerating `CommitTimeout` → `story.status(project, card.id)` |
172
- | `story_status` | `resolveStory` → the card, its development run, pending inquiry, warning and landing mark |
169
+ | `update_story` | `storyHelper.resolveStory` → `execute({ card, action: update, changes: { title }, expectSeq: head ?? seq }, { wait: true, … })` |
170
+ | `delete_story` | `storyHelper.resolveStory` → `execute({ card, action: delete }, { wait: true, … })` → the project-lock poll |
171
+ | `develop_story` | `storyHelper.resolveStory` → `execute({ card, action: transit, transition: start }, { wait: true, … })`, tolerating `CommitTimeout` → `story.status(project, card.id)` |
172
+ | `story_status` | `storyHelper.resolveStory` → the card, its development run, pending inquiry, warning and landing mark |
173
173
 
174
174
  Rules the table rests on:
175
175
 
@@ -178,7 +178,7 @@ Rules the table rests on:
178
178
  on `confirm_project`, the project status line and the design-system section of `project_status`),
179
179
  never substituted.
180
180
  - **`storyId` accepts a code or an id**, because `list_stories` prints the CODE — the handle every
181
- generated file names a story by. `resolveStory` asks for both at once, the id wins, a code is also
181
+ generated file names a story by. `storyHelper.resolveStory` asks for both at once, the id wins, a code is also
182
182
  tried uppercased, and neither answers for a story of another project (`ProjectStoryNotFound`).
183
183
  - **Development is the story's `start`, not a call of its own.** The platform begins the run once that
184
184
  move COMMITS, and refuses it there too (the flow, one story in progress, the balance). The wait is
@@ -192,13 +192,13 @@ Rules the table rests on:
192
192
  placeholder screens still being retired under the project lock, so `delete_story` keeps its two
193
193
  unlocked observations.
194
194
  - **Stories are read in `order`, then `createdAt`**: `order` is the analysis's flow ordinal (a
195
- connective story sits at a fraction between two steps). `renderStories` keeps the line shape a parent
195
+ connective story sits at a fraction between two steps). `storyHelper.renderStories` keeps the line shape a parent
196
196
  already reads — `code · status[ · primary][ · landing gate][ · area]` over the narrative — under a
197
197
  header counting the page by intrinsic state. A new fact is a new FLAG beside `primary`; the area
198
198
  stays last.
199
199
  - **The landing gate story is read off the card the tool already holds** (`fields.landing`, at most
200
200
  one per project, decided by the platform at initialization — a connector never sets it). The list
201
- flags it; `story_status` and `develop_story` pass the resolved card to `renderStoryStatus`, which
201
+ flags it; `story_status` and `develop_story` pass the resolved card to `statusTextHelper.renderStoryStatus`, which
202
202
  adds `LANDING_NOTE` under the status line, and their structured result gains `landing: true`. No
203
203
  second call and no change to `connect.story.status`: that route carries the run, not the card's
204
204
  fields. It is said because developing that story also replaces the guest-home sketch with the real
@@ -221,11 +221,11 @@ tag — through `ConnectorApi.projectBranding(projectId)` and
221
221
  `saveProjectBranding(projectId, patch)` (`connect.project.branding.get` / `.save`,
222
222
  `ConnectProjectBranding` / `ConnectProjectBrandingSave` from `@owlmeans/viable-common`).
223
223
 
224
- - **A save is a PATCH.** `settingsPatch` keeps exactly the settings the call named, trimmed; an
224
+ - **A save is a PATCH.** `settingsHelper.settingsPatch` keeps exactly the settings the call named, trimmed; an
225
225
  omitted one keeps its stored value, and an EMPTY string is sent as given — for the Google tag that
226
226
  is the removal, for the others a value the platform refuses. A call naming none is refused locally
227
227
  and saves nothing. The answer is the merged record the platform stored, led by where the change
228
- shows (`settingsReach`): a cloud preview is rebuilt, production takes it at the next Publish; a
228
+ shows (`settingsHelper.settingsReach`): a cloud preview is rebuilt, production takes it at the next Publish; a
229
229
  local project gets it in its `.env` and `run_local` builds with it.
230
230
  - **The connector states the rules and checks none of them.** `PROJECT_SETTINGS[].rule` is the web
231
231
  save's validation in words — never-empty copyright and organization; an `https://` address without
@@ -271,7 +271,7 @@ a run can stop at (`landing` and `legal` in init, `landing` in story development
271
271
 
272
272
  ## A balance, consent or confirmation refusal is phrased for a person, and pushed through `notify`
273
273
 
274
- `personRefusalPhrase(e, retry?)` (`tools/refusal.ts`) phrases the three refusals only a PERSON can
274
+ `refusalHelper.personRefusalPhrase(e, retry?)` (`tools/refusal.ts`) phrases the three refusals only a PERSON can
275
275
  resolve (`@owlmeans/viable-common` `connect/errors.ts`), by `instanceof`, and answers `null` for
276
276
  anything else. Both `registerCatalogue`'s catch and the conversion tools' `answering` use it, so a
277
277
  conversion's balance refusal reads exactly like any other tool's:
@@ -281,10 +281,10 @@ conversion's balance refusal reads exactly like any other tool's:
281
281
  - `ConnectConsentRequired` — the EU spend consent: "Nothing was started", why (credits bought less
282
282
  than 14 days ago may only be used once a person expressly asks, the purchase still withdrawable up
283
283
  to the last day), the `consentUrl` to open and confirm in the browser, and that the call must NOT
284
- be retried automatically — only after the user says they confirmed (`consentRequiredPhrase(url,
284
+ be retried automatically — only after the user says they confirmed (`refusalHelper.consentRequiredPhrase(url,
285
285
  deadline)`, shared with the stored-text entry below).
286
286
  - `ConnectConfirmationRequired` — a conversion step that would use the plan's conversion or spend
287
- credits (`confirmationRequiredPhrase(fields, retry?)`): "Nothing was started"; for a start, what the
287
+ credits (`refusalHelper.confirmationRequiredPhrase(fields, retry?)`): "Nothing was started"; for a start, what the
288
288
  plan's conversion covers (free up to `cap` credits, the conversion limit; beyond it credit limits
289
289
  first, then topped-up credits; every stage quoted and asked first); for a stage, its estimate
290
290
  split ("580,000 from the conversion limit, 150,000 from the organization's credit limits, $2.40
@@ -298,7 +298,7 @@ internal HTTP hop) and are read back with `finalizeUnmarshal()`. All three are a
298
298
  optional `ToolDeps.notify?('warning', text)`, which a host wires to its own out-of-band channel —
299
299
  the stdio `viable-mcp` host sends an MCP `notifications/message`; the platform's stateless `/mcp`
300
300
  host has no channel and omits it, so `notify` is always best-effort and optional. Every other
301
- error returns through `refusalPhrase` and never calls `notify`.
301
+ error returns through `refusalHelper.refusalPhrase` and never calls `notify`.
302
302
 
303
303
  **A conversion's confirmation is answered inside its tool, with the exact call to repeat**
304
304
  (`confirming` in `catalogue.ts`): `convert_project` / `proceed_conversion` print
@@ -309,7 +309,7 @@ never repeated). Both take `confirm` (`z.boolean().default(false)`, described),
309
309
  parent passed `true`, and their descriptions explain the conversion limit (1,000,000 credits today),
310
310
  the spend order and that a delegated conversion is never asked — so a parent can say it before it is
311
311
  refused. A production body carries only the status: a bare `api:client:status:428` to a call sent
312
- WITHOUT `confirm` is answered with `unconfirmedConversionPhrase(retry)` (the confirmation, and the
312
+ WITHOUT `confirm` is answered with `refusalHelper.unconfirmedConversionPhrase(retry)` (the confirmation, and the
313
313
  consent as what a second refusal of the confirmed call would mean); to a confirmed call it can only
314
314
  be the consent and falls to `REFUSALS`. `serverInstructions` says the same in one sentence of the
315
315
  workflow paragraph.
@@ -361,7 +361,7 @@ was wrong, and the story failed with `retry-exceeded` having never been told. `t
361
361
  all three shapes and still throws for an answer carrying no call at all — an empty answer is a bad
362
362
  answer, and the retry is the right response to it.
363
363
 
364
- The same rule is why `parseTaskResult` refuses with a described reason rather than a stack trace:
364
+ The same rule is why `makeTaskEnvelopeModel(task).parseTaskResult` refuses with a described reason rather than a stack trace:
365
365
  whatever comes back becomes a model's next prompt, so it has to be readable by one.
366
366
 
367
367
  ## A redelivered model task must NOT be handed over twice
@@ -399,7 +399,7 @@ conversation, then the requested result shape: the outer handoff instruction and
399
399
  preserve the mode: a `text` task returns the requested source or text and never a JSON tool-call
400
400
  array; that array belongs only to `tools` mode.
401
401
 
402
- **`parseTaskResult` refuses a malformed answer locally**, and returns a `problem` rather than
402
+ **`makeTaskEnvelopeModel(task).parseTaskResult` refuses a malformed answer locally**, and returns a `problem` rather than
403
403
  throwing. The refusal is worth more than the parse: an answer that reaches the platform malformed
404
404
  costs a whole retry — another task, another subagent, another wait — while one caught here is a
405
405
  sentence the parent can act on immediately, with the subagent's context still open. It unfences,
@@ -451,7 +451,7 @@ forgotten after every command that changes the tree.
451
451
 
452
452
  Five rules the local half adds, each learned from a defect:
453
453
 
454
- - **`backendEnv` reads the root `.env` and `frontendEnv` the web package's own — the file split IS
454
+ - **`makeTargetEnvHelper(dir).backendEnv` reads the root `.env` and `.frontendEnv` the web package's own — the file split IS
455
455
  the leak boundary.** The publisher has an allow-list (`frontendEnvVars`/`frontendSecrets`); here
456
456
  the two files are never merged in either direction, because `FRONTEND_ENV_KEYS` announces
457
457
  everything in the frontend set to the bundler and a merge would compile `OIDC_SECRET` and
@@ -497,7 +497,7 @@ outside the block is yours — false for the one value the platform cannot suppl
497
497
  line the setup guide tells people to write. The application connected to the placeholder no matter
498
498
  what its owner put in the file.
499
499
 
500
- `writeEnv` therefore reads the file with the block cut out, and replaces any block line assigning a
500
+ `makeProjectEnvHelper(dir).writeEnv` therefore reads the file with the block cut out, and replaces any block line assigning a
501
501
  key the user already assigns with a comment saying so. The rule is about VALUES, not lines: a key the
502
502
  user has not claimed is still the platform's to set, and a key they later delete goes back to the
503
503
  platform on the next push.
@@ -527,17 +527,17 @@ TARGET's own "the api port is already in use", which reads as a defect in the ge
527
527
  than as a leftover.
528
528
 
529
529
  Two rules, both ported from the publisher because a laptop needs them more than a pod does:
530
- - `killGroupAndWait` never returns early on the child's own exit code. The child is a shell wrapping
530
+ - `spawnHelper.killGroupAndWait` never returns early on the child's own exit code. The child is a shell wrapping
531
531
  `bun`, so a signal the shell dies from leaves `bun` alive while `exitCode` says gone; the wait
532
532
  polls the GROUP instead of the child's exit event.
533
- - `reclaimPort` runs before a spawn as well as after one, and matches on the script AND the process
533
+ - `spawnHelper.reclaimPort` runs before a spawn as well as after one, and matches on the script AND the process
534
534
  marker (`--viable-api`, `--viable-worker`, `--viable-boot-check`) — never a port alone, and never
535
535
  a marker alone, since reclaiming sends SIGKILL and a marker on its own matches any command line
536
536
  that merely mentions it.
537
537
 
538
538
  ## Running the generated app locally
539
539
 
540
- `runLocal` builds and starts the api, the worker (when the project has one) and a local server that
540
+ `makeLocalRunHelper(dir).runLocal` builds and starts the api, the worker (when the project has one) and a local server that
541
541
  holds the web port and proxies `/api` to the api process on the same origin — the generated app's
542
542
  configuration assumes one origin, and splitting them across two loopback ports would put its CORS
543
543
  setup in the path of a developer's first page load. There is no respawn ladder, no reconciler and no
@@ -1,2 +1,4 @@
1
1
  export * from './remote.js';
2
+ export * from './transport.js';
3
+ export type * from './transport/types.js';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,mBAAmB,sBAAsB,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export * from './remote.js';
2
+ export * from './transport.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA"}
@@ -1,15 +1,5 @@
1
1
  import type { ConnectorApi } from '../types.js';
2
2
  import type { Ctx } from './types.local.js';
3
- /** A broken HTTP connection, as opposed to a refusal the platform deliberately answered. */
4
- export declare const isTransientTransportError: (value: unknown) => boolean;
5
- /**
6
- * Recover a long poll with one non-blocking snapshot.
7
- *
8
- * Repeating the whole poll can exceed the MCP host's 45-second tool ceiling after a proxy drops a
9
- * response near the end of its 30-second window. A snapshot asks for the same durable state with
10
- * no wait, so the caller receives the current state without duplicating or restarting any work.
11
- */
12
- export declare const recoverLongPoll: <T>(poll: () => Promise<T>, snapshot: () => Promise<T>) => Promise<T>;
13
3
  /**
14
4
  * The connector API over HTTP.
15
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/api/remote.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAA;AAE9E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,4FAA4F;AAC5F,eAAO,MAAM,yBAAyB,UAAW,OAAO,KAAG,OAgB1D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAU,CAAC,QAC/B,MAAM,OAAO,CAAC,CAAC,CAAC,YAAY,MAAM,OAAO,CAAC,CAAC,CAAC,KACjD,OAAO,CAAC,CAAC,CAQX,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,YAAa,GAAG,KAAG,YAqHrD,CAAA"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/api/remote.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAA;AAC9E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAG3C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,YAAa,GAAG,KAAG,YAqHrD,CAAA"}
@@ -1,41 +1,6 @@
1
- import { planningOf } from '@owlmeans/client-planning';
2
1
  import { connectRef } from '@owlmeans/viable-common';
3
2
  import { TOOL_DEADLINE_MS } from '../consts.js';
4
- import { TRANSIENT_TRANSPORT_CODES } from './consts.local.js';
5
- /** A broken HTTP connection, as opposed to a refusal the platform deliberately answered. */
6
- export const isTransientTransportError = (value) => {
7
- const seen = new Set();
8
- let current = value;
9
- while (current != null && !seen.has(current)) {
10
- seen.add(current);
11
- const error = current;
12
- if (typeof error.code === 'string' && TRANSIENT_TRANSPORT_CODES.has(error.code))
13
- return true;
14
- const message = typeof error.message === 'string' ? error.message : String(current);
15
- if (/\b(?:ECONNRESET|ECONNREFUSED|EPIPE|ETIMEDOUT|UND_ERR_(?:CONNECT_TIMEOUT|HEADERS_TIMEOUT|SOCKET))\b/.test(message)) {
16
- return true;
17
- }
18
- current = error.cause;
19
- }
20
- return false;
21
- };
22
- /**
23
- * Recover a long poll with one non-blocking snapshot.
24
- *
25
- * Repeating the whole poll can exceed the MCP host's 45-second tool ceiling after a proxy drops a
26
- * response near the end of its 30-second window. A snapshot asks for the same durable state with
27
- * no wait, so the caller receives the current state without duplicating or restarting any work.
28
- */
29
- export const recoverLongPoll = async (poll, snapshot) => {
30
- try {
31
- return await poll();
32
- }
33
- catch (error) {
34
- if (!isTransientTransportError(error))
35
- throw error;
36
- return await snapshot();
37
- }
38
- };
3
+ import { planningContextOf } from '@owlmeans/client-planning';
39
4
  /**
40
5
  * The connector API over HTTP.
41
6
  *
@@ -107,7 +72,7 @@ export const makeRemoteConnectorApi = (context) => {
107
72
  status: async (id, storyId) => await context
108
73
  .entrypoint(connectRef.story.status).call({ params: { id, storyId }, timeout: TOOL_DEADLINE_MS }),
109
74
  },
110
- planning: planningOf(context, {}),
75
+ planning: planningContextOf(context).facade({}),
111
76
  files: {
112
77
  list: async (id) => await context.entrypoint(connectRef.files.list).call({
113
78
  params: { id }, timeout: TOOL_DEADLINE_MS,
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/api/remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/api/remote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAif,MAAM,yBAAyB,CAAA;AACniB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAG/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE7D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAY,EAAgB,EAAE;IACnE,OAAO;QACL,WAAW,EAAE,KAAK,EAAE,IAAqB,EAA+B,EAAE;YACxE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;YAC7B,wFAAwF;YACxF,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,OAAO;gBAC7C,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAC7D,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAC7C,CAAC;QAED,YAAY,EAAE,KAAK,EAAC,SAAS,EAAC,EAAE;YAC9B,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;gBACtD,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,gBAAgB;aACjD,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAwB,EAAE,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAC7G,MAAM,EAAE,EAAE,SAAS,EAAE;YACrB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YACxB,kFAAkF;YAClF,OAAO,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,IAAI;SAC/B,CAAC;QAEF,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAuB,EAAgC,EAAE,CAAC,MAAM,OAAO;aAChG,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YACvC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM;YACtD,OAAO,EAAE,gBAAgB;SAC1B,CAAC;QAEF,OAAO,EAAE;YACP,MAAM,EAAE,KAAK,EAAE,MAAc,EAAE,MAAsB,EAAE,EAAE,CACvD,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBACvD,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,gBAAgB;aACnF,CAAC;YACJ,OAAO,EAAE,KAAK,EAAE,EAAU,EAAE,KAAmB,EAAE,EAAE,CACjD,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;gBACxD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB;aACvD,CAAC;YACJ,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YACvG,MAAM,EAAE,KAAK,EAAE,EAAU,EAAiC,EAAE,CAAC,MAAM,OAAO;iBACvE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YAC5F,MAAM,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBAC7E,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB;aACtC,CAAC;YACF,MAAM,EAAE,KAAK,EAAE,EAAU,EAAiC,EAAE,CAAC,MAAM,OAAO;iBACvE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YAC5F,MAAM,EAAE,KAAK,EAAE,EAAU,EAAE,MAAc,EAAE,EAAE,CAC3C,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBACvD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,gBAAgB;aAC5D,CAAC;YACJ,WAAW,EAAE,KAAK,EAAE,EAAU,EAA+B,EAAE,CAAC,MAAM,OAAO;iBAC1E,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YAClG,QAAQ,EAAE,KAAK,EAAE,EAAU,EAAE,IAAyB,EAAkC,EAAE,CACxF,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;gBAC1D,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB;aAChD,CAAC;SACL;QAED,eAAe,EAAE,KAAK,EAAE,EAAU,EAAmC,EAAE,CAAC,MAAM,OAAO;aAClF,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAClG,8FAA8F;QAC9F,yEAAyE;QACzE,mBAAmB,EAAE,KAAK,EAAE,EAAU,EAAE,KAAiC,EAAmC,EAAE,CAC5G,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAC9D,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB;SACvD,CAAC;QAEJ,KAAK,EAAE;YACL,MAAM,EAAE,KAAK,EAAE,EAAU,EAAE,OAAe,EAA+B,EAAE,CAAC,MAAM,OAAO;iBACtF,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;SACpG;QAED,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAE/C,KAAK,EAAE;YACL,IAAI,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBAC/E,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB;aAC1C,CAAC;SACH;QAED,QAAQ,EAAE;YACR,KAAK,EAAE,KAAK,EAAE,EAAU,EAAE,KAAa,EAAiC,EAAE,CAAC,MAAM,OAAO;iBACrF,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YACnG,MAAM,EAAE,KAAK,EAAE,EAAU,EAAE,KAAa,EAAE,IAAI,EAAE,EAAE,CAChD,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBACxD,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB;aACnE,CAAC;SACL;QAED,OAAO,EAAE;YACP,MAAM,EAAE,KAAK,EAAE,IAA8B,EAAE,EAAE,CAC/C,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBACvD,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB;aACtC,CAAC;YACJ,KAAK,EAAE,KAAK,EAAE,EAAU,EAAyB,EAAE,CAAC,MAAM,OAAO;iBAC9D,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YAC3F,KAAK,EAAE,KAAK,EAAE,EAAU,EAAE,IAA8B,EAAiC,EAAE,CAAC,MAAM,OAAO;iBACtG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YAC7G,OAAO,EAAE,KAAK,EAAE,EAAU,EAAE,IAA+B,EAAE,EAAE,CAC7D,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;gBACxD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB;aAChD,CAAC;YACJ,MAAM,EAAE,KAAK,EAAE,EAAU,EAAiC,EAAE,CAAC,MAAM,OAAO;iBACvE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YAC5F,KAAK,EAAE,KAAK,EAAE,EAAU,EAAiC,EAAE,CAAC,MAAM,OAAO;iBACtE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;SAC5F;QAED,OAAO,EAAE;YACP,MAAM,EAAE,KAAK,EAAE,EAAU,EAAE,SAAiB,EAAE,MAA4B,EAAE,EAAE;YAC5E,0FAA0F;YAC1F,qEAAqE;YACrE,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBACvD,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,gBAAgB;aACrF,CAAC;SACL;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ /** Telling a broken HTTP connection from a refusal, and recovering a long poll that lost one. */
2
+ export interface TransportHelper {
3
+ /** A broken HTTP connection, as opposed to a refusal the platform deliberately answered. */
4
+ isTransientTransportError: (value: unknown) => boolean;
5
+ /**
6
+ * Recover a long poll with one non-blocking snapshot.
7
+ *
8
+ * Repeating the whole poll can exceed the MCP host's 45-second tool ceiling after a proxy drops a
9
+ * response near the end of its 30-second window. A snapshot asks for the same durable state with
10
+ * no wait, so the caller receives the current state without duplicating or restarting any work.
11
+ */
12
+ recoverLongPoll: <T>(poll: () => Promise<T>, snapshot: () => Promise<T>) => Promise<T>;
13
+ }
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/transport/types.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,yBAAyB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAA;IACtD;;;;;;OAMG;IACH,eAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;CACvF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/transport/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { TransportHelper } from './transport/types.js';
2
+ export declare const createTransportHelper: () => TransportHelper;
3
+ export declare const transportHelper: TransportHelper;
4
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/api/transport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D,eAAO,MAAM,qBAAqB,QAAO,eAgCxC,CAAA;AAED,eAAO,MAAM,eAAe,iBAA0B,CAAA"}
@@ -0,0 +1,32 @@
1
+ import { TRANSIENT_TRANSPORT_CODES } from './consts.local.js';
2
+ export const createTransportHelper = () => {
3
+ const isTransientTransportError = (value) => {
4
+ const seen = new Set();
5
+ let current = value;
6
+ while (current != null && !seen.has(current)) {
7
+ seen.add(current);
8
+ const error = current;
9
+ if (typeof error.code === 'string' && TRANSIENT_TRANSPORT_CODES.has(error.code))
10
+ return true;
11
+ const message = typeof error.message === 'string' ? error.message : String(current);
12
+ if (/\b(?:ECONNRESET|ECONNREFUSED|EPIPE|ETIMEDOUT|UND_ERR_(?:CONNECT_TIMEOUT|HEADERS_TIMEOUT|SOCKET))\b/.test(message)) {
13
+ return true;
14
+ }
15
+ current = error.cause;
16
+ }
17
+ return false;
18
+ };
19
+ const recoverLongPoll = async (poll, snapshot) => {
20
+ try {
21
+ return await poll();
22
+ }
23
+ catch (error) {
24
+ if (!isTransientTransportError(error))
25
+ throw error;
26
+ return await snapshot();
27
+ }
28
+ };
29
+ return { isTransientTransportError, recoverLongPoll };
30
+ };
31
+ export const transportHelper = createTransportHelper();
32
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/api/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAG7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAoB,EAAE;IACzD,MAAM,yBAAyB,GAAG,CAAC,KAAc,EAAW,EAAE;QAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAA;QAC/B,IAAI,OAAO,GAAY,KAAK,CAAA;QAE5B,OAAO,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACjB,MAAM,KAAK,GAAG,OAAiE,CAAA;YAC/E,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC5F,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACnF,IAAI,oGAAoG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvH,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAA;QACvB,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,KAAK,EAC3B,IAAsB,EAAE,QAA0B,EACtC,EAAE;QACd,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,EAAE,CAAA;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAA;YAElD,OAAO,MAAM,QAAQ,EAAE,CAAA;QACzB,CAAC;IACH,CAAC,CAAA;IAED,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,EAAE,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { spawn as nodeSpawn } from 'node:child_process';
2
- import { readTargetHealth } from './health.js';
3
- import { delay, killGroupAndWait, reclaimPort, waitForPortFree } from './spawn.js';
2
+ import { healthHelper } from './health.js';
3
+ import { spawnHelper } from './spawn.js';
4
4
  import { STARTUP_LOG_CAP, WATCHDOG_MS } from './consts.local.js';
5
5
  /**
6
6
  * Boot the generated backend for real, in isolation, and report what happened.
@@ -25,7 +25,7 @@ import { STARTUP_LOG_CAP, WATCHDOG_MS } from './consts.local.js';
25
25
  * simply leaves what it created behind, and the next run reconciles into it.
26
26
  */
27
27
  export const runBootCheck = async (deps) => {
28
- const { port, marker, cwd, env, bootId, build, readHealth = readTargetHealth, spawn = nodeSpawn, ddlWindowMs = 10_000, readyWindowMs = 90_000, readyPollMs = 2_000, timeoutMs = 480_000, } = deps;
28
+ const { port, marker, cwd, env, bootId, build, readHealth = healthHelper.readTargetHealth, spawn = nodeSpawn, ddlWindowMs = 10_000, readyWindowMs = 90_000, readyPollMs = 2_000, timeoutMs = 480_000, } = deps;
29
29
  const deadline = Date.now() + timeoutMs;
30
30
  let child = null;
31
31
  let log = '';
@@ -41,8 +41,8 @@ export const runBootCheck = async (deps) => {
41
41
  // Before the spawn, not only after it. The leftover this reclaims belongs to a run that never
42
42
  // finished, so it is already holding the port by the time anything asks for a fresh check —
43
43
  // and the target refuses to start on a taken port rather than stealing it, correctly.
44
- if (!await waitForPortFree(port, 2_000))
45
- await reclaimPort(port, marker);
44
+ if (!await spawnHelper.waitForPortFree(port, 2_000))
45
+ await spawnHelper.reclaimPort(port, marker);
46
46
  child = spawn('bun', ['dist/index.js', marker], {
47
47
  cwd,
48
48
  detached: true,
@@ -59,7 +59,7 @@ export const runBootCheck = async (deps) => {
59
59
  // is for. A target that survives it may still be degraded, which is what the poll asks about.
60
60
  const ddlDeadline = Date.now() + ddlWindowMs;
61
61
  while (Date.now() < ddlDeadline && !exited) {
62
- await delay(200);
62
+ await spawnHelper.delay(200);
63
63
  }
64
64
  if (exited) {
65
65
  return { ok: false, phase: 'boot', error: `The target backend exited while initializing:\n${log}` };
@@ -79,7 +79,7 @@ export const runBootCheck = async (deps) => {
79
79
  if (health.terminal) {
80
80
  return { ok: false, phase: 'boot', error: `${reason}\n${log}`.trim(), dbOk: health.dbOk };
81
81
  }
82
- await delay(readyPollMs);
82
+ await spawnHelper.delay(readyPollMs);
83
83
  }
84
84
  return { ok: false, phase: 'boot', error: `${reason}\n${log}`.trim() };
85
85
  }
@@ -91,7 +91,7 @@ export const runBootCheck = async (deps) => {
91
91
  // and one left holding the database would be indistinguishable from the live backend.
92
92
  if (child != null) {
93
93
  try {
94
- await killGroupAndWait(child);
94
+ await spawnHelper.killGroupAndWait(child);
95
95
  }
96
96
  catch {
97
97
  // Already gone.
@@ -102,8 +102,8 @@ export const runBootCheck = async (deps) => {
102
102
  // detached child alive, and every later check then fails with the target's own "the api port
103
103
  // is already in use" — which reads as a defect in the generated app rather than as a stray
104
104
  // process from a run that never finished.
105
- if (!await waitForPortFree(port))
106
- await reclaimPort(port, marker);
105
+ if (!await spawnHelper.waitForPortFree(port))
106
+ await spawnHelper.reclaimPort(port, marker);
107
107
  }
108
108
  catch {
109
109
  // Nothing else to do — the next check reclaims by marker anyway.
@@ -1 +1 @@
1
- {"version":3,"file":"boot-check.js","sourceRoot":"","sources":["../../src/executor/boot-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boot-check.js","sourceRoot":"","sources":["../../src/executor/boot-check.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type TargetLayout } from '@owlmeans/viable-common';
1
2
  export declare const STARTUP_LOG_CAP = 16384;
2
3
  /**
3
4
  * Outer bound on one boot-check job.
@@ -57,4 +58,6 @@ export declare const TERM_TIMEOUT = 5000;
57
58
  export declare const KILL_TIMEOUT = 2000;
58
59
  /** What every target process runs; the marker is what tells the three of them apart. */
59
60
  export declare const TARGET_SCRIPT = "dist/index.js";
61
+ /** Each layout's marker file, as a path of this platform — the probe `detectLayout` runs per call. */
62
+ export declare const LAYOUT_MARKER_PATHS: Array<[TargetLayout, string]>;
60
63
  //# sourceMappingURL=consts.local.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.local.d.ts","sourceRoot":"","sources":["../../src/executor/consts.local.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,QAAS,CAAA;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,SAAU,CAAA;AAElC,yFAAyF;AACzF,eAAO,MAAM,sBAAsB,aAGjC,CAAA;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,aAAqD,CAAA;AAE3E;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,SAAS,CAAA;AAEpC,eAAO,MAAM,qBAAqB,oBAAoB,CAAA;AAEtD,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAE1D,eAAO,MAAM,SAAS,KAAK,CAAA;AAE3B,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAIlC,eAAO,MAAM,UAAU,iDAAiD,CAAA;AAExE;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,OAAQ,CAAA;AAEnC,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,QAAS,CAAA;AAEvC,eAAO,MAAM,YAAY,MAAM,CAAA;AAE/B,eAAO,MAAM,YAAY,OAAQ,CAAA;AAEjC,eAAO,MAAM,YAAY,OAAQ,CAAA;AAEjC,wFAAwF;AACxF,eAAO,MAAM,aAAa,kBAAkB,CAAA"}
1
+ {"version":3,"file":"consts.local.d.ts","sourceRoot":"","sources":["../../src/executor/consts.local.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwD,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEjH,eAAO,MAAM,eAAe,QAAS,CAAA;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,SAAU,CAAA;AAElC,yFAAyF;AACzF,eAAO,MAAM,sBAAsB,aAGjC,CAAA;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,aAAqD,CAAA;AAE3E;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,SAAS,CAAA;AAEpC,eAAO,MAAM,qBAAqB,oBAAoB,CAAA;AAEtD,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAE1D,eAAO,MAAM,SAAS,KAAK,CAAA;AAE3B,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAIlC,eAAO,MAAM,UAAU,iDAAiD,CAAA;AAExE;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,OAAQ,CAAA;AAEnC,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,QAAS,CAAA;AAEvC,eAAO,MAAM,YAAY,MAAM,CAAA;AAE/B,eAAO,MAAM,YAAY,OAAQ,CAAA;AAEjC,eAAO,MAAM,YAAY,OAAQ,CAAA;AAEjC,wFAAwF;AACxF,eAAO,MAAM,aAAa,kBAAkB,CAAA;AAE5C,sGAAsG;AACtG,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAE7D,CAAA"}
@@ -1,4 +1,5 @@
1
- import { CENSUS_SKIP_DIRS, CONNECT_MARKER_DIR } from '@owlmeans/viable-common';
1
+ import path from 'node:path';
2
+ import { CENSUS_SKIP_DIRS, CONNECT_MARKER_DIR, LAYOUT_MARKERS } from '@owlmeans/viable-common';
2
3
  export const STARTUP_LOG_CAP = 16_384;
3
4
  /**
4
5
  * Outer bound on one boot-check job.
@@ -63,4 +64,6 @@ export const TERM_TIMEOUT = 5_000;
63
64
  export const KILL_TIMEOUT = 2_000;
64
65
  /** What every target process runs; the marker is what tells the three of them apart. */
65
66
  export const TARGET_SCRIPT = 'dist/index.js';
67
+ /** Each layout's marker file, as a path of this platform — the probe `detectLayout` runs per call. */
68
+ export const LAYOUT_MARKER_PATHS = LAYOUT_MARKERS.map(([layout, marker]) => [layout, path.join(...marker.split('/'))]);
66
69
  //# sourceMappingURL=consts.local.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.local.js","sourceRoot":"","sources":["../../src/executor/consts.local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAA;AAErC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAA;AAElC,yFAAyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB;IACpF,UAAU,EAAE,mBAAmB,EAAE,WAAW;CAC7C,CAAC,CAAA;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAA;AAE3E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAEpC,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAA;AAEtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAA;AAE1D,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAA;AAE3B,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAElC,gGAAgG;AAChG,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG,8CAA8C,CAAA;AAExE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAA;AAEnC,mFAAmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAA;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;AAE/B,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAA;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAA;AAEjC,wFAAwF;AACxF,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAA"}
1
+ {"version":3,"file":"consts.local.js","sourceRoot":"","sources":["../../src/executor/consts.local.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAEjH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAA;AAErC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAA;AAElC,yFAAyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB;IACpF,UAAU,EAAE,mBAAmB,EAAE,WAAW;CAC7C,CAAC,CAAA;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAA;AAE3E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAEpC,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAA;AAEtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAA;AAE1D,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAA;AAE3B,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAElC,gGAAgG;AAChG,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG,8CAA8C,CAAA;AAExE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAA;AAEnC,mFAAmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAA;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;AAE/B,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAA;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAA;AAEjC,wFAAwF;AACxF,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAA;AAE5C,sGAAsG;AACtG,MAAM,CAAC,MAAM,mBAAmB,GAAkC,cAAc,CAAC,GAAG,CAClF,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAChE,CAAA"}