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.
- package/LICENSE +157 -0
- package/README.md +250 -0
- package/README.zh.md +161 -0
- package/dist/access-control.js +253 -0
- package/dist/cli/create.js +263 -0
- package/dist/cli/read.js +84 -0
- package/dist/cli/tui.js +199 -0
- package/dist/cli/webui.js +169 -0
- package/dist/cli.js +227 -0
- package/dist/dialog-factory.js +53 -0
- package/dist/dialog-global-registry.js +68 -0
- package/dist/dialog-instance-registry.js +78 -0
- package/dist/dialog-run-state.js +198 -0
- package/dist/dialog.js +1024 -0
- package/dist/evt-registry.js +103 -0
- package/dist/index.js +8 -0
- package/dist/llm/client.js +69 -0
- package/dist/llm/defaults.yaml +386 -0
- package/dist/llm/driver.js +3214 -0
- package/dist/llm/gen/anthropic.js +611 -0
- package/dist/llm/gen/codex.js +375 -0
- package/dist/llm/gen/mock.js +326 -0
- package/dist/llm/gen/openai.js +470 -0
- package/dist/llm/gen/registry.js +26 -0
- package/dist/llm/gen.js +2 -0
- package/dist/llm/tools-projection.js +37 -0
- package/dist/log.js +228 -0
- package/dist/mcp/config.js +230 -0
- package/dist/mcp/sdk-client.js +129 -0
- package/dist/mcp/server-runtime.js +57 -0
- package/dist/mcp/stdio-client.js +280 -0
- package/dist/mcp/supervisor.js +979 -0
- package/dist/mcp/tool-names.js +109 -0
- package/dist/minds/builtin/cmdr/persona.md +3 -0
- package/dist/minds/builtin/dijiang/knowledge.md +287 -0
- package/dist/minds/builtin/dijiang/persona.md +7 -0
- package/dist/minds/builtin/fuxi/persona.en.md +59 -0
- package/dist/minds/builtin/fuxi/persona.zh.md +49 -0
- package/dist/minds/builtin/pangu/persona.en.md +78 -0
- package/dist/minds/builtin/pangu/persona.zh.md +71 -0
- package/dist/minds/load.js +617 -0
- package/dist/minds/minds-i18n.js +131 -0
- package/dist/minds/system-prompt.js +281 -0
- package/dist/persistence.js +3128 -0
- package/dist/problems.js +109 -0
- package/dist/server/api-routes.js +1031 -0
- package/dist/server/auth.js +180 -0
- package/dist/server/mime-types.js +32 -0
- package/dist/server/prompts-routes.js +543 -0
- package/dist/server/server-core.js +235 -0
- package/dist/server/setup-routes.js +697 -0
- package/dist/server/static-server.js +132 -0
- package/dist/server/websocket-handler.js +1011 -0
- package/dist/server.js +164 -0
- package/dist/shared/async-fifo-mutex.js +36 -0
- package/dist/shared/diligence.js +20 -0
- package/dist/shared/dotenv.js +144 -0
- package/dist/shared/evt.js +195 -0
- package/dist/shared/i18n/driver-messages.js +267 -0
- package/dist/shared/i18n/text.js +9 -0
- package/dist/shared/i18n/tool-result-messages.js +51 -0
- package/dist/shared/rtws-cli.js +73 -0
- package/dist/shared/runtime-language.js +47 -0
- package/dist/shared/team-mgmt-manual.js +116 -0
- package/dist/shared/types/context-health.js +2 -0
- package/dist/shared/types/dialog.js +11 -0
- package/dist/shared/types/i18n.js +2 -0
- package/dist/shared/types/index.js +26 -0
- package/dist/shared/types/language.js +40 -0
- package/dist/shared/types/problems.js +2 -0
- package/dist/shared/types/prompts.js +2 -0
- package/dist/shared/types/q4h.js +7 -0
- package/dist/shared/types/run-state.js +8 -0
- package/dist/shared/types/setup.js +2 -0
- package/dist/shared/types/storage.js +10 -0
- package/dist/shared/types/tellask.js +8 -0
- package/dist/shared/types/tools-registry.js +2 -0
- package/dist/shared/types/wire.js +12 -0
- package/dist/shared/utils/fmt.js +9 -0
- package/dist/shared/utils/html.js +20 -0
- package/dist/shared/utils/id.js +18 -0
- package/dist/shared/utils/inter-dialog-format.js +101 -0
- package/dist/shared/utils/time.js +13 -0
- package/dist/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/static/assets/_baseUniq-Crfl3d5Y.js +661 -0
- package/dist/static/assets/_baseUniq-Crfl3d5Y.js.map +1 -0
- package/dist/static/assets/arc-CbA_x9GD.js +132 -0
- package/dist/static/assets/arc-CbA_x9GD.js.map +1 -0
- package/dist/static/assets/architectureDiagram-VXUJARFQ-lcFS8ZQJ.js +8685 -0
- package/dist/static/assets/architectureDiagram-VXUJARFQ-lcFS8ZQJ.js.map +1 -0
- package/dist/static/assets/blockDiagram-VD42YOAC-B3Q36qRc.js +3608 -0
- package/dist/static/assets/blockDiagram-VD42YOAC-B3Q36qRc.js.map +1 -0
- package/dist/static/assets/c4Diagram-YG6GDRKO-Mt-aq3VH.js +2482 -0
- package/dist/static/assets/c4Diagram-YG6GDRKO-Mt-aq3VH.js.map +1 -0
- package/dist/static/assets/channel-BVr1Yke-.js +8 -0
- package/dist/static/assets/channel-BVr1Yke-.js.map +1 -0
- package/dist/static/assets/chunk-4BX2VUAB-qCIn5Iic.js +17 -0
- package/dist/static/assets/chunk-4BX2VUAB-qCIn5Iic.js.map +1 -0
- package/dist/static/assets/chunk-55IACEB6-q172NeCV.js +14 -0
- package/dist/static/assets/chunk-55IACEB6-q172NeCV.js.map +1 -0
- package/dist/static/assets/chunk-B4BG7PRW-CMJmtYzq.js +1827 -0
- package/dist/static/assets/chunk-B4BG7PRW-CMJmtYzq.js.map +1 -0
- package/dist/static/assets/chunk-DI55MBZ5-DiuwwZPL.js +1916 -0
- package/dist/static/assets/chunk-DI55MBZ5-DiuwwZPL.js.map +1 -0
- package/dist/static/assets/chunk-FMBD7UC4-06sqZTTn.js +20 -0
- package/dist/static/assets/chunk-FMBD7UC4-06sqZTTn.js.map +1 -0
- package/dist/static/assets/chunk-QN33PNHL-CnpBNkpP.js +25 -0
- package/dist/static/assets/chunk-QN33PNHL-CnpBNkpP.js.map +1 -0
- package/dist/static/assets/chunk-QZHKN3VN-CNgjMR-e.js +18 -0
- package/dist/static/assets/chunk-QZHKN3VN-CNgjMR-e.js.map +1 -0
- package/dist/static/assets/chunk-TZMSLE5B-BxtzW6--.js +109 -0
- package/dist/static/assets/chunk-TZMSLE5B-BxtzW6--.js.map +1 -0
- package/dist/static/assets/classDiagram-2ON5EDUG-29huvmn-.js +23 -0
- package/dist/static/assets/classDiagram-2ON5EDUG-29huvmn-.js.map +1 -0
- package/dist/static/assets/classDiagram-v2-WZHVMYZB-29huvmn-.js +23 -0
- package/dist/static/assets/classDiagram-v2-WZHVMYZB-29huvmn-.js.map +1 -0
- package/dist/static/assets/clone-D2OgLSSn.js +9 -0
- package/dist/static/assets/clone-D2OgLSSn.js.map +1 -0
- package/dist/static/assets/cose-bilkent-S5V4N54A-BNegDCxl.js +4943 -0
- package/dist/static/assets/cose-bilkent-S5V4N54A-BNegDCxl.js.map +1 -0
- package/dist/static/assets/cytoscape.esm-Bm8DJGmZ.js +30240 -0
- package/dist/static/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -0
- package/dist/static/assets/dagre-6UL2VRFP-f1XrTRSn.js +695 -0
- package/dist/static/assets/dagre-6UL2VRFP-f1XrTRSn.js.map +1 -0
- package/dist/static/assets/defaultLocale-DVr69WTU.js +207 -0
- package/dist/static/assets/defaultLocale-DVr69WTU.js.map +1 -0
- package/dist/static/assets/diagram-PSM6KHXK-8w1WbeDi.js +849 -0
- package/dist/static/assets/diagram-PSM6KHXK-8w1WbeDi.js.map +1 -0
- package/dist/static/assets/diagram-QEK2KX5R-CF4wtMmR.js +303 -0
- package/dist/static/assets/diagram-QEK2KX5R-CF4wtMmR.js.map +1 -0
- package/dist/static/assets/diagram-S2PKOQOG-8p3Avgn2.js +213 -0
- package/dist/static/assets/diagram-S2PKOQOG-8p3Avgn2.js.map +1 -0
- package/dist/static/assets/erDiagram-Q2GNP2WA-BMKLxlM9.js +1159 -0
- package/dist/static/assets/erDiagram-Q2GNP2WA-BMKLxlM9.js.map +1 -0
- package/dist/static/assets/favicon-Cmg5RbCj.svg +8 -0
- package/dist/static/assets/flowDiagram-NV44I4VS-CgEuPNK2.js +2332 -0
- package/dist/static/assets/flowDiagram-NV44I4VS-CgEuPNK2.js.map +1 -0
- package/dist/static/assets/ganttDiagram-JELNMOA3-bJkDCf-9.js +3681 -0
- package/dist/static/assets/ganttDiagram-JELNMOA3-bJkDCf-9.js.map +1 -0
- package/dist/static/assets/gitGraphDiagram-NY62KEGX-4QE9kesp.js +1206 -0
- package/dist/static/assets/gitGraphDiagram-NY62KEGX-4QE9kesp.js.map +1 -0
- package/dist/static/assets/graph-CS0Pmm7c.js +597 -0
- package/dist/static/assets/graph-CS0Pmm7c.js.map +1 -0
- package/dist/static/assets/index-BS6HnGzC.js +112303 -0
- package/dist/static/assets/index-BS6HnGzC.js.map +1 -0
- package/dist/static/assets/index-DaIsSzC_.css +483 -0
- package/dist/static/assets/infoDiagram-WHAUD3N6-ypBcKfUs.js +34 -0
- package/dist/static/assets/infoDiagram-WHAUD3N6-ypBcKfUs.js.map +1 -0
- package/dist/static/assets/init-ZxktEp_H.js +17 -0
- package/dist/static/assets/init-ZxktEp_H.js.map +1 -0
- package/dist/static/assets/journeyDiagram-XKPGCS4Q-QnrxDowJ.js +1255 -0
- package/dist/static/assets/journeyDiagram-XKPGCS4Q-QnrxDowJ.js.map +1 -0
- package/dist/static/assets/kanban-definition-3W4ZIXB7-CfvEc4z5.js +1048 -0
- package/dist/static/assets/kanban-definition-3W4ZIXB7-CfvEc4z5.js.map +1 -0
- package/dist/static/assets/layout-8TGxpm23.js +2218 -0
- package/dist/static/assets/layout-8TGxpm23.js.map +1 -0
- package/dist/static/assets/linear-BATBPQQv.js +341 -0
- package/dist/static/assets/linear-BATBPQQv.js.map +1 -0
- package/dist/static/assets/min-B3oVH3AC.js +42 -0
- package/dist/static/assets/min-B3oVH3AC.js.map +1 -0
- package/dist/static/assets/mindmap-definition-VGOIOE7T-L7VLwwF8.js +1127 -0
- package/dist/static/assets/mindmap-definition-VGOIOE7T-L7VLwwF8.js.map +1 -0
- package/dist/static/assets/ordinal-CxptdPJm.js +77 -0
- package/dist/static/assets/ordinal-CxptdPJm.js.map +1 -0
- package/dist/static/assets/pieDiagram-ADFJNKIX-CFW3zIhM.js +241 -0
- package/dist/static/assets/pieDiagram-ADFJNKIX-CFW3zIhM.js.map +1 -0
- package/dist/static/assets/quadrantDiagram-AYHSOK5B-B7ssen3E.js +1338 -0
- package/dist/static/assets/quadrantDiagram-AYHSOK5B-B7ssen3E.js.map +1 -0
- package/dist/static/assets/requirementDiagram-UZGBJVZJ-D0v5BArv.js +1162 -0
- package/dist/static/assets/requirementDiagram-UZGBJVZJ-D0v5BArv.js.map +1 -0
- package/dist/static/assets/sankeyDiagram-TZEHDZUN-B7slncJe.js +1195 -0
- package/dist/static/assets/sankeyDiagram-TZEHDZUN-B7slncJe.js.map +1 -0
- package/dist/static/assets/sequenceDiagram-WL72ISMW-oXU2lRh_.js +3875 -0
- package/dist/static/assets/sequenceDiagram-WL72ISMW-oXU2lRh_.js.map +1 -0
- package/dist/static/assets/stateDiagram-FKZM4ZOC-CFYsEd0x.js +452 -0
- package/dist/static/assets/stateDiagram-FKZM4ZOC-CFYsEd0x.js.map +1 -0
- package/dist/static/assets/stateDiagram-v2-4FDKWEC3-C0UWaNA7.js +22 -0
- package/dist/static/assets/stateDiagram-v2-4FDKWEC3-C0UWaNA7.js.map +1 -0
- package/dist/static/assets/timeline-definition-IT6M3QCI-C3KODUrh.js +1223 -0
- package/dist/static/assets/timeline-definition-IT6M3QCI-C3KODUrh.js.map +1 -0
- package/dist/static/assets/treemap-KMMF4GRG-DAGDLhj2.js +18753 -0
- package/dist/static/assets/treemap-KMMF4GRG-DAGDLhj2.js.map +1 -0
- package/dist/static/assets/xychartDiagram-PRI3JC2R-C0J9iwTO.js +1888 -0
- package/dist/static/assets/xychartDiagram-PRI3JC2R-C0J9iwTO.js.map +1 -0
- package/dist/static/index.html +71 -0
- package/dist/static/testing/dom-observation-utils.js +425 -0
- package/dist/static/testing/e2e-test-helper.js +3119 -0
- package/dist/team.js +1160 -0
- package/dist/tellask.js +431 -0
- package/dist/tool.js +150 -0
- package/dist/tools/apply-patch.js +542 -0
- package/dist/tools/builtins.js +196 -0
- package/dist/tools/context-health.js +177 -0
- package/dist/tools/ctrl.js +478 -0
- package/dist/tools/diag.js +583 -0
- package/dist/tools/env.js +184 -0
- package/dist/tools/fs.js +818 -0
- package/dist/tools/mcp.js +138 -0
- package/dist/tools/mem.js +349 -0
- package/dist/tools/os.js +751 -0
- package/dist/tools/prompts/team_mgmt.en.md +70 -0
- package/dist/tools/prompts/team_mgmt.zh.md +70 -0
- package/dist/tools/prompts/ws_mod.en.md +86 -0
- package/dist/tools/prompts/ws_mod.zh.md +87 -0
- package/dist/tools/registry-snapshot.js +31 -0
- package/dist/tools/registry.js +121 -0
- package/dist/tools/ripgrep.js +678 -0
- package/dist/tools/team-mgmt.js +3300 -0
- package/dist/tools/txt.js +3178 -0
- package/dist/utils/id.js +72 -0
- package/dist/utils/task-doc.js +236 -0
- package/dist/utils/task-package.js +522 -0
- package/dist/utils/taskdoc-search.js +280 -0
- package/dist/utils/taskdoc.js +400 -0
- package/package.json +69 -0
package/dist/cli/tui.js
ADDED
|
@@ -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;
|