@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 +33 -18
- package/commands/init.js +3 -3
- package/commands/up.js +1 -1
- package/package.json +1 -1
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
|
|
5
|
-
// crosstalk chat --agent <name>
|
|
6
|
-
// crosstalk chat --
|
|
7
|
-
//
|
|
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
|
|
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
|
-
|
|
57
|
-
--agent <name>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
browser
|
|
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
|
|
75
|
+
crosstalk chat --agent claude # interactive claude
|
|
69
76
|
crosstalk chat --agent gemini # interactive gemini
|
|
70
|
-
crosstalk chat --login
|
|
71
|
-
crosstalk chat --
|
|
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')
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|