dominds 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/LICENSE +157 -0
  2. package/README.md +250 -0
  3. package/README.zh.md +161 -0
  4. package/dist/access-control.js +253 -0
  5. package/dist/cli/create.js +263 -0
  6. package/dist/cli/read.js +84 -0
  7. package/dist/cli/tui.js +199 -0
  8. package/dist/cli/webui.js +169 -0
  9. package/dist/cli.js +227 -0
  10. package/dist/dialog-factory.js +53 -0
  11. package/dist/dialog-global-registry.js +68 -0
  12. package/dist/dialog-instance-registry.js +78 -0
  13. package/dist/dialog-run-state.js +198 -0
  14. package/dist/dialog.js +1024 -0
  15. package/dist/evt-registry.js +103 -0
  16. package/dist/index.js +8 -0
  17. package/dist/llm/client.js +69 -0
  18. package/dist/llm/defaults.yaml +386 -0
  19. package/dist/llm/driver.js +3214 -0
  20. package/dist/llm/gen/anthropic.js +611 -0
  21. package/dist/llm/gen/codex.js +375 -0
  22. package/dist/llm/gen/mock.js +326 -0
  23. package/dist/llm/gen/openai.js +470 -0
  24. package/dist/llm/gen/registry.js +26 -0
  25. package/dist/llm/gen.js +2 -0
  26. package/dist/llm/tools-projection.js +37 -0
  27. package/dist/log.js +228 -0
  28. package/dist/mcp/config.js +230 -0
  29. package/dist/mcp/sdk-client.js +129 -0
  30. package/dist/mcp/server-runtime.js +57 -0
  31. package/dist/mcp/stdio-client.js +280 -0
  32. package/dist/mcp/supervisor.js +979 -0
  33. package/dist/mcp/tool-names.js +109 -0
  34. package/dist/minds/builtin/cmdr/persona.md +3 -0
  35. package/dist/minds/builtin/dijiang/knowledge.md +287 -0
  36. package/dist/minds/builtin/dijiang/persona.md +7 -0
  37. package/dist/minds/builtin/fuxi/persona.en.md +59 -0
  38. package/dist/minds/builtin/fuxi/persona.zh.md +49 -0
  39. package/dist/minds/builtin/pangu/persona.en.md +78 -0
  40. package/dist/minds/builtin/pangu/persona.zh.md +71 -0
  41. package/dist/minds/load.js +617 -0
  42. package/dist/minds/minds-i18n.js +131 -0
  43. package/dist/minds/system-prompt.js +281 -0
  44. package/dist/persistence.js +3128 -0
  45. package/dist/problems.js +109 -0
  46. package/dist/server/api-routes.js +1031 -0
  47. package/dist/server/auth.js +180 -0
  48. package/dist/server/mime-types.js +32 -0
  49. package/dist/server/prompts-routes.js +543 -0
  50. package/dist/server/server-core.js +235 -0
  51. package/dist/server/setup-routes.js +697 -0
  52. package/dist/server/static-server.js +132 -0
  53. package/dist/server/websocket-handler.js +1011 -0
  54. package/dist/server.js +164 -0
  55. package/dist/shared/async-fifo-mutex.js +36 -0
  56. package/dist/shared/diligence.js +20 -0
  57. package/dist/shared/dotenv.js +144 -0
  58. package/dist/shared/evt.js +195 -0
  59. package/dist/shared/i18n/driver-messages.js +267 -0
  60. package/dist/shared/i18n/text.js +9 -0
  61. package/dist/shared/i18n/tool-result-messages.js +51 -0
  62. package/dist/shared/rtws-cli.js +73 -0
  63. package/dist/shared/runtime-language.js +47 -0
  64. package/dist/shared/team-mgmt-manual.js +116 -0
  65. package/dist/shared/types/context-health.js +2 -0
  66. package/dist/shared/types/dialog.js +11 -0
  67. package/dist/shared/types/i18n.js +2 -0
  68. package/dist/shared/types/index.js +26 -0
  69. package/dist/shared/types/language.js +40 -0
  70. package/dist/shared/types/problems.js +2 -0
  71. package/dist/shared/types/prompts.js +2 -0
  72. package/dist/shared/types/q4h.js +7 -0
  73. package/dist/shared/types/run-state.js +8 -0
  74. package/dist/shared/types/setup.js +2 -0
  75. package/dist/shared/types/storage.js +10 -0
  76. package/dist/shared/types/tellask.js +8 -0
  77. package/dist/shared/types/tools-registry.js +2 -0
  78. package/dist/shared/types/wire.js +12 -0
  79. package/dist/shared/utils/fmt.js +9 -0
  80. package/dist/shared/utils/html.js +20 -0
  81. package/dist/shared/utils/id.js +18 -0
  82. package/dist/shared/utils/inter-dialog-format.js +101 -0
  83. package/dist/shared/utils/time.js +13 -0
  84. package/dist/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  85. package/dist/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  86. package/dist/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  87. package/dist/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  88. package/dist/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  89. package/dist/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  90. package/dist/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  91. package/dist/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  92. package/dist/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  93. package/dist/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  94. package/dist/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  95. package/dist/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  96. package/dist/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  97. package/dist/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  98. package/dist/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  99. package/dist/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  100. package/dist/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  101. package/dist/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  102. package/dist/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  103. package/dist/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  104. package/dist/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  105. package/dist/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  106. package/dist/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  107. package/dist/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  108. package/dist/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  109. package/dist/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  110. package/dist/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  111. package/dist/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  112. package/dist/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  113. package/dist/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  114. package/dist/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  115. package/dist/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  116. package/dist/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  117. package/dist/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  118. package/dist/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  119. package/dist/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  120. package/dist/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  121. package/dist/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  122. package/dist/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  123. package/dist/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  124. package/dist/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  125. package/dist/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  126. package/dist/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  127. package/dist/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  128. package/dist/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  129. package/dist/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  130. package/dist/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  131. package/dist/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  132. package/dist/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  133. package/dist/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  134. package/dist/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  135. package/dist/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  136. package/dist/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  137. package/dist/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  138. package/dist/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  139. package/dist/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  140. package/dist/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  141. package/dist/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  142. package/dist/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  143. package/dist/static/assets/_baseUniq-Crfl3d5Y.js +661 -0
  144. package/dist/static/assets/_baseUniq-Crfl3d5Y.js.map +1 -0
  145. package/dist/static/assets/arc-CbA_x9GD.js +132 -0
  146. package/dist/static/assets/arc-CbA_x9GD.js.map +1 -0
  147. package/dist/static/assets/architectureDiagram-VXUJARFQ-lcFS8ZQJ.js +8685 -0
  148. package/dist/static/assets/architectureDiagram-VXUJARFQ-lcFS8ZQJ.js.map +1 -0
  149. package/dist/static/assets/blockDiagram-VD42YOAC-B3Q36qRc.js +3608 -0
  150. package/dist/static/assets/blockDiagram-VD42YOAC-B3Q36qRc.js.map +1 -0
  151. package/dist/static/assets/c4Diagram-YG6GDRKO-Mt-aq3VH.js +2482 -0
  152. package/dist/static/assets/c4Diagram-YG6GDRKO-Mt-aq3VH.js.map +1 -0
  153. package/dist/static/assets/channel-BVr1Yke-.js +8 -0
  154. package/dist/static/assets/channel-BVr1Yke-.js.map +1 -0
  155. package/dist/static/assets/chunk-4BX2VUAB-qCIn5Iic.js +17 -0
  156. package/dist/static/assets/chunk-4BX2VUAB-qCIn5Iic.js.map +1 -0
  157. package/dist/static/assets/chunk-55IACEB6-q172NeCV.js +14 -0
  158. package/dist/static/assets/chunk-55IACEB6-q172NeCV.js.map +1 -0
  159. package/dist/static/assets/chunk-B4BG7PRW-CMJmtYzq.js +1827 -0
  160. package/dist/static/assets/chunk-B4BG7PRW-CMJmtYzq.js.map +1 -0
  161. package/dist/static/assets/chunk-DI55MBZ5-DiuwwZPL.js +1916 -0
  162. package/dist/static/assets/chunk-DI55MBZ5-DiuwwZPL.js.map +1 -0
  163. package/dist/static/assets/chunk-FMBD7UC4-06sqZTTn.js +20 -0
  164. package/dist/static/assets/chunk-FMBD7UC4-06sqZTTn.js.map +1 -0
  165. package/dist/static/assets/chunk-QN33PNHL-CnpBNkpP.js +25 -0
  166. package/dist/static/assets/chunk-QN33PNHL-CnpBNkpP.js.map +1 -0
  167. package/dist/static/assets/chunk-QZHKN3VN-CNgjMR-e.js +18 -0
  168. package/dist/static/assets/chunk-QZHKN3VN-CNgjMR-e.js.map +1 -0
  169. package/dist/static/assets/chunk-TZMSLE5B-BxtzW6--.js +109 -0
  170. package/dist/static/assets/chunk-TZMSLE5B-BxtzW6--.js.map +1 -0
  171. package/dist/static/assets/classDiagram-2ON5EDUG-29huvmn-.js +23 -0
  172. package/dist/static/assets/classDiagram-2ON5EDUG-29huvmn-.js.map +1 -0
  173. package/dist/static/assets/classDiagram-v2-WZHVMYZB-29huvmn-.js +23 -0
  174. package/dist/static/assets/classDiagram-v2-WZHVMYZB-29huvmn-.js.map +1 -0
  175. package/dist/static/assets/clone-D2OgLSSn.js +9 -0
  176. package/dist/static/assets/clone-D2OgLSSn.js.map +1 -0
  177. package/dist/static/assets/cose-bilkent-S5V4N54A-BNegDCxl.js +4943 -0
  178. package/dist/static/assets/cose-bilkent-S5V4N54A-BNegDCxl.js.map +1 -0
  179. package/dist/static/assets/cytoscape.esm-Bm8DJGmZ.js +30240 -0
  180. package/dist/static/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -0
  181. package/dist/static/assets/dagre-6UL2VRFP-f1XrTRSn.js +695 -0
  182. package/dist/static/assets/dagre-6UL2VRFP-f1XrTRSn.js.map +1 -0
  183. package/dist/static/assets/defaultLocale-DVr69WTU.js +207 -0
  184. package/dist/static/assets/defaultLocale-DVr69WTU.js.map +1 -0
  185. package/dist/static/assets/diagram-PSM6KHXK-8w1WbeDi.js +849 -0
  186. package/dist/static/assets/diagram-PSM6KHXK-8w1WbeDi.js.map +1 -0
  187. package/dist/static/assets/diagram-QEK2KX5R-CF4wtMmR.js +303 -0
  188. package/dist/static/assets/diagram-QEK2KX5R-CF4wtMmR.js.map +1 -0
  189. package/dist/static/assets/diagram-S2PKOQOG-8p3Avgn2.js +213 -0
  190. package/dist/static/assets/diagram-S2PKOQOG-8p3Avgn2.js.map +1 -0
  191. package/dist/static/assets/erDiagram-Q2GNP2WA-BMKLxlM9.js +1159 -0
  192. package/dist/static/assets/erDiagram-Q2GNP2WA-BMKLxlM9.js.map +1 -0
  193. package/dist/static/assets/favicon-Cmg5RbCj.svg +8 -0
  194. package/dist/static/assets/flowDiagram-NV44I4VS-CgEuPNK2.js +2332 -0
  195. package/dist/static/assets/flowDiagram-NV44I4VS-CgEuPNK2.js.map +1 -0
  196. package/dist/static/assets/ganttDiagram-JELNMOA3-bJkDCf-9.js +3681 -0
  197. package/dist/static/assets/ganttDiagram-JELNMOA3-bJkDCf-9.js.map +1 -0
  198. package/dist/static/assets/gitGraphDiagram-NY62KEGX-4QE9kesp.js +1206 -0
  199. package/dist/static/assets/gitGraphDiagram-NY62KEGX-4QE9kesp.js.map +1 -0
  200. package/dist/static/assets/graph-CS0Pmm7c.js +597 -0
  201. package/dist/static/assets/graph-CS0Pmm7c.js.map +1 -0
  202. package/dist/static/assets/index-BS6HnGzC.js +112303 -0
  203. package/dist/static/assets/index-BS6HnGzC.js.map +1 -0
  204. package/dist/static/assets/index-DaIsSzC_.css +483 -0
  205. package/dist/static/assets/infoDiagram-WHAUD3N6-ypBcKfUs.js +34 -0
  206. package/dist/static/assets/infoDiagram-WHAUD3N6-ypBcKfUs.js.map +1 -0
  207. package/dist/static/assets/init-ZxktEp_H.js +17 -0
  208. package/dist/static/assets/init-ZxktEp_H.js.map +1 -0
  209. package/dist/static/assets/journeyDiagram-XKPGCS4Q-QnrxDowJ.js +1255 -0
  210. package/dist/static/assets/journeyDiagram-XKPGCS4Q-QnrxDowJ.js.map +1 -0
  211. package/dist/static/assets/kanban-definition-3W4ZIXB7-CfvEc4z5.js +1048 -0
  212. package/dist/static/assets/kanban-definition-3W4ZIXB7-CfvEc4z5.js.map +1 -0
  213. package/dist/static/assets/layout-8TGxpm23.js +2218 -0
  214. package/dist/static/assets/layout-8TGxpm23.js.map +1 -0
  215. package/dist/static/assets/linear-BATBPQQv.js +341 -0
  216. package/dist/static/assets/linear-BATBPQQv.js.map +1 -0
  217. package/dist/static/assets/min-B3oVH3AC.js +42 -0
  218. package/dist/static/assets/min-B3oVH3AC.js.map +1 -0
  219. package/dist/static/assets/mindmap-definition-VGOIOE7T-L7VLwwF8.js +1127 -0
  220. package/dist/static/assets/mindmap-definition-VGOIOE7T-L7VLwwF8.js.map +1 -0
  221. package/dist/static/assets/ordinal-CxptdPJm.js +77 -0
  222. package/dist/static/assets/ordinal-CxptdPJm.js.map +1 -0
  223. package/dist/static/assets/pieDiagram-ADFJNKIX-CFW3zIhM.js +241 -0
  224. package/dist/static/assets/pieDiagram-ADFJNKIX-CFW3zIhM.js.map +1 -0
  225. package/dist/static/assets/quadrantDiagram-AYHSOK5B-B7ssen3E.js +1338 -0
  226. package/dist/static/assets/quadrantDiagram-AYHSOK5B-B7ssen3E.js.map +1 -0
  227. package/dist/static/assets/requirementDiagram-UZGBJVZJ-D0v5BArv.js +1162 -0
  228. package/dist/static/assets/requirementDiagram-UZGBJVZJ-D0v5BArv.js.map +1 -0
  229. package/dist/static/assets/sankeyDiagram-TZEHDZUN-B7slncJe.js +1195 -0
  230. package/dist/static/assets/sankeyDiagram-TZEHDZUN-B7slncJe.js.map +1 -0
  231. package/dist/static/assets/sequenceDiagram-WL72ISMW-oXU2lRh_.js +3875 -0
  232. package/dist/static/assets/sequenceDiagram-WL72ISMW-oXU2lRh_.js.map +1 -0
  233. package/dist/static/assets/stateDiagram-FKZM4ZOC-CFYsEd0x.js +452 -0
  234. package/dist/static/assets/stateDiagram-FKZM4ZOC-CFYsEd0x.js.map +1 -0
  235. package/dist/static/assets/stateDiagram-v2-4FDKWEC3-C0UWaNA7.js +22 -0
  236. package/dist/static/assets/stateDiagram-v2-4FDKWEC3-C0UWaNA7.js.map +1 -0
  237. package/dist/static/assets/timeline-definition-IT6M3QCI-C3KODUrh.js +1223 -0
  238. package/dist/static/assets/timeline-definition-IT6M3QCI-C3KODUrh.js.map +1 -0
  239. package/dist/static/assets/treemap-KMMF4GRG-DAGDLhj2.js +18753 -0
  240. package/dist/static/assets/treemap-KMMF4GRG-DAGDLhj2.js.map +1 -0
  241. package/dist/static/assets/xychartDiagram-PRI3JC2R-C0J9iwTO.js +1888 -0
  242. package/dist/static/assets/xychartDiagram-PRI3JC2R-C0J9iwTO.js.map +1 -0
  243. package/dist/static/index.html +71 -0
  244. package/dist/static/testing/dom-observation-utils.js +425 -0
  245. package/dist/static/testing/e2e-test-helper.js +3119 -0
  246. package/dist/team.js +1160 -0
  247. package/dist/tellask.js +431 -0
  248. package/dist/tool.js +150 -0
  249. package/dist/tools/apply-patch.js +542 -0
  250. package/dist/tools/builtins.js +196 -0
  251. package/dist/tools/context-health.js +177 -0
  252. package/dist/tools/ctrl.js +478 -0
  253. package/dist/tools/diag.js +583 -0
  254. package/dist/tools/env.js +184 -0
  255. package/dist/tools/fs.js +818 -0
  256. package/dist/tools/mcp.js +138 -0
  257. package/dist/tools/mem.js +349 -0
  258. package/dist/tools/os.js +751 -0
  259. package/dist/tools/prompts/team_mgmt.en.md +70 -0
  260. package/dist/tools/prompts/team_mgmt.zh.md +70 -0
  261. package/dist/tools/prompts/ws_mod.en.md +86 -0
  262. package/dist/tools/prompts/ws_mod.zh.md +87 -0
  263. package/dist/tools/registry-snapshot.js +31 -0
  264. package/dist/tools/registry.js +121 -0
  265. package/dist/tools/ripgrep.js +678 -0
  266. package/dist/tools/team-mgmt.js +3300 -0
  267. package/dist/tools/txt.js +3178 -0
  268. package/dist/utils/id.js +72 -0
  269. package/dist/utils/task-doc.js +236 -0
  270. package/dist/utils/task-package.js +522 -0
  271. package/dist/utils/taskdoc-search.js +280 -0
  272. package/dist/utils/taskdoc.js +400 -0
  273. package/package.json +69 -0
@@ -0,0 +1,199 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * TUI subcommand for dominds CLI
5
+ *
6
+ * Usage:
7
+ * dominds tui [options] <taskdoc-path> [prompts...]
8
+ * dominds run [options] <taskdoc-path> [prompts...]
9
+ *
10
+ * Options:
11
+ * -m, --member <id>: Specify team member ID to use as agent
12
+ * -i, --id <dialog-id>: Resume existing dialog or use custom dialog ID
13
+ * --list: List all dialogs (running, completed, archived)
14
+ * --help: Show help message
15
+ * -p, --print-only: Non-interactive mode (for automated testing)
16
+ * --version: Show version information
17
+ */
18
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ var desc = Object.getOwnPropertyDescriptor(m, k);
21
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
+ desc = { enumerable: true, get: function() { return m[k]; } };
23
+ }
24
+ Object.defineProperty(o, k2, desc);
25
+ }) : (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ o[k2] = m[k];
28
+ }));
29
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
30
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
31
+ }) : function(o, v) {
32
+ o["default"] = v;
33
+ });
34
+ var __importStar = (this && this.__importStar) || (function () {
35
+ var ownKeys = function(o) {
36
+ ownKeys = Object.getOwnPropertyNames || function (o) {
37
+ var ar = [];
38
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
39
+ return ar;
40
+ };
41
+ return ownKeys(o);
42
+ };
43
+ return function (mod) {
44
+ if (mod && mod.__esModule) return mod;
45
+ var result = {};
46
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
47
+ __setModuleDefault(result, mod);
48
+ return result;
49
+ };
50
+ })();
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ exports.main = main;
53
+ const fs = __importStar(require("fs"));
54
+ const path = __importStar(require("path"));
55
+ const log_1 = require("../log");
56
+ // Helper function to get package version
57
+ function getPackageVersion() {
58
+ try {
59
+ const packagePath = path.join(__dirname, '../package.json');
60
+ const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
61
+ return packageJson.version || 'unknown';
62
+ }
63
+ catch (error) {
64
+ return 'unknown';
65
+ }
66
+ }
67
+ function showVersion() {
68
+ console.log(`dominds v${getPackageVersion()}`);
69
+ }
70
+ function showHelp() {
71
+ console.log(`dominds v${getPackageVersion()}`);
72
+ console.log('');
73
+ console.log('Usage: dominds tui [options] [taskdoc] [prompt]');
74
+ console.log(' dominds run [options] [taskdoc] [prompt]');
75
+ console.log('');
76
+ console.log('Start or continue a dialog with an AI team member using a Taskdoc.');
77
+ console.log('');
78
+ console.log("Note: Workspace directory is `process.cwd()`. Use 'dominds -C <dir> tui ...' to run in another workspace.");
79
+ console.log('');
80
+ console.log('Arguments:');
81
+ console.log(' <taskdoc-path> Path to Taskdoc (required for dialog)');
82
+ console.log(' [prompts...] Optional initial prompts');
83
+ console.log('');
84
+ console.log('Options:');
85
+ console.log(' -m <member> Specify team member');
86
+ console.log(' -i <dialog-id> Resume dialog with specified ID');
87
+ console.log(' -p, --print-only Non-interactive mode (for automated testing)');
88
+ console.log(' --list List all dialogs');
89
+ console.log(' --version Show version information');
90
+ console.log(' --help Show this help message');
91
+ console.log('');
92
+ console.log('Examples:');
93
+ console.log(' dominds tui task.tsk "implement feature"');
94
+ console.log(' dominds tui -i abc123');
95
+ console.log(' dominds tui --list');
96
+ console.log(' dominds tui --version');
97
+ console.log('');
98
+ console.log('Note: All bare arguments (without -- prefix) are treated as Taskdocs');
99
+ console.log(' or prompts, ensuring no conflicts with user files.');
100
+ }
101
+ function parseArgs(argv) {
102
+ const out = { prompts: [] };
103
+ let inOptions = true;
104
+ let taskDocPathSet = false;
105
+ for (let i = 0; i < argv.length; i++) {
106
+ const a = argv[i];
107
+ if (inOptions) {
108
+ if (a === '--') {
109
+ inOptions = false;
110
+ continue;
111
+ }
112
+ if (a === '-m' || a === '--member') {
113
+ const next = argv[i + 1];
114
+ if (next == null) {
115
+ throw new Error(`${a} requires a team member ID argument`);
116
+ }
117
+ out.member = next;
118
+ i++;
119
+ continue;
120
+ }
121
+ if (a === '-i' || a === '--id') {
122
+ const next = argv[i + 1];
123
+ if (next == null) {
124
+ throw new Error(`${a} requires a dialog ID argument`);
125
+ }
126
+ out.dialogId = next;
127
+ i++;
128
+ continue;
129
+ }
130
+ if (a === '--list') {
131
+ out.list = true;
132
+ continue;
133
+ }
134
+ if (a === '--version') {
135
+ out.version = true;
136
+ continue;
137
+ }
138
+ if (a === '--help' || a === '-h') {
139
+ out.help = true;
140
+ continue;
141
+ }
142
+ if (a === '-p' || a === '--print-only') {
143
+ out.nonInteractive = true;
144
+ continue;
145
+ }
146
+ if (a.startsWith('-')) {
147
+ throw new Error(`Unknown option: ${a}`);
148
+ }
149
+ // Check for invalid commands that look like commands but aren't recognized
150
+ if (a.includes('-') && !a.includes('.') && !a.includes('/')) {
151
+ throw new Error(`Unknown command: ${a}. Use --help to see available commands.`);
152
+ }
153
+ // First non-option token is mandatory taskDocPath
154
+ if (!taskDocPathSet) {
155
+ out.taskDocPath = a;
156
+ taskDocPathSet = true;
157
+ continue;
158
+ }
159
+ // Subsequent non-option tokens before -- count as prompts
160
+ out.prompts.push(a);
161
+ continue;
162
+ }
163
+ // After --, treat everything as prompt fragments (including dash-started)
164
+ out.prompts.push(a);
165
+ }
166
+ return out;
167
+ }
168
+ async function main() {
169
+ try {
170
+ const args = parseArgs(process.argv.slice(2));
171
+ // Handle version flag
172
+ if (args.version) {
173
+ showVersion();
174
+ return;
175
+ }
176
+ // Handle help flag
177
+ if (args.help) {
178
+ showHelp();
179
+ return;
180
+ }
181
+ if (args.taskDocPath && !args.list) {
182
+ const normalized = args.taskDocPath.replace(/\\/g, '/').replace(/\/+$/g, '');
183
+ if (!normalized.endsWith('.tsk')) {
184
+ throw new Error(`taskdoc-path must be a Taskdoc directory ending in '.tsk' (got: '${args.taskDocPath}')`);
185
+ }
186
+ }
187
+ console.log(`Dominds TUI not implemented yet.`);
188
+ }
189
+ catch (error) {
190
+ console.error('Error:', error instanceof Error ? error.message : String(error));
191
+ process.exit(1);
192
+ }
193
+ }
194
+ if (require.main === module) {
195
+ main().catch((error) => {
196
+ log_1.log.error('CLI execution failed', error);
197
+ process.exit(1);
198
+ });
199
+ }
@@ -0,0 +1,169 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * WebUI subcommand for dominds CLI
5
+ *
6
+ * Usage:
7
+ * dominds webui [options]
8
+ *
9
+ * Options:
10
+ * -p, --port <port> Port to listen on (default: 5666)
11
+ * -h, --host <host> Host to bind to (default: localhost)
12
+ * --nobrowser Do not open a browser (opt-out)
13
+ * -h, --help Show help
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.main = main;
17
+ const child_process_1 = require("child_process");
18
+ const log_1 = require("../log");
19
+ const server_1 = require("../server");
20
+ const auth_1 = require("../server/auth");
21
+ const runtime_language_1 = require("../shared/runtime-language");
22
+ const log = (0, log_1.createLogger)('webui');
23
+ function printHelp() {
24
+ console.log(`
25
+ WebUI Server for dominds
26
+
27
+ Usage:
28
+ dominds webui [options]
29
+
30
+ Note:
31
+ Workspace directory is \`process.cwd()\`. Use 'dominds -C <dir> webui' to run in another workspace.
32
+
33
+ Options:
34
+ -p, --port <port> Port to listen on (default: 5666)
35
+ -h, --host <host> Host to bind to (default: localhost)
36
+ --mode <dev|prod> Server mode (default: prod; dev if NODE_ENV=dev)
37
+ --nobrowser Do not open a browser (opt-out)
38
+ --help Show this help message
39
+
40
+ Examples:
41
+ dominds webui # Start on default port 5666
42
+ dominds webui -p 8888 # Start on port 8888
43
+ dominds webui --mode dev # Start in dev mode
44
+ dominds webui --nobrowser # Start without opening a browser
45
+ `);
46
+ }
47
+ function openInBrowser(url) {
48
+ // Best-effort cross-platform open.
49
+ // We intentionally do not await; failures should not crash the server.
50
+ const platform = process.platform;
51
+ if (platform === 'darwin') {
52
+ (0, child_process_1.spawn)('open', [url], { stdio: 'ignore', detached: true }).unref();
53
+ return;
54
+ }
55
+ if (platform === 'win32') {
56
+ (0, child_process_1.spawn)('cmd', ['/c', 'start', '', url], { stdio: 'ignore', detached: true }).unref();
57
+ return;
58
+ }
59
+ (0, child_process_1.spawn)('xdg-open', [url], { stdio: 'ignore', detached: true }).unref();
60
+ }
61
+ async function main() {
62
+ const args = process.argv.slice(2);
63
+ let port = 5666;
64
+ let host = 'localhost';
65
+ let mode = process.env.NODE_ENV === 'dev' ? 'dev' : 'prod';
66
+ let shouldOpen = true;
67
+ for (let i = 0; i < args.length; i++) {
68
+ const arg = args[i];
69
+ if (arg === '-p' || arg === '--port') {
70
+ const next = args[i + 1];
71
+ if (!next || isNaN(parseInt(next))) {
72
+ console.error('Error: --port requires a valid port number');
73
+ printHelp();
74
+ process.exit(1);
75
+ }
76
+ port = parseInt(next);
77
+ i++;
78
+ }
79
+ else if (arg === '-h' || arg === '--host') {
80
+ const next = args[i + 1];
81
+ if (!next) {
82
+ console.error('Error: --host requires a hostname');
83
+ printHelp();
84
+ process.exit(1);
85
+ }
86
+ host = next;
87
+ i++;
88
+ }
89
+ else if (arg === '--mode') {
90
+ const next = args[i + 1];
91
+ if (next !== 'dev' && next !== 'prod') {
92
+ console.error(`Error: --mode must be 'dev' or 'prod'`);
93
+ printHelp();
94
+ process.exit(1);
95
+ }
96
+ mode = next;
97
+ i++;
98
+ }
99
+ else if (arg === '--nobrowser') {
100
+ shouldOpen = false;
101
+ }
102
+ else if (arg === '--help') {
103
+ printHelp();
104
+ process.exit(0);
105
+ }
106
+ else {
107
+ console.error(`Error: Unknown option '${arg}'`);
108
+ printHelp();
109
+ process.exit(1);
110
+ }
111
+ }
112
+ log.info('Starting Dominds WebUI…');
113
+ try {
114
+ const { language: resolvedLanguage, source } = (0, runtime_language_1.resolveWorkLanguage)({ env: process.env });
115
+ (0, runtime_language_1.setWorkLanguage)(resolvedLanguage);
116
+ log.info(`working language: ${(0, runtime_language_1.getWorkLanguage)()} (source: ${source})`);
117
+ const started = await (0, server_1.startServer)({ port, host, mode });
118
+ const httpServer = started.httpServer;
119
+ const auth = started.auth;
120
+ const baseUrl = `http://${started.host}:${started.port}`;
121
+ log.info(`WebUI ready: ${baseUrl}`);
122
+ log.debug(`WebSocket endpoint: ws://${started.host}:${started.port}/ws`);
123
+ if (auth.kind === 'enabled') {
124
+ const autoAuthUrl = (0, auth_1.formatAutoAuthUrl)({
125
+ host: started.host,
126
+ port: started.port,
127
+ authKey: auth.key,
128
+ });
129
+ log.info(`auto auth url (sensitive): ${autoAuthUrl}`);
130
+ if (shouldOpen) {
131
+ log.debug(`Opening browser: ${autoAuthUrl}`);
132
+ openInBrowser(autoAuthUrl);
133
+ }
134
+ }
135
+ else {
136
+ log.info('auth: disabled');
137
+ if (shouldOpen) {
138
+ const url = `${baseUrl}/`;
139
+ log.debug(`Opening browser: ${url}`);
140
+ openInBrowser(url);
141
+ }
142
+ }
143
+ // Handle graceful shutdown
144
+ process.on('SIGINT', () => {
145
+ log.info('Shutting down WebUI server...');
146
+ httpServer.stop().then(() => {
147
+ log.info('WebUI server stopped');
148
+ process.exit(0);
149
+ });
150
+ });
151
+ process.on('SIGTERM', () => {
152
+ log.info('Shutting down WebUI server...');
153
+ httpServer.stop().then(() => {
154
+ log.info('WebUI server stopped');
155
+ process.exit(0);
156
+ });
157
+ });
158
+ }
159
+ catch (err) {
160
+ console.error('Failed to start WebUI server:', err);
161
+ process.exit(1);
162
+ }
163
+ }
164
+ if (require.main === module) {
165
+ main().catch((err) => {
166
+ console.error('Unhandled error:', err);
167
+ process.exit(1);
168
+ });
169
+ }
package/dist/cli.js ADDED
@@ -0,0 +1,227 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Main CLI entry point for dominds
5
+ *
6
+ * Usage:
7
+ * dominds [subcommand] [options]
8
+ *
9
+ * Subcommands:
10
+ * webui - Start WebUI server (default)
11
+ * tui - Start Text User Interface
12
+ * run - Run task dialog (alias for tui)
13
+ * read - Read team configuration
14
+ * create - Create a new workspace from a template
15
+ * new - Alias for create
16
+ * help - Show help
17
+ *
18
+ * Global installation:
19
+ * pnpm add -g dominds
20
+ * dominds webui
21
+ */
22
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ var desc = Object.getOwnPropertyDescriptor(m, k);
25
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
+ desc = { enumerable: true, get: function() { return m[k]; } };
27
+ }
28
+ Object.defineProperty(o, k2, desc);
29
+ }) : (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ o[k2] = m[k];
32
+ }));
33
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
34
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
35
+ }) : function(o, v) {
36
+ o["default"] = v;
37
+ });
38
+ var __importStar = (this && this.__importStar) || (function () {
39
+ var ownKeys = function(o) {
40
+ ownKeys = Object.getOwnPropertyNames || function (o) {
41
+ var ar = [];
42
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
43
+ return ar;
44
+ };
45
+ return ownKeys(o);
46
+ };
47
+ return function (mod) {
48
+ if (mod && mod.__esModule) return mod;
49
+ var result = {};
50
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
51
+ __setModuleDefault(result, mod);
52
+ return result;
53
+ };
54
+ })();
55
+ Object.defineProperty(exports, "__esModule", { value: true });
56
+ const fs = __importStar(require("fs"));
57
+ const path = __importStar(require("path"));
58
+ const create_1 = require("./cli/create");
59
+ const read_1 = require("./cli/read");
60
+ const tui_1 = require("./cli/tui");
61
+ const webui_1 = require("./cli/webui");
62
+ const dotenv_1 = require("./shared/dotenv");
63
+ const rtws_cli_1 = require("./shared/rtws-cli");
64
+ require("./tools/builtins");
65
+ function printHelp() {
66
+ console.log(`
67
+ Dominds CLI - AI-driven DevOps framework with persistent memory
68
+
69
+ Usage:
70
+ dominds [-C <dir>] [subcommand] [options]
71
+
72
+ Global Options:
73
+ -C <dir> Change to workspace directory (rtws) before running
74
+
75
+ Subcommands:
76
+ webui [options] Start WebUI server (default)
77
+ tui [options] Start Text User Interface
78
+ run [options] Run task dialog (alias for tui)
79
+ read [options] Read team configuration
80
+ create [options] Create a new workspace from a template
81
+ new [options] Alias for create
82
+ help Show this help message
83
+
84
+ Examples:
85
+ dominds # Start WebUI server (default)
86
+ dominds webui # Start WebUI server
87
+ dominds -C ./my-ws webui # Start in specific workspace
88
+ dominds tui --help # Show TUI help
89
+ dominds run task.tsk # Run task dialog
90
+ dominds read # Read team configuration
91
+ dominds create web-scaffold my-project # Create workspace from a template
92
+
93
+ Installation:
94
+ pnpm add -g dominds
95
+
96
+ For detailed help on a specific subcommand:
97
+ dominds <subcommand> --help
98
+ `);
99
+ }
100
+ function printVersion() {
101
+ try {
102
+ const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8'));
103
+ console.log(`dominds v${packageJson.version}`);
104
+ }
105
+ catch {
106
+ console.log('dominds (version unknown)');
107
+ }
108
+ }
109
+ async function main() {
110
+ const baseCwd = process.cwd();
111
+ let parsed;
112
+ try {
113
+ parsed = (0, rtws_cli_1.extractGlobalRtwsChdir)({ argv: process.argv.slice(2), baseCwd });
114
+ }
115
+ catch (err) {
116
+ console.error('Error:', err instanceof Error ? err.message : String(err));
117
+ process.exit(1);
118
+ }
119
+ const args = parsed.argv;
120
+ // Handle no arguments - default to webui
121
+ if (args.length === 0) {
122
+ if (parsed.chdir) {
123
+ try {
124
+ const absoluteRtwsRoot = path.isAbsolute(parsed.chdir)
125
+ ? parsed.chdir
126
+ : path.resolve(baseCwd, parsed.chdir);
127
+ process.chdir(absoluteRtwsRoot);
128
+ }
129
+ catch (err) {
130
+ console.error(`Error: failed to change directory to '${parsed.chdir}':`, err);
131
+ process.exit(1);
132
+ }
133
+ }
134
+ (0, dotenv_1.loadRtwsDotenv)({ cwd: process.cwd() });
135
+ await runSubcommand('webui', []);
136
+ return;
137
+ }
138
+ const subcommand = args[0];
139
+ const subcommandArgs = args.slice(1);
140
+ // Handle help and version flags
141
+ if (subcommand === '-h' || subcommand === '--help' || subcommand === 'help') {
142
+ printHelp();
143
+ process.exit(0);
144
+ }
145
+ if (subcommand === '-v' || subcommand === '--version') {
146
+ printVersion();
147
+ process.exit(0);
148
+ }
149
+ const shouldSkipRtwsSetup = subcommandArgs.includes('--help') ||
150
+ (subcommand === 'tui' && subcommandArgs.includes('-h')) ||
151
+ (subcommand === 'run' && subcommandArgs.includes('-h')) ||
152
+ (subcommand === 'read' && subcommandArgs.includes('-h')) ||
153
+ ((subcommand === 'create' || subcommand === 'new') && subcommandArgs.includes('-h'));
154
+ if (!shouldSkipRtwsSetup) {
155
+ if (parsed.chdir) {
156
+ try {
157
+ const absoluteRtwsRoot = path.isAbsolute(parsed.chdir)
158
+ ? parsed.chdir
159
+ : path.resolve(baseCwd, parsed.chdir);
160
+ process.chdir(absoluteRtwsRoot);
161
+ }
162
+ catch (err) {
163
+ console.error(`Error: failed to change directory to '${parsed.chdir}':`, err);
164
+ process.exit(1);
165
+ }
166
+ }
167
+ // Load runtime workspace env files into process.env once, in the main entry.
168
+ // Precedence: `.env` then `.env.local` (later overwrites earlier), and both
169
+ // overwrite any existing process.env values.
170
+ (0, dotenv_1.loadRtwsDotenv)({ cwd: process.cwd() });
171
+ }
172
+ // Route to appropriate subcommand
173
+ switch (subcommand) {
174
+ case 'webui':
175
+ await runSubcommand('webui', subcommandArgs);
176
+ break;
177
+ case 'tui':
178
+ case 'run':
179
+ await runSubcommand('tui', subcommandArgs);
180
+ break;
181
+ case 'read':
182
+ await runSubcommand('read', subcommandArgs);
183
+ break;
184
+ case 'create':
185
+ case 'new':
186
+ await runSubcommand('create', subcommandArgs);
187
+ break;
188
+ default:
189
+ console.error(`Error: Unknown subcommand '${subcommand}'`);
190
+ console.error(`Run 'dominds help' for usage information.`);
191
+ process.exit(1);
192
+ }
193
+ }
194
+ async function runSubcommand(subcommand, args) {
195
+ try {
196
+ // Save original argv
197
+ const originalArgv = process.argv;
198
+ // Set argv to simulate direct execution of the subcommand
199
+ process.argv = ['node', subcommand, ...args];
200
+ if (subcommand === 'webui') {
201
+ await (0, webui_1.main)();
202
+ }
203
+ else if (subcommand === 'tui') {
204
+ await (0, tui_1.main)();
205
+ }
206
+ else if (subcommand === 'read') {
207
+ await (0, read_1.main)();
208
+ }
209
+ else if (subcommand === 'create') {
210
+ await (0, create_1.main)();
211
+ }
212
+ else {
213
+ console.error(`Error: Subcommand '${subcommand}' not implemented`);
214
+ process.exit(1);
215
+ }
216
+ // Restore original argv
217
+ process.argv = originalArgv;
218
+ }
219
+ catch (err) {
220
+ console.error(`Failed to execute subcommand '${subcommand}':`, err);
221
+ process.exit(1);
222
+ }
223
+ }
224
+ main().catch((err) => {
225
+ console.error('Unhandled error:', err);
226
+ process.exit(1);
227
+ });
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DialogFactory = void 0;
4
+ /**
5
+ * Module: dialog-factory
6
+ *
7
+ * Factory for creating Dialog instances with proper type hierarchy.
8
+ * Provides a single point of dialog creation to ensure consistent initialization.
9
+ */
10
+ const dialog_1 = require("./dialog");
11
+ const dialog_global_registry_1 = require("./dialog-global-registry");
12
+ const id_1 = require("./utils/id");
13
+ /**
14
+ * Factory for creating Dialog instances.
15
+ * Abstracts the creation of RootDialog and SubDialog with proper type hierarchy.
16
+ */
17
+ class DialogFactory {
18
+ /**
19
+ * Create a new RootDialog instance.
20
+ */
21
+ static createRootDialog(dlgStore, taskDocPath, agentId, id, initialState) {
22
+ const rootDialog = new dialog_1.RootDialog(dlgStore, taskDocPath, id, agentId, initialState);
23
+ dialog_global_registry_1.globalDialogRegistry.register(rootDialog);
24
+ return rootDialog;
25
+ }
26
+ /**
27
+ * Create a new SubDialog instance.
28
+ */
29
+ static createSubDialog(supdialog, taskDocPath, targetAgentId, headLine, callBody, options, initialState) {
30
+ const generatedId = (0, id_1.generateDialogID)();
31
+ const subdialogId = new dialog_1.DialogID(generatedId, supdialog.id.rootId);
32
+ return new dialog_1.SubDialog(supdialog.dlgStore, supdialog, taskDocPath, subdialogId, targetAgentId, {
33
+ headLine,
34
+ callBody,
35
+ originMemberId: options.originMemberId,
36
+ callerDialogId: options.callerDialogId,
37
+ callId: options.callId,
38
+ }, options.tellaskSession, initialState);
39
+ }
40
+ /**
41
+ * Check if a dialog is a RootDialog.
42
+ */
43
+ static isRootDialog(dialog) {
44
+ return dialog instanceof dialog_1.RootDialog;
45
+ }
46
+ /**
47
+ * Check if a dialog is a SubDialog.
48
+ */
49
+ static isSubDialog(dialog) {
50
+ return dialog instanceof dialog_1.SubDialog;
51
+ }
52
+ }
53
+ exports.DialogFactory = DialogFactory;