@oatelauser/crosschat 1.3.3 → 1.5.0

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 (42) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +126 -285
  3. package/dist/cli.js +246 -11
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/claude-wrapper.js +31 -3
  6. package/dist/commands/claude-wrapper.js.map +1 -1
  7. package/dist/commands/clean.js +91 -0
  8. package/dist/commands/clean.js.map +1 -0
  9. package/dist/commands/codex-wrapper.js +33 -0
  10. package/dist/commands/codex-wrapper.js.map +1 -0
  11. package/dist/commands/doctor.js +54 -0
  12. package/dist/commands/doctor.js.map +1 -1
  13. package/dist/commands/send.js +107 -20
  14. package/dist/commands/send.js.map +1 -1
  15. package/dist/commands/serve.js +380 -0
  16. package/dist/commands/serve.js.map +1 -0
  17. package/dist/commands/status.js +86 -0
  18. package/dist/commands/status.js.map +1 -1
  19. package/dist/commands/uninstall.js +66 -0
  20. package/dist/commands/uninstall.js.map +1 -0
  21. package/dist/envelope.js +10 -2
  22. package/dist/envelope.js.map +1 -1
  23. package/dist/federation.js +14 -7
  24. package/dist/federation.js.map +1 -1
  25. package/dist/identity.js +25 -0
  26. package/dist/identity.js.map +1 -1
  27. package/dist/limits.js +126 -0
  28. package/dist/limits.js.map +1 -0
  29. package/dist/serve/broker.js +495 -0
  30. package/dist/serve/broker.js.map +1 -0
  31. package/dist/serve/file-channel.js +211 -0
  32. package/dist/serve/file-channel.js.map +1 -0
  33. package/dist/serve/node.js +340 -0
  34. package/dist/serve/node.js.map +1 -0
  35. package/dist/serve/protocol.js +51 -0
  36. package/dist/serve/protocol.js.map +1 -0
  37. package/dist/serve/registry.js +116 -0
  38. package/dist/serve/registry.js.map +1 -0
  39. package/dist/serve/via-tcp.js +323 -0
  40. package/dist/serve/via-tcp.js.map +1 -0
  41. package/package.json +1 -1
  42. package/skills/crosschat/SKILL.md +11 -6
package/dist/cli.js CHANGED
@@ -1,14 +1,18 @@
1
1
  #!/usr/bin/env node
2
- import { readFileSync, realpathSync } from 'node:fs';
2
+ import { existsSync, readFileSync, realpathSync } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { join } from 'node:path';
3
5
  import { fileURLToPath } from 'node:url';
4
6
  import { Buffer } from 'node:buffer';
5
7
  import process from 'node:process';
8
+ import { createInterface } from 'node:readline';
6
9
  import { MultichatError } from './errors.js';
7
10
  import { runSend } from './commands/send.js';
8
11
  import { runStatus } from './commands/status.js';
9
12
  import { runInstallSkills } from './commands/install-skills.js';
10
13
  import { runDoctor } from './commands/doctor.js';
11
14
  import { runClaudeWrapper } from './commands/claude-wrapper.js';
15
+ import { runCodexWrapper } from './commands/codex-wrapper.js';
12
16
  import { defaultRateDir } from './rate-limit.js';
13
17
  import { defaultOutboxDir, drain } from './outbox.js';
14
18
  import { runWatchdog, spawnWatchdog as ensureWatchdog } from './watchdog.js';
@@ -22,33 +26,95 @@ import { listClaudeSessions } from './claude/registry.js';
22
26
  import { deliverToClaudeSession } from './claude/deliver.js';
23
27
  import { listCodexThreads } from './codex/discovery.js';
24
28
  import { deliverToCodexThread } from './codex/deliver.js';
29
+ import { runServe, realServeDeps } from './commands/serve.js';
30
+ import { runClean } from './commands/clean.js';
31
+ import { runUninstall } from './commands/uninstall.js';
32
+ import { fetchRoster } from './serve/via-tcp.js';
33
+ import { DEFAULT_PORT } from './serve/broker.js';
25
34
  const version = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version;
26
35
  const usage = `usage: crosschat <command> [options]
27
36
 
28
37
  commands:
29
- send [--via ssh:<host>] --to <name> | --conversation <ref>
30
- send a message (--body <text> or stdin);
31
- quote <name> if it contains spaces;
32
- --via sends to a peer machine (host = ~/.ssh/config
33
- alias, peer resolves names on its side)
34
- status [--conversations] show claude/codex session status, or per-pair
38
+ send --to <name> | --conversation <ref>
39
+ send a message to a claude/codex session
40
+ (quote <name> if it contains spaces);
41
+ options:
42
+ --body <text> message text
43
+ (default: read stdin)
44
+ --via ssh:<host> send to a peer machine
45
+ (host = ~/.ssh/config alias, peer
46
+ resolves names on its side)
47
+ --via tcp:<机器> send via the tcp broker
48
+ (机器 = machine name from
49
+ "crosschat serve --list"; requires
50
+ ~/.crosschat/tcp/node.json)
51
+ --file <路径> send a file through the
52
+ tcp channel (with --via tcp: only,
53
+ chunked, 64MiB cap; body defaults to
54
+ "文件 <名> 已送达:<对端路径>")
55
+ --max-body-kb <KiB> raise the body cap for
56
+ this send (default 16;
57
+ env CROSSCHAT_MAX_BODY_KIB)
58
+ --max-turn <N> stamp a soft turn budget
59
+ into the envelope
60
+ (env CROSSCHAT_MAX_TURN)
61
+ status [--conversations] show claude/codex session status, or per-pair
35
62
  conversation overview with --conversations
36
63
  doctor environment health check (exits 1 on any ❌)
64
+ serve [options] run/manage the tcp broker (star topology,
65
+ default port ${DEFAULT_PORT}; the first --port
66
+ given is remembered and reused on bare runs)
67
+ --port <N> listen port 1-65535
68
+ --gen-key [N] print N node keys (default 1)
69
+ and register them
70
+ --list list registered nodes
71
+ --remove <label> remove a node key
72
+ --connect [别名] run this machine as a node
73
+ client (needs ~/.crosschat/tcp/node.json;
74
+ reconnects forever; log with --detach:
75
+ ~/.crosschat/tcp/node.log)
76
+ --detach run the broker or node
77
+ (with --connect) in the background
78
+ --stop [broker|node] stop a running broker/node
79
+ (default: both)
37
80
  install-skills [--dir <root>]
38
81
  install the agent skill into <root>/.claude and
39
82
  <root>/.codex (default root: home directory)
40
- claude [args...] run the real claude CLI with inbound peer
41
- messaging enabled; other args pass through
83
+ clean [--force] clean tcp file-channel leftovers (inbox/parts):
84
+ default = lazy rules (items older than 5 days,
85
+ or inbox over 512MiB oldest-first); --force
86
+ deletes everything without confirmation
87
+ uninstall [--yes] remove crosschat data: ~/.crosschat, the state
88
+ dir, and both agent skills (refuses while
89
+ "crosschat serve" runs; asks y/n unless --yes)
90
+ claude [any native args] start the real claude CLI with inbound peer
91
+ messaging enabled; any native claude args
92
+ (e.g. -c, --model <m>, --help) pass through
93
+ unchanged, plus two crosschat-only knobs:
94
+ --max-body-kb <KiB> body cap for sends
95
+ from this session
96
+ (env CROSSCHAT_MAX_BODY_KIB)
97
+ --max-turn <N> turn budget stamped
98
+ into envelopes
99
+ (env CROSSCHAT_MAX_TURN)
100
+ codex [any native args] start the real codex CLI (no codex settings
101
+ injected); any native codex args (e.g.
102
+ resume, --profile, --help) pass through
103
+ unchanged, plus the same two knobs:
104
+ --max-body-kb <KiB> body cap for sends
105
+ from this session
106
+ --max-turn <N> turn budget stamped
107
+ into envelopes
42
108
 
43
109
  options:
44
110
  --json single-line JSON output (send/status)
45
111
  -v, --version print version and exit
46
112
  --help | help show this help and exit
47
113
  `;
48
- /** Hand-rolled send arg parsing (no dependency): --to/--conversation/--body/--via/--origin take values, --json is a flag. --origin is machine-injected (008) and stays out of usage. */
114
+ /** Hand-rolled send arg parsing (no dependency): --to/--conversation/--body/--via/--file/--origin/--max-body-kb/--max-turn take values, --json is a flag. --origin is machine-injected (008) and stays out of usage. Raw values only — numeric validation lives in limits.ts (invalid silently degrades, ticket A). */
49
115
  export function parseSendArgs(argv) {
50
116
  const args = {};
51
- const valueOpts = new Set(['--to', '--conversation', '--body', '--via', '--origin']);
117
+ const valueOpts = new Set(['--to', '--conversation', '--body', '--via', '--file', '--origin', '--max-body-kb', '--max-turn']);
52
118
  for (let i = 0; i < argv.length; i++) {
53
119
  const token = argv[i];
54
120
  if (token === undefined || !token.startsWith('--')) {
@@ -74,8 +140,14 @@ export function parseSendArgs(argv) {
74
140
  args.conversation = value;
75
141
  else if (name === '--via')
76
142
  args.via = value;
143
+ else if (name === '--file')
144
+ args.fileArg = value;
77
145
  else if (name === '--origin')
78
146
  args.origin = value;
147
+ else if (name === '--max-body-kb')
148
+ args.maxBodyKb = value;
149
+ else if (name === '--max-turn')
150
+ args.maxTurn = value;
79
151
  else
80
152
  args.bodyArg = value;
81
153
  }
@@ -116,6 +188,89 @@ export function parseInstallSkillsArgs(argv) {
116
188
  }
117
189
  return args;
118
190
  }
191
+ /**
192
+ * Hand-rolled serve arg parsing: --port/--remove take values (space or =),
193
+ * --gen-key/--stop/--connect take optional values (a following non-flag
194
+ * token), --list/--detach are flags. Raw values only — numeric validation
195
+ * lives in commands/serve.ts.
196
+ */
197
+ export function parseServeArgs(argv) {
198
+ const args = {};
199
+ for (let i = 0; i < argv.length; i++) {
200
+ const token = argv[i];
201
+ if (token === undefined || !token.startsWith('--')) {
202
+ throw new MultichatError('USAGE', `serve: unexpected argument: ${token ?? ''}`);
203
+ }
204
+ const eq = token.indexOf('=');
205
+ const name = eq > 0 ? token.slice(0, eq) : token;
206
+ const inline = eq > 0 ? token.slice(eq + 1) : undefined;
207
+ const nextValue = () => {
208
+ if (inline !== undefined)
209
+ return inline;
210
+ const next = argv[i + 1];
211
+ if (next !== undefined && !next.startsWith('--')) {
212
+ i++;
213
+ return next;
214
+ }
215
+ return undefined;
216
+ };
217
+ if (name === '--list') {
218
+ args.list = true;
219
+ }
220
+ else if (name === '--detach') {
221
+ args.detach = true;
222
+ }
223
+ else if (name === '--connect') {
224
+ args.connect = nextValue() ?? '';
225
+ }
226
+ else if (name === '--port' || name === '--remove') {
227
+ const value = nextValue();
228
+ if (value === undefined)
229
+ throw new MultichatError('USAGE', `serve: ${name} requires a value`);
230
+ if (name === '--port')
231
+ args.portArg = value;
232
+ else
233
+ args.remove = value;
234
+ }
235
+ else if (name === '--gen-key') {
236
+ args.genKeyArg = nextValue() ?? '1';
237
+ }
238
+ else if (name === '--stop') {
239
+ const value = nextValue();
240
+ if (value === undefined)
241
+ args.stopTarget = 'both';
242
+ else if (value === 'broker' || value === 'node')
243
+ args.stopTarget = value;
244
+ else
245
+ throw new MultichatError('USAGE', `serve: --stop 只接受 broker|node,收到:${value}`);
246
+ }
247
+ else {
248
+ throw new MultichatError('USAGE', `serve: unknown option: ${name}`);
249
+ }
250
+ }
251
+ return args;
252
+ }
253
+ /** clean takes only the --force flag; uninstall only --yes. */
254
+ export function parseCleanArgs(argv) {
255
+ const args = {};
256
+ for (const token of argv) {
257
+ if (token === '--force')
258
+ args.force = true;
259
+ else
260
+ throw new MultichatError('USAGE', `clean: unknown option: ${token}`);
261
+ }
262
+ return args;
263
+ }
264
+ export function parseUninstallArgs(argv) {
265
+ const args = {};
266
+ for (const token of argv) {
267
+ if (token === '--yes')
268
+ args.yes = true;
269
+ else
270
+ throw new MultichatError('USAGE', `uninstall: unknown option: ${token}`);
271
+ }
272
+ return args;
273
+ }
119
274
  function readStdinText() {
120
275
  const stdin = process.stdin;
121
276
  if (stdin.isTTY)
@@ -144,6 +299,16 @@ function realSendDeps(stdinText) {
144
299
  conversationStateFile: defaultConversationsFile(),
145
300
  // Federation (008/B1): real transport + machine name for --origin.
146
301
  sshExec: (argv, input, timeoutMs) => defaultSshExec(argv, input, timeoutMs),
302
+ // B2.1:回信自动补全判据(ssh 别名表 + 本机 node.json 在场)。
303
+ sshConfigText: () => {
304
+ try {
305
+ return readFileSync(join(homedir(), '.ssh', 'config'), 'utf8');
306
+ }
307
+ catch {
308
+ return undefined;
309
+ }
310
+ },
311
+ tcpBaseDir: join(homedir(), '.crosschat'),
147
312
  // B10: stable per-install id — same-machine decisions survive hostname collisions.
148
313
  machineId: () => machineId(),
149
314
  };
@@ -158,6 +323,12 @@ function realStatusDeps() {
158
323
  // B22: bounded recheck budget (2 polls × 200ms per unconfirmed row) so the
159
324
  // conversations view stays snappy while catching slow rollout flushes.
160
325
  confirmReceipt: (threadId, marker) => confirmInRollout(codexHomeDir(), threadId, marker, { tries: 2, delayMs: 200 }),
326
+ // B2: tcp forwarder status files live under ~/.crosschat/tcp.
327
+ tcpDir: join(homedir(), '.crosschat', 'tcp'),
328
+ // B2.1:成员机在线表——有 node.json 才拉(broker 机 status-broker.json 新鲜时不会走到)。
329
+ roster: existsSync(join(homedir(), '.crosschat', 'tcp', 'node.json'))
330
+ ? () => fetchRoster(join(homedir(), '.crosschat'))
331
+ : undefined,
161
332
  };
162
333
  }
163
334
  function drainAtEntry() {
@@ -290,6 +461,61 @@ async function main(argv) {
290
461
  return printFailure(err);
291
462
  }
292
463
  }
464
+ if (command === 'serve') {
465
+ if (rest.includes('--help')) {
466
+ process.stdout.write(usage);
467
+ return 0;
468
+ }
469
+ try {
470
+ // B2:broker/节点的本机投递与 send 命令共用同一份真 SendDeps。
471
+ return await runServe(parseServeArgs(rest), { ...realServeDeps(), makeSendDeps: (stdinText) => realSendDeps(stdinText) });
472
+ }
473
+ catch (err) {
474
+ return printFailure(err);
475
+ }
476
+ }
477
+ if (command === 'clean') {
478
+ if (rest.includes('--help')) {
479
+ process.stdout.write(usage);
480
+ return 0;
481
+ }
482
+ try {
483
+ return runClean(parseCleanArgs(rest), {
484
+ tcpDir: join(homedir(), '.crosschat', 'tcp'),
485
+ now: () => Date.now(),
486
+ stdout: (line) => process.stdout.write(`${line}\n`),
487
+ });
488
+ }
489
+ catch (err) {
490
+ return printFailure(err);
491
+ }
492
+ }
493
+ if (command === 'uninstall') {
494
+ if (rest.includes('--help')) {
495
+ process.stdout.write(usage);
496
+ return 0;
497
+ }
498
+ try {
499
+ const home = homedir();
500
+ return await runUninstall(parseUninstallArgs(rest), {
501
+ crosschatHome: join(home, '.crosschat'),
502
+ stateRoot: join(process.env.LOCALAPPDATA ?? home, 'crosschat'),
503
+ skillDirs: [join(home, '.claude', 'skills', 'crosschat'), join(home, '.codex', 'skills', 'crosschat')],
504
+ now: () => Date.now(),
505
+ stdout: (line) => process.stdout.write(`${line}\n`),
506
+ confirm: () => new Promise((resolve) => {
507
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
508
+ rl.question('确认删除?(y/n) ', (answer) => {
509
+ rl.close();
510
+ resolve(answer.trim().toLowerCase() === 'y');
511
+ });
512
+ }),
513
+ });
514
+ }
515
+ catch (err) {
516
+ return printFailure(err);
517
+ }
518
+ }
293
519
  if (command === 'claude') {
294
520
  // Everything passes through to the real claude CLI (including --help).
295
521
  try {
@@ -299,6 +525,15 @@ async function main(argv) {
299
525
  return printFailure(err);
300
526
  }
301
527
  }
528
+ if (command === 'codex') {
529
+ // Everything passes through to the real codex CLI (including --help).
530
+ try {
531
+ return await runCodexWrapper(rest);
532
+ }
533
+ catch (err) {
534
+ return printFailure(err);
535
+ }
536
+ }
302
537
  process.stderr.write(`crosschat: USAGE: unknown command: ${command}\n\n`);
303
538
  process.stderr.write(usage);
304
539
  return 1;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAgC,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAmB,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAA0B,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,aAAa,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,OAAO,GACX,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAG7E,CAAC,OAAO,CAAC;AAEV,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBb,CAAC;AAEF,wLAAwL;AACxL,MAAM,UAAU,aAAa,CAAC,IAAuB;IACnD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IACrF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,8BAA8B,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjD,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC;YAC3F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,yBAAyB,IAAI,EAAE,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,SAAS,IAAI,mBAAmB,CAAC,CAAC;QAC7F,IAAI,IAAI,KAAK,MAAM;YAAE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;aAChC,IAAI,IAAI,KAAK,gBAAgB;YAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aACzD,IAAI,IAAI,KAAK,OAAO;YAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;aACvC,IAAI,IAAI,KAAK,UAAU;YAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;YAC7C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,eAAe,CAAC,IAAuB;IACrD,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI;YAAE,IAAI,GAAG,IAAI,CAAC;aACxC,IAAI,KAAK,KAAK,iBAAiB,IAAI,CAAC,aAAa;YAAE,aAAa,GAAG,IAAI,CAAC;aACxE,CAAC;YACJ,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,kDAAkD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AACjC,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,sBAAsB,CAAC,IAAuB;IAC5D,MAAM,IAAI,GAAsB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,wCAAwC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjD,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxD,IAAI,IAAI,KAAK,OAAO;YAAE,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,mCAAmC,IAAI,EAAE,CAAC,CAAC;QACnG,MAAM,KAAK,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,wCAAwC,CAAC,CAAC;QACrG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,KAAK,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;QACpF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,SAA6B;IACjD,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS;QACT,kBAAkB,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE;QAC9C,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE;QAC1C,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC;QAC3E,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC5E,OAAO,EAAE,cAAc,EAAE;QACzB,SAAS,EAAE,gBAAgB,EAAE;QAC7B,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QACrB,aAAa,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACvD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,EAAE,KAAK,CAAC;QAChE,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC;QACxF,qBAAqB,EAAE,wBAAwB,EAAE;QACjD,mEAAmE;QACnE,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;QAC3E,mFAAmF;QACnF,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc;IACrB,OAAO;QACL,kBAAkB,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE;QAC9C,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE;QAC1C,gEAAgE;QAChE,eAAe,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACtD,iBAAiB,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE;QAChD,2EAA2E;QAC3E,uEAAuE;QACvE,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CACnC,gBAAgB,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,kBAAkB,CAAC;QACxB,SAAS,EAAE,gBAAgB,EAAE;QAC7B,OAAO,EAAE,cAAc,EAAE;QACzB,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CACjD,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,CAAC;QAC5D,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;KACjD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,GAAY;IAChC,MAAM,EAAE,GACN,GAAG,YAAY,cAAc;QAC3B,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,IAAI,cAAc,CAAC,UAAU,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACvG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC;IAC/D,OAAO,CAAC,CAAC;AACX,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAoB;IAC3D,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,KAAK,CACnB,IAAI,CAAC,SAAS,EACd,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,EACzF,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,6CAA6C;IACvD,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,SAAS,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACzF,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,QAAQ,YAAY,MAAM,CAAC,OAAO,QAAQ,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,IAAc;IAChC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,2EAA2E;IAC3E,2DAA2D;IAC3D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,WAAW,CAAC,gBAAgB,EAAE,EAAE,cAAc,EAAE,EAAE;gBACtD,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CACjD,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,CAAC;gBAC5D,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;aACjD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,YAAY,EAAE,CAAC;YACrB,yEAAyE;YACzE,4EAA4E;YAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACjF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,YAAY,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;YACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;YACxF,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,uEAAuE;QACvE,IAAI,CAAC;YACH,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,OAAO,MAAM,CAAC,CAAC;IAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,WAAW,EAAE,EAAE,CAAC;IAClB,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7C,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,33 @@
1
1
  import { spawn } from 'node:child_process';
2
+ import process from 'node:process';
2
3
  import { MultichatError } from '../errors.js';
3
4
  import { resolveClaudeExe } from '../claude/resolve-exe.js';
5
+ import { splitLauncherKnobs, validateLauncherKnob } from '../limits.js';
6
+ import { otherIdentityKeys, stripOtherFamilies } from '../identity.js';
4
7
  /**
5
8
  * `crosschat claude [args...]`: start the real claude CLI with
6
9
  * `crossSessionInbound: accept` so peer sessions can inject messages
7
10
  * (ticket 002: without it inbound frames sit in parity hold).
11
+ *
12
+ * 票A 旋钮透传:`--max-body-kb <N>` / `--max-turn <N>` 是 crosschat 的旋钮
13
+ * (不是 claude 的参数),剥离、校验后写进子进程环境变量——该会话后续所有
14
+ * `crosschat send` 经 env 层继承;send 显式参数仍最高优先(三层链不动)。
15
+ *
16
+ * 身份清洗(票A 第五单):启动 claude 时剥掉 codex 家族身份变量
17
+ * (CODEX_THREAD_ID / CODEX_SESSION_ID)——从 codex 会话里启动的 claude 会把
18
+ * 双身份带进每个 crosschat 子命令(CALLER_IDENTITY_CONFLICT;报错里 env -u
19
+ * 的人工自纠在这里机构化做掉)。
20
+ *
21
+ * 全局规则(平面分家):启动器 = 会话面配置的家(crosschat claude / codex);
22
+ * 传输面配置(tcp 端口/密钥、broker 编址)属传输组件自己的面,不进启动器
23
+ * ——远端来件与非会话上下文读不到会话启动参数。
8
24
  */
9
25
  const INBOUND_SETTINGS = JSON.stringify({ crossSessionInbound: 'accept' });
10
26
  export function defaultClaudeWrapperDeps() {
11
27
  return {
12
28
  resolveExe: () => resolveClaudeExe(),
13
- spawnInherit: (exe, args) => new Promise((resolve, reject) => {
14
- const child = spawn(exe, args, { stdio: 'inherit' });
29
+ spawnInherit: (exe, args, env) => new Promise((resolve, reject) => {
30
+ const child = spawn(exe, args, env === undefined ? { stdio: 'inherit' } : { stdio: 'inherit', env });
15
31
  child.on('error', reject);
16
32
  child.on('close', (code) => resolve(code ?? 1));
17
33
  }),
@@ -22,7 +38,19 @@ export async function runClaudeWrapper(args, deps = defaultClaudeWrapperDeps())
22
38
  throw new MultichatError('SETTINGS_CONFLICT', 'crosschat claude passes its own --settings {"crossSessionInbound":"accept"}. '
23
39
  + 'Merge that JSON into your settings file and start claude directly instead.');
24
40
  }
41
+ const { passthrough, maxBodyKb, maxTurn } = splitLauncherKnobs(args);
42
+ const maxBodyKbNum = validateLauncherKnob('crosschat claude', '--max-body-kb', maxBodyKb);
43
+ const maxTurnNum = validateLauncherKnob('crosschat claude', '--max-turn', maxTurn);
44
+ const parentEnv = deps.env ?? process.env;
45
+ const foreignIdentityPresent = otherIdentityKeys('claude').some((key) => parentEnv[key] !== undefined);
46
+ const env = maxBodyKbNum === undefined && maxTurnNum === undefined && !foreignIdentityPresent
47
+ ? undefined // 无旋钮且无对族身份变量 = 与现状完全一致(不传 env,spawn 继承)
48
+ : stripOtherFamilies({
49
+ ...parentEnv,
50
+ ...(maxBodyKbNum !== undefined ? { CROSSCHAT_MAX_BODY_KIB: String(maxBodyKbNum) } : {}),
51
+ ...(maxTurnNum !== undefined ? { CROSSCHAT_MAX_TURN: String(maxTurnNum) } : {}),
52
+ }, 'claude');
25
53
  const exe = deps.resolveExe();
26
- return deps.spawnInherit(exe, ['--settings', INBOUND_SETTINGS, ...args]);
54
+ return deps.spawnInherit(exe, ['--settings', INBOUND_SETTINGS, ...passthrough], env);
27
55
  }
28
56
  //# sourceMappingURL=claude-wrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-wrapper.js","sourceRoot":"","sources":["../../src/commands/claude-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;GAIG;AAEH,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,CAAC;AAQ3E,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,UAAU,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE;QACpC,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAC1B,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACrD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC;KACL,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAuB,EACvB,OAA0B,wBAAwB,EAAE;IAEpD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,YAAY,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,+EAA+E;cAC3E,4EAA4E,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"claude-wrapper.js","sourceRoot":"","sources":["../../src/commands/claude-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * `crosschat clean`(票B B3):清 tcp 文件通道残留。默认=懒删除同款规则
3
+ * (inbox/parts 落盘 >5 天删;inbox 总量 >512MiB 从最旧删起);--force 全清
4
+ * inbox+parts(跳过确认,含未过期未读,用户自担)。两模式都打印清理明细。
5
+ */
6
+ import { existsSync, readdirSync, rmSync, statSync } from 'node:fs';
7
+ import { join } from 'node:path';
8
+ import { FILE_STALE_MS, INBOX_MAX_BYTES } from '../serve/file-channel.js';
9
+ function listEntries(dir) {
10
+ if (!existsSync(dir))
11
+ return [];
12
+ const out = [];
13
+ for (const name of readdirSync(dir)) {
14
+ const file = join(dir, name);
15
+ try {
16
+ const s = statSync(file);
17
+ out.push({ file, mtime: s.mtimeMs, size: s.size });
18
+ }
19
+ catch {
20
+ // 竞态消失/不可 stat:跳过
21
+ }
22
+ }
23
+ return out;
24
+ }
25
+ function mb(bytes) {
26
+ return (bytes / (1024 * 1024)).toFixed(1);
27
+ }
28
+ /** unix 下建议无传输时执行——写入中的文件可能被删(手册有注)。 */
29
+ export function runClean(args, deps) {
30
+ const staleMs = deps.staleMs ?? FILE_STALE_MS;
31
+ const maxInboxBytes = deps.maxInboxBytes ?? INBOX_MAX_BYTES;
32
+ const inbox = listEntries(join(deps.tcpDir, 'inbox'));
33
+ const parts = listEntries(join(deps.tcpDir, 'parts'));
34
+ const all = [...inbox, ...parts];
35
+ if (args.force === true) {
36
+ if (all.length === 0) {
37
+ deps.stdout('无需清理:inbox 与 parts 均为空');
38
+ return 0;
39
+ }
40
+ const totalBytes = all.reduce((sum, e) => sum + e.size, 0);
41
+ deps.stdout(`强制清理:将删除全部收件与断点文件(${all.length} 项,共 ${mb(totalBytes)} MB)`);
42
+ let freed = 0;
43
+ for (const e of all) {
44
+ try {
45
+ rmSync(e.file, { force: true });
46
+ freed += e.size;
47
+ deps.stdout(`已删 ${e.file}(${mb(e.size)} MB)`);
48
+ }
49
+ catch {
50
+ deps.stdout(`删除失败 ${e.file}`);
51
+ }
52
+ }
53
+ deps.stdout(`清理完成:删除 ${all.length} 项,释放 ${mb(freed)} MB`);
54
+ return 0;
55
+ }
56
+ const cutoff = deps.now() - staleMs;
57
+ const victims = [];
58
+ for (const e of [...inbox, ...parts]) {
59
+ if (e.mtime < cutoff)
60
+ victims.push({ e, why: '超 5 天' });
61
+ }
62
+ // 总量超限:在未过期的 inbox 里从最旧删起(与 FileInbox.lazyDelete 同款次序)
63
+ const liveInbox = inbox
64
+ .filter((e) => e.mtime >= cutoff)
65
+ .sort((a, b) => a.mtime - b.mtime);
66
+ let total = liveInbox.reduce((sum, e) => sum + e.size, 0);
67
+ for (const e of liveInbox) {
68
+ if (total <= maxInboxBytes)
69
+ break;
70
+ total -= e.size;
71
+ victims.push({ e, why: '超总量从最旧删起' });
72
+ }
73
+ if (victims.length === 0) {
74
+ deps.stdout(`无需清理:inbox ${inbox.length} 项 / parts ${parts.length} 项均在保留规则内`);
75
+ return 0;
76
+ }
77
+ let freed = 0;
78
+ for (const { e, why } of victims) {
79
+ try {
80
+ rmSync(e.file, { force: true });
81
+ freed += e.size;
82
+ deps.stdout(`已删 ${e.file}(${mb(e.size)} MB,${why})`);
83
+ }
84
+ catch {
85
+ deps.stdout(`删除失败 ${e.file}`);
86
+ }
87
+ }
88
+ deps.stdout(`清理完成:删除 ${victims.length} 项,释放 ${mb(freed)} MB`);
89
+ return 0;
90
+ }
91
+ //# sourceMappingURL=clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { spawn } from 'node:child_process';
2
+ import process from 'node:process';
3
+ import { resolveCodexExecutable } from '../codex/transport.js';
4
+ import { splitLauncherKnobs, validateLauncherKnob } from '../limits.js';
5
+ import { otherIdentityKeys, stripOtherFamilies } from '../identity.js';
6
+ export function defaultCodexWrapperDeps() {
7
+ return {
8
+ // 真实解析复用 codex 传输层的现成逻辑(CROSSCHAT_CODEX_BIN 覆盖 > PATH)。
9
+ resolveExe: () => resolveCodexExecutable(),
10
+ spawnInherit: (exe, args, env) => new Promise((resolve, reject) => {
11
+ const child = spawn(exe, args, env === undefined ? { stdio: 'inherit' } : { stdio: 'inherit', env });
12
+ child.on('error', reject);
13
+ child.on('close', (code) => resolve(code ?? 1));
14
+ }),
15
+ };
16
+ }
17
+ export async function runCodexWrapper(args, deps = defaultCodexWrapperDeps()) {
18
+ const { passthrough, maxBodyKb, maxTurn } = splitLauncherKnobs(args);
19
+ const maxBodyKbNum = validateLauncherKnob('crosschat codex', '--max-body-kb', maxBodyKb);
20
+ const maxTurnNum = validateLauncherKnob('crosschat codex', '--max-turn', maxTurn);
21
+ const parentEnv = deps.env ?? process.env;
22
+ const foreignIdentityPresent = otherIdentityKeys('codex').some((key) => parentEnv[key] !== undefined);
23
+ const env = maxBodyKbNum === undefined && maxTurnNum === undefined && !foreignIdentityPresent
24
+ ? undefined // 无旋钮且无对族身份变量 = 干净透传(不传 env,spawn 继承)
25
+ : stripOtherFamilies({
26
+ ...parentEnv,
27
+ ...(maxBodyKbNum !== undefined ? { CROSSCHAT_MAX_BODY_KIB: String(maxBodyKbNum) } : {}),
28
+ ...(maxTurnNum !== undefined ? { CROSSCHAT_MAX_TURN: String(maxTurnNum) } : {}),
29
+ }, 'codex');
30
+ // 无 --settings 类注入:codex 接收靠原生 daemon,参数全部原样转发。
31
+ return deps.spawnInherit(deps.resolveExe(), passthrough, env);
32
+ }
33
+ //# sourceMappingURL=codex-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-wrapper.js","sourceRoot":"","sources":["../../src/commands/codex-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA2BvE,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,wDAAwD;QACxD,UAAU,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE;QAC1C,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAC/B,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YACrG,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC;KACL,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAuB,EACvB,OAAyB,uBAAuB,EAAE;IAElD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,oBAAoB,CAAC,iBAAiB,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,oBAAoB,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAC1C,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;IACtG,MAAM,GAAG,GACP,YAAY,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,sBAAsB;QAC/E,CAAC,CAAC,SAAS,CAAC,sCAAsC;QAClD,CAAC,CAAC,kBAAkB,CAChB;YACE,GAAG,SAAS;YACZ,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChF,EACD,OAAO,CACR,CAAC;IACR,gDAAgD;IAChD,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;AAChE,CAAC"}