crewx 0.9.0-rc.146 → 0.9.0-rc.148
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-BwFarVFb.js → GitDiffEditor-BSN6Y_VC.js} +7 -7
- package/dist/assets/{MarketPage-BpD0NYUK.js → MarketPage-BsyF4lHT.js} +3 -3
- package/dist/assets/{PromptTab-Tu6b3P4y.js → PromptTab-Bz8K4xe6.js} +4 -4
- package/dist/assets/abnfDiagram-VCTEODGH-jOB0PTtL.js +1 -0
- package/dist/assets/arc-D1U6k3PI.js +1 -0
- package/dist/assets/architectureDiagram-5GKGNRK7-CKrj6CjD.js +36 -0
- package/dist/assets/blockDiagram-I7D4REHJ-CsrL08vU.js +129 -0
- package/dist/assets/c4Diagram-7LVT6UL2-B6__C0zv.js +38 -0
- package/dist/assets/channel-BDzxlKQg.js +1 -0
- package/dist/assets/{chunk-KFBOBJHC-BYrlBCuI.js → chunk-2Q5K7J3B-K3cQ2LQu.js} +1 -1
- package/dist/assets/chunk-5VM5RSS4-C_TAFgcF.js +15 -0
- package/dist/assets/chunk-F27PBJKO-BvaJEuNR.js +1 -0
- package/dist/assets/chunk-IMKFNOWR-DfZsoY9N.js +231 -0
- package/dist/assets/{chunk-TMUBEWPD-C2ThtHoT.js → chunk-JWPE2WC7-BmM3R2Qi.js} +1 -1
- package/dist/assets/chunk-POPQ4Y6H-B55TF3Ru.js +1 -0
- package/dist/assets/chunk-SVP7TREG-BcroxwQx.js +88 -0
- package/dist/assets/chunk-TICWLB2K-BynR0cBD.js +206 -0
- package/dist/assets/chunk-XXDRQBXY-CQf2O4J0.js +1 -0
- package/dist/assets/classDiagram-ZZMXUADV-B7_IXJnx.js +1 -0
- package/dist/assets/classDiagram-v2-VYDZK3BY-B7_IXJnx.js +1 -0
- package/dist/assets/cose-bilkent-JH36ORCC-Dp2MnsYx.js +1 -0
- package/dist/assets/{cssMode-BWAH4ysa.js → cssMode-DdeH_0vH.js} +1 -1
- package/dist/assets/cynefin-OW5HDTMX-DNliLC8A.js +184 -0
- package/dist/assets/cynefinDiagram-5FMLGOSQ-BnLfHAtl.js +62 -0
- package/dist/assets/cytoscape.esm-C5JX3QLV.js +331 -0
- package/dist/assets/dagre-GXQ25YYZ-B0CRhoJf.js +4 -0
- package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/assets/diagram-S7CK7UJ4-BzUq9An4.js +30 -0
- package/dist/assets/diagram-UQ7AKVKN-Cv5FsMwC.js +41 -0
- package/dist/assets/diagram-VSXAHHWV-Dl2Tetll.js +3 -0
- package/dist/assets/diagram-VX7I27RA-DAQrZVis.js +24 -0
- package/dist/assets/diagram-Z3DM3KII-BZMduo9O.js +24 -0
- package/dist/assets/ebnfDiagram-PWID7BFC-CCeYs1d1.js +1 -0
- package/dist/assets/erDiagram-RLTQ6QDP-DCIqYkwg.js +99 -0
- package/dist/assets/flowDiagram-HODETNUW-D8Hr2R2I.js +168 -0
- package/dist/assets/{freemarker2-CMAHVUZM.js → freemarker2-r4wxApUP.js} +1 -1
- package/dist/assets/ganttDiagram-EL5Y4UJY-B7-IVgsn.js +292 -0
- package/dist/assets/gitGraphDiagram-WWUBYQGX-C2XfUQ-X.js +106 -0
- package/dist/assets/{handlebars-C7hjKQpn.js → handlebars-DFvpcIcO.js} +1 -1
- package/dist/assets/{html-DnzIZNCw.js → html-CkEv0wV6.js} +1 -1
- package/dist/assets/{htmlMode-CdSI_ksK.js → htmlMode-Cok83WI8.js} +1 -1
- package/dist/assets/infoDiagram-27XIBGKW-CjgZblHF.js +2 -0
- package/dist/assets/ishikawaDiagram-5VMMS53U-BqJ3iSpm.js +70 -0
- package/dist/assets/{javascript-B-eRihcq.js → javascript-DqZ8SfxZ.js} +1 -1
- package/dist/assets/journeyDiagram-3NMN7TZE-BfES-hav.js +139 -0
- package/dist/assets/{jsonMode-DA2SORt2.js → jsonMode-CYBonOK6.js} +1 -1
- package/dist/assets/{kanban-definition-QRCXZQQD-BsUkwhZS.js → kanban-definition-UXKFOSKX-BIXe0cHu.js} +9 -8
- package/dist/assets/katex-C5jXJg4s.js +257 -0
- package/dist/assets/layout-DISPlbn7.js +1 -0
- package/dist/assets/linear-DsVyj2jo.js +1 -0
- package/dist/assets/{liquid-D6WdELjd.js → liquid-CueKempV.js} +1 -1
- package/dist/assets/{main-DR8ltN55.js → main-B3kAPKS3.js} +708 -585
- package/dist/assets/main-DIIQkwB_.css +10 -0
- package/dist/assets/{mdx-BXouQmj9.js → mdx-p-ij4JD6.js} +1 -1
- package/dist/assets/mindmap-definition-YA3MSWOX-DynE6BvN.js +96 -0
- package/dist/assets/pegDiagram-XKGWAZYB-x1E0p7Dd.js +1 -0
- package/dist/assets/pieDiagram-E7YTZNPT-CFBXNhTu.js +39 -0
- package/dist/assets/{python-BSbm0gVv.js → python-DrB6dLZU.js} +1 -1
- package/dist/assets/quadrantDiagram-AXDQQJYC-DCv0fRJh.js +7 -0
- package/dist/assets/railroadDiagram-O6MQD6OU-DRav2Q1O.js +1 -0
- package/dist/assets/{razor-ROGZokQz.js → razor-BvwPLTzH.js} +1 -1
- package/dist/assets/requirementDiagram-BXWQKSXE-wXuJIaeL.js +84 -0
- package/dist/assets/sankeyDiagram-P5KCCOFB-CDP7F0M1.js +40 -0
- package/dist/assets/sequenceDiagram-WJ2MYXX4-CUXv2iLV.js +162 -0
- package/dist/assets/sizeCapture-INFHLROL-DalqgTJH.js +1 -0
- package/dist/assets/stateDiagram-D77RDMKH-DIcz8FK2.js +1 -0
- package/dist/assets/stateDiagram-v2-MP3YSRHH-CEyXMP6-.js +1 -0
- package/dist/assets/swimlanes-42K2YHIH-hFY13NxM.js +1 -0
- package/dist/assets/swimlanesDiagram-VR7AAH4N-DW_mSHHb.js +8 -0
- package/dist/assets/timeline-definition-24CTP7MA-DZQnc0bj.js +120 -0
- package/dist/assets/{transformers.web-Dla8T0ND.js → transformers.web-ViR5nI20.js} +1 -1
- package/dist/assets/{tsMode-CDAzNI0l.js → tsMode-BmFNF_cf.js} +1 -1
- package/dist/assets/{typescript-BtiDrkmJ.js → typescript-C_0hifHX.js} +1 -1
- package/dist/assets/vennDiagram-4TSXK5OY-DL9ah76F.js +34 -0
- package/dist/assets/wardleyDiagram-VM6X3IG4-D46bPUzE.js +78 -0
- package/dist/assets/{xml-C0Wa-K83.js → xml-DuK5jnlh.js} +1 -1
- package/dist/assets/xychartDiagram-S5SC5T6Z-BKe3G6QA.js +7 -0
- package/dist/assets/{yaml-DlIjsQR6.js → yaml-wUMNT_xW.js} +1 -1
- package/dist/index.html +3 -3
- package/dist/ui-build.json +1 -1
- package/dist-apps/apps/html-viewer/SKILL.md +68 -0
- package/dist-apps/apps/html-viewer/manifest.json +91 -0
- package/dist-apps/apps/html-viewer/ui/index.html +199 -0
- package/dist-apps/apps/html-viewer/ui/state.json +3 -0
- package/dist-apps/bundle-index.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 +26 -22
- 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/arc-DqpOTUtv.js +0 -1
- package/dist/assets/architectureDiagram-UYN6MBPD-BNow2k_L.js +0 -36
- package/dist/assets/blockDiagram-ZHA2E4KO-C8zBve69.js +0 -121
- package/dist/assets/c4Diagram-6F5ED5ID-Cc1KiXtX.js +0 -10
- package/dist/assets/channel-DRq6aYdh.js +0 -1
- package/dist/assets/chunk-5HRBRIJM-C0k9ZAT-.js +0 -1
- package/dist/assets/chunk-7U56Z5CX-Z9uS6TDy.js +0 -220
- package/dist/assets/chunk-ASOPGD6M-BN6HHu0J.js +0 -1
- package/dist/assets/chunk-T2TOU4HS-i8SLlvIV.js +0 -164
- package/dist/assets/classDiagram-LNE6IOMH-DxYwZ1hr.js +0 -1
- package/dist/assets/classDiagram-v2-MQ7JQ4JX-DxYwZ1hr.js +0 -1
- package/dist/assets/cytoscape.esm-BiciSPf8.js +0 -331
- package/dist/assets/dagre-4EVJKHTY-Bbg5laLS.js +0 -4
- package/dist/assets/diagram-QW4FP2JN-CP7K9xmh.js +0 -24
- package/dist/assets/erDiagram-6RL3IURR-BWhKPrTY.js +0 -51
- package/dist/assets/flowDiagram-7ASYPVHJ-BIXDnV6d.js +0 -160
- package/dist/assets/ganttDiagram-NTVNEXSI-zdLUY4xX.js +0 -257
- package/dist/assets/gitGraph-YCYPL57B-BCOr73LU.js +0 -133
- package/dist/assets/gitGraphDiagram-NRZ2UAAF-CmV7iwwG.js +0 -65
- package/dist/assets/graph-BlwPajkw.js +0 -1
- package/dist/assets/infoDiagram-A4XQUW5V-d-Oe4BJ8.js +0 -2
- package/dist/assets/journeyDiagram-G5WM74LC-BTTrZl59.js +0 -139
- package/dist/assets/katex-DkKDou_j.js +0 -257
- package/dist/assets/layout-Bvwu4dCi.js +0 -1
- package/dist/assets/linear-B7g0AkMJ.js +0 -1
- package/dist/assets/main-CHTRJqcd.css +0 -10
- package/dist/assets/mindmap-definition-GWI6TPTV--Fx3cIso.js +0 -95
- package/dist/assets/pieDiagram-YF2LJOPJ-96nEqRLQ.js +0 -30
- package/dist/assets/quadrantDiagram-OS5C2QUG-DaPjN4y-.js +0 -7
- package/dist/assets/requirementDiagram-MIRIMTAZ-Rf044HhI.js +0 -52
- package/dist/assets/sankeyDiagram-Y46BX6SQ-DiCe9Xjb.js +0 -8
- package/dist/assets/sequenceDiagram-G6AWOVSC-mEYk003A.js +0 -122
- package/dist/assets/stateDiagram-MAYHULR4-Ci4WYula.js +0 -1
- package/dist/assets/stateDiagram-v2-4JROLMXI-Daw5Msh1.js +0 -1
- package/dist/assets/timeline-definition-U7ZMHBDA-vEh01Xjd.js +0 -61
- package/dist/assets/xychartDiagram-6QU3TZC5-BExthcqI.js +0 -7
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)})}
|