xiaotime 0.6.1 → 0.8.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.
- package/dist/background.d.ts +47 -0
- package/dist/background.d.ts.map +1 -0
- package/dist/background.js +110 -0
- package/dist/background.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -1
- package/dist/index.js.map +1 -1
- package/dist/ink/App.d.ts +1 -0
- package/dist/ink/App.d.ts.map +1 -1
- package/dist/ink/App.js +11 -3
- package/dist/ink/App.js.map +1 -1
- package/dist/ink/runSessionInk.d.ts.map +1 -1
- package/dist/ink/runSessionInk.js +50 -2
- package/dist/ink/runSessionInk.js.map +1 -1
- package/dist/ink/store.d.ts +11 -0
- package/dist/ink/store.d.ts.map +1 -1
- package/dist/ink/store.js +12 -0
- package/dist/ink/store.js.map +1 -1
- package/dist/mcp.d.ts +94 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +282 -0
- package/dist/mcp.js.map +1 -0
- package/dist/room_agent.d.ts +7 -0
- package/dist/room_agent.d.ts.map +1 -0
- package/dist/room_agent.js +395 -0
- package/dist/room_agent.js.map +1 -0
- package/dist/settings.d.ts +9 -1
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +46 -4
- package/dist/settings.js.map +1 -1
- package/dist/skills.d.ts +14 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +112 -0
- package/dist/skills.js.map +1 -0
- package/dist/todos.d.ts +26 -0
- package/dist/todos.d.ts.map +1 -0
- package/dist/todos.js +55 -0
- package/dist/todos.js.map +1 -0
- package/dist/tools.d.ts +26 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +496 -1
- package/dist/tools.js.map +1 -1
- package/dist/ws.d.ts.map +1 -1
- package/dist/ws.js +34 -2
- package/dist/ws.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background / long-running command registry —
|
|
3
|
+
* SPRINT-CLI-CAPABILITY-PARITY-1 (#14608).
|
|
4
|
+
*
|
|
5
|
+
* The built-in `shell_command` blocks for up to 60s and returns once.
|
|
6
|
+
* A coding agent needs to kick off a long job (a build, a dev server, a
|
|
7
|
+
* test watcher) WITHOUT blocking the turn, then poll its output and kill
|
|
8
|
+
* it — the Claude-Code `run_in_background` / `BashOutput` / `KillShell`
|
|
9
|
+
* shape. This registry owns those child processes for the session:
|
|
10
|
+
* spawn detached from the turn, buffer stdout+stderr with a cap, expose
|
|
11
|
+
* an incremental read cursor, and kill on demand or at session close.
|
|
12
|
+
*/
|
|
13
|
+
import { type ChildProcess } from "child_process";
|
|
14
|
+
export type BgStatus = "running" | "exited" | "killed";
|
|
15
|
+
export interface BgProc {
|
|
16
|
+
id: string;
|
|
17
|
+
command: string;
|
|
18
|
+
child: ChildProcess;
|
|
19
|
+
output: string;
|
|
20
|
+
cursor: number;
|
|
21
|
+
status: BgStatus;
|
|
22
|
+
exitCode: number | null;
|
|
23
|
+
startedAt: number;
|
|
24
|
+
}
|
|
25
|
+
export declare class BackgroundRegistry {
|
|
26
|
+
private procs;
|
|
27
|
+
private seq;
|
|
28
|
+
start(command: string, cwd: string): BgProc;
|
|
29
|
+
get(id: string): BgProc | undefined;
|
|
30
|
+
/** Read output produced since the last read; advances the cursor. */
|
|
31
|
+
readNew(id: string): {
|
|
32
|
+
text: string;
|
|
33
|
+
status: BgStatus;
|
|
34
|
+
exitCode: number | null;
|
|
35
|
+
} | null;
|
|
36
|
+
kill(id: string): boolean;
|
|
37
|
+
list(): Array<{
|
|
38
|
+
id: string;
|
|
39
|
+
command: string;
|
|
40
|
+
status: BgStatus;
|
|
41
|
+
exitCode: number | null;
|
|
42
|
+
}>;
|
|
43
|
+
killAll(): void;
|
|
44
|
+
}
|
|
45
|
+
/** Session-global registry (one per CLI process). */
|
|
46
|
+
export declare const backgroundRegistry: BackgroundRegistry;
|
|
47
|
+
//# sourceMappingURL=background.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,GAAG,CAAK;IAEhB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAyC3C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInC,qEAAqE;IACrE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAQvF,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAczB,IAAI,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IASzF,OAAO,IAAI,IAAI;CAUhB;AAED,qDAAqD;AACrD,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background / long-running command registry —
|
|
3
|
+
* SPRINT-CLI-CAPABILITY-PARITY-1 (#14608).
|
|
4
|
+
*
|
|
5
|
+
* The built-in `shell_command` blocks for up to 60s and returns once.
|
|
6
|
+
* A coding agent needs to kick off a long job (a build, a dev server, a
|
|
7
|
+
* test watcher) WITHOUT blocking the turn, then poll its output and kill
|
|
8
|
+
* it — the Claude-Code `run_in_background` / `BashOutput` / `KillShell`
|
|
9
|
+
* shape. This registry owns those child processes for the session:
|
|
10
|
+
* spawn detached from the turn, buffer stdout+stderr with a cap, expose
|
|
11
|
+
* an incremental read cursor, and kill on demand or at session close.
|
|
12
|
+
*/
|
|
13
|
+
import { spawn } from "child_process";
|
|
14
|
+
/** Per-process output cap — keep the tail so a chatty job can't grow unbounded. */
|
|
15
|
+
const MAX_OUTPUT = 200_000;
|
|
16
|
+
export class BackgroundRegistry {
|
|
17
|
+
procs = new Map();
|
|
18
|
+
seq = 0;
|
|
19
|
+
start(command, cwd) {
|
|
20
|
+
const id = `bg_${++this.seq}`;
|
|
21
|
+
const child = spawn(command, {
|
|
22
|
+
shell: true,
|
|
23
|
+
cwd,
|
|
24
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
25
|
+
});
|
|
26
|
+
const proc = {
|
|
27
|
+
id,
|
|
28
|
+
command,
|
|
29
|
+
child,
|
|
30
|
+
output: "",
|
|
31
|
+
cursor: 0,
|
|
32
|
+
status: "running",
|
|
33
|
+
exitCode: null,
|
|
34
|
+
startedAt: Date.now(),
|
|
35
|
+
};
|
|
36
|
+
const append = (d) => {
|
|
37
|
+
proc.output += d.toString();
|
|
38
|
+
if (proc.output.length > MAX_OUTPUT) {
|
|
39
|
+
// Keep the tail; move the read cursor with the drop so
|
|
40
|
+
// background_output never reports negative-length slices.
|
|
41
|
+
const dropped = proc.output.length - MAX_OUTPUT;
|
|
42
|
+
proc.output = proc.output.slice(dropped);
|
|
43
|
+
proc.cursor = Math.max(0, proc.cursor - dropped);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
child.stdout?.on("data", append);
|
|
47
|
+
child.stderr?.on("data", append);
|
|
48
|
+
child.on("exit", (code) => {
|
|
49
|
+
if (proc.status !== "killed")
|
|
50
|
+
proc.status = "exited";
|
|
51
|
+
proc.exitCode = code;
|
|
52
|
+
});
|
|
53
|
+
child.on("error", (e) => {
|
|
54
|
+
append(Buffer.from(`\n[spawn error] ${e.message}\n`));
|
|
55
|
+
if (proc.status !== "killed")
|
|
56
|
+
proc.status = "exited";
|
|
57
|
+
});
|
|
58
|
+
this.procs.set(id, proc);
|
|
59
|
+
return proc;
|
|
60
|
+
}
|
|
61
|
+
get(id) {
|
|
62
|
+
return this.procs.get(id);
|
|
63
|
+
}
|
|
64
|
+
/** Read output produced since the last read; advances the cursor. */
|
|
65
|
+
readNew(id) {
|
|
66
|
+
const p = this.procs.get(id);
|
|
67
|
+
if (!p)
|
|
68
|
+
return null;
|
|
69
|
+
const text = p.output.slice(p.cursor);
|
|
70
|
+
p.cursor = p.output.length;
|
|
71
|
+
return { text, status: p.status, exitCode: p.exitCode };
|
|
72
|
+
}
|
|
73
|
+
kill(id) {
|
|
74
|
+
const p = this.procs.get(id);
|
|
75
|
+
if (!p)
|
|
76
|
+
return false;
|
|
77
|
+
if (p.status === "running") {
|
|
78
|
+
p.status = "killed";
|
|
79
|
+
try {
|
|
80
|
+
p.child.kill("SIGTERM");
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
/* already gone */
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
list() {
|
|
89
|
+
return [...this.procs.values()].map((p) => ({
|
|
90
|
+
id: p.id,
|
|
91
|
+
command: p.command,
|
|
92
|
+
status: p.status,
|
|
93
|
+
exitCode: p.exitCode,
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
96
|
+
killAll() {
|
|
97
|
+
for (const p of this.procs.values()) {
|
|
98
|
+
try {
|
|
99
|
+
p.child.kill("SIGTERM");
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
/* already gone */
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
this.procs.clear();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Session-global registry (one per CLI process). */
|
|
109
|
+
export const backgroundRegistry = new BackgroundRegistry();
|
|
110
|
+
//# sourceMappingURL=background.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background.js","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAC;AAezD,mFAAmF;AACnF,MAAM,UAAU,GAAG,OAAO,CAAC;AAE3B,MAAM,OAAO,kBAAkB;IACrB,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClC,GAAG,GAAG,CAAC,CAAC;IAEhB,KAAK,CAAC,OAAe,EAAE,GAAW;QAChC,MAAM,EAAE,GAAG,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE;YAC3B,KAAK,EAAE,IAAI;YACX,GAAG;YACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QACH,MAAM,IAAI,GAAW;YACnB,EAAE;YACF,OAAO;YACP,KAAK;YACL,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,CAAS,EAAQ,EAAE;YACjC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;gBACpC,uDAAuD;gBACvD,0DAA0D;gBAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;gBAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC;QACF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAoB,CAAW,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,qEAAqE;IACrE,OAAO,CAAC,EAAU;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,EAAU;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3B,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;YACpB,IAAI,CAAC;gBACH,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO;QACL,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAED,qDAAqD;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Usage:
|
|
6
6
|
* xiaotime login # authenticate via Discord OAuth
|
|
7
7
|
* xiaotime dev # new session
|
|
8
|
+
* xiaotime dev --room # new session + the windowless Claude Code room-agent (#14605)
|
|
8
9
|
* xiaotime dev --session <id> # resume existing session
|
|
9
10
|
* xiaotime dev --name "my session" # new session with name
|
|
10
11
|
* xiaotime dev --list # list sessions
|
|
@@ -12,6 +13,7 @@
|
|
|
12
13
|
* xiaotime new "my session" # shorthand for dev --name "my session"
|
|
13
14
|
* xiaotime sessions # list all sessions (pretty view)
|
|
14
15
|
* xiaotime replay "session name" # replay a session in read-only mode
|
|
16
|
+
* xiaotime room-agent --session <id> # internal: the daemon `dev --room` spawns (#14605)
|
|
15
17
|
*/
|
|
16
18
|
export {};
|
|
17
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Usage:
|
|
6
6
|
* xiaotime login # authenticate via Discord OAuth
|
|
7
7
|
* xiaotime dev # new session
|
|
8
|
+
* xiaotime dev --room # new session + the windowless Claude Code room-agent (#14605)
|
|
8
9
|
* xiaotime dev --session <id> # resume existing session
|
|
9
10
|
* xiaotime dev --name "my session" # new session with name
|
|
10
11
|
* xiaotime dev --list # list sessions
|
|
@@ -12,14 +13,36 @@
|
|
|
12
13
|
* xiaotime new "my session" # shorthand for dev --name "my session"
|
|
13
14
|
* xiaotime sessions # list all sessions (pretty view)
|
|
14
15
|
* xiaotime replay "session name" # replay a session in read-only mode
|
|
16
|
+
* xiaotime room-agent --session <id> # internal: the daemon `dev --room` spawns (#14605)
|
|
15
17
|
*/
|
|
16
18
|
import { createSession, listSessions, getSession, archiveSession } from "./session.js";
|
|
17
19
|
import { runSession, replaySession } from "./ws.js";
|
|
20
|
+
import { runRoomAgent } from "./room_agent.js";
|
|
18
21
|
import { runSessionInk } from "./ink/runSessionInk.js";
|
|
19
22
|
import { printSessionList, printError } from "./display.js";
|
|
20
23
|
import { runLogin } from "./auth.js";
|
|
21
24
|
import { matchSession } from "./session_match.js";
|
|
22
25
|
import { CLI_VERSION } from "./config.js";
|
|
26
|
+
import { spawn } from "child_process";
|
|
27
|
+
// #14605 — spawn the windowless room-agent daemon as a CHILD of this CLI, bound
|
|
28
|
+
// to the dev session's lifecycle. The daemon is the same CLI binary invoked with
|
|
29
|
+
// `room-agent --session <id>`: it joins the SAME session as a distinct
|
|
30
|
+
// `claude-code` participant and answers @claude turns. stdio is ignored so the
|
|
31
|
+
// daemon stays windowless (its I/O is the room, not this terminal); it dies with
|
|
32
|
+
// the parent. Best-effort — a spawn failure never breaks the dev session.
|
|
33
|
+
function spawnRoomAgentDaemon(sessionId) {
|
|
34
|
+
try {
|
|
35
|
+
const entry = process.argv[1];
|
|
36
|
+
const child = spawn(process.execPath, [entry, "room-agent", "--session", sessionId], { stdio: "ignore", detached: false });
|
|
37
|
+
child.on("error", () => {
|
|
38
|
+
/* best-effort: the dev session continues without a room-agent */
|
|
39
|
+
});
|
|
40
|
+
return child;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
23
46
|
async function main() {
|
|
24
47
|
const args = process.argv.slice(2);
|
|
25
48
|
const cmd = args[0];
|
|
@@ -27,7 +50,32 @@ async function main() {
|
|
|
27
50
|
// the legacy readline client. (`--ink` is still accepted as a no-op alias so
|
|
28
51
|
// existing muscle memory / docs keep working.)
|
|
29
52
|
const useClassic = args.includes("--classic");
|
|
30
|
-
|
|
53
|
+
// #14605 — the room-agent daemon is OPT-IN (default OFF). `xiaotime dev --room`
|
|
54
|
+
// spawns the windowless Claude Code agent into this session (one terminal:
|
|
55
|
+
// same session, answers @claude, lifecycle bound to this client's); plain
|
|
56
|
+
// `xiaotime dev` is UNCHANGED — no daemon. So a published version never
|
|
57
|
+
// auto-spawns the agent on anyone's terminal; only a user who asks for the
|
|
58
|
+
// room with --room gets it.
|
|
59
|
+
const roomAgentEnabled = args.includes("--room");
|
|
60
|
+
const startSession = async (id) => {
|
|
61
|
+
const daemon = roomAgentEnabled ? spawnRoomAgentDaemon(id) : null;
|
|
62
|
+
const killDaemon = () => {
|
|
63
|
+
try {
|
|
64
|
+
daemon?.kill();
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
/* ignore */
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
if (daemon)
|
|
71
|
+
process.once("exit", killDaemon);
|
|
72
|
+
try {
|
|
73
|
+
await (useClassic ? runSession(id) : runSessionInk(id));
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
killDaemon();
|
|
77
|
+
}
|
|
78
|
+
};
|
|
31
79
|
// xiaotime --version / -v / version — print the installed version and exit.
|
|
32
80
|
// (CLI_VERSION is derived from package.json, so it never drifts.)
|
|
33
81
|
if (cmd === "--version" || cmd === "-v" || cmd === "version") {
|
|
@@ -68,6 +116,27 @@ async function main() {
|
|
|
68
116
|
await replaySession(match.id);
|
|
69
117
|
return;
|
|
70
118
|
}
|
|
119
|
+
// xiaotime room-agent --session <id> — join a room session as the windowless
|
|
120
|
+
// Claude Code agent participant (#14605, workstream B). Headless: no UI, no
|
|
121
|
+
// input. Slice 1 observes the shared thread; later slices respond when
|
|
122
|
+
// addressed. Meant to run supervised (systemd/pm2) so it auto-reconnects.
|
|
123
|
+
if (cmd === "room-agent") {
|
|
124
|
+
const roomSessionFlagIdx = args.indexOf("--session");
|
|
125
|
+
const roomSessionId = roomSessionFlagIdx !== -1 ? args[roomSessionFlagIdx + 1] : undefined;
|
|
126
|
+
if (!roomSessionId) {
|
|
127
|
+
console.error("Usage: xiaotime room-agent --session <session-id>");
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
await getSession(roomSessionId);
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
printError(`Session ${roomSessionId} not found.`);
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
await runRoomAgent(roomSessionId);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
71
140
|
// List / archive shortcuts (work with or without "dev" prefix)
|
|
72
141
|
if (cmd === "--list" || cmd === "list") {
|
|
73
142
|
const sessions = await listSessions();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ink/App.d.ts
CHANGED
package/dist/ink/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ink/App.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAuC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ink/App.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAuC,MAAM,KAAK,CAAC;AA0QlE;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAE5B"}
|
package/dist/ink/App.js
CHANGED
|
@@ -125,13 +125,18 @@ function ApprovalMenu({ approval }) {
|
|
|
125
125
|
}, { isActive: mode === "menu" });
|
|
126
126
|
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "yellow", paddingX: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: "yellow", bold: true, children: "approve" }), " ", _jsx(Text, { bold: true, children: approval.tool }), approval.summary ? _jsxs(_Fragment, { children: [" ", _jsx(Text, { dimColor: true, children: approval.summary })] }) : null] }), approval.body.split("\n").map((l, i) => (_jsx(Text, { dimColor: true, children: l.length ? l : " " }, i))), approval.diff?.map((d, i) => (_jsxs(Text, { color: d.op === "+" ? "green" : "red", children: [d.op, " ", d.text] }, `d${i}`)))] }), mode === "menu" ? (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [APPROVAL_OPTIONS.map((opt, i) => (_jsxs(Text, { color: i === index ? "cyan" : undefined, children: [i === index ? "❯ " : " ", i + 1, ". ", opt] }, i))), _jsx(Text, { dimColor: true, children: " (1-3, \u2191\u2193 Enter \u00B7 Esc to reject)" })] })) : (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "reason › " }), _jsx(TextInput, { value: reason, onChange: setReason, onSubmit: (r) => resolveApproval({ approved: false, rejectReason: r.trim() }), placeholder: "why are you rejecting?" })] }))] }));
|
|
127
127
|
}
|
|
128
|
-
function App({ onSubmit }) {
|
|
128
|
+
function App({ onSubmit, onInterrupt, }) {
|
|
129
129
|
const { exit } = useApp();
|
|
130
130
|
const s = useSession();
|
|
131
131
|
const [value, setValue] = useState("");
|
|
132
132
|
useInput((input, key) => {
|
|
133
133
|
if (key.ctrl && input === "c")
|
|
134
134
|
exit();
|
|
135
|
+
// #14605 — Esc halts an in-flight room-agent turn. Guarded by
|
|
136
|
+
// !pendingApproval so the approval menu keeps Esc = deny; otherwise Esc =
|
|
137
|
+
// interrupt (a harmless no-op if nothing is running).
|
|
138
|
+
else if (key.escape && !s.pendingApproval)
|
|
139
|
+
onInterrupt?.();
|
|
135
140
|
});
|
|
136
141
|
function handleSubmit(line) {
|
|
137
142
|
const t = line.trim();
|
|
@@ -140,13 +145,16 @@ function App({ onSubmit }) {
|
|
|
140
145
|
setValue("");
|
|
141
146
|
onSubmit(t);
|
|
142
147
|
}
|
|
143
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Static, { items: s.turns, children: (turn, i) => (_jsx(Box, { flexDirection: "column", marginBottom: turn.kind === "tool" ? 0 : 1, children: turn.kind === "user" ? (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "› " }), turn.text] })) : turn.kind === "tool" ? (_jsx(ToolLine, { tool: turn.tool, status: turn.tool.status })) :
|
|
148
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Static, { items: s.turns, children: (turn, i) => (_jsx(Box, { flexDirection: "column", marginBottom: turn.kind === "tool" ? 0 : 1, children: turn.kind === "user" ? (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "› " }), turn.text] })) : turn.kind === "tool" ? (_jsx(ToolLine, { tool: turn.tool, status: turn.tool.status })) : turn.kind === "peer" ? (
|
|
149
|
+
// #14605 — a room peer (DoctorWhiskers / claude-code / another
|
|
150
|
+
// human). Attributed to the SENDER, not this client's bot name.
|
|
151
|
+
_jsxs(_Fragment, { children: [_jsx(BotHeader, { name: turn.from }), _jsx(Markdown, { text: turn.text })] })) : (_jsxs(_Fragment, { children: [_jsx(BotHeader, { name: s.botName }), _jsx(Markdown, { text: turn.text })] })) }, i)) }), s.liveTool && (_jsx(Box, { marginBottom: 0, children: _jsx(ToolLine, { tool: s.liveTool, status: "running" }) })), s.streaming !== null && (_jsxs(Box, { flexDirection: "column", marginTop: 1, marginBottom: 1, children: [_jsx(BotHeader, { name: s.botName }), _jsx(Markdown, { text: s.streaming })] })), s.pendingApproval ? (_jsx(ApprovalMenu, { approval: s.pendingApproval })) : (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "› " }), s.busy ? (_jsx(Text, { dimColor: true, children: value || "…" })) : (_jsx(TextInput, { value: value, onChange: setValue, onSubmit: handleSubmit, placeholder: "type a message\u2026" }))] })), _jsx(StatusLine, { connected: s.connected, session: s.sessionLabel, note: s.statusNote })] }));
|
|
144
152
|
}
|
|
145
153
|
/**
|
|
146
154
|
* Mount the Ink UI. Keeps the render() call + JSX in this file so the runner
|
|
147
155
|
* (plain .ts) stays free of TSX. Returns Ink's instance for lifecycle control.
|
|
148
156
|
*/
|
|
149
157
|
export function startInkUI(handlers) {
|
|
150
|
-
return render(_jsx(App, { onSubmit: handlers.onSubmit }));
|
|
158
|
+
return render(_jsx(App, { onSubmit: handlers.onSubmit, onInterrupt: handlers.onInterrupt }));
|
|
151
159
|
}
|
|
152
160
|
//# sourceMappingURL=App.js.map
|
package/dist/ink/App.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/ink/App.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/ink/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runSessionInk.d.ts","sourceRoot":"","sources":["../../src/ink/runSessionInk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runSessionInk.d.ts","sourceRoot":"","sources":["../../src/ink/runSessionInk.ts"],"names":[],"mappings":"AAyBA,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4NpE"}
|
|
@@ -20,8 +20,15 @@ import { execToolInk } from "./execToolInk.js";
|
|
|
20
20
|
import { connectProjectContextField } from "../projectContext.js";
|
|
21
21
|
import { startInkUI } from "./App.js";
|
|
22
22
|
import * as store from "./store.js";
|
|
23
|
+
import { McpManager, isMcpTool } from "../mcp.js";
|
|
24
|
+
import { backgroundRegistry } from "../background.js";
|
|
23
25
|
export async function runSessionInk(sessionId) {
|
|
24
26
|
const wsUrl = `${WS_URL}/terminal/sessions/${sessionId}/stream`;
|
|
27
|
+
// Start MCP servers (if configured) before connecting so their tools
|
|
28
|
+
// ride the connect manifest — identical to ws.ts::runSession (#14608).
|
|
29
|
+
const mcp = new McpManager();
|
|
30
|
+
const { tools: mcpTools, errors: mcpErrors } = await mcp.startAll();
|
|
31
|
+
const allTools = [...TOOL_MANIFEST, ...mcpTools];
|
|
25
32
|
return new Promise((resolve, reject) => {
|
|
26
33
|
const ws = new WebSocket(wsUrl);
|
|
27
34
|
let connected = false;
|
|
@@ -39,6 +46,13 @@ export async function runSessionInk(sessionId) {
|
|
|
39
46
|
firstTokenThisTurn = true;
|
|
40
47
|
ws.send(JSON.stringify({ type: "message", content: text }));
|
|
41
48
|
},
|
|
49
|
+
// #14605 gate — halt an in-flight room-agent turn. Relayed to the agent(s),
|
|
50
|
+
// which abort the SDK query; a no-op if nothing is running.
|
|
51
|
+
onInterrupt: () => {
|
|
52
|
+
if (ws.readyState === WebSocket.OPEN) {
|
|
53
|
+
ws.send(JSON.stringify({ type: "interrupt" }));
|
|
54
|
+
}
|
|
55
|
+
},
|
|
42
56
|
});
|
|
43
57
|
function finish(err) {
|
|
44
58
|
if (settled)
|
|
@@ -46,6 +60,8 @@ export async function runSessionInk(sessionId) {
|
|
|
46
60
|
settled = true;
|
|
47
61
|
if (pingInterval)
|
|
48
62
|
clearInterval(pingInterval);
|
|
63
|
+
mcp.stopAll();
|
|
64
|
+
backgroundRegistry.killAll();
|
|
49
65
|
try {
|
|
50
66
|
ink.unmount();
|
|
51
67
|
}
|
|
@@ -75,7 +91,9 @@ export async function runSessionInk(sessionId) {
|
|
|
75
91
|
while (toolQueue.length > 0) {
|
|
76
92
|
const tc = toolQueue.shift();
|
|
77
93
|
store.flushStreaming();
|
|
78
|
-
const result =
|
|
94
|
+
const result = isMcpTool(tc.name)
|
|
95
|
+
? await mcp.call(tc.name, tc.input, tc.tool_use_id)
|
|
96
|
+
: await execToolInk(tc);
|
|
79
97
|
try {
|
|
80
98
|
await postToolResults(sessionId, [
|
|
81
99
|
{ tool_use_id: result.tool_use_id, content: result.content, is_error: result.is_error },
|
|
@@ -97,7 +115,7 @@ export async function runSessionInk(sessionId) {
|
|
|
97
115
|
ws.send(JSON.stringify({
|
|
98
116
|
type: "connect",
|
|
99
117
|
cwd: process.cwd(),
|
|
100
|
-
tools:
|
|
118
|
+
tools: allTools,
|
|
101
119
|
...connectProjectContextField(process.cwd()),
|
|
102
120
|
}));
|
|
103
121
|
});
|
|
@@ -113,6 +131,9 @@ export async function runSessionInk(sessionId) {
|
|
|
113
131
|
store.setBotName(name);
|
|
114
132
|
const shortId = String(msg.session_id ?? sessionId).slice(0, 4);
|
|
115
133
|
store.setSessionLabel(`${(name ?? "session").toLowerCase()} · ${shortId}`);
|
|
134
|
+
for (const err of mcpErrors) {
|
|
135
|
+
store.pushError(`MCP server skipped — ${err}`);
|
|
136
|
+
}
|
|
116
137
|
break;
|
|
117
138
|
}
|
|
118
139
|
case "text_delta":
|
|
@@ -141,6 +162,33 @@ export async function runSessionInk(sessionId) {
|
|
|
141
162
|
});
|
|
142
163
|
pendingServerTool = true;
|
|
143
164
|
break;
|
|
165
|
+
case "message":
|
|
166
|
+
// #14605 — a peer's message fanned in by the broker (another room
|
|
167
|
+
// participant: DoctorWhiskers, claude-code, or another human). Render
|
|
168
|
+
// it attributed to the sender. `addressed_agents` is the broker's
|
|
169
|
+
// routing hint for agents; a human client just displays the turn.
|
|
170
|
+
store.addPeerTurn(String(msg.from ?? "?"), String(msg.content ?? ""));
|
|
171
|
+
break;
|
|
172
|
+
case "approval_request": {
|
|
173
|
+
// #14605 gate — a room-agent wants to run a mutating tool. Surface it
|
|
174
|
+
// in the SAME approval UI the human uses for their own tool calls, then
|
|
175
|
+
// relay the decision back so the agent's canUseTool proceeds/denies.
|
|
176
|
+
const requestId = String(msg.request_id ?? "");
|
|
177
|
+
const decision = await store.requestApproval({
|
|
178
|
+
tool: `${String(msg.from ?? "agent")}: ${String(msg.tool ?? "tool")}`,
|
|
179
|
+
summary: String(msg.summary ?? ""),
|
|
180
|
+
body: String(msg.body ?? ""),
|
|
181
|
+
});
|
|
182
|
+
if (ws.readyState === WebSocket.OPEN) {
|
|
183
|
+
ws.send(JSON.stringify({
|
|
184
|
+
type: "approval_response",
|
|
185
|
+
request_id: requestId,
|
|
186
|
+
approved: decision.approved,
|
|
187
|
+
reason: decision.approved ? "" : decision.rejectReason,
|
|
188
|
+
}));
|
|
189
|
+
}
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
144
192
|
case "message_stop":
|
|
145
193
|
flushPendingServerTool();
|
|
146
194
|
store.endTurn();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runSessionInk.js","sourceRoot":"","sources":["../../src/ink/runSessionInk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"runSessionInk.js","sourceRoot":"","sources":["../../src/ink/runSessionInk.ts"],"names":[],"mappings":"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"}
|
package/dist/ink/store.d.ts
CHANGED
|
@@ -20,6 +20,10 @@ export type Turn = {
|
|
|
20
20
|
} | {
|
|
21
21
|
kind: "tool";
|
|
22
22
|
tool: ToolCall;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "peer";
|
|
25
|
+
from: string;
|
|
26
|
+
text: string;
|
|
23
27
|
};
|
|
24
28
|
/** The user's decision on a tool approval — mirrors ui_state.ApprovalMenuResult. */
|
|
25
29
|
export type ApprovalDecision = {
|
|
@@ -66,6 +70,13 @@ export declare function setBotName(name: string | undefined | null): void;
|
|
|
66
70
|
export declare function setSessionLabel(label: string): void;
|
|
67
71
|
/** User submitted a message: commit it to history and mark the agent busy. */
|
|
68
72
|
export declare function addUserTurn(text: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* #14605 — a message from another ROOM participant (a peer human, or an agent
|
|
75
|
+
* like DoctorWhiskers / claude-code), fanned in by the broker. Commit it to
|
|
76
|
+
* history attributed to `from`. Does NOT touch `busy`: a peer turn isn't this
|
|
77
|
+
* client's own turn, and the local input stays free while the room converses.
|
|
78
|
+
*/
|
|
79
|
+
export declare function addPeerTurn(from: string, text: string): void;
|
|
69
80
|
/** A text_delta arrived — append to the streaming reply. */
|
|
70
81
|
export declare function appendStreaming(delta: string): void;
|
|
71
82
|
/**
|
package/dist/ink/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/ink/store.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,2EAA2E;IAC3E,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,IAAI,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/ink/store.ts"],"names":[],"mappings":"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"}
|
package/dist/ink/store.js
CHANGED
|
@@ -60,6 +60,18 @@ export function setSessionLabel(label) {
|
|
|
60
60
|
export function addUserTurn(text) {
|
|
61
61
|
set({ turns: [...state.turns, { kind: "user", text }], busy: true });
|
|
62
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* #14605 — a message from another ROOM participant (a peer human, or an agent
|
|
65
|
+
* like DoctorWhiskers / claude-code), fanned in by the broker. Commit it to
|
|
66
|
+
* history attributed to `from`. Does NOT touch `busy`: a peer turn isn't this
|
|
67
|
+
* client's own turn, and the local input stays free while the room converses.
|
|
68
|
+
*/
|
|
69
|
+
export function addPeerTurn(from, text) {
|
|
70
|
+
if (!text)
|
|
71
|
+
return;
|
|
72
|
+
// Normalize a falsy sender so the header never renders blank.
|
|
73
|
+
set({ turns: [...state.turns, { kind: "peer", from: from || "?", text }] });
|
|
74
|
+
}
|
|
63
75
|
/** A text_delta arrived — append to the streaming reply. */
|
|
64
76
|
export function appendStreaming(delta) {
|
|
65
77
|
if (!delta)
|