@cordfuse/crosstalk 7.0.0-alpha.1 → 7.0.0-alpha.2

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/commands/chat.js CHANGED
@@ -1,10 +1,13 @@
1
1
  // crosstalk chat — the single interactive entry point into the container.
2
2
  //
3
3
  // Modes:
4
- // crosstalk chat # default agent (claude), interactive
5
- // crosstalk chat --agent <name> # interactive with a specific agent
6
- // crosstalk chat --login [--agent X] # OAuth setup flow with browser-open
7
- // crosstalk chat --shell # bash escape hatch (sysadmin / debug)
4
+ // crosstalk chat --agent <name> # interactive with a specific agent
5
+ // crosstalk chat --agent <name> --login # OAuth setup flow with browser-open
6
+ // crosstalk chat --shell # bash escape hatch (sysadmin / debug)
7
+ //
8
+ // --agent is required for non-shell modes. There's no implicit default
9
+ // (containers may have multiple agent CLIs installed; the operator
10
+ // must say which one to invoke).
8
11
  //
9
12
  // Login flow design (root-cause fix, not a bandaid):
10
13
  // The container has no DISPLAY / no browser / no xdg-open. So the agent
@@ -46,29 +49,33 @@ function openInBrowser(url) {
46
49
  function usage(exit = 0) {
47
50
  const w = exit === 0 ? process.stdout : process.stderr;
48
51
  w.write(
49
- `Usage: crosstalk chat [--agent <name>] [--login] [--shell]
52
+ `Usage: crosstalk chat --agent <name> [--login]
53
+ crosstalk chat --shell
50
54
 
51
55
  Opens an interactive session inside the engine container — the single
52
56
  PTY-wrapped entry point for everything you'd do inside the container
53
57
  (daily chat, OAuth setup, sysadmin).
54
58
 
59
+ --agent is REQUIRED for any chat mode. Containers can have multiple
60
+ agent CLIs installed; the operator must say which one to invoke.
61
+
62
+ Supported agents: ${KNOWN_AGENTS.join(', ')}.
63
+
55
64
  Modes:
56
- (default) Interactive with the default agent (claude)
57
- --agent <name> Use a specific agent. Supported:
58
- ${KNOWN_AGENTS.join(', ')}
59
- --login First-time auth flow. Intercepts the OAuth URL on
60
- the agent's stdout and opens it in your default
61
- browser via the OS-native launcher. Falls back to
62
- printing the URL unwrapped if no browser is
63
- reachable (headless / SSH session).
65
+ --agent <name> Interactive with the named agent.
66
+ --agent <name> --login First-time auth flow. Intercepts the OAuth
67
+ URL on the agent's stdout and opens it in your
68
+ default browser via the OS-native launcher.
69
+ Falls back to printing the URL unwrapped if no
70
+ browser is reachable (headless / SSH session).
64
71
  --shell Drop into bash (install agent CLIs, debug,
65
- inspect state).
72
+ inspect state). No --agent needed.
66
73
 
67
74
  Examples:
68
- crosstalk chat # interactive claude
75
+ crosstalk chat --agent claude # interactive claude
69
76
  crosstalk chat --agent gemini # interactive gemini
70
- crosstalk chat --login # OAuth, claude
71
- crosstalk chat --login --agent codex # OAuth, codex
77
+ crosstalk chat --agent claude --login # OAuth, claude
78
+ crosstalk chat --agent codex --login # OAuth, codex
72
79
  crosstalk chat --shell # bash
73
80
  `,
74
81
  );
@@ -143,7 +150,15 @@ export async function run(argv) {
143
150
  return runInteractive(name, 'bash');
144
151
  }
145
152
 
146
- const agent = flag(argv, '--agent') ?? 'claude';
153
+ const agent = flag(argv, '--agent');
154
+ if (!agent) {
155
+ process.stderr.write(
156
+ `crosstalk chat: --agent <name> is required (containers can have ` +
157
+ `multiple agent CLIs installed; pick one explicitly).\n` +
158
+ `Supported: ${KNOWN_AGENTS.join(', ')}\n`,
159
+ );
160
+ return 1;
161
+ }
147
162
  if (!KNOWN_AGENTS.includes(agent)) {
148
163
  process.stderr.write(
149
164
  `crosstalk chat: unknown agent '${agent}'. Supported: ${KNOWN_AGENTS.join(', ')}\n`,
package/commands/init.js CHANGED
@@ -21,7 +21,7 @@ import { spawnSync } from 'child_process';
21
21
  import { has, positionals } from '../lib/argv.js';
22
22
 
23
23
  const DEFAULT_IMAGE = process.env.CROSSTALK_IMAGE
24
- ?? 'ghcr.io/cordfuse/crosstalk-server:7.0.0-alpha.1';
24
+ ?? 'ghcr.io/cordfuse/crosstalk-server:7.0.0-alpha.2';
25
25
 
26
26
  function usage(exit = 0) {
27
27
  const w = exit === 0 ? process.stdout : process.stderr;
@@ -34,9 +34,9 @@ function usage(exit = 0) {
34
34
 
35
35
  The image must be pullable (or already present locally). For local dev
36
36
  before the GHCR publish pipeline ships, build the image first:
37
- docker build -t crosstalk-server:7.0.0-alpha.1 -f server/Dockerfile .
37
+ docker build -t crosstalk-server:7.0.0-alpha.2 -f server/Dockerfile .
38
38
  Then run:
39
- CROSSTALK_IMAGE=crosstalk-server:7.0.0-alpha.1 crosstalk init mytransport
39
+ CROSSTALK_IMAGE=crosstalk-server:7.0.0-alpha.2 crosstalk init mytransport
40
40
  `,
41
41
  );
42
42
  process.exit(exit);
package/commands/up.js CHANGED
@@ -16,7 +16,7 @@ import { requireTransportRoot, transportName, composeFile } from '../lib/transpo
16
16
  import { has } from '../lib/argv.js';
17
17
 
18
18
  const DEFAULT_IMAGE = process.env.CROSSTALK_IMAGE
19
- ?? 'ghcr.io/cordfuse/crosstalk-server:7.0.0-alpha.1';
19
+ ?? 'ghcr.io/cordfuse/crosstalk-server:7.0.0-alpha.2';
20
20
  const DEFAULT_API_PORT = Number(process.env.CROSSTALK_API_PORT) || 7000;
21
21
 
22
22
  function usage(exit = 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cordfuse/crosstalk",
3
- "version": "7.0.0-alpha.1",
3
+ "version": "7.0.0-alpha.2",
4
4
  "description": "Crosstalk client — host-side CLI that talks to the crosstalkd daemon running inside the crosstalk-server container.",
5
5
  "type": "module",
6
6
  "license": "MIT",