@kvman/kvcoder 0.1.14 → 0.1.16

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 (257) hide show
  1. package/dist/artifacts/ended-url.d.ts +4 -0
  2. package/dist/artifacts/ended-url.d.ts.map +1 -0
  3. package/dist/artifacts/ended-url.js +30 -0
  4. package/dist/artifacts/ended-url.js.map +1 -0
  5. package/dist/calls/line-run.d.ts +1 -0
  6. package/dist/calls/line-run.d.ts.map +1 -1
  7. package/dist/calls/line-run.js +4 -1
  8. package/dist/calls/line-run.js.map +1 -1
  9. package/dist/calls/run-tool.d.ts +38 -1
  10. package/dist/calls/run-tool.d.ts.map +1 -1
  11. package/dist/calls/run-tool.js +46 -1
  12. package/dist/calls/run-tool.js.map +1 -1
  13. package/dist/connector-call.d.ts +7 -2
  14. package/dist/connector-call.d.ts.map +1 -1
  15. package/dist/connector-call.js +8 -4
  16. package/dist/connector-call.js.map +1 -1
  17. package/dist/connectors/artifact.d.ts.map +1 -1
  18. package/dist/connectors/artifact.js +10 -2
  19. package/dist/connectors/artifact.js.map +1 -1
  20. package/dist/connectors/background.d.ts +1 -1
  21. package/dist/connectors/background.d.ts.map +1 -1
  22. package/dist/connectors/background.js +5 -2
  23. package/dist/connectors/background.js.map +1 -1
  24. package/dist/connectors/binary.js +2 -2
  25. package/dist/connectors/binary.js.map +1 -1
  26. package/dist/connectors/builtin-connectors.d.ts +16 -3
  27. package/dist/connectors/builtin-connectors.d.ts.map +1 -1
  28. package/dist/connectors/delegate.d.ts +20 -13
  29. package/dist/connectors/delegate.d.ts.map +1 -1
  30. package/dist/connectors/delegate.js +27 -20
  31. package/dist/connectors/delegate.js.map +1 -1
  32. package/dist/connectors/execution-map.d.ts +1 -1
  33. package/dist/connectors/execution-map.d.ts.map +1 -1
  34. package/dist/connectors/execution-map.js +1 -1
  35. package/dist/connectors/execution-map.js.map +1 -1
  36. package/dist/connectors/mcp.d.ts +1 -1
  37. package/dist/connectors/mcp.d.ts.map +1 -1
  38. package/dist/connectors/mcp.js +12 -7
  39. package/dist/connectors/mcp.js.map +1 -1
  40. package/dist/connectors/payload-fields.d.ts +1 -0
  41. package/dist/connectors/payload-fields.d.ts.map +1 -1
  42. package/dist/connectors/payload-fields.js +1 -0
  43. package/dist/connectors/payload-fields.js.map +1 -1
  44. package/dist/connectors/shell.d.ts +1 -0
  45. package/dist/connectors/shell.d.ts.map +1 -1
  46. package/dist/connectors/shell.js +2 -2
  47. package/dist/connectors/shell.js.map +1 -1
  48. package/dist/delegate/approved-run.d.ts.map +1 -1
  49. package/dist/delegate/approved-run.js +4 -11
  50. package/dist/delegate/approved-run.js.map +1 -1
  51. package/dist/delegate/brief.d.ts +34 -0
  52. package/dist/delegate/brief.d.ts.map +1 -0
  53. package/dist/delegate/brief.js +84 -0
  54. package/dist/delegate/brief.js.map +1 -0
  55. package/dist/delegate/continue-helper.d.ts.map +1 -1
  56. package/dist/delegate/continue-helper.js +6 -7
  57. package/dist/delegate/continue-helper.js.map +1 -1
  58. package/dist/delegate/permission.d.ts +26 -1
  59. package/dist/delegate/permission.d.ts.map +1 -1
  60. package/dist/delegate/program-permission.d.ts +1 -1
  61. package/dist/delegate/runs.d.ts +7 -3
  62. package/dist/delegate/runs.d.ts.map +1 -1
  63. package/dist/delegate/runs.js +2 -2
  64. package/dist/delegate/runs.js.map +1 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +4 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/jobs/notify-watch.d.ts +5 -0
  69. package/dist/jobs/notify-watch.d.ts.map +1 -0
  70. package/dist/jobs/notify-watch.js +53 -0
  71. package/dist/jobs/notify-watch.js.map +1 -0
  72. package/dist/jobs/process-handlers.d.ts.map +1 -1
  73. package/dist/jobs/process-handlers.js +2 -1
  74. package/dist/jobs/process-handlers.js.map +1 -1
  75. package/dist/jobs/process-records.d.ts +4 -1
  76. package/dist/jobs/process-records.d.ts.map +1 -1
  77. package/dist/jobs/process-records.js +6 -2
  78. package/dist/jobs/process-records.js.map +1 -1
  79. package/dist/jobs/process-report.d.ts +2 -1
  80. package/dist/jobs/process-report.d.ts.map +1 -1
  81. package/dist/jobs/process-report.js +8 -5
  82. package/dist/jobs/process-report.js.map +1 -1
  83. package/dist/jobs/process-run.d.ts +1 -1
  84. package/dist/jobs/process-run.d.ts.map +1 -1
  85. package/dist/jobs/process-run.js +7 -3
  86. package/dist/jobs/process-run.js.map +1 -1
  87. package/dist/mcp/connect.d.ts +10 -5
  88. package/dist/mcp/connect.d.ts.map +1 -1
  89. package/dist/mcp/connect.js +22 -9
  90. package/dist/mcp/connect.js.map +1 -1
  91. package/dist/mcp/servers.d.ts +4 -0
  92. package/dist/mcp/servers.d.ts.map +1 -1
  93. package/dist/mcp/servers.js +5 -1
  94. package/dist/mcp/servers.js.map +1 -1
  95. package/dist/mcp/turn-servers.d.ts +8 -0
  96. package/dist/mcp/turn-servers.d.ts.map +1 -0
  97. package/dist/mcp/turn-servers.js +88 -0
  98. package/dist/mcp/turn-servers.js.map +1 -0
  99. package/dist/prompt/build-prompt.d.ts +1 -1
  100. package/dist/prompt/build-prompt.d.ts.map +1 -1
  101. package/dist/prompt/build-prompt.js +2 -3
  102. package/dist/prompt/build-prompt.js.map +1 -1
  103. package/dist/prompt/kept-rules.d.ts +6 -0
  104. package/dist/prompt/kept-rules.d.ts.map +1 -0
  105. package/dist/prompt/kept-rules.js +47 -0
  106. package/dist/prompt/kept-rules.js.map +1 -0
  107. package/dist/prompt/project-rules.d.ts +7 -2
  108. package/dist/prompt/project-rules.d.ts.map +1 -1
  109. package/dist/prompt/project-rules.js +27 -16
  110. package/dist/prompt/project-rules.js.map +1 -1
  111. package/dist/prompt/session-grants.d.ts +16 -23
  112. package/dist/prompt/session-grants.d.ts.map +1 -1
  113. package/dist/prompt/session-prompt.d.ts +1 -1
  114. package/dist/prompt/session-prompt.d.ts.map +1 -1
  115. package/dist/prompt/session-prompt.js +16 -9
  116. package/dist/prompt/session-prompt.js.map +1 -1
  117. package/dist/prompt/working-method.js +7 -7
  118. package/dist/prompt/working-method.js.map +1 -1
  119. package/dist/register-settings.d.ts +1 -0
  120. package/dist/register-settings.d.ts.map +1 -1
  121. package/dist/register-settings.js +1 -0
  122. package/dist/register-settings.js.map +1 -1
  123. package/dist/registry/register-connectors.d.ts +17 -1
  124. package/dist/registry/register-connectors.d.ts.map +1 -1
  125. package/dist/registry/register-connectors.js +11 -7
  126. package/dist/registry/register-connectors.js.map +1 -1
  127. package/dist/schemas/delegate-brief.d.ts +20 -0
  128. package/dist/schemas/delegate-brief.d.ts.map +1 -0
  129. package/dist/schemas/delegate-brief.js +9 -0
  130. package/dist/schemas/delegate-brief.js.map +1 -0
  131. package/dist/schemas/kept-rule.d.ts +12 -0
  132. package/dist/schemas/kept-rule.d.ts.map +1 -0
  133. package/dist/schemas/kept-rule.js +7 -0
  134. package/dist/schemas/kept-rule.js.map +1 -0
  135. package/dist/schemas/mcp-session.d.ts +15 -0
  136. package/dist/schemas/mcp-session.d.ts.map +1 -0
  137. package/dist/schemas/mcp-session.js +14 -0
  138. package/dist/schemas/mcp-session.js.map +1 -0
  139. package/dist/schemas/process-doc.d.ts +22 -0
  140. package/dist/schemas/process-doc.d.ts.map +1 -0
  141. package/dist/schemas/process-doc.js +20 -0
  142. package/dist/schemas/process-doc.js.map +1 -0
  143. package/dist/schemas/read-ending.d.ts +8 -0
  144. package/dist/schemas/read-ending.d.ts.map +1 -0
  145. package/dist/schemas/read-ending.js +4 -0
  146. package/dist/schemas/read-ending.js.map +1 -0
  147. package/dist/schemas/records.d.ts +29 -23
  148. package/dist/schemas/records.d.ts.map +1 -1
  149. package/dist/schemas/records.js +14 -16
  150. package/dist/schemas/records.js.map +1 -1
  151. package/dist/schemas/registry.d.ts +1 -0
  152. package/dist/schemas/registry.d.ts.map +1 -1
  153. package/dist/schemas/registry.js +3 -2
  154. package/dist/schemas/registry.js.map +1 -1
  155. package/dist/schemas/sent-record.d.ts +13 -0
  156. package/dist/schemas/sent-record.d.ts.map +1 -0
  157. package/dist/schemas/sent-record.js +7 -0
  158. package/dist/schemas/sent-record.js.map +1 -0
  159. package/dist/sessions/new-session.d.ts.map +1 -1
  160. package/dist/sessions/new-session.js +2 -0
  161. package/dist/sessions/new-session.js.map +1 -1
  162. package/dist/sessions/session-view.d.ts +7 -2
  163. package/dist/sessions/session-view.d.ts.map +1 -1
  164. package/dist/sessions/session-view.js +3 -0
  165. package/dist/sessions/session-view.js.map +1 -1
  166. package/dist/store/collections.d.ts +74 -6
  167. package/dist/store/collections.d.ts.map +1 -1
  168. package/dist/store/collections.js +6 -0
  169. package/dist/store/collections.js.map +1 -1
  170. package/dist/thinking-levels.d.ts +2 -0
  171. package/dist/thinking-levels.d.ts.map +1 -1
  172. package/dist/thinking-levels.js +4 -0
  173. package/dist/thinking-levels.js.map +1 -1
  174. package/dist/turns/background.d.ts +3 -0
  175. package/dist/turns/background.d.ts.map +1 -1
  176. package/dist/turns/background.js +10 -0
  177. package/dist/turns/background.js.map +1 -1
  178. package/dist/turns/clear-results.d.ts +2 -2
  179. package/dist/turns/clear-results.d.ts.map +1 -1
  180. package/dist/turns/clear-results.js +31 -15
  181. package/dist/turns/clear-results.js.map +1 -1
  182. package/dist/turns/collapse.d.ts +12 -0
  183. package/dist/turns/collapse.d.ts.map +1 -0
  184. package/dist/turns/collapse.js +67 -0
  185. package/dist/turns/collapse.js.map +1 -0
  186. package/dist/turns/connection-wait.d.ts +12 -0
  187. package/dist/turns/connection-wait.d.ts.map +1 -0
  188. package/dist/turns/connection-wait.js +56 -0
  189. package/dist/turns/connection-wait.js.map +1 -0
  190. package/dist/turns/end-turn-state.js +2 -2
  191. package/dist/turns/end-turn-state.js.map +1 -1
  192. package/dist/turns/end-turn.d.ts.map +1 -1
  193. package/dist/turns/end-turn.js +3 -0
  194. package/dist/turns/end-turn.js.map +1 -1
  195. package/dist/turns/history.d.ts +2 -0
  196. package/dist/turns/history.d.ts.map +1 -1
  197. package/dist/turns/history.js +1 -0
  198. package/dist/turns/history.js.map +1 -1
  199. package/dist/turns/model-context.d.ts +6 -2
  200. package/dist/turns/model-context.d.ts.map +1 -1
  201. package/dist/turns/model-context.js +26 -8
  202. package/dist/turns/model-context.js.map +1 -1
  203. package/dist/turns/model-retry.d.ts +5 -2
  204. package/dist/turns/model-retry.d.ts.map +1 -1
  205. package/dist/turns/model-retry.js +5 -3
  206. package/dist/turns/model-retry.js.map +1 -1
  207. package/dist/turns/read-endings.d.ts +8 -0
  208. package/dist/turns/read-endings.d.ts.map +1 -0
  209. package/dist/turns/read-endings.js +24 -0
  210. package/dist/turns/read-endings.js.map +1 -0
  211. package/dist/turns/run-calls.d.ts +0 -6
  212. package/dist/turns/run-calls.d.ts.map +1 -1
  213. package/dist/turns/run-calls.js +24 -26
  214. package/dist/turns/run-calls.js.map +1 -1
  215. package/dist/turns/run-command.d.ts +2 -0
  216. package/dist/turns/run-command.d.ts.map +1 -1
  217. package/dist/turns/run-command.js +6 -0
  218. package/dist/turns/run-command.js.map +1 -1
  219. package/dist/turns/run-scope.d.ts +7 -0
  220. package/dist/turns/run-scope.d.ts.map +1 -0
  221. package/dist/turns/run-scope.js +24 -0
  222. package/dist/turns/run-scope.js.map +1 -0
  223. package/dist/turns/sent-record.d.ts +4 -0
  224. package/dist/turns/sent-record.d.ts.map +1 -0
  225. package/dist/turns/sent-record.js +11 -0
  226. package/dist/turns/sent-record.js.map +1 -0
  227. package/dist/turns/settle-calls.d.ts.map +1 -1
  228. package/dist/turns/settle-calls.js +1 -19
  229. package/dist/turns/settle-calls.js.map +1 -1
  230. package/dist/turns/start-turn.js +1 -1
  231. package/dist/turns/start-turn.js.map +1 -1
  232. package/dist/turns/step.d.ts.map +1 -1
  233. package/dist/turns/step.js +36 -9
  234. package/dist/turns/step.js.map +1 -1
  235. package/dist/ui/register-ui.js +1 -1
  236. package/dist/ui/register-ui.js.map +1 -1
  237. package/dist/web/components/approval.css +1 -1
  238. package/dist/web/components/call.css +1 -1
  239. package/dist/web/components/call.js +1 -1
  240. package/dist/web/components/connectors.css +1 -1
  241. package/dist/web/components/connectors.js +186 -155
  242. package/dist/web/components/conversation.css +1 -1
  243. package/dist/web/components/conversation.js +1391 -1268
  244. package/dist/web/components/mcp-sign-in.css +1 -1
  245. package/dist/web/components/model.css +1 -1
  246. package/dist/web/components/preferences.css +1 -1
  247. package/dist/web/components/question.css +1 -1
  248. package/dist/web/components/sessions.css +1 -1
  249. package/dist/web/components/sessions.js +11 -7
  250. package/docs/connectors.md +3 -3
  251. package/locales/ar.json +17 -1
  252. package/locales/en.json +17 -1
  253. package/package.json +19 -4
  254. package/dist/delegate/start-pending.d.ts +0 -5
  255. package/dist/delegate/start-pending.d.ts.map +0 -1
  256. package/dist/delegate/start-pending.js +0 -42
  257. package/dist/delegate/start-pending.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"process-handlers.js","sourceRoot":"","sources":["../../src/jobs/process-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-handlers.js","sourceRoot":"","sources":["../../src/jobs/process-handlers.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,10 @@ export declare const processId: (name: string) => string | undefined;
8
8
  export type ProcessStatus = 'running' | 'succeeded' | 'failed' | 'cancelled' | 'interrupted';
9
9
  export declare function processStatus(doc: ProcessDoc): ProcessStatus;
10
10
  export type EndPatch = Pick<ProcessDoc, 'end' | 'reported'> & Partial<Pick<ProcessDoc, 'exitCode' | 'signal'>>;
11
- /** Records how a process ended, once: the record when this call set the end, `undefined` when it had ended already. */
11
+ /**
12
+ * Records how a process ended, once: the record when this call set the end, `undefined` when it had ended already. A
13
+ * notify line's exit by itself past its startup second stays unreported, for its watcher to report (ADR 0108, 16).
14
+ */
12
15
  export declare function markEnd(ctx: Ctx, id: string, patch: EndPatch): Promise<Stored<ProcessDoc> | undefined>;
13
16
  /** A session's process, or `undefined` when the session has none with that id. */
14
17
  export declare function sessionProcess(ctx: Ctx, sessionId: string, id: string): Promise<Stored<ProcessDoc> | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"process-records.d.ts","sourceRoot":"","sources":["../../src/jobs/process-records.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMxD,uFAAuF;AACvF,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAE1C,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,KAAG,MAAqB,CAAC;AAE/D,2FAA2F;AAC3F,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAA8E,CAAC;AAEjI,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;AAE7F,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,CAI5D;AAED,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC;AAE/G,uHAAuH;AACvH,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAM5G;AAED,kFAAkF;AAClF,wBAAsB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAGrH"}
1
+ {"version":3,"file":"process-records.d.ts","sourceRoot":"","sources":["../../src/jobs/process-records.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMxD,uFAAuF;AACvF,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAE1C,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,KAAG,MAAqB,CAAC;AAE/D,2FAA2F;AAC3F,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAA8E,CAAC;AAEjI,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;AAE7F,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,CAI5D;AAED,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC;AAE/G;;;GAGG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAO5G;AAED,kFAAkF;AAClF,wBAAsB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAGrH"}
@@ -13,13 +13,17 @@ export function processStatus(doc) {
13
13
  return doc.exitCode === 0 ? 'succeeded' : 'failed';
14
14
  return doc.end === 'interrupted' ? 'interrupted' : 'cancelled';
15
15
  }
16
- /** Records how a process ended, once: the record when this call set the end, `undefined` when it had ended already. */
16
+ /**
17
+ * Records how a process ended, once: the record when this call set the end, `undefined` when it had ended already. A
18
+ * notify line's exit by itself past its startup second stays unreported, for its watcher to report (ADR 0108, 16).
19
+ */
17
20
  export async function markEnd(ctx, id, patch) {
18
21
  return ctx.store.transaction((tx) => {
19
22
  const doc = txRecords(tx).processes.get(id);
20
23
  if (doc === undefined || doc.end !== undefined)
21
24
  return undefined;
22
- return txRecords(tx).processes.update(id, { ...patch, endedAt: now() });
25
+ const watched = doc.notify === true && doc.starting !== true && patch.end === 'exited';
26
+ return txRecords(tx).processes.update(id, { ...patch, ...(watched ? { reported: false } : {}), endedAt: now() });
23
27
  });
24
28
  }
25
29
  /** A session's process, or `undefined` when the session has none with that id. */
@@ -1 +1 @@
1
- {"version":3,"file":"process-records.js","sourceRoot":"","sources":["../../src/jobs/process-records.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE7D,wHAAwH;AAExH,uFAAuF;AACvF,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAE1C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;AAE/D,2FAA2F;AAC3F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAIjI,MAAM,UAAU,aAAa,CAAC,GAAe;IAC3C,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7E,OAAO,GAAG,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC;AACjE,CAAC;AAID,uHAAuH;AACvH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAQ,EAAE,EAAU,EAAE,KAAe;IACjE,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE;QAClC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACjE,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAQ,EAAE,SAAiB,EAAE,EAAU;IAC1E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,GAAG,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"process-records.js","sourceRoot":"","sources":["../../src/jobs/process-records.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE7D,wHAAwH;AAExH,uFAAuF;AACvF,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAE1C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;AAE/D,2FAA2F;AAC3F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAIjI,MAAM,UAAU,aAAa,CAAC,GAAe;IAC3C,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7E,OAAO,GAAG,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC;AACjE,CAAC;AAID;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAQ,EAAE,EAAU,EAAE,KAAe;IACjE,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE;QAClC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACjE,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC;QACvF,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACnH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAQ,EAAE,SAAiB,EAAE,EAAU;IAC1E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,GAAG,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC"}
@@ -4,7 +4,8 @@ import type { ProcessDoc } from '../schemas/records.ts';
4
4
  export declare function outputTail(ctx: Ctx, id: string, lines: number): Promise<string>;
5
5
  /** Deletes the url artifacts an ended process served (ADR 0104); one still in its startup second served none. */
6
6
  export declare function deleteEndedArtifacts(ctx: Ctx, doc: Stored<ProcessDoc>): Promise<string[]>;
7
- export declare function reportEnd(ctx: Ctx, doc: Stored<ProcessDoc>, deleted: readonly string[]): Promise<void>;
7
+ /** Tells the chat how `doc` ended; `startTurn` only for a notify line's watcher, which is no handler's job (ADR 0108, 16). */
8
+ export declare function reportEnd(ctx: Ctx, doc: Stored<ProcessDoc>, deleted: readonly string[], startTurn?: boolean): Promise<void>;
8
9
  /** Reports the endings no handler could write into this session (kvman stopped or died), once, in one message. */
9
10
  export declare function reportInterrupted(ctx: Ctx, sessionId: string): Promise<void>;
10
11
  //# sourceMappingURL=process-report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"process-report.d.ts","sourceRoot":"","sources":["../../src/jobs/process-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAaxD,kEAAkE;AAClE,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOrF;AASD,iHAAiH;AACjH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG/F;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5G;AAUD,kHAAkH;AAClH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlF"}
1
+ {"version":3,"file":"process-report.d.ts","sourceRoot":"","sources":["../../src/jobs/process-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAcxD,kEAAkE;AAClE,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOrF;AASD,iHAAiH;AACjH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG/F;AAED,8HAA8H;AAC9H,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAK/H;AAUD,kHAAkH;AAClH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYlF"}
@@ -1,12 +1,13 @@
1
1
  import { ProblemError } from '@kvman/sdk';
2
- import { appendBackground, backgroundText } from "../turns/background.js";
2
+ import { appendBackground, appendEnding, backgroundText } from "../turns/background.js";
3
3
  import { plainText } from "../result-text.js";
4
4
  import { records } from "../store/collections.js";
5
5
  import { deleteServedArtifacts, deletedArtifactsText } from "../artifacts/served-artifacts.js";
6
6
  import { processName } from "./process-records.js";
7
7
  import { lastLines, outputLines } from "./process-text.js";
8
8
  // Telling a session how a background process ended (ADR 0009, 150): one background message with the outcome and the
9
- // last 20 lines of output. It never starts a turn, since a handler's jobs carry the `fromHandler` mark.
9
+ // last 20 lines of output. It starts a turn only for a notify line, from its watcher; a handler's jobs carry the
10
+ // `fromHandler` mark and start none.
10
11
  const reportLines = 20;
11
12
  /** A process's last lines of output; none when it left no log. */
12
13
  export async function outputTail(ctx, id, lines) {
@@ -34,11 +35,12 @@ export async function deleteEndedArtifacts(ctx, doc) {
34
35
  return [];
35
36
  return deleteServedArtifacts(ctx, doc.sessionId, await outputTail(ctx, doc.id, outputLines));
36
37
  }
37
- export async function reportEnd(ctx, doc, deleted) {
38
+ /** Tells the chat how `doc` ended; `startTurn` only for a notify line's watcher, which is no handler's job (ADR 0108, 16). */
39
+ export async function reportEnd(ctx, doc, deleted, startTurn = false) {
38
40
  const tail = await outputTail(ctx, doc.id, reportLines);
39
41
  const artifacts = deletedArtifactsText(deleted);
40
42
  const text = `The process ${outcome(doc)}${artifacts === '' ? '' : `\n${artifacts}`}${tail === '' ? '' : `\nIts last output:\n${tail}`}`;
41
- await appendBackground(ctx, doc.sessionId, { kind: 'job', jobId: doc.id }, backgroundText(doc.call, doc.id, text), false);
43
+ await appendEnding(ctx, doc.sessionId, { kind: 'job', jobId: doc.id }, backgroundText(doc.call, doc.id, text), startTurn);
42
44
  }
43
45
  /** The message that reports the runs that ended while kvman was stopped: one line per run, with no output (ADR 0085, 5). */
44
46
  function interruptedText(ended) {
@@ -48,7 +50,8 @@ function interruptedText(ended) {
48
50
  /** Reports the endings no handler could write into this session (kvman stopped or died), once, in one message. */
49
51
  export async function reportInterrupted(ctx, sessionId) {
50
52
  const store = records(ctx.store);
51
- const ended = (await store.processes.find({ sessionId, reported: false }, { limit: 1000 })).filter((doc) => doc.end !== undefined);
53
+ // A notify line's exit is its watcher's to report (ADR 0108, 16).
54
+ const ended = (await store.processes.find({ sessionId, reported: false }, { limit: 1000 })).filter((doc) => doc.end !== undefined && !(doc.notify === true && doc.end === 'exited'));
52
55
  if (ended.length === 0)
53
56
  return;
54
57
  const told = [];
@@ -1 +1 @@
1
- {"version":3,"file":"process-report.js","sourceRoot":"","sources":["../../src/jobs/process-report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-report.js","sourceRoot":"","sources":["../../src/jobs/process-report.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export declare function startedOutcome(doc: Pick<ProcessDoc, 'end' | 'exitCode'
15
15
  signal: string | null;
16
16
  };
17
17
  /** Starts `line` in the real shell for a session, titled by the line (ADR 0089, 1); a line that can't start fails `VALIDATION_FAILED` and leaves no record. */
18
- export declare function startProcess(ctx: Ctx, sessionId: string, shell: ShellCommand, line: string): Promise<StartedProcess>;
18
+ export declare function startProcess(ctx: Ctx, sessionId: string, shell: ShellCommand, line: string, notify?: boolean): Promise<StartedProcess>;
19
19
  /** What a stop did: whether it stopped the run, and the url artifacts of a stopped process it deleted (ADR 0104). */
20
20
  export type Stopped = {
21
21
  stopped: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"process-run.d.ts","sourceRoot":"","sources":["../../src/jobs/process-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AASxD,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE/H,+FAA+F;AAC/F,wBAAgB,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAOvJ;AAED,+JAA+J;AAC/J,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAkB1H;AAED,qHAAqH;AACrH,MAAM,MAAM,OAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEvE;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,QAAQ,EAAE,UAAU,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAYjI;AAED,+FAA+F;AAC/F,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E"}
1
+ {"version":3,"file":"process-run.d.ts","sourceRoot":"","sources":["../../src/jobs/process-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAM9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AASxD,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE/H,+FAA+F;AAC/F,wBAAgB,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAOvJ;AAED,+JAA+J;AAC/J,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAoB1I;AAED,qHAAqH;AACrH,MAAM,MAAM,OAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEvE;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,QAAQ,EAAE,UAAU,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAYjI;AAED,+FAA+F;AAC/F,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E"}
@@ -4,6 +4,7 @@ import { plainEnvironment } from "../result-text.js";
4
4
  import { now } from "../sessions/session-lookup.js";
5
5
  import { records, txRecords } from "../store/collections.js";
6
6
  import { markEnd, processName } from "./process-records.js";
7
+ import { watchNotified } from "./notify-watch.js";
7
8
  import { deleteEndedArtifacts, outputTail, reportEnd } from "./process-report.js";
8
9
  // A background shell line (ADR 0009, 149): it runs in the kernel's process service, and the call returns its id and the
9
10
  // first second of its output. Stopping one is kvcoder's own call, since the kernel reports no event for a stop.
@@ -22,9 +23,9 @@ export function startedOutcome(doc) {
22
23
  return { ended: true, exitCode: null, signal: null };
23
24
  }
24
25
  /** Starts `line` in the real shell for a session, titled by the line (ADR 0089, 1); a line that can't start fails `VALIDATION_FAILED` and leaves no record. */
25
- export async function startProcess(ctx, sessionId, shell, line) {
26
+ export async function startProcess(ctx, sessionId, shell, line, notify = false) {
26
27
  const store = records(ctx.store);
27
- const doc = await store.processes.insert({ workspaceId: ctx.job.workspace.id, sessionId, title: line, call: line, startedAt: now(), reported: false, starting: true });
28
+ const doc = await store.processes.insert({ workspaceId: ctx.job.workspace.id, sessionId, title: line, call: line, startedAt: now(), reported: false, starting: true, ...(notify ? { notify: true } : {}) });
28
29
  try {
29
30
  await ctx.processes.start(processName(doc.id), { command: shell.program, args: shell.args(line), env: plainEnvironment(process.env) });
30
31
  }
@@ -41,7 +42,10 @@ export async function startProcess(ctx, sessionId, shell, line) {
41
42
  return undefined;
42
43
  return current.end === undefined ? txRecords(tx).processes.update(doc.id, { starting: false }) : current;
43
44
  });
44
- return { output, jobId: doc.id, ...startedOutcome(settled ?? doc) };
45
+ const outcome = startedOutcome(settled ?? doc);
46
+ if (notify && !outcome.ended)
47
+ await watchNotified(ctx, doc.id);
48
+ return { output, jobId: doc.id, ...outcome };
45
49
  }
46
50
  /**
47
51
  * Stops a running process for `by`, deleting the url artifacts it served unless it starts again (the person's Restart);
@@ -1 +1 @@
1
- {"version":3,"file":"process-run.js","sourceRoot":"","sources":["../../src/jobs/process-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-run.js","sourceRoot":"","sources":["../../src/jobs/process-run.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,19 @@
1
1
  import { type Ctx } from '@kvman/sdk';
2
2
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
3
3
  import type { RequestOptions } from '@modelcontextprotocol/sdk/shared/protocol.js';
4
- import type { McpServer } from './servers.ts';
5
- /** The variable a command server reads the workspace folder from. */
6
- export declare const workspaceVariable = "KVMAN_WORKSPACE";
4
+ import { type McpServer } from './servers.ts';
5
+ export { workspaceVariable } from './servers.ts';
7
6
  /** What the work gets: the connected client, and the options every request of this connection takes. */
8
7
  export type Connection = {
9
8
  client: Client;
10
9
  request: RequestOptions;
11
10
  };
12
- /** Connects to a server, runs `work`, and closes the connection; a failure is a Problem with the reason. */
13
- export declare function withServer<Result>(ctx: Ctx, server: McpServer, timeoutMs: number, work: (connection: Connection) => Promise<Result>): Promise<Result>;
11
+ /** A turn's hold on a server: the address its calls reach, the MCP session they share, and how to keep a new one. */
12
+ export type TurnLink = {
13
+ url: string;
14
+ sessionId: string | null;
15
+ keep(sessionId: string | null): Promise<void>;
16
+ };
17
+ /** Connects to a server, through `link` for a kept one, runs `work`, and closes the connection; a failure is a Problem with the reason. */
18
+ export declare function withServer<Result>(ctx: Ctx, server: McpServer, timeoutMs: number, work: (connection: Connection) => Promise<Result>, link?: TurnLink): Promise<Result>;
14
19
  //# sourceMappingURL=connect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/mcp/connect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAKnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAO9C,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAEnD,wGAAwG;AACxG,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AA+BrE,4GAA4G;AAC5G,wBAAsB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB3J"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/mcp/connect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAKnF,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AASjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,wGAAwG;AACxG,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AAIrE,qHAAqH;AACrH,MAAM,MAAM,QAAQ,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAmChH,2IAA2I;AAC3I,wBAAsB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB5K"}
@@ -9,13 +9,20 @@ import { OAuthError } from '@modelcontextprotocol/sdk/server/auth/errors.js';
9
9
  import { commandTransport } from "./command-transport.js";
10
10
  import { oauthProvider, registeredRedirect } from "./oauth-provider.js";
11
11
  import { serverSecrets, withoutSecrets } from "./secrets.js";
12
- // One connection to an MCP server (plan 08 §8.5, ADR 0020, 4): connect, do the work, close. Nothing is kept between
13
- // calls. The connection ends with the job's signal and at the timeout, and a command's process tree is killed then.
12
+ import { workspaceVariable } from "./servers.js";
13
+ // One connection to an MCP server (plan 08 §8.5, ADR 0020, 4): connect, do the work, close. A server over HTTP, or a
14
+ // command run with a `port`, is reached through its turn's link (ADR 0108, 12): the call joins the MCP session the turn
15
+ // keeps, and closing ends only this call's stream. Otherwise nothing is kept between calls. The connection ends with
16
+ // the job's signal and at the timeout, and a command's process tree is killed then.
14
17
  // A command runs in a folder of its own that is deleted with the connection (ADR 0070, 7), so the logs and snapshots a
15
18
  // server writes beside itself never land in the person's project; it finds the project in `KVMAN_WORKSPACE`.
16
- /** The variable a command server reads the workspace folder from. */
17
- export const workspaceVariable = 'KVMAN_WORKSPACE';
18
- async function open(ctx, server, secrets) {
19
+ export { workspaceVariable } from "./servers.js";
20
+ async function open(ctx, server, secrets, link) {
21
+ if (link !== undefined && 'command' in server) {
22
+ // The command runs for the turn, with the server's variables; nothing secret goes in a request.
23
+ const resumed = link.sessionId === null ? {} : { sessionId: link.sessionId };
24
+ return { transport: new StreamableHTTPClientTransport(new URL(link.url), resumed) };
25
+ }
19
26
  if ('command' in server) {
20
27
  const folder = await mkdtemp(path.join(tmpdir(), 'kvman-mcp-'));
21
28
  const command = commandTransport({ command: server.command, args: server.args, cwd: folder, env: { [workspaceVariable]: ctx.job.workspace.path, ...secrets } });
@@ -26,7 +33,8 @@ async function open(ctx, server, secrets) {
26
33
  // A server the person signed in to is called with its tokens, which are refreshed when they have expired.
27
34
  const redirectUrl = await registeredRedirect(ctx, server.name, server.url);
28
35
  const signedIn = redirectUrl === undefined ? {} : { authProvider: oauthProvider(ctx, server.name, server.url, { redirectUrl, step: 'call' }) };
29
- const transport = new StreamableHTTPClientTransport(new URL(server.url), { requestInit: { headers: secrets }, ...signedIn });
36
+ const resumed = link === undefined || link.sessionId === null ? {} : { sessionId: link.sessionId };
37
+ const transport = new StreamableHTTPClientTransport(new URL(server.url), { requestInit: { headers: secrets }, ...signedIn, ...resumed });
30
38
  return { transport };
31
39
  }
32
40
  // The server refused the call for lack of a sign-in it takes: no tokens, or tokens it no longer refreshes.
@@ -40,21 +48,26 @@ function failure(server, error, opened, secrets, timedOutAfterMs) {
40
48
  const reason = withoutSecrets([said, opened.command?.errorOutput() ?? ''].filter((part) => part !== '').join('\n'), secrets);
41
49
  return new ProblemError({ code: 'kvcoder/MCP_CONNECT_FAILED', message: `The MCP server ${server.name} failed: ${reason}`, params: { server: server.name, reason } });
42
50
  }
43
- /** Connects to a server, runs `work`, and closes the connection; a failure is a Problem with the reason. */
44
- export async function withServer(ctx, server, timeoutMs, work) {
51
+ /** Connects to a server, through `link` for a kept one, runs `work`, and closes the connection; a failure is a Problem with the reason. */
52
+ export async function withServer(ctx, server, timeoutMs, work, link) {
45
53
  const secrets = await serverSecrets(ctx, server);
46
54
  const { version } = await ctx.exec('kernel.health.get', {});
47
- const opened = await open(ctx, server, secrets);
55
+ const opened = await open(ctx, server, secrets, link);
48
56
  const deadline = AbortSignal.timeout(timeoutMs);
49
57
  const request = { signal: AbortSignal.any([ctx.job.signal, deadline]), timeout: timeoutMs, maxTotalTimeout: timeoutMs };
50
58
  const client = new Client({ name: 'kvman', version });
51
59
  try {
52
60
  await client.connect(opened.transport, request);
61
+ if (link !== undefined && opened.transport.sessionId !== link.sessionId)
62
+ await link.keep(opened.transport.sessionId ?? null);
53
63
  return await work({ client, request });
54
64
  }
55
65
  catch (error) {
56
66
  if (error instanceof ProblemError || ctx.job.signal.aborted)
57
67
  throw error;
68
+ // A kept session whose connection failed is made again at the next call.
69
+ if (link !== undefined)
70
+ await link.keep(null);
58
71
  throw failure(server, error, opened, secrets, deadline.aborted ? timeoutMs : undefined);
59
72
  }
60
73
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/mcp/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/mcp/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAY,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AACxH,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAG7E,OAAO,EAAE,gBAAgB,EAAyB,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAkB,MAAM,cAAc,CAAC;AAEjE,qHAAqH;AACrH,wHAAwH;AACxH,qHAAqH;AACrH,oFAAoF;AACpF,uHAAuH;AACvH,6GAA6G;AAE7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAUjD,KAAK,UAAU,IAAI,CAAC,GAAQ,EAAE,MAAiB,EAAE,OAA+B,EAAE,IAAe;IAC/F,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QAC9C,gGAAgG;QAChG,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7E,OAAO,EAAE,SAAS,EAAE,IAAI,6BAA6B,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAc,EAAE,CAAC;IACnG,CAAC;IACD,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;QAChK,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACjD,CAAC;IACD,gHAAgH;IAChH,+EAA+E;IAC/E,0GAA0G;IAC1G,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAC/I,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACnG,MAAM,SAAS,GAAc,IAAI,6BAA6B,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAc,CAAC;IACjK,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC;AAED,2GAA2G;AAC3G,MAAM,cAAc,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,KAAK,YAAY,iBAAiB,IAAI,KAAK,YAAY,UAAU,IAAI,CAAC,KAAK,YAAY,mBAAmB,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAEtL,oHAAoH;AACpH,0DAA0D;AAC1D,SAAS,OAAO,CAAC,MAAiB,EAAE,KAAc,EAAE,MAAc,EAAE,OAA+B,EAAE,eAAmC;IACtI,IAAI,cAAc,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,kBAAkB,MAAM,CAAC,IAAI,iEAAiE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrO,MAAM,IAAI,GAAG,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC;IACzK,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7H,OAAO,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,kBAAkB,MAAM,CAAC,IAAI,YAAY,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACvK,CAAC;AAED,2IAA2I;AAC3I,MAAM,CAAC,KAAK,UAAU,UAAU,CAAS,GAAQ,EAAE,MAAiB,EAAE,SAAiB,EAAE,IAAiD,EAAE,IAAe;IACzJ,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,OAAO,GAAmB,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;IACxI,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QAC7H,OAAO,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,YAAY,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,KAAK,CAAC;QACzE,yEAAyE;QACzE,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1F,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { z, type Ctx } from '@kvman/sdk';
2
+ /** The variable a command server reads the workspace folder from. */
3
+ export declare const workspaceVariable = "KVMAN_WORKSPACE";
2
4
  /** One MCP server: a command, or an address. */
3
5
  export declare const mcpServerSchema: z.ZodUnion<readonly [z.ZodObject<{
4
6
  name: z.ZodString;
@@ -6,6 +8,7 @@ export declare const mcpServerSchema: z.ZodUnion<readonly [z.ZodObject<{
6
8
  command: z.ZodString;
7
9
  args: z.ZodArray<z.ZodString>;
8
10
  env: z.ZodArray<z.ZodString>;
11
+ port: z.ZodExactOptional<z.ZodNumber>;
9
12
  }, z.core.$strict>, z.ZodObject<{
10
13
  name: z.ZodString;
11
14
  description: z.ZodString;
@@ -19,6 +22,7 @@ export declare const mcpServersSchema: z.ZodArray<z.ZodUnion<readonly [z.ZodObje
19
22
  command: z.ZodString;
20
23
  args: z.ZodArray<z.ZodString>;
21
24
  env: z.ZodArray<z.ZodString>;
25
+ port: z.ZodExactOptional<z.ZodNumber>;
22
26
  }, z.core.$strict>, z.ZodObject<{
23
27
  name: z.ZodString;
24
28
  description: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../src/mcp/servers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,CAAC,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAkBvD,gDAAgD;AAChD,eAAO,MAAM,eAAe;;;;;;;;;;;oBAAkD,CAAC;AAE/E,uEAAuE;AACvE,eAAO,MAAM,gBAAgB;;;;;;;;;;;qBAAyJ,CAAC;AAEvL,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAEzD,kEAAkE;AAClE,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAE/D;AAED,uFAAuF;AACvF,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAM1E"}
1
+ {"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../src/mcp/servers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,CAAC,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAOvD,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAenD,gDAAgD;AAChD,eAAO,MAAM,eAAe;;;;;;;;;;;;oBAAkD,CAAC;AAE/E,uEAAuE;AACvE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;qBAAyJ,CAAC;AAEvL,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAEzD,kEAAkE;AAClE,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAE/D;AAED,uFAAuF;AACvF,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAM1E"}
@@ -3,13 +3,17 @@ import { wordSchema } from "../schemas/registry.js";
3
3
  // The MCP servers the person added (plan 08 §8.5, ADR 0020, 4, 6, and 9): the setting `kvcoder.mcp.servers`. A server
4
4
  // is a command that speaks MCP on its standard input and output, or an address reached over Streamable HTTP. `env` and
5
5
  // `headers` hold names only: each value is one of kvcoder's secrets.
6
+ /** The variable a command server reads the workspace folder from. */
7
+ export const workspaceVariable = 'KVMAN_WORKSPACE';
6
8
  const text = z.string().min(1);
7
9
  const variableName = z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/, 'Use letters, digits, and _, not starting with a digit.');
8
10
  const headerName = z.string().regex(/^[A-Za-z0-9!#$%&'*+.^_`|~-]+$/, 'Use the characters of an HTTP header name.');
9
11
  function isHttpAddress(value) {
10
12
  return URL.canParse(value) && ['http:', 'https:'].includes(new URL(value).protocol);
11
13
  }
12
- const commandServerSchema = z.strictObject({ name: wordSchema, description: text, command: text, args: z.array(z.string()), env: z.array(variableName) });
14
+ // A command server with `port` serves MCP over HTTP on that port of this machine: kvman runs it for a turn, and the
15
+ // turn's calls share its session (ADR 0108, 12).
16
+ const commandServerSchema = z.strictObject({ name: wordSchema, description: text, command: text, args: z.array(z.string()), env: z.array(variableName), port: z.number().int().min(1024).max(65535).exactOptional() });
13
17
  const urlServerSchema = z.strictObject({ name: wordSchema, description: text, url: z.string().refine(isHttpAddress, 'Give an http or https address.'), headers: z.array(headerName) });
14
18
  /** One MCP server: a command, or an address. */
15
19
  export const mcpServerSchema = z.union([commandServerSchema, urlServerSchema]);
@@ -1 +1 @@
1
- {"version":3,"file":"servers.js","sourceRoot":"","sources":["../../src/mcp/servers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"servers.js","sourceRoot":"","sources":["../../src/mcp/servers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type Ctx } from '@kvman/sdk';
2
+ import type { TurnLink } from './connect.ts';
3
+ import { type McpServer } from './servers.ts';
4
+ /** The turn's link to a kept server, or `undefined` for a command server without a port, which connects per call. */
5
+ export declare function turnLink(ctx: Ctx, sessionId: string, server: McpServer): Promise<TurnLink | undefined>;
6
+ /** Stops the servers a turn kept and forgets them, when the turn ends. */
7
+ export declare function closeTurnServers(ctx: Ctx, turnId: string): Promise<void>;
8
+ //# sourceMappingURL=turn-servers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-servers.d.ts","sourceRoot":"","sources":["../../src/mcp/turn-servers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,GAAG,EAAe,MAAM,YAAY,CAAC;AAKjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AA8CjE,qHAAqH;AACrH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAa5G;AAED,0EAA0E;AAC1E,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9E"}
@@ -0,0 +1,88 @@
1
+ import { mkdtemp, rm } from 'node:fs/promises';
2
+ import { connect } from 'node:net';
3
+ import { tmpdir } from 'node:os';
4
+ import path from 'node:path';
5
+ import { ProblemError } from '@kvman/sdk';
6
+ import { delay } from "../delay.js";
7
+ import { now } from "../sessions/session-lookup.js";
8
+ import { records } from "../store/collections.js";
9
+ import { workspaceVariable } from "./servers.js";
10
+ // The servers a turn keeps for its life (plan 08 §8.5, ADR 0108, 12): a server over HTTP keeps its MCP session, and a
11
+ // command with a `port` is started once, through the kernel's process service, as an HTTP server on that port of this
12
+ // machine. The turn's calls join the same session, so a browser keeps its page; the turn's end stops them all.
13
+ const startWithinMs = 20_000;
14
+ const lookEveryMs = 200;
15
+ const processNameOf = (turnId, server) => `mcp-${turnId}-${server}`;
16
+ // Whether something on this machine accepts a connection at `port`.
17
+ function listening(port) {
18
+ return new Promise((resolve) => {
19
+ const socket = connect({ host: '127.0.0.1', port });
20
+ const settle = (answered) => { socket.destroy(); resolve(answered); };
21
+ socket.once('connect', () => settle(true));
22
+ socket.once('error', () => settle(false));
23
+ });
24
+ }
25
+ async function record(ctx, turnId, server) {
26
+ const store = records(ctx.store).mcpSessions;
27
+ return (await store.find({ turnId, server }, { limit: 1 }))[0] ?? store.insert({ turnId, server, mcpSessionId: null, processName: null, folder: null, createdAt: now() });
28
+ }
29
+ // Starts the turn's command server unless it runs, and waits until its port answers.
30
+ async function started(ctx, doc, server, port) {
31
+ const name = processNameOf(doc.turnId, server.name);
32
+ if ((await ctx.processes.list()).some((process) => process.name === name))
33
+ return;
34
+ const folder = doc.folder ?? (await mkdtemp(path.join(tmpdir(), 'kvman-mcp-')));
35
+ await records(ctx.store).mcpSessions.update(doc.id, { processName: name, folder, mcpSessionId: null });
36
+ // The secrets module loads the MCP SDK, which only an MCP call needs.
37
+ const { serverSecrets } = await import("./secrets.js");
38
+ try {
39
+ await ctx.processes.start(name, { command: server.command, args: server.args, cwd: folder, env: { [workspaceVariable]: ctx.job.workspace.path, ...(await serverSecrets(ctx, server)) } });
40
+ }
41
+ catch (error) {
42
+ if (!(error instanceof ProblemError) || error.problem.code !== 'PROCESS_RUNNING')
43
+ throw error;
44
+ }
45
+ for (const until = Date.now() + startWithinMs; Date.now() < until; await delay(lookEveryMs, ctx.job.signal)) {
46
+ ctx.job.signal.throwIfAborted();
47
+ if (await listening(port))
48
+ return;
49
+ }
50
+ throw new ProblemError({ code: 'kvcoder/MCP_CONNECT_FAILED', message: `The MCP server ${server.name} failed: nothing answered on port ${String(port)} within ${String(startWithinMs / 1000)} s`, params: { server: server.name, reason: 'not listening' } });
51
+ }
52
+ /** The turn's link to a kept server, or `undefined` for a command server without a port, which connects per call. */
53
+ export async function turnLink(ctx, sessionId, server) {
54
+ const port = 'command' in server ? server.port : undefined;
55
+ if ('command' in server && port === undefined)
56
+ return undefined;
57
+ const turnId = (await records(ctx.store).sessions.get(sessionId))?.turnId ?? null;
58
+ if (turnId === null)
59
+ return undefined;
60
+ const doc = await record(ctx, turnId, server.name);
61
+ if ('command' in server && port !== undefined)
62
+ await started(ctx, doc, server, port);
63
+ const current = (await records(ctx.store).mcpSessions.get(doc.id)) ?? doc;
64
+ return {
65
+ url: 'url' in server ? server.url : `http://127.0.0.1:${String(port)}/mcp`,
66
+ sessionId: current.mcpSessionId,
67
+ keep: async (mcpSessionId) => { await records(ctx.store).mcpSessions.update(doc.id, { mcpSessionId }); },
68
+ };
69
+ }
70
+ /** Stops the servers a turn kept and forgets them, when the turn ends. */
71
+ export async function closeTurnServers(ctx, turnId) {
72
+ const store = records(ctx.store).mcpSessions;
73
+ for (const doc of await store.find({ turnId }, { limit: 1000 })) {
74
+ if (doc.processName !== null) {
75
+ try {
76
+ await ctx.processes.stop(doc.processName);
77
+ }
78
+ catch (error) {
79
+ if (!(error instanceof ProblemError) || error.problem.code !== 'NOT_FOUND')
80
+ throw error;
81
+ }
82
+ }
83
+ if (doc.folder !== null)
84
+ await rm(doc.folder, { recursive: true, force: true });
85
+ await store.delete(doc.id);
86
+ }
87
+ }
88
+ //# sourceMappingURL=turn-servers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-servers.js","sourceRoot":"","sources":["../../src/mcp/turn-servers.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export type PromptInput = {
25
25
  name: string;
26
26
  description: string;
27
27
  commands: readonly string[];
28
- signatures?: readonly string[];
28
+ signatures?: readonly (string | undefined)[];
29
29
  }[];
30
30
  };
31
31
  export type BuiltPrompt = {
@@ -1 +1 @@
1
- {"version":3,"file":"build-prompt.d.ts","sourceRoot":"","sources":["../../src/prompt/build-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAA+B,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAK1F,MAAM,MAAM,WAAW,GAAG;IACxB,8GAA8G;IAC9G,IAAI,EAAE,IAAI,CAAC;IACX,2HAA2H;IAC3H,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0FAA0F;IAC1F,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACpE,UAAU,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CAC3H,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,CAAC;AASvG,6EAA6E;AAC7E,eAAO,MAAM,UAAU,+KAA+K,CAAC;AAoDvM,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAO3D"}
1
+ {"version":3,"file":"build-prompt.d.ts","sourceRoot":"","sources":["../../src/prompt/build-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAA+B,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAK1F,MAAM,MAAM,WAAW,GAAG;IACxB,8GAA8G;IAC9G,IAAI,EAAE,IAAI,CAAC;IACX,2HAA2H;IAC3H,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0FAA0F;IAC1F,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACpE,UAAU,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAA;KAAE,EAAE,CAAC;CACzI,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,CAAC;AASvG,6EAA6E;AAC7E,eAAO,MAAM,UAAU,+KAA+K,CAAC;AAoDvM,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAO3D"}
@@ -30,11 +30,10 @@ function connectorLine(connector) {
30
30
  const signatures = connector.signatures;
31
31
  const names = [...connector.commands, 'help'];
32
32
  const width = Math.max(...names.map((name) => name.length));
33
+ // A command whose payload has no signature (one that isn't an object with properties) is its name alone.
33
34
  const rows = connector.commands.map((name, index) => {
34
35
  const signature = signatures[index];
35
- if (signature === undefined)
36
- throw new Error(`The connector ${connector.name} has no signature for the command ${name}.`);
37
- return ` ${name.padEnd(width)} ${signature}`;
36
+ return signature === undefined ? ` ${name}` : ` ${name.padEnd(width)} ${signature}`;
38
37
  });
39
38
  rows.push(` ${'help'.padEnd(width)} { command? }`);
40
39
  return [`- ${connector.name}: ${description}`, ...rows].join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"build-prompt.js","sourceRoot":"","sources":["../../src/prompt/build-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-prompt.js","sourceRoot":"","sources":["../../src/prompt/build-prompt.ts"],"names":[],"mappings":"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"}