@cleocode/core 2026.6.13 → 2026.6.14

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 (392) hide show
  1. package/dist/admin/ops.d.ts +4 -0
  2. package/dist/admin/ops.d.ts.map +1 -1
  3. package/dist/check/index.d.ts +12 -0
  4. package/dist/check/index.d.ts.map +1 -0
  5. package/dist/check/index.js +12 -0
  6. package/dist/check/index.js.map +1 -0
  7. package/dist/check/pr-gate.d.ts +179 -0
  8. package/dist/check/pr-gate.d.ts.map +1 -0
  9. package/dist/check/pr-gate.js +366 -0
  10. package/dist/check/pr-gate.js.map +1 -0
  11. package/dist/conduit/delivery-router.d.ts +134 -0
  12. package/dist/conduit/delivery-router.d.ts.map +1 -0
  13. package/dist/conduit/delivery-router.js +0 -0
  14. package/dist/conduit/delivery-router.js.map +1 -0
  15. package/dist/conduit/index.d.ts +5 -2
  16. package/dist/conduit/index.d.ts.map +1 -1
  17. package/dist/conduit/index.js +5 -2
  18. package/dist/conduit/index.js.map +1 -1
  19. package/dist/conduit/local-tui-adapter.d.ts +89 -0
  20. package/dist/conduit/local-tui-adapter.d.ts.map +1 -0
  21. package/dist/conduit/local-tui-adapter.js +225 -0
  22. package/dist/conduit/local-tui-adapter.js.map +1 -0
  23. package/dist/config/registry.d.ts +54 -0
  24. package/dist/config/registry.d.ts.map +1 -1
  25. package/dist/config/registry.js +94 -2
  26. package/dist/config/registry.js.map +1 -1
  27. package/dist/deriver/queue-manager.d.ts +30 -2
  28. package/dist/deriver/queue-manager.d.ts.map +1 -1
  29. package/dist/deriver/queue-manager.js +54 -9
  30. package/dist/deriver/queue-manager.js.map +1 -1
  31. package/dist/dispatch/config-domain-handler.d.ts +125 -0
  32. package/dist/dispatch/config-domain-handler.d.ts.map +1 -0
  33. package/dist/dispatch/config-domain-handler.js +160 -0
  34. package/dist/dispatch/config-domain-handler.js.map +1 -0
  35. package/dist/dispatch/contracts/input-contracts.d.ts.map +1 -1
  36. package/dist/dispatch/contracts/input-contracts.js +19 -1
  37. package/dist/dispatch/contracts/input-contracts.js.map +1 -1
  38. package/dist/docs/export-document.js +3704 -680
  39. package/dist/docs/export-document.js.map +3 -3
  40. package/dist/gateway-client/client.d.ts +123 -0
  41. package/dist/gateway-client/client.d.ts.map +1 -0
  42. package/dist/gateway-client/client.js +93 -0
  43. package/dist/gateway-client/client.js.map +1 -0
  44. package/dist/gateway-client/generated/client/client.gen.d.ts +3 -0
  45. package/dist/gateway-client/generated/client/client.gen.d.ts.map +1 -0
  46. package/dist/gateway-client/generated/client/client.gen.js +217 -0
  47. package/dist/gateway-client/generated/client/client.gen.js.map +1 -0
  48. package/dist/gateway-client/generated/client/index.d.ts +11 -0
  49. package/dist/gateway-client/generated/client/index.d.ts.map +1 -0
  50. package/dist/gateway-client/generated/client/index.js +7 -0
  51. package/dist/gateway-client/generated/client/index.js.map +1 -0
  52. package/dist/gateway-client/generated/client/types.gen.d.ts +121 -0
  53. package/dist/gateway-client/generated/client/types.gen.d.ts.map +1 -0
  54. package/dist/gateway-client/generated/client/types.gen.js +3 -0
  55. package/dist/gateway-client/generated/client/types.gen.js.map +1 -0
  56. package/dist/gateway-client/generated/client/utils.gen.d.ts +38 -0
  57. package/dist/gateway-client/generated/client/utils.gen.d.ts.map +1 -0
  58. package/dist/gateway-client/generated/client/utils.gen.js +229 -0
  59. package/dist/gateway-client/generated/client/utils.gen.js.map +1 -0
  60. package/dist/gateway-client/generated/client.gen.d.ts +13 -0
  61. package/dist/gateway-client/generated/client.gen.d.ts.map +1 -0
  62. package/dist/gateway-client/generated/client.gen.js +4 -0
  63. package/dist/gateway-client/generated/client.gen.js.map +1 -0
  64. package/dist/gateway-client/generated/core/auth.gen.d.ts +26 -0
  65. package/dist/gateway-client/generated/core/auth.gen.d.ts.map +1 -0
  66. package/dist/gateway-client/generated/core/auth.gen.js +15 -0
  67. package/dist/gateway-client/generated/core/auth.gen.js.map +1 -0
  68. package/dist/gateway-client/generated/core/bodySerializer.gen.d.ts +26 -0
  69. package/dist/gateway-client/generated/core/bodySerializer.gen.d.ts.map +1 -0
  70. package/dist/gateway-client/generated/core/bodySerializer.gen.js +58 -0
  71. package/dist/gateway-client/generated/core/bodySerializer.gen.js.map +1 -0
  72. package/dist/gateway-client/generated/core/params.gen.d.ts +44 -0
  73. package/dist/gateway-client/generated/core/params.gen.d.ts.map +1 -0
  74. package/dist/gateway-client/generated/core/params.gen.js +101 -0
  75. package/dist/gateway-client/generated/core/params.gen.js.map +1 -0
  76. package/dist/gateway-client/generated/core/pathSerializer.gen.d.ts +34 -0
  77. package/dist/gateway-client/generated/core/pathSerializer.gen.d.ts.map +1 -0
  78. package/dist/gateway-client/generated/core/pathSerializer.gen.js +107 -0
  79. package/dist/gateway-client/generated/core/pathSerializer.gen.js.map +1 -0
  80. package/dist/gateway-client/generated/core/queryKeySerializer.gen.d.ts +19 -0
  81. package/dist/gateway-client/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
  82. package/dist/gateway-client/generated/core/queryKeySerializer.gen.js +93 -0
  83. package/dist/gateway-client/generated/core/queryKeySerializer.gen.js.map +1 -0
  84. package/dist/gateway-client/generated/core/serverSentEvents.gen.d.ts +72 -0
  85. package/dist/gateway-client/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  86. package/dist/gateway-client/generated/core/serverSentEvents.gen.js +133 -0
  87. package/dist/gateway-client/generated/core/serverSentEvents.gen.js.map +1 -0
  88. package/dist/gateway-client/generated/core/types.gen.d.ts +84 -0
  89. package/dist/gateway-client/generated/core/types.gen.d.ts.map +1 -0
  90. package/dist/gateway-client/generated/core/types.gen.js +3 -0
  91. package/dist/gateway-client/generated/core/types.gen.js.map +1 -0
  92. package/dist/gateway-client/generated/core/utils.gen.d.ts +20 -0
  93. package/dist/gateway-client/generated/core/utils.gen.d.ts.map +1 -0
  94. package/dist/gateway-client/generated/core/utils.gen.js +88 -0
  95. package/dist/gateway-client/generated/core/utils.gen.js.map +1 -0
  96. package/dist/gateway-client/generated/index.d.ts +3 -0
  97. package/dist/gateway-client/generated/index.d.ts.map +1 -0
  98. package/dist/gateway-client/generated/index.js +3 -0
  99. package/dist/gateway-client/generated/index.js.map +1 -0
  100. package/dist/gateway-client/generated/namespaces.gen.d.ts +512 -0
  101. package/dist/gateway-client/generated/namespaces.gen.d.ts.map +1 -0
  102. package/dist/gateway-client/generated/namespaces.gen.js +521 -0
  103. package/dist/gateway-client/generated/namespaces.gen.js.map +1 -0
  104. package/dist/gateway-client/generated/sdk.gen.d.ts +1780 -0
  105. package/dist/gateway-client/generated/sdk.gen.d.ts.map +1 -0
  106. package/dist/gateway-client/generated/sdk.gen.js +3811 -0
  107. package/dist/gateway-client/generated/sdk.gen.js.map +1 -0
  108. package/dist/gateway-client/generated/types.gen.d.ts +14681 -0
  109. package/dist/gateway-client/generated/types.gen.d.ts.map +1 -0
  110. package/dist/gateway-client/generated/types.gen.js +3 -0
  111. package/dist/gateway-client/generated/types.gen.js.map +1 -0
  112. package/dist/gateway-client/index.d.ts +27 -0
  113. package/dist/gateway-client/index.d.ts.map +1 -0
  114. package/dist/gateway-client/index.js +25 -0
  115. package/dist/gateway-client/index.js.map +1 -0
  116. package/dist/index.d.ts +10 -0
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +20 -0
  119. package/dist/index.js.map +1 -1
  120. package/dist/init.d.ts.map +1 -1
  121. package/dist/init.js +28 -0
  122. package/dist/init.js.map +1 -1
  123. package/dist/internal.d.ts +10 -1
  124. package/dist/internal.d.ts.map +1 -1
  125. package/dist/internal.js +18 -1
  126. package/dist/internal.js.map +1 -1
  127. package/dist/llm/catalog-model-resolver.d.ts +19 -0
  128. package/dist/llm/catalog-model-resolver.d.ts.map +1 -1
  129. package/dist/llm/catalog-model-resolver.js +36 -0
  130. package/dist/llm/catalog-model-resolver.js.map +1 -1
  131. package/dist/llm/catalog-resolver.d.ts +112 -0
  132. package/dist/llm/catalog-resolver.d.ts.map +1 -0
  133. package/dist/llm/catalog-resolver.js +207 -0
  134. package/dist/llm/catalog-resolver.js.map +1 -0
  135. package/dist/llm/catalog-seeder.d.ts +96 -0
  136. package/dist/llm/catalog-seeder.d.ts.map +1 -0
  137. package/dist/llm/catalog-seeder.js +189 -0
  138. package/dist/llm/catalog-seeder.js.map +1 -0
  139. package/dist/llm/cli-ops.js +5 -5
  140. package/dist/llm/cli-ops.js.map +1 -1
  141. package/dist/llm/complexity-classifier.d.ts +208 -0
  142. package/dist/llm/complexity-classifier.d.ts.map +1 -0
  143. package/dist/llm/complexity-classifier.js +359 -0
  144. package/dist/llm/complexity-classifier.js.map +1 -0
  145. package/dist/llm/credential-pool.d.ts +2 -0
  146. package/dist/llm/credential-pool.d.ts.map +1 -1
  147. package/dist/llm/credential-pool.js +5 -2
  148. package/dist/llm/credential-pool.js.map +1 -1
  149. package/dist/llm/credentials-store.d.ts +10 -14
  150. package/dist/llm/credentials-store.d.ts.map +1 -1
  151. package/dist/llm/credentials-store.js.map +1 -1
  152. package/dist/llm/entity-ops.d.ts +299 -0
  153. package/dist/llm/entity-ops.d.ts.map +1 -0
  154. package/dist/llm/entity-ops.js +441 -0
  155. package/dist/llm/entity-ops.js.map +1 -0
  156. package/dist/llm/index.d.ts +15 -0
  157. package/dist/llm/index.d.ts.map +1 -1
  158. package/dist/llm/index.js +8 -0
  159. package/dist/llm/index.js.map +1 -1
  160. package/dist/llm/llm-queue-admit.d.ts +118 -0
  161. package/dist/llm/llm-queue-admit.d.ts.map +1 -0
  162. package/dist/llm/llm-queue-admit.js +275 -0
  163. package/dist/llm/llm-queue-admit.js.map +1 -0
  164. package/dist/llm/oauth/device-code.d.ts.map +1 -1
  165. package/dist/llm/oauth/device-code.js +2 -8
  166. package/dist/llm/oauth/device-code.js.map +1 -1
  167. package/dist/llm/oauth/google-pkce.d.ts.map +1 -1
  168. package/dist/llm/oauth/google-pkce.js +2 -18
  169. package/dist/llm/oauth/google-pkce.js.map +1 -1
  170. package/dist/llm/oauth/pkce.d.ts +70 -0
  171. package/dist/llm/oauth/pkce.d.ts.map +1 -1
  172. package/dist/llm/oauth/pkce.js +106 -29
  173. package/dist/llm/oauth/pkce.js.map +1 -1
  174. package/dist/llm/onboarding/front-door.d.ts +146 -0
  175. package/dist/llm/onboarding/front-door.d.ts.map +1 -0
  176. package/dist/llm/onboarding/front-door.js +153 -0
  177. package/dist/llm/onboarding/front-door.js.map +1 -0
  178. package/dist/llm/onboarding/login-engine.d.ts +175 -0
  179. package/dist/llm/onboarding/login-engine.d.ts.map +1 -0
  180. package/dist/llm/onboarding/login-engine.js +286 -0
  181. package/dist/llm/onboarding/login-engine.js.map +1 -0
  182. package/dist/llm/pi/pi-gondolin-env.d.ts +23 -0
  183. package/dist/llm/pi/pi-gondolin-env.d.ts.map +1 -1
  184. package/dist/llm/pi/pi-gondolin-env.js +2 -2
  185. package/dist/llm/pi/pi-gondolin-env.js.map +1 -1
  186. package/dist/llm/plugin-facade.js +3853 -814
  187. package/dist/llm/plugin-facade.js.map +3 -3
  188. package/dist/llm/provider-registry/builtin/anthropic.d.ts.map +1 -1
  189. package/dist/llm/provider-registry/builtin/anthropic.js +23 -10
  190. package/dist/llm/provider-registry/builtin/anthropic.js.map +1 -1
  191. package/dist/llm/provider-registry/provider-alias.d.ts +62 -0
  192. package/dist/llm/provider-registry/provider-alias.d.ts.map +1 -0
  193. package/dist/llm/provider-registry/provider-alias.js +85 -0
  194. package/dist/llm/provider-registry/provider-alias.js.map +1 -0
  195. package/dist/llm/provider-registry/provider-defs.d.ts +45 -0
  196. package/dist/llm/provider-registry/provider-defs.d.ts.map +1 -0
  197. package/dist/llm/provider-registry/provider-defs.js +145 -0
  198. package/dist/llm/provider-registry/provider-defs.js.map +1 -0
  199. package/dist/llm/provider-registry/provider-seed.d.ts +78 -0
  200. package/dist/llm/provider-registry/provider-seed.d.ts.map +1 -0
  201. package/dist/llm/provider-registry/provider-seed.js +113 -0
  202. package/dist/llm/provider-registry/provider-seed.js.map +1 -0
  203. package/dist/llm/role-executor.d.ts.map +1 -1
  204. package/dist/llm/role-executor.js +36 -0
  205. package/dist/llm/role-executor.js.map +1 -1
  206. package/dist/llm/role-resolver.d.ts.map +1 -1
  207. package/dist/llm/role-resolver.js +9 -2
  208. package/dist/llm/role-resolver.js.map +1 -1
  209. package/dist/llm/system-resolver.d.ts.map +1 -1
  210. package/dist/llm/system-resolver.js +73 -22
  211. package/dist/llm/system-resolver.js.map +1 -1
  212. package/dist/memory/learnings.d.ts +4 -0
  213. package/dist/memory/learnings.d.ts.map +1 -1
  214. package/dist/memory/patterns.d.ts +4 -0
  215. package/dist/memory/patterns.d.ts.map +1 -1
  216. package/dist/metrics/index.d.ts +2 -0
  217. package/dist/metrics/index.d.ts.map +1 -1
  218. package/dist/metrics/index.js +1 -0
  219. package/dist/metrics/index.js.map +1 -1
  220. package/dist/orchestration/spawn.d.ts +89 -0
  221. package/dist/orchestration/spawn.d.ts.map +1 -1
  222. package/dist/orchestration/spawn.js +68 -0
  223. package/dist/orchestration/spawn.js.map +1 -1
  224. package/dist/playbooks/cantbook-profile.d.ts +96 -0
  225. package/dist/playbooks/cantbook-profile.d.ts.map +1 -0
  226. package/dist/playbooks/cantbook-profile.js +97 -0
  227. package/dist/playbooks/cantbook-profile.js.map +1 -0
  228. package/dist/playbooks/guarded-deterministic-runner.d.ts +153 -0
  229. package/dist/playbooks/guarded-deterministic-runner.d.ts.map +1 -0
  230. package/dist/playbooks/guarded-deterministic-runner.js +155 -0
  231. package/dist/playbooks/guarded-deterministic-runner.js.map +1 -0
  232. package/dist/playbooks/index.d.ts +2 -0
  233. package/dist/playbooks/index.d.ts.map +1 -1
  234. package/dist/playbooks/index.js +10 -0
  235. package/dist/playbooks/index.js.map +1 -1
  236. package/dist/playbooks/pi-runner-wiring.d.ts +75 -0
  237. package/dist/playbooks/pi-runner-wiring.d.ts.map +1 -0
  238. package/dist/playbooks/pi-runner-wiring.js +82 -0
  239. package/dist/playbooks/pi-runner-wiring.js.map +1 -0
  240. package/dist/runtime/openapi/generate-openapi.d.ts +211 -0
  241. package/dist/runtime/openapi/generate-openapi.d.ts.map +1 -0
  242. package/dist/runtime/openapi/generate-openapi.js +300 -0
  243. package/dist/runtime/openapi/generate-openapi.js.map +1 -0
  244. package/dist/runtime/openapi/index.d.ts +16 -0
  245. package/dist/runtime/openapi/index.d.ts.map +1 -0
  246. package/dist/runtime/openapi/index.js +16 -0
  247. package/dist/runtime/openapi/index.js.map +1 -0
  248. package/dist/selfimprove/scenarios/dhq-replay-find/golden.json +32 -0
  249. package/dist/selfimprove/scenarios/dhq-replay-find/scenario.json +18 -0
  250. package/dist/setup/config-json-merge.d.ts.map +1 -1
  251. package/dist/setup/config-json-merge.js +14 -0
  252. package/dist/setup/config-json-merge.js.map +1 -1
  253. package/dist/setup/index.d.ts +23 -11
  254. package/dist/setup/index.d.ts.map +1 -1
  255. package/dist/setup/index.js +25 -12
  256. package/dist/setup/index.js.map +1 -1
  257. package/dist/setup/sections/llm.d.ts +28 -1
  258. package/dist/setup/sections/llm.d.ts.map +1 -1
  259. package/dist/setup/sections/llm.js +27 -6
  260. package/dist/setup/sections/llm.js.map +1 -1
  261. package/dist/setup/sections/models-roles.d.ts +40 -0
  262. package/dist/setup/sections/models-roles.d.ts.map +1 -0
  263. package/dist/setup/sections/models-roles.js +219 -0
  264. package/dist/setup/sections/models-roles.js.map +1 -0
  265. package/dist/setup/wizard.d.ts +19 -1
  266. package/dist/setup/wizard.d.ts.map +1 -1
  267. package/dist/setup/wizard.js.map +1 -1
  268. package/dist/store/schedule-schema.d.ts +195 -0
  269. package/dist/store/schedule-schema.d.ts.map +1 -0
  270. package/dist/store/schedule-schema.js +84 -0
  271. package/dist/store/schedule-schema.js.map +1 -0
  272. package/dist/store/schedule-store.d.ts +144 -0
  273. package/dist/store/schedule-store.d.ts.map +1 -0
  274. package/dist/store/schedule-store.js +162 -0
  275. package/dist/store/schedule-store.js.map +1 -0
  276. package/dist/store/schema/attachments.d.ts +1 -1
  277. package/dist/store/schema/cleo-global/index.d.ts +3 -0
  278. package/dist/store/schema/cleo-global/index.d.ts.map +1 -1
  279. package/dist/store/schema/cleo-global/index.js +5 -0
  280. package/dist/store/schema/cleo-global/index.js.map +1 -1
  281. package/dist/store/schema/cleo-global/models-catalog.d.ts +359 -0
  282. package/dist/store/schema/cleo-global/models-catalog.d.ts.map +1 -0
  283. package/dist/store/schema/cleo-global/models-catalog.js +114 -0
  284. package/dist/store/schema/cleo-global/models-catalog.js.map +1 -0
  285. package/dist/store/schema/cleo-global/providers.d.ts +279 -0
  286. package/dist/store/schema/cleo-global/providers.d.ts.map +1 -0
  287. package/dist/store/schema/cleo-global/providers.js +94 -0
  288. package/dist/store/schema/cleo-global/providers.js.map +1 -0
  289. package/dist/store/schema/cleo-global/services.d.ts +493 -0
  290. package/dist/store/schema/cleo-global/services.d.ts.map +1 -0
  291. package/dist/store/schema/cleo-global/services.js +200 -0
  292. package/dist/store/schema/cleo-global/services.js.map +1 -0
  293. package/dist/store/schema/cleo-project/docs.d.ts +1 -1
  294. package/dist/store/schema/cleo-project/provenance-rest.d.ts +1 -1
  295. package/dist/store/schema/cleo-shared/brain.d.ts +2 -2
  296. package/dist/store/schema/memory-schema.d.ts +182 -2
  297. package/dist/store/schema/memory-schema.d.ts.map +1 -1
  298. package/dist/store/schema/memory-schema.js +111 -2
  299. package/dist/store/schema/memory-schema.js.map +1 -1
  300. package/dist/store/schema/provenance/releases.d.ts +1 -1
  301. package/dist/store/service-connections-accessor.d.ts +313 -0
  302. package/dist/store/service-connections-accessor.d.ts.map +1 -0
  303. package/dist/store/service-connections-accessor.js +464 -0
  304. package/dist/store/service-connections-accessor.js.map +1 -0
  305. package/dist/store/service-host-matcher.d.ts +70 -0
  306. package/dist/store/service-host-matcher.d.ts.map +1 -0
  307. package/dist/store/service-host-matcher.js +127 -0
  308. package/dist/store/service-host-matcher.js.map +1 -0
  309. package/dist/store/service-injection.d.ts +152 -0
  310. package/dist/store/service-injection.d.ts.map +1 -0
  311. package/dist/store/service-injection.js +225 -0
  312. package/dist/store/service-injection.js.map +1 -0
  313. package/dist/store/service-oauth.d.ts +287 -0
  314. package/dist/store/service-oauth.d.ts.map +1 -0
  315. package/dist/store/service-oauth.js +524 -0
  316. package/dist/store/service-oauth.js.map +1 -0
  317. package/dist/store/service-trust-gate.d.ts +164 -0
  318. package/dist/store/service-trust-gate.d.ts.map +1 -0
  319. package/dist/store/service-trust-gate.js +122 -0
  320. package/dist/store/service-trust-gate.js.map +1 -0
  321. package/dist/store/validation-schemas.d.ts +4 -4
  322. package/dist/tasks/agent-lifecycle-lane.d.ts +175 -0
  323. package/dist/tasks/agent-lifecycle-lane.d.ts.map +1 -0
  324. package/dist/tasks/agent-lifecycle-lane.js +176 -0
  325. package/dist/tasks/agent-lifecycle-lane.js.map +1 -0
  326. package/dist/tasks/complete.d.ts +17 -0
  327. package/dist/tasks/complete.d.ts.map +1 -1
  328. package/dist/tasks/complete.js +53 -10
  329. package/dist/tasks/complete.js.map +1 -1
  330. package/dist/tasks/depends-waiver-audit.d.ts +52 -0
  331. package/dist/tasks/depends-waiver-audit.d.ts.map +1 -0
  332. package/dist/tasks/depends-waiver-audit.js +36 -0
  333. package/dist/tasks/depends-waiver-audit.js.map +1 -0
  334. package/dist/tasks/engine-wrap.d.ts +36 -2
  335. package/dist/tasks/engine-wrap.d.ts.map +1 -1
  336. package/dist/tasks/engine-wrap.js +44 -2
  337. package/dist/tasks/engine-wrap.js.map +1 -1
  338. package/dist/tasks/index.d.ts +1 -0
  339. package/dist/tasks/index.d.ts.map +1 -1
  340. package/dist/tasks/index.js +1 -0
  341. package/dist/tasks/index.js.map +1 -1
  342. package/dist/tasks/ops.d.ts +3 -0
  343. package/dist/tasks/ops.d.ts.map +1 -1
  344. package/dist/tasks/task-ops.d.ts +1 -1
  345. package/dist/tasks/task-ops.d.ts.map +1 -1
  346. package/dist/tasks/task-ops.js +3 -1
  347. package/dist/tasks/task-ops.js.map +1 -1
  348. package/dist/tasks/task-reparent.d.ts +90 -0
  349. package/dist/tasks/task-reparent.d.ts.map +1 -1
  350. package/dist/tasks/task-reparent.js +171 -0
  351. package/dist/tasks/task-reparent.js.map +1 -1
  352. package/dist/tools/builtin-agent-tools.d.ts.map +1 -1
  353. package/dist/tools/builtin-agent-tools.js +41 -0
  354. package/dist/tools/builtin-agent-tools.js.map +1 -1
  355. package/dist/tools/exec-code-agent-tool.d.ts +179 -0
  356. package/dist/tools/exec-code-agent-tool.d.ts.map +1 -0
  357. package/dist/tools/exec-code-agent-tool.js +239 -0
  358. package/dist/tools/exec-code-agent-tool.js.map +1 -0
  359. package/dist/tools/index.d.ts +6 -0
  360. package/dist/tools/index.d.ts.map +1 -1
  361. package/dist/tools/index.js +15 -0
  362. package/dist/tools/index.js.map +1 -1
  363. package/dist/tools/mcp-agent-tool.d.ts +189 -0
  364. package/dist/tools/mcp-agent-tool.d.ts.map +1 -0
  365. package/dist/tools/mcp-agent-tool.js +243 -0
  366. package/dist/tools/mcp-agent-tool.js.map +1 -0
  367. package/dist/tools/media-agent-tools.d.ts +105 -0
  368. package/dist/tools/media-agent-tools.d.ts.map +1 -0
  369. package/dist/tools/media-agent-tools.js +255 -0
  370. package/dist/tools/media-agent-tools.js.map +1 -0
  371. package/dist/tools/memory-agent-tools.d.ts +99 -0
  372. package/dist/tools/memory-agent-tools.d.ts.map +1 -0
  373. package/dist/tools/memory-agent-tools.js +190 -0
  374. package/dist/tools/memory-agent-tools.js.map +1 -0
  375. package/dist/tools/schedule-agent-tools.d.ts +151 -0
  376. package/dist/tools/schedule-agent-tools.d.ts.map +1 -0
  377. package/dist/tools/schedule-agent-tools.js +238 -0
  378. package/dist/tools/schedule-agent-tools.js.map +1 -0
  379. package/dist/tools/skill-agent-tool.d.ts +108 -0
  380. package/dist/tools/skill-agent-tool.d.ts.map +1 -0
  381. package/dist/tools/skill-agent-tool.js +135 -0
  382. package/dist/tools/skill-agent-tool.js.map +1 -0
  383. package/dist/validation/engine-ops.d.ts.map +1 -1
  384. package/dist/validation/engine-ops.js +17 -1
  385. package/dist/validation/engine-ops.js.map +1 -1
  386. package/migrations/drizzle-brain/20260610000001_t10405-bitemporal-network-columns/migration.sql +71 -0
  387. package/migrations/drizzle-cleo-global/20260609000000_t11937-service-vault/migration.sql +93 -0
  388. package/migrations/drizzle-cleo-global/20260609010000_t11733-models-catalog/migration.sql +65 -0
  389. package/migrations/drizzle-cleo-global/20260609020000_t11703-providers/migration.sql +52 -0
  390. package/migrations/drizzle-cleo-global/20260610000000_t11962-schedules/migration.sql +48 -0
  391. package/migrations/drizzle-cleo-project/20260610000000_t11962-schedules/migration.sql +48 -0
  392. package/package.json +23 -13
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Delivery Router + Session Store — route inbound channel messages to the agent
3
+ * and route the agent's reply back to the originating channel.
4
+ *
5
+ * This is the minimal Session Store + Delivery Router stub from T1797 (epic
6
+ * T11854 · saga T10419). It tracks per-channel session affinity in memory and
7
+ * resolves an {@link OutboundReply} back to the {@link ChannelAdapter} that
8
+ * originated the inbound exchange. Channels register with the router; inbound
9
+ * messages flow `adapter.receive() → router.ingest() → handler`, and the
10
+ * handler's reply flows `router.dispatch() → adapter.send()` over the SAME
11
+ * channel by session affinity.
12
+ *
13
+ * The store is in-memory by design for the contained increment: the underlying
14
+ * conduit `LocalTransport` already persists the message rows in conduit.db
15
+ * (via the consolidated `conduit_*` domain through the store chokepoint), so the
16
+ * router does NOT open its own database handle and introduces no new schema.
17
+ * A durable session table is a follow-up if cross-process routing is needed.
18
+ *
19
+ * @see T1797 — Session Store + Delivery Router.
20
+ * @epic T11854
21
+ * @saga T10419
22
+ * @module conduit/delivery-router
23
+ */
24
+ import type { ChannelAdapter, ChannelSession, InboundMsg, OutboundReply } from '@cleocode/contracts';
25
+ /** Handler invoked for each routed inbound message; returns an optional reply. */
26
+ export type InboundHandler = (msg: InboundMsg) => Promise<OutboundReply | undefined>;
27
+ /**
28
+ * In-memory per-channel session-affinity store.
29
+ *
30
+ * Keyed on `(channelId, sessionKey)`, it remembers the last inbound exchange so
31
+ * the {@link DeliveryRouter} can route a reply back to the originating channel
32
+ * without the caller threading routing state.
33
+ *
34
+ * @see T1797
35
+ */
36
+ export declare class SessionStore {
37
+ private readonly sessions;
38
+ /**
39
+ * Record (or refresh) the session for an inbound message.
40
+ *
41
+ * @param msg - The inbound message establishing the session.
42
+ * @returns The stored {@link ChannelSession}.
43
+ */
44
+ touch(msg: InboundMsg): ChannelSession;
45
+ /**
46
+ * Look up a stored session by channel + session key.
47
+ *
48
+ * @param channelId - The channel id.
49
+ * @param sessionKey - The channel-native session key.
50
+ * @returns The session if present, else `undefined`.
51
+ */
52
+ get(channelId: string, sessionKey: string): ChannelSession | undefined;
53
+ /**
54
+ * List every tracked session (newest-touched first).
55
+ *
56
+ * @returns A snapshot array of sessions.
57
+ */
58
+ list(): ChannelSession[];
59
+ /** Remove all tracked sessions. */
60
+ clear(): void;
61
+ }
62
+ /**
63
+ * Routes inbound channel messages to a handler and delivers replies back to the
64
+ * originating channel by session affinity.
65
+ *
66
+ * Channels register via {@link DeliveryRouter.register}. Calling
67
+ * {@link DeliveryRouter.run} drains each registered adapter's `receive()`
68
+ * stream, invokes the handler, and — when the handler returns a reply — routes
69
+ * it back over the same channel.
70
+ *
71
+ * @see T1797
72
+ */
73
+ export declare class DeliveryRouter {
74
+ private readonly adapters;
75
+ private readonly store;
76
+ /**
77
+ * Create a router.
78
+ *
79
+ * @param store - Optional injected {@link SessionStore} (a fresh in-memory
80
+ * store is created when omitted).
81
+ */
82
+ constructor(store?: SessionStore);
83
+ /** The session store backing this router. */
84
+ get sessions(): SessionStore;
85
+ /**
86
+ * Register a channel adapter with the router.
87
+ *
88
+ * @param adapter - The adapter to route for.
89
+ * @throws When an adapter with the same id is already registered.
90
+ */
91
+ register(adapter: ChannelAdapter): void;
92
+ /**
93
+ * Resolve the adapter registered for a channel id.
94
+ *
95
+ * @param channelId - The channel id.
96
+ * @returns The adapter if registered, else `undefined`.
97
+ */
98
+ adapter(channelId: string): ChannelAdapter | undefined;
99
+ /**
100
+ * Ingest a single inbound message: record session affinity and invoke the
101
+ * handler. When the handler returns a reply, it is dispatched back to the
102
+ * originating channel.
103
+ *
104
+ * Exposed independently of {@link DeliveryRouter.run} so a caller (or test)
105
+ * can drive one message at a time over an in-memory transport.
106
+ *
107
+ * @param msg - The inbound message.
108
+ * @param handler - The agent handler producing an optional reply.
109
+ */
110
+ ingest(msg: InboundMsg, handler: InboundHandler): Promise<void>;
111
+ /**
112
+ * Dispatch an outbound reply back to a channel.
113
+ *
114
+ * Resolution order for the destination channel + session:
115
+ * 1. Explicit `reply.channelId` / `reply.sessionKey`.
116
+ * 2. The originating inbound message's channel + session (affinity).
117
+ * 3. The adapter's `config.homeChannel` session fallback.
118
+ *
119
+ * @param reply - The reply to deliver.
120
+ * @param origin - The inbound message being replied to (for affinity).
121
+ * @throws When no destination channel can be resolved or is unregistered.
122
+ */
123
+ dispatch(reply: OutboundReply, origin?: InboundMsg): Promise<void>;
124
+ /**
125
+ * Drain a registered adapter's inbound stream, routing each message through
126
+ * the handler until the adapter stops (its `receive()` iterator ends).
127
+ *
128
+ * @param channelId - The channel to run.
129
+ * @param handler - The agent handler producing optional replies.
130
+ * @throws When the channel is not registered.
131
+ */
132
+ run(channelId: string, handler: InboundHandler): Promise<void>;
133
+ }
134
+ //# sourceMappingURL=delivery-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-router.d.ts","sourceRoot":"","sources":["../../src/conduit/delivery-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAE7B,kFAAkF;AAClF,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;AAOrF;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAE9D;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,cAAc;IAYtC;;;;;;OAMG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAItE;;;;OAIG;IACH,IAAI,IAAI,cAAc,EAAE;IAIxB,mCAAmC;IACnC,KAAK,IAAI,IAAI;CAGd;AAED;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC;;;;;OAKG;gBACS,KAAK,CAAC,EAAE,YAAY;IAIhC,6CAA6C;IAC7C,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAOvC;;;;;OAKG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAItD;;;;;;;;;;OAUG;IACG,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrE;;;;;;;;;;;OAWG;IACG,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxE;;;;;;;OAOG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CASrE"}
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-router.js","sourceRoot":"","sources":["../../src/conduit/delivery-router.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,18 @@
2
2
  * Conduit — High-level agent messaging for the CLEO ecosystem.
3
3
  *
4
4
  * Exports the ConduitClient (high-level messaging), HttpTransport
5
- * (HTTP polling to cloud), LocalTransport (offline SQLite), and
6
- * createConduit factory.
5
+ * (HTTP polling to cloud), LocalTransport (offline SQLite), the
6
+ * channel layer (LocalTuiChannelAdapter + DeliveryRouter/SessionStore),
7
+ * and the createConduit factory.
7
8
  *
8
9
  * @module conduit
9
10
  */
10
11
  export { ConduitClient } from './conduit-client.js';
12
+ export { DeliveryRouter, type InboundHandler, SessionStore, } from './delivery-router.js';
11
13
  export { createConduit, resolveTransport } from './factory.js';
12
14
  export { HttpTransport } from './http-transport.js';
13
15
  export { LocalTransport } from './local-transport.js';
16
+ export { LOCAL_TUI_CHANNEL_ID, LocalTuiChannelAdapter, type LocalTuiChannelAdapterOptions, } from './local-tui-adapter.js';
14
17
  export type { conduitCoreOps } from './ops.js';
15
18
  export { SseTransport } from './sse-transport.js';
16
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conduit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conduit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,KAAK,cAAc,EACnB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -2,14 +2,17 @@
2
2
  * Conduit — High-level agent messaging for the CLEO ecosystem.
3
3
  *
4
4
  * Exports the ConduitClient (high-level messaging), HttpTransport
5
- * (HTTP polling to cloud), LocalTransport (offline SQLite), and
6
- * createConduit factory.
5
+ * (HTTP polling to cloud), LocalTransport (offline SQLite), the
6
+ * channel layer (LocalTuiChannelAdapter + DeliveryRouter/SessionStore),
7
+ * and the createConduit factory.
7
8
  *
8
9
  * @module conduit
9
10
  */
10
11
  export { ConduitClient } from './conduit-client.js';
12
+ export { DeliveryRouter, SessionStore, } from './delivery-router.js';
11
13
  export { createConduit, resolveTransport } from './factory.js';
12
14
  export { HttpTransport } from './http-transport.js';
13
15
  export { LocalTransport } from './local-transport.js';
16
+ export { LOCAL_TUI_CHANNEL_ID, LocalTuiChannelAdapter, } from './local-tui-adapter.js';
14
17
  export { SseTransport } from './sse-transport.js';
15
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conduit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conduit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,cAAc,EAEd,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * LocalTuiChannelAdapter — the first reference {@link ChannelAdapter} (T11952).
3
+ *
4
+ * A fully-offline, daemon-OFF terminal channel that rides the EXISTING conduit
5
+ * {@link Transport} (the project-local `LocalTransport` over conduit.db). It
6
+ * needs no network and no platform credential: the single local operator on the
7
+ * other end of stdin/stdout is treated as a verified sender.
8
+ *
9
+ * The adapter translates between the channel-native surface and the normalized
10
+ * {@link InboundMsg} / {@link OutboundReply} shapes the {@link DeliveryRouter}
11
+ * consumes. It does NOT reinvent the transport — every wire operation delegates
12
+ * to the injected {@link Transport} (push/poll/subscribe), so the SAME adapter
13
+ * works over `LocalTransport` in production and an in-memory transport in tests.
14
+ *
15
+ * Platform adapters (Telegram/Discord/Slack/WhatsApp — T11855) implement the
16
+ * same {@link ChannelAdapter} contract but are credential+network gated and are
17
+ * out of scope for this contained increment.
18
+ *
19
+ * @epic T11854
20
+ * @saga T10419
21
+ * @module conduit/local-tui-adapter
22
+ */
23
+ import type { ChannelAdapter, ChannelConfig, ChannelHealth, InboundMsg, OutboundReply, Transport, TransportConnectConfig } from '@cleocode/contracts';
24
+ /** Default channel id for the Local-TUI adapter. */
25
+ export declare const LOCAL_TUI_CHANNEL_ID = "local-tui";
26
+ /** Options for constructing a {@link LocalTuiChannelAdapter}. */
27
+ export interface LocalTuiChannelAdapterOptions {
28
+ /** The transport this channel rides (e.g. conduit `LocalTransport`). */
29
+ transport: Transport;
30
+ /** Transport connect config (agentId / apiKey / apiBaseUrl). */
31
+ connectConfig: TransportConnectConfig;
32
+ /** Per-channel configuration. */
33
+ config?: ChannelConfig;
34
+ /** Channel id override (defaults to {@link LOCAL_TUI_CHANNEL_ID}). */
35
+ id?: string;
36
+ }
37
+ /**
38
+ * Local terminal channel adapter over a conduit {@link Transport}.
39
+ *
40
+ * @see T11952
41
+ */
42
+ export declare class LocalTuiChannelAdapter implements ChannelAdapter {
43
+ readonly id: string;
44
+ readonly config: ChannelConfig;
45
+ private readonly transport;
46
+ private readonly connectConfig;
47
+ private status;
48
+ private detail;
49
+ private unsubscribe;
50
+ private queue;
51
+ /** Create a Local-TUI channel adapter. */
52
+ constructor(options: LocalTuiChannelAdapterOptions);
53
+ /**
54
+ * Connect the transport and begin buffering inbound messages.
55
+ *
56
+ * Idempotent: a second `start()` while already connected is a no-op.
57
+ */
58
+ start(): Promise<void>;
59
+ /** Detach the subscription, end the inbound stream, and disconnect. */
60
+ stop(): Promise<void>;
61
+ /**
62
+ * Stream inbound messages as they arrive on the transport.
63
+ *
64
+ * Yields each {@link InboundMsg} until {@link LocalTuiChannelAdapter.stop}
65
+ * ends the iterator. When the transport lacks `subscribe()`, falls back to a
66
+ * single drain of `poll()` so the channel is still usable.
67
+ */
68
+ receive(): AsyncIterable<InboundMsg>;
69
+ /**
70
+ * Send a reply back to the channel over the transport.
71
+ *
72
+ * @param reply - The reply. The destination session resolves from
73
+ * `reply.sessionKey` then `config.homeChannel` then the default TTY session.
74
+ */
75
+ send(reply: OutboundReply): Promise<void>;
76
+ /** Sample the adapter's current health. */
77
+ health(): ChannelHealth;
78
+ /** Push a transport message onto the inbound queue (after policy filtering). */
79
+ private onTransportMessage;
80
+ /**
81
+ * Normalize a {@link ConduitMessage} into an {@link InboundMsg}, applying the
82
+ * channel's allowlist + require-mention policy. Returns `undefined` when the
83
+ * message is filtered out.
84
+ */
85
+ private toInbound;
86
+ /** Whether the message content mentions the connected agent id. */
87
+ private mentionsAgent;
88
+ }
89
+ //# sourceMappingURL=local-tui-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-tui-adapter.d.ts","sourceRoot":"","sources":["../../src/conduit/local-tui-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EAGb,UAAU,EACV,aAAa,EACb,SAAS,EACT,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,oDAAoD;AACpD,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAKhD,iEAAiE;AACjE,MAAM,WAAW,6BAA6B;IAC5C,wEAAwE;IACxE,SAAS,EAAE,SAAS,CAAC;IACrB,gEAAgE;IAChE,aAAa,EAAE,sBAAsB,CAAC;IACtC,iCAAiC;IACjC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,sEAAsE;IACtE,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAkDD;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAE/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IACvD,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,KAAK,CAAuC;IAEpD,0CAA0C;gBAC9B,OAAO,EAAE,6BAA6B;IAOlD;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB5B,uEAAuE;IACjE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B;;;;;;OAMG;IACI,OAAO,IAAI,aAAa,CAAC,UAAU,CAAC;IAuB3C;;;;;OAKG;IACG,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/C,2CAA2C;IAC3C,MAAM,IAAI,aAAa;IAUvB,gFAAgF;IAChF,OAAO,CAAC,kBAAkB;IAO1B;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAmBjB,mEAAmE;IACnE,OAAO,CAAC,aAAa;CAGtB"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * LocalTuiChannelAdapter — the first reference {@link ChannelAdapter} (T11952).
3
+ *
4
+ * A fully-offline, daemon-OFF terminal channel that rides the EXISTING conduit
5
+ * {@link Transport} (the project-local `LocalTransport` over conduit.db). It
6
+ * needs no network and no platform credential: the single local operator on the
7
+ * other end of stdin/stdout is treated as a verified sender.
8
+ *
9
+ * The adapter translates between the channel-native surface and the normalized
10
+ * {@link InboundMsg} / {@link OutboundReply} shapes the {@link DeliveryRouter}
11
+ * consumes. It does NOT reinvent the transport — every wire operation delegates
12
+ * to the injected {@link Transport} (push/poll/subscribe), so the SAME adapter
13
+ * works over `LocalTransport` in production and an in-memory transport in tests.
14
+ *
15
+ * Platform adapters (Telegram/Discord/Slack/WhatsApp — T11855) implement the
16
+ * same {@link ChannelAdapter} contract but are credential+network gated and are
17
+ * out of scope for this contained increment.
18
+ *
19
+ * @epic T11854
20
+ * @saga T10419
21
+ * @module conduit/local-tui-adapter
22
+ */
23
+ /** Default channel id for the Local-TUI adapter. */
24
+ export const LOCAL_TUI_CHANNEL_ID = 'local-tui';
25
+ /** Default session key used when no explicit thread is supplied (single TTY session). */
26
+ const DEFAULT_SESSION_KEY = 'tui';
27
+ /**
28
+ * A bounded async queue that lets a push-style transport subscription be
29
+ * consumed as a pull-style {@link AsyncIterable}.
30
+ *
31
+ * @internal
32
+ */
33
+ class MessageQueue {
34
+ buffer = [];
35
+ waiters = [];
36
+ closed = false;
37
+ /** Enqueue a value (or hand it directly to a waiting consumer). */
38
+ push(value) {
39
+ if (this.closed)
40
+ return;
41
+ const waiter = this.waiters.shift();
42
+ if (waiter) {
43
+ waiter({ value, done: false });
44
+ }
45
+ else {
46
+ this.buffer.push(value);
47
+ }
48
+ }
49
+ /** Close the queue: pending and future consumers receive `done`. */
50
+ close() {
51
+ if (this.closed)
52
+ return;
53
+ this.closed = true;
54
+ let waiter = this.waiters.shift();
55
+ while (waiter) {
56
+ waiter({ value: undefined, done: true });
57
+ waiter = this.waiters.shift();
58
+ }
59
+ }
60
+ /** Pull the next value, awaiting one if the buffer is empty. */
61
+ next() {
62
+ const buffered = this.buffer.shift();
63
+ if (buffered !== undefined) {
64
+ return Promise.resolve({ value: buffered, done: false });
65
+ }
66
+ if (this.closed) {
67
+ return Promise.resolve({ value: undefined, done: true });
68
+ }
69
+ return new Promise((resolve) => {
70
+ this.waiters.push(resolve);
71
+ });
72
+ }
73
+ }
74
+ /**
75
+ * Local terminal channel adapter over a conduit {@link Transport}.
76
+ *
77
+ * @see T11952
78
+ */
79
+ export class LocalTuiChannelAdapter {
80
+ id;
81
+ config;
82
+ transport;
83
+ connectConfig;
84
+ status = 'disconnected';
85
+ detail;
86
+ unsubscribe;
87
+ queue;
88
+ /** Create a Local-TUI channel adapter. */
89
+ constructor(options) {
90
+ this.transport = options.transport;
91
+ this.connectConfig = options.connectConfig;
92
+ this.id = options.id ?? LOCAL_TUI_CHANNEL_ID;
93
+ this.config = options.config ?? {};
94
+ }
95
+ /**
96
+ * Connect the transport and begin buffering inbound messages.
97
+ *
98
+ * Idempotent: a second `start()` while already connected is a no-op.
99
+ */
100
+ async start() {
101
+ if (this.status === 'connected')
102
+ return;
103
+ try {
104
+ await this.transport.connect(this.connectConfig);
105
+ if (this.transport.subscribe) {
106
+ this.queue = new MessageQueue();
107
+ this.unsubscribe = this.transport.subscribe((m) => this.onTransportMessage(m));
108
+ this.status = 'connected';
109
+ }
110
+ else {
111
+ // No real-time subscription — the channel still functions via poll(),
112
+ // but inbound streaming is degraded (no queue: receive() drains poll()).
113
+ this.queue = undefined;
114
+ this.status = 'degraded';
115
+ this.detail = 'transport has no subscribe(); receive() falls back to poll()';
116
+ }
117
+ }
118
+ catch (err) {
119
+ this.status = 'error';
120
+ this.detail = err instanceof Error ? err.message : String(err);
121
+ throw err;
122
+ }
123
+ }
124
+ /** Detach the subscription, end the inbound stream, and disconnect. */
125
+ async stop() {
126
+ this.unsubscribe?.();
127
+ this.unsubscribe = undefined;
128
+ this.queue?.close();
129
+ this.queue = undefined;
130
+ await this.transport.disconnect();
131
+ this.status = 'disconnected';
132
+ this.detail = undefined;
133
+ }
134
+ /**
135
+ * Stream inbound messages as they arrive on the transport.
136
+ *
137
+ * Yields each {@link InboundMsg} until {@link LocalTuiChannelAdapter.stop}
138
+ * ends the iterator. When the transport lacks `subscribe()`, falls back to a
139
+ * single drain of `poll()` so the channel is still usable.
140
+ */
141
+ async *receive() {
142
+ if (this.status !== 'connected' && this.status !== 'degraded') {
143
+ throw new Error(`LocalTuiChannelAdapter.receive: channel "${this.id}" not started`);
144
+ }
145
+ // Degraded path: no real-time subscription — drain what poll() returns now.
146
+ if (!this.queue) {
147
+ const polled = await this.transport.poll();
148
+ for (const m of polled) {
149
+ const inbound = this.toInbound(m);
150
+ if (inbound)
151
+ yield inbound;
152
+ }
153
+ return;
154
+ }
155
+ const queue = this.queue;
156
+ for (;;) {
157
+ const result = await queue.next();
158
+ if (result.done)
159
+ return;
160
+ yield result.value;
161
+ }
162
+ }
163
+ /**
164
+ * Send a reply back to the channel over the transport.
165
+ *
166
+ * @param reply - The reply. The destination session resolves from
167
+ * `reply.sessionKey` then `config.homeChannel` then the default TTY session.
168
+ */
169
+ async send(reply) {
170
+ if (this.status !== 'connected' && this.status !== 'degraded') {
171
+ throw new Error(`LocalTuiChannelAdapter.send: channel "${this.id}" not started`);
172
+ }
173
+ const sessionKey = reply.sessionKey ?? this.config.homeChannel ?? DEFAULT_SESSION_KEY;
174
+ // Reply is addressed back to the connected operator id; the conversation is
175
+ // keyed by sessionKey so the originating thread is preserved.
176
+ await this.transport.push(this.connectConfig.agentId, reply.content, {
177
+ conversationId: sessionKey,
178
+ });
179
+ }
180
+ /** Sample the adapter's current health. */
181
+ health() {
182
+ return {
183
+ channelId: this.id,
184
+ status: this.status,
185
+ transport: this.transport.name,
186
+ detail: this.detail,
187
+ checkedAt: new Date().toISOString(),
188
+ };
189
+ }
190
+ /** Push a transport message onto the inbound queue (after policy filtering). */
191
+ onTransportMessage(message) {
192
+ const inbound = this.toInbound(message);
193
+ if (inbound) {
194
+ this.queue?.push(inbound);
195
+ }
196
+ }
197
+ /**
198
+ * Normalize a {@link ConduitMessage} into an {@link InboundMsg}, applying the
199
+ * channel's allowlist + require-mention policy. Returns `undefined` when the
200
+ * message is filtered out.
201
+ */
202
+ toInbound(message) {
203
+ const allowed = this.config.allowedUsers;
204
+ if (allowed && allowed.length > 0 && !allowed.includes(message.from)) {
205
+ return undefined;
206
+ }
207
+ if (this.config.requireMention && !this.mentionsAgent(message.content)) {
208
+ return undefined;
209
+ }
210
+ return {
211
+ id: message.id,
212
+ channelId: this.id,
213
+ from: message.from,
214
+ content: message.content,
215
+ sessionKey: message.threadId ?? this.config.homeChannel ?? DEFAULT_SESSION_KEY,
216
+ timestamp: message.timestamp,
217
+ payload: message.payload,
218
+ };
219
+ }
220
+ /** Whether the message content mentions the connected agent id. */
221
+ mentionsAgent(content) {
222
+ return content.includes(`@${this.connectConfig.agentId}`);
223
+ }
224
+ }
225
+ //# sourceMappingURL=local-tui-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-tui-adapter.js","sourceRoot":"","sources":["../../src/conduit/local-tui-adapter.ts"],"names":[],"mappings":"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"}
@@ -150,6 +150,60 @@ export declare function getConfigValue<T = unknown>(key: string, opts: {
150
150
  scope?: ResolveScope;
151
151
  projectRoot: string;
152
152
  }): Promise<T | undefined>;
153
+ /**
154
+ * Flatten a resolved config object into its dot-notation leaf keys.
155
+ *
156
+ * Recurses into plain objects; arrays and primitives are treated as leaf
157
+ * values. Used by `config.list` to surface a discoverable, copy-pasteable key
158
+ * list alongside the full resolved object.
159
+ *
160
+ * @param obj - A resolved config object (e.g. from {@link resolveCleoConfig}).
161
+ * @returns Sorted dot-notation key paths to every leaf value.
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * flattenConfigKeys({ a: { b: 1 }, c: [2] }); // → ['a.b', 'c']
166
+ * ```
167
+ *
168
+ * @public
169
+ */
170
+ export declare function flattenConfigKeys(obj: Record<string, unknown>): string[];
171
+ /**
172
+ * Result of {@link unsetConfigValue}.
173
+ *
174
+ * @public
175
+ */
176
+ export interface UnsetResult {
177
+ /** The dot-notation key that was targeted. */
178
+ key: string;
179
+ /** Scope the key was removed from. */
180
+ scope: 'project' | 'global';
181
+ /** `true` IFF a value was actually deleted (idempotent: `false` when absent). */
182
+ removed: boolean;
183
+ }
184
+ /**
185
+ * Remove a single `.`-separated key from a scoped config file and persist the
186
+ * result. Pure JSON file IO — does NOT open SQLite (ADR-068 preserved).
187
+ *
188
+ * Idempotent: when the key is already absent the file is left untouched and
189
+ * `{ removed: false }` is returned. When the key exists it is deleted (pruning
190
+ * the now-empty parent objects is intentionally NOT done — operators may rely on
191
+ * a present-but-empty namespace), the file is rewritten, and `{ removed: true }`
192
+ * is returned.
193
+ *
194
+ * @param key - Dot-separated key to remove (e.g. `'release.branchModel'`).
195
+ * @param opts.projectRoot - Absolute path to the project root.
196
+ * @param opts.global - When `true`, target the global `~/.cleo/config.json`
197
+ * instead of the project file.
198
+ * @returns The {@link UnsetResult} describing the outcome.
199
+ * @throws When the present file contains malformed JSON.
200
+ *
201
+ * @public
202
+ */
203
+ export declare function unsetConfigValue(key: string, opts: {
204
+ projectRoot: string;
205
+ global?: boolean;
206
+ }): Promise<UnsetResult>;
153
207
  /**
154
208
  * Validate a scoped config file against its manifest entry's `schema`.
155
209
  *
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/config/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAkBH;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3D;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,EAAE,EAAE,OAAO,CAAC;IACZ,uDAAuD;IACvD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA0GD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,YAAY,CAAC,CA2BxB;AAoBD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAGtF;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAG5F;AAMD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAClD,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAIxB;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CAGzB;AAgCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAU7F"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/config/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAkBH;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3D;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,EAAE,EAAE,OAAO,CAAC;IACZ,uDAAuD;IACvD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA0GD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,YAAY,CAAC,CA2BxB;AAoBD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAGtF;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAG5F;AAMD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9C,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAClD,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAIxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAcxE;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,iFAAiF;IACjF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9C,OAAO,CAAC,WAAW,CAAC,CAmBtB;AAuBD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CAGzB;AAgCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAU7F"}