crewx 0.8.1 → 0.8.2-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +268 -268
  2. package/bin/cli-commands.js +34 -0
  3. package/bin/crewx-lib.js +213 -108
  4. package/bin/crewx-ui.js +83 -83
  5. package/bin/crewx.js +219 -147
  6. package/bin/launcher-flags.js +29 -0
  7. package/bin/package.json +1 -1
  8. package/dist/assets/{MarketPage-Dwsg6K-B.js → MarketPage-njRHlSSN.js} +1 -1
  9. package/dist/assets/{PromptTab-DVKc7hJY.js → PromptTab-CNyClpEe.js} +1 -1
  10. package/dist/assets/{_baseUniq-wjlVo2E6.js → _baseUniq-CGNNUfN7.js} +1 -1
  11. package/dist/assets/{arc-BfPgRtzW.js → arc-BEN-1A69.js} +1 -1
  12. package/dist/assets/{architectureDiagram-Q4EWVU46-ewcueFAG.js → architectureDiagram-Q4EWVU46-fAPvGzXk.js} +1 -1
  13. package/dist/assets/{blockDiagram-DXYQGD6D-TxlbbvKn.js → blockDiagram-DXYQGD6D-BWrb7uua.js} +1 -1
  14. package/dist/assets/{c4Diagram-AHTNJAMY-C1lT_bl_.js → c4Diagram-AHTNJAMY-CbnLz81q.js} +1 -1
  15. package/dist/assets/channel-uEnl63Ym.js +1 -0
  16. package/dist/assets/chatgpt-logo-dark.svg +15 -15
  17. package/dist/assets/chatgpt-logo.svg +15 -15
  18. package/dist/assets/{chunk-4BX2VUAB-C41j2mCL.js → chunk-4BX2VUAB-BopMVv1Q.js} +1 -1
  19. package/dist/assets/{chunk-4TB4RGXK-HNNsUbz0.js → chunk-4TB4RGXK-Axjc-DMR.js} +1 -1
  20. package/dist/assets/{chunk-55IACEB6-qtCgO0r2.js → chunk-55IACEB6-BVzu25a2.js} +1 -1
  21. package/dist/assets/{chunk-EDXVE4YY-BSnDYtsd.js → chunk-EDXVE4YY-Csh0IKkY.js} +1 -1
  22. package/dist/assets/{chunk-FMBD7UC4-DyHRLQqX.js → chunk-FMBD7UC4-D3yW6Ykv.js} +1 -1
  23. package/dist/assets/{chunk-OYMX7WX6-CCjfi6WS.js → chunk-OYMX7WX6-CDzLbKmY.js} +1 -1
  24. package/dist/assets/{chunk-QZHKN3VN-COLty8kd.js → chunk-QZHKN3VN-CqYP7txP.js} +1 -1
  25. package/dist/assets/{chunk-YZCP3GAM-CHUUnGeN.js → chunk-YZCP3GAM-CIz2ApJG.js} +1 -1
  26. package/dist/assets/classDiagram-6PBFFD2Q-CU98S3yn.js +1 -0
  27. package/dist/assets/classDiagram-v2-HSJHXN6E-CU98S3yn.js +1 -0
  28. package/dist/assets/clone-D3Eqsbb8.js +1 -0
  29. package/dist/assets/{cose-bilkent-S5V4N54A-CSip-V2g.js → cose-bilkent-S5V4N54A-DgVG9_nb.js} +1 -1
  30. package/dist/assets/{dagre-KV5264BT-DkdpnWhv.js → dagre-KV5264BT-DnNIMI1A.js} +1 -1
  31. package/dist/assets/{diagram-5BDNPKRD-PH4qc6PV.js → diagram-5BDNPKRD-asGr2q6a.js} +1 -1
  32. package/dist/assets/{diagram-G4DWMVQ6-Cg5xZcjx.js → diagram-G4DWMVQ6-hwyZkwNx.js} +1 -1
  33. package/dist/assets/{diagram-MMDJMWI5-soKmeTCW.js → diagram-MMDJMWI5-BJbIxezj.js} +1 -1
  34. package/dist/assets/{diagram-TYMM5635-Daq5Mihu.js → diagram-TYMM5635-JB2YJBVu.js} +1 -1
  35. package/dist/assets/{erDiagram-SMLLAGMA-kr2OtY0Y.js → erDiagram-SMLLAGMA-i1KkUgG6.js} +1 -1
  36. package/dist/assets/{flowDiagram-DWJPFMVM-DQZCb8gm.js → flowDiagram-DWJPFMVM-62cwXjLB.js} +1 -1
  37. package/dist/assets/{ganttDiagram-T4ZO3ILL-BHkn485T.js → ganttDiagram-T4ZO3ILL-BDhku_zz.js} +1 -1
  38. package/dist/assets/{gitGraphDiagram-UUTBAWPF-FaCyYFmC.js → gitGraphDiagram-UUTBAWPF-DkHe0Kwk.js} +1 -1
  39. package/dist/assets/{graph-BVJlrP6V.js → graph-BnMMHCuQ.js} +1 -1
  40. package/dist/assets/{infoDiagram-42DDH7IO-DJOWkKdM.js → infoDiagram-42DDH7IO-V7zg8GAV.js} +1 -1
  41. package/dist/assets/{ishikawaDiagram-UXIWVN3A-VfpvNaIf.js → ishikawaDiagram-UXIWVN3A-CTtEO2wl.js} +1 -1
  42. package/dist/assets/{journeyDiagram-VCZTEJTY-CPzsak-v.js → journeyDiagram-VCZTEJTY-NxQMTN2m.js} +1 -1
  43. package/dist/assets/{kanban-definition-6JOO6SKY-DFqLDBU0.js → kanban-definition-6JOO6SKY-BHBrmGg3.js} +1 -1
  44. package/dist/assets/{layout-CCSbNPHm.js → layout-DutU1eng.js} +1 -1
  45. package/dist/assets/{linear-C4T7PCKE.js → linear-Czvrvocq.js} +1 -1
  46. package/dist/assets/{main-CELBpK6r.js → main-D0PuDE6-.js} +230 -226
  47. package/dist/assets/{min-CGQNEYGh.js → min-CI38XtLs.js} +1 -1
  48. package/dist/assets/{mindmap-definition-QFDTVHPH-AuU1EqwS.js → mindmap-definition-QFDTVHPH-CbFeHoxp.js} +1 -1
  49. package/dist/assets/{pieDiagram-DEJITSTG-CopkCZwp.js → pieDiagram-DEJITSTG-MV4uB5yA.js} +1 -1
  50. package/dist/assets/{quadrantDiagram-34T5L4WZ-lMKrSv_t.js → quadrantDiagram-34T5L4WZ-D0a8e2mx.js} +1 -1
  51. package/dist/assets/{requirementDiagram-MS252O5E-dWUpHOFb.js → requirementDiagram-MS252O5E-CeTlv4na.js} +1 -1
  52. package/dist/assets/{sankeyDiagram-XADWPNL6-C8UQx9Bb.js → sankeyDiagram-XADWPNL6-D1E3xq9q.js} +1 -1
  53. package/dist/assets/{sequenceDiagram-FGHM5R23-CUVNIItJ.js → sequenceDiagram-FGHM5R23-BO1RXtYs.js} +1 -1
  54. package/dist/assets/{stateDiagram-FHFEXIEX-Ct0GamGl.js → stateDiagram-FHFEXIEX-AhFKkuPE.js} +1 -1
  55. package/dist/assets/stateDiagram-v2-QKLJ7IA2-gv2g1MYi.js +1 -0
  56. package/dist/assets/{timeline-definition-GMOUNBTQ-ul8Po7f7.js → timeline-definition-GMOUNBTQ-BMVxUhID.js} +1 -1
  57. package/dist/assets/{vennDiagram-DHZGUBPP-B4AOWQnP.js → vennDiagram-DHZGUBPP-YFiJZns6.js} +1 -1
  58. package/dist/assets/{wardley-RL74JXVD-Dr7Wp3AJ.js → wardley-RL74JXVD-JlCdJekg.js} +1 -1
  59. package/dist/assets/{wardleyDiagram-NUSXRM2D-Ck70faXX.js → wardleyDiagram-NUSXRM2D-BLn2PZq9.js} +1 -1
  60. package/dist/assets/{xychartDiagram-5P7HB3ND-Bsy5-cNt.js → xychartDiagram-5P7HB3ND-DNOUK9or.js} +1 -1
  61. package/dist/index.html +12 -12
  62. package/dist-electron/main.js +153 -116
  63. package/dist-electron/overlay.js +102 -65
  64. package/dist-electron/package.json +1 -0
  65. package/dist-electron/preload.js +8 -8
  66. package/dist-server/bootstrap/crewx-server.js +19 -10
  67. package/dist-server/repository/box.repository.js +20 -20
  68. package/dist-server/repository/project.repository.js +13 -13
  69. package/dist-server/repository/request-log.repository.js +10 -10
  70. package/dist-server/repository/task.repository.js +72 -72
  71. package/dist-server/repository/thread.repository.js +57 -57
  72. package/package.json +6 -6
  73. package/packages/cli/dist/bootstrap/crewx-cli.js +12 -0
  74. package/packages/cli/dist/commands/agent.js +23 -23
  75. package/packages/cli/dist/commands/init.js +19 -19
  76. package/packages/cli/dist/commands/parse-common-flags.d.ts +19 -3
  77. package/packages/cli/dist/commands/parse-common-flags.js +46 -6
  78. package/packages/cli/dist/commands/registry.d.ts +13 -0
  79. package/packages/cli/dist/commands/registry.js +29 -0
  80. package/packages/cli/dist/commands/task-db.js +7 -7
  81. package/packages/cli/dist/examples/deny-secrets-plugin.d.ts +22 -0
  82. package/packages/cli/dist/examples/deny-secrets-plugin.js +40 -0
  83. package/packages/cli/dist/main.js +134 -68
  84. package/packages/cli/dist/plugins/examples/echo-hook.d.ts +24 -0
  85. package/packages/cli/dist/plugins/examples/echo-hook.js +60 -0
  86. package/packages/cli/dist/plugins/examples/verify-echo-hook.d.ts +8 -0
  87. package/packages/cli/dist/plugins/examples/verify-echo-hook.js +47 -0
  88. package/packages/cli/dist/plugins/sqlite-tracing.d.ts +11 -0
  89. package/packages/cli/dist/plugins/sqlite-tracing.js +19 -0
  90. package/packages/cli/dist/schema/tasks.d.ts +7 -0
  91. package/packages/cli/dist/schema/tasks.js +48 -0
  92. package/packages/cli/package.json +52 -52
  93. package/scripts/build-manual.mjs +266 -266
  94. package/scripts/emit-dist-server-package-json.mjs +7 -7
  95. package/scripts/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  96. package/scripts/postinstall.mjs +44 -44
  97. package/scripts/smoke-tarball.mjs +285 -285
  98. package/scripts/snapshot-msg-list.sh +52 -52
  99. package/server.js +167 -164
  100. package/dist/assets/channel-BP4PNMmz.js +0 -1
  101. package/dist/assets/classDiagram-6PBFFD2Q-Upr3UAcM.js +0 -1
  102. package/dist/assets/classDiagram-v2-HSJHXN6E-Upr3UAcM.js +0 -1
  103. package/dist/assets/clone-B8BP7ReZ.js +0 -1
  104. package/dist/assets/stateDiagram-v2-QKLJ7IA2-CFBLQDEx.js +0 -1
  105. package/dist-server/domain/task/dto/project-usage.dto.js +0 -38
  106. package/dist-server/domain/thread/dto/send-message.dto.js +0 -10
package/bin/crewx.js CHANGED
@@ -1,147 +1,219 @@
1
- #!/usr/bin/env node
2
- /**
3
- * crewx launcher
4
- *
5
- * Usage:
6
- * crewx → Web dashboard + browser auto-open (default)
7
- * crewx --web [--port N] NestJS web server (default port: 8150, no auto-open)
8
- * crewx --no-open Web server only (no browser auto-open)
9
- * crewx --desktop Electron dashboard
10
- * crewx --overlay Electron floating overlay
11
- * crewx --electron → Electron dashboard (backward compat, same as --desktop)
12
- * crewx --version → CLI version output
13
- * crewx --help → CLI help output
14
- * crewx x <args> → CLI execute subcommand (forwarded to packages/cli)
15
- * crewx q <args> → CLI query subcommand
16
- * crewx agent <args> → CLI agent subcommand
17
- * crewx <subcommand> → Any other CLI subcommand
18
- */
19
- import { spawn } from 'child_process';
20
- import { fileURLToPath } from 'url';
21
- import { dirname, join } from 'path';
22
- import { createRequire } from 'module';
23
- import { setupSignalForwarding, resolveRoute, parseWebPort } from './crewx-lib.js';
24
-
25
- const __filename = fileURLToPath(import.meta.url);
26
- const __dirname = dirname(__filename);
27
-
28
- function getElectronSpawnEnv() {
29
- const env = { ...process.env };
30
- delete env.ELECTRON_RUN_AS_NODE;
31
- env.NODE_ENV = 'production'; // Force production — prevents users from bypassing FREE limits via env
32
- return env;
33
- }
34
-
35
- function launchElectron(entryFile) {
36
- const require = createRequire(import.meta.url);
37
- let electronPath;
38
- try {
39
- electronPath = require('electron');
40
- } catch {
41
- return false; // Electron not installed
42
- }
43
-
44
- if (process.env.ELECTRON_RUN_AS_NODE) {
45
- console.warn(
46
- '[crewx] Ignoring ELECTRON_RUN_AS_NODE for Electron UI launch (it forces Electron into Node mode).',
47
- );
48
- }
49
-
50
- const child = spawn(String(electronPath), [entryFile], {
51
- stdio: 'inherit',
52
- env: getElectronSpawnEnv(),
53
- detached: true, // Separate process group so Ctrl+C doesn't reach Electron directly
54
- });
55
-
56
- setupSignalForwarding(child, { escalateKill: true, detached: true });
57
-
58
- child.on('exit', (code) => process.exit(code ?? 0));
59
- child.on('error', (err) => {
60
- console.error('Failed to launch Electron:', err);
61
- process.exit(1);
62
- });
63
-
64
- return true;
65
- }
66
-
67
- function launchWeb(extraArgs = [], { openBrowser = false } = {}) {
68
- const serverScript = join(__dirname, '..', 'server.js');
69
-
70
- // Parse --port from extraArgs and inject via spawn env (no process.env pollution)
71
- const env = { ...process.env, NODE_ENV: 'production' }; // Force production — prevents users from bypassing FREE limits via env
72
- const portResult = parseWebPort(extraArgs);
73
- if (portResult?.error) {
74
- console.error(`❌ ${portResult.error}`);
75
- process.exit(1);
76
- }
77
- if (portResult?.port) {
78
- env.PORT = String(portResult.port);
79
- }
80
- if (openBrowser) {
81
- env.CREWX_OPEN_BROWSER = '1';
82
- }
83
-
84
- const child = spawn(process.execPath, [serverScript], {
85
- stdio: 'inherit',
86
- env,
87
- });
88
-
89
- setupSignalForwarding(child);
90
-
91
- child.on('exit', (code) => process.exit(code ?? 0));
92
- child.on('error', (err) => {
93
- console.error('Failed to start web server:', err);
94
- process.exit(1);
95
- });
96
- }
97
-
98
- function forwardToCli(cliArgs) {
99
- const serverScript = join(__dirname, '..', 'server.js');
100
- const child = spawn(process.execPath, [serverScript, 'cli', ...cliArgs], {
101
- stdio: 'inherit',
102
- env: { ...process.env, NODE_ENV: 'production' }, // Force production — prevents users from bypassing FREE limits via env
103
- });
104
-
105
- setupSignalForwarding(child);
106
-
107
- child.on('exit', (code) => process.exit(code ?? 0));
108
- child.on('error', (err) => {
109
- console.error('Failed to run CLI subcommand:', err);
110
- process.exit(1);
111
- });
112
- }
113
-
114
- // Route: UI flags first, then CLI (any args), then default (no args → web + browser open)
115
- const args = process.argv.slice(2);
116
- const { route, routeArgs } = resolveRoute(args);
117
-
118
- if (route === 'web') {
119
- launchWeb(routeArgs);
120
- } else if (route === 'overlay') {
121
- const entryFile = join(__dirname, '..', 'dist-electron', 'overlay.js');
122
- const launched = launchElectron(entryFile);
123
- if (!launched) {
124
- console.error('');
125
- console.error(' Electron is not installed.');
126
- console.error('');
127
- console.error(' --overlay requires Electron. Install it:');
128
- console.error('');
129
- console.error(' npm install -g electron');
130
- console.error(' # or in this project:');
131
- console.error(' npm install --save-dev electron');
132
- console.error('');
133
- process.exit(1);
134
- }
135
- } else if (route === 'electron-explicit') {
136
- const entryFile = join(__dirname, '..', 'dist-electron', 'main.js');
137
- const launched = launchElectron(entryFile);
138
- if (!launched) {
139
- console.warn('[crewx] Electron not found — falling back to web mode.');
140
- launchWeb(routeArgs);
141
- }
142
- } else if (route === 'cli') {
143
- forwardToCli(routeArgs);
144
- } else {
145
- // web-default: no arguments → web dashboard + browser auto-open
146
- launchWeb(routeArgs, { openBrowser: true });
147
- }
1
+ #!/usr/bin/env node
2
+ /**
3
+ * crewx launcher
4
+ *
5
+ * Usage:
6
+ * crewx → Web dashboard + browser auto-open (default)
7
+ * crewx serve [--port N] Web server (explicit)
8
+ * [--token T] MCP bearer token (⚠️ prefer --token-file in shared shells)
9
+ * [--token-file PATH] Read token from file
10
+ * [--no-open] Do not open browser
11
+ * crewx electron [--overlay] → Electron desktop or overlay window
12
+ * crewx --version → CLI version output
13
+ * crewx --help → CLI help output
14
+ * crewx q|x|agent|... <args> → CLI subcommand (forwarded to packages/cli)
15
+ */
16
+ import { spawn } from 'child_process';
17
+ import { readFileSync, mkdirSync } from 'fs';
18
+ import { fileURLToPath } from 'url';
19
+ import { dirname, join } from 'path';
20
+ import { homedir } from 'os';
21
+ import { createRequire } from 'module';
22
+ import { setupSignalForwarding, resolveRoute, parseServeFlags } from './crewx-lib.js';
23
+
24
+ const __filename = fileURLToPath(import.meta.url);
25
+ const __dirname = dirname(__filename);
26
+
27
+ function getElectronSpawnEnv() {
28
+ const env = { ...process.env };
29
+ delete env.ELECTRON_RUN_AS_NODE;
30
+ env.NODE_ENV = 'production'; // Force production — prevents users from bypassing FREE limits via env
31
+ return env;
32
+ }
33
+
34
+ /**
35
+ * Launch Electron with the given entry file.
36
+ * Returns false when Electron is not installed (fail-fast — caller must handle).
37
+ */
38
+ function launchElectron(entryFile, routeArgs = []) {
39
+ const require = createRequire(import.meta.url);
40
+ let electronPath;
41
+ try {
42
+ electronPath = require('electron');
43
+ } catch {
44
+ return false; // Electron not installed
45
+ }
46
+
47
+ if (process.env.ELECTRON_RUN_AS_NODE) {
48
+ console.warn(
49
+ '[crewx] Ignoring ELECTRON_RUN_AS_NODE for Electron UI launch (it forces Electron into Node mode).',
50
+ );
51
+ }
52
+
53
+ const child = spawn(String(electronPath), [entryFile, ...routeArgs], {
54
+ stdio: 'inherit',
55
+ env: getElectronSpawnEnv(),
56
+ detached: true, // Separate process group so Ctrl+C doesn't reach Electron directly
57
+ });
58
+
59
+ setupSignalForwarding(child, { escalateKill: true, detached: true });
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
+
67
+ return true;
68
+ }
69
+
70
+ /**
71
+ * Launch the web server with parsed serve flags.
72
+ * Token injection: --token → MCP_BEARER_TOKEN env; --token-file → read + inject.
73
+ */
74
+ function launchWeb(serveArgs = [], { openBrowser = false } = {}) {
75
+ // Ensure ~/.crewx/ directory and tasks schema before spawning the NestJS server.
76
+ // Schema owner = CLI; launcher is the enforcement point so the server can assume DB exists.
77
+ const require = createRequire(import.meta.url);
78
+ const cliSchemaPath = join(__dirname, '..', 'packages', 'cli', 'dist', 'schema', 'tasks.js');
79
+ const { ensureTasksSchema } = require(cliSchemaPath);
80
+ const dbDir = join(homedir(), '.crewx');
81
+ mkdirSync(dbDir, { recursive: true });
82
+ const BetterSqlite3 = require('better-sqlite3');
83
+ const db = new BetterSqlite3(join(dbDir, 'crewx.db'));
84
+ ensureTasksSchema(db);
85
+ db.close();
86
+
87
+ const serverScript = join(__dirname, '..', 'server.js');
88
+
89
+ const flagsResult = parseServeFlags(serveArgs);
90
+ if (flagsResult.help) {
91
+ process.stdout.write(
92
+ 'Usage: crewx serve [options]\n' +
93
+ '\n' +
94
+ 'Options:\n' +
95
+ ' --port <N> Port to listen on (default: auto)\n' +
96
+ ' --token <T> MCP bearer token\n' +
97
+ ' --token-file <path> Read token from file\n' +
98
+ ' --no-open Do not open browser automatically\n' +
99
+ ' --help, -h Show this help\n',
100
+ );
101
+ process.exit(0);
102
+ }
103
+ if (flagsResult.error) {
104
+ console.error(`❌ ${flagsResult.error}`);
105
+ if (flagsResult.error.startsWith('Unknown option')) {
106
+ process.stderr.write(
107
+ ' Did you mean: crewx serve --port <N>\n' +
108
+ ' Run `crewx serve --help` for usage.\n',
109
+ );
110
+ }
111
+ process.exit(flagsResult.error.startsWith('Unknown option') ? 2 : 1);
112
+ }
113
+
114
+ const { port, token, tokenFile, noOpen } = flagsResult;
115
+
116
+ const env = { ...process.env, NODE_ENV: 'production' }; // Force production — prevents users from bypassing FREE limits via env
117
+
118
+ if (port) {
119
+ env.PORT = String(port);
120
+ }
121
+
122
+ if (token) {
123
+ env.MCP_BEARER_TOKEN = token;
124
+ process.stderr.write(
125
+ 'ℹ️ Tip: use --token-file to avoid exposing token in shell history.\n',
126
+ );
127
+ } else if (tokenFile) {
128
+ let content;
129
+ try {
130
+ content = readFileSync(tokenFile, 'utf8').trim();
131
+ } catch (err) {
132
+ console.error(`❌ --token-file not readable: ${tokenFile}`);
133
+ console.error(` ${err.message}`);
134
+ process.exit(1);
135
+ }
136
+ if (!content) {
137
+ console.error(`❌ --token-file is empty: ${tokenFile}`);
138
+ process.exit(1);
139
+ }
140
+ env.MCP_BEARER_TOKEN = content;
141
+ }
142
+
143
+ if (openBrowser && !noOpen) {
144
+ env.CREWX_OPEN_BROWSER = '1';
145
+ }
146
+
147
+ const child = spawn(process.execPath, [serverScript], {
148
+ stdio: 'inherit',
149
+ env,
150
+ });
151
+
152
+ setupSignalForwarding(child);
153
+
154
+ child.on('exit', (code) => process.exit(code ?? 0));
155
+ child.on('error', (err) => {
156
+ console.error('Failed to start web server:', err);
157
+ process.exit(1);
158
+ });
159
+ }
160
+
161
+ function forwardToCli(cliArgs) {
162
+ const serverScript = join(__dirname, '..', 'server.js');
163
+ const child = spawn(process.execPath, [serverScript, 'cli', ...cliArgs], {
164
+ stdio: 'inherit',
165
+ env: { ...process.env, NODE_ENV: 'production' }, // Force production — prevents users from bypassing FREE limits via env
166
+ });
167
+
168
+ setupSignalForwarding(child);
169
+
170
+ child.on('exit', (code) => process.exit(code ?? 0));
171
+ child.on('error', (err) => {
172
+ console.error('Failed to run CLI subcommand:', err);
173
+ process.exit(1);
174
+ });
175
+ }
176
+
177
+ // Route
178
+ const args = process.argv.slice(2);
179
+ const { route, routeArgs, error } = resolveRoute(args);
180
+
181
+ if (route === 'serve') {
182
+ // Explicit web server launch
183
+ launchWeb(routeArgs, { openBrowser: false });
184
+ } else if (route === 'electron') {
185
+ // Electron: desktop (default) or overlay (--overlay flag)
186
+ const isOverlay = routeArgs.includes('--overlay');
187
+ const entryFile = join(
188
+ __dirname, '..', 'dist-electron',
189
+ isOverlay ? 'overlay.js' : 'main.js',
190
+ );
191
+ const launched = launchElectron(entryFile, isOverlay ? [] : []);
192
+ if (!launched) {
193
+ console.error('');
194
+ console.error(' ❌ Electron is not installed.');
195
+ console.error('');
196
+ console.error(' This command requires Electron. Install it:');
197
+ console.error('');
198
+ console.error(' npm install -g electron');
199
+ console.error(' # or in this project:');
200
+ console.error(' npm install --save-dev electron');
201
+ console.error('');
202
+ console.error(' Alternatively, use: crewx serve (web mode)');
203
+ console.error('');
204
+ process.exit(1);
205
+ }
206
+ } else if (route === 'cli') {
207
+ forwardToCli(routeArgs);
208
+ } else if (route === 'web-default') {
209
+ // No arguments → web dashboard + browser auto-open
210
+ launchWeb(routeArgs, { openBrowser: true });
211
+ } else if (route === 'error') {
212
+ // Unknown command or option
213
+ console.error(`❌ ${error}`);
214
+ process.exit(2);
215
+ } else {
216
+ // Should not happen — guard against future routing additions
217
+ console.error(`❌ Internal routing error: unknown route "${route}"`);
218
+ process.exit(1);
219
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * SSOT for launcher-owned flags.
3
+ * Imported by bin/crewx-lib.js and bin/crewx.js.
4
+ */
5
+
6
+ /** Flags owned by the launcher (bin/crewx.js), not the CLI engine. */
7
+ export const LAUNCHER_OWNED_FLAGS = new Set([
8
+ '--port',
9
+ '--no-open',
10
+ '--overlay',
11
+ '--token',
12
+ '--token-file',
13
+ ]);
14
+
15
+ /**
16
+ * Build a hint message for a launcher-owned flag used in wrong context.
17
+ * @param {string} flag
18
+ * @returns {string}
19
+ */
20
+ export function buildHintMessage(flag) {
21
+ const hints = {
22
+ '--port': 'use: crewx serve --port <N>',
23
+ '--token': 'use: crewx serve --token <T>',
24
+ '--token-file': 'use: crewx serve --token-file <PATH>',
25
+ '--no-open': 'use: crewx serve --no-open',
26
+ '--overlay': 'use: crewx electron --overlay',
27
+ };
28
+ return hints[flag] ?? '';
29
+ }
package/bin/package.json CHANGED
@@ -1 +1 @@
1
- { "type": "module" }
1
+ { "type": "module" }
@@ -1,4 +1,4 @@
1
- import{aO as w,aP as we,aQ as f,aR as N,aS as Se,aT as u,aU as e,aV as ae,aW as se,aX as K,aY as j,aZ as re,a_ as Ie,a$ as le,b0 as U,b1 as ze,b2 as Re,b3 as Ce,b4 as ie,b5 as Me,b6 as De}from"./main-CELBpK6r.js";/**
1
+ import{aO as w,aP as we,aQ as f,aR as N,aS as Se,aT as u,aU as e,aV as ae,aW as se,aX as K,aY as j,aZ as re,a_ as Ie,a$ as le,b0 as U,b1 as ze,b2 as Re,b3 as Ce,b4 as ie,b5 as Me,b6 as De}from"./main-D0PuDE6-.js";/**
2
2
  * @license lucide-react v0.563.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{aO as H,aR as B,aT as d,aU as r,b7 as ve,aY as J,b1 as ke,b8 as we,aQ as F,b9 as ce,aX as de,ba as U,b4 as je,bb as Ne,bc as Ce,bd as Le,a$ as _e,be as ue,bf as Ee,bg as Se,bh as De,bi as Me,bj as Ae,bk as Te,bl as $e,bm as Ie,bn as Pe,bo as Re,bp as Be,bq as ze,br as Oe,bs as qe,bt as Fe,bu as Ve,bv as He,bw as Ke,bx as Ue,by as Qe,bz as We,bA as Xe,bB as ee}from"./main-CELBpK6r.js";/**
1
+ import{aO as H,aR as B,aT as d,aU as r,b7 as ve,aY as J,b1 as ke,b8 as we,aQ as F,b9 as ce,aX as de,ba as U,b4 as je,bb as Ne,bc as Ce,bd as Le,a$ as _e,be as ue,bf as Ee,bg as Se,bh as De,bi as Me,bj as Ae,bk as Te,bl as $e,bm as Ie,bn as Pe,bo as Re,bp as Be,bq as ze,br as Oe,bs as qe,bt as Fe,bu as Ve,bv as He,bw as Ke,bx as Ue,by as Qe,bz as We,bA as Xe,bB as ee}from"./main-D0PuDE6-.js";/**
2
2
  * @license lucide-react v0.563.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1 +1 @@
1
- import{bN as S,cb as ln,aH as A,bL as P,aG as W,cc as gn,cd as dn,ce as hn,cf as z,cg as pn,ch as An,ci as m,bO as N,bT as U,bW as R,cj as _n,bR as cn,ck as on,cl as wn,aI as V,cm as On,cn as b}from"./main-CELBpK6r.js";var Pn="[object Symbol]";function x(n){return typeof n=="symbol"||S(n)&&ln(n)==Pn}function vn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var B=P?P.prototype:void 0,H=B?B.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return vn(n,k)+"";if(x(n))return H?H.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(){}function En(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function Tn(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function Rn(n){return n!==n}function In(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function bn(n,r,e){return r===r?In(n,r,e):Tn(n,Rn,e)}function Ln(n,r){var e=n==null?0:n.length;return!!e&&bn(n,r,0)>-1}function M(n){return W(n)?gn(n):dn(n)}var Sn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xn=/^\w*$/;function $(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||x(n)?!0:xn.test(n)||!Sn.test(n)||r!=null&&n in Object(r)}var Mn=500;function $n(n){var r=hn(n,function(i){return e.size===Mn&&e.clear(),i}),e=r.cache;return r}var Cn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Gn=/\\(\\)?/g,Dn=$n(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Cn,function(e,i,f,t){r.push(f?t.replace(Gn,"$1"):i||e)}),r});function Fn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:$(n,r)?[n]:Dn(Fn(n))}function I(n){if(typeof n=="string"||x(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[I(r[e++])];return e&&e==i?n:void 0}function mn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var K=P?P.isConcatSpreadable:void 0;function Nn(n){return A(n)||z(n)||!!(K&&n&&n[K])}function Kr(n,r,e,i,f){var t=-1,s=n.length;for(e||(e=Nn),f||(f=[]);++t<s;){var u=n[t];e(u)?rn(f,u):i||(f[f.length]=u)}return f}function Un(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var s=n[e];r(s,e,n)&&(t[f++]=s)}return t}function Bn(){return[]}var Hn=Object.prototype,Kn=Hn.propertyIsEnumerable,q=Object.getOwnPropertySymbols,qn=q?function(n){return n==null?[]:(n=Object(n),en(q(n),function(r){return Kn.call(n,r)}))}:Bn;function Zn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function Z(n){return Zn(n,M,qn)}var Yn="__lodash_hash_undefined__";function Xn(n){return this.__data__.set(n,Yn),this}function Jn(n){return this.__data__.has(n)}function v(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new pn;++r<e;)this.add(n[r])}v.prototype.add=v.prototype.push=Xn;v.prototype.has=Jn;function Qn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var Wn=1,zn=2;function fn(n,r,e,i,f,t){var s=e&Wn,u=n.length,a=r.length;if(u!=a&&!(s&&a>u))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,c=e&zn?new v:void 0;for(t.set(n,r),t.set(r,n);++l<u;){var p=n[l],_=r[l];if(i)var o=s?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(o!==void 0){if(o)continue;d=!1;break}if(c){if(!Qn(r,function(w,O){if(!tn(c,O)&&(p===w||f(p,w,e,i,t)))return c.push(O)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Vn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function C(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var kn=1,jn=2,nr="[object Boolean]",rr="[object Date]",er="[object Error]",ir="[object Map]",tr="[object Number]",fr="[object RegExp]",sr="[object Set]",ur="[object String]",ar="[object Symbol]",lr="[object ArrayBuffer]",gr="[object DataView]",Y=P?P.prototype:void 0,L=Y?Y.valueOf:void 0;function dr(n,r,e,i,f,t,s){switch(e){case gr:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case lr:return!(n.byteLength!=r.byteLength||!t(new m(n),new m(r)));case nr:case rr:case tr:return An(+n,+r);case er:return n.name==r.name&&n.message==r.message;case fr:case ur:return n==r+"";case ir:var u=Vn;case sr:var a=i&kn;if(u||(u=C),n.size!=r.size&&!a)return!1;var h=s.get(n);if(h)return h==r;i|=jn,s.set(n,r);var g=fn(u(n),u(r),i,f,t,s);return s.delete(n),g;case ar:if(L)return L.call(n)==L.call(r)}return!1}var hr=1,pr=Object.prototype,Ar=pr.hasOwnProperty;function _r(n,r,e,i,f,t){var s=e&hr,u=Z(n),a=u.length,h=Z(r),g=h.length;if(a!=g&&!s)return!1;for(var l=a;l--;){var d=u[l];if(!(s?d in r:Ar.call(r,d)))return!1}var c=t.get(n),p=t.get(r);if(c&&p)return c==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var o=s;++l<a;){d=u[l];var w=n[d],O=r[d];if(i)var F=s?i(O,w,d,r,n,t):i(w,O,d,n,r,t);if(!(F===void 0?w===O||f(w,O,e,i,t):F)){_=!1;break}o||(o=d=="constructor")}if(_&&!o){var y=n.constructor,E=r.constructor;y!=E&&"constructor"in n&&"constructor"in r&&!(typeof y=="function"&&y instanceof y&&typeof E=="function"&&E instanceof E)&&(_=!1)}return t.delete(n),t.delete(r),_}var cr=1,X="[object Arguments]",J="[object Array]",T="[object Object]",or=Object.prototype,Q=or.hasOwnProperty;function wr(n,r,e,i,f,t){var s=A(n),u=A(r),a=s?J:N(n),h=u?J:N(r);a=a==X?T:a,h=h==X?T:h;var g=a==T,l=h==T,d=a==h;if(d&&U(n)){if(!U(r))return!1;s=!0,g=!1}if(d&&!g)return t||(t=new R),s||_n(n)?fn(n,r,e,i,f,t):dr(n,r,a,e,i,f,t);if(!(e&cr)){var c=g&&Q.call(n,"__wrapped__"),p=l&&Q.call(r,"__wrapped__");if(c||p){var _=c?n.value():n,o=p?r.value():r;return t||(t=new R),f(_,o,e,i,t)}}return d?(t||(t=new R),_r(n,r,e,i,f,t)):!1}function G(n,r,e,i,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:wr(n,r,e,i,G,f)}var Or=1,Pr=2;function vr(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var s=e[f];if(s[2]?s[1]!==n[s[0]]:!(s[0]in n))return!1}for(;++f<t;){s=e[f];var u=s[0],a=n[u],h=s[1];if(s[2]){if(a===void 0&&!(u in n))return!1}else{var g=new R,l;if(!(l===void 0?G(h,a,Or|Pr,i,g):l))return!1}}return!0}function sn(n){return n===n&&!cn(n)}function yr(n){for(var r=M(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,sn(f)]}return r}function un(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function Er(n){var r=yr(n);return r.length==1&&r[0][2]?un(r[0][0],r[0][1]):function(e){return e===n||vr(e,n,r)}}function Tr(n,r){return n!=null&&r in Object(n)}function Rr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var s=I(r[i]);if(!(t=n!=null&&e(n,s)))break;n=n[s]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&on(f)&&wn(s,f)&&(A(n)||z(n)))}function Ir(n,r){return n!=null&&Rr(n,r,Tr)}var br=1,Lr=2;function Sr(n,r){return $(n)&&sn(r)?un(I(n),r):function(e){var i=mn(e,n);return i===void 0&&i===r?Ir(e,n):G(r,i,br|Lr)}}function xr(n){return function(r){return r==null?void 0:r[n]}}function Mr(n){return function(r){return nn(r,n)}}function $r(n){return $(n)?xr(I(n)):Mr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Sr(n[0],n[1]):Er(n):$r(n)}function Cr(n,r){return n&&On(n,r,M)}function Gr(n,r){return function(e,i){if(e==null)return e;if(!W(e))return n(e,i);for(var f=e.length,t=-1,s=Object(e);++t<f&&i(s[t],t,s)!==!1;);return e}}var D=Gr(Cr);function Dr(n){return typeof n=="function"?n:V}function qr(n,r){var e=A(n)?En:D;return e(n,Dr(r))}function Fr(n,r){var e=[];return D(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function Zr(n,r){var e=A(n)?en:Fr;return e(n,an(r))}function mr(n,r,e,i,f){return f(n,function(t,s,u){e=i?(i=!1,t):r(e,t,s,u)}),e}function Yr(n,r,e){var i=A(n)?Un:mr,f=arguments.length<3;return i(n,an(r),e,f,D)}var Nr=1/0,Ur=b&&1/C(new b([,-0]))[1]==Nr?function(n){return new b(n)}:yn,Br=200;function Xr(n,r,e){var i=-1,f=Ln,t=n.length,s=!0,u=[],a=u;if(t>=Br){var h=r?null:Ur(n);if(h)return C(h);s=!1,f=tn,a=new v}else a=r?[]:u;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,s&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),u.push(g)}else f(a,l,e)||(a!==u&&a.push(l),u.push(g))}return u}export{D as a,Kr as b,an as c,vn as d,rn as e,Zn as f,qn as g,En as h,x as i,Z as j,M as k,Xr as l,Zr as m,qr as n,Tn as o,Dr as p,Cr as q,Yr as r,Bn as s,Rr as t,j as u,I as v,nn as w,Ir as x,Fn as y};
1
+ import{bN as S,cb as ln,aH as A,bL as P,aG as W,cc as gn,cd as dn,ce as hn,cf as z,cg as pn,ch as An,ci as m,bO as N,bT as U,bW as R,cj as _n,bR as cn,ck as on,cl as wn,aI as V,cm as On,cn as b}from"./main-D0PuDE6-.js";var Pn="[object Symbol]";function x(n){return typeof n=="symbol"||S(n)&&ln(n)==Pn}function vn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var B=P?P.prototype:void 0,H=B?B.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return vn(n,k)+"";if(x(n))return H?H.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(){}function En(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function Tn(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function Rn(n){return n!==n}function In(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function bn(n,r,e){return r===r?In(n,r,e):Tn(n,Rn,e)}function Ln(n,r){var e=n==null?0:n.length;return!!e&&bn(n,r,0)>-1}function M(n){return W(n)?gn(n):dn(n)}var Sn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xn=/^\w*$/;function $(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||x(n)?!0:xn.test(n)||!Sn.test(n)||r!=null&&n in Object(r)}var Mn=500;function $n(n){var r=hn(n,function(i){return e.size===Mn&&e.clear(),i}),e=r.cache;return r}var Cn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Gn=/\\(\\)?/g,Dn=$n(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Cn,function(e,i,f,t){r.push(f?t.replace(Gn,"$1"):i||e)}),r});function Fn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:$(n,r)?[n]:Dn(Fn(n))}function I(n){if(typeof n=="string"||x(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[I(r[e++])];return e&&e==i?n:void 0}function mn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var K=P?P.isConcatSpreadable:void 0;function Nn(n){return A(n)||z(n)||!!(K&&n&&n[K])}function Kr(n,r,e,i,f){var t=-1,s=n.length;for(e||(e=Nn),f||(f=[]);++t<s;){var u=n[t];e(u)?rn(f,u):i||(f[f.length]=u)}return f}function Un(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var s=n[e];r(s,e,n)&&(t[f++]=s)}return t}function Bn(){return[]}var Hn=Object.prototype,Kn=Hn.propertyIsEnumerable,q=Object.getOwnPropertySymbols,qn=q?function(n){return n==null?[]:(n=Object(n),en(q(n),function(r){return Kn.call(n,r)}))}:Bn;function Zn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function Z(n){return Zn(n,M,qn)}var Yn="__lodash_hash_undefined__";function Xn(n){return this.__data__.set(n,Yn),this}function Jn(n){return this.__data__.has(n)}function v(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new pn;++r<e;)this.add(n[r])}v.prototype.add=v.prototype.push=Xn;v.prototype.has=Jn;function Qn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var Wn=1,zn=2;function fn(n,r,e,i,f,t){var s=e&Wn,u=n.length,a=r.length;if(u!=a&&!(s&&a>u))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,c=e&zn?new v:void 0;for(t.set(n,r),t.set(r,n);++l<u;){var p=n[l],_=r[l];if(i)var o=s?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(o!==void 0){if(o)continue;d=!1;break}if(c){if(!Qn(r,function(w,O){if(!tn(c,O)&&(p===w||f(p,w,e,i,t)))return c.push(O)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Vn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function C(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var kn=1,jn=2,nr="[object Boolean]",rr="[object Date]",er="[object Error]",ir="[object Map]",tr="[object Number]",fr="[object RegExp]",sr="[object Set]",ur="[object String]",ar="[object Symbol]",lr="[object ArrayBuffer]",gr="[object DataView]",Y=P?P.prototype:void 0,L=Y?Y.valueOf:void 0;function dr(n,r,e,i,f,t,s){switch(e){case gr:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case lr:return!(n.byteLength!=r.byteLength||!t(new m(n),new m(r)));case nr:case rr:case tr:return An(+n,+r);case er:return n.name==r.name&&n.message==r.message;case fr:case ur:return n==r+"";case ir:var u=Vn;case sr:var a=i&kn;if(u||(u=C),n.size!=r.size&&!a)return!1;var h=s.get(n);if(h)return h==r;i|=jn,s.set(n,r);var g=fn(u(n),u(r),i,f,t,s);return s.delete(n),g;case ar:if(L)return L.call(n)==L.call(r)}return!1}var hr=1,pr=Object.prototype,Ar=pr.hasOwnProperty;function _r(n,r,e,i,f,t){var s=e&hr,u=Z(n),a=u.length,h=Z(r),g=h.length;if(a!=g&&!s)return!1;for(var l=a;l--;){var d=u[l];if(!(s?d in r:Ar.call(r,d)))return!1}var c=t.get(n),p=t.get(r);if(c&&p)return c==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var o=s;++l<a;){d=u[l];var w=n[d],O=r[d];if(i)var F=s?i(O,w,d,r,n,t):i(w,O,d,n,r,t);if(!(F===void 0?w===O||f(w,O,e,i,t):F)){_=!1;break}o||(o=d=="constructor")}if(_&&!o){var y=n.constructor,E=r.constructor;y!=E&&"constructor"in n&&"constructor"in r&&!(typeof y=="function"&&y instanceof y&&typeof E=="function"&&E instanceof E)&&(_=!1)}return t.delete(n),t.delete(r),_}var cr=1,X="[object Arguments]",J="[object Array]",T="[object Object]",or=Object.prototype,Q=or.hasOwnProperty;function wr(n,r,e,i,f,t){var s=A(n),u=A(r),a=s?J:N(n),h=u?J:N(r);a=a==X?T:a,h=h==X?T:h;var g=a==T,l=h==T,d=a==h;if(d&&U(n)){if(!U(r))return!1;s=!0,g=!1}if(d&&!g)return t||(t=new R),s||_n(n)?fn(n,r,e,i,f,t):dr(n,r,a,e,i,f,t);if(!(e&cr)){var c=g&&Q.call(n,"__wrapped__"),p=l&&Q.call(r,"__wrapped__");if(c||p){var _=c?n.value():n,o=p?r.value():r;return t||(t=new R),f(_,o,e,i,t)}}return d?(t||(t=new R),_r(n,r,e,i,f,t)):!1}function G(n,r,e,i,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:wr(n,r,e,i,G,f)}var Or=1,Pr=2;function vr(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var s=e[f];if(s[2]?s[1]!==n[s[0]]:!(s[0]in n))return!1}for(;++f<t;){s=e[f];var u=s[0],a=n[u],h=s[1];if(s[2]){if(a===void 0&&!(u in n))return!1}else{var g=new R,l;if(!(l===void 0?G(h,a,Or|Pr,i,g):l))return!1}}return!0}function sn(n){return n===n&&!cn(n)}function yr(n){for(var r=M(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,sn(f)]}return r}function un(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function Er(n){var r=yr(n);return r.length==1&&r[0][2]?un(r[0][0],r[0][1]):function(e){return e===n||vr(e,n,r)}}function Tr(n,r){return n!=null&&r in Object(n)}function Rr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var s=I(r[i]);if(!(t=n!=null&&e(n,s)))break;n=n[s]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&on(f)&&wn(s,f)&&(A(n)||z(n)))}function Ir(n,r){return n!=null&&Rr(n,r,Tr)}var br=1,Lr=2;function Sr(n,r){return $(n)&&sn(r)?un(I(n),r):function(e){var i=mn(e,n);return i===void 0&&i===r?Ir(e,n):G(r,i,br|Lr)}}function xr(n){return function(r){return r==null?void 0:r[n]}}function Mr(n){return function(r){return nn(r,n)}}function $r(n){return $(n)?xr(I(n)):Mr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Sr(n[0],n[1]):Er(n):$r(n)}function Cr(n,r){return n&&On(n,r,M)}function Gr(n,r){return function(e,i){if(e==null)return e;if(!W(e))return n(e,i);for(var f=e.length,t=-1,s=Object(e);++t<f&&i(s[t],t,s)!==!1;);return e}}var D=Gr(Cr);function Dr(n){return typeof n=="function"?n:V}function qr(n,r){var e=A(n)?En:D;return e(n,Dr(r))}function Fr(n,r){var e=[];return D(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function Zr(n,r){var e=A(n)?en:Fr;return e(n,an(r))}function mr(n,r,e,i,f){return f(n,function(t,s,u){e=i?(i=!1,t):r(e,t,s,u)}),e}function Yr(n,r,e){var i=A(n)?Un:mr,f=arguments.length<3;return i(n,an(r),e,f,D)}var Nr=1/0,Ur=b&&1/C(new b([,-0]))[1]==Nr?function(n){return new b(n)}:yn,Br=200;function Xr(n,r,e){var i=-1,f=Ln,t=n.length,s=!0,u=[],a=u;if(t>=Br){var h=r?null:Ur(n);if(h)return C(h);s=!1,f=tn,a=new v}else a=r?[]:u;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,s&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),u.push(g)}else f(a,l,e)||(a!==u&&a.push(l),u.push(g))}return u}export{D as a,Kr as b,an as c,vn as d,rn as e,Zn as f,qn as g,En as h,x as i,Z as j,M as k,Xr as l,Zr as m,qr as n,Tn as o,Dr as p,Cr as q,Yr as r,Bn as s,Rr as t,j as u,I as v,nn as w,Ir as x,Fn as y};
@@ -1 +1 @@
1
- import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./main-CELBpK6r.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,F=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./main-D0PuDE6-.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,F=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};