crewx 0.9.0-rc.145 → 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.
- package/bin/cli-commands.js +1 -38
- package/bin/crewx-lib.js +2 -271
- package/bin/crewx-ui.js +1 -79
- package/bin/crewx.js +2 -361
- package/bin/launcher-flags.js +1 -29
- package/crewx-host.js +1 -5
- package/dist/assets/{GitDiffEditor-C7h6_huE.js → GitDiffEditor-CU7C3NXF.js} +7 -7
- package/dist/assets/{MarketPage-BmCoEBkS.js → MarketPage-D3-lVobP.js} +1 -1
- package/dist/assets/{PromptTab-Ca49yt70.js → PromptTab-DGLMIwI-.js} +1 -1
- package/dist/assets/{arc-D-uhhCX1.js → arc-xeudwSkY.js} +1 -1
- package/dist/assets/{architectureDiagram-UYN6MBPD-BSeqycIW.js → architectureDiagram-UYN6MBPD-DHCYhe2Z.js} +1 -1
- package/dist/assets/{blockDiagram-ZHA2E4KO-CdLcsitM.js → blockDiagram-ZHA2E4KO-EJqAr7L7.js} +1 -1
- package/dist/assets/{c4Diagram-6F5ED5ID-nPc78fSl.js → c4Diagram-6F5ED5ID-DxpOLK-t.js} +1 -1
- package/dist/assets/channel-Cdw7OVBQ.js +1 -0
- package/dist/assets/{chunk-5HRBRIJM-D-zM2SWO.js → chunk-5HRBRIJM-DlG92yaY.js} +1 -1
- package/dist/assets/{chunk-7U56Z5CX-qfCdTuAf.js → chunk-7U56Z5CX-BXb7hQNI.js} +1 -1
- package/dist/assets/{chunk-ASOPGD6M-B0L9y3w6.js → chunk-ASOPGD6M-BdHu5Via.js} +1 -1
- package/dist/assets/{chunk-KFBOBJHC-Daf1MsZx.js → chunk-KFBOBJHC-pvEEjX_1.js} +1 -1
- package/dist/assets/{chunk-T2TOU4HS-BvQRIgEQ.js → chunk-T2TOU4HS-tIPurPuU.js} +1 -1
- package/dist/assets/{chunk-TMUBEWPD-BtmaaO8R.js → chunk-TMUBEWPD-PwJd_log.js} +1 -1
- package/dist/assets/classDiagram-LNE6IOMH-DxLg5Oh4.js +1 -0
- package/dist/assets/classDiagram-v2-MQ7JQ4JX-DxLg5Oh4.js +1 -0
- package/dist/assets/{cssMode-Dnr0YKQw.js → cssMode-DDzxGVYR.js} +1 -1
- package/dist/assets/{dagre-4EVJKHTY-BhZC6yP0.js → dagre-4EVJKHTY-uex4Jo11.js} +1 -1
- package/dist/assets/{diagram-QW4FP2JN-DQPqrx_Z.js → diagram-QW4FP2JN-PaorE9Gd.js} +1 -1
- package/dist/assets/{erDiagram-6RL3IURR-BKNPc4pK.js → erDiagram-6RL3IURR-m_vEVCyt.js} +1 -1
- package/dist/assets/{flowDiagram-7ASYPVHJ-dOsmuHtv.js → flowDiagram-7ASYPVHJ-Dx9ouwck.js} +1 -1
- package/dist/assets/{freemarker2-eyI8Kurl.js → freemarker2-Bg_fqaSB.js} +1 -1
- package/dist/assets/{ganttDiagram-NTVNEXSI-CEwPQmyI.js → ganttDiagram-NTVNEXSI-DkeZ0zDi.js} +1 -1
- package/dist/assets/{gitGraph-YCYPL57B-BBSezgbc.js → gitGraph-YCYPL57B-DV0hCCfJ.js} +1 -1
- package/dist/assets/{gitGraphDiagram-NRZ2UAAF-C_qmpDdj.js → gitGraphDiagram-NRZ2UAAF-BvlCxWvR.js} +1 -1
- package/dist/assets/{handlebars-BSMCdzfJ.js → handlebars-WyHBhz29.js} +1 -1
- package/dist/assets/{html-C2GDHO8f.js → html-Db-i8jkn.js} +1 -1
- package/dist/assets/{htmlMode-BR73-pwT.js → htmlMode-BFUOiE00.js} +1 -1
- package/dist/assets/{infoDiagram-A4XQUW5V-CDFeNyTK.js → infoDiagram-A4XQUW5V-D2S4KSJe.js} +1 -1
- package/dist/assets/{javascript-CyQZeoWs.js → javascript-DDNLuUm_.js} +1 -1
- package/dist/assets/{journeyDiagram-G5WM74LC-DeGAalCI.js → journeyDiagram-G5WM74LC-KUQKHbRp.js} +1 -1
- package/dist/assets/{jsonMode-DGBqkDbH.js → jsonMode-jawhprRC.js} +1 -1
- package/dist/assets/{kanban-definition-QRCXZQQD-DnthmNp9.js → kanban-definition-QRCXZQQD-BGTbkzzF.js} +1 -1
- package/dist/assets/{linear-BozRniUs.js → linear-d2NYD5X1.js} +1 -1
- package/dist/assets/{liquid-iSJ88YP-.js → liquid-d0cidZM2.js} +1 -1
- package/dist/assets/{main-D9gIex2G.js → main-DK36_QRv.js} +460 -460
- package/dist/assets/{mdx-B-xlm9Nu.js → mdx-CzXXpIeL.js} +1 -1
- package/dist/assets/{mindmap-definition-GWI6TPTV-C7GXcB-E.js → mindmap-definition-GWI6TPTV-B8n6B-Cd.js} +1 -1
- package/dist/assets/{pieDiagram-YF2LJOPJ-Dri4um-_.js → pieDiagram-YF2LJOPJ-Dx4HkGUa.js} +1 -1
- package/dist/assets/{python-D8i017Om.js → python-BG69Zd1b.js} +1 -1
- package/dist/assets/{quadrantDiagram-OS5C2QUG-B9lSiE7s.js → quadrantDiagram-OS5C2QUG-BkQdcSzs.js} +1 -1
- package/dist/assets/{razor-CDokhsh6.js → razor-5bsOwchm.js} +1 -1
- package/dist/assets/{requirementDiagram-MIRIMTAZ-CPaizTkE.js → requirementDiagram-MIRIMTAZ-D6hb4DpM.js} +1 -1
- package/dist/assets/{sankeyDiagram-Y46BX6SQ-CAbZRQbA.js → sankeyDiagram-Y46BX6SQ-CHHLXdJe.js} +1 -1
- package/dist/assets/{sequenceDiagram-G6AWOVSC-eU0lNuXT.js → sequenceDiagram-G6AWOVSC-CJT11r_U.js} +1 -1
- package/dist/assets/{stateDiagram-MAYHULR4-Bi00BhSN.js → stateDiagram-MAYHULR4-CF8Tbu22.js} +1 -1
- package/dist/assets/stateDiagram-v2-4JROLMXI-BxfSbrwl.js +1 -0
- package/dist/assets/{timeline-definition-U7ZMHBDA-CQzptdin.js → timeline-definition-U7ZMHBDA-CXz5jRph.js} +1 -1
- package/dist/assets/{transformers.web-_POKIgn4.js → transformers.web-DVa2WON3.js} +1 -1
- package/dist/assets/{tsMode-nkyevKmY.js → tsMode-DD_uH1IU.js} +1 -1
- package/dist/assets/{typescript-BWIj02RK.js → typescript-utgvRMhy.js} +1 -1
- package/dist/assets/{xml-dnUjuRtI.js → xml-D_4kFPuV.js} +1 -1
- package/dist/assets/{xychartDiagram-6QU3TZC5-DxBUZuUz.js → xychartDiagram-6QU3TZC5-6vVTyCZb.js} +1 -1
- package/dist/assets/{yaml-DDGO7wgE.js → yaml-P_n-Cm4B.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/ui-build.json +1 -1
- package/dist-server/__stubs__/ccusage-codex.js +1 -8
- package/dist-server/adapters/adapter.module.js +1 -35
- package/dist-server/adapters/adapter.service.js +1 -79
- package/dist-server/adapters/http-router.service.js +1 -91
- package/dist-server/app.module.js +1 -158
- package/dist-server/bootstrap/browser-open.js +1 -33
- package/dist-server/bootstrap/codex-writable-roots.js +1 -111
- package/dist-server/bootstrap/crewx-server.js +1 -115
- package/dist-server/bootstrap/env.js +1 -45
- package/dist-server/bootstrap/tls.js +1 -885
- package/dist-server/common/analytics.client.js +1 -180
- package/dist-server/common/analytics.module.js +1 -21
- package/dist-server/common/cache/provider-limit-cache.js +1 -474
- package/dist-server/common/cache-db.js +3 -221
- package/dist-server/common/cors.js +1 -15
- package/dist-server/common/crewx-workspace-root.js +1 -42
- package/dist-server/common/current-user.js +1 -14
- package/dist-server/common/decorator/cached.decorator.js +1 -35
- package/dist-server/common/decorator/skip-request-log.decorator.js +1 -8
- package/dist-server/common/decorators/project.decorator.js +1 -21
- package/dist-server/common/decorators/workspace.decorator.js +1 -24
- package/dist-server/common/device-id.js +1 -33
- package/dist-server/common/guard/request-log-metadata.guard.js +1 -58
- package/dist-server/common/interceptor/api-id-header.interceptor.js +1 -53
- package/dist-server/common/interceptor/http-logging.interceptor.js +1 -393
- package/dist-server/common/limits/defaults.js +1 -15
- package/dist-server/common/limits/limits-provider.js +1 -6
- package/dist-server/common/limits/limits.controller.js +1 -38
- package/dist-server/common/limits/limits.module.js +1 -24
- package/dist-server/common/limits/local-limits.provider.js +1 -27
- package/dist-server/common/mcp-app-sandbox-boundary.js +5 -188
- package/dist-server/common/mcp-app-sandbox-contract.js +1 -802
- package/dist-server/common/middleware/request-log-lifecycle.middleware.js +1 -65
- package/dist-server/common/middleware/workspace.middleware.js +1 -210
- package/dist-server/common/pending-instruction.js +1 -27
- package/dist-server/common/product-app-bundle.generated.js +1 -7
- package/dist-server/common/product-app-bundle.js +1 -54
- package/dist-server/common/repository.exception-filter.js +1 -48
- package/dist-server/common/request-log/request-log-context.js +1 -138
- package/dist-server/common/request-log/request-log-principal.js +1 -75
- package/dist-server/common/security/instruction-sanitizer.js +1 -191
- package/dist-server/common/security/secret-mask.js +1 -48
- package/dist-server/common/task-display-provider.js +1 -61
- package/dist-server/common/task-error-projection.js +1 -416
- package/dist-server/common/task-log/progress-steps.js +1 -70
- package/dist-server/common/task-log/provider-resume.js +1 -406
- package/dist-server/common/task-log/public-log-projection.fixtures.js +1 -153
- package/dist-server/common/task-log/public-log-projection.js +1 -196
- package/dist-server/common/task-log/public-log-projection.past-tool-use.fixtures.js +1 -242
- package/dist-server/common/task-log/stdout-json-fallback.js +1 -10
- package/dist-server/common/task-result-projection.js +1 -25
- package/dist-server/common/task-stop.js +1 -44
- package/dist-server/common/task-terminal-reason.js +1 -14
- package/dist-server/common/task-usage-accounting.js +1 -34
- package/dist-server/common/ui/derive-ui-actor.js +1 -39
- package/dist-server/common/ui/resolve-task-actor.js +1 -37
- package/dist-server/common/ui/ui-runtime-http-error.js +1 -48
- package/dist-server/common/validation.pipe.js +1 -79
- package/dist-server/common/workspace-context.store.js +1 -25
- package/dist-server/domain/account/account-auth-url.js +1 -17
- package/dist-server/domain/account/account-error.constants.js +1 -23
- package/dist-server/domain/account/account-error.exception-filter.js +1 -32
- package/dist-server/domain/account/account-profile.service.js +1 -106
- package/dist-server/domain/account/account-session.guard.js +1 -34
- package/dist-server/domain/account/account.controller.js +1 -244
- package/dist-server/domain/account/account.module.js +1 -95
- package/dist-server/domain/account/auth-json.store.js +1 -45
- package/dist-server/domain/account/auth-json.types.js +1 -2
- package/dist-server/domain/account/device-flow.service.js +1 -274
- package/dist-server/domain/account/token-refresh.service.js +1 -183
- package/dist-server/domain/agent/agent.controller.js +1 -124
- package/dist-server/domain/agent/agent.module.js +1 -27
- package/dist-server/domain/agent/agent.service.js +1 -1077
- package/dist-server/domain/agent/agent.types.js +1 -3
- package/dist-server/domain/agent/builtin-agent-loader.js +1 -47
- package/dist-server/domain/agent/dto/create-agent.dto.js +1 -94
- package/dist-server/domain/agent/dto/preview-prompt.dto.js +1 -77
- package/dist-server/domain/agent/dto/provider-meta.dto.js +1 -2
- package/dist-server/domain/agent/dto/remote-provider.dto.js +1 -82
- package/dist-server/domain/agent/dto/reorder-agents.dto.js +1 -51
- package/dist-server/domain/agent/dto/update-agent.dto.js +1 -94
- package/dist-server/domain/agent/provider.controller.js +1 -49
- package/dist-server/domain/agent/template-processor.service.js +1 -71
- package/dist-server/domain/agent-suggestion/agent-suggestion.controller.js +1 -104
- package/dist-server/domain/agent-suggestion/agent-suggestion.module.js +1 -27
- package/dist-server/domain/agent-suggestion/agent-suggestion.service.js +1 -582
- package/dist-server/domain/agent-suggestion/analysis/evidence-json.js +1 -14
- package/dist-server/domain/agent-suggestion/analysis/h1-evidence.js +2 -325
- package/dist-server/domain/agent-suggestion/analysis/h1-prompt.js +42 -207
- package/dist-server/domain/agent-suggestion/analysis/h3-rules.js +1 -85
- package/dist-server/domain/agent-suggestion/analysis/index.js +1 -22
- package/dist-server/domain/agent-suggestion/analysis/merge3.js +2 -192
- package/dist-server/domain/agent-suggestion/analysis/secret-redaction.js +1 -61
- package/dist-server/domain/agent-suggestion/analysis/types.js +1 -7
- package/dist-server/domain/agent-suggestion/dto/apply-batch.dto.js +1 -26
- package/dist-server/domain/agent-suggestion/dto/suggestion-response.dto.js +1 -2
- package/dist-server/domain/app/app-list.types.js +1 -9
- package/dist-server/domain/app/app.controller.js +1 -53
- package/dist-server/domain/app/app.module.js +1 -26
- package/dist-server/domain/app/app.service.js +1 -475
- package/dist-server/domain/app/dto/app-list.dto.js +1 -2
- package/dist-server/domain/app-dev/app-dev.controller.js +1 -342
- package/dist-server/domain/app-dev/app-dev.module.js +1 -27
- package/dist-server/domain/app-dev/app-dev.service.js +2 -1251
- package/dist-server/domain/auth/auth-cookie-policy.js +1 -61
- package/dist-server/domain/auth/auth.constants.js +1 -4
- package/dist-server/domain/auth/auth.controller.js +1 -233
- package/dist-server/domain/auth/auth.module.js +1 -49
- package/dist-server/domain/auth/decorators/public.decorator.js +1 -7
- package/dist-server/domain/auth/guards/base-auth.guard.js +1 -239
- package/dist-server/domain/auth/guards/csrf.guard.js +1 -58
- package/dist-server/domain/auth/guards/local-only.guard.js +1 -48
- package/dist-server/domain/auth/guards/shortcut-csrf.guard.js +1 -12
- package/dist-server/domain/auth/local-pairing.service.js +1 -148
- package/dist-server/domain/auth/local-secret.js +1 -251
- package/dist-server/domain/auth/local-transport-policy.js +1 -305
- package/dist-server/domain/auth/session-store.js +3 -176
- package/dist-server/domain/auth/sessions-db.js +2 -86
- package/dist-server/domain/auth/utils/ip.utils.js +1 -36
- package/dist-server/domain/board/board.controller.js +1 -115
- package/dist-server/domain/board/board.module.js +1 -26
- package/dist-server/domain/board/board.service.js +1 -747
- package/dist-server/domain/board/board.types.js +1 -2
- package/dist-server/domain/board/dto/create-board-batch.dto.js +1 -25
- package/dist-server/domain/board/dto/create-board.dto.js +1 -54
- package/dist-server/domain/board/dto/plan-board.dto.js +1 -24
- package/dist-server/domain/board/dto/update-board.dto.js +1 -31
- package/dist-server/domain/box/box.controller.js +1 -77
- package/dist-server/domain/box/box.module.js +1 -21
- package/dist-server/domain/box/box.service.js +1 -97
- package/dist-server/domain/box/dto/create-box.dto.js +1 -74
- package/dist-server/domain/cli/cli-local-only.guard.js +1 -46
- package/dist-server/domain/cli/cli.controller.js +4 -194
- package/dist-server/domain/cli/cli.module.js +1 -25
- package/dist-server/domain/cli/cli.service.js +3 -1568
- package/dist-server/domain/cli/dto/cli-auth-status-query.dto.js +1 -25
- package/dist-server/domain/cli/dto/login-cli.dto.js +1 -25
- package/dist-server/domain/cli/dto/update-cli.dto.js +1 -31
- package/dist-server/domain/cron/cron-bootstrap.service.js +1 -1048
- package/dist-server/domain/cron/cron-runtime-host.module.js +1 -41
- package/dist-server/domain/cron/cron-runtime-sync.port.js +1 -13
- package/dist-server/domain/cron/cron-runtime-sync.service.js +1 -259
- package/dist-server/domain/cron/cron.controller.js +1 -182
- package/dist-server/domain/cron/cron.module.js +1 -24
- package/dist-server/domain/cron/cron.service.js +1 -337
- package/dist-server/domain/cron/dto/cron.dto.js +1 -126
- package/dist-server/domain/doc/doc.controller.js +1 -307
- package/dist-server/domain/doc/doc.module.js +1 -24
- package/dist-server/domain/doc/doc.service.js +1 -560
- package/dist-server/domain/doc/dto/doc.dto.js +1 -74
- package/dist-server/domain/doc/image-constants.js +1 -23
- package/dist-server/domain/document/document.controller.js +1 -57
- package/dist-server/domain/document/document.module.js +1 -22
- package/dist-server/domain/document/document.service.js +7 -274
- package/dist-server/domain/document/dto/register-document.dto.js +1 -24
- package/dist-server/domain/env/dto/put-env.dto.js +1 -23
- package/dist-server/domain/env/env.controller.js +1 -71
- package/dist-server/domain/env/env.module.js +1 -22
- package/dist-server/domain/env/env.service.js +1 -234
- package/dist-server/domain/events/events.module.js +1 -31
- package/dist-server/domain/events/server-conversation.plugin.js +1 -51
- package/dist-server/domain/events/workspace-event.bus.js +1 -38
- package/dist-server/domain/events/workspace-event.types.js +1 -32
- package/dist-server/domain/events/workspace-events-test.controller.js +1 -97
- package/dist-server/domain/events/workspace-events.controller.js +1 -60
- package/dist-server/domain/fs/dto/mkdir-request.dto.js +1 -47
- package/dist-server/domain/fs/dto/mkdir-response.dto.js +1 -2
- package/dist-server/domain/fs/dto/quick-access.dto.js +1 -2
- package/dist-server/domain/fs/dto/tree-node.dto.js +1 -2
- package/dist-server/domain/fs/dto/tree-query.dto.js +1 -35
- package/dist-server/domain/fs/fs.controller.js +1 -63
- package/dist-server/domain/fs/fs.module.js +1 -22
- package/dist-server/domain/fs/fs.service.js +1 -304
- package/dist-server/domain/git/git.controller.js +1 -180
- package/dist-server/domain/git/git.module.js +1 -22
- package/dist-server/domain/git/git.service.js +1 -602
- package/dist-server/domain/goal/dto/goal.dto.js +1 -49
- package/dist-server/domain/goal/goal.controller.js +1 -86
- package/dist-server/domain/goal/goal.module.js +1 -22
- package/dist-server/domain/goal/goal.service.js +1 -197
- package/dist-server/domain/goal/parser/goal-md-parser.js +1 -166
- package/dist-server/domain/goal/parser/goal-md-serializer.js +5 -108
- package/dist-server/domain/health/health.controller.js +1 -74
- package/dist-server/domain/health/health.module.js +1 -22
- package/dist-server/domain/health/ui-asset-revision.service.js +1 -40
- package/dist-server/domain/knowledge/dto/graph-knowledge.dto.js +1 -27
- package/dist-server/domain/knowledge/dto/knowledge.dto.js +1 -71
- package/dist-server/domain/knowledge/knowledge.controller.js +1 -122
- package/dist-server/domain/knowledge/knowledge.module.js +1 -21
- package/dist-server/domain/knowledge/knowledge.service.js +1 -541
- package/dist-server/domain/market/__fixtures__/build-fixture.js +1 -118
- package/dist-server/domain/market/__fixtures__/marketplace-anonymous-install.contract.js +1 -36
- package/dist-server/domain/market/dto/add-registry.dto.js +1 -32
- package/dist-server/domain/market/dto/install-apply.dto.js +1 -23
- package/dist-server/domain/market/dto/install-cancel.dto.js +1 -25
- package/dist-server/domain/market/dto/install-market.dto.js +1 -30
- package/dist-server/domain/market/dto/install-plan.dto.js +1 -31
- package/dist-server/domain/market/dto/invite-accept.dto.js +1 -25
- package/dist-server/domain/market/dto/publish-plan.dto.js +1 -43
- package/dist-server/domain/market/dto/publish-run.dto.js +1 -18
- package/dist-server/domain/market/dto/publisher-funnel.dto.js +1 -72
- package/dist-server/domain/market/dto/publisher-invite.dto.js +1 -50
- package/dist-server/domain/market/dto/shr-response.dto.js +1 -20
- package/dist-server/domain/market/first-run-event.listener.js +1 -94
- package/dist-server/domain/market/install-error.exception-filter.js +1 -94
- package/dist-server/domain/market/install-id.validation.js +1 -4
- package/dist-server/domain/market/install-plan-expired.exception-filter.js +1 -28
- package/dist-server/domain/market/install.service.js +1 -889
- package/dist-server/domain/market/market.controller.js +1 -451
- package/dist-server/domain/market/market.module.js +1 -184
- package/dist-server/domain/market/market.service.js +3 -1808
- package/dist-server/domain/market/marketplace-api.client.js +1 -616
- package/dist-server/domain/market/marketplace-target.js +1 -35
- package/dist-server/domain/market/publish.controller.js +1 -64
- package/dist-server/domain/market/publish.service.js +1 -343
- package/dist-server/domain/market/publisher-invite-labels-ledger.service.js +2 -174
- package/dist-server/domain/market/publisher-invite.service.js +1 -323
- package/dist-server/domain/market/sharing-event.client.js +1 -263
- package/dist-server/domain/market/sharing-installs-ledger.service.js +1 -303
- package/dist-server/domain/market/sharing-updates.service.js +1 -67
- package/dist-server/domain/market/source-coordinate.js +1 -72
- package/dist-server/domain/market/template-installer.js +2 -1433
- package/dist-server/domain/mcp/app-debug-log.js +4 -254
- package/dist-server/domain/mcp/browser-session.store.js +5 -297
- package/dist-server/domain/mcp/chromex-blacklist.js +1 -26
- package/dist-server/domain/mcp/chromex-negotiate.controller.js +1 -77
- package/dist-server/domain/mcp/chromex-negotiate.dto.js +1 -95
- package/dist-server/domain/mcp/chromex-negotiate.service.js +3 -237
- package/dist-server/domain/mcp/crewx-tool.factory.js +1 -269
- package/dist-server/domain/mcp/default-apps/shared.js +1 -37
- package/dist-server/domain/mcp/dto/open-mcp-app.dto.js +1 -46
- package/dist-server/domain/mcp/html-viewer.controller.js +1 -98
- package/dist-server/domain/mcp/html-viewer.service.js +1 -415
- package/dist-server/domain/mcp/mcp-app-actions.js +1 -1032
- package/dist-server/domain/mcp/mcp-app-assets.js +1 -31
- package/dist-server/domain/mcp/mcp-app-resource-csp.interceptor.js +1 -85
- package/dist-server/domain/mcp/mcp-app-runtime.controller.js +1 -59
- package/dist-server/domain/mcp/mcp-app-runtime.service.js +1 -150
- package/dist-server/domain/mcp/mcp-app-sandbox.service.js +2 -937
- package/dist-server/domain/mcp/mcp-app-workspace-asset-catalog-resolver.js +1 -94
- package/dist-server/domain/mcp/mcp-apps.js +1 -2983
- package/dist-server/domain/mcp/mcp-auth.guard.js +1 -65
- package/dist-server/domain/mcp/mcp.constants.js +1 -22
- package/dist-server/domain/mcp/mcp.controller.js +1 -128
- package/dist-server/domain/mcp/mcp.dto.js +1 -12
- package/dist-server/domain/mcp/mcp.module.js +1 -70
- package/dist-server/domain/mcp/mcp.service.js +1 -1882
- package/dist-server/domain/mcp/product-app-bundle-assets.js +1 -65
- package/dist-server/domain/mcp/skill-backend.port.js +1 -1123
- package/dist-server/domain/mcp/tool-router.service.js +1 -120
- package/dist-server/domain/mcp/ui-content-channel.service.js +1 -220
- package/dist-server/domain/message/dto/list-messages.dto.js +1 -57
- package/dist-server/domain/message/dto/send-message.dto.js +1 -208
- package/dist-server/domain/message/message.controller.js +1 -186
- package/dist-server/domain/message/message.module.js +1 -27
- package/dist-server/domain/message/message.multipart.js +1 -295
- package/dist-server/domain/message/message.service.js +9 -773
- package/dist-server/domain/notification/dto/create-notification.dto.js +1 -79
- package/dist-server/domain/notification/dto/list-notifications.dto.js +1 -27
- package/dist-server/domain/notification/notification.controller.js +1 -135
- package/dist-server/domain/notification/notification.module.js +1 -34
- package/dist-server/domain/notification/notification.service.js +1 -65
- package/dist-server/domain/onboarding/onboarding.controller.js +1 -97
- package/dist-server/domain/onboarding/onboarding.module.js +1 -23
- package/dist-server/domain/onboarding/onboarding.service.js +1 -106
- package/dist-server/domain/onboarding/onboarding.types.js +1 -2
- package/dist-server/domain/onboarding/presets/custom.js +1 -10
- package/dist-server/domain/onboarding/presets/dev-team.js +1 -41
- package/dist-server/domain/onboarding/presets/index.js +1 -15
- package/dist-server/domain/onboarding/presets/marketing-team.js +1 -29
- package/dist-server/domain/onboarding/presets/planning-team.js +1 -29
- package/dist-server/domain/onboarding/presets/solo.js +1 -17
- package/dist-server/domain/planner/dto/planner.dto.js +1 -58
- package/dist-server/domain/planner/planner.controller.js +1 -74
- package/dist-server/domain/planner/planner.module.js +1 -22
- package/dist-server/domain/planner/planner.service.js +1 -272
- package/dist-server/domain/project/dto/create-project-ledger.dto.js +1 -89
- package/dist-server/domain/project/dto/create-project.dto.js +1 -46
- package/dist-server/domain/project/dto/update-project.dto.js +1 -60
- package/dist-server/domain/project/project-ledger.controller.js +1 -72
- package/dist-server/domain/project/project-ledger.service.js +1 -124
- package/dist-server/domain/project/project.controller.js +1 -129
- package/dist-server/domain/project/project.module.js +1 -24
- package/dist-server/domain/project/project.service.js +1 -173
- package/dist-server/domain/settings/local-ai-server/local-ai-server.controller.js +1 -96
- package/dist-server/domain/settings/local-ai-server/local-ai-server.dto.js +1 -37
- package/dist-server/domain/settings/local-ai-server/local-ai-server.network-policy.js +1 -416
- package/dist-server/domain/settings/local-ai-server/local-ai-server.service.js +1 -298
- package/dist-server/domain/settings/local-ai-server/local-ai-server.types.js +1 -10
- package/dist-server/domain/settings/request-log-maintenance.js +1 -131
- package/dist-server/domain/settings/request-log-maintenance.service.js +1 -208
- package/dist-server/domain/settings/request-log-maintenance.worker.js +1 -58
- package/dist-server/domain/settings/request-log-prune.js +6 -191
- package/dist-server/domain/settings/request-log-rollup.js +8 -373
- package/dist-server/domain/settings/request-log-store.js +3 -118
- package/dist-server/domain/settings/request-logs.controller.js +1 -81
- package/dist-server/domain/settings/request-logs.service.js +7 -300
- package/dist-server/domain/settings/request-logs.types.js +1 -5
- package/dist-server/domain/settings/settings.controller.js +1 -63
- package/dist-server/domain/settings/settings.module.js +1 -59
- package/dist-server/domain/settings/settings.service.js +1 -645
- package/dist-server/domain/settings/storage-retention.js +16 -980
- package/dist-server/domain/settings/storage-retention.worker.js +5 -327
- package/dist-server/domain/settings/storage.controller.js +1 -95
- package/dist-server/domain/settings/storage.service.js +1 -276
- package/dist-server/domain/settings/storage.types.js +1 -2
- package/dist-server/domain/system/desktop-control.guard.js +1 -67
- package/dist-server/domain/system/shortcut.service.js +1 -353
- package/dist-server/domain/system/shortcut.types.js +1 -8
- package/dist-server/domain/system/shutdown.dto.js +1 -22
- package/dist-server/domain/system/system.controller.js +5 -268
- package/dist-server/domain/system/system.module.js +1 -38
- package/dist-server/domain/system/system.service.js +1 -50
- package/dist-server/domain/system/task-ownership.js +1 -32
- package/dist-server/domain/system/update-gate.service.js +1 -234
- package/dist-server/domain/task/child-task-projection.js +1 -111
- package/dist-server/domain/task/dto/all-tasks.dto.js +1 -55
- package/dist-server/domain/task/dto/descendants.dto.js +1 -46
- package/dist-server/domain/task/dto/list-tasks.dto.js +1 -69
- package/dist-server/domain/task/dto/search-tasks.dto.js +1 -66
- package/dist-server/domain/task/dto/send-message.dto.js +1 -41
- package/dist-server/domain/task/dto/task-prompt.dto.js +1 -40
- package/dist-server/domain/task/dto/task-rating.dto.js +1 -33
- package/dist-server/domain/task/dto/task-status.dto.js +1 -34
- package/dist-server/domain/task/dto/workspace-usage.dto.js +1 -38
- package/dist-server/domain/task/prompt-composition.js +1 -443
- package/dist-server/domain/task/task-execution-path.js +1 -47
- package/dist-server/domain/task/task.constants.js +1 -5
- package/dist-server/domain/task/task.controller.js +1 -348
- package/dist-server/domain/task/task.module.js +1 -25
- package/dist-server/domain/task/task.service.js +3 -1871
- package/dist-server/domain/terminal/terminal-access-policy.js +1 -0
- package/dist-server/domain/terminal/terminal-audit.service.js +4 -78
- package/dist-server/domain/terminal/terminal-csp.js +1 -37
- package/dist-server/domain/terminal/terminal-local-only.guard.js +1 -56
- package/dist-server/domain/terminal/terminal-session.service.js +1 -372
- package/dist-server/domain/terminal/terminal-ticket.service.js +1 -108
- package/dist-server/domain/terminal/terminal-ws.service.js +1 -242
- package/dist-server/domain/terminal/terminal.controller.js +1 -96
- package/dist-server/domain/terminal/terminal.module.js +1 -36
- package/dist-server/domain/thread/dto/build-context.dto.js +1 -42
- package/dist-server/domain/thread/dto/highlight.dto.js +1 -114
- package/dist-server/domain/thread/dto/list-messages.dto.js +1 -49
- package/dist-server/domain/thread/dto/list-threads.dto.js +1 -117
- package/dist-server/domain/thread/dto/reorder-pins.dto.js +1 -22
- package/dist-server/domain/thread/dto/search-threads.dto.js +1 -13
- package/dist-server/domain/thread/dto/thread-label.dto.js +1 -104
- package/dist-server/domain/thread/dto/timeline-query.dto.js +1 -51
- package/dist-server/domain/thread/dto/update-thread.dto.js +1 -67
- package/dist-server/domain/thread/overdrive.types.js +1 -38
- package/dist-server/domain/thread/thread-highlight-flight.service.js +1 -53
- package/dist-server/domain/thread/thread-highlight-regeneration.service.js +1 -277
- package/dist-server/domain/thread/thread-highlight-trigger.service.js +1 -722
- package/dist-server/domain/thread/thread-highlight.constants.js +1 -5
- package/dist-server/domain/thread/thread-label.controller.js +1 -104
- package/dist-server/domain/thread/thread-label.service.js +1 -249
- package/dist-server/domain/thread/thread-preview.controller.js +1 -44
- package/dist-server/domain/thread/thread-title.backfill.js +1 -42
- package/dist-server/domain/thread/thread-title.types.js +1 -27
- package/dist-server/domain/thread/thread.controller.js +1 -291
- package/dist-server/domain/thread/thread.module.js +1 -40
- package/dist-server/domain/thread/thread.service.js +6 -1397
- package/dist-server/domain/token/token.controller.js +1 -73
- package/dist-server/domain/token/token.dto.js +1 -56
- package/dist-server/domain/token/token.module.js +1 -26
- package/dist-server/domain/token/token.service.js +3 -437
- package/dist-server/domain/usage/codex-rate-limits.client.js +2 -513
- package/dist-server/domain/usage/usage.controller.js +1 -190
- package/dist-server/domain/usage/usage.module.js +1 -22
- package/dist-server/domain/usage/usage.service.js +1 -1727
- package/dist-server/domain/usage/usage.types.js +1 -4
- package/dist-server/domain/usage-report/dto/usage-report.dto.js +1 -2
- package/dist-server/domain/usage-report/report-findings.js +1 -109
- package/dist-server/domain/usage-report/usage-report.controller.js +1 -72
- package/dist-server/domain/usage-report/usage-report.module.js +1 -23
- package/dist-server/domain/usage-report/usage-report.service.js +1 -140
- package/dist-server/domain/wbs/wbs.controller.js +1 -51
- package/dist-server/domain/wbs/wbs.module.js +1 -21
- package/dist-server/domain/wbs/wbs.service.js +1 -94
- package/dist-server/domain/wi/dto/create-wi.dto.js +1 -67
- package/dist-server/domain/wi/dto/update-wi-status.dto.js +1 -24
- package/dist-server/domain/wi/wi.controller.js +1 -112
- package/dist-server/domain/wi/wi.module.js +1 -22
- package/dist-server/domain/wi/wi.service.js +2 -620
- package/dist-server/domain/wi/wi.types.js +1 -2
- package/dist-server/domain/workflow/chat-card-proof.service.js +1 -97
- package/dist-server/domain/workflow/dto/thread-app-launch.dto.js +1 -49
- package/dist-server/domain/workflow/thread-app-launch.controller.js +1 -330
- package/dist-server/domain/workflow/ui-instance.controller.js +1 -1574
- package/dist-server/domain/workflow/workflow-approval-v2.js +1 -748
- package/dist-server/domain/workflow/workflow.controller.js +1 -165
- package/dist-server/domain/workflow/workflow.module.js +1 -80
- package/dist-server/domain/workflow/workflow.service.js +3 -1221
- package/dist-server/domain/workspace/dto/create-workspace.dto.js +1 -62
- package/dist-server/domain/workspace/dto/rename-workspace.dto.js +1 -27
- package/dist-server/domain/workspace/dto/switch-workspace.dto.js +1 -32
- package/dist-server/domain/workspace/dto/workspace-info.dto.js +1 -2
- package/dist-server/domain/workspace/workspace.controller.js +1 -126
- package/dist-server/domain/workspace/workspace.module.js +1 -24
- package/dist-server/domain/workspace/workspace.service.js +1 -362
- package/dist-server/main.js +1 -337
- package/dist-server/modules/crewx-pool.service.js +1 -724
- package/dist-server/modules/crewx.module.js +1 -59
- package/dist-server/modules/workspace-config.store.js +1 -111
- package/dist-server/repository/agent-suggestion.repository.js +1 -39
- package/dist-server/repository/base-sqlite.repository.js +1 -18
- package/dist-server/repository/box.repository.js +1 -99
- package/dist-server/repository/message.repository.js +1 -22
- package/dist-server/repository/notification.repository.js +1 -33
- package/dist-server/repository/project.repository.js +1 -61
- package/dist-server/repository/repository.module.js +1 -44
- package/dist-server/repository/request-log.repository.js +2 -103
- package/dist-server/repository/task.repository.js +9 -1001
- package/dist-server/repository/thread-label.repository.js +1 -86
- package/dist-server/repository/thread.repository.js +46 -887
- package/dist-server/repository/usage-limit-snapshot.repository.js +1 -24
- package/dist-server/repository/usage-report.repository.js +1 -27
- package/dist-server/shared/attachment-path.js +1 -50
- package/dist-server/shared/attachment-policy.js +1 -191
- package/dist-server/shared/crewx-home.js +1 -8
- package/dist-server/shared/crewx-state.js +1 -66
- package/dist-server/shared/doc-heading.js +1 -69
- package/dist-server/shared/marketplace-api.constants.js +1 -12
- package/dist-server/shared/thread-label.js +1 -8
- package/dist-server/shared/workflow-run.contract.js +1 -8
- package/dist-server/test-utils/compat-database.js +1 -30
- package/dist-server/test-utils/request-log-fixtures.js +6 -134
- package/dist-server/utils/tokenizer.js +1 -8
- package/package.json +24 -20
- package/packages/cli/dist/bootstrap/codex-writable-roots.js +1 -113
- package/packages/cli/dist/bootstrap/crewx-cli.js +1 -84
- package/packages/cli/dist/builtin.js +5 -132
- package/packages/cli/dist/commands/agent.js +4 -118
- package/packages/cli/dist/commands/cal.js +2 -44
- package/packages/cli/dist/commands/db.js +4 -602
- package/packages/cli/dist/commands/detached.js +15 -620
- package/packages/cli/dist/commands/doctor.js +4 -649
- package/packages/cli/dist/commands/emit-trailer.js +2 -33
- package/packages/cli/dist/commands/execute.js +15 -294
- package/packages/cli/dist/commands/hook/command-marker.js +1 -5
- package/packages/cli/dist/commands/hook/install.js +8 -189
- package/packages/cli/dist/commands/hook/paths.js +1 -94
- package/packages/cli/dist/commands/hook/status.js +1 -86
- package/packages/cli/dist/commands/hook/uninstall.js +1 -71
- package/packages/cli/dist/commands/hook-dispatch.js +2 -180
- package/packages/cli/dist/commands/init.js +31 -437
- package/packages/cli/dist/commands/kill.js +1 -11
- package/packages/cli/dist/commands/log.js +3 -96
- package/packages/cli/dist/commands/parse-agent-message.js +1 -52
- package/packages/cli/dist/commands/parse-common-flags.js +3 -212
- package/packages/cli/dist/commands/ps.js +2 -117
- package/packages/cli/dist/commands/publish.js +7 -283
- package/packages/cli/dist/commands/query.js +16 -292
- package/packages/cli/dist/commands/registry.js +1 -33
- package/packages/cli/dist/commands/resolve-prompt.js +3 -76
- package/packages/cli/dist/commands/resolve-recipient.js +3 -47
- package/packages/cli/dist/commands/restart.js +18 -172
- package/packages/cli/dist/commands/result.js +1 -209
- package/packages/cli/dist/commands/shortcut.js +4 -253
- package/packages/cli/dist/commands/slack.js +16 -560
- package/packages/cli/dist/commands/stop.js +8 -119
- package/packages/cli/dist/commands/write-output.js +1 -24
- package/packages/cli/dist/index.js +1 -8
- package/packages/cli/dist/logging.js +10 -87
- package/packages/cli/dist/main.js +6 -289
- package/packages/cli/dist/register-builtin-tools.js +1 -9
- package/packages/cli/dist/slack/file-download.js +1 -134
- package/packages/cli/dist/slack/markdown.js +1 -33
- package/packages/cli/dist/utils/env-defaults.js +1 -15
- package/packages/cli/dist/utils/inherited-trace.js +1 -65
- package/packages/cli/dist/utils/product-package-root.js +1 -39
- package/packages/cli/dist/utils/sdk-compat.js +1 -120
- package/packages/cli/dist/utils/version.js +1 -28
- package/packages/cli/package.json +3 -2
- package/server.js +2 -110
- package/dist/assets/channel-MjQ5fAkq.js +0 -1
- package/dist/assets/classDiagram-LNE6IOMH-CtiLN69d.js +0 -1
- package/dist/assets/classDiagram-v2-MQ7JQ4JX-CtiLN69d.js +0 -1
- package/dist/assets/stateDiagram-v2-4JROLMXI-CYDiy-AH.js +0 -1
package/bin/cli-commands.js
CHANGED
|
@@ -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
|
-
|
|
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)})}
|