crewx 0.9.0-rc.15 → 0.9.0-rc.151

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 (723) hide show
  1. package/bin/cli-commands.js +1 -36
  2. package/bin/crewx-lib.js +2 -173
  3. package/bin/crewx-ui.js +1 -85
  4. package/bin/crewx.ico +0 -0
  5. package/bin/crewx.js +2 -252
  6. package/bin/launcher-flags.js +1 -29
  7. package/crewx-host.js +2 -0
  8. package/dist/assets/GitDiffEditor-B836lFO2.css +1 -0
  9. package/dist/assets/GitDiffEditor-Bidaabyc.js +762 -0
  10. package/dist/assets/MarketPage-Cwz_klHJ.js +41 -0
  11. package/dist/assets/PromptTab-B-wd95zD.js +27 -0
  12. package/dist/assets/abap-BrgZPUOV.js +6 -0
  13. package/dist/assets/abnfDiagram-VCTEODGH-7si7Ux1S.js +1 -0
  14. package/dist/assets/apex-DyP6w7ZV.js +6 -0
  15. package/dist/assets/arc-BHxS6sAa.js +1 -0
  16. package/dist/assets/architectureDiagram-5GKGNRK7-BA_fcCdJ.js +36 -0
  17. package/dist/assets/azcli-BaLxmfj-.js +6 -0
  18. package/dist/assets/bat-CFOPXBzS.js +6 -0
  19. package/dist/assets/bicep-BfEKNvv3.js +7 -0
  20. package/dist/assets/blockDiagram-I7D4REHJ-FGujpSB5.js +129 -0
  21. package/dist/assets/bronze-DHyggp7i.png +0 -0
  22. package/dist/assets/c4Diagram-7LVT6UL2-CpNN4r-1.js +38 -0
  23. package/dist/assets/cameligo-BFG1Mk7z.js +6 -0
  24. package/dist/assets/challenger-B6mvhLnD.png +0 -0
  25. package/dist/assets/channel-Bbtell5s.js +1 -0
  26. package/dist/assets/{chunk-KFBOBJHC-Det1gu-Y.js → chunk-2Q5K7J3B-Bud7vs23.js} +1 -1
  27. package/dist/assets/chunk-5VM5RSS4-BXS2grS1.js +15 -0
  28. package/dist/assets/chunk-F27PBJKO-B9tq0uAh.js +1 -0
  29. package/dist/assets/chunk-IMKFNOWR-tq4KInSH.js +231 -0
  30. package/dist/assets/{chunk-TMUBEWPD-drsYJGIt.js → chunk-JWPE2WC7-BmQLI9rt.js} +1 -1
  31. package/dist/assets/chunk-POPQ4Y6H-Ddg38Zoz.js +1 -0
  32. package/dist/assets/chunk-SVP7TREG-Bzzky6tZ.js +88 -0
  33. package/dist/assets/chunk-TICWLB2K-vejkxttT.js +206 -0
  34. package/dist/assets/chunk-XXDRQBXY-BP3JR-uT.js +1 -0
  35. package/dist/assets/classDiagram-ZZMXUADV-DrBoNhIy.js +1 -0
  36. package/dist/assets/classDiagram-v2-VYDZK3BY-DrBoNhIy.js +1 -0
  37. package/dist/assets/clojure-DTECt2xU.js +6 -0
  38. package/dist/assets/codicon-DCmgc-ay.ttf +0 -0
  39. package/dist/assets/coffee-CDGzqUPQ.js +6 -0
  40. package/dist/assets/cose-bilkent-JH36ORCC-Bl2MG-zp.js +1 -0
  41. package/dist/assets/cpp-CLLBncYj.js +6 -0
  42. package/dist/assets/csharp-dUCx_-0o.js +6 -0
  43. package/dist/assets/csp-5Rap-vPy.js +6 -0
  44. package/dist/assets/css-D3h14YRZ.js +8 -0
  45. package/dist/assets/css.worker-CVdCITaq.js +84 -0
  46. package/dist/assets/cssMode-BuMXoN4I.js +9 -0
  47. package/dist/assets/cynefin-OW5HDTMX-CpdVyv8b.js +184 -0
  48. package/dist/assets/cynefinDiagram-5FMLGOSQ-P5TlqeNf.js +62 -0
  49. package/dist/assets/cypher-DrQuvNYM.js +6 -0
  50. package/dist/assets/cytoscape.esm-C5JX3QLV.js +331 -0
  51. package/dist/assets/dagre-GXQ25YYZ-CLXNngXE.js +4 -0
  52. package/dist/assets/dart-CFKIUWau.js +6 -0
  53. package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  54. package/dist/assets/diagram-S7CK7UJ4-BLKNaEjR.js +30 -0
  55. package/dist/assets/diagram-UQ7AKVKN-BFljH9Bs.js +41 -0
  56. package/dist/assets/diagram-VSXAHHWV-zZ0fnHV1.js +3 -0
  57. package/dist/assets/diagram-VX7I27RA-BcPO0ZQg.js +24 -0
  58. package/dist/assets/diagram-Z3DM3KII-Bg2Ebya8.js +24 -0
  59. package/dist/assets/diamond-fgNrYQ3a.png +0 -0
  60. package/dist/assets/dockerfile-Zznr-cwX.js +6 -0
  61. package/dist/assets/ebnfDiagram-PWID7BFC-BFTi7w73.js +1 -0
  62. package/dist/assets/ecl-Ce3n6wWz.js +6 -0
  63. package/dist/assets/editor.worker-D_iEFMe4.js +12 -0
  64. package/dist/assets/elixir-deUWdS0T.js +6 -0
  65. package/dist/assets/emerald-B8dOw2R1.png +0 -0
  66. package/dist/assets/erDiagram-RLTQ6QDP-CRvxk1d6.js +99 -0
  67. package/dist/assets/flow9-i9-g7ZhI.js +6 -0
  68. package/dist/assets/flowDiagram-HODETNUW-CmrRsTf5.js +168 -0
  69. package/dist/assets/freemarker2-DRUSS3z6.js +8 -0
  70. package/dist/assets/fsharp-CzKuDChf.js +6 -0
  71. package/dist/assets/ganttDiagram-EL5Y4UJY-Bxhcyret.js +292 -0
  72. package/dist/assets/gitGraphDiagram-WWUBYQGX-trH0-QPC.js +106 -0
  73. package/dist/assets/go-Cphgjts3.js +6 -0
  74. package/dist/assets/gold-C0_ymiXJ.png +0 -0
  75. package/dist/assets/grandmaster-B5OLgoaH.png +0 -0
  76. package/dist/assets/graphql-Cg7bfA9N.js +6 -0
  77. package/dist/assets/handlebars-MwKwE8-a.js +6 -0
  78. package/dist/assets/hcl-0cvrggvQ.js +6 -0
  79. package/dist/assets/html-BNjIPiuE.js +6 -0
  80. package/dist/assets/html.worker-BWKvDFG4.js +461 -0
  81. package/dist/assets/htmlMode-MlHAfneW.js +9 -0
  82. package/dist/assets/infoDiagram-27XIBGKW-WBE7FzSb.js +2 -0
  83. package/dist/assets/ini-Drc7WvVn.js +6 -0
  84. package/dist/assets/iron-ZiCbZroe.png +0 -0
  85. package/dist/assets/ishikawaDiagram-5VMMS53U-DI93FPmU.js +70 -0
  86. package/dist/assets/java-B_fMsGYe.js +6 -0
  87. package/dist/assets/javascript-Djo328YN.js +6 -0
  88. package/dist/assets/journeyDiagram-3NMN7TZE-v9HXyz1g.js +139 -0
  89. package/dist/assets/json.worker-BDor654j.js +49 -0
  90. package/dist/assets/jsonMode-DP8hyOZ1.js +15 -0
  91. package/dist/assets/julia-Bqgm2twL.js +6 -0
  92. package/dist/assets/{kanban-definition-QRCXZQQD-BKgHIztA.js → kanban-definition-UXKFOSKX--SMx2vK_.js} +9 -8
  93. package/dist/assets/katex-C5jXJg4s.js +257 -0
  94. package/dist/assets/kotlin-BSkB5QuD.js +6 -0
  95. package/dist/assets/layout-DwQW_dTT.js +1 -0
  96. package/dist/assets/less-BsTHnhdd.js +7 -0
  97. package/dist/assets/lexon-YWi4-JPR.js +6 -0
  98. package/dist/assets/linear-DZ-qpApf.js +1 -0
  99. package/dist/assets/liquid-DI2_KVwm.js +6 -0
  100. package/dist/assets/lua-nf6ki56Z.js +6 -0
  101. package/dist/assets/m3-Cpb6xl2v.js +6 -0
  102. package/dist/assets/main-D2QeJwS2.css +10 -0
  103. package/dist/assets/main-Dh0KXw3T.js +2210 -0
  104. package/dist/assets/markdown-DSZPf7rp.js +6 -0
  105. package/dist/assets/master-Cu5Izdtt.png +0 -0
  106. package/dist/assets/mdx-V0SZra-V.js +6 -0
  107. package/dist/assets/mindmap-definition-YA3MSWOX-C_QgaSyt.js +96 -0
  108. package/dist/assets/mips-B_c3zf-v.js +6 -0
  109. package/dist/assets/msdax-rUNN04Wq.js +6 -0
  110. package/dist/assets/mysql-DDwshQtU.js +6 -0
  111. package/dist/assets/objective-c-B5zXfXm9.js +6 -0
  112. package/dist/assets/pascal-CXOwvkN_.js +6 -0
  113. package/dist/assets/pascaligo-Bc-ZgV77.js +6 -0
  114. package/dist/assets/pegDiagram-XKGWAZYB-Ba2QZbef.js +1 -0
  115. package/dist/assets/perl-CwNk8-XU.js +6 -0
  116. package/dist/assets/pgsql-tGk8EFnU.js +6 -0
  117. package/dist/assets/php-CpIb_Oan.js +6 -0
  118. package/dist/assets/pieDiagram-E7YTZNPT-BwRarC17.js +39 -0
  119. package/dist/assets/pla-B03wrqEc.js +6 -0
  120. package/dist/assets/platinum-DdILQ7kR.png +0 -0
  121. package/dist/assets/postiats-BKlk5iyT.js +6 -0
  122. package/dist/assets/powerquery-Bhzvs7bI.js +6 -0
  123. package/dist/assets/powershell-Dd3NCNK9.js +6 -0
  124. package/dist/assets/protobuf-COyEY5Pt.js +7 -0
  125. package/dist/assets/pug-BaJupSGV.js +6 -0
  126. package/dist/assets/python-Id3zbGME.js +6 -0
  127. package/dist/assets/qsharp-DXyYeYxl.js +6 -0
  128. package/dist/assets/quadrantDiagram-AXDQQJYC-CmV72YMu.js +7 -0
  129. package/dist/assets/r-CdQndTaG.js +6 -0
  130. package/dist/assets/railroadDiagram-O6MQD6OU-BKgHxlAL.js +1 -0
  131. package/dist/assets/razor-DlQfYMdl.js +6 -0
  132. package/dist/assets/redis-CVwtpugi.js +6 -0
  133. package/dist/assets/redshift-25W9uPmb.js +6 -0
  134. package/dist/assets/requirementDiagram-BXWQKSXE-DqMdeInQ.js +84 -0
  135. package/dist/assets/restructuredtext-DfzH4Xui.js +6 -0
  136. package/dist/assets/ruby-Cp1zYvxS.js +6 -0
  137. package/dist/assets/rust-D5C2fndG.js +6 -0
  138. package/dist/assets/sankeyDiagram-P5KCCOFB-B6i6Z_lL.js +40 -0
  139. package/dist/assets/sb-CDntyWJ8.js +6 -0
  140. package/dist/assets/scala-BoFRg7Ot.js +6 -0
  141. package/dist/assets/scheme-Bio4gycK.js +6 -0
  142. package/dist/assets/scss-4Ik7cdeQ.js +8 -0
  143. package/dist/assets/sequenceDiagram-WJ2MYXX4-DdE6jZIz.js +162 -0
  144. package/dist/assets/shell-CX-rkNHf.js +6 -0
  145. package/dist/assets/silver-B5Jg1fBq.png +0 -0
  146. package/dist/assets/sizeCapture-INFHLROL-CnVtYUe0.js +1 -0
  147. package/dist/assets/solidity-Tw7wswEv.js +6 -0
  148. package/dist/assets/sophia-C5WLch3f.js +6 -0
  149. package/dist/assets/sparql-DHaeiCBh.js +6 -0
  150. package/dist/assets/sql-CCSDG5nI.js +6 -0
  151. package/dist/assets/st-pnP8ivHi.js +6 -0
  152. package/dist/assets/stateDiagram-D77RDMKH-BdH1nuZj.js +1 -0
  153. package/dist/assets/stateDiagram-v2-MP3YSRHH-DIvLL8zy.js +1 -0
  154. package/dist/assets/swift-DwJ7jVG9.js +8 -0
  155. package/dist/assets/swimlanes-42K2YHIH-DAMxF1oQ.js +1 -0
  156. package/dist/assets/swimlanesDiagram-VR7AAH4N-DzoJ_h3g.js +8 -0
  157. package/dist/assets/systemverilog-B9Xyijhd.js +6 -0
  158. package/dist/assets/tcl-DnHyzjbg.js +6 -0
  159. package/dist/assets/timeline-definition-24CTP7MA-BvGwz2rH.js +120 -0
  160. package/dist/assets/{transformers.web-CBYsiihV.js → transformers.web-DIzioJap.js} +1 -1
  161. package/dist/assets/ts.worker-DM5dOG-y.js +51334 -0
  162. package/dist/assets/tsMode-U8igVhRw.js +16 -0
  163. package/dist/assets/twig-CPajHgWi.js +6 -0
  164. package/dist/assets/typescript-CccdeScb.js +6 -0
  165. package/dist/assets/typespec-D-MeaMDU.js +6 -0
  166. package/dist/assets/vb-DgyLZaXg.js +6 -0
  167. package/dist/assets/vennDiagram-4TSXK5OY-6V8ZlT_8.js +34 -0
  168. package/dist/assets/wardleyDiagram-VM6X3IG4-BTfSSnWm.js +78 -0
  169. package/dist/assets/wgsl-BIv9DU6q.js +303 -0
  170. package/dist/assets/xml-D8RDyImf.js +6 -0
  171. package/dist/assets/xychartDiagram-S5SC5T6Z-lT88RjL9.js +7 -0
  172. package/dist/assets/yaml-S_obm8A2.js +6 -0
  173. package/dist/index.html +145 -4
  174. package/dist/ui-build.json +4 -0
  175. package/dist-apps/bundle-index.json +1 -0
  176. package/dist-server/__stubs__/ccusage-codex.js +1 -8
  177. package/dist-server/adapters/adapter.module.js +1 -35
  178. package/dist-server/adapters/adapter.service.js +1 -79
  179. package/dist-server/adapters/http-router.service.js +1 -91
  180. package/dist-server/app.module.js +1 -123
  181. package/dist-server/bootstrap/browser-open.js +1 -29
  182. package/dist-server/bootstrap/codex-writable-roots.js +1 -88
  183. package/dist-server/bootstrap/crewx-server.js +1 -91
  184. package/dist-server/bootstrap/env.js +1 -0
  185. package/dist-server/bootstrap/tls.js +1 -138
  186. package/dist-server/common/analytics.client.js +1 -180
  187. package/dist-server/common/analytics.module.js +1 -21
  188. package/dist-server/common/cache/provider-limit-cache.js +1 -0
  189. package/dist-server/common/cache-db.js +21 -0
  190. package/dist-server/common/cors.js +1 -15
  191. package/dist-server/common/crewx-workspace-root.js +1 -0
  192. package/dist-server/common/current-user.js +1 -0
  193. package/dist-server/common/decorator/cached.decorator.js +1 -0
  194. package/dist-server/common/decorator/skip-request-log.decorator.js +1 -8
  195. package/dist-server/common/decorators/project.decorator.js +1 -21
  196. package/dist-server/common/decorators/workspace.decorator.js +1 -24
  197. package/dist-server/common/device-id.js +1 -33
  198. package/dist-server/common/guard/request-log-metadata.guard.js +1 -0
  199. package/dist-server/common/interceptor/api-id-header.interceptor.js +1 -53
  200. package/dist-server/common/interceptor/http-logging.interceptor.js +1 -137
  201. package/dist-server/common/limits/defaults.js +1 -15
  202. package/dist-server/common/limits/limits-provider.js +1 -6
  203. package/dist-server/common/limits/limits.controller.js +1 -38
  204. package/dist-server/common/limits/limits.module.js +1 -24
  205. package/dist-server/common/limits/local-limits.provider.js +1 -27
  206. package/dist-server/common/mcp-app-sandbox-boundary.js +5 -0
  207. package/dist-server/common/mcp-app-sandbox-contract.js +1 -0
  208. package/dist-server/common/middleware/request-log-lifecycle.middleware.js +1 -0
  209. package/dist-server/common/middleware/workspace.middleware.js +1 -210
  210. package/dist-server/common/pending-instruction.js +1 -0
  211. package/dist-server/common/product-app-bundle.generated.js +1 -0
  212. package/dist-server/common/product-app-bundle.js +1 -0
  213. package/dist-server/common/repository.exception-filter.js +1 -48
  214. package/dist-server/common/request-log/request-log-context.js +1 -0
  215. package/dist-server/common/request-log/request-log-principal.js +1 -0
  216. package/dist-server/common/security/instruction-sanitizer.js +1 -0
  217. package/dist-server/common/security/secret-mask.js +1 -0
  218. package/dist-server/common/task-display-provider.js +1 -0
  219. package/dist-server/common/task-error-projection.js +1 -0
  220. package/dist-server/common/task-log/progress-steps.js +1 -0
  221. package/dist-server/common/task-log/provider-resume.js +1 -0
  222. package/dist-server/common/task-log/public-log-projection.fixtures.js +1 -0
  223. package/dist-server/common/task-log/public-log-projection.js +1 -0
  224. package/dist-server/common/task-log/public-log-projection.past-tool-use.fixtures.js +1 -0
  225. package/dist-server/common/task-log/stdout-json-fallback.js +1 -200
  226. package/dist-server/common/task-result-projection.js +1 -0
  227. package/dist-server/common/task-stop.js +1 -0
  228. package/dist-server/common/task-terminal-reason.js +1 -0
  229. package/dist-server/common/task-usage-accounting.js +1 -0
  230. package/dist-server/common/ui/derive-ui-actor.js +1 -0
  231. package/dist-server/common/ui/resolve-task-actor.js +1 -0
  232. package/dist-server/common/ui/ui-runtime-http-error.js +1 -0
  233. package/dist-server/common/validation.pipe.js +1 -0
  234. package/dist-server/common/workspace-context.store.js +1 -25
  235. package/dist-server/domain/account/account-auth-url.js +1 -0
  236. package/dist-server/domain/account/account-error.constants.js +1 -0
  237. package/dist-server/domain/account/account-error.exception-filter.js +1 -0
  238. package/dist-server/domain/account/account-profile.service.js +1 -0
  239. package/dist-server/domain/account/account-session.guard.js +1 -0
  240. package/dist-server/domain/account/account.controller.js +1 -0
  241. package/dist-server/domain/account/account.module.js +1 -0
  242. package/dist-server/domain/account/auth-json.store.js +1 -0
  243. package/dist-server/domain/account/auth-json.types.js +1 -0
  244. package/dist-server/domain/account/device-flow.service.js +1 -0
  245. package/dist-server/domain/account/token-refresh.service.js +1 -0
  246. package/dist-server/domain/agent/agent.controller.js +1 -110
  247. package/dist-server/domain/agent/agent.module.js +1 -27
  248. package/dist-server/domain/agent/agent.service.js +1 -484
  249. package/dist-server/domain/agent/agent.types.js +1 -3
  250. package/dist-server/domain/agent/builtin-agent-loader.js +1 -0
  251. package/dist-server/domain/agent/dto/create-agent.dto.js +1 -80
  252. package/dist-server/domain/agent/dto/preview-prompt.dto.js +1 -77
  253. package/dist-server/domain/agent/dto/provider-meta.dto.js +1 -2
  254. package/dist-server/domain/agent/dto/remote-provider.dto.js +1 -0
  255. package/dist-server/domain/agent/dto/reorder-agents.dto.js +1 -51
  256. package/dist-server/domain/agent/dto/update-agent.dto.js +1 -92
  257. package/dist-server/domain/agent/provider.controller.js +1 -49
  258. package/dist-server/domain/agent/template-processor.service.js +1 -71
  259. package/dist-server/domain/agent-suggestion/agent-suggestion.controller.js +1 -0
  260. package/dist-server/domain/agent-suggestion/agent-suggestion.module.js +1 -0
  261. package/dist-server/domain/agent-suggestion/agent-suggestion.service.js +1 -0
  262. package/dist-server/domain/agent-suggestion/analysis/evidence-json.js +1 -0
  263. package/dist-server/domain/agent-suggestion/analysis/h1-evidence.js +2 -0
  264. package/dist-server/domain/agent-suggestion/analysis/h1-prompt.js +108 -0
  265. package/dist-server/domain/agent-suggestion/analysis/h3-rules.js +1 -0
  266. package/dist-server/domain/agent-suggestion/analysis/index.js +1 -0
  267. package/dist-server/domain/agent-suggestion/analysis/merge3.js +2 -0
  268. package/dist-server/domain/agent-suggestion/analysis/secret-redaction.js +1 -0
  269. package/dist-server/domain/agent-suggestion/analysis/types.js +1 -0
  270. package/dist-server/domain/agent-suggestion/dto/apply-batch.dto.js +1 -0
  271. package/dist-server/domain/agent-suggestion/dto/suggestion-response.dto.js +1 -0
  272. package/dist-server/domain/app/app-list.types.js +1 -0
  273. package/dist-server/domain/app/app.controller.js +1 -0
  274. package/dist-server/domain/app/app.module.js +1 -0
  275. package/dist-server/domain/app/app.service.js +1 -0
  276. package/dist-server/domain/app/dto/app-list.dto.js +1 -0
  277. package/dist-server/domain/app-dev/app-dev.controller.js +1 -0
  278. package/dist-server/domain/app-dev/app-dev.module.js +1 -0
  279. package/dist-server/domain/app-dev/app-dev.service.js +2 -0
  280. package/dist-server/domain/auth/auth-cookie-policy.js +1 -0
  281. package/dist-server/domain/auth/auth.constants.js +1 -4
  282. package/dist-server/domain/auth/auth.controller.js +1 -123
  283. package/dist-server/domain/auth/auth.module.js +1 -48
  284. package/dist-server/domain/auth/decorators/public.decorator.js +1 -7
  285. package/dist-server/domain/auth/guards/base-auth.guard.js +1 -88
  286. package/dist-server/domain/auth/guards/csrf.guard.js +1 -0
  287. package/dist-server/domain/auth/guards/local-only.guard.js +1 -0
  288. package/dist-server/domain/auth/guards/shortcut-csrf.guard.js +1 -0
  289. package/dist-server/domain/auth/local-pairing.service.js +1 -0
  290. package/dist-server/domain/auth/local-secret.js +1 -0
  291. package/dist-server/domain/auth/local-transport-policy.js +1 -0
  292. package/dist-server/domain/auth/session-store.js +8 -26
  293. package/dist-server/domain/auth/sessions-db.js +20 -0
  294. package/dist-server/domain/auth/utils/ip.utils.js +1 -31
  295. package/dist-server/domain/board/board.controller.js +1 -0
  296. package/dist-server/domain/board/board.module.js +1 -0
  297. package/dist-server/domain/board/board.service.js +1 -0
  298. package/dist-server/domain/board/board.types.js +1 -0
  299. package/dist-server/domain/board/dto/create-board-batch.dto.js +1 -0
  300. package/dist-server/domain/board/dto/create-board.dto.js +1 -0
  301. package/dist-server/domain/board/dto/plan-board.dto.js +1 -0
  302. package/dist-server/domain/board/dto/update-board.dto.js +1 -0
  303. package/dist-server/domain/box/box.controller.js +1 -77
  304. package/dist-server/domain/box/box.module.js +1 -21
  305. package/dist-server/domain/box/box.service.js +1 -97
  306. package/dist-server/domain/box/dto/create-box.dto.js +1 -74
  307. package/dist-server/domain/cli/cli-local-only.guard.js +1 -0
  308. package/dist-server/domain/cli/cli.controller.js +4 -136
  309. package/dist-server/domain/cli/cli.module.js +1 -21
  310. package/dist-server/domain/cli/cli.service.js +3 -579
  311. package/dist-server/domain/cli/dto/cli-auth-status-query.dto.js +1 -0
  312. package/dist-server/domain/cli/dto/login-cli.dto.js +1 -25
  313. package/dist-server/domain/cli/dto/update-cli.dto.js +1 -31
  314. package/dist-server/domain/cron/cron-bootstrap.service.js +1 -0
  315. package/dist-server/domain/cron/cron-runtime-host.module.js +1 -0
  316. package/dist-server/domain/cron/cron-runtime-sync.port.js +1 -0
  317. package/dist-server/domain/cron/cron-runtime-sync.service.js +1 -0
  318. package/dist-server/domain/cron/cron.controller.js +1 -147
  319. package/dist-server/domain/cron/cron.module.js +1 -22
  320. package/dist-server/domain/cron/cron.service.js +1 -81
  321. package/dist-server/domain/cron/dto/cron.dto.js +1 -80
  322. package/dist-server/domain/doc/doc.controller.js +1 -172
  323. package/dist-server/domain/doc/doc.module.js +1 -21
  324. package/dist-server/domain/doc/doc.service.js +1 -504
  325. package/dist-server/domain/doc/dto/doc.dto.js +1 -64
  326. package/dist-server/domain/doc/image-constants.js +1 -21
  327. package/dist-server/domain/document/document.controller.js +1 -57
  328. package/dist-server/domain/document/document.module.js +1 -22
  329. package/dist-server/domain/document/document.service.js +7 -274
  330. package/dist-server/domain/document/dto/register-document.dto.js +1 -24
  331. package/dist-server/domain/env/dto/put-env.dto.js +1 -0
  332. package/dist-server/domain/env/env.controller.js +1 -0
  333. package/dist-server/domain/env/env.module.js +1 -0
  334. package/dist-server/domain/env/env.service.js +1 -0
  335. package/dist-server/domain/events/events.module.js +1 -31
  336. package/dist-server/domain/events/server-conversation.plugin.js +1 -45
  337. package/dist-server/domain/events/workspace-event.bus.js +1 -32
  338. package/dist-server/domain/events/workspace-event.types.js +1 -12
  339. package/dist-server/domain/events/workspace-events-test.controller.js +1 -83
  340. package/dist-server/domain/events/workspace-events.controller.js +1 -49
  341. package/dist-server/domain/fs/dto/mkdir-request.dto.js +1 -47
  342. package/dist-server/domain/fs/dto/mkdir-response.dto.js +1 -2
  343. package/dist-server/domain/fs/dto/quick-access.dto.js +1 -2
  344. package/dist-server/domain/fs/dto/tree-node.dto.js +1 -2
  345. package/dist-server/domain/fs/dto/tree-query.dto.js +1 -35
  346. package/dist-server/domain/fs/fs.controller.js +1 -63
  347. package/dist-server/domain/fs/fs.module.js +1 -22
  348. package/dist-server/domain/fs/fs.service.js +1 -303
  349. package/dist-server/domain/git/git.controller.js +1 -180
  350. package/dist-server/domain/git/git.module.js +1 -22
  351. package/dist-server/domain/git/git.service.js +1 -515
  352. package/dist-server/domain/goal/dto/goal.dto.js +1 -49
  353. package/dist-server/domain/goal/goal.controller.js +1 -86
  354. package/dist-server/domain/goal/goal.module.js +1 -22
  355. package/dist-server/domain/goal/goal.service.js +1 -197
  356. package/dist-server/domain/goal/parser/goal-md-parser.js +1 -166
  357. package/dist-server/domain/goal/parser/goal-md-serializer.js +5 -108
  358. package/dist-server/domain/health/health.controller.js +1 -57
  359. package/dist-server/domain/health/health.module.js +1 -19
  360. package/dist-server/domain/health/ui-asset-revision.service.js +1 -0
  361. package/dist-server/domain/knowledge/dto/graph-knowledge.dto.js +1 -27
  362. package/dist-server/domain/knowledge/dto/knowledge.dto.js +1 -71
  363. package/dist-server/domain/knowledge/knowledge.controller.js +1 -122
  364. package/dist-server/domain/knowledge/knowledge.module.js +1 -21
  365. package/dist-server/domain/knowledge/knowledge.service.js +1 -538
  366. package/dist-server/domain/market/__fixtures__/build-fixture.js +1 -0
  367. package/dist-server/domain/market/__fixtures__/marketplace-anonymous-install.contract.js +1 -0
  368. package/dist-server/domain/market/dto/add-registry.dto.js +1 -32
  369. package/dist-server/domain/market/dto/install-apply.dto.js +1 -0
  370. package/dist-server/domain/market/dto/install-cancel.dto.js +1 -0
  371. package/dist-server/domain/market/dto/install-market.dto.js +1 -30
  372. package/dist-server/domain/market/dto/install-plan.dto.js +1 -0
  373. package/dist-server/domain/market/dto/invite-accept.dto.js +1 -0
  374. package/dist-server/domain/market/dto/publish-plan.dto.js +1 -0
  375. package/dist-server/domain/market/dto/publish-run.dto.js +1 -0
  376. package/dist-server/domain/market/dto/publisher-funnel.dto.js +1 -0
  377. package/dist-server/domain/market/dto/publisher-invite.dto.js +1 -0
  378. package/dist-server/domain/market/dto/shr-response.dto.js +1 -0
  379. package/dist-server/domain/market/first-run-event.listener.js +1 -0
  380. package/dist-server/domain/market/install-error.exception-filter.js +1 -0
  381. package/dist-server/domain/market/install-id.validation.js +1 -0
  382. package/dist-server/domain/market/install-plan-expired.exception-filter.js +1 -0
  383. package/dist-server/domain/market/install.service.js +1 -0
  384. package/dist-server/domain/market/market.controller.js +1 -163
  385. package/dist-server/domain/market/market.module.js +1 -22
  386. package/dist-server/domain/market/market.service.js +3 -1447
  387. package/dist-server/domain/market/marketplace-api.client.js +1 -0
  388. package/dist-server/domain/market/marketplace-target.js +1 -0
  389. package/dist-server/domain/market/publish.controller.js +1 -0
  390. package/dist-server/domain/market/publish.service.js +1 -0
  391. package/dist-server/domain/market/publisher-invite-labels-ledger.service.js +2 -0
  392. package/dist-server/domain/market/publisher-invite.service.js +1 -0
  393. package/dist-server/domain/market/sharing-event.client.js +1 -0
  394. package/dist-server/domain/market/sharing-installs-ledger.service.js +1 -0
  395. package/dist-server/domain/market/sharing-updates.service.js +1 -0
  396. package/dist-server/domain/market/source-coordinate.js +1 -0
  397. package/dist-server/domain/market/template-installer.js +2 -0
  398. package/dist-server/domain/mcp/app-debug-log.js +4 -0
  399. package/dist-server/domain/mcp/browser-session.store.js +5 -297
  400. package/dist-server/domain/mcp/chromex-blacklist.js +1 -26
  401. package/dist-server/domain/mcp/chromex-negotiate.controller.js +1 -77
  402. package/dist-server/domain/mcp/chromex-negotiate.dto.js +1 -95
  403. package/dist-server/domain/mcp/chromex-negotiate.service.js +3 -237
  404. package/dist-server/domain/mcp/crewx-tool.factory.js +1 -119
  405. package/dist-server/domain/mcp/default-apps/shared.js +1 -0
  406. package/dist-server/domain/mcp/dto/open-mcp-app.dto.js +1 -0
  407. package/dist-server/domain/mcp/html-viewer.controller.js +1 -0
  408. package/dist-server/domain/mcp/html-viewer.service.js +1 -0
  409. package/dist-server/domain/mcp/mcp-app-actions.js +1 -0
  410. package/dist-server/domain/mcp/mcp-app-assets.js +1 -0
  411. package/dist-server/domain/mcp/mcp-app-resource-csp.interceptor.js +1 -0
  412. package/dist-server/domain/mcp/mcp-app-runtime.controller.js +1 -0
  413. package/dist-server/domain/mcp/mcp-app-runtime.service.js +1 -0
  414. package/dist-server/domain/mcp/mcp-app-sandbox.service.js +2 -0
  415. package/dist-server/domain/mcp/mcp-app-workspace-asset-catalog-resolver.js +1 -0
  416. package/dist-server/domain/mcp/mcp-apps.js +1 -0
  417. package/dist-server/domain/mcp/mcp-auth.guard.js +1 -75
  418. package/dist-server/domain/mcp/mcp.constants.js +1 -7
  419. package/dist-server/domain/mcp/mcp.controller.js +1 -126
  420. package/dist-server/domain/mcp/mcp.dto.js +1 -12
  421. package/dist-server/domain/mcp/mcp.module.js +1 -53
  422. package/dist-server/domain/mcp/mcp.service.js +1 -741
  423. package/dist-server/domain/mcp/product-app-bundle-assets.js +1 -0
  424. package/dist-server/domain/mcp/skill-backend.port.js +1 -0
  425. package/dist-server/domain/mcp/tool-router.service.js +1 -120
  426. package/dist-server/domain/mcp/ui-content-channel.service.js +1 -0
  427. package/dist-server/domain/message/dto/list-messages.dto.js +1 -57
  428. package/dist-server/domain/message/dto/send-message.dto.js +1 -133
  429. package/dist-server/domain/message/message.controller.js +1 -113
  430. package/dist-server/domain/message/message.module.js +1 -26
  431. package/dist-server/domain/message/message.multipart.js +1 -0
  432. package/dist-server/domain/message/message.service.js +9 -292
  433. package/dist-server/domain/notification/dto/create-notification.dto.js +1 -0
  434. package/dist-server/domain/notification/dto/list-notifications.dto.js +1 -0
  435. package/dist-server/domain/notification/notification.controller.js +1 -0
  436. package/dist-server/domain/notification/notification.module.js +1 -0
  437. package/dist-server/domain/notification/notification.service.js +1 -0
  438. package/dist-server/domain/onboarding/onboarding.controller.js +1 -97
  439. package/dist-server/domain/onboarding/onboarding.module.js +1 -23
  440. package/dist-server/domain/onboarding/onboarding.service.js +1 -106
  441. package/dist-server/domain/onboarding/onboarding.types.js +1 -2
  442. package/dist-server/domain/onboarding/presets/custom.js +1 -10
  443. package/dist-server/domain/onboarding/presets/dev-team.js +1 -41
  444. package/dist-server/domain/onboarding/presets/index.js +1 -15
  445. package/dist-server/domain/onboarding/presets/marketing-team.js +1 -29
  446. package/dist-server/domain/onboarding/presets/planning-team.js +1 -29
  447. package/dist-server/domain/onboarding/presets/solo.js +1 -17
  448. package/dist-server/domain/planner/dto/planner.dto.js +1 -58
  449. package/dist-server/domain/planner/planner.controller.js +1 -74
  450. package/dist-server/domain/planner/planner.module.js +1 -22
  451. package/dist-server/domain/planner/planner.service.js +1 -272
  452. package/dist-server/domain/project/dto/create-project-ledger.dto.js +1 -0
  453. package/dist-server/domain/project/dto/create-project.dto.js +1 -46
  454. package/dist-server/domain/project/dto/update-project.dto.js +1 -60
  455. package/dist-server/domain/project/project-ledger.controller.js +1 -0
  456. package/dist-server/domain/project/project-ledger.service.js +1 -0
  457. package/dist-server/domain/project/project.controller.js +1 -129
  458. package/dist-server/domain/project/project.module.js +1 -22
  459. package/dist-server/domain/project/project.service.js +1 -173
  460. package/dist-server/domain/settings/local-ai-server/local-ai-server.controller.js +1 -0
  461. package/dist-server/domain/settings/local-ai-server/local-ai-server.dto.js +1 -0
  462. package/dist-server/domain/settings/local-ai-server/local-ai-server.network-policy.js +1 -0
  463. package/dist-server/domain/settings/local-ai-server/local-ai-server.service.js +1 -0
  464. package/dist-server/domain/settings/local-ai-server/local-ai-server.types.js +1 -0
  465. package/dist-server/domain/settings/request-log-maintenance.js +1 -0
  466. package/dist-server/domain/settings/request-log-maintenance.service.js +1 -0
  467. package/dist-server/domain/settings/request-log-maintenance.worker.js +1 -0
  468. package/dist-server/domain/settings/request-log-prune.js +40 -0
  469. package/dist-server/domain/settings/request-log-rollup.js +31 -0
  470. package/dist-server/domain/settings/request-log-store.js +11 -0
  471. package/dist-server/domain/settings/request-logs.controller.js +1 -0
  472. package/dist-server/domain/settings/request-logs.service.js +15 -0
  473. package/dist-server/domain/settings/request-logs.types.js +1 -0
  474. package/dist-server/domain/settings/settings.controller.js +1 -52
  475. package/dist-server/domain/settings/settings.module.js +1 -24
  476. package/dist-server/domain/settings/settings.service.js +1 -221
  477. package/dist-server/domain/settings/storage-retention.js +34 -0
  478. package/dist-server/domain/settings/storage-retention.worker.js +14 -0
  479. package/dist-server/domain/settings/storage.controller.js +1 -0
  480. package/dist-server/domain/settings/storage.service.js +1 -0
  481. package/dist-server/domain/settings/storage.types.js +1 -0
  482. package/dist-server/domain/system/desktop-control.guard.js +1 -0
  483. package/dist-server/domain/system/shortcut.service.js +1 -0
  484. package/dist-server/domain/system/shortcut.types.js +1 -0
  485. package/dist-server/domain/system/shutdown.dto.js +1 -0
  486. package/dist-server/domain/system/system.controller.js +5 -41
  487. package/dist-server/domain/system/system.module.js +1 -19
  488. package/dist-server/domain/system/system.service.js +1 -0
  489. package/dist-server/domain/system/task-ownership.js +1 -0
  490. package/dist-server/domain/system/update-gate.service.js +1 -0
  491. package/dist-server/domain/task/child-task-projection.js +1 -0
  492. package/dist-server/domain/task/dto/all-tasks.dto.js +1 -55
  493. package/dist-server/domain/task/dto/descendants.dto.js +1 -0
  494. package/dist-server/domain/task/dto/list-tasks.dto.js +1 -69
  495. package/dist-server/domain/task/dto/search-tasks.dto.js +1 -66
  496. package/dist-server/domain/task/dto/send-message.dto.js +1 -41
  497. package/dist-server/domain/task/dto/task-prompt.dto.js +1 -0
  498. package/dist-server/domain/task/dto/task-rating.dto.js +1 -0
  499. package/dist-server/domain/task/dto/task-status.dto.js +1 -34
  500. package/dist-server/domain/task/dto/workspace-usage.dto.js +1 -38
  501. package/dist-server/domain/task/prompt-composition.js +1 -0
  502. package/dist-server/domain/task/task-execution-path.js +1 -0
  503. package/dist-server/domain/task/task.constants.js +1 -12
  504. package/dist-server/domain/task/task.controller.js +1 -184
  505. package/dist-server/domain/task/task.module.js +1 -23
  506. package/dist-server/domain/task/task.service.js +3 -1082
  507. package/dist-server/domain/terminal/terminal-access-policy.js +1 -0
  508. package/dist-server/domain/terminal/terminal-audit.service.js +25 -0
  509. package/dist-server/domain/terminal/terminal-csp.js +1 -0
  510. package/dist-server/domain/terminal/terminal-local-only.guard.js +1 -0
  511. package/dist-server/domain/terminal/terminal-session.service.js +1 -0
  512. package/dist-server/domain/terminal/terminal-ticket.service.js +1 -0
  513. package/dist-server/domain/terminal/terminal-ws.service.js +1 -0
  514. package/dist-server/domain/terminal/terminal.controller.js +1 -0
  515. package/dist-server/domain/terminal/terminal.module.js +1 -0
  516. package/dist-server/domain/thread/dto/build-context.dto.js +1 -42
  517. package/dist-server/domain/thread/dto/highlight.dto.js +1 -0
  518. package/dist-server/domain/thread/dto/list-messages.dto.js +1 -49
  519. package/dist-server/domain/thread/dto/list-threads.dto.js +1 -70
  520. package/dist-server/domain/thread/dto/reorder-pins.dto.js +1 -22
  521. package/dist-server/domain/thread/dto/search-threads.dto.js +1 -13
  522. package/dist-server/domain/thread/dto/thread-label.dto.js +1 -0
  523. package/dist-server/domain/thread/dto/timeline-query.dto.js +1 -0
  524. package/dist-server/domain/thread/dto/update-thread.dto.js +1 -23
  525. package/dist-server/domain/thread/overdrive.types.js +1 -38
  526. package/dist-server/domain/thread/thread-highlight-flight.service.js +1 -0
  527. package/dist-server/domain/thread/thread-highlight-regeneration.service.js +1 -0
  528. package/dist-server/domain/thread/thread-highlight-trigger.service.js +1 -0
  529. package/dist-server/domain/thread/thread-highlight.constants.js +1 -0
  530. package/dist-server/domain/thread/thread-label.controller.js +1 -0
  531. package/dist-server/domain/thread/thread-label.service.js +1 -0
  532. package/dist-server/domain/thread/thread-preview.controller.js +1 -0
  533. package/dist-server/domain/thread/thread-title.backfill.js +1 -0
  534. package/dist-server/domain/thread/thread-title.types.js +1 -0
  535. package/dist-server/domain/thread/thread.controller.js +1 -190
  536. package/dist-server/domain/thread/thread.module.js +1 -25
  537. package/dist-server/domain/thread/thread.service.js +6 -707
  538. package/dist-server/domain/token/token.controller.js +1 -73
  539. package/dist-server/domain/token/token.dto.js +1 -56
  540. package/dist-server/domain/token/token.module.js +1 -22
  541. package/dist-server/domain/token/token.service.js +3 -235
  542. package/dist-server/domain/usage/codex-rate-limits.client.js +2 -0
  543. package/dist-server/domain/usage/usage.controller.js +1 -186
  544. package/dist-server/domain/usage/usage.module.js +1 -22
  545. package/dist-server/domain/usage/usage.service.js +1 -952
  546. package/dist-server/domain/usage/usage.types.js +1 -4
  547. package/dist-server/domain/usage-report/dto/usage-report.dto.js +1 -2
  548. package/dist-server/domain/usage-report/report-findings.js +1 -0
  549. package/dist-server/domain/usage-report/usage-report.controller.js +1 -72
  550. package/dist-server/domain/usage-report/usage-report.module.js +1 -23
  551. package/dist-server/domain/usage-report/usage-report.service.js +1 -135
  552. package/dist-server/domain/wbs/wbs.controller.js +1 -51
  553. package/dist-server/domain/wbs/wbs.module.js +1 -21
  554. package/dist-server/domain/wbs/wbs.service.js +1 -94
  555. package/dist-server/domain/wi/dto/create-wi.dto.js +1 -0
  556. package/dist-server/domain/wi/dto/update-wi-status.dto.js +1 -0
  557. package/dist-server/domain/wi/wi.controller.js +1 -70
  558. package/dist-server/domain/wi/wi.module.js +1 -22
  559. package/dist-server/domain/wi/wi.service.js +2 -280
  560. package/dist-server/domain/wi/wi.types.js +1 -2
  561. package/dist-server/domain/workflow/chat-card-proof.service.js +1 -83
  562. package/dist-server/domain/workflow/dto/thread-app-launch.dto.js +1 -0
  563. package/dist-server/domain/workflow/thread-app-launch.controller.js +1 -0
  564. package/dist-server/domain/workflow/ui-instance.controller.js +1 -0
  565. package/dist-server/domain/workflow/workflow-approval-v2.js +1 -0
  566. package/dist-server/domain/workflow/workflow.controller.js +1 -149
  567. package/dist-server/domain/workflow/workflow.module.js +1 -22
  568. package/dist-server/domain/workflow/workflow.service.js +3 -782
  569. package/dist-server/domain/workspace/dto/create-workspace.dto.js +1 -45
  570. package/dist-server/domain/workspace/dto/rename-workspace.dto.js +1 -0
  571. package/dist-server/domain/workspace/dto/switch-workspace.dto.js +1 -32
  572. package/dist-server/domain/workspace/dto/workspace-info.dto.js +1 -2
  573. package/dist-server/domain/workspace/workspace.controller.js +1 -98
  574. package/dist-server/domain/workspace/workspace.module.js +1 -22
  575. package/dist-server/domain/workspace/workspace.service.js +1 -201
  576. package/dist-server/main.js +1 -231
  577. package/dist-server/modules/crewx-pool.service.js +1 -340
  578. package/dist-server/modules/crewx.module.js +1 -53
  579. package/dist-server/modules/workspace-config.store.js +1 -0
  580. package/dist-server/repository/agent-suggestion.repository.js +1 -0
  581. package/dist-server/repository/base-sqlite.repository.js +1 -18
  582. package/dist-server/repository/box.repository.js +1 -99
  583. package/dist-server/repository/message.repository.js +1 -22
  584. package/dist-server/repository/notification.repository.js +1 -0
  585. package/dist-server/repository/project.repository.js +1 -51
  586. package/dist-server/repository/repository.module.js +1 -38
  587. package/dist-server/repository/request-log.repository.js +2 -87
  588. package/dist-server/repository/task.repository.js +11 -376
  589. package/dist-server/repository/thread-label.repository.js +1 -0
  590. package/dist-server/repository/thread.repository.js +110 -189
  591. package/dist-server/repository/usage-limit-snapshot.repository.js +1 -24
  592. package/dist-server/repository/usage-report.repository.js +1 -27
  593. package/dist-server/shared/attachment-path.js +1 -0
  594. package/dist-server/shared/attachment-policy.js +1 -0
  595. package/dist-server/shared/crewx-home.js +1 -58
  596. package/dist-server/shared/crewx-state.js +1 -66
  597. package/dist-server/shared/doc-heading.js +1 -0
  598. package/dist-server/shared/marketplace-api.constants.js +1 -0
  599. package/dist-server/shared/thread-label.js +1 -0
  600. package/dist-server/shared/workflow-run.contract.js +1 -0
  601. package/dist-server/test-utils/compat-database.js +1 -30
  602. package/dist-server/test-utils/request-log-fixtures.js +35 -0
  603. package/dist-server/utils/tokenizer.js +1 -8
  604. package/examples/mcp-apps/dist/sandbox/sandbox.html +14 -0
  605. package/examples/mcp-apps/dist/workflow/workflow-card.html +161 -0
  606. package/package.json +201 -34
  607. package/packages/cli/dist/bootstrap/codex-writable-roots.d.ts +20 -1
  608. package/packages/cli/dist/bootstrap/codex-writable-roots.js +1 -88
  609. package/packages/cli/dist/bootstrap/crewx-cli.js +1 -63
  610. package/packages/cli/dist/builtin.d.ts +1 -1
  611. package/packages/cli/dist/builtin.js +5 -127
  612. package/packages/cli/dist/commands/agent.js +4 -224
  613. package/packages/cli/dist/commands/cal.d.ts +15 -0
  614. package/packages/cli/dist/commands/cal.js +2 -0
  615. package/packages/cli/dist/commands/db.d.ts +3 -0
  616. package/packages/cli/dist/commands/db.js +59 -125
  617. package/packages/cli/dist/commands/detached.d.ts +95 -0
  618. package/packages/cli/dist/commands/detached.js +15 -0
  619. package/packages/cli/dist/commands/doctor.d.ts +77 -0
  620. package/packages/cli/dist/commands/doctor.js +4 -196
  621. package/packages/cli/dist/commands/emit-trailer.d.ts +25 -0
  622. package/packages/cli/dist/commands/emit-trailer.js +2 -0
  623. package/packages/cli/dist/commands/execute.d.ts +8 -4
  624. package/packages/cli/dist/commands/execute.js +15 -146
  625. package/packages/cli/dist/commands/hook/command-marker.d.ts +2 -0
  626. package/packages/cli/dist/commands/hook/command-marker.js +1 -0
  627. package/packages/cli/dist/commands/hook/install.d.ts +0 -1
  628. package/packages/cli/dist/commands/hook/install.js +8 -175
  629. package/packages/cli/dist/commands/hook/paths.js +1 -94
  630. package/packages/cli/dist/commands/hook/status.js +1 -86
  631. package/packages/cli/dist/commands/hook/uninstall.js +1 -71
  632. package/packages/cli/dist/commands/hook-dispatch.js +2 -180
  633. package/packages/cli/dist/commands/init.d.ts +34 -0
  634. package/packages/cli/dist/commands/init.js +37 -370
  635. package/packages/cli/dist/commands/kill.d.ts +2 -8
  636. package/packages/cli/dist/commands/kill.js +1 -52
  637. package/packages/cli/dist/commands/log.js +3 -95
  638. package/packages/cli/dist/commands/parse-agent-message.js +1 -52
  639. package/packages/cli/dist/commands/parse-common-flags.d.ts +5 -1
  640. package/packages/cli/dist/commands/parse-common-flags.js +3 -181
  641. package/packages/cli/dist/commands/ps.d.ts +2 -2
  642. package/packages/cli/dist/commands/ps.js +2 -107
  643. package/packages/cli/dist/commands/publish.d.ts +1 -0
  644. package/packages/cli/dist/commands/publish.js +27 -0
  645. package/packages/cli/dist/commands/query.d.ts +7 -2
  646. package/packages/cli/dist/commands/query.js +16 -146
  647. package/packages/cli/dist/commands/registry.js +1 -31
  648. package/packages/cli/dist/commands/resolve-prompt.js +3 -54
  649. package/packages/cli/dist/commands/resolve-recipient.d.ts +14 -0
  650. package/packages/cli/dist/commands/resolve-recipient.js +3 -0
  651. package/packages/cli/dist/commands/restart.d.ts +3 -1
  652. package/packages/cli/dist/commands/restart.js +18 -162
  653. package/packages/cli/dist/commands/result.d.ts +8 -3
  654. package/packages/cli/dist/commands/result.js +1 -70
  655. package/packages/cli/dist/commands/shortcut.d.ts +1 -0
  656. package/packages/cli/dist/commands/shortcut.js +18 -0
  657. package/packages/cli/dist/commands/slack.js +16 -559
  658. package/packages/cli/dist/commands/stop.d.ts +8 -0
  659. package/packages/cli/dist/commands/stop.js +8 -0
  660. package/packages/cli/dist/commands/write-output.js +1 -24
  661. package/packages/cli/dist/index.d.ts +1 -1
  662. package/packages/cli/dist/index.js +1 -5
  663. package/packages/cli/dist/logging.d.ts +1 -1
  664. package/packages/cli/dist/logging.js +10 -86
  665. package/packages/cli/dist/main.d.ts +3 -2
  666. package/packages/cli/dist/main.js +44 -253
  667. package/packages/cli/dist/register-builtin-tools.js +1 -9
  668. package/packages/cli/dist/slack/file-download.js +1 -134
  669. package/packages/cli/dist/slack/markdown.js +1 -33
  670. package/packages/cli/dist/utils/env-defaults.d.ts +2 -5
  671. package/packages/cli/dist/utils/env-defaults.js +1 -10
  672. package/packages/cli/dist/utils/inherited-trace.d.ts +24 -0
  673. package/packages/cli/dist/utils/inherited-trace.js +1 -25
  674. package/packages/cli/dist/utils/product-package-root.d.ts +6 -0
  675. package/packages/cli/dist/utils/product-package-root.js +1 -0
  676. package/packages/cli/dist/utils/sdk-compat.d.ts +24 -0
  677. package/packages/cli/dist/utils/sdk-compat.js +1 -0
  678. package/packages/cli/dist/utils/version.js +1 -28
  679. package/packages/cli/package.json +7 -2
  680. package/server.js +2 -106
  681. package/dist/assets/MarketPage-BgAWacd7.js +0 -41
  682. package/dist/assets/PromptTab-LML0dhnv.js +0 -27
  683. package/dist/assets/arc-BBMQPf9Z.js +0 -1
  684. package/dist/assets/architectureDiagram-UYN6MBPD-Uinv3ruS.js +0 -36
  685. package/dist/assets/blockDiagram-ZHA2E4KO-CM8iVhUy.js +0 -121
  686. package/dist/assets/c4Diagram-6F5ED5ID-D6HM4dEk.js +0 -10
  687. package/dist/assets/channel-cs9O3fiH.js +0 -1
  688. package/dist/assets/chunk-5HRBRIJM-CsiffIEz.js +0 -1
  689. package/dist/assets/chunk-7U56Z5CX-kgH95T9a.js +0 -220
  690. package/dist/assets/chunk-ASOPGD6M-dKFyf37d.js +0 -1
  691. package/dist/assets/chunk-T2TOU4HS-DMk7ilyN.js +0 -164
  692. package/dist/assets/classDiagram-LNE6IOMH-veS4tD2p.js +0 -1
  693. package/dist/assets/classDiagram-v2-MQ7JQ4JX-veS4tD2p.js +0 -1
  694. package/dist/assets/cytoscape.esm-BiciSPf8.js +0 -331
  695. package/dist/assets/dagre-4EVJKHTY-DKMJYrr5.js +0 -4
  696. package/dist/assets/diagram-QW4FP2JN-BNyGnAGw.js +0 -24
  697. package/dist/assets/erDiagram-6RL3IURR-qo27Uk30.js +0 -51
  698. package/dist/assets/flowDiagram-7ASYPVHJ-BudDObQU.js +0 -160
  699. package/dist/assets/ganttDiagram-NTVNEXSI-DCFf5efZ.js +0 -257
  700. package/dist/assets/gitGraph-YCYPL57B-Cv8vXWsN.js +0 -133
  701. package/dist/assets/gitGraphDiagram-NRZ2UAAF-DJUV3_64.js +0 -65
  702. package/dist/assets/graph-BlwPajkw.js +0 -1
  703. package/dist/assets/infoDiagram-A4XQUW5V-BlzLOJuh.js +0 -2
  704. package/dist/assets/journeyDiagram-G5WM74LC-BoBDY7uv.js +0 -139
  705. package/dist/assets/katex-DkKDou_j.js +0 -257
  706. package/dist/assets/layout-Bvwu4dCi.js +0 -1
  707. package/dist/assets/linear-CoIZ0x19.js +0 -1
  708. package/dist/assets/main-BOcmSxv5.css +0 -10
  709. package/dist/assets/main-CZQslZK1.js +0 -1526
  710. package/dist/assets/mindmap-definition-GWI6TPTV-B4T62xYW.js +0 -95
  711. package/dist/assets/pieDiagram-YF2LJOPJ-C570Jl7r.js +0 -30
  712. package/dist/assets/quadrantDiagram-OS5C2QUG-D9kamKQz.js +0 -7
  713. package/dist/assets/requirementDiagram-MIRIMTAZ-CbI9--NI.js +0 -52
  714. package/dist/assets/sankeyDiagram-Y46BX6SQ-5AYnNxm5.js +0 -8
  715. package/dist/assets/sequenceDiagram-G6AWOVSC-awwP3H4O.js +0 -122
  716. package/dist/assets/stateDiagram-MAYHULR4-DsTGBCid.js +0 -1
  717. package/dist/assets/stateDiagram-v2-4JROLMXI-B8Exp_99.js +0 -1
  718. package/dist/assets/timeline-definition-U7ZMHBDA-Dur75zzR.js +0 -61
  719. package/dist/assets/xychartDiagram-6QU3TZC5-zevo9T1B.js +0 -7
  720. package/dist-electron/main.js +0 -194
  721. package/dist-electron/overlay.js +0 -129
  722. package/dist-electron/package.json +0 -1
  723. package/dist-electron/preload.js +0 -12
@@ -1,36 +1 @@
1
- /**
2
- * SSOT for CLI subcommand whitelist.
3
- *
4
- * These are all commands that the launcher routes to the CLI engine (packages/cli).
5
- * Must stay in sync with KNOWN_COMMANDS ∪ BUILTIN_COMMAND_NAMES ∪ NOT_YET_MIGRATED
6
- * in packages/cli/src/commands/registry.ts.
7
- *
8
- * Verified by bin/__tests__/crewx-entrypoint.test.ts SSOT assertion test.
9
- */
10
- export const CLI_SUBCOMMANDS = new Set([
11
- // Query / Execute
12
- 'q', 'query',
13
- 'x', 'execute',
14
-
15
- // Agent / Task
16
- 'agent',
17
- 'ps', 'kill', 'result', 'log', 'restart',
18
-
19
- // Diagnostics / Init / DB
20
- 'doctor', 'init',
21
- 'db',
22
- 'help',
23
-
24
- // Built-in tools
25
- 'memory', 'search', 'doc', 'wbs', 'cron', 'workflow', 'skill', 'dreaming',
26
- 'wi', 'chromex',
27
-
28
- // Hook platform
29
- 'hook', 'hook-dispatch',
30
-
31
- // Slack / Adapters
32
- 'slack', 'slack:files',
33
-
34
- // Not-yet-migrated
35
- 'template', 'templates', 'chat', 'mcp',
36
- ]);
1
+ const e=new Set(["q","query","x","execute","agent","ps","stop","kill","result","log","restart","doctor","init","db","help","shortcut","publish","memory","search","doc","wbs","cron","workflow","skill","dreaming","wi","chromex","notify","app","hook","hook-dispatch","slack","slack:files","template","templates","chat","mcp"]);export{e as CLI_SUBCOMMANDS};
package/bin/crewx-lib.js CHANGED
@@ -1,173 +1,2 @@
1
- /**
2
- * crewx launcher library — testable pure-logic functions extracted from crewx.js.
3
- */
4
- import { mkdirSync } from 'fs';
5
- import { homedir } from 'os';
6
- import { join } from 'path';
7
- import { CLI_SUBCOMMANDS } from './cli-commands.js';
8
- import { buildHintMessage } from './launcher-flags.js';
9
-
10
-
11
- /**
12
- * Parse --port option from extra CLI args.
13
- * Backward-compatible thin wrapper; kept for existing callers.
14
- *
15
- * @param {string[]} extraArgs
16
- * @returns {{ port: number } | { error: string } | null}
17
- */
18
- export function parseWebPort(extraArgs) {
19
- const portIdx = extraArgs.indexOf('--port');
20
- if (portIdx === -1) return null;
21
- const portVal = Number(extraArgs[portIdx + 1]);
22
- if (!portVal || portVal < 1 || portVal > 65535) {
23
- return { error: 'Invalid port number. Use 1-65535.' };
24
- }
25
- return { port: portVal };
26
- }
27
-
28
- /**
29
- * Determine the route based on CLI arguments.
30
- *
31
- * Priority order:
32
- * 1. --help/-h, --version/-v → CLI (global options handled by CLI engine)
33
- * 2. Known CLI subcommand → CLI
34
- * 3. 'serve' verb → serve
35
- * 4. 'electron' verb → electron
36
- * 5. No arguments → web-default (browser auto-open)
37
- * 6. Unknown first argument → error with hint
38
- *
39
- * @param {string[]} args - process.argv.slice(2)
40
- * @returns {{ route: string, routeArgs: string[], error?: string }}
41
- */
42
- export function resolveRoute(args) {
43
- const firstArg = args[0];
44
-
45
- // 1. Global options → CLI engine handles them
46
- if (firstArg === '--help' || firstArg === '-h') {
47
- return { route: 'cli', routeArgs: args };
48
- }
49
- if (firstArg === '--version' || firstArg === '-v') {
50
- return { route: 'cli', routeArgs: args };
51
- }
52
-
53
- // 2. CLI subcommand whitelist → CLI engine
54
- if (firstArg !== undefined && CLI_SUBCOMMANDS.has(firstArg)) {
55
- return { route: 'cli', routeArgs: args };
56
- }
57
-
58
- // 3. New verb: serve
59
- if (firstArg === 'serve') {
60
- return { route: 'serve', routeArgs: args.slice(1) };
61
- }
62
-
63
- // 4. New verb: electron
64
- if (firstArg === 'electron') {
65
- return { route: 'electron', routeArgs: args.slice(1) };
66
- }
67
-
68
- // 5. No arguments → web default
69
- if (firstArg === undefined) {
70
- return { route: 'web-default', routeArgs: [] };
71
- }
72
-
73
- // 6. Unknown → error with hint
74
- const hint = buildHintMessage(firstArg);
75
- const hintSuffix = hint ? `\n ${hint}` : '\n Run `crewx --help` for usage.';
76
- return {
77
- route: 'error',
78
- error: `Unknown command or option: "${firstArg}"${hintSuffix}`,
79
- routeArgs: args,
80
- };
81
- }
82
-
83
- /**
84
- * Ensure CrewX directories exist before any subcommand runs.
85
- * - ~/.crewx (crewx home) — config + DB (crewx.db)
86
- * - ~/crewx (crewx workspaces dir) — user-facing workspaces collection,
87
- * surfaced as "워크스페이스" Quick Access shortcut
88
- * in DirectoryPickerDialog (WKSUI001-NEW).
89
- *
90
- * The two are completely different directories — never conflate them.
91
- * Both calls are idempotent (mkdir recursive). Failures are warned to stderr
92
- * but never abort the launcher.
93
- */
94
- export function ensureCrewxDirs() {
95
- const crewxHome = join(homedir(), '.crewx'); // config/DB
96
- const crewxWorkspaces = join(homedir(), 'crewx'); // workspaces collection
97
-
98
- const crewxTls = join(crewxHome, 'tls');
99
-
100
- for (const dir of [crewxHome, crewxWorkspaces, crewxTls]) {
101
- try {
102
- mkdirSync(dir, { recursive: true });
103
- } catch (err) {
104
- console.warn(`[crewx] Failed to ensure ${dir}: ${err?.message ?? err}`);
105
- }
106
- }
107
- }
108
-
109
- /**
110
- * Forward signals to a child process for clean shutdown.
111
- *
112
- * Uses an `exited` flag (set by the child's 'exit' event) instead of
113
- * `child.killed`, because `child.killed` becomes `true` immediately after
114
- * calling `child.kill()` — even if the child process is still running.
115
- * This ensures the SIGKILL escalation timer can actually fire.
116
- *
117
- * On Windows, SIGTERM is equivalent to an immediate kill.
118
- *
119
- * @param {import('child_process').ChildProcess} child
120
- * @param {{ escalateKill?: boolean, detached?: boolean }} options
121
- */
122
- export function setupSignalForwarding(child, { escalateKill = false, detached = false } = {}) {
123
- let exited = false;
124
- let escalationScheduled = false;
125
-
126
- child.on('exit', () => {
127
- exited = true;
128
- });
129
-
130
- // When detached, the child runs in its own process group.
131
- // Use process.kill(-pid) to kill the entire group (Electron + GPU helpers).
132
- // When not detached, use child.kill() for single-process kill.
133
- const killChild = (signal) => {
134
- try {
135
- if (detached) {
136
- process.kill(-child.pid, signal);
137
- } else {
138
- child.kill(signal);
139
- }
140
- } catch {
141
- // Process or process group already terminated
142
- }
143
- };
144
-
145
- process.on('SIGINT', () => {
146
- if (!exited) {
147
- killChild('SIGTERM');
148
- if (escalateKill && !escalationScheduled) {
149
- escalationScheduled = true;
150
- setTimeout(() => {
151
- if (!exited) killChild('SIGKILL');
152
- }, 3000).unref();
153
- }
154
- }
155
- });
156
-
157
- process.on('SIGTERM', () => {
158
- if (!exited) killChild('SIGTERM');
159
- });
160
-
161
- process.on('SIGHUP', () => {
162
- if (!exited) killChild('SIGHUP');
163
- });
164
-
165
- // Clean up the child process group when the parent exits unexpectedly
166
- if (detached) {
167
- process.on('exit', () => {
168
- if (!exited) {
169
- try { process.kill(-child.pid, 'SIGKILL'); } catch {}
170
- }
171
- });
172
- }
173
- }
1
+ import{lstatSync as a,mkdirSync as l,readFileSync as f}from"fs";import{homedir as u}from"os";import{join as s}from"path";import{getCrewxHome as p}from"@crewx/sdk";import{CLI_SUBCOMMANDS as d}from"./cli-commands.js";import{buildHintMessage as w}from"./launcher-flags.js";const m=384;const h="pairing.token";const E="http://localhost:8150";const I=/^crewxrt_pairing_[0-9a-f]{64}$/;function g(){return process.platform==="win32"||typeof process.getuid!=="function"?void 0:process.getuid()}function x(){return s(p(),"auth","runtime",h)}function C(){const e=x();let r;try{r=a(e)}catch(o){if(o?.code==="ENOENT"){throw new Error("Pairing runtime credential is missing; start the CrewX server once to create pairing.token.")}throw new Error("Pairing runtime credential is not readable.")}if(!r.isFile()){throw new Error("Pairing runtime credential is not a regular file.")}if(process.platform!=="win32"&&(r.mode&511)!==m){throw new Error("Pairing runtime credential permissions are invalid; expected mode 0600.")}const n=g();if(n!==void 0&&r.uid!==n){throw new Error("Pairing runtime credential must be owned by the current user.")}let t;try{t=f(e,"utf8")}catch{throw new Error("Pairing runtime credential is not readable.")}if(!I.test(t)){throw new Error("Pairing runtime credential has an invalid format.")}return t}function T({port:e,env:r=process.env}={}){const n=e===void 0?r.CREWX_ENDPOINT?.trim()||E:`http://localhost:${e}`;let t;try{t=new URL(n)}catch{throw new Error("Invalid CrewX endpoint. Use an http:// or https:// URL.")}if(t.protocol!=="http:"&&t.protocol!=="https:"){throw new Error("Invalid CrewX endpoint. Use an http:// or https:// URL.")}if(t.username||t.password||t.search||t.hash){throw new Error("Invalid CrewX endpoint. Do not include credentials, query, or fragment data.")}return t.toString().replace(/\/$/,"")}function y(e){const r=e.indexOf("--port");if(r===-1)return null;const n=Number(e[r+1]);if(!n||n<1||n>65535){return{error:"Invalid port number. Use 1-65535."}}return{port:n}}function G(e){const r=e[0];if(r==="--help"||r==="-h"){return{route:"cli",routeArgs:e}}if(r==="--version"||r==="-v"){return{route:"cli",routeArgs:e}}if(r!==void 0&&d.has(r)){return{route:"cli",routeArgs:e}}if(r==="serve"){return{route:"serve",routeArgs:e.slice(1)}}if(r==="pair"){return{route:"pair",routeArgs:e.slice(1)}}if(r==="electron"){return{route:"electron",routeArgs:e.slice(1)}}if(r===void 0){return{route:"web-default",routeArgs:[]}}const n=w(r);const t=n?`
2
+ ${n}`:"\n Run `crewx --help` for usage.";return{route:"error",error:`Unknown command or option: "${r}"${t}`,routeArgs:e}}function L(){const e=s(u(),".crewx");const r=s(u(),"crewx");const n=s(e,"tls");for(const t of[e,r,n]){try{l(t,{recursive:true})}catch(o){console.warn(`[crewx] Failed to ensure ${t}: ${o?.message??o}`)}}}function U(e,{escalateKill:r=false,detached:n=false}={}){let t=false;let o=false;e.on("exit",()=>{t=true});const i=c=>{try{if(n){process.kill(-e.pid,c)}else{e.kill(c)}}catch{}};process.on("SIGINT",()=>{if(!t){i("SIGTERM");if(r&&!o){o=true;setTimeout(()=>{if(!t)i("SIGKILL")},3e3).unref()}}});process.on("SIGTERM",()=>{if(!t)i("SIGTERM")});process.on("SIGHUP",()=>{if(!t)i("SIGHUP")});if(n){process.on("exit",()=>{if(!t){try{process.kill(-e.pid,"SIGKILL")}catch{}}})}}export{L as ensureCrewxDirs,x as pairingCredentialPath,y as parseWebPort,C as readPairingCredential,T as resolvePairEndpoint,G as resolveRoute,U as setupSignalForwarding};
package/bin/crewx-ui.js CHANGED
@@ -1,86 +1,2 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * crewx-ui launcher
4
- *
5
- * Usage:
6
- * npx crewx-ui → NestJS web server (default)
7
- * npx crewx-ui --electron → Electron dashboard (main window)
8
- * npx crewx-ui --overlay → Electron floating overlay
9
- */
10
- import { spawn } from 'child_process';
11
- import { fileURLToPath } from 'url';
12
- import { dirname, join } from 'path';
13
- import { createRequire } from 'module';
14
- import { ensureCrewxDirs } from './crewx-lib.js';
15
-
16
- const __filename = fileURLToPath(import.meta.url);
17
- const __dirname = dirname(__filename);
18
-
19
- ensureCrewxDirs();
20
-
21
- const args = process.argv.slice(2);
22
- const isElectron = args.includes('--electron');
23
- const isOverlay = args.includes('--overlay');
24
-
25
- function getElectronSpawnEnv() {
26
- const env = { ...process.env };
27
- delete env.ELECTRON_RUN_AS_NODE;
28
- env.NODE_ENV = 'production'; // Force production — prevents users from bypassing FREE limits via env
29
- return env;
30
- }
31
-
32
- if (isElectron || isOverlay) {
33
- // Electron mode: resolve binary path via require('electron')
34
- const require = createRequire(import.meta.url);
35
-
36
- let electronPath;
37
- try {
38
- electronPath = require('electron');
39
- } catch {
40
- console.error('');
41
- console.error(' ❌ Electron is not installed.');
42
- console.error('');
43
- console.error(' To use --electron or --overlay mode, install Electron:');
44
- console.error('');
45
- console.error(' npm install -g electron');
46
- console.error(' # or, in this project:');
47
- console.error(' npm install --save-dev electron');
48
- console.error('');
49
- process.exit(1);
50
- }
51
-
52
- const entryFile = isOverlay
53
- ? join(__dirname, '..', 'dist-electron', 'overlay.js')
54
- : join(__dirname, '..', 'dist-electron', 'main.js');
55
-
56
- if (process.env.ELECTRON_RUN_AS_NODE) {
57
- console.warn(
58
- '[crewx-ui] Ignoring ELECTRON_RUN_AS_NODE for Electron UI launch (it forces Electron into Node mode).',
59
- );
60
- }
61
-
62
- const child = spawn(String(electronPath), [entryFile], {
63
- stdio: 'inherit',
64
- env: getElectronSpawnEnv(),
65
- });
66
-
67
- child.on('exit', (code) => process.exit(code ?? 0));
68
- child.on('error', (err) => {
69
- console.error('Failed to launch Electron:', err);
70
- process.exit(1);
71
- });
72
- } else {
73
- // Default: delegate to server.js (NestJS web server)
74
- const serverScript = join(__dirname, '..', 'server.js');
75
-
76
- const child = spawn(process.execPath, [serverScript, ...args], {
77
- stdio: 'inherit',
78
- env: { ...process.env, NODE_ENV: 'production' }, // Force production — prevents users from bypassing FREE limits via env
79
- });
80
-
81
- child.on('exit', (code) => process.exit(code ?? 0));
82
- child.on('error', (err) => {
83
- console.error('Failed to start server:', err);
84
- process.exit(1);
85
- });
86
- }
2
+ import{spawn as l}from"child_process";import{fileURLToPath as p}from"url";import{dirname as m,join as t}from"path";import{createRequire as d}from"module";import{ensureCrewxDirs as v}from"./crewx-lib.js";const u=p(import.meta.url);const s=m(u);v();const c=process.argv.slice(2);const E=c.includes("--electron");const a=c.includes("--overlay");function h(){const e={...process.env};delete e.ELECTRON_RUN_AS_NODE;e.NODE_ENV="production";return e}if(E||a){const e=d(import.meta.url);let r;try{r=e("electron")}catch{console.error("");console.error(" \u274C Electron is not installed.");console.error("");console.error(" To use --electron or --overlay mode, install Electron:");console.error("");console.error(" npm install -g electron");console.error(" # or, in this project:");console.error(" npm install --save-dev electron");console.error("");process.exit(1)}const o=a?t(s,"..","dist-electron","overlay.js"):t(s,"..","dist-electron","main.js");const i=l(String(r),[o],{stdio:"inherit",env:h()});i.on("exit",n=>process.exit(n??0));i.on("error",n=>{console.error("Failed to launch Electron:",n);process.exit(1)})}else{const e=t(s,"..","server.js");const r=l(process.execPath,[e,...c],{stdio:"inherit",env:{...process.env,NODE_ENV:"production"}});r.on("exit",o=>process.exit(o??0));r.on("error",o=>{console.error("Failed to start server:",o);process.exit(1)})}
package/bin/crewx.ico ADDED
Binary file
package/bin/crewx.js CHANGED
@@ -1,253 +1,3 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * crewx launcher
4
- *
5
- * Usage:
6
- * crewx → Web dashboard + browser auto-open (default)
7
- * crewx serve [--port N] → Web server (explicit)
8
- * [--token T] → MCP bearer token (⚠️ prefer --token-file in shared shells)
9
- * [--token-file PATH] → Read token from file
10
- * [--https] → Enable HTTPS with auto-generated certificate
11
- * [--trust] → Install CA to system trust store (requires --https)
12
- * [--no-open] → Do not open browser
13
- * crewx electron [--overlay] → Electron desktop or overlay window
14
- * crewx --version → CLI version output
15
- * crewx --help → CLI help output
16
- * crewx q|x|agent|... <args> → CLI subcommand (forwarded to packages/cli)
17
- */
18
- import { spawn } from 'child_process';
19
- import { existsSync, readFileSync } from 'fs';
20
- import { fileURLToPath } from 'url';
21
- import { dirname, join } from 'path';
22
- import { homedir, tmpdir } from 'os';
23
- import { createRequire } from 'module';
24
- import { defineCommand, runCommand, renderUsage } from 'citty';
25
- import { setupSignalForwarding, resolveRoute, ensureCrewxDirs } from './crewx-lib.js';
26
-
27
- const __filename = fileURLToPath(import.meta.url);
28
- const __dirname = dirname(__filename);
29
-
30
- function getElectronSpawnEnv() {
31
- const env = { ...process.env };
32
- delete env.ELECTRON_RUN_AS_NODE;
33
- env.NODE_ENV = 'production'; // Force production — prevents users from bypassing FREE limits via env
34
- return env;
35
- }
36
-
37
- /**
38
- * Launch Electron with the given entry file.
39
- * Returns false when Electron is not installed (fail-fast — caller must handle).
40
- */
41
- function launchElectron(entryFile, routeArgs = []) {
42
- const require = createRequire(import.meta.url);
43
- let electronPath;
44
- try {
45
- electronPath = require('electron');
46
- } catch {
47
- return false; // Electron not installed
48
- }
49
-
50
- if (process.env.ELECTRON_RUN_AS_NODE) {
51
- console.warn(
52
- '[crewx] Ignoring ELECTRON_RUN_AS_NODE for Electron UI launch (it forces Electron into Node mode).',
53
- );
54
- }
55
-
56
- const child = spawn(String(electronPath), [entryFile, ...routeArgs], {
57
- stdio: 'inherit',
58
- env: getElectronSpawnEnv(),
59
- detached: true, // Separate process group so Ctrl+C doesn't reach Electron directly
60
- });
61
-
62
- setupSignalForwarding(child, { escalateKill: true, detached: true });
63
-
64
- child.on('exit', (code) => process.exit(code ?? 0));
65
- child.on('error', (err) => {
66
- console.error('Failed to launch Electron:', err);
67
- process.exit(1);
68
- });
69
-
70
- return true;
71
- }
72
-
73
- /**
74
- * Launch the web server with the given options.
75
- * Token injection: --token → MCP_BEARER_TOKEN env; --token-file → read + inject.
76
- */
77
- function launchWeb({ port, token, tokenFile, open: openFlag, https, trust } = {}) {
78
- const serverScript = join(__dirname, '..', 'server.js');
79
-
80
- const env = { ...process.env, NODE_ENV: 'production' };
81
-
82
- if (https) {
83
- env.CREWX_HTTPS = 'true';
84
- }
85
- if (trust) {
86
- env.CREWX_TRUST_CA = 'true';
87
- }
88
-
89
- if (port) {
90
- env.PORT = String(port);
91
- }
92
-
93
- if (token) {
94
- env.MCP_BEARER_TOKEN = token;
95
- process.stderr.write(
96
- 'ℹ️ Tip: use --token-file to avoid exposing token in shell history.\n',
97
- );
98
- } else if (tokenFile) {
99
- let content;
100
- try {
101
- content = readFileSync(tokenFile, 'utf8').trim();
102
- } catch (err) {
103
- console.error(`❌ --token-file not readable: ${tokenFile}`);
104
- console.error(` ${err.message}`);
105
- process.exit(1);
106
- }
107
- if (!content) {
108
- console.error(`❌ --token-file is empty: ${tokenFile}`);
109
- process.exit(1);
110
- }
111
- env.MCP_BEARER_TOKEN = content;
112
- }
113
-
114
- const certPath = join(homedir(), '.crewx', 'tls', 'cert.pem');
115
- if (existsSync(certPath)) {
116
- env.NODE_EXTRA_CA_CERTS = certPath;
117
- }
118
-
119
- if (https) {
120
- console.log('🔒 HTTPS enabled with SowonLabs CA');
121
- if (!trust) {
122
- console.log('⚠️ Browser may show a certificate warning.');
123
- console.log(' To remove warning: npx crewx serve --https --trust');
124
- }
125
- }
126
-
127
- if (openFlag) {
128
- env.CREWX_OPEN_BROWSER = '1';
129
- env.CREWX_OPEN_BROWSER_ONCE_FILE = join(
130
- tmpdir(),
131
- `crewx-open-browser-${process.pid}-${Date.now()}`,
132
- );
133
- }
134
-
135
- const child = spawn(process.execPath, [serverScript], {
136
- stdio: 'inherit',
137
- env,
138
- });
139
-
140
- setupSignalForwarding(child);
141
-
142
- child.on('exit', (code) => process.exit(code ?? 0));
143
- child.on('error', (err) => {
144
- console.error('Failed to start web server:', err);
145
- process.exit(1);
146
- });
147
- }
148
-
149
- const serveCommand = defineCommand({
150
- meta: { name: 'serve', description: 'Launch CrewX web server' },
151
- args: {
152
- port: { type: 'string', description: 'Port to listen on' },
153
- token: { type: 'string', description: 'MCP bearer token' },
154
- 'token-file': { type: 'string', description: 'Read token from file' },
155
- https: { type: 'boolean', description: 'Enable HTTPS with auto-generated certificate' },
156
- trust: { type: 'boolean', description: 'Install CA to system trust store (requires --https)' },
157
- open: { type: 'boolean', description: 'Auto-open browser', default: true },
158
- help: { type: 'boolean', alias: 'h', description: 'Show this help' },
159
- },
160
- async run({ args }) {
161
- if (args.help) {
162
- const usage = await renderUsage(serveCommand);
163
- process.stdout.write(usage + '\n');
164
- process.exit(0);
165
- }
166
- const knownArgs = new Set(['_', 'port', 'token', 'token-file', 'tokenFile', 'https', 'trust', 'open', 'help', 'h']);
167
- for (const key of Object.keys(args)) {
168
- if (!knownArgs.has(key)) {
169
- console.error(`❌ Unknown option for "crewx serve": --${key}`);
170
- console.error(' Run `crewx serve --help` for usage.');
171
- process.exit(2);
172
- }
173
- }
174
- if (args.trust && !args.https) {
175
- console.error('❌ --trust requires --https');
176
- process.exit(1);
177
- }
178
- const port = args.port ? Number(args.port) : undefined;
179
- if (args.port && (!port || port < 1 || port > 65535)) {
180
- console.error('❌ Invalid port number. Use 1-65535.');
181
- process.exit(1);
182
- }
183
- launchWeb({
184
- port,
185
- token: args.token,
186
- tokenFile: args['token-file'],
187
- open: args.open,
188
- https: args.https,
189
- trust: args.trust,
190
- });
191
- },
192
- });
193
-
194
- function forwardToCli(cliArgs) {
195
- const serverScript = join(__dirname, '..', 'server.js');
196
- const child = spawn(process.execPath, [serverScript, 'cli', ...cliArgs], {
197
- stdio: 'inherit',
198
- env: { ...process.env, NODE_ENV: 'production' }, // Force production — prevents users from bypassing FREE limits via env
199
- });
200
-
201
- setupSignalForwarding(child);
202
-
203
- child.on('exit', (code) => process.exit(code ?? 0));
204
- child.on('error', (err) => {
205
- console.error('Failed to run CLI subcommand:', err);
206
- process.exit(1);
207
- });
208
- }
209
-
210
- ensureCrewxDirs();
211
-
212
- // Route
213
- const args = process.argv.slice(2);
214
- const { route, routeArgs, error } = resolveRoute(args);
215
-
216
- if (route === 'serve') {
217
- runCommand(serveCommand, { rawArgs: routeArgs });
218
- } else if (route === 'electron') {
219
- // Electron: desktop (default) or overlay (--overlay flag)
220
- const isOverlay = routeArgs.includes('--overlay');
221
- const entryFile = join(
222
- __dirname, '..', 'dist-electron',
223
- isOverlay ? 'overlay.js' : 'main.js',
224
- );
225
- const launched = launchElectron(entryFile, isOverlay ? [] : []);
226
- if (!launched) {
227
- console.error('');
228
- console.error(' ❌ Electron is not installed.');
229
- console.error('');
230
- console.error(' This command requires Electron. Install it:');
231
- console.error('');
232
- console.error(' npm install -g electron');
233
- console.error(' # or in this project:');
234
- console.error(' npm install --save-dev electron');
235
- console.error('');
236
- console.error(' Alternatively, use: crewx serve (web mode)');
237
- console.error('');
238
- process.exit(1);
239
- }
240
- } else if (route === 'cli') {
241
- forwardToCli(routeArgs);
242
- } else if (route === 'web-default') {
243
- // No arguments → web dashboard + browser auto-open
244
- runCommand(serveCommand, { rawArgs: ['--open', ...routeArgs] });
245
- } else if (route === 'error') {
246
- // Unknown command or option
247
- console.error(`❌ ${error}`);
248
- process.exit(2);
249
- } else {
250
- // Should not happen — guard against future routing additions
251
- console.error(`❌ Internal routing error: unknown route "${route}"`);
252
- process.exit(1);
253
- }
2
+ import{spawn as f}from"child_process";import{existsSync as _,readFileSync as C}from"fs";import{fileURLToPath as P}from"url";import{dirname as R,join as p}from"path";import{homedir as k,tmpdir as S}from"os";import{createRequire as T}from"module";import{defineCommand as g,runCommand as h,renderUsage as v}from"citty";import{setupSignalForwarding as w,resolveRoute as O,ensureCrewxDirs as N,readPairingCredential as A,resolvePairEndpoint as $}from"./crewx-lib.js";const U=P(import.meta.url);const m=R(U);function j(){const e={...process.env};delete e.ELECTRON_RUN_AS_NODE;e.NODE_ENV="production";return e}function q(e,r=[]){const o=T(import.meta.url);let t;try{t=o("electron")}catch{return false}const i=f(String(t),[e,...r],{stdio:"inherit",env:j(),detached:true});w(i,{escalateKill:true,detached:true});i.on("exit",s=>process.exit(s??0));i.on("error",s=>{console.error("Failed to launch Electron:",s);process.exit(1)});return true}function L({port:e,token:r,tokenFile:o,open:t,https:i,trust:s}={}){const n=p(m,"..","server.js");const c={...process.env,NODE_ENV:"production"};if(i){c.CREWX_HTTPS="true"}if(s){c.CREWX_TRUST_CA="true"}if(e){c.PORT=String(e)}if(r){c.MCP_BEARER_TOKEN=r;process.stderr.write("\u2139\uFE0F Tip: use --token-file to avoid exposing token in shell history.\n")}else if(o){let l;try{l=C(o,"utf8").trim()}catch(b){console.error(`\u274C --token-file not readable: ${o}`);console.error(` ${b.message}`);process.exit(1)}if(!l){console.error(`\u274C --token-file is empty: ${o}`);process.exit(1)}c.MCP_BEARER_TOKEN=l}const y=p(k(),".crewx","tls","cert.pem");if(_(y)){c.NODE_EXTRA_CA_CERTS=y}if(i){console.log("\u{1F512} HTTPS enabled with SowonLabs CA");if(!s){console.log("\u26A0\uFE0F Browser may show a certificate warning.");console.log(" To remove warning: npx crewx serve --https --trust")}}if(t){c.CREWX_OPEN_BROWSER="1";c.CREWX_OPEN_BROWSER_ONCE_FILE=p(S(),`crewx-open-browser-${process.pid}-${Date.now()}`)}const d=f(process.execPath,["--disable-sigusr1",n],{stdio:"inherit",env:c});w(d);d.on("exit",l=>process.exit(l??0));d.on("error",l=>{console.error("Failed to start web server:",l);process.exit(1)})}function I(e){const r=Number(e);if(!Number.isInteger(r)||r<1||r>65535){console.error("\u274C Invalid port number. Use 1-65535.");process.exit(1)}return r}function X(e){if(typeof e!=="string"||e.length===0)return false;try{const r=new URL(e);return(r.protocol==="http:"||r.protocol==="https:")&&r.search===""&&/^#pair=.{1,}$/.test(r.hash)}catch{return false}}async function D(e,r){let o;try{o=await fetch(`${e}/api/v1/auth/local/code`,{method:"POST",headers:{Accept:"application/json",Authorization:`Bearer ${r}`}})}catch{throw new Error(`Could not reach the CrewX server at ${e}.`)}if(!o.ok){throw new Error(`Pairing code request failed (HTTP ${o.status}).`)}let t;try{t=await o.json()}catch{throw new Error("Pairing code response was not valid JSON.")}if(!X(t?.url)){throw new Error("Pairing code response did not contain a valid pairing URL.")}return t.url}const x=g({meta:{name:"pair",description:"Request a one-time local browser pairing link"},args:{port:{type:"string",description:"Port of the CrewX web server"},open:{type:"boolean",description:"Open the pairing link in a browser",default:false},help:{type:"boolean",alias:"h",description:"Show this help"}},async run({args:e}){if(e.help){const n=await v(x);process.stdout.write(n+"\n");process.exit(0)}const r=new Set(["_","port","open","help","h"]);for(const n of Object.keys(e)){if(!r.has(n)){console.error(`\u274C Unknown option for "crewx pair": --${n}`);console.error(" Run `crewx pair --help` for usage.");process.exit(2)}}const o=e.port===void 0?void 0:I(e.port);let t;let i;try{t=$({port:o});i=A()}catch(n){console.error(`\u274C ${n instanceof Error?n.message:"Unable to read pairing credential."}`);process.exit(1)}let s;try{s=await D(t,i)}catch(n){console.error(`\u274C ${n instanceof Error?n.message:"Unable to request pairing link."}`);process.exit(1)}process.stdout.write(`${s}
3
+ `);if(e.open){try{const n=(await import("open")).default;await n(s)}catch{console.error("\u274C Could not open the pairing link automatically.");process.exit(1)}}}});const E=g({meta:{name:"serve",description:"Launch CrewX web server"},args:{port:{type:"string",description:"Port to listen on"},token:{type:"string",description:"MCP bearer token"},"token-file":{type:"string",description:"Read token from file"},https:{type:"boolean",description:"Enable HTTPS with auto-generated certificate"},trust:{type:"boolean",description:"Install CA to system trust store (requires --https)"},open:{type:"boolean",description:"Auto-open browser",default:true},help:{type:"boolean",alias:"h",description:"Show this help"}},async run({args:e}){if(e.help){const t=await v(E);process.stdout.write(t+"\n");process.exit(0)}const r=new Set(["_","port","token","token-file","tokenFile","https","trust","open","help","h"]);for(const t of Object.keys(e)){if(!r.has(t)){console.error(`\u274C Unknown option for "crewx serve": --${t}`);console.error(" Run `crewx serve --help` for usage.");process.exit(2)}}if(e.trust&&!e.https){console.error("\u274C --trust requires --https");process.exit(1)}const o=e.port?Number(e.port):void 0;if(e.port&&(!o||o<1||o>65535)){console.error("\u274C Invalid port number. Use 1-65535.");process.exit(1)}L({port:o,token:e.token,tokenFile:e["token-file"],open:e.open,https:e.https,trust:e.trust})}});function W(e){const r=p(m,"..","server.js");const o=f(process.execPath,[r,"cli",...e],{stdio:"inherit",env:{...process.env,NODE_ENV:"production"}});w(o);o.on("exit",t=>process.exit(t??0));o.on("error",t=>{console.error("Failed to run CLI subcommand:",t);process.exit(1)})}N();const B=process.argv.slice(2);const{route:a,routeArgs:u,error:F}=O(B);if(a==="serve"){h(E,{rawArgs:u})}else if(a==="pair"){h(x,{rawArgs:u})}else if(a==="electron"){const e=u.includes("--overlay");const r=p(m,"..","dist-electron",e?"overlay.js":"main.js");const o=q(r,e?[]:[]);if(!o){console.error("");console.error(" \u274C Electron is not installed.");console.error("");console.error(" This command requires Electron. Install it:");console.error("");console.error(" npm install -g electron");console.error(" # or in this project:");console.error(" npm install --save-dev electron");console.error("");console.error(" Alternatively, use: crewx serve (web mode)");console.error("");process.exit(1)}}else if(a==="cli"){W(u)}else if(a==="web-default"){h(E,{rawArgs:["--open",...u]})}else if(a==="error"){console.error(`\u274C ${F}`);process.exit(2)}else{console.error(`\u274C Internal routing error: unknown route "${a}"`);process.exit(1)}
@@ -1,29 +1 @@
1
- /**
2
- * SSOT for launcher-owned flags.
3
- * Imported by bin/crewx-lib.js and bin/crewx.js.
4
- */
5
-
6
- /** Flags owned by the launcher (bin/crewx.js), not the CLI engine. */
7
- export const LAUNCHER_OWNED_FLAGS = new Set([
8
- '--port',
9
- '--no-open',
10
- '--overlay',
11
- '--token',
12
- '--token-file',
13
- ]);
14
-
15
- /**
16
- * Build a hint message for a launcher-owned flag used in wrong context.
17
- * @param {string} flag
18
- * @returns {string}
19
- */
20
- export function buildHintMessage(flag) {
21
- const hints = {
22
- '--port': 'use: crewx serve --port <N>',
23
- '--token': 'use: crewx serve --token <T>',
24
- '--token-file': 'use: crewx serve --token-file <PATH>',
25
- '--no-open': 'use: crewx serve --no-open',
26
- '--overlay': 'use: crewx electron --overlay',
27
- };
28
- return hints[flag] ?? '';
29
- }
1
+ const n=new Set(["--port","--no-open","--overlay","--token","--token-file"]);function r(e){const o={"--port":"use: crewx serve --port <N>","--token":"use: crewx serve --token <T>","--token-file":"use: crewx serve --token-file <PATH>","--no-open":"use: crewx serve --no-open","--overlay":"use: crewx electron --overlay"};return o[e]??""}export{n as LAUNCHER_OWNED_FLAGS,r as buildHintMessage};
package/crewx-host.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require("./dist-server/main.js");