crewx 0.9.0-rc.146 → 0.9.0-rc.147

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 (541) hide show
  1. package/bin/cli-commands.js +1 -38
  2. package/bin/crewx-lib.js +2 -271
  3. package/bin/crewx-ui.js +1 -79
  4. package/bin/crewx.js +2 -361
  5. package/bin/launcher-flags.js +1 -29
  6. package/crewx-host.js +1 -5
  7. package/dist/assets/{GitDiffEditor-BwFarVFb.js → GitDiffEditor-CU7C3NXF.js} +7 -7
  8. package/dist/assets/{MarketPage-BpD0NYUK.js → MarketPage-D3-lVobP.js} +1 -1
  9. package/dist/assets/{PromptTab-Tu6b3P4y.js → PromptTab-DGLMIwI-.js} +1 -1
  10. package/dist/assets/{arc-DqpOTUtv.js → arc-xeudwSkY.js} +1 -1
  11. package/dist/assets/{architectureDiagram-UYN6MBPD-BNow2k_L.js → architectureDiagram-UYN6MBPD-DHCYhe2Z.js} +1 -1
  12. package/dist/assets/{blockDiagram-ZHA2E4KO-C8zBve69.js → blockDiagram-ZHA2E4KO-EJqAr7L7.js} +1 -1
  13. package/dist/assets/{c4Diagram-6F5ED5ID-Cc1KiXtX.js → c4Diagram-6F5ED5ID-DxpOLK-t.js} +1 -1
  14. package/dist/assets/channel-Cdw7OVBQ.js +1 -0
  15. package/dist/assets/{chunk-5HRBRIJM-C0k9ZAT-.js → chunk-5HRBRIJM-DlG92yaY.js} +1 -1
  16. package/dist/assets/{chunk-7U56Z5CX-Z9uS6TDy.js → chunk-7U56Z5CX-BXb7hQNI.js} +1 -1
  17. package/dist/assets/{chunk-ASOPGD6M-BN6HHu0J.js → chunk-ASOPGD6M-BdHu5Via.js} +1 -1
  18. package/dist/assets/{chunk-KFBOBJHC-BYrlBCuI.js → chunk-KFBOBJHC-pvEEjX_1.js} +1 -1
  19. package/dist/assets/{chunk-T2TOU4HS-i8SLlvIV.js → chunk-T2TOU4HS-tIPurPuU.js} +1 -1
  20. package/dist/assets/{chunk-TMUBEWPD-C2ThtHoT.js → chunk-TMUBEWPD-PwJd_log.js} +1 -1
  21. package/dist/assets/classDiagram-LNE6IOMH-DxLg5Oh4.js +1 -0
  22. package/dist/assets/classDiagram-v2-MQ7JQ4JX-DxLg5Oh4.js +1 -0
  23. package/dist/assets/{cssMode-BWAH4ysa.js → cssMode-DDzxGVYR.js} +1 -1
  24. package/dist/assets/{dagre-4EVJKHTY-Bbg5laLS.js → dagre-4EVJKHTY-uex4Jo11.js} +1 -1
  25. package/dist/assets/{diagram-QW4FP2JN-CP7K9xmh.js → diagram-QW4FP2JN-PaorE9Gd.js} +1 -1
  26. package/dist/assets/{erDiagram-6RL3IURR-BWhKPrTY.js → erDiagram-6RL3IURR-m_vEVCyt.js} +1 -1
  27. package/dist/assets/{flowDiagram-7ASYPVHJ-BIXDnV6d.js → flowDiagram-7ASYPVHJ-Dx9ouwck.js} +1 -1
  28. package/dist/assets/{freemarker2-CMAHVUZM.js → freemarker2-Bg_fqaSB.js} +1 -1
  29. package/dist/assets/{ganttDiagram-NTVNEXSI-zdLUY4xX.js → ganttDiagram-NTVNEXSI-DkeZ0zDi.js} +1 -1
  30. package/dist/assets/{gitGraph-YCYPL57B-BCOr73LU.js → gitGraph-YCYPL57B-DV0hCCfJ.js} +1 -1
  31. package/dist/assets/{gitGraphDiagram-NRZ2UAAF-CmV7iwwG.js → gitGraphDiagram-NRZ2UAAF-BvlCxWvR.js} +1 -1
  32. package/dist/assets/{handlebars-C7hjKQpn.js → handlebars-WyHBhz29.js} +1 -1
  33. package/dist/assets/{html-DnzIZNCw.js → html-Db-i8jkn.js} +1 -1
  34. package/dist/assets/{htmlMode-CdSI_ksK.js → htmlMode-BFUOiE00.js} +1 -1
  35. package/dist/assets/{infoDiagram-A4XQUW5V-d-Oe4BJ8.js → infoDiagram-A4XQUW5V-D2S4KSJe.js} +1 -1
  36. package/dist/assets/{javascript-B-eRihcq.js → javascript-DDNLuUm_.js} +1 -1
  37. package/dist/assets/{journeyDiagram-G5WM74LC-BTTrZl59.js → journeyDiagram-G5WM74LC-KUQKHbRp.js} +1 -1
  38. package/dist/assets/{jsonMode-DA2SORt2.js → jsonMode-jawhprRC.js} +1 -1
  39. package/dist/assets/{kanban-definition-QRCXZQQD-BsUkwhZS.js → kanban-definition-QRCXZQQD-BGTbkzzF.js} +1 -1
  40. package/dist/assets/{linear-B7g0AkMJ.js → linear-d2NYD5X1.js} +1 -1
  41. package/dist/assets/{liquid-D6WdELjd.js → liquid-d0cidZM2.js} +1 -1
  42. package/dist/assets/{main-DR8ltN55.js → main-DK36_QRv.js} +460 -460
  43. package/dist/assets/{mdx-BXouQmj9.js → mdx-CzXXpIeL.js} +1 -1
  44. package/dist/assets/{mindmap-definition-GWI6TPTV--Fx3cIso.js → mindmap-definition-GWI6TPTV-B8n6B-Cd.js} +1 -1
  45. package/dist/assets/{pieDiagram-YF2LJOPJ-96nEqRLQ.js → pieDiagram-YF2LJOPJ-Dx4HkGUa.js} +1 -1
  46. package/dist/assets/{python-BSbm0gVv.js → python-BG69Zd1b.js} +1 -1
  47. package/dist/assets/{quadrantDiagram-OS5C2QUG-DaPjN4y-.js → quadrantDiagram-OS5C2QUG-BkQdcSzs.js} +1 -1
  48. package/dist/assets/{razor-ROGZokQz.js → razor-5bsOwchm.js} +1 -1
  49. package/dist/assets/{requirementDiagram-MIRIMTAZ-Rf044HhI.js → requirementDiagram-MIRIMTAZ-D6hb4DpM.js} +1 -1
  50. package/dist/assets/{sankeyDiagram-Y46BX6SQ-DiCe9Xjb.js → sankeyDiagram-Y46BX6SQ-CHHLXdJe.js} +1 -1
  51. package/dist/assets/{sequenceDiagram-G6AWOVSC-mEYk003A.js → sequenceDiagram-G6AWOVSC-CJT11r_U.js} +1 -1
  52. package/dist/assets/{stateDiagram-MAYHULR4-Ci4WYula.js → stateDiagram-MAYHULR4-CF8Tbu22.js} +1 -1
  53. package/dist/assets/stateDiagram-v2-4JROLMXI-BxfSbrwl.js +1 -0
  54. package/dist/assets/{timeline-definition-U7ZMHBDA-vEh01Xjd.js → timeline-definition-U7ZMHBDA-CXz5jRph.js} +1 -1
  55. package/dist/assets/{transformers.web-Dla8T0ND.js → transformers.web-DVa2WON3.js} +1 -1
  56. package/dist/assets/{tsMode-CDAzNI0l.js → tsMode-DD_uH1IU.js} +1 -1
  57. package/dist/assets/{typescript-BtiDrkmJ.js → typescript-utgvRMhy.js} +1 -1
  58. package/dist/assets/{xml-C0Wa-K83.js → xml-D_4kFPuV.js} +1 -1
  59. package/dist/assets/{xychartDiagram-6QU3TZC5-BExthcqI.js → xychartDiagram-6QU3TZC5-6vVTyCZb.js} +1 -1
  60. package/dist/assets/{yaml-DlIjsQR6.js → yaml-P_n-Cm4B.js} +1 -1
  61. package/dist/index.html +2 -2
  62. package/dist/ui-build.json +1 -1
  63. package/dist-server/__stubs__/ccusage-codex.js +1 -8
  64. package/dist-server/adapters/adapter.module.js +1 -35
  65. package/dist-server/adapters/adapter.service.js +1 -79
  66. package/dist-server/adapters/http-router.service.js +1 -91
  67. package/dist-server/app.module.js +1 -158
  68. package/dist-server/bootstrap/browser-open.js +1 -33
  69. package/dist-server/bootstrap/codex-writable-roots.js +1 -111
  70. package/dist-server/bootstrap/crewx-server.js +1 -115
  71. package/dist-server/bootstrap/env.js +1 -45
  72. package/dist-server/bootstrap/tls.js +1 -885
  73. package/dist-server/common/analytics.client.js +1 -180
  74. package/dist-server/common/analytics.module.js +1 -21
  75. package/dist-server/common/cache/provider-limit-cache.js +1 -474
  76. package/dist-server/common/cache-db.js +3 -221
  77. package/dist-server/common/cors.js +1 -15
  78. package/dist-server/common/crewx-workspace-root.js +1 -42
  79. package/dist-server/common/current-user.js +1 -14
  80. package/dist-server/common/decorator/cached.decorator.js +1 -35
  81. package/dist-server/common/decorator/skip-request-log.decorator.js +1 -8
  82. package/dist-server/common/decorators/project.decorator.js +1 -21
  83. package/dist-server/common/decorators/workspace.decorator.js +1 -24
  84. package/dist-server/common/device-id.js +1 -33
  85. package/dist-server/common/guard/request-log-metadata.guard.js +1 -58
  86. package/dist-server/common/interceptor/api-id-header.interceptor.js +1 -53
  87. package/dist-server/common/interceptor/http-logging.interceptor.js +1 -393
  88. package/dist-server/common/limits/defaults.js +1 -15
  89. package/dist-server/common/limits/limits-provider.js +1 -6
  90. package/dist-server/common/limits/limits.controller.js +1 -38
  91. package/dist-server/common/limits/limits.module.js +1 -24
  92. package/dist-server/common/limits/local-limits.provider.js +1 -27
  93. package/dist-server/common/mcp-app-sandbox-boundary.js +5 -188
  94. package/dist-server/common/mcp-app-sandbox-contract.js +1 -802
  95. package/dist-server/common/middleware/request-log-lifecycle.middleware.js +1 -65
  96. package/dist-server/common/middleware/workspace.middleware.js +1 -210
  97. package/dist-server/common/pending-instruction.js +1 -27
  98. package/dist-server/common/product-app-bundle.generated.js +1 -7
  99. package/dist-server/common/product-app-bundle.js +1 -54
  100. package/dist-server/common/repository.exception-filter.js +1 -48
  101. package/dist-server/common/request-log/request-log-context.js +1 -138
  102. package/dist-server/common/request-log/request-log-principal.js +1 -75
  103. package/dist-server/common/security/instruction-sanitizer.js +1 -191
  104. package/dist-server/common/security/secret-mask.js +1 -48
  105. package/dist-server/common/task-display-provider.js +1 -61
  106. package/dist-server/common/task-error-projection.js +1 -416
  107. package/dist-server/common/task-log/progress-steps.js +1 -70
  108. package/dist-server/common/task-log/provider-resume.js +1 -406
  109. package/dist-server/common/task-log/public-log-projection.fixtures.js +1 -153
  110. package/dist-server/common/task-log/public-log-projection.js +1 -196
  111. package/dist-server/common/task-log/public-log-projection.past-tool-use.fixtures.js +1 -242
  112. package/dist-server/common/task-log/stdout-json-fallback.js +1 -10
  113. package/dist-server/common/task-result-projection.js +1 -25
  114. package/dist-server/common/task-stop.js +1 -44
  115. package/dist-server/common/task-terminal-reason.js +1 -14
  116. package/dist-server/common/task-usage-accounting.js +1 -34
  117. package/dist-server/common/ui/derive-ui-actor.js +1 -39
  118. package/dist-server/common/ui/resolve-task-actor.js +1 -37
  119. package/dist-server/common/ui/ui-runtime-http-error.js +1 -48
  120. package/dist-server/common/validation.pipe.js +1 -79
  121. package/dist-server/common/workspace-context.store.js +1 -25
  122. package/dist-server/domain/account/account-auth-url.js +1 -17
  123. package/dist-server/domain/account/account-error.constants.js +1 -23
  124. package/dist-server/domain/account/account-error.exception-filter.js +1 -32
  125. package/dist-server/domain/account/account-profile.service.js +1 -106
  126. package/dist-server/domain/account/account-session.guard.js +1 -34
  127. package/dist-server/domain/account/account.controller.js +1 -244
  128. package/dist-server/domain/account/account.module.js +1 -95
  129. package/dist-server/domain/account/auth-json.store.js +1 -45
  130. package/dist-server/domain/account/auth-json.types.js +1 -2
  131. package/dist-server/domain/account/device-flow.service.js +1 -274
  132. package/dist-server/domain/account/token-refresh.service.js +1 -183
  133. package/dist-server/domain/agent/agent.controller.js +1 -124
  134. package/dist-server/domain/agent/agent.module.js +1 -27
  135. package/dist-server/domain/agent/agent.service.js +1 -1077
  136. package/dist-server/domain/agent/agent.types.js +1 -3
  137. package/dist-server/domain/agent/builtin-agent-loader.js +1 -47
  138. package/dist-server/domain/agent/dto/create-agent.dto.js +1 -94
  139. package/dist-server/domain/agent/dto/preview-prompt.dto.js +1 -77
  140. package/dist-server/domain/agent/dto/provider-meta.dto.js +1 -2
  141. package/dist-server/domain/agent/dto/remote-provider.dto.js +1 -82
  142. package/dist-server/domain/agent/dto/reorder-agents.dto.js +1 -51
  143. package/dist-server/domain/agent/dto/update-agent.dto.js +1 -94
  144. package/dist-server/domain/agent/provider.controller.js +1 -49
  145. package/dist-server/domain/agent/template-processor.service.js +1 -71
  146. package/dist-server/domain/agent-suggestion/agent-suggestion.controller.js +1 -104
  147. package/dist-server/domain/agent-suggestion/agent-suggestion.module.js +1 -27
  148. package/dist-server/domain/agent-suggestion/agent-suggestion.service.js +1 -582
  149. package/dist-server/domain/agent-suggestion/analysis/evidence-json.js +1 -14
  150. package/dist-server/domain/agent-suggestion/analysis/h1-evidence.js +2 -325
  151. package/dist-server/domain/agent-suggestion/analysis/h1-prompt.js +42 -207
  152. package/dist-server/domain/agent-suggestion/analysis/h3-rules.js +1 -85
  153. package/dist-server/domain/agent-suggestion/analysis/index.js +1 -22
  154. package/dist-server/domain/agent-suggestion/analysis/merge3.js +2 -192
  155. package/dist-server/domain/agent-suggestion/analysis/secret-redaction.js +1 -61
  156. package/dist-server/domain/agent-suggestion/analysis/types.js +1 -7
  157. package/dist-server/domain/agent-suggestion/dto/apply-batch.dto.js +1 -26
  158. package/dist-server/domain/agent-suggestion/dto/suggestion-response.dto.js +1 -2
  159. package/dist-server/domain/app/app-list.types.js +1 -9
  160. package/dist-server/domain/app/app.controller.js +1 -53
  161. package/dist-server/domain/app/app.module.js +1 -26
  162. package/dist-server/domain/app/app.service.js +1 -475
  163. package/dist-server/domain/app/dto/app-list.dto.js +1 -2
  164. package/dist-server/domain/app-dev/app-dev.controller.js +1 -342
  165. package/dist-server/domain/app-dev/app-dev.module.js +1 -27
  166. package/dist-server/domain/app-dev/app-dev.service.js +2 -1251
  167. package/dist-server/domain/auth/auth-cookie-policy.js +1 -61
  168. package/dist-server/domain/auth/auth.constants.js +1 -4
  169. package/dist-server/domain/auth/auth.controller.js +1 -233
  170. package/dist-server/domain/auth/auth.module.js +1 -49
  171. package/dist-server/domain/auth/decorators/public.decorator.js +1 -7
  172. package/dist-server/domain/auth/guards/base-auth.guard.js +1 -239
  173. package/dist-server/domain/auth/guards/csrf.guard.js +1 -58
  174. package/dist-server/domain/auth/guards/local-only.guard.js +1 -48
  175. package/dist-server/domain/auth/guards/shortcut-csrf.guard.js +1 -12
  176. package/dist-server/domain/auth/local-pairing.service.js +1 -148
  177. package/dist-server/domain/auth/local-secret.js +1 -251
  178. package/dist-server/domain/auth/local-transport-policy.js +1 -305
  179. package/dist-server/domain/auth/session-store.js +3 -176
  180. package/dist-server/domain/auth/sessions-db.js +2 -86
  181. package/dist-server/domain/auth/utils/ip.utils.js +1 -36
  182. package/dist-server/domain/board/board.controller.js +1 -115
  183. package/dist-server/domain/board/board.module.js +1 -26
  184. package/dist-server/domain/board/board.service.js +1 -747
  185. package/dist-server/domain/board/board.types.js +1 -2
  186. package/dist-server/domain/board/dto/create-board-batch.dto.js +1 -25
  187. package/dist-server/domain/board/dto/create-board.dto.js +1 -54
  188. package/dist-server/domain/board/dto/plan-board.dto.js +1 -24
  189. package/dist-server/domain/board/dto/update-board.dto.js +1 -31
  190. package/dist-server/domain/box/box.controller.js +1 -77
  191. package/dist-server/domain/box/box.module.js +1 -21
  192. package/dist-server/domain/box/box.service.js +1 -97
  193. package/dist-server/domain/box/dto/create-box.dto.js +1 -74
  194. package/dist-server/domain/cli/cli-local-only.guard.js +1 -46
  195. package/dist-server/domain/cli/cli.controller.js +4 -194
  196. package/dist-server/domain/cli/cli.module.js +1 -25
  197. package/dist-server/domain/cli/cli.service.js +3 -1568
  198. package/dist-server/domain/cli/dto/cli-auth-status-query.dto.js +1 -25
  199. package/dist-server/domain/cli/dto/login-cli.dto.js +1 -25
  200. package/dist-server/domain/cli/dto/update-cli.dto.js +1 -31
  201. package/dist-server/domain/cron/cron-bootstrap.service.js +1 -1048
  202. package/dist-server/domain/cron/cron-runtime-host.module.js +1 -41
  203. package/dist-server/domain/cron/cron-runtime-sync.port.js +1 -13
  204. package/dist-server/domain/cron/cron-runtime-sync.service.js +1 -259
  205. package/dist-server/domain/cron/cron.controller.js +1 -182
  206. package/dist-server/domain/cron/cron.module.js +1 -24
  207. package/dist-server/domain/cron/cron.service.js +1 -337
  208. package/dist-server/domain/cron/dto/cron.dto.js +1 -126
  209. package/dist-server/domain/doc/doc.controller.js +1 -307
  210. package/dist-server/domain/doc/doc.module.js +1 -24
  211. package/dist-server/domain/doc/doc.service.js +1 -560
  212. package/dist-server/domain/doc/dto/doc.dto.js +1 -74
  213. package/dist-server/domain/doc/image-constants.js +1 -23
  214. package/dist-server/domain/document/document.controller.js +1 -57
  215. package/dist-server/domain/document/document.module.js +1 -22
  216. package/dist-server/domain/document/document.service.js +7 -274
  217. package/dist-server/domain/document/dto/register-document.dto.js +1 -24
  218. package/dist-server/domain/env/dto/put-env.dto.js +1 -23
  219. package/dist-server/domain/env/env.controller.js +1 -71
  220. package/dist-server/domain/env/env.module.js +1 -22
  221. package/dist-server/domain/env/env.service.js +1 -234
  222. package/dist-server/domain/events/events.module.js +1 -31
  223. package/dist-server/domain/events/server-conversation.plugin.js +1 -51
  224. package/dist-server/domain/events/workspace-event.bus.js +1 -38
  225. package/dist-server/domain/events/workspace-event.types.js +1 -32
  226. package/dist-server/domain/events/workspace-events-test.controller.js +1 -97
  227. package/dist-server/domain/events/workspace-events.controller.js +1 -60
  228. package/dist-server/domain/fs/dto/mkdir-request.dto.js +1 -47
  229. package/dist-server/domain/fs/dto/mkdir-response.dto.js +1 -2
  230. package/dist-server/domain/fs/dto/quick-access.dto.js +1 -2
  231. package/dist-server/domain/fs/dto/tree-node.dto.js +1 -2
  232. package/dist-server/domain/fs/dto/tree-query.dto.js +1 -35
  233. package/dist-server/domain/fs/fs.controller.js +1 -63
  234. package/dist-server/domain/fs/fs.module.js +1 -22
  235. package/dist-server/domain/fs/fs.service.js +1 -304
  236. package/dist-server/domain/git/git.controller.js +1 -180
  237. package/dist-server/domain/git/git.module.js +1 -22
  238. package/dist-server/domain/git/git.service.js +1 -602
  239. package/dist-server/domain/goal/dto/goal.dto.js +1 -49
  240. package/dist-server/domain/goal/goal.controller.js +1 -86
  241. package/dist-server/domain/goal/goal.module.js +1 -22
  242. package/dist-server/domain/goal/goal.service.js +1 -197
  243. package/dist-server/domain/goal/parser/goal-md-parser.js +1 -166
  244. package/dist-server/domain/goal/parser/goal-md-serializer.js +5 -108
  245. package/dist-server/domain/health/health.controller.js +1 -74
  246. package/dist-server/domain/health/health.module.js +1 -22
  247. package/dist-server/domain/health/ui-asset-revision.service.js +1 -40
  248. package/dist-server/domain/knowledge/dto/graph-knowledge.dto.js +1 -27
  249. package/dist-server/domain/knowledge/dto/knowledge.dto.js +1 -71
  250. package/dist-server/domain/knowledge/knowledge.controller.js +1 -122
  251. package/dist-server/domain/knowledge/knowledge.module.js +1 -21
  252. package/dist-server/domain/knowledge/knowledge.service.js +1 -541
  253. package/dist-server/domain/market/__fixtures__/build-fixture.js +1 -118
  254. package/dist-server/domain/market/__fixtures__/marketplace-anonymous-install.contract.js +1 -36
  255. package/dist-server/domain/market/dto/add-registry.dto.js +1 -32
  256. package/dist-server/domain/market/dto/install-apply.dto.js +1 -23
  257. package/dist-server/domain/market/dto/install-cancel.dto.js +1 -25
  258. package/dist-server/domain/market/dto/install-market.dto.js +1 -30
  259. package/dist-server/domain/market/dto/install-plan.dto.js +1 -31
  260. package/dist-server/domain/market/dto/invite-accept.dto.js +1 -25
  261. package/dist-server/domain/market/dto/publish-plan.dto.js +1 -43
  262. package/dist-server/domain/market/dto/publish-run.dto.js +1 -18
  263. package/dist-server/domain/market/dto/publisher-funnel.dto.js +1 -72
  264. package/dist-server/domain/market/dto/publisher-invite.dto.js +1 -50
  265. package/dist-server/domain/market/dto/shr-response.dto.js +1 -20
  266. package/dist-server/domain/market/first-run-event.listener.js +1 -94
  267. package/dist-server/domain/market/install-error.exception-filter.js +1 -94
  268. package/dist-server/domain/market/install-id.validation.js +1 -4
  269. package/dist-server/domain/market/install-plan-expired.exception-filter.js +1 -28
  270. package/dist-server/domain/market/install.service.js +1 -889
  271. package/dist-server/domain/market/market.controller.js +1 -451
  272. package/dist-server/domain/market/market.module.js +1 -184
  273. package/dist-server/domain/market/market.service.js +3 -1808
  274. package/dist-server/domain/market/marketplace-api.client.js +1 -616
  275. package/dist-server/domain/market/marketplace-target.js +1 -35
  276. package/dist-server/domain/market/publish.controller.js +1 -64
  277. package/dist-server/domain/market/publish.service.js +1 -343
  278. package/dist-server/domain/market/publisher-invite-labels-ledger.service.js +2 -174
  279. package/dist-server/domain/market/publisher-invite.service.js +1 -323
  280. package/dist-server/domain/market/sharing-event.client.js +1 -263
  281. package/dist-server/domain/market/sharing-installs-ledger.service.js +1 -303
  282. package/dist-server/domain/market/sharing-updates.service.js +1 -67
  283. package/dist-server/domain/market/source-coordinate.js +1 -72
  284. package/dist-server/domain/market/template-installer.js +2 -1433
  285. package/dist-server/domain/mcp/app-debug-log.js +4 -254
  286. package/dist-server/domain/mcp/browser-session.store.js +5 -297
  287. package/dist-server/domain/mcp/chromex-blacklist.js +1 -26
  288. package/dist-server/domain/mcp/chromex-negotiate.controller.js +1 -77
  289. package/dist-server/domain/mcp/chromex-negotiate.dto.js +1 -95
  290. package/dist-server/domain/mcp/chromex-negotiate.service.js +3 -237
  291. package/dist-server/domain/mcp/crewx-tool.factory.js +1 -269
  292. package/dist-server/domain/mcp/default-apps/shared.js +1 -37
  293. package/dist-server/domain/mcp/dto/open-mcp-app.dto.js +1 -46
  294. package/dist-server/domain/mcp/html-viewer.controller.js +1 -98
  295. package/dist-server/domain/mcp/html-viewer.service.js +1 -415
  296. package/dist-server/domain/mcp/mcp-app-actions.js +1 -1032
  297. package/dist-server/domain/mcp/mcp-app-assets.js +1 -31
  298. package/dist-server/domain/mcp/mcp-app-resource-csp.interceptor.js +1 -85
  299. package/dist-server/domain/mcp/mcp-app-runtime.controller.js +1 -59
  300. package/dist-server/domain/mcp/mcp-app-runtime.service.js +1 -150
  301. package/dist-server/domain/mcp/mcp-app-sandbox.service.js +2 -937
  302. package/dist-server/domain/mcp/mcp-app-workspace-asset-catalog-resolver.js +1 -94
  303. package/dist-server/domain/mcp/mcp-apps.js +1 -2983
  304. package/dist-server/domain/mcp/mcp-auth.guard.js +1 -65
  305. package/dist-server/domain/mcp/mcp.constants.js +1 -22
  306. package/dist-server/domain/mcp/mcp.controller.js +1 -128
  307. package/dist-server/domain/mcp/mcp.dto.js +1 -12
  308. package/dist-server/domain/mcp/mcp.module.js +1 -70
  309. package/dist-server/domain/mcp/mcp.service.js +1 -1882
  310. package/dist-server/domain/mcp/product-app-bundle-assets.js +1 -65
  311. package/dist-server/domain/mcp/skill-backend.port.js +1 -1123
  312. package/dist-server/domain/mcp/tool-router.service.js +1 -120
  313. package/dist-server/domain/mcp/ui-content-channel.service.js +1 -220
  314. package/dist-server/domain/message/dto/list-messages.dto.js +1 -57
  315. package/dist-server/domain/message/dto/send-message.dto.js +1 -208
  316. package/dist-server/domain/message/message.controller.js +1 -186
  317. package/dist-server/domain/message/message.module.js +1 -27
  318. package/dist-server/domain/message/message.multipart.js +1 -295
  319. package/dist-server/domain/message/message.service.js +9 -773
  320. package/dist-server/domain/notification/dto/create-notification.dto.js +1 -79
  321. package/dist-server/domain/notification/dto/list-notifications.dto.js +1 -27
  322. package/dist-server/domain/notification/notification.controller.js +1 -135
  323. package/dist-server/domain/notification/notification.module.js +1 -34
  324. package/dist-server/domain/notification/notification.service.js +1 -65
  325. package/dist-server/domain/onboarding/onboarding.controller.js +1 -97
  326. package/dist-server/domain/onboarding/onboarding.module.js +1 -23
  327. package/dist-server/domain/onboarding/onboarding.service.js +1 -106
  328. package/dist-server/domain/onboarding/onboarding.types.js +1 -2
  329. package/dist-server/domain/onboarding/presets/custom.js +1 -10
  330. package/dist-server/domain/onboarding/presets/dev-team.js +1 -41
  331. package/dist-server/domain/onboarding/presets/index.js +1 -15
  332. package/dist-server/domain/onboarding/presets/marketing-team.js +1 -29
  333. package/dist-server/domain/onboarding/presets/planning-team.js +1 -29
  334. package/dist-server/domain/onboarding/presets/solo.js +1 -17
  335. package/dist-server/domain/planner/dto/planner.dto.js +1 -58
  336. package/dist-server/domain/planner/planner.controller.js +1 -74
  337. package/dist-server/domain/planner/planner.module.js +1 -22
  338. package/dist-server/domain/planner/planner.service.js +1 -272
  339. package/dist-server/domain/project/dto/create-project-ledger.dto.js +1 -89
  340. package/dist-server/domain/project/dto/create-project.dto.js +1 -46
  341. package/dist-server/domain/project/dto/update-project.dto.js +1 -60
  342. package/dist-server/domain/project/project-ledger.controller.js +1 -72
  343. package/dist-server/domain/project/project-ledger.service.js +1 -124
  344. package/dist-server/domain/project/project.controller.js +1 -129
  345. package/dist-server/domain/project/project.module.js +1 -24
  346. package/dist-server/domain/project/project.service.js +1 -173
  347. package/dist-server/domain/settings/local-ai-server/local-ai-server.controller.js +1 -96
  348. package/dist-server/domain/settings/local-ai-server/local-ai-server.dto.js +1 -37
  349. package/dist-server/domain/settings/local-ai-server/local-ai-server.network-policy.js +1 -416
  350. package/dist-server/domain/settings/local-ai-server/local-ai-server.service.js +1 -298
  351. package/dist-server/domain/settings/local-ai-server/local-ai-server.types.js +1 -10
  352. package/dist-server/domain/settings/request-log-maintenance.js +1 -131
  353. package/dist-server/domain/settings/request-log-maintenance.service.js +1 -208
  354. package/dist-server/domain/settings/request-log-maintenance.worker.js +1 -58
  355. package/dist-server/domain/settings/request-log-prune.js +6 -191
  356. package/dist-server/domain/settings/request-log-rollup.js +8 -373
  357. package/dist-server/domain/settings/request-log-store.js +3 -118
  358. package/dist-server/domain/settings/request-logs.controller.js +1 -81
  359. package/dist-server/domain/settings/request-logs.service.js +7 -300
  360. package/dist-server/domain/settings/request-logs.types.js +1 -5
  361. package/dist-server/domain/settings/settings.controller.js +1 -63
  362. package/dist-server/domain/settings/settings.module.js +1 -59
  363. package/dist-server/domain/settings/settings.service.js +1 -645
  364. package/dist-server/domain/settings/storage-retention.js +16 -980
  365. package/dist-server/domain/settings/storage-retention.worker.js +5 -327
  366. package/dist-server/domain/settings/storage.controller.js +1 -95
  367. package/dist-server/domain/settings/storage.service.js +1 -276
  368. package/dist-server/domain/settings/storage.types.js +1 -2
  369. package/dist-server/domain/system/desktop-control.guard.js +1 -67
  370. package/dist-server/domain/system/shortcut.service.js +1 -353
  371. package/dist-server/domain/system/shortcut.types.js +1 -8
  372. package/dist-server/domain/system/shutdown.dto.js +1 -22
  373. package/dist-server/domain/system/system.controller.js +5 -268
  374. package/dist-server/domain/system/system.module.js +1 -38
  375. package/dist-server/domain/system/system.service.js +1 -50
  376. package/dist-server/domain/system/task-ownership.js +1 -32
  377. package/dist-server/domain/system/update-gate.service.js +1 -234
  378. package/dist-server/domain/task/child-task-projection.js +1 -111
  379. package/dist-server/domain/task/dto/all-tasks.dto.js +1 -55
  380. package/dist-server/domain/task/dto/descendants.dto.js +1 -46
  381. package/dist-server/domain/task/dto/list-tasks.dto.js +1 -69
  382. package/dist-server/domain/task/dto/search-tasks.dto.js +1 -66
  383. package/dist-server/domain/task/dto/send-message.dto.js +1 -41
  384. package/dist-server/domain/task/dto/task-prompt.dto.js +1 -40
  385. package/dist-server/domain/task/dto/task-rating.dto.js +1 -33
  386. package/dist-server/domain/task/dto/task-status.dto.js +1 -34
  387. package/dist-server/domain/task/dto/workspace-usage.dto.js +1 -38
  388. package/dist-server/domain/task/prompt-composition.js +1 -443
  389. package/dist-server/domain/task/task-execution-path.js +1 -47
  390. package/dist-server/domain/task/task.constants.js +1 -5
  391. package/dist-server/domain/task/task.controller.js +1 -348
  392. package/dist-server/domain/task/task.module.js +1 -25
  393. package/dist-server/domain/task/task.service.js +3 -1871
  394. package/dist-server/domain/terminal/terminal-access-policy.js +1 -0
  395. package/dist-server/domain/terminal/terminal-audit.service.js +4 -78
  396. package/dist-server/domain/terminal/terminal-csp.js +1 -37
  397. package/dist-server/domain/terminal/terminal-local-only.guard.js +1 -56
  398. package/dist-server/domain/terminal/terminal-session.service.js +1 -372
  399. package/dist-server/domain/terminal/terminal-ticket.service.js +1 -108
  400. package/dist-server/domain/terminal/terminal-ws.service.js +1 -242
  401. package/dist-server/domain/terminal/terminal.controller.js +1 -96
  402. package/dist-server/domain/terminal/terminal.module.js +1 -36
  403. package/dist-server/domain/thread/dto/build-context.dto.js +1 -42
  404. package/dist-server/domain/thread/dto/highlight.dto.js +1 -114
  405. package/dist-server/domain/thread/dto/list-messages.dto.js +1 -49
  406. package/dist-server/domain/thread/dto/list-threads.dto.js +1 -117
  407. package/dist-server/domain/thread/dto/reorder-pins.dto.js +1 -22
  408. package/dist-server/domain/thread/dto/search-threads.dto.js +1 -13
  409. package/dist-server/domain/thread/dto/thread-label.dto.js +1 -104
  410. package/dist-server/domain/thread/dto/timeline-query.dto.js +1 -51
  411. package/dist-server/domain/thread/dto/update-thread.dto.js +1 -67
  412. package/dist-server/domain/thread/overdrive.types.js +1 -38
  413. package/dist-server/domain/thread/thread-highlight-flight.service.js +1 -53
  414. package/dist-server/domain/thread/thread-highlight-regeneration.service.js +1 -277
  415. package/dist-server/domain/thread/thread-highlight-trigger.service.js +1 -722
  416. package/dist-server/domain/thread/thread-highlight.constants.js +1 -5
  417. package/dist-server/domain/thread/thread-label.controller.js +1 -104
  418. package/dist-server/domain/thread/thread-label.service.js +1 -249
  419. package/dist-server/domain/thread/thread-preview.controller.js +1 -44
  420. package/dist-server/domain/thread/thread-title.backfill.js +1 -42
  421. package/dist-server/domain/thread/thread-title.types.js +1 -27
  422. package/dist-server/domain/thread/thread.controller.js +1 -291
  423. package/dist-server/domain/thread/thread.module.js +1 -40
  424. package/dist-server/domain/thread/thread.service.js +6 -1397
  425. package/dist-server/domain/token/token.controller.js +1 -73
  426. package/dist-server/domain/token/token.dto.js +1 -56
  427. package/dist-server/domain/token/token.module.js +1 -26
  428. package/dist-server/domain/token/token.service.js +3 -437
  429. package/dist-server/domain/usage/codex-rate-limits.client.js +2 -513
  430. package/dist-server/domain/usage/usage.controller.js +1 -190
  431. package/dist-server/domain/usage/usage.module.js +1 -22
  432. package/dist-server/domain/usage/usage.service.js +1 -1727
  433. package/dist-server/domain/usage/usage.types.js +1 -4
  434. package/dist-server/domain/usage-report/dto/usage-report.dto.js +1 -2
  435. package/dist-server/domain/usage-report/report-findings.js +1 -109
  436. package/dist-server/domain/usage-report/usage-report.controller.js +1 -72
  437. package/dist-server/domain/usage-report/usage-report.module.js +1 -23
  438. package/dist-server/domain/usage-report/usage-report.service.js +1 -140
  439. package/dist-server/domain/wbs/wbs.controller.js +1 -51
  440. package/dist-server/domain/wbs/wbs.module.js +1 -21
  441. package/dist-server/domain/wbs/wbs.service.js +1 -94
  442. package/dist-server/domain/wi/dto/create-wi.dto.js +1 -67
  443. package/dist-server/domain/wi/dto/update-wi-status.dto.js +1 -24
  444. package/dist-server/domain/wi/wi.controller.js +1 -112
  445. package/dist-server/domain/wi/wi.module.js +1 -22
  446. package/dist-server/domain/wi/wi.service.js +2 -620
  447. package/dist-server/domain/wi/wi.types.js +1 -2
  448. package/dist-server/domain/workflow/chat-card-proof.service.js +1 -97
  449. package/dist-server/domain/workflow/dto/thread-app-launch.dto.js +1 -49
  450. package/dist-server/domain/workflow/thread-app-launch.controller.js +1 -330
  451. package/dist-server/domain/workflow/ui-instance.controller.js +1 -1574
  452. package/dist-server/domain/workflow/workflow-approval-v2.js +1 -748
  453. package/dist-server/domain/workflow/workflow.controller.js +1 -165
  454. package/dist-server/domain/workflow/workflow.module.js +1 -80
  455. package/dist-server/domain/workflow/workflow.service.js +3 -1221
  456. package/dist-server/domain/workspace/dto/create-workspace.dto.js +1 -62
  457. package/dist-server/domain/workspace/dto/rename-workspace.dto.js +1 -27
  458. package/dist-server/domain/workspace/dto/switch-workspace.dto.js +1 -32
  459. package/dist-server/domain/workspace/dto/workspace-info.dto.js +1 -2
  460. package/dist-server/domain/workspace/workspace.controller.js +1 -126
  461. package/dist-server/domain/workspace/workspace.module.js +1 -24
  462. package/dist-server/domain/workspace/workspace.service.js +1 -362
  463. package/dist-server/main.js +1 -337
  464. package/dist-server/modules/crewx-pool.service.js +1 -724
  465. package/dist-server/modules/crewx.module.js +1 -59
  466. package/dist-server/modules/workspace-config.store.js +1 -111
  467. package/dist-server/repository/agent-suggestion.repository.js +1 -39
  468. package/dist-server/repository/base-sqlite.repository.js +1 -18
  469. package/dist-server/repository/box.repository.js +1 -99
  470. package/dist-server/repository/message.repository.js +1 -22
  471. package/dist-server/repository/notification.repository.js +1 -33
  472. package/dist-server/repository/project.repository.js +1 -61
  473. package/dist-server/repository/repository.module.js +1 -44
  474. package/dist-server/repository/request-log.repository.js +2 -103
  475. package/dist-server/repository/task.repository.js +9 -1001
  476. package/dist-server/repository/thread-label.repository.js +1 -86
  477. package/dist-server/repository/thread.repository.js +46 -887
  478. package/dist-server/repository/usage-limit-snapshot.repository.js +1 -24
  479. package/dist-server/repository/usage-report.repository.js +1 -27
  480. package/dist-server/shared/attachment-path.js +1 -50
  481. package/dist-server/shared/attachment-policy.js +1 -191
  482. package/dist-server/shared/crewx-home.js +1 -8
  483. package/dist-server/shared/crewx-state.js +1 -66
  484. package/dist-server/shared/doc-heading.js +1 -69
  485. package/dist-server/shared/marketplace-api.constants.js +1 -12
  486. package/dist-server/shared/thread-label.js +1 -8
  487. package/dist-server/shared/workflow-run.contract.js +1 -8
  488. package/dist-server/test-utils/compat-database.js +1 -30
  489. package/dist-server/test-utils/request-log-fixtures.js +6 -134
  490. package/dist-server/utils/tokenizer.js +1 -8
  491. package/package.json +24 -20
  492. package/packages/cli/dist/bootstrap/codex-writable-roots.js +1 -113
  493. package/packages/cli/dist/bootstrap/crewx-cli.js +1 -84
  494. package/packages/cli/dist/builtin.js +5 -132
  495. package/packages/cli/dist/commands/agent.js +4 -118
  496. package/packages/cli/dist/commands/cal.js +2 -44
  497. package/packages/cli/dist/commands/db.js +4 -602
  498. package/packages/cli/dist/commands/detached.js +15 -620
  499. package/packages/cli/dist/commands/doctor.js +4 -649
  500. package/packages/cli/dist/commands/emit-trailer.js +2 -33
  501. package/packages/cli/dist/commands/execute.js +15 -294
  502. package/packages/cli/dist/commands/hook/command-marker.js +1 -5
  503. package/packages/cli/dist/commands/hook/install.js +8 -189
  504. package/packages/cli/dist/commands/hook/paths.js +1 -94
  505. package/packages/cli/dist/commands/hook/status.js +1 -86
  506. package/packages/cli/dist/commands/hook/uninstall.js +1 -71
  507. package/packages/cli/dist/commands/hook-dispatch.js +2 -180
  508. package/packages/cli/dist/commands/init.js +31 -437
  509. package/packages/cli/dist/commands/kill.js +1 -11
  510. package/packages/cli/dist/commands/log.js +3 -96
  511. package/packages/cli/dist/commands/parse-agent-message.js +1 -52
  512. package/packages/cli/dist/commands/parse-common-flags.js +3 -212
  513. package/packages/cli/dist/commands/ps.js +2 -117
  514. package/packages/cli/dist/commands/publish.js +7 -283
  515. package/packages/cli/dist/commands/query.js +16 -292
  516. package/packages/cli/dist/commands/registry.js +1 -33
  517. package/packages/cli/dist/commands/resolve-prompt.js +3 -76
  518. package/packages/cli/dist/commands/resolve-recipient.js +3 -47
  519. package/packages/cli/dist/commands/restart.js +18 -172
  520. package/packages/cli/dist/commands/result.js +1 -209
  521. package/packages/cli/dist/commands/shortcut.js +4 -253
  522. package/packages/cli/dist/commands/slack.js +16 -560
  523. package/packages/cli/dist/commands/stop.js +8 -119
  524. package/packages/cli/dist/commands/write-output.js +1 -24
  525. package/packages/cli/dist/index.js +1 -8
  526. package/packages/cli/dist/logging.js +10 -87
  527. package/packages/cli/dist/main.js +6 -289
  528. package/packages/cli/dist/register-builtin-tools.js +1 -9
  529. package/packages/cli/dist/slack/file-download.js +1 -134
  530. package/packages/cli/dist/slack/markdown.js +1 -33
  531. package/packages/cli/dist/utils/env-defaults.js +1 -15
  532. package/packages/cli/dist/utils/inherited-trace.js +1 -65
  533. package/packages/cli/dist/utils/product-package-root.js +1 -39
  534. package/packages/cli/dist/utils/sdk-compat.js +1 -120
  535. package/packages/cli/dist/utils/version.js +1 -28
  536. package/packages/cli/package.json +3 -2
  537. package/server.js +2 -110
  538. package/dist/assets/channel-DRq6aYdh.js +0 -1
  539. package/dist/assets/classDiagram-LNE6IOMH-DxYwZ1hr.js +0 -1
  540. package/dist/assets/classDiagram-v2-MQ7JQ4JX-DxYwZ1hr.js +0 -1
  541. package/dist/assets/stateDiagram-v2-4JROLMXI-Daw5Msh1.js +0 -1
@@ -1,38 +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', 'stop', 'kill', 'result', 'log', 'restart',
18
-
19
- // Diagnostics / Init / DB
20
- 'doctor', 'init',
21
- 'db',
22
- 'help',
23
- 'shortcut',
24
- 'publish',
25
-
26
- // Built-in tools
27
- 'memory', 'search', 'doc', 'wbs', 'cron', 'workflow', 'skill', 'dreaming',
28
- 'wi', 'chromex', 'notify', 'app',
29
-
30
- // Hook platform
31
- 'hook', 'hook-dispatch',
32
-
33
- // Slack / Adapters
34
- 'slack', 'slack:files',
35
-
36
- // Not-yet-migrated
37
- 'template', 'templates', 'chat', 'mcp',
38
- ]);
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,271 +1,2 @@
1
- /**
2
- * crewx launcher library — testable pure-logic functions extracted from crewx.js.
3
- */
4
- import { lstatSync, mkdirSync, readFileSync } from 'fs';
5
- import { homedir } from 'os';
6
- import { join } from 'path';
7
- import { getCrewxHome } from '@crewx/sdk';
8
- import { CLI_SUBCOMMANDS } from './cli-commands.js';
9
- import { buildHintMessage } from './launcher-flags.js';
10
-
11
- const PAIRING_CREDENTIAL_MODE = 0o600;
12
- const PAIRING_CREDENTIAL_NAME = 'pairing.token';
13
- const DEFAULT_PAIRING_ENDPOINT = 'http://localhost:8150';
14
- // Mirrors the WI-028 packages/built-in/shared/crewx-api-credential contract.
15
- const PAIRING_CREDENTIAL_PATTERN = /^crewxrt_pairing_[0-9a-f]{64}$/;
16
-
17
-
18
- function currentUid() {
19
- return process.platform === 'win32' || typeof process.getuid !== 'function'
20
- ? undefined
21
- : process.getuid();
22
- }
23
-
24
- /**
25
- * Return the canonical runtime credential path used by the local server.
26
- * The path is intentionally resolved through the SDK's shared home helper.
27
- *
28
- * @returns {string}
29
- */
30
- export function pairingCredentialPath() {
31
- return join(getCrewxHome(), 'auth', 'runtime', PAIRING_CREDENTIAL_NAME);
32
- }
33
-
34
- /**
35
- * Read the purpose-scoped pairing credential with the WI-028 file contract.
36
- * Missing, unreadable, or insecure files throw before any HTTP request can be
37
- * made. Error messages never include the credential value.
38
- *
39
- * @returns {string}
40
- */
41
- export function readPairingCredential() {
42
- const filePath = pairingCredentialPath();
43
- let fileStat;
44
- try {
45
- fileStat = lstatSync(filePath);
46
- } catch (error) {
47
- if (error?.code === 'ENOENT') {
48
- throw new Error('Pairing runtime credential is missing; start the CrewX server once to create pairing.token.');
49
- }
50
- throw new Error('Pairing runtime credential is not readable.');
51
- }
52
-
53
- if (!fileStat.isFile()) {
54
- throw new Error('Pairing runtime credential is not a regular file.');
55
- }
56
- if (process.platform !== 'win32' && (fileStat.mode & 0o777) !== PAIRING_CREDENTIAL_MODE) {
57
- throw new Error('Pairing runtime credential permissions are invalid; expected mode 0600.');
58
- }
59
- const uid = currentUid();
60
- if (uid !== undefined && fileStat.uid !== uid) {
61
- throw new Error('Pairing runtime credential must be owned by the current user.');
62
- }
63
-
64
- let credential;
65
- try {
66
- credential = readFileSync(filePath, 'utf8');
67
- } catch {
68
- throw new Error('Pairing runtime credential is not readable.');
69
- }
70
- if (!PAIRING_CREDENTIAL_PATTERN.test(credential)) {
71
- throw new Error('Pairing runtime credential has an invalid format.');
72
- }
73
- return credential;
74
- }
75
-
76
- /**
77
- * Resolve the server endpoint for `crewx pair`.
78
- * Explicit --port wins over CREWX_ENDPOINT, which wins over the local default.
79
- *
80
- * @param {{ port?: number, env?: NodeJS.ProcessEnv }} options
81
- * @returns {string}
82
- */
83
- export function resolvePairEndpoint({ port, env = process.env } = {}) {
84
- const rawEndpoint = port === undefined
85
- ? (env.CREWX_ENDPOINT?.trim() || DEFAULT_PAIRING_ENDPOINT)
86
- : `http://localhost:${port}`;
87
- let endpoint;
88
- try {
89
- endpoint = new URL(rawEndpoint);
90
- } catch {
91
- throw new Error('Invalid CrewX endpoint. Use an http:// or https:// URL.');
92
- }
93
- if (endpoint.protocol !== 'http:' && endpoint.protocol !== 'https:') {
94
- throw new Error('Invalid CrewX endpoint. Use an http:// or https:// URL.');
95
- }
96
- if (endpoint.username || endpoint.password || endpoint.search || endpoint.hash) {
97
- throw new Error('Invalid CrewX endpoint. Do not include credentials, query, or fragment data.');
98
- }
99
- return endpoint.toString().replace(/\/$/, '');
100
- }
101
-
102
-
103
- /**
104
- * Parse --port option from extra CLI args.
105
- * Backward-compatible thin wrapper; kept for existing callers.
106
- *
107
- * @param {string[]} extraArgs
108
- * @returns {{ port: number } | { error: string } | null}
109
- */
110
- export function parseWebPort(extraArgs) {
111
- const portIdx = extraArgs.indexOf('--port');
112
- if (portIdx === -1) return null;
113
- const portVal = Number(extraArgs[portIdx + 1]);
114
- if (!portVal || portVal < 1 || portVal > 65535) {
115
- return { error: 'Invalid port number. Use 1-65535.' };
116
- }
117
- return { port: portVal };
118
- }
119
-
120
- /**
121
- * Determine the route based on CLI arguments.
122
- *
123
- * Priority order:
124
- * 1. --help/-h, --version/-v → CLI (global options handled by CLI engine)
125
- * 2. Known CLI subcommand → CLI
126
- * 3. 'serve' verb → serve
127
- * 4. 'pair' verb → pair
128
- * 5. 'electron' verb → electron
129
- * 6. No arguments → web-default (browser auto-open)
130
- * 7. Unknown first argument → error with hint
131
- *
132
- * @param {string[]} args - process.argv.slice(2)
133
- * @returns {{ route: string, routeArgs: string[], error?: string }}
134
- */
135
- export function resolveRoute(args) {
136
- const firstArg = args[0];
137
-
138
- // 1. Global options → CLI engine handles them
139
- if (firstArg === '--help' || firstArg === '-h') {
140
- return { route: 'cli', routeArgs: args };
141
- }
142
- if (firstArg === '--version' || firstArg === '-v') {
143
- return { route: 'cli', routeArgs: args };
144
- }
145
-
146
- // 2. CLI subcommand whitelist → CLI engine
147
- if (firstArg !== undefined && CLI_SUBCOMMANDS.has(firstArg)) {
148
- return { route: 'cli', routeArgs: args };
149
- }
150
-
151
- // 3. New verb: serve
152
- if (firstArg === 'serve') {
153
- return { route: 'serve', routeArgs: args.slice(1) };
154
- }
155
-
156
- // 4. Local browser pairing code requester
157
- if (firstArg === 'pair') {
158
- return { route: 'pair', routeArgs: args.slice(1) };
159
- }
160
-
161
- // 5. New verb: electron
162
- if (firstArg === 'electron') {
163
- return { route: 'electron', routeArgs: args.slice(1) };
164
- }
165
-
166
- // 6. No arguments → web default
167
- if (firstArg === undefined) {
168
- return { route: 'web-default', routeArgs: [] };
169
- }
170
-
171
- // 6. Unknown → error with hint
172
- const hint = buildHintMessage(firstArg);
173
- const hintSuffix = hint ? `\n ${hint}` : '\n Run `crewx --help` for usage.';
174
- return {
175
- route: 'error',
176
- error: `Unknown command or option: "${firstArg}"${hintSuffix}`,
177
- routeArgs: args,
178
- };
179
- }
180
-
181
- /**
182
- * Ensure CrewX directories exist before any subcommand runs.
183
- * - ~/.crewx (crewx home) — config + DB (crewx.db)
184
- * - ~/crewx (crewx workspaces dir) — user-facing workspaces collection,
185
- * surfaced as "워크스페이스" Quick Access shortcut
186
- * in DirectoryPickerDialog (WKSUI001-NEW).
187
- *
188
- * The two are completely different directories — never conflate them.
189
- * Both calls are idempotent (mkdir recursive). Failures are warned to stderr
190
- * but never abort the launcher.
191
- */
192
- export function ensureCrewxDirs() {
193
- const crewxHome = join(homedir(), '.crewx'); // config/DB
194
- const crewxWorkspaces = join(homedir(), 'crewx'); // workspaces collection
195
-
196
- const crewxTls = join(crewxHome, 'tls');
197
-
198
- for (const dir of [crewxHome, crewxWorkspaces, crewxTls]) {
199
- try {
200
- mkdirSync(dir, { recursive: true });
201
- } catch (err) {
202
- console.warn(`[crewx] Failed to ensure ${dir}: ${err?.message ?? err}`);
203
- }
204
- }
205
- }
206
-
207
- /**
208
- * Forward signals to a child process for clean shutdown.
209
- *
210
- * Uses an `exited` flag (set by the child's 'exit' event) instead of
211
- * `child.killed`, because `child.killed` becomes `true` immediately after
212
- * calling `child.kill()` — even if the child process is still running.
213
- * This ensures the SIGKILL escalation timer can actually fire.
214
- *
215
- * On Windows, SIGTERM is equivalent to an immediate kill.
216
- *
217
- * @param {import('child_process').ChildProcess} child
218
- * @param {{ escalateKill?: boolean, detached?: boolean }} options
219
- */
220
- export function setupSignalForwarding(child, { escalateKill = false, detached = false } = {}) {
221
- let exited = false;
222
- let escalationScheduled = false;
223
-
224
- child.on('exit', () => {
225
- exited = true;
226
- });
227
-
228
- // When detached, the child runs in its own process group.
229
- // Use process.kill(-pid) to kill the entire group (Electron + GPU helpers).
230
- // When not detached, use child.kill() for single-process kill.
231
- const killChild = (signal) => {
232
- try {
233
- if (detached) {
234
- process.kill(-child.pid, signal);
235
- } else {
236
- child.kill(signal);
237
- }
238
- } catch {
239
- // Process or process group already terminated
240
- }
241
- };
242
-
243
- process.on('SIGINT', () => {
244
- if (!exited) {
245
- killChild('SIGTERM');
246
- if (escalateKill && !escalationScheduled) {
247
- escalationScheduled = true;
248
- setTimeout(() => {
249
- if (!exited) killChild('SIGKILL');
250
- }, 3000).unref();
251
- }
252
- }
253
- });
254
-
255
- process.on('SIGTERM', () => {
256
- if (!exited) killChild('SIGTERM');
257
- });
258
-
259
- process.on('SIGHUP', () => {
260
- if (!exited) killChild('SIGHUP');
261
- });
262
-
263
- // Clean up the child process group when the parent exits unexpectedly
264
- if (detached) {
265
- process.on('exit', () => {
266
- if (!exited) {
267
- try { process.kill(-child.pid, 'SIGKILL'); } catch {}
268
- }
269
- });
270
- }
271
- }
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,80 +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
- const child = spawn(String(electronPath), [entryFile], {
57
- stdio: 'inherit',
58
- env: getElectronSpawnEnv(),
59
- });
60
-
61
- child.on('exit', (code) => process.exit(code ?? 0));
62
- child.on('error', (err) => {
63
- console.error('Failed to launch Electron:', err);
64
- process.exit(1);
65
- });
66
- } else {
67
- // Default: delegate to server.js (NestJS web server)
68
- const serverScript = join(__dirname, '..', 'server.js');
69
-
70
- const child = spawn(process.execPath, [serverScript, ...args], {
71
- stdio: 'inherit',
72
- env: { ...process.env, NODE_ENV: 'production' }, // Force production — prevents users from bypassing FREE limits via env
73
- });
74
-
75
- child.on('exit', (code) => process.exit(code ?? 0));
76
- child.on('error', (err) => {
77
- console.error('Failed to start server:', err);
78
- process.exit(1);
79
- });
80
- }
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)})}