@kvman/kvcoder 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/api.d.ts +386 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +2 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/artifacts/artifact-format.d.ts +9 -0
  8. package/dist/artifacts/artifact-format.d.ts.map +1 -0
  9. package/dist/artifacts/artifact-format.js +32 -0
  10. package/dist/artifacts/artifact-format.js.map +1 -0
  11. package/dist/artifacts/artifact-records.d.ts +12 -0
  12. package/dist/artifacts/artifact-records.d.ts.map +1 -0
  13. package/dist/artifacts/artifact-records.js +17 -0
  14. package/dist/artifacts/artifact-records.js.map +1 -0
  15. package/dist/artifacts/register-artifacts.d.ts +3 -0
  16. package/dist/artifacts/register-artifacts.d.ts.map +1 -0
  17. package/dist/artifacts/register-artifacts.js +37 -0
  18. package/dist/artifacts/register-artifacts.js.map +1 -0
  19. package/dist/calls/binary-checks.d.ts +8 -0
  20. package/dist/calls/binary-checks.d.ts.map +1 -0
  21. package/dist/calls/binary-checks.js +12 -0
  22. package/dist/calls/binary-checks.js.map +1 -0
  23. package/dist/calls/connector-help.d.ts +3 -0
  24. package/dist/calls/connector-help.d.ts.map +1 -0
  25. package/dist/calls/connector-help.js +73 -0
  26. package/dist/calls/connector-help.js.map +1 -0
  27. package/dist/calls/help-text.d.ts +19 -0
  28. package/dist/calls/help-text.d.ts.map +1 -0
  29. package/dist/calls/help-text.js +22 -0
  30. package/dist/calls/help-text.js.map +1 -0
  31. package/dist/calls/line-run.d.ts +33 -0
  32. package/dist/calls/line-run.d.ts.map +1 -0
  33. package/dist/calls/line-run.js +56 -0
  34. package/dist/calls/line-run.js.map +1 -0
  35. package/dist/calls/run-shell.d.ts +12 -0
  36. package/dist/calls/run-shell.d.ts.map +1 -0
  37. package/dist/calls/run-shell.js +88 -0
  38. package/dist/calls/run-shell.js.map +1 -0
  39. package/dist/calls/run-tool.d.ts +49 -0
  40. package/dist/calls/run-tool.d.ts.map +1 -0
  41. package/dist/calls/run-tool.js +66 -0
  42. package/dist/calls/run-tool.js.map +1 -0
  43. package/dist/calls/shell-command.d.ts +25 -0
  44. package/dist/calls/shell-command.d.ts.map +1 -0
  45. package/dist/calls/shell-command.js +31 -0
  46. package/dist/calls/shell-command.js.map +1 -0
  47. package/dist/calls/shell-program.d.ts +5 -0
  48. package/dist/calls/shell-program.d.ts.map +1 -0
  49. package/dist/calls/shell-program.js +8 -0
  50. package/dist/calls/shell-program.js.map +1 -0
  51. package/dist/connector-call.d.ts +66 -0
  52. package/dist/connector-call.d.ts.map +1 -0
  53. package/dist/connector-call.js +133 -0
  54. package/dist/connector-call.js.map +1 -0
  55. package/dist/connectors/artifact.d.ts +51 -0
  56. package/dist/connectors/artifact.d.ts.map +1 -0
  57. package/dist/connectors/artifact.js +101 -0
  58. package/dist/connectors/artifact.js.map +1 -0
  59. package/dist/connectors/ask.d.ts +58 -0
  60. package/dist/connectors/ask.d.ts.map +1 -0
  61. package/dist/connectors/ask.js +85 -0
  62. package/dist/connectors/ask.js.map +1 -0
  63. package/dist/connectors/background.d.ts +29 -0
  64. package/dist/connectors/background.d.ts.map +1 -0
  65. package/dist/connectors/background.js +56 -0
  66. package/dist/connectors/background.js.map +1 -0
  67. package/dist/connectors/binary.d.ts +5 -0
  68. package/dist/connectors/binary.d.ts.map +1 -0
  69. package/dist/connectors/binary.js +27 -0
  70. package/dist/connectors/binary.js.map +1 -0
  71. package/dist/connectors/builtin-connectors.d.ts +217 -0
  72. package/dist/connectors/builtin-connectors.d.ts.map +1 -0
  73. package/dist/connectors/builtin-connectors.js +49 -0
  74. package/dist/connectors/builtin-connectors.js.map +1 -0
  75. package/dist/connectors/connector-command.d.ts +26 -0
  76. package/dist/connectors/connector-command.d.ts.map +1 -0
  77. package/dist/connectors/connector-command.js +17 -0
  78. package/dist/connectors/connector-command.js.map +1 -0
  79. package/dist/connectors/delegate.d.ts +32 -0
  80. package/dist/connectors/delegate.d.ts.map +1 -0
  81. package/dist/connectors/delegate.js +82 -0
  82. package/dist/connectors/delegate.js.map +1 -0
  83. package/dist/connectors/fs.d.ts +60 -0
  84. package/dist/connectors/fs.d.ts.map +1 -0
  85. package/dist/connectors/fs.js +132 -0
  86. package/dist/connectors/fs.js.map +1 -0
  87. package/dist/connectors/mcp.d.ts +37 -0
  88. package/dist/connectors/mcp.d.ts.map +1 -0
  89. package/dist/connectors/mcp.js +69 -0
  90. package/dist/connectors/mcp.js.map +1 -0
  91. package/dist/connectors/payload-fields.d.ts +9 -0
  92. package/dist/connectors/payload-fields.d.ts.map +1 -0
  93. package/dist/connectors/payload-fields.js +13 -0
  94. package/dist/connectors/payload-fields.js.map +1 -0
  95. package/dist/connectors/shell.d.ts +19 -0
  96. package/dist/connectors/shell.d.ts.map +1 -0
  97. package/dist/connectors/shell.js +22 -0
  98. package/dist/connectors/shell.js.map +1 -0
  99. package/dist/delay.d.ts +3 -0
  100. package/dist/delay.d.ts.map +1 -0
  101. package/dist/delay.js +11 -0
  102. package/dist/delay.js.map +1 -0
  103. package/dist/delegate/approved-run.d.ts +13 -0
  104. package/dist/delegate/approved-run.d.ts.map +1 -0
  105. package/dist/delegate/approved-run.js +54 -0
  106. package/dist/delegate/approved-run.js.map +1 -0
  107. package/dist/delegate/programs.d.ts +32 -0
  108. package/dist/delegate/programs.d.ts.map +1 -0
  109. package/dist/delegate/programs.js +67 -0
  110. package/dist/delegate/programs.js.map +1 -0
  111. package/dist/delegate/register-worker-run.d.ts +9 -0
  112. package/dist/delegate/register-worker-run.d.ts.map +1 -0
  113. package/dist/delegate/register-worker-run.js +70 -0
  114. package/dist/delegate/register-worker-run.js.map +1 -0
  115. package/dist/delegate/run-program.d.ts +9 -0
  116. package/dist/delegate/run-program.d.ts.map +1 -0
  117. package/dist/delegate/run-program.js +59 -0
  118. package/dist/delegate/run-program.js.map +1 -0
  119. package/dist/delegate/runs.d.ts +27 -0
  120. package/dist/delegate/runs.d.ts.map +1 -0
  121. package/dist/delegate/runs.js +68 -0
  122. package/dist/delegate/runs.js.map +1 -0
  123. package/dist/delegate/workers.d.ts +266 -0
  124. package/dist/delegate/workers.d.ts.map +1 -0
  125. package/dist/delegate/workers.js +80 -0
  126. package/dist/delegate/workers.js.map +1 -0
  127. package/dist/docs.d.ts +14 -0
  128. package/dist/docs.d.ts.map +1 -0
  129. package/dist/docs.js +59 -0
  130. package/dist/docs.js.map +1 -0
  131. package/dist/files/edit-text.d.ts +13 -0
  132. package/dist/files/edit-text.d.ts.map +1 -0
  133. package/dist/files/edit-text.js +46 -0
  134. package/dist/files/edit-text.js.map +1 -0
  135. package/dist/files/file-queue.d.ts +3 -0
  136. package/dist/files/file-queue.d.ts.map +1 -0
  137. package/dist/files/file-queue.js +17 -0
  138. package/dist/files/file-queue.js.map +1 -0
  139. package/dist/files/list-entries.d.ts +14 -0
  140. package/dist/files/list-entries.d.ts.map +1 -0
  141. package/dist/files/list-entries.js +40 -0
  142. package/dist/files/list-entries.js.map +1 -0
  143. package/dist/files/read-file.d.ts +17 -0
  144. package/dist/files/read-file.d.ts.map +1 -0
  145. package/dist/files/read-file.js +53 -0
  146. package/dist/files/read-file.js.map +1 -0
  147. package/dist/files/search-text.d.ts +14 -0
  148. package/dist/files/search-text.d.ts.map +1 -0
  149. package/dist/files/search-text.js +62 -0
  150. package/dist/files/search-text.js.map +1 -0
  151. package/dist/files/workspace-path.d.ts +5 -0
  152. package/dist/files/workspace-path.d.ts.map +1 -0
  153. package/dist/files/workspace-path.js +37 -0
  154. package/dist/files/workspace-path.js.map +1 -0
  155. package/dist/index.d.ts +6 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +68 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/jobs/job-rows.d.ts +24 -0
  160. package/dist/jobs/job-rows.d.ts.map +1 -0
  161. package/dist/jobs/job-rows.js +74 -0
  162. package/dist/jobs/job-rows.js.map +1 -0
  163. package/dist/jobs/process-handlers.d.ts +8 -0
  164. package/dist/jobs/process-handlers.d.ts.map +1 -0
  165. package/dist/jobs/process-handlers.js +43 -0
  166. package/dist/jobs/process-handlers.js.map +1 -0
  167. package/dist/jobs/process-records.d.ts +15 -0
  168. package/dist/jobs/process-records.d.ts.map +1 -0
  169. package/dist/jobs/process-records.js +30 -0
  170. package/dist/jobs/process-records.js.map +1 -0
  171. package/dist/jobs/process-report.d.ts +8 -0
  172. package/dist/jobs/process-report.d.ts.map +1 -0
  173. package/dist/jobs/process-report.js +44 -0
  174. package/dist/jobs/process-report.js.map +1 -0
  175. package/dist/jobs/process-run.d.ts +26 -0
  176. package/dist/jobs/process-run.d.ts.map +1 -0
  177. package/dist/jobs/process-run.js +70 -0
  178. package/dist/jobs/process-run.js.map +1 -0
  179. package/dist/jobs/process-text.d.ts +5 -0
  180. package/dist/jobs/process-text.d.ts.map +1 -0
  181. package/dist/jobs/process-text.js +11 -0
  182. package/dist/jobs/process-text.js.map +1 -0
  183. package/dist/jobs/register-jobs.d.ts +3 -0
  184. package/dist/jobs/register-jobs.d.ts.map +1 -0
  185. package/dist/jobs/register-jobs.js +61 -0
  186. package/dist/jobs/register-jobs.js.map +1 -0
  187. package/dist/mcp/command-transport.d.ts +17 -0
  188. package/dist/mcp/command-transport.d.ts.map +1 -0
  189. package/dist/mcp/command-transport.js +60 -0
  190. package/dist/mcp/command-transport.js.map +1 -0
  191. package/dist/mcp/connect.d.ts +12 -0
  192. package/dist/mcp/connect.d.ts.map +1 -0
  193. package/dist/mcp/connect.js +54 -0
  194. package/dist/mcp/connect.js.map +1 -0
  195. package/dist/mcp/oauth-provider.d.ts +25 -0
  196. package/dist/mcp/oauth-provider.d.ts.map +1 -0
  197. package/dist/mcp/oauth-provider.js +59 -0
  198. package/dist/mcp/oauth-provider.js.map +1 -0
  199. package/dist/mcp/register-mcp.d.ts +3 -0
  200. package/dist/mcp/register-mcp.d.ts.map +1 -0
  201. package/dist/mcp/register-mcp.js +61 -0
  202. package/dist/mcp/register-mcp.js.map +1 -0
  203. package/dist/mcp/secrets.d.ts +7 -0
  204. package/dist/mcp/secrets.d.ts.map +1 -0
  205. package/dist/mcp/secrets.js +20 -0
  206. package/dist/mcp/secrets.js.map +1 -0
  207. package/dist/mcp/servers.d.ts +33 -0
  208. package/dist/mcp/servers.d.ts.map +1 -0
  209. package/dist/mcp/servers.js +31 -0
  210. package/dist/mcp/servers.js.map +1 -0
  211. package/dist/mcp/sign-in-record.d.ts +10 -0
  212. package/dist/mcp/sign-in-record.d.ts.map +1 -0
  213. package/dist/mcp/sign-in-record.js +4 -0
  214. package/dist/mcp/sign-in-record.js.map +1 -0
  215. package/dist/mcp/sign-in.d.ts +12 -0
  216. package/dist/mcp/sign-in.d.ts.map +1 -0
  217. package/dist/mcp/sign-in.js +75 -0
  218. package/dist/mcp/sign-in.js.map +1 -0
  219. package/dist/mcp/tools.d.ts +19 -0
  220. package/dist/mcp/tools.d.ts.map +1 -0
  221. package/dist/mcp/tools.js +31 -0
  222. package/dist/mcp/tools.js.map +1 -0
  223. package/dist/messages/attachments.d.ts +8 -0
  224. package/dist/messages/attachments.d.ts.map +1 -0
  225. package/dist/messages/attachments.js +48 -0
  226. package/dist/messages/attachments.js.map +1 -0
  227. package/dist/messages/receive-message.d.ts +15 -0
  228. package/dist/messages/receive-message.d.ts.map +1 -0
  229. package/dist/messages/receive-message.js +60 -0
  230. package/dist/messages/receive-message.js.map +1 -0
  231. package/dist/messages/register-messages.d.ts +3 -0
  232. package/dist/messages/register-messages.d.ts.map +1 -0
  233. package/dist/messages/register-messages.js +63 -0
  234. package/dist/messages/register-messages.js.map +1 -0
  235. package/dist/problems.d.ts +8 -0
  236. package/dist/problems.d.ts.map +1 -0
  237. package/dist/problems.js +14 -0
  238. package/dist/problems.js.map +1 -0
  239. package/dist/prompt/build-prompt.d.ts +29 -0
  240. package/dist/prompt/build-prompt.d.ts.map +1 -0
  241. package/dist/prompt/build-prompt.js +60 -0
  242. package/dist/prompt/build-prompt.js.map +1 -0
  243. package/dist/prompt/register-prompt.d.ts +3 -0
  244. package/dist/prompt/register-prompt.d.ts.map +1 -0
  245. package/dist/prompt/register-prompt.js +29 -0
  246. package/dist/prompt/register-prompt.js.map +1 -0
  247. package/dist/prompt/session-prompt.d.ts +24 -0
  248. package/dist/prompt/session-prompt.d.ts.map +1 -0
  249. package/dist/prompt/session-prompt.js +50 -0
  250. package/dist/prompt/session-prompt.js.map +1 -0
  251. package/dist/prompt/working-method.d.ts +7 -0
  252. package/dist/prompt/working-method.d.ts.map +1 -0
  253. package/dist/prompt/working-method.js +51 -0
  254. package/dist/prompt/working-method.js.map +1 -0
  255. package/dist/register-settings.d.ts +142 -0
  256. package/dist/register-settings.d.ts.map +1 -0
  257. package/dist/register-settings.js +51 -0
  258. package/dist/register-settings.js.map +1 -0
  259. package/dist/registry/loaded.d.ts +32 -0
  260. package/dist/registry/loaded.d.ts.map +1 -0
  261. package/dist/registry/loaded.js +41 -0
  262. package/dist/registry/loaded.js.map +1 -0
  263. package/dist/registry/register-connectors.d.ts +32 -0
  264. package/dist/registry/register-connectors.d.ts.map +1 -0
  265. package/dist/registry/register-connectors.js +126 -0
  266. package/dist/registry/register-connectors.js.map +1 -0
  267. package/dist/registry/register-sections.d.ts +18 -0
  268. package/dist/registry/register-sections.d.ts.map +1 -0
  269. package/dist/registry/register-sections.js +99 -0
  270. package/dist/registry/register-sections.js.map +1 -0
  271. package/dist/registry/session-points.d.ts +11 -0
  272. package/dist/registry/session-points.d.ts.map +1 -0
  273. package/dist/registry/session-points.js +89 -0
  274. package/dist/registry/session-points.js.map +1 -0
  275. package/dist/result-text.d.ts +11 -0
  276. package/dist/result-text.d.ts.map +1 -0
  277. package/dist/result-text.js +21 -0
  278. package/dist/result-text.js.map +1 -0
  279. package/dist/schemas/records.d.ts +357 -0
  280. package/dist/schemas/records.d.ts.map +1 -0
  281. package/dist/schemas/records.js +159 -0
  282. package/dist/schemas/records.js.map +1 -0
  283. package/dist/schemas/registry.d.ts +160 -0
  284. package/dist/schemas/registry.d.ts.map +1 -0
  285. package/dist/schemas/registry.js +37 -0
  286. package/dist/schemas/registry.js.map +1 -0
  287. package/dist/sessions/new-session.d.ts +6 -0
  288. package/dist/sessions/new-session.d.ts.map +1 -0
  289. package/dist/sessions/new-session.js +52 -0
  290. package/dist/sessions/new-session.js.map +1 -0
  291. package/dist/sessions/register-fork-export.d.ts +5 -0
  292. package/dist/sessions/register-fork-export.d.ts.map +1 -0
  293. package/dist/sessions/register-fork-export.js +62 -0
  294. package/dist/sessions/register-fork-export.js.map +1 -0
  295. package/dist/sessions/register-lifecycle.d.ts +3 -0
  296. package/dist/sessions/register-lifecycle.d.ts.map +1 -0
  297. package/dist/sessions/register-lifecycle.js +59 -0
  298. package/dist/sessions/register-lifecycle.js.map +1 -0
  299. package/dist/sessions/register-sessions.d.ts +3 -0
  300. package/dist/sessions/register-sessions.d.ts.map +1 -0
  301. package/dist/sessions/register-sessions.js +93 -0
  302. package/dist/sessions/register-sessions.js.map +1 -0
  303. package/dist/sessions/session-lookup.d.ts +10 -0
  304. package/dist/sessions/session-lookup.d.ts.map +1 -0
  305. package/dist/sessions/session-lookup.js +25 -0
  306. package/dist/sessions/session-lookup.js.map +1 -0
  307. package/dist/sessions/session-view.d.ts +118 -0
  308. package/dist/sessions/session-view.d.ts.map +1 -0
  309. package/dist/sessions/session-view.js +105 -0
  310. package/dist/sessions/session-view.js.map +1 -0
  311. package/dist/store/collections.d.ts +471 -0
  312. package/dist/store/collections.d.ts.map +1 -0
  313. package/dist/store/collections.js +46 -0
  314. package/dist/store/collections.js.map +1 -0
  315. package/dist/turns/background.d.ts +6 -0
  316. package/dist/turns/background.d.ts.map +1 -0
  317. package/dist/turns/background.js +27 -0
  318. package/dist/turns/background.js.map +1 -0
  319. package/dist/turns/cancel-turn.d.ts +3 -0
  320. package/dist/turns/cancel-turn.d.ts.map +1 -0
  321. package/dist/turns/cancel-turn.js +31 -0
  322. package/dist/turns/cancel-turn.js.map +1 -0
  323. package/dist/turns/compaction.d.ts +12 -0
  324. package/dist/turns/compaction.d.ts.map +1 -0
  325. package/dist/turns/compaction.js +55 -0
  326. package/dist/turns/compaction.js.map +1 -0
  327. package/dist/turns/end-turn.d.ts +15 -0
  328. package/dist/turns/end-turn.d.ts.map +1 -0
  329. package/dist/turns/end-turn.js +67 -0
  330. package/dist/turns/end-turn.js.map +1 -0
  331. package/dist/turns/history.d.ts +28 -0
  332. package/dist/turns/history.d.ts.map +1 -0
  333. package/dist/turns/history.js +47 -0
  334. package/dist/turns/history.js.map +1 -0
  335. package/dist/turns/lost-reply.d.ts +31 -0
  336. package/dist/turns/lost-reply.d.ts.map +1 -0
  337. package/dist/turns/lost-reply.js +43 -0
  338. package/dist/turns/lost-reply.js.map +1 -0
  339. package/dist/turns/message-blocks.d.ts +9 -0
  340. package/dist/turns/message-blocks.d.ts.map +1 -0
  341. package/dist/turns/message-blocks.js +25 -0
  342. package/dist/turns/message-blocks.js.map +1 -0
  343. package/dist/turns/model-context.d.ts +81 -0
  344. package/dist/turns/model-context.d.ts.map +1 -0
  345. package/dist/turns/model-context.js +46 -0
  346. package/dist/turns/model-context.js.map +1 -0
  347. package/dist/turns/model-info.d.ts +7 -0
  348. package/dist/turns/model-info.d.ts.map +1 -0
  349. package/dist/turns/model-info.js +10 -0
  350. package/dist/turns/model-info.js.map +1 -0
  351. package/dist/turns/model-retry.d.ts +3 -0
  352. package/dist/turns/model-retry.d.ts.map +1 -0
  353. package/dist/turns/model-retry.js +23 -0
  354. package/dist/turns/model-retry.js.map +1 -0
  355. package/dist/turns/register-interruptions.d.ts +3 -0
  356. package/dist/turns/register-interruptions.d.ts.map +1 -0
  357. package/dist/turns/register-interruptions.js +31 -0
  358. package/dist/turns/register-interruptions.js.map +1 -0
  359. package/dist/turns/register-turns.d.ts +3 -0
  360. package/dist/turns/register-turns.d.ts.map +1 -0
  361. package/dist/turns/register-turns.js +66 -0
  362. package/dist/turns/register-turns.js.map +1 -0
  363. package/dist/turns/resolve.d.ts +7 -0
  364. package/dist/turns/resolve.d.ts.map +1 -0
  365. package/dist/turns/resolve.js +29 -0
  366. package/dist/turns/resolve.js.map +1 -0
  367. package/dist/turns/run-calls.d.ts +34 -0
  368. package/dist/turns/run-calls.d.ts.map +1 -0
  369. package/dist/turns/run-calls.js +99 -0
  370. package/dist/turns/run-calls.js.map +1 -0
  371. package/dist/turns/run-command.d.ts +26 -0
  372. package/dist/turns/run-command.d.ts.map +1 -0
  373. package/dist/turns/run-command.js +118 -0
  374. package/dist/turns/run-command.js.map +1 -0
  375. package/dist/turns/settle-calls.d.ts +17 -0
  376. package/dist/turns/settle-calls.d.ts.map +1 -0
  377. package/dist/turns/settle-calls.js +98 -0
  378. package/dist/turns/settle-calls.js.map +1 -0
  379. package/dist/turns/start-turn.d.ts +87 -0
  380. package/dist/turns/start-turn.d.ts.map +1 -0
  381. package/dist/turns/start-turn.js +40 -0
  382. package/dist/turns/start-turn.js.map +1 -0
  383. package/dist/turns/step.d.ts +8 -0
  384. package/dist/turns/step.d.ts.map +1 -0
  385. package/dist/turns/step.js +168 -0
  386. package/dist/turns/step.js.map +1 -0
  387. package/dist/ui/register-ui.d.ts +3 -0
  388. package/dist/ui/register-ui.d.ts.map +1 -0
  389. package/dist/ui/register-ui.js +75 -0
  390. package/dist/ui/register-ui.js.map +1 -0
  391. package/dist/web/components/call.css +2 -0
  392. package/dist/web/components/call.js +386 -0
  393. package/dist/web/components/connectors.css +2 -0
  394. package/dist/web/components/connectors.js +2403 -0
  395. package/dist/web/components/conversation.css +2 -0
  396. package/dist/web/components/conversation.js +4319 -0
  397. package/dist/web/components/mcp-sign-in.css +2 -0
  398. package/dist/web/components/mcp-sign-in.js +265 -0
  399. package/dist/web/components/model.css +2 -0
  400. package/dist/web/components/model.js +545 -0
  401. package/dist/web/components/question.css +2 -0
  402. package/dist/web/components/question.js +321 -0
  403. package/dist/web/components/sessions.css +2 -0
  404. package/dist/web/components/sessions.js +264 -0
  405. package/docs/connectors.md +86 -0
  406. package/docs/sections.md +27 -0
  407. package/locales/ar.json +418 -0
  408. package/locales/en.json +418 -0
  409. package/package.json +70 -0
@@ -0,0 +1,142 @@
1
+ import { z, type Ctx } from '@kvman/sdk';
2
+ export declare const settingSchemas: {
3
+ model: z.ZodNullable<z.ZodString>;
4
+ thinking: z.ZodEnum<{
5
+ off: "off";
6
+ minimal: "minimal";
7
+ low: "low";
8
+ medium: "medium";
9
+ high: "high";
10
+ }>;
11
+ maxSteps: z.ZodNumber;
12
+ approval: z.ZodEnum<{
13
+ ask: "ask";
14
+ auto: "auto";
15
+ }>;
16
+ shellPath: z.ZodNullable<z.ZodString>;
17
+ compactAt: z.ZodNumber;
18
+ compactKeep: z.ZodNumber;
19
+ connectors: z.ZodArray<z.ZodObject<{
20
+ name: z.ZodString;
21
+ description: z.ZodString;
22
+ binary: z.ZodObject<{
23
+ check: z.ZodString;
24
+ install: z.ZodExactOptional<z.ZodString>;
25
+ help: z.ZodExactOptional<z.ZodString>;
26
+ }, z.core.$strip>;
27
+ }, z.core.$strip>>;
28
+ disabledConnectors: z.ZodArray<z.ZodString>;
29
+ mcpServers: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
30
+ name: z.ZodString;
31
+ description: z.ZodString;
32
+ command: z.ZodString;
33
+ args: z.ZodArray<z.ZodString>;
34
+ env: z.ZodArray<z.ZodString>;
35
+ }, z.core.$strict>, z.ZodObject<{
36
+ name: z.ZodString;
37
+ description: z.ZodString;
38
+ url: z.ZodString;
39
+ headers: z.ZodArray<z.ZodString>;
40
+ }, z.core.$strict>]>>;
41
+ workers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
42
+ kind: z.ZodLiteral<"subagent">;
43
+ connectors: z.ZodNullable<z.ZodArray<z.ZodString>>;
44
+ model: z.ZodNullable<z.ZodString>;
45
+ thinking: z.ZodNullable<z.ZodEnum<{
46
+ off: "off";
47
+ minimal: "minimal";
48
+ low: "low";
49
+ medium: "medium";
50
+ high: "high";
51
+ }>>;
52
+ name: z.ZodString;
53
+ description: z.ZodString;
54
+ enabled: z.ZodBoolean;
55
+ instructions: z.ZodString;
56
+ }, z.core.$strict>, z.ZodObject<{
57
+ kind: z.ZodLiteral<"opencode">;
58
+ model: z.ZodNullable<z.ZodString>;
59
+ agent: z.ZodNullable<z.ZodString>;
60
+ autoApprove: z.ZodBoolean;
61
+ approval: z.ZodEnum<{
62
+ ask: "ask";
63
+ auto: "auto";
64
+ }>;
65
+ timeoutMs: z.ZodNumber;
66
+ name: z.ZodString;
67
+ description: z.ZodString;
68
+ enabled: z.ZodBoolean;
69
+ instructions: z.ZodString;
70
+ }, z.core.$strict>, z.ZodObject<{
71
+ kind: z.ZodLiteral<"pi">;
72
+ model: z.ZodNullable<z.ZodString>;
73
+ thinking: z.ZodNullable<z.ZodEnum<{
74
+ off: "off";
75
+ minimal: "minimal";
76
+ low: "low";
77
+ medium: "medium";
78
+ high: "high";
79
+ xhigh: "xhigh";
80
+ max: "max";
81
+ }>>;
82
+ tools: z.ZodNullable<z.ZodArray<z.ZodString>>;
83
+ approval: z.ZodEnum<{
84
+ ask: "ask";
85
+ auto: "auto";
86
+ }>;
87
+ timeoutMs: z.ZodNumber;
88
+ name: z.ZodString;
89
+ description: z.ZodString;
90
+ enabled: z.ZodBoolean;
91
+ instructions: z.ZodString;
92
+ }, z.core.$strict>, z.ZodObject<{
93
+ kind: z.ZodLiteral<"claude">;
94
+ model: z.ZodNullable<z.ZodString>;
95
+ effort: z.ZodNullable<z.ZodEnum<{
96
+ low: "low";
97
+ medium: "medium";
98
+ high: "high";
99
+ xhigh: "xhigh";
100
+ max: "max";
101
+ }>>;
102
+ permissionMode: z.ZodEnum<{
103
+ auto: "auto";
104
+ bypassPermissions: "bypassPermissions";
105
+ dontAsk: "dontAsk";
106
+ acceptEdits: "acceptEdits";
107
+ plan: "plan";
108
+ }>;
109
+ approval: z.ZodEnum<{
110
+ ask: "ask";
111
+ auto: "auto";
112
+ }>;
113
+ timeoutMs: z.ZodNumber;
114
+ name: z.ZodString;
115
+ description: z.ZodString;
116
+ enabled: z.ZodBoolean;
117
+ instructions: z.ZodString;
118
+ }, z.core.$strict>], "kind">>;
119
+ keep: z.ZodNumber;
120
+ };
121
+ export declare function registerSettings(ctx: Ctx): void;
122
+ /** The names of the connectors that are turned off in the job's workspace (ADR 0014, 7). */
123
+ export declare function disabledConnectors(ctx: Ctx): Promise<Set<string>>;
124
+ /** The settings a step reads, parsed. */
125
+ export declare function readSettings(ctx: Ctx): Promise<{
126
+ maxSteps: number;
127
+ approval: "ask" | "auto";
128
+ shellPath: string | null;
129
+ compactAt: number;
130
+ compactKeep: number;
131
+ connectors: {
132
+ name: string;
133
+ description: string;
134
+ binary: {
135
+ check: string;
136
+ install?: string;
137
+ help?: string;
138
+ };
139
+ }[];
140
+ }>;
141
+ export type StepSettings = Awaited<ReturnType<typeof readSettings>>;
142
+ //# sourceMappingURL=register-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-settings.d.ts","sourceRoot":"","sources":["../src/register-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAOzC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa1B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAa/C;AAED,4FAA4F;AAC5F,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAEvE;AAED,yCAAyC;AACzC,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG;;;;;;;;;;;;;;;GAU1C;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { z } from '@kvman/sdk';
2
+ import { shippedWorkers, workersSchema } from "./delegate/workers.js";
3
+ import { mcpServersSchema } from "./mcp/servers.js";
4
+ import { thinkingSchema } from "./schemas/records.js";
5
+ import { binaryConnectorSchema, wordSchema } from "./schemas/registry.js";
6
+ // kvcoder's settings (plan 08 §8.7).
7
+ export const settingSchemas = {
8
+ model: z.string().min(1).nullable(),
9
+ thinking: thinkingSchema,
10
+ maxSteps: z.number().int().positive(),
11
+ approval: z.enum(['ask', 'auto']),
12
+ shellPath: z.string().min(1).nullable(),
13
+ compactAt: z.number().gt(0).max(1),
14
+ compactKeep: z.number().int().min(1).max(100),
15
+ connectors: z.array(binaryConnectorSchema),
16
+ disabledConnectors: z.array(wordSchema),
17
+ mcpServers: mcpServersSchema,
18
+ workers: workersSchema,
19
+ keep: z.number().int().nonnegative(),
20
+ };
21
+ export function registerSettings(ctx) {
22
+ ctx.registerSetting('kvcoder.model', { description: 'The model a new session starts with; null uses kvai.defaultModel.', schema: settingSchemas.model, default: null });
23
+ ctx.registerSetting('kvcoder.thinking', { description: 'How hard the model thinks in a new session.', schema: settingSchemas.thinking, default: 'medium' });
24
+ ctx.registerSetting('kvcoder.maxSteps', { description: 'The most steps a turn takes before it stops.', schema: settingSchemas.maxSteps, default: 50 });
25
+ ctx.registerSetting('kvcoder.shell.approval', { description: 'Whether shell and file calls ask the person first: only the ones the model marks risky (auto), or every one (ask).', schema: settingSchemas.approval, default: 'auto' });
26
+ ctx.registerSetting('kvcoder.shell.path', { description: 'The shell program to run; null finds bash, or pwsh then powershell.exe on Windows.', schema: settingSchemas.shellPath, default: null });
27
+ ctx.registerSetting('kvcoder.compactAt', { description: "The share of the model's context window above which older messages are summarized.", schema: settingSchemas.compactAt, default: 0.8 });
28
+ ctx.registerSetting('kvcoder.compactKeep', { description: 'How many of the newest messages stay whole when older messages are summarized.', schema: settingSchemas.compactKeep, default: 10 });
29
+ ctx.registerSetting('kvcoder.connectors', { description: 'Binary connectors to add: programs the agent runs in the real shell.', schema: settingSchemas.connectors, default: [] });
30
+ ctx.registerSetting('kvcoder.connectors.disabled', { description: 'The names of the connectors that are turned off: the agent neither sees nor calls them.', schema: settingSchemas.disabledConnectors, default: [] });
31
+ ctx.registerSetting('kvcoder.mcp.servers', { description: "The MCP servers the mcp connector reaches: a command or an address each, with the names of its secret variables or headers.", schema: settingSchemas.mcpServers, default: [] });
32
+ ctx.registerSetting('kvcoder.delegate.workers', { description: 'The workers the delegate connector hands tasks to: each with its instructions, connectors, model, and whether it is turned on.', schema: settingSchemas.workers, default: shippedWorkers });
33
+ ctx.registerSetting('kvcoder.sessions.keep', { description: 'How many top-level sessions to keep per workspace; 0 keeps every session.', schema: settingSchemas.keep, default: 0 });
34
+ }
35
+ /** The names of the connectors that are turned off in the job's workspace (ADR 0014, 7). */
36
+ export async function disabledConnectors(ctx) {
37
+ return new Set(settingSchemas.disabledConnectors.parse(await ctx.settings.get('kvcoder.connectors.disabled')));
38
+ }
39
+ /** The settings a step reads, parsed. */
40
+ export async function readSettings(ctx) {
41
+ const read = async (key, schema) => schema.parse(await ctx.settings.get(key));
42
+ return {
43
+ maxSteps: await read('kvcoder.maxSteps', settingSchemas.maxSteps),
44
+ approval: await read('kvcoder.shell.approval', settingSchemas.approval),
45
+ shellPath: await read('kvcoder.shell.path', settingSchemas.shellPath),
46
+ compactAt: await read('kvcoder.compactAt', settingSchemas.compactAt),
47
+ compactKeep: await read('kvcoder.compactKeep', settingSchemas.compactKeep),
48
+ connectors: await read('kvcoder.connectors', settingSchemas.connectors),
49
+ };
50
+ }
51
+ //# sourceMappingURL=register-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-settings.js","sourceRoot":"","sources":["../src/register-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { z, type Ctx } from '@kvman/sdk';
2
+ declare const rowSchema: z.ZodObject<{
3
+ name: z.ZodString;
4
+ kind: z.ZodEnum<{
5
+ command: "command";
6
+ query: "query";
7
+ }>;
8
+ extension: z.ZodString;
9
+ public: z.ZodBoolean;
10
+ }, z.core.$strip>;
11
+ export type Registrations = z.output<typeof rowSchema>[];
12
+ /** Every command and query of the run, with its owner. */
13
+ export declare function registrations(ctx: Ctx): Promise<Registrations>;
14
+ /** Whether `command` is a public command of the extension `owner`. */
15
+ export declare function ownsPublicCommand(rows: Registrations, owner: string, command: string): boolean;
16
+ /** Whether `name` is a public command or query of the extension `owner`: what a connector command may run (ADR 0009, 129). */
17
+ export declare function ownsPublicCall(rows: Registrations, owner: string, name: string): boolean;
18
+ /** Those of `owners` that are loaded. An owner with no command or query isn't in the registrations, so only then is the list of extensions read. */
19
+ export declare function loadedOwners(ctx: Ctx, owners: readonly string[]): Promise<Set<string>>;
20
+ declare const callInfoSchema: z.ZodObject<{
21
+ name: z.ZodString;
22
+ description: z.ZodString;
23
+ input: z.ZodJSONSchema;
24
+ output: z.ZodJSONSchema;
25
+ }, z.core.$strip>;
26
+ export type CallInfo = z.output<typeof callInfoSchema>;
27
+ /** Every command and query of the run with its schemas, as connector help reads them. */
28
+ export declare function callInfos(ctx: Ctx): Promise<CallInfo[]>;
29
+ /** The caller's package name; only an extension registers with kvcoder. */
30
+ export declare function callerExtension(ctx: Ctx, what: string): string;
31
+ export {};
32
+ //# sourceMappingURL=loaded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaded.d.ts","sourceRoot":"","sources":["../../src/registry/loaded.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAOzC,QAAA,MAAM,SAAS;;;;;;;;iBAAiH,CAAC;AAEjI,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,SAAS,CAAC,EAAE,CAAC;AAEzD,0DAA0D;AAC1D,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAEpE;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9F;AAED,8HAA8H;AAC9H,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAExF;AAID,oJAAoJ;AACpJ,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAK5F;AAED,QAAA,MAAM,cAAc;;;;;iBAA6F,CAAC;AAGlH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AAEvD,yFAAyF;AACzF,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAE7D;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI9D"}
@@ -0,0 +1,41 @@
1
+ import { z } from '@kvman/sdk';
2
+ import { invalid } from "../problems.js";
3
+ // What the run has loaded. Who owns a name comes from `kernel.registrations.list`, which carries no schema
4
+ // (ADR 0011, 25); the schemas of `help` and of an invalid payload come from `kernel.extensions.list`. Entries whose
5
+ // owner isn't loaded are ignored (plan 08 §8.4).
6
+ const rowSchema = z.object({ name: z.string(), kind: z.enum(['command', 'query']), extension: z.string(), public: z.boolean() });
7
+ /** Every command and query of the run, with its owner. */
8
+ export async function registrations(ctx) {
9
+ return z.array(rowSchema).parse(await ctx.exec('kernel.registrations.list', {}));
10
+ }
11
+ /** Whether `command` is a public command of the extension `owner`. */
12
+ export function ownsPublicCommand(rows, owner, command) {
13
+ return rows.some((row) => row.name === command && row.extension === owner && row.kind === 'command' && row.public);
14
+ }
15
+ /** Whether `name` is a public command or query of the extension `owner`: what a connector command may run (ADR 0009, 129). */
16
+ export function ownsPublicCall(rows, owner, name) {
17
+ return rows.some((row) => row.name === name && row.extension === owner && row.public);
18
+ }
19
+ const extensionNamesSchema = z.array(z.object({ name: z.string() }));
20
+ /** Those of `owners` that are loaded. An owner with no command or query isn't in the registrations, so only then is the list of extensions read. */
21
+ export async function loadedOwners(ctx, owners) {
22
+ const registered = new Set((await registrations(ctx)).map((row) => row.extension));
23
+ if (owners.every((owner) => registered.has(owner)))
24
+ return new Set(owners);
25
+ const loaded = new Set(extensionNamesSchema.parse(await ctx.exec('kernel.extensions.list', {})).map((extension) => extension.name));
26
+ return new Set(owners.filter((owner) => loaded.has(owner)));
27
+ }
28
+ const callInfoSchema = z.object({ name: z.string(), description: z.string(), input: z.json(), output: z.json() });
29
+ const extensionCallsSchema = z.array(z.object({ commands: z.array(callInfoSchema), queries: z.array(callInfoSchema) }));
30
+ /** Every command and query of the run with its schemas, as connector help reads them. */
31
+ export async function callInfos(ctx) {
32
+ return extensionCallsSchema.parse(await ctx.exec('kernel.extensions.list', {})).flatMap((extension) => [...extension.commands, ...extension.queries]);
33
+ }
34
+ /** The caller's package name; only an extension registers with kvcoder. */
35
+ export function callerExtension(ctx, what) {
36
+ const caller = ctx.job.caller;
37
+ if (caller.kind !== 'extension')
38
+ throw invalid(`Only an extension registers ${what}.`);
39
+ return caller.name;
40
+ }
41
+ //# sourceMappingURL=loaded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaded.js","sourceRoot":"","sources":["../../src/registry/loaded.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { z, type Ctx } from '@kvman/sdk';
2
+ declare const connectorRowSchema: z.ZodObject<{
3
+ name: z.ZodString;
4
+ description: z.ZodString;
5
+ owner: z.ZodString;
6
+ kind: z.ZodEnum<{
7
+ commands: "commands";
8
+ binary: "binary";
9
+ }>;
10
+ commands: z.ZodExactOptional<z.ZodArray<z.ZodObject<{
11
+ name: z.ZodString;
12
+ command: z.ZodString;
13
+ examples: z.ZodArray<z.ZodObject<{
14
+ description: z.ZodString;
15
+ input: z.ZodJSONSchema;
16
+ }, z.core.$strip>>;
17
+ asks: z.ZodBoolean;
18
+ }, z.core.$strip>>>;
19
+ binary: z.ZodExactOptional<z.ZodObject<{
20
+ check: z.ZodString;
21
+ install: z.ZodExactOptional<z.ZodString>;
22
+ help: z.ZodExactOptional<z.ZodString>;
23
+ }, z.core.$strip>>;
24
+ }, z.core.$strip>;
25
+ export type ConnectorRow = z.output<typeof connectorRowSchema>;
26
+ /** Every connector the agent may use: registered ones whose owner is loaded, then the setting's binary connectors. */
27
+ export declare function activeConnectors(ctx: Ctx): Promise<ConnectorRow[]>;
28
+ export declare function registerConnectors(ctx: Ctx): void;
29
+ /** Clears the connectors at kvcoder's start; extensions register theirs again in their own handlers. */
30
+ export declare function clearConnectors(ctx: Ctx): Promise<void>;
31
+ export {};
32
+ //# sourceMappingURL=register-connectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-connectors.d.ts","sourceRoot":"","sources":["../../src/registry/register-connectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAWzC,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;iBAOtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAa/D,sHAAsH;AACtH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAcxE;AAmCD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAmCjD;AAED,wGAAwG;AACxG,wBAAsB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAK7D"}
@@ -0,0 +1,126 @@
1
+ import { z } from '@kvman/sdk';
2
+ import { builtinConnectors } from "../connector-call.js";
3
+ import { invalid } from "../problems.js";
4
+ import { disabledConnectors, readSettings } from "../register-settings.js";
5
+ import { connectorRegisterSchema, connectorSchema, exampleSchema } from "../schemas/registry.js";
6
+ import { records, txRecords } from "../store/collections.js";
7
+ import { callerExtension, loadedOwners, ownsPublicCall, registrations } from "./loaded.js";
8
+ // Connectors (plan 08 §8.4): named sets of commands the agent runs with `run`, registered by other extensions, kept in
9
+ // kvcoder's global store for one run, and owned by their registering extension.
10
+ const connectorRowSchema = z.object({
11
+ name: z.string(),
12
+ description: z.string(),
13
+ owner: z.string(),
14
+ kind: z.enum(['commands', 'binary']),
15
+ commands: z.array(z.object({ name: z.string(), command: z.string(), examples: z.array(exampleSchema), asks: z.boolean() })).exactOptional(),
16
+ binary: z.object({ check: z.string(), install: z.string().exactOptional(), help: z.string().exactOptional() }).exactOptional(),
17
+ });
18
+ function rowOf(doc) {
19
+ return {
20
+ name: doc.name,
21
+ description: doc.description,
22
+ owner: doc.owner,
23
+ kind: doc.kind,
24
+ ...(doc.commands === null ? {} : { commands: doc.commands }),
25
+ ...(doc.binary === null ? {} : { binary: { check: doc.binary.check, ...(doc.binary.install === null ? {} : { install: doc.binary.install }), ...(doc.binary.help === null ? {} : { help: doc.binary.help }) } }),
26
+ };
27
+ }
28
+ /** Every connector the agent may use: registered ones whose owner is loaded, then the setting's binary connectors. */
29
+ export async function activeConnectors(ctx) {
30
+ const stored = await records(ctx.store).connectors.find({}, { limit: 1000 });
31
+ const loaded = await loadedOwners(ctx, stored.map((doc) => doc.owner));
32
+ const registered = stored.filter((doc) => loaded.has(doc.owner)).map(rowOf);
33
+ const names = new Set(registered.map((connector) => connector.name));
34
+ const fromSetting = [];
35
+ for (const entry of (await readSettings(ctx)).connectors) {
36
+ if (names.has(entry.name) || builtinConnectors.some((name) => name === entry.name)) {
37
+ ctx.log.warn('A binary connector from kvcoder.connectors has a registered name and is ignored.', { name: entry.name });
38
+ continue;
39
+ }
40
+ fromSetting.push({ name: entry.name, description: entry.description, owner: 'kvcoder.connectors', kind: 'binary', binary: entry.binary });
41
+ }
42
+ return [...registered, ...fromSetting];
43
+ }
44
+ const docOf = (input) => 'commands' in input
45
+ ? { name: input.name, description: input.description, kind: 'commands', commands: input.commands.map((command) => ({ name: command.name, command: command.command, examples: command.examples ?? [], asks: command.asks === true })), binary: null }
46
+ : { name: input.name, description: input.description, kind: 'binary', commands: null, binary: { check: input.binary.check, install: input.binary.install ?? null, help: input.binary.help ?? null } };
47
+ // Every connector of a call is checked before any is stored, and they are stored in one transaction, so a call
48
+ // registers all of its connectors or none (ADR 0011, 26).
49
+ async function register(ctx, connectors) {
50
+ const owner = callerExtension(ctx, 'connectors');
51
+ const builtin = connectors.find((connector) => builtinConnectors.some((name) => name === connector.name));
52
+ if (builtin !== undefined)
53
+ throw ctx.problem('kvcoder/NAME_TAKEN', { name: builtin.name, owner: '@kvman/kvcoder' });
54
+ const repeated = connectors.find((connector, index) => connectors.findIndex((other) => other.name === connector.name) !== index);
55
+ if (repeated !== undefined)
56
+ throw invalid(`The connector ${repeated.name} is given twice.`, { name: repeated.name });
57
+ const commands = connectors.flatMap((connector) => ('commands' in connector ? connector.commands : []));
58
+ if (commands.length > 0) {
59
+ const rows = await registrations(ctx);
60
+ const foreign = commands.find((command) => !ownsPublicCall(rows, owner, command.command));
61
+ if (foreign !== undefined)
62
+ throw invalid(`${foreign.command} isn't a public command or query of ${owner}.`, { command: foreign.command });
63
+ }
64
+ const taken = await ctx.store.transaction((tx) => {
65
+ const stored = txRecords(tx).connectors;
66
+ const existing = connectors.map((connector) => stored.find({ name: connector.name }, { limit: 1 })[0]);
67
+ const other = existing.find((doc) => doc !== undefined && doc.owner !== owner);
68
+ if (other !== undefined)
69
+ return { name: other.name, owner: other.owner };
70
+ for (const doc of existing)
71
+ if (doc !== undefined)
72
+ stored.delete(doc.id);
73
+ for (const connector of connectors)
74
+ stored.insert({ ...docOf(connector), owner });
75
+ return undefined;
76
+ });
77
+ if (taken !== undefined)
78
+ throw ctx.problem('kvcoder/NAME_TAKEN', taken);
79
+ }
80
+ export function registerConnectors(ctx) {
81
+ ctx.registerCommand('kvcoder.connector.register', {
82
+ description: "Registers a connector the agent calls with its run tool, or several at once: the caller's public commands, or a program run in the shell.",
83
+ input: connectorRegisterSchema,
84
+ output: z.object({}),
85
+ public: true,
86
+ handle: async (input) => {
87
+ await register(ctx, 'connectors' in input ? input.connectors : [input]);
88
+ return {};
89
+ },
90
+ });
91
+ ctx.registerCommand('kvcoder.connector.unregister', {
92
+ description: "Removes one of the caller's connectors.",
93
+ input: z.object({ name: z.string().min(1) }),
94
+ output: z.object({}),
95
+ public: true,
96
+ handle: async ({ name }) => {
97
+ const owner = callerExtension(ctx, 'connectors');
98
+ const { connectors } = records(ctx.store);
99
+ const [existing] = await connectors.find({ name }, { limit: 1 });
100
+ if (existing !== undefined && existing.owner !== owner)
101
+ throw ctx.problem('kvcoder/NAME_TAKEN', { name, owner: existing.owner });
102
+ if (existing !== undefined)
103
+ await connectors.delete(existing.id);
104
+ return {};
105
+ },
106
+ });
107
+ ctx.registerQuery('kvcoder.connector.list', {
108
+ description: 'Lists the connectors the agent may use.',
109
+ input: z.object({}),
110
+ output: z.array(connectorRowSchema.extend({ enabled: z.boolean() })),
111
+ public: true,
112
+ handle: async () => {
113
+ const disabled = await disabledConnectors(ctx);
114
+ return (await activeConnectors(ctx)).map((connector) => ({ ...connector, enabled: !disabled.has(connector.name) }));
115
+ },
116
+ });
117
+ }
118
+ /** Clears the connectors at kvcoder's start; extensions register theirs again in their own handlers. */
119
+ export async function clearConnectors(ctx) {
120
+ const { connectors } = records(ctx.store);
121
+ for (let found = await connectors.find({}, { limit: 1000 }); found.length > 0; found = await connectors.find({}, { limit: 1000 })) {
122
+ for (const connector of found)
123
+ await connectors.delete(connector.id);
124
+ }
125
+ }
126
+ //# sourceMappingURL=register-connectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-connectors.js","sourceRoot":"","sources":["../../src/registry/register-connectors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type Ctx } from '@kvman/sdk';
2
+ export declare const sectionLimit: number;
3
+ export declare const sectionsLimit: number;
4
+ /** A section as a prompt sees it. */
5
+ export type Section = {
6
+ id: string;
7
+ title: string;
8
+ order: number;
9
+ owner: string;
10
+ global: boolean;
11
+ sessionId: string | null;
12
+ content: string;
13
+ size: number;
14
+ };
15
+ /** The sections a session's prompt reaches, by `order`, with entries of unloaded owners left out. */
16
+ export declare function sectionsFor(ctx: Ctx, sessionId: string | null): Promise<Section[]>;
17
+ export declare function registerSections(ctx: Ctx): void;
18
+ //# sourceMappingURL=register-sections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-sections.d.ts","sourceRoot":"","sources":["../../src/registry/register-sections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,GAAG,EAAe,MAAM,YAAY,CAAC;AAUtD,eAAO,MAAM,YAAY,QAAY,CAAC;AACtC,eAAO,MAAM,aAAa,QAAY,CAAC;AAEvC,qCAAqC;AACrC,MAAM,MAAM,OAAO,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAQ5J,qGAAqG;AACrG,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAUxF;AA0BD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CA+C/C"}
@@ -0,0 +1,99 @@
1
+ import { z } from '@kvman/sdk';
2
+ import { invalid, tooLarge } from "../problems.js";
3
+ import { findSession } from "../sessions/session-lookup.js";
4
+ import { records, txRecords } from "../store/collections.js";
5
+ import { callerExtension, loadedOwners } from "./loaded.js";
6
+ // Sections (plan 08 §8.4, ADR 0009, 94): text in the system prompt, pushed by their owner. A global section is in every
7
+ // workspace's prompts, a session's only in that session's, and any other in its workspace's. Ids belong to their owner.
8
+ export const sectionLimit = 16 * 1024;
9
+ export const sectionsLimit = 64 * 1024;
10
+ const size = (content) => Buffer.byteLength(content, 'utf8');
11
+ function sectionOf(doc, global) {
12
+ return { id: doc.sectionId, title: doc.title, order: doc.order, owner: doc.owner, global, sessionId: doc.sessionId, content: doc.content, size: size(doc.content) };
13
+ }
14
+ /** The sections a session's prompt reaches, by `order`, with entries of unloaded owners left out. */
15
+ export async function sectionsFor(ctx, sessionId) {
16
+ const store = records(ctx.store);
17
+ const global = (await store.globalSections.find({}, { limit: 1000 })).map((doc) => sectionOf(doc, true));
18
+ const local = (await store.sections.find({ sessionId: null }, { limit: 1000 })).map((doc) => sectionOf(doc, false));
19
+ const own = sessionId === null ? [] : (await store.sections.find({ sessionId }, { limit: 1000 })).map((doc) => sectionOf(doc, false));
20
+ const sections = [...global, ...local, ...own];
21
+ const loaded = await loadedOwners(ctx, sections.map((section) => section.owner));
22
+ return sections
23
+ .filter((section) => loaded.has(section.owner))
24
+ .sort((first, second) => first.order - second.order || first.owner.localeCompare(second.owner) || first.id.localeCompare(second.id));
25
+ }
26
+ function collectionFor(tx, place) {
27
+ return place.global ? tx.globalSections : tx.sections;
28
+ }
29
+ function findOwn(tx, owner, id, place) {
30
+ return collectionFor(tx, place).find({ owner, sectionId: id, sessionId: place.sessionId }, { limit: 1 })[0];
31
+ }
32
+ // The sections that would share a prompt with one at `place`: global, the workspace's, and the session's (ADR 0009, 94).
33
+ function sharedTotal(tx, place, replaced) {
34
+ const docs = [...tx.globalSections.find({}, { limit: 1000 }), ...tx.sections.find({ sessionId: null }, { limit: 1000 }), ...(place.sessionId === null ? [] : tx.sections.find({ sessionId: place.sessionId }, { limit: 1000 }))];
35
+ return docs.filter((doc) => doc.id !== replaced?.id).reduce((total, doc) => total + size(doc.content), 0);
36
+ }
37
+ const placeSchema = { global: z.boolean().exactOptional(), sessionId: z.string().min(1).exactOptional() };
38
+ async function placeOf(ctx, input) {
39
+ if (input.global === true && input.sessionId !== undefined)
40
+ throw invalid('A section is global or a session\'s, not both.');
41
+ if (input.sessionId !== undefined)
42
+ await findSession(ctx, input.sessionId);
43
+ return { global: input.global === true, sessionId: input.sessionId ?? null };
44
+ }
45
+ export function registerSections(ctx) {
46
+ ctx.registerCommand('kvcoder.section.set', {
47
+ description: "Sets one of the caller's sections of the system prompt.",
48
+ input: z.object({ id: z.string().min(1), title: z.string().min(1), order: z.number(), content: z.string(), ...placeSchema }),
49
+ output: z.object({}),
50
+ public: true,
51
+ handle: async (input) => {
52
+ const owner = callerExtension(ctx, 'sections');
53
+ const place = await placeOf(ctx, input);
54
+ if (size(input.content) > sectionLimit)
55
+ throw tooLarge(`The section ${input.id} is over ${sectionLimit} bytes.`, sectionLimit);
56
+ await ctx.store.transaction((tx) => {
57
+ const store = txRecords(tx);
58
+ const existing = findOwn(store, owner, input.id, place);
59
+ if (sharedTotal(store, place, existing) + size(input.content) > sectionsLimit)
60
+ throw tooLarge(`The sections of a prompt would pass ${sectionsLimit} bytes.`, sectionsLimit);
61
+ const doc = { owner, sectionId: input.id, title: input.title, order: input.order, content: input.content, sessionId: place.sessionId };
62
+ if (existing === undefined)
63
+ collectionFor(store, place).insert(doc);
64
+ else
65
+ collectionFor(store, place).update(existing.id, doc);
66
+ });
67
+ return {};
68
+ },
69
+ });
70
+ ctx.registerCommand('kvcoder.section.remove', {
71
+ description: "Removes one of the caller's sections; a missing one does nothing.",
72
+ input: z.object({ id: z.string().min(1), ...placeSchema }),
73
+ output: z.object({}),
74
+ public: true,
75
+ handle: async (input) => {
76
+ const owner = callerExtension(ctx, 'sections');
77
+ const place = await placeOf(ctx, input);
78
+ await ctx.store.transaction((tx) => {
79
+ const store = txRecords(tx);
80
+ const existing = findOwn(store, owner, input.id, place);
81
+ if (existing !== undefined)
82
+ collectionFor(store, place).delete(existing.id);
83
+ });
84
+ return {};
85
+ },
86
+ });
87
+ ctx.registerQuery('kvcoder.section.list', {
88
+ description: "Lists the sections a session's prompt reaches, or the workspace's without a session.",
89
+ input: z.object({ sessionId: z.string().min(1).exactOptional() }),
90
+ output: z.array(z.object({ id: z.string(), title: z.string(), order: z.number(), owner: z.string(), global: z.boolean(), sessionId: z.string().exactOptional(), size: z.number() })),
91
+ public: true,
92
+ handle: async ({ sessionId }) => {
93
+ if (sessionId !== undefined)
94
+ await findSession(ctx, sessionId);
95
+ return (await sectionsFor(ctx, sessionId ?? null)).map(({ id, title, order, owner, global, sessionId: own, size: bytes }) => ({ id, title, order, owner, global, ...(own === null ? {} : { sessionId: own }), size: bytes }));
96
+ },
97
+ });
98
+ }
99
+ //# sourceMappingURL=register-sections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-sections.js","sourceRoot":"","sources":["../../src/registry/register-sections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type Ctx } from '@kvman/sdk';
2
+ import type { JsonValue } from '../connector-call.ts';
3
+ import { type SessionPoint } from '../schemas/registry.ts';
4
+ /** Queues one job per handler registered for `point`, and remembers their ids. */
5
+ export declare function firePoint(ctx: Ctx, point: SessionPoint, input: Record<string, JsonValue>): Promise<void>;
6
+ /** Whether the running job descends from a handler job kvcoder queued. */
7
+ export declare function fromSessionHandler(ctx: Ctx): Promise<boolean>;
8
+ export declare function registerSessionPoints(ctx: Ctx): void;
9
+ /** Clears the handlers at kvcoder's start, and forgets handler-job ids older than a week (ADR 0009, 103). */
10
+ export declare function clearSessionPoints(ctx: Ctx): Promise<void>;
11
+ //# sourceMappingURL=session-points.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-points.d.ts","sourceRoot":"","sources":["../../src/registry/session-points.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAW/E,kFAAkF;AAClF,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9G;AAED,0EAA0E;AAC1E,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAgDpD;AAED,6GAA6G;AAC7G,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhE"}