@hotmeshio/long-tail 0.1.14 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/README.md +15 -0
  2. package/build/api/escalations/bulk.d.ts +78 -0
  3. package/build/api/escalations/bulk.js +279 -0
  4. package/build/api/escalations/claim.d.ts +30 -0
  5. package/build/api/escalations/claim.js +121 -0
  6. package/build/api/escalations/create.d.ts +29 -0
  7. package/build/api/escalations/create.js +101 -0
  8. package/build/api/escalations/helpers.d.ts +10 -0
  9. package/build/api/escalations/helpers.js +80 -0
  10. package/build/api/escalations/index.d.ts +6 -0
  11. package/build/api/escalations/index.js +26 -0
  12. package/build/api/escalations/list.d.ts +75 -0
  13. package/build/api/escalations/list.js +170 -0
  14. package/build/api/escalations/resolve.d.ts +18 -0
  15. package/build/api/escalations/resolve.js +243 -0
  16. package/build/api/escalations/single.d.ts +37 -0
  17. package/build/api/escalations/single.js +123 -0
  18. package/build/api/files.d.ts +3 -0
  19. package/build/api/files.js +18 -1
  20. package/build/api/knowledge.d.ts +36 -0
  21. package/build/api/knowledge.js +112 -0
  22. package/build/api/mcp/index.d.ts +2 -0
  23. package/build/api/mcp/index.js +16 -0
  24. package/build/api/{mcp.d.ts → mcp/servers.d.ts} +1 -33
  25. package/build/api/{mcp.js → mcp/servers.js} +4 -65
  26. package/build/api/mcp/tools.d.ts +33 -0
  27. package/build/api/mcp/tools.js +64 -0
  28. package/build/api/settings.js +6 -1
  29. package/build/api/workflows/config.d.ts +64 -0
  30. package/build/api/workflows/config.js +142 -0
  31. package/build/api/workflows/discovery.d.ts +29 -0
  32. package/build/api/workflows/discovery.js +153 -0
  33. package/build/api/workflows/index.d.ts +3 -0
  34. package/build/api/workflows/index.js +18 -0
  35. package/build/api/workflows/invocation.d.ts +67 -0
  36. package/build/api/workflows/invocation.js +188 -0
  37. package/build/api/yaml-workflows/cron.d.ts +39 -0
  38. package/build/api/yaml-workflows/cron.js +127 -0
  39. package/build/api/{yaml-workflows.d.ts → yaml-workflows/crud.d.ts} +22 -146
  40. package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +99 -380
  41. package/build/api/yaml-workflows/deploy.d.ts +71 -0
  42. package/build/api/yaml-workflows/deploy.js +223 -0
  43. package/build/api/yaml-workflows/helpers.d.ts +2 -0
  44. package/build/api/yaml-workflows/helpers.js +8 -0
  45. package/build/api/yaml-workflows/index.d.ts +4 -0
  46. package/build/api/yaml-workflows/index.js +27 -0
  47. package/build/api/yaml-workflows/versions.d.ts +43 -0
  48. package/build/api/yaml-workflows/versions.js +124 -0
  49. package/build/bin/ltc.d.ts +2 -0
  50. package/build/bin/ltc.js +220 -0
  51. package/build/examples/seed-data.d.ts +55 -0
  52. package/build/examples/seed-data.js +161 -0
  53. package/build/examples/seed.js +7 -164
  54. package/build/index.d.ts +1 -1
  55. package/build/lib/cli/auth.d.ts +23 -0
  56. package/build/lib/cli/auth.js +167 -0
  57. package/build/lib/cli/client.d.ts +6 -0
  58. package/build/lib/cli/client.js +31 -0
  59. package/build/lib/cli/commands/escalations.d.ts +19 -0
  60. package/build/lib/cli/commands/escalations.js +69 -0
  61. package/build/lib/cli/commands/knowledge.d.ts +18 -0
  62. package/build/lib/cli/commands/knowledge.js +87 -0
  63. package/build/lib/cli/commands/mcp.d.ts +8 -0
  64. package/build/lib/cli/commands/mcp.js +33 -0
  65. package/build/lib/cli/commands/pipelines.d.ts +16 -0
  66. package/build/lib/cli/commands/pipelines.js +67 -0
  67. package/build/lib/cli/commands/status.d.ts +1 -0
  68. package/build/lib/cli/commands/status.js +28 -0
  69. package/build/lib/cli/commands/users.d.ts +7 -0
  70. package/build/lib/cli/commands/users.js +25 -0
  71. package/build/lib/cli/commands/workflows.d.ts +16 -0
  72. package/build/lib/cli/commands/workflows.js +104 -0
  73. package/build/lib/cli/compile.d.ts +2 -0
  74. package/build/lib/cli/compile.js +165 -0
  75. package/build/lib/cli/format.d.ts +23 -0
  76. package/build/lib/cli/format.js +94 -0
  77. package/build/lib/cli/init.d.ts +1 -0
  78. package/build/lib/cli/init.js +61 -0
  79. package/build/lib/cli/output.d.ts +27 -0
  80. package/build/lib/cli/output.js +126 -0
  81. package/build/lib/cli/scanner.d.ts +10 -0
  82. package/build/lib/cli/scanner.js +164 -0
  83. package/build/lib/cli/types.d.ts +16 -0
  84. package/build/lib/cli/types.js +2 -0
  85. package/build/lib/db/schemas/schemas/001_schema.sql +485 -0
  86. package/build/lib/db/schemas/schemas/002_seed.sql +92 -0
  87. package/build/lib/events/socketio.d.ts +12 -0
  88. package/build/lib/events/socketio.js +24 -1
  89. package/build/lib/logger/index.d.ts +0 -9
  90. package/build/lib/logger/index.js +9 -4
  91. package/build/lib/storage/index.js +2 -2
  92. package/build/routes/file-browser.js +14 -0
  93. package/build/routes/index.js +4 -0
  94. package/build/routes/knowledge.d.ts +2 -0
  95. package/build/routes/knowledge.js +141 -0
  96. package/build/routes/nats-credentials.d.ts +2 -0
  97. package/build/routes/nats-credentials.js +22 -0
  98. package/build/routes/yaml-workflows/crud.js +9 -0
  99. package/build/sdk/index.d.ts +17 -0
  100. package/build/sdk/index.js +19 -0
  101. package/build/services/mcp/client/connection-dispatch.d.ts +18 -0
  102. package/build/services/mcp/client/connection-dispatch.js +78 -0
  103. package/build/services/mcp/client/connection-lifecycle.d.ts +48 -0
  104. package/build/services/mcp/client/connection-lifecycle.js +296 -0
  105. package/build/services/mcp/client/connection-test.d.ts +10 -0
  106. package/build/services/mcp/client/connection-test.js +49 -0
  107. package/build/services/mcp/client/connection.d.ts +3 -68
  108. package/build/services/mcp/client/connection.js +15 -393
  109. package/build/services/mcp/server-lifecycle.d.ts +27 -0
  110. package/build/services/mcp/server-lifecycle.js +49 -0
  111. package/build/services/mcp/server-tools.d.ts +13 -0
  112. package/build/services/mcp/server-tools.js +287 -0
  113. package/build/services/mcp/server.d.ts +2 -26
  114. package/build/services/mcp/server.js +7 -315
  115. package/build/services/yaml-workflow/builder-regenerate.d.ts +25 -0
  116. package/build/services/yaml-workflow/builder-regenerate.js +111 -0
  117. package/build/services/yaml-workflow/db-versions.d.ts +17 -0
  118. package/build/services/yaml-workflow/db-versions.js +76 -0
  119. package/build/services/yaml-workflow/db.d.ts +3 -13
  120. package/build/services/yaml-workflow/db.js +15 -71
  121. package/build/services/yaml-workflow/deployer-helpers.js +48 -17
  122. package/build/services/yaml-workflow/durable-compiler/index.d.ts +22 -0
  123. package/build/services/yaml-workflow/durable-compiler/index.js +168 -0
  124. package/build/services/yaml-workflow/durable-compiler/parser.d.ts +12 -0
  125. package/build/services/yaml-workflow/durable-compiler/parser.js +110 -0
  126. package/build/services/yaml-workflow/durable-compiler/prompts.d.ts +18 -0
  127. package/build/services/yaml-workflow/durable-compiler/prompts.js +570 -0
  128. package/build/services/yaml-workflow/durable-compiler/types.d.ts +51 -0
  129. package/build/services/yaml-workflow/durable-compiler/types.js +5 -0
  130. package/build/services/yaml-workflow/pipeline/build/dag-assembly.d.ts +17 -0
  131. package/build/services/yaml-workflow/pipeline/build/dag-assembly.js +192 -0
  132. package/build/services/yaml-workflow/pipeline/build/dag.d.ts +4 -13
  133. package/build/services/yaml-workflow/pipeline/build/dag.js +9 -185
  134. package/build/services/yaml-workflow/pipeline/prompt-templates.d.ts +10 -0
  135. package/build/services/yaml-workflow/pipeline/prompt-templates.js +270 -0
  136. package/build/services/yaml-workflow/pipeline/prompts.d.ts +3 -6
  137. package/build/services/yaml-workflow/pipeline/prompts.js +8 -263
  138. package/build/services/yaml-workflow/workers/register.js +4 -2
  139. package/build/start/adapters.js +4 -1
  140. package/build/start/socket-auth.d.ts +13 -0
  141. package/build/start/socket-auth.js +32 -0
  142. package/build/start/workers.js +6 -5
  143. package/build/system/activities/file-storage.d.ts +4 -0
  144. package/build/system/activities/file-storage.js +7 -1
  145. package/build/system/activities/knowledge.d.ts +23 -0
  146. package/build/system/activities/knowledge.js +50 -10
  147. package/build/system/activities/sql.d.ts +3 -0
  148. package/build/system/activities/sql.js +25 -1
  149. package/build/system/mcp-servers/file-storage.js +3 -1
  150. package/build/system/mcp-servers/human-queue-schemas.d.ts +91 -0
  151. package/build/system/mcp-servers/human-queue-schemas.js +42 -0
  152. package/build/system/mcp-servers/human-queue.d.ts +2 -6
  153. package/build/system/mcp-servers/human-queue.js +9 -51
  154. package/build/system/mcp-servers/knowledge.js +43 -9
  155. package/build/system/mcp-servers/workflow-compiler.js +54 -0
  156. package/build/system/workflows/mcp-triage/activities-proxy.d.ts +21 -0
  157. package/build/system/workflows/mcp-triage/activities-proxy.js +70 -0
  158. package/build/system/workflows/mcp-triage/index.js +17 -75
  159. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +1 -0
  160. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +1 -0
  161. package/build/system/workflows/mcp-workflow-planner/index.js +2 -0
  162. package/build/tsconfig.tsbuildinfo +1 -1
  163. package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js → AdminDashboard-Bprul9Eb.js} +2 -2
  164. package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js.map → AdminDashboard-Bprul9Eb.js.map} +1 -1
  165. package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js +2 -0
  166. package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js.map +1 -0
  167. package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js → BotPicker-DcvILNUf.js} +2 -2
  168. package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js.map → BotPicker-DcvILNUf.js.map} +1 -1
  169. package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js → CollapsibleSection-BWPbzgEe.js} +2 -2
  170. package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js.map → CollapsibleSection-BWPbzgEe.js.map} +1 -1
  171. package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js → ConfirmDeleteModal-Cy6KVLfC.js} +2 -2
  172. package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js.map → ConfirmDeleteModal-Cy6KVLfC.js.map} +1 -1
  173. package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js → CopyableId-CRED8hvk.js} +2 -2
  174. package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js.map → CopyableId-CRED8hvk.js.map} +1 -1
  175. package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js → CredentialsPage-BUdvxiE3.js} +2 -2
  176. package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js.map → CredentialsPage-BUdvxiE3.js.map} +1 -1
  177. package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js → CustomDurationPicker-eOk2EqQ5.js} +2 -2
  178. package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js.map → CustomDurationPicker-eOk2EqQ5.js.map} +1 -1
  179. package/dashboard/dist/assets/{DataTable-DkOokbtL.js → DataTable-bd2PTBJd.js} +2 -2
  180. package/dashboard/dist/assets/{DataTable-DkOokbtL.js.map → DataTable-bd2PTBJd.js.map} +1 -1
  181. package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js → ElapsedCell-BGo8vyus.js} +2 -2
  182. package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js.map → ElapsedCell-BGo8vyus.js.map} +1 -1
  183. package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js → EmptyState-BygtU-Rh.js} +2 -2
  184. package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js.map → EmptyState-BygtU-Rh.js.map} +1 -1
  185. package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js → EscalationsOverview-DUEcN5MP.js} +2 -2
  186. package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js.map → EscalationsOverview-DUEcN5MP.js.map} +1 -1
  187. package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js → EventTable-CmFhswLW.js} +2 -2
  188. package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js.map → EventTable-CmFhswLW.js.map} +1 -1
  189. package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js → FilterBar-BQNzsd3A.js} +2 -2
  190. package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js.map → FilterBar-BQNzsd3A.js.map} +1 -1
  191. package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js → ListToolbar-OWOn-HiC.js} +2 -2
  192. package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js.map → ListToolbar-OWOn-HiC.js.map} +1 -1
  193. package/dashboard/dist/assets/{McpOverview-B_kJYHea.js → McpOverview-OkEzvClD.js} +2 -2
  194. package/dashboard/dist/assets/{McpOverview-B_kJYHea.js.map → McpOverview-OkEzvClD.js.map} +1 -1
  195. package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js +5 -0
  196. package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js.map +1 -0
  197. package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js → McpQueryPage-BAuOf5TL.js} +2 -2
  198. package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js.map → McpQueryPage-BAuOf5TL.js.map} +1 -1
  199. package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js → McpRunDetailPage-DMeiG4i_.js} +2 -2
  200. package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js.map → McpRunDetailPage-DMeiG4i_.js.map} +1 -1
  201. package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js → McpRunsPage-CG3cNJh8.js} +2 -2
  202. package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js.map → McpRunsPage-CG3cNJh8.js.map} +1 -1
  203. package/dashboard/dist/assets/{Modal-E1yRnCeW.js → Modal-Dir9Rlnx.js} +2 -2
  204. package/dashboard/dist/assets/{Modal-E1yRnCeW.js.map → Modal-Dir9Rlnx.js.map} +1 -1
  205. package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js → OperatorDashboard-OqWC6Azy.js} +2 -2
  206. package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js.map → OperatorDashboard-OqWC6Azy.js.map} +1 -1
  207. package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js → PageHeader-FJIemmrC.js} +2 -2
  208. package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js.map → PageHeader-FJIemmrC.js.map} +1 -1
  209. package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js → PageHeaderWithStats-Br5y9qNO.js} +2 -2
  210. package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js.map → PageHeaderWithStats-Br5y9qNO.js.map} +1 -1
  211. package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js → PriorityBadge-C7D5d_HY.js} +2 -2
  212. package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js.map → PriorityBadge-C7D5d_HY.js.map} +1 -1
  213. package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js → ProcessDetailPage-DZIP6grw.js} +2 -2
  214. package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js.map → ProcessDetailPage-DZIP6grw.js.map} +1 -1
  215. package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js → ProcessesListPage-BQoPYkeB.js} +2 -2
  216. package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js.map → ProcessesListPage-BQoPYkeB.js.map} +1 -1
  217. package/dashboard/dist/assets/{RolePill-BVUp2bF0.js → RolePill-D6nMxMvp.js} +2 -2
  218. package/dashboard/dist/assets/{RolePill-BVUp2bF0.js.map → RolePill-D6nMxMvp.js.map} +1 -1
  219. package/dashboard/dist/assets/RolesPage-CwLnJFhy.js +2 -0
  220. package/dashboard/dist/assets/{RolesPage-kH-Njt25.js.map → RolesPage-CwLnJFhy.js.map} +1 -1
  221. package/dashboard/dist/assets/{RowActions-DbUJPfaW.js → RowActions-JqgAB0p3.js} +2 -2
  222. package/dashboard/dist/assets/{RowActions-DbUJPfaW.js.map → RowActions-JqgAB0p3.js.map} +1 -1
  223. package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js +2 -0
  224. package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js.map +1 -0
  225. package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js → StatCard-B-WLhOaH.js} +2 -2
  226. package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js.map → StatCard-B-WLhOaH.js.map} +1 -1
  227. package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js → StatusBadge-DVCf2ncM.js} +2 -2
  228. package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js.map → StatusBadge-DVCf2ncM.js.map} +1 -1
  229. package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js → StepIndicator-D9Xvdf18.js} +2 -2
  230. package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js.map → StepIndicator-D9Xvdf18.js.map} +1 -1
  231. package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js → StickyPagination-CJHMzYJj.js} +2 -2
  232. package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js.map → StickyPagination-CJHMzYJj.js.map} +1 -1
  233. package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js +2 -0
  234. package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js.map +1 -0
  235. package/dashboard/dist/assets/{TagInput-ClFhXG-U.js → TagInput-DcPnUnSJ.js} +2 -2
  236. package/dashboard/dist/assets/{TagInput-ClFhXG-U.js.map → TagInput-DcPnUnSJ.js.map} +1 -1
  237. package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js → TaskDetailPage-DftmYWD7.js} +2 -2
  238. package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js.map → TaskDetailPage-DftmYWD7.js.map} +1 -1
  239. package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js → TaskQueuePill-BzduBqwy.js} +2 -2
  240. package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js.map → TaskQueuePill-BzduBqwy.js.map} +1 -1
  241. package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js → TasksListPage-DeewV4Gp.js} +2 -2
  242. package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js.map → TasksListPage-DeewV4Gp.js.map} +1 -1
  243. package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js → TimeAgo-DJZq-e4R.js} +2 -2
  244. package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js.map → TimeAgo-DJZq-e4R.js.map} +1 -1
  245. package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js → TimestampCell-Dx5uwGfS.js} +2 -2
  246. package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js.map → TimestampCell-Dx5uwGfS.js.map} +1 -1
  247. package/dashboard/dist/assets/{UserName-DqsosA4B.js → UserName-CnGk7MgL.js} +2 -2
  248. package/dashboard/dist/assets/{UserName-DqsosA4B.js.map → UserName-CnGk7MgL.js.map} +1 -1
  249. package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js → WorkflowExecutionPage-CPQ0fIwf.js} +2 -2
  250. package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js.map → WorkflowExecutionPage-CPQ0fIwf.js.map} +1 -1
  251. package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js → WorkflowPill-BrD5d1AG.js} +2 -2
  252. package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js.map → WorkflowPill-BrD5d1AG.js.map} +1 -1
  253. package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js → WorkflowsDashboard-BzjhABZP.js} +2 -2
  254. package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js.map → WorkflowsDashboard-BzjhABZP.js.map} +1 -1
  255. package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js → WorkflowsOverview-lBp2E6rN.js} +2 -2
  256. package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js.map → WorkflowsOverview-lBp2E6rN.js.map} +1 -1
  257. package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js +2 -0
  258. package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js.map +1 -0
  259. package/dashboard/dist/assets/{bots-DPfUpVqI.js → bots-fc_O_YIq.js} +2 -2
  260. package/dashboard/dist/assets/{bots-DPfUpVqI.js.map → bots-fc_O_YIq.js.map} +1 -1
  261. package/dashboard/dist/assets/{escalation-RrCDbMC3.js → escalation-BYhLYHBz.js} +2 -2
  262. package/dashboard/dist/assets/{escalation-RrCDbMC3.js.map → escalation-BYhLYHBz.js.map} +1 -1
  263. package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js → escalation-columns-DjJyuC1g.js} +2 -2
  264. package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js.map → escalation-columns-DjJyuC1g.js.map} +1 -1
  265. package/dashboard/dist/assets/{helpers-ZSKqdkdS.js → helpers-CQG3Rh2y.js} +2 -2
  266. package/dashboard/dist/assets/{helpers-ZSKqdkdS.js.map → helpers-CQG3Rh2y.js.map} +1 -1
  267. package/dashboard/dist/assets/{index-DX6zxr6t.js → index-2nBhR7Dg.js} +2 -2
  268. package/dashboard/dist/assets/{index-DX6zxr6t.js.map → index-2nBhR7Dg.js.map} +1 -1
  269. package/dashboard/dist/assets/index-4IUoh_hd.js +2 -0
  270. package/dashboard/dist/assets/{index-K40Qw1tk.js.map → index-4IUoh_hd.js.map} +1 -1
  271. package/dashboard/dist/assets/index-B2CqPzLK.js +2 -0
  272. package/dashboard/dist/assets/index-B2CqPzLK.js.map +1 -0
  273. package/dashboard/dist/assets/index-B78xalb4.js +2 -0
  274. package/dashboard/dist/assets/index-B78xalb4.js.map +1 -0
  275. package/dashboard/dist/assets/index-BI8r69O_.js +2 -0
  276. package/dashboard/dist/assets/{index-C90ZPzXk.js.map → index-BI8r69O_.js.map} +1 -1
  277. package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
  278. package/dashboard/dist/assets/{index-BmVCyB6C.js → index-CUqCBBZG.js} +2 -2
  279. package/dashboard/dist/assets/{index-BmVCyB6C.js.map → index-CUqCBBZG.js.map} +1 -1
  280. package/dashboard/dist/assets/index-D51PaQZY.js +2 -0
  281. package/dashboard/dist/assets/index-D51PaQZY.js.map +1 -0
  282. package/dashboard/dist/assets/{index-BbI2dzhJ.js → index-DNtXXy1o.js} +2 -2
  283. package/dashboard/dist/assets/{index-BbI2dzhJ.js.map → index-DNtXXy1o.js.map} +1 -1
  284. package/dashboard/dist/assets/{index-DNytWfSZ.js → index-DR4qQvlW.js} +2 -2
  285. package/dashboard/dist/assets/{index-DNytWfSZ.js.map → index-DR4qQvlW.js.map} +1 -1
  286. package/dashboard/dist/assets/index-Dh0PCbR-.js +15 -0
  287. package/dashboard/dist/assets/index-Dh0PCbR-.js.map +1 -0
  288. package/dashboard/dist/assets/index-KYpLvJKB.js +5 -0
  289. package/dashboard/dist/assets/index-KYpLvJKB.js.map +1 -0
  290. package/dashboard/dist/assets/{index-Cmgrk7PQ.js → index-sNrqYt0Q.js} +73 -73
  291. package/dashboard/dist/assets/index-sNrqYt0Q.js.map +1 -0
  292. package/dashboard/dist/assets/{mcp-CNE44TSp.js → mcp-D2XfRh8v.js} +2 -2
  293. package/dashboard/dist/assets/{mcp-CNE44TSp.js.map → mcp-D2XfRh8v.js.map} +1 -1
  294. package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js → mcp-query-CIx_mIC7.js} +2 -2
  295. package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js.map → mcp-query-CIx_mIC7.js.map} +1 -1
  296. package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js → mcp-runs-C9_J4LIH.js} +2 -2
  297. package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js.map → mcp-runs-C9_J4LIH.js.map} +1 -1
  298. package/dashboard/dist/assets/{namespaces-BbmdXuPp.js → namespaces-BwMljx6f.js} +2 -2
  299. package/dashboard/dist/assets/{namespaces-BbmdXuPp.js.map → namespaces-BwMljx6f.js.map} +1 -1
  300. package/dashboard/dist/assets/{roles-DoHYlhWH.js → roles-Bd_sTV6I.js} +2 -2
  301. package/dashboard/dist/assets/{roles-DoHYlhWH.js.map → roles-Bd_sTV6I.js.map} +1 -1
  302. package/dashboard/dist/assets/{settings-BAiJiCHS.js → settings-BCb8eFyA.js} +2 -2
  303. package/dashboard/dist/assets/{settings-BAiJiCHS.js.map → settings-BCb8eFyA.js.map} +1 -1
  304. package/dashboard/dist/assets/{tasks-CvroqHtm.js → tasks-Bq54qGGq.js} +2 -2
  305. package/dashboard/dist/assets/{tasks-CvroqHtm.js.map → tasks-Bq54qGGq.js.map} +1 -1
  306. package/dashboard/dist/assets/useEventHooks-BTbGf536.js +2 -0
  307. package/dashboard/dist/assets/{useEventHooks-BHMbzR_y.js.map → useEventHooks-BTbGf536.js.map} +1 -1
  308. package/dashboard/dist/assets/useYamlActivityEvents-CsYP09W5.js +2 -0
  309. package/dashboard/dist/assets/{useYamlActivityEvents-D56KV14X.js.map → useYamlActivityEvents-CsYP09W5.js.map} +1 -1
  310. package/dashboard/dist/assets/{users-CxIMy_xw.js → users-BTBhafGc.js} +2 -2
  311. package/dashboard/dist/assets/{users-CxIMy_xw.js.map → users-BTBhafGc.js.map} +1 -1
  312. package/dashboard/dist/assets/{vendor-icons-AFGxSeQS.js → vendor-icons-CWl44VA6.js} +77 -77
  313. package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
  314. package/dashboard/dist/assets/{workflows-yR9yais7.js → workflows-BkzA4ahe.js} +2 -2
  315. package/dashboard/dist/assets/{workflows-yR9yais7.js.map → workflows-BkzA4ahe.js.map} +1 -1
  316. package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js → yaml-workflows-Cs0EYp0F.js} +2 -2
  317. package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js.map → yaml-workflows-Cs0EYp0F.js.map} +1 -1
  318. package/dashboard/dist/index.html +3 -3
  319. package/docs/api/http/file-browser.md +101 -0
  320. package/docs/api/http/knowledge.md +203 -0
  321. package/docs/api/http/settings.md +6 -4
  322. package/docs/api/sdk/files.md +68 -0
  323. package/docs/api/sdk/knowledge.md +126 -0
  324. package/docs/api/sdk/settings.md +3 -2
  325. package/docs/cli.md +171 -0
  326. package/docs/compilation.md +16 -0
  327. package/docs/compiler.md +311 -0
  328. package/docs/events.md +19 -0
  329. package/docs/workflows.md +19 -0
  330. package/package.json +13 -2
  331. package/build/api/escalations.d.ts +0 -271
  332. package/build/api/escalations.js +0 -932
  333. package/build/api/workflows.d.ts +0 -158
  334. package/build/api/workflows.js +0 -414
  335. package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js +0 -2
  336. package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js.map +0 -1
  337. package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js +0 -5
  338. package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js.map +0 -1
  339. package/dashboard/dist/assets/RolesPage-kH-Njt25.js +0 -2
  340. package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js +0 -2
  341. package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js.map +0 -1
  342. package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js +0 -2
  343. package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js.map +0 -1
  344. package/dashboard/dist/assets/helpers-rMEcLwKs.js +0 -2
  345. package/dashboard/dist/assets/helpers-rMEcLwKs.js.map +0 -1
  346. package/dashboard/dist/assets/index-ABcJHHlN.js +0 -5
  347. package/dashboard/dist/assets/index-ABcJHHlN.js.map +0 -1
  348. package/dashboard/dist/assets/index-B91h_jZ0.js +0 -15
  349. package/dashboard/dist/assets/index-B91h_jZ0.js.map +0 -1
  350. package/dashboard/dist/assets/index-C1E5GTs9.js +0 -2
  351. package/dashboard/dist/assets/index-C1E5GTs9.js.map +0 -1
  352. package/dashboard/dist/assets/index-C90ZPzXk.js +0 -2
  353. package/dashboard/dist/assets/index-Cmgrk7PQ.js.map +0 -1
  354. package/dashboard/dist/assets/index-DeX-ezqf.css +0 -1
  355. package/dashboard/dist/assets/index-K40Qw1tk.js +0 -2
  356. package/dashboard/dist/assets/index-lCyNr5Xk.js +0 -2
  357. package/dashboard/dist/assets/index-lCyNr5Xk.js.map +0 -1
  358. package/dashboard/dist/assets/useEventHooks-BHMbzR_y.js +0 -2
  359. package/dashboard/dist/assets/useYamlActivityEvents-D56KV14X.js +0 -2
  360. package/dashboard/dist/assets/vendor-icons-AFGxSeQS.js.map +0 -1
@@ -0,0 +1,203 @@
1
+ # Knowledge API
2
+
3
+ CRUD operations for the knowledge store — a domain-scoped key-value store backed by PostgreSQL JSONB. Each entry has a domain, key, arbitrary JSON data, and optional tags.
4
+
5
+ All endpoints require authentication.
6
+
7
+ ## List domains
8
+
9
+ ```
10
+ GET /api/knowledge/domains
11
+ ```
12
+
13
+ Returns all knowledge domains with entry counts and last-updated timestamps.
14
+
15
+ **Response 200:**
16
+
17
+ ```json
18
+ {
19
+ "domains": [
20
+ { "domain": "screenshot", "count": 3, "latest": "2026-05-09T22:26:51.616Z" },
21
+ { "domain": "config", "count": 1, "latest": "2026-05-08T10:00:00.000Z" }
22
+ ]
23
+ }
24
+ ```
25
+
26
+ ## List entries
27
+
28
+ ```
29
+ GET /api/knowledge/entries?domain=screenshot&search=google&tags=web&limit=50&offset=0
30
+ ```
31
+
32
+ Returns entries within a domain, ordered by last updated.
33
+
34
+ | Parameter | Type | Required | Description |
35
+ |-----------|------|----------|-------------|
36
+ | `domain` | `string` | Yes | Domain to query |
37
+ | `search` | `string` | No | Search by key name or tag (ILIKE partial match) |
38
+ | `tags` | `string` | No | Comma-separated tag filter (array overlap) |
39
+ | `limit` | `number` | No | Max results (default: 50, max: 200) |
40
+ | `offset` | `number` | No | Pagination offset |
41
+
42
+ **Response 200:**
43
+
44
+ ```json
45
+ {
46
+ "entries": [
47
+ {
48
+ "id": "uuid",
49
+ "domain": "screenshot",
50
+ "key": "google",
51
+ "data": { "2026-05-09": "description..." },
52
+ "tags": ["web"],
53
+ "created_at": "2026-05-09T22:26:51.616Z",
54
+ "updated_at": "2026-05-09T22:26:51.616Z"
55
+ }
56
+ ],
57
+ "total": 1
58
+ }
59
+ ```
60
+
61
+ ## Get entry
62
+
63
+ ```
64
+ GET /api/knowledge/entry?domain=screenshot&key=google
65
+ ```
66
+
67
+ Returns a single knowledge entry by domain and key. Returns `{ found: false }` if not found.
68
+
69
+ | Parameter | Type | Required | Description |
70
+ |-----------|------|----------|-------------|
71
+ | `domain` | `string` | Yes | Domain |
72
+ | `key` | `string` | Yes | Entry key |
73
+
74
+ **Response 200:**
75
+
76
+ ```json
77
+ {
78
+ "id": "uuid",
79
+ "domain": "screenshot",
80
+ "key": "google",
81
+ "data": { "2026-05-09": "The Google homepage..." },
82
+ "tags": [],
83
+ "created_at": "2026-05-09T22:26:51.616Z",
84
+ "updated_at": "2026-05-09T22:26:51.616Z"
85
+ }
86
+ ```
87
+
88
+ ## Store entry
89
+
90
+ ```
91
+ POST /api/knowledge/entry
92
+ ```
93
+
94
+ Create or update a knowledge entry. By default, JSONB data is merged at the top level — new keys are added, existing keys are overwritten, but absent keys are preserved. Set `replace: true` to fully replace the data object (required when removing fields).
95
+
96
+ **Body:**
97
+
98
+ ```json
99
+ {
100
+ "domain": "screenshot",
101
+ "key": "google",
102
+ "data": { "2026-05-09": "The Google homepage..." },
103
+ "tags": ["web"],
104
+ "replace": false
105
+ }
106
+ ```
107
+
108
+ | Field | Type | Required | Description |
109
+ |-------|------|----------|-------------|
110
+ | `domain` | `string` | Yes | Domain |
111
+ | `key` | `string` | Yes | Entry key |
112
+ | `data` | `object` | Yes | JSONB data (top level must be an object) |
113
+ | `tags` | `string[]` | No | Tags are unioned with existing tags on upsert |
114
+ | `replace` | `boolean` | No | When `true`, replaces data entirely instead of merging |
115
+
116
+ **Response 200:**
117
+
118
+ ```json
119
+ {
120
+ "id": "uuid",
121
+ "domain": "screenshot",
122
+ "key": "google",
123
+ "created": false,
124
+ "updated_at": "2026-05-09T22:26:51.616Z"
125
+ }
126
+ ```
127
+
128
+ ## Set field (nested path)
129
+
130
+ ```
131
+ PUT /api/knowledge/field
132
+ ```
133
+
134
+ Set a value at a specific JSONB path without overwriting sibling fields. Use dot-notation for nested paths. Creates the entry if it doesn't exist.
135
+
136
+ **Body:**
137
+
138
+ ```json
139
+ {
140
+ "domain": "research",
141
+ "key": "screenshots",
142
+ "path": "google.holiday",
143
+ "value": "Mother's Day doodle with flowers",
144
+ "tags": ["screenshot"]
145
+ }
146
+ ```
147
+
148
+ | Field | Type | Required | Description |
149
+ |-------|------|----------|-------------|
150
+ | `domain` | `string` | Yes | Domain |
151
+ | `key` | `string` | Yes | Entry key |
152
+ | `path` | `string` | Yes | Dot-notation path (e.g., `google.holiday`, `config.retries`) |
153
+ | `value` | `any` | Yes | Value to set at that path (any JSON type) |
154
+ | `tags` | `string[]` | No | Tags to union with existing |
155
+
156
+ **Response 200:**
157
+
158
+ ```json
159
+ { "id": "uuid", "domain": "research", "key": "screenshots", "created": false, "updated_at": "..." }
160
+ ```
161
+
162
+ ## Remove field
163
+
164
+ ```
165
+ DELETE /api/knowledge/field?domain=research&key=screenshots&path=google.legacy_data
166
+ ```
167
+
168
+ Remove a specific field at a JSONB path. The entry survives — only the targeted path is deleted.
169
+
170
+ | Parameter | Type | Required | Description |
171
+ |-----------|------|----------|-------------|
172
+ | `domain` | `string` | Yes | Domain |
173
+ | `key` | `string` | Yes | Entry key |
174
+ | `path` | `string` | Yes | Dot-notation path to remove |
175
+
176
+ **Response 200:** `{ "removed": true }`
177
+
178
+ **Response 404:** `{ "error": "Field not found" }`
179
+
180
+ ## Delete entry
181
+
182
+ ```
183
+ DELETE /api/knowledge/entry?domain=screenshot&key=google
184
+ ```
185
+
186
+ Permanently delete a knowledge entry.
187
+
188
+ | Parameter | Type | Required | Description |
189
+ |-----------|------|----------|-------------|
190
+ | `domain` | `string` | Yes | Domain |
191
+ | `key` | `string` | Yes | Entry key |
192
+
193
+ **Response 200:**
194
+
195
+ ```json
196
+ { "deleted": true, "domain": "screenshot", "key": "google" }
197
+ ```
198
+
199
+ **Response 404:**
200
+
201
+ ```json
202
+ { "error": "Entry not found" }
203
+ ```
@@ -19,8 +19,9 @@ GET /api/settings
19
19
  "claimDurations": [15, 30, 60, 120, 480]
20
20
  },
21
21
  "events": {
22
- "transport": "nats",
23
- "natsWsUrl": "ws://localhost:8222"
22
+ "transport": "socketio",
23
+ "natsWsUrl": null,
24
+ "natsToken": null
24
25
  }
25
26
  }
26
27
  ```
@@ -29,5 +30,6 @@ GET /api/settings
29
30
  |-------|------|-------------|
30
31
  | `telemetry.traceUrl` | `string \| null` | Template string where `{traceId}` is replaced with the actual trace ID to build a link to the trace viewer. Returns `null` if no trace URL is configured. |
31
32
  | `escalation.claimDurations` | `number[]` | Available claim duration options in minutes. Used by the frontend to populate duration selectors. Configurable via the `LT_CLAIM_DURATION_OPTIONS` environment variable (JSON array). |
32
- | `events.transport` | `string \| null` | Event transport type (e.g., `"nats"`). `null` if no event transport is configured. |
33
- | `events.natsWsUrl` | `string \| null` | NATS WebSocket URL for real-time event subscriptions. Only present when NATS is the configured transport. |
33
+ | `events.transport` | `'socketio' \| 'nats' \| 'none'` | Dashboard event transport. Defaults to `socketio`. Reports `nats` only when `EVENT_TRANSPORT=nats` is set and a NATS adapter is registered. |
34
+ | `events.natsWsUrl` | `string \| null` | NATS WebSocket URL for browser connections. Only present when a NATS adapter is registered. Read from `VITE_NATS_WS_URL` or `NATS_WS_URL`. |
35
+ | `events.natsToken` | `string \| null` | NATS auth token for browser connections. Only present when a NATS adapter is registered. Read from `NATS_TOKEN`. |
@@ -0,0 +1,68 @@
1
+ # lt.files
2
+
3
+ File storage operations — browse, inspect, share, and delete files in the storage backend (S3, MinIO, or local filesystem).
4
+
5
+ ## browse
6
+
7
+ List files and directories at a given prefix.
8
+
9
+ ```typescript
10
+ const result = await lt.files.browse({
11
+ prefix: 'screenshots/google/',
12
+ pageSize: 100,
13
+ });
14
+ ```
15
+
16
+ | Parameter | Type | Required | Description |
17
+ |-----------|------|----------|-------------|
18
+ | `prefix` | `string` | No | Directory prefix to list |
19
+ | `pageSize` | `number` | No | Max results (default: 100) |
20
+ | `continuationToken` | `string` | No | Pagination token |
21
+
22
+ **Returns:** `LTApiResult<{ files: FileEntry[], directories: string[], nextToken?: string }>`
23
+
24
+ ## getMetadata
25
+
26
+ Get metadata for a single file. Content type is inferred from the file extension when the storage backend returns a generic type.
27
+
28
+ ```typescript
29
+ const result = await lt.files.getMetadata({ filePath: 'screenshots/page.png' });
30
+ ```
31
+
32
+ | Parameter | Type | Required | Description |
33
+ |-----------|------|----------|-------------|
34
+ | `filePath` | `string` | Yes | Path to the file |
35
+
36
+ **Returns:** `LTApiResult<{ path, size, modified_at, content_type }>`
37
+
38
+ ## delete
39
+
40
+ Permanently delete a file from storage.
41
+
42
+ ```typescript
43
+ const result = await lt.files.delete({ filePath: 'screenshots/page.png' });
44
+ ```
45
+
46
+ | Parameter | Type | Required | Description |
47
+ |-----------|------|----------|-------------|
48
+ | `filePath` | `string` | Yes | Path to the file |
49
+
50
+ **Returns:** `LTApiResult<{ deleted, path }>`
51
+
52
+ ## generateSignedUrl
53
+
54
+ Generate a time-limited signed URL for sharing.
55
+
56
+ ```typescript
57
+ const result = await lt.files.generateSignedUrl({
58
+ filePath: 'screenshots/page.png',
59
+ expiresIn: 3600,
60
+ });
61
+ ```
62
+
63
+ | Parameter | Type | Required | Description |
64
+ |-----------|------|----------|-------------|
65
+ | `filePath` | `string` | Yes | Path to the file |
66
+ | `expiresIn` | `number` | Yes | Expiry in seconds (`3600`, `21600`, `86400`, `604800`, `2592000`) |
67
+
68
+ **Returns:** `LTApiResult<{ url, expiresAt }>`
@@ -0,0 +1,126 @@
1
+ # lt.knowledge
2
+
3
+ Knowledge store operations — domain-scoped key-value entries backed by PostgreSQL JSONB.
4
+
5
+ ## listDomains
6
+
7
+ List all knowledge domains with entry counts.
8
+
9
+ ```typescript
10
+ const result = await lt.knowledge.listDomains();
11
+ ```
12
+
13
+ **Parameters:** None
14
+
15
+ **Returns:** `LTApiResult<{ domains: Array<{ domain, count, latest }> }>`
16
+
17
+ ## listEntries
18
+
19
+ List entries within a domain.
20
+
21
+ ```typescript
22
+ const result = await lt.knowledge.listEntries({
23
+ domain: 'screenshot',
24
+ search: 'google',
25
+ tags: ['web'],
26
+ limit: 50,
27
+ offset: 0,
28
+ });
29
+ ```
30
+
31
+ | Parameter | Type | Required | Description |
32
+ |-----------|------|----------|-------------|
33
+ | `domain` | `string` | Yes | Domain to query |
34
+ | `search` | `string` | No | Search by key name or tag (partial match) |
35
+ | `tags` | `string[]` | No | Filter by tag overlap |
36
+ | `limit` | `number` | No | Max results (default: 50, max: 200) |
37
+ | `offset` | `number` | No | Pagination offset |
38
+
39
+ **Returns:** `LTApiResult<{ entries: KnowledgeEntry[], total: number }>`
40
+
41
+ ## getEntry
42
+
43
+ Get a single entry by domain and key.
44
+
45
+ ```typescript
46
+ const result = await lt.knowledge.getEntry({
47
+ domain: 'screenshot',
48
+ key: 'google',
49
+ });
50
+ ```
51
+
52
+ **Returns:** `LTApiResult<KnowledgeEntry>` or `{ found: false }` if not found.
53
+
54
+ ## storeEntry
55
+
56
+ Create or update a knowledge entry. Data is merged by default; set `replace: true` to fully overwrite.
57
+
58
+ ```typescript
59
+ const result = await lt.knowledge.storeEntry({
60
+ domain: 'screenshot',
61
+ key: 'google',
62
+ data: { '2026-05-09': 'The Google homepage...' },
63
+ tags: ['web'],
64
+ replace: false,
65
+ });
66
+ ```
67
+
68
+ | Parameter | Type | Required | Description |
69
+ |-----------|------|----------|-------------|
70
+ | `domain` | `string` | Yes | Domain |
71
+ | `key` | `string` | Yes | Entry key |
72
+ | `data` | `object` | Yes | JSONB data to store |
73
+ | `tags` | `string[]` | No | Tags (unioned on upsert) |
74
+ | `replace` | `boolean` | No | Full replacement instead of merge |
75
+
76
+ **Returns:** `LTApiResult<{ id, domain, key, created, updated_at }>`
77
+
78
+ ## setField
79
+
80
+ Set a value at a specific JSONB path without overwriting sibling fields.
81
+
82
+ ```typescript
83
+ const result = await lt.knowledge.setField({
84
+ domain: 'research',
85
+ key: 'screenshots',
86
+ path: 'google.holiday',
87
+ value: "Mother's Day doodle with flowers",
88
+ });
89
+ ```
90
+
91
+ | Parameter | Type | Required | Description |
92
+ |-----------|------|----------|-------------|
93
+ | `domain` | `string` | Yes | Domain |
94
+ | `key` | `string` | Yes | Entry key |
95
+ | `path` | `string` | Yes | Dot-notation path |
96
+ | `value` | `any` | Yes | Value to set (any JSON type) |
97
+ | `tags` | `string[]` | No | Tags to union |
98
+
99
+ **Returns:** `LTApiResult<{ id, domain, key, created, updated_at }>`
100
+
101
+ ## removeField
102
+
103
+ Remove a specific field at a JSONB path.
104
+
105
+ ```typescript
106
+ const result = await lt.knowledge.removeField({
107
+ domain: 'research',
108
+ key: 'screenshots',
109
+ path: 'google.legacy_data',
110
+ });
111
+ ```
112
+
113
+ **Returns:** `LTApiResult<{ removed }>`
114
+
115
+ ## deleteEntry
116
+
117
+ Permanently delete a knowledge entry.
118
+
119
+ ```typescript
120
+ const result = await lt.knowledge.deleteEntry({
121
+ domain: 'screenshot',
122
+ key: 'google',
123
+ });
124
+ ```
125
+
126
+ **Returns:** `LTApiResult<{ deleted, domain, key }>`
@@ -18,7 +18,8 @@ const result = await lt.settings.get();
18
18
  |-------|------|-------------|
19
19
  | `telemetry.traceUrl` | `string \| null` | Trace URL for the telemetry provider |
20
20
  | `escalation.claimDurations` | `number[]` | Available claim duration options (minutes) |
21
- | `events.transport` | `'socketio' \| 'nats' \| 'none'` | Active event transport |
22
- | `events.natsWsUrl` | `string \| null` | NATS WebSocket URL (only when transport is `nats`) |
21
+ | `events.transport` | `'socketio' \| 'nats' \| 'none'` | Dashboard event transport (default: `socketio`; `nats` when `EVENT_TRANSPORT=nats`) |
22
+ | `events.natsWsUrl` | `string \| null` | NATS WebSocket URL (present when NATS adapter registered) |
23
+ | `events.natsToken` | `string \| null` | NATS auth token (present when NATS adapter registered) |
23
24
 
24
25
  **Auth:** Not required
package/docs/cli.md ADDED
@@ -0,0 +1,171 @@
1
+ # CLI
2
+
3
+ `ltc` is the command-line interface for Long Tail. It provides terminal access to the same capabilities as the dashboard and SDK — escalations, workflows, knowledge, MCP servers, and the durable-to-YAML compiler.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install -g @hotmeshio/long-tail
9
+ ```
10
+
11
+ Or run without installing:
12
+
13
+ ```bash
14
+ npx @hotmeshio/long-tail ltc --help
15
+ ```
16
+
17
+ ## Connect
18
+
19
+ ### Interactive login
20
+
21
+ ```bash
22
+ ltc login
23
+ ```
24
+
25
+ Prompts for server URL, username, and password. Stores credentials in `~/.config/longtail/credentials.json` (file permissions `0600`).
26
+
27
+ ### Non-interactive (CI / scripts)
28
+
29
+ ```bash
30
+ ltc login --server http://localhost:3000 --username superadmin --password 'l0ngt@1l'
31
+ ```
32
+
33
+ ### Environment variables
34
+
35
+ ```bash
36
+ export LT_SERVER=http://localhost:3000
37
+ export LT_TOKEN=eyJ...
38
+ ```
39
+
40
+ Environment variables take precedence over stored credentials.
41
+
42
+ ### Token lifecycle
43
+
44
+ - JWT expires in 24 hours
45
+ - The CLI checks expiry before each call and auto-refreshes using stored credentials
46
+ - `ltc logout` clears stored credentials
47
+
48
+ ---
49
+
50
+ ## Commands
51
+
52
+ ### Status
53
+
54
+ ```bash
55
+ ltc status
56
+ ```
57
+
58
+ Shows pending escalations, active workers, pipeline tools, and event transport.
59
+
60
+ ### Escalations
61
+
62
+ ```bash
63
+ ltc esc list # All escalations
64
+ ltc esc list --status pending # Pending only
65
+ ltc esc list --role reviewer --limit 10 # Filter by role
66
+ ltc esc get abc123 # Detail view
67
+ ltc esc claim abc123 # Claim for yourself
68
+ ltc esc claim abc123 --duration 60 # Claim for 60 minutes
69
+ ltc esc release abc123 # Release back to pool
70
+ ltc esc resolve abc123 --data '{"approved": true}' # Resolve with payload
71
+ ```
72
+
73
+ ### Workflows
74
+
75
+ ```bash
76
+ ltc wf list # Discovered workflows
77
+ ltc wf invoke reviewContent --data '{"content": "test"}'
78
+ ltc wf status wf-abc123 # Check status (running/completed)
79
+ ltc wf result wf-abc123 # Get result payload
80
+ ltc wf terminate wf-abc123 # Terminate a running workflow
81
+ ```
82
+
83
+ ### Pipeline Tools (YAML Workflows)
84
+
85
+ ```bash
86
+ ltc pip list # All pipeline tools
87
+ ltc pip list --status active # Active only
88
+ ltc pip get abc123 # Detail view
89
+ ltc pip deploy abc123 # Deploy a draft
90
+ ltc pip invoke abc123 --data '{"url": "https://example.com"}' --sync
91
+ ltc pip archive abc123 # Archive
92
+ ```
93
+
94
+ ### Knowledge Store
95
+
96
+ ```bash
97
+ ltc kb domains # List domains
98
+ ltc kb list research # List entries in domain
99
+ ltc kb list research --search google # Search by key or tag
100
+ ltc kb get research google # Full entry with data
101
+ ltc kb set research google holiday "Mother's Day" # Set nested field
102
+ ltc kb remove research google legacy_data # Remove a field
103
+ ltc kb delete research google # Delete entire entry
104
+ ```
105
+
106
+ ### MCP Servers
107
+
108
+ ```bash
109
+ ltc mcp servers # List registered servers
110
+ ltc mcp tools SERVER_ID # List tools for a server
111
+ ```
112
+
113
+ ### Users (admin)
114
+
115
+ ```bash
116
+ ltc users list
117
+ ltc users get USER_ID
118
+ ```
119
+
120
+ ### Compiler
121
+
122
+ ```bash
123
+ ltc compile workflows/my-workflow.ts # Compile durable → YAML
124
+ ltc compile src/workflows/ --dry-run # Scan without compiling
125
+ ltc compile --model claude-opus-4-6 # Use a specific model
126
+ ltc init # Create .env template
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Output Modes
132
+
133
+ Every list command supports three output modes:
134
+
135
+ ```bash
136
+ ltc esc list # Formatted table (default)
137
+ ltc esc list --json # Raw JSON (for jq, scripting)
138
+ ltc esc list -q # IDs only, one per line
139
+ ```
140
+
141
+ Pipe-friendly:
142
+
143
+ ```bash
144
+ ltc esc list --json | jq '.escalations[].id'
145
+ ltc pip list -q | xargs -I {} ltc pip get {}
146
+ ```
147
+
148
+ ---
149
+
150
+ ## Configuration
151
+
152
+ | Variable | Description |
153
+ |---|---|
154
+ | `LT_SERVER` | Server URL (overrides stored credentials) |
155
+ | `LT_TOKEN` | JWT token (overrides stored credentials) |
156
+ | `ANTHROPIC_API_KEY` | Required for `ltc compile` (Claude models) |
157
+ | `OPENAI_API_KEY` | Required for `ltc compile` (OpenAI models) |
158
+ | `LT_LLM_MODEL_PRIMARY` | Model for compilation (default: `claude-sonnet-4-6`) |
159
+
160
+ Credentials file: `~/.config/longtail/credentials.json`
161
+
162
+ ---
163
+
164
+ ## Aliases
165
+
166
+ | Full | Short |
167
+ |---|---|
168
+ | `ltc escalations` | `ltc esc` |
169
+ | `ltc workflows` | `ltc wf` |
170
+ | `ltc pipelines` | `ltc pip` |
171
+ | `ltc knowledge` | `ltc kb` |
@@ -134,3 +134,19 @@ Every subsequent occurrence is routed automatically. A single LLM call extracts
134
134
  Each compiled workflow is itself a discoverable MCP tool. Other workflows and agents can invoke it. Solutions compose. The inventory of deterministic pathways grows with every problem the system solves, and the fraction of requests that require LLM reasoning shrinks.
135
135
 
136
136
  The dynamic path remains for genuinely new problems. But the long tail gets shorter.
137
+
138
+ ---
139
+
140
+ ## Compilation from Source Code
141
+
142
+ The Pipeline Designer compiles from execution traces — the dynamic path. But there's a second entry point: compiling directly from source code.
143
+
144
+ If you've written a durable workflow using the Temporal-like API (`proxyActivities`, `sleep`, `condition`, `startChild`), you can compile it to a YAML DAG without executing it first. The `ltc` CLI reads your TypeScript source, extracts the orchestration structure, and produces an equivalent DAG that runs without replay overhead.
145
+
146
+ ```bash
147
+ ltc compile workflows/assembly-line.ts
148
+ ```
149
+
150
+ The source is the spec. The compiled YAML is the optimized execution. Both live in the repo.
151
+
152
+ See the [Compiler Guide](compiler.md) for the full walkthrough.