@cotal-ai/manager 0.7.0 → 0.8.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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/manager",
3
3
  "description": "Cotal agent supervisor: spawns and manages mesh nodes via a pluggable runtime (pty/tmux/cmux).",
4
- "version": "0.7.0",
4
+ "version": "0.8.1",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -24,11 +24,13 @@
24
24
  "@xterm/xterm": "^5.5.0",
25
25
  "ws": "^8.21.0",
26
26
  "yaml": "^2.9.0",
27
- "@cotal-ai/core": "0.7.0"
27
+ "zod": "^4.4.3",
28
+ "@cotal-ai/core": "0.8.1",
29
+ "@cotal-ai/workspace": "0.8.1"
28
30
  },
29
31
  "devDependencies": {
30
32
  "@types/ws": "^8.18.1",
31
- "@cotal-ai/connector-core": "0.7.0"
33
+ "@cotal-ai/connector-core": "0.8.1"
32
34
  },
33
35
  "files": [
34
36
  "dist"
@@ -1,15 +0,0 @@
1
- import type { AgentHandle, LaunchSpec, Runtime } from "@cotal-ai/core";
2
- export declare function tmuxAvailable(): boolean;
3
- /**
4
- * Opt-in runtime for users already living in a multiplexer: each agent gets a
5
- * tmux window in a shared per-space session. You watch / drive it natively
6
- * (`tmux attach -t <session>:<name>`), so `attach()` here points you there
7
- * rather than streaming — the PTY runtime is the streamable default.
8
- */
9
- export declare class TmuxRuntime implements Runtime {
10
- private readonly session;
11
- readonly kind: "tmux";
12
- constructor(session: string);
13
- spawn(name: string, spec: LaunchSpec, cwd: string): AgentHandle;
14
- }
15
- //# sourceMappingURL=tmux.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/runtime/tmux.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEvE,wBAAgB,aAAa,IAAI,OAAO,CAOvC;AA6BD;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,OAAO;IAG7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;gBAEH,OAAO,EAAE,MAAM;IAE5C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW;CAiDhE"}
@@ -1,96 +0,0 @@
1
- import { execFileSync } from "node:child_process";
2
- export function tmuxAvailable() {
3
- try {
4
- execFileSync("tmux", ["-V"], { stdio: "ignore" });
5
- return true;
6
- }
7
- catch {
8
- return false;
9
- }
10
- }
11
- /** Grace window for a clean exit before a graceful stop kills the window. */
12
- const GRACE_MS = 1_500;
13
- function shellQuote(s) {
14
- return `'${s.replace(/'/g, "'\\''")}'`;
15
- }
16
- function hasSession(session) {
17
- try {
18
- execFileSync("tmux", ["has-session", "-t", session], { stdio: "ignore" });
19
- return true;
20
- }
21
- catch {
22
- return false;
23
- }
24
- }
25
- function windowAlive(session, name) {
26
- try {
27
- const out = execFileSync("tmux", ["list-windows", "-t", session, "-F", "#W"], {
28
- encoding: "utf8",
29
- });
30
- return out.split("\n").includes(name);
31
- }
32
- catch {
33
- return false;
34
- }
35
- }
36
- /**
37
- * Opt-in runtime for users already living in a multiplexer: each agent gets a
38
- * tmux window in a shared per-space session. You watch / drive it natively
39
- * (`tmux attach -t <session>:<name>`), so `attach()` here points you there
40
- * rather than streaming — the PTY runtime is the streamable default.
41
- */
42
- export class TmuxRuntime {
43
- session;
44
- kind = "tmux";
45
- constructor(session) {
46
- this.session = session;
47
- }
48
- spawn(name, spec, cwd) {
49
- if (!hasSession(this.session)) {
50
- execFileSync("tmux", ["new-session", "-d", "-s", this.session, "-c", cwd], {
51
- stdio: "ignore",
52
- });
53
- }
54
- // P3: `env -i` clears the tmux server's inherited env (the manager's env), then we set ONLY
55
- // the connector-declared env (OS allow-list + identity + named model key) — the operator's
56
- // unrelated secrets don't bleed into the window. paneCommand handles env entries; here we
57
- // prefix with `env -i`.
58
- const envPrefix = ["-i", ...Object.entries(spec.env ?? {}).map(([k, v]) => `${k}=${shellQuote(v)}`)];
59
- const cmd = ["env", ...envPrefix, spec.command, ...spec.args.map(shellQuote)].join(" ");
60
- execFileSync("tmux", ["new-window", "-t", this.session, "-n", name, "-c", cwd, cmd], { stdio: "ignore" });
61
- const target = `${this.session}:${name}`;
62
- return {
63
- name,
64
- kind: "tmux",
65
- status: () => (windowAlive(this.session, name) ? "running" : "exited"),
66
- stop: (opts) => {
67
- const kill = () => {
68
- try {
69
- execFileSync("tmux", ["kill-window", "-t", target], { stdio: "ignore" });
70
- }
71
- catch {
72
- /* already gone */
73
- }
74
- };
75
- if (opts?.graceful === false)
76
- return kill();
77
- // Graceful: type `/exit` so the session leaves the mesh cleanly, then
78
- // kill the window after a grace window in case it's still up.
79
- try {
80
- execFileSync("tmux", ["send-keys", "-t", target, "/exit", "Enter"], { stdio: "ignore" });
81
- }
82
- catch {
83
- /* window already gone */
84
- }
85
- setTimeout(kill, GRACE_MS);
86
- },
87
- interrupt: () => {
88
- execFileSync("tmux", ["send-keys", "-t", target, "C-c"], { stdio: "ignore" });
89
- },
90
- attach: () => {
91
- throw new Error(`tmux runtime: attach natively with \`tmux attach -t ${target}\``);
92
- },
93
- };
94
- }
95
- }
96
- //# sourceMappingURL=tmux.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/runtime/tmux.ts"],"names":[],"mappings":"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"}