@cotal-ai/cli 0.9.1 → 0.10.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.
Files changed (157) hide show
  1. package/dist/command.d.ts +12 -3
  2. package/dist/command.d.ts.map +1 -1
  3. package/dist/command.js +58 -11
  4. package/dist/command.js.map +1 -1
  5. package/dist/commands/agents.d.ts +64 -0
  6. package/dist/commands/agents.d.ts.map +1 -0
  7. package/dist/commands/agents.js +83 -0
  8. package/dist/commands/agents.js.map +1 -0
  9. package/dist/commands/channels.d.ts +2 -1
  10. package/dist/commands/channels.d.ts.map +1 -1
  11. package/dist/commands/channels.js +3 -16
  12. package/dist/commands/channels.js.map +1 -1
  13. package/dist/commands/completion.d.ts +6 -5
  14. package/dist/commands/completion.d.ts.map +1 -1
  15. package/dist/commands/completion.js +37 -14
  16. package/dist/commands/completion.js.map +1 -1
  17. package/dist/commands/console.d.ts +2 -1
  18. package/dist/commands/console.d.ts.map +1 -1
  19. package/dist/commands/console.js +2 -12
  20. package/dist/commands/console.js.map +1 -1
  21. package/dist/commands/down.d.ts +3 -2
  22. package/dist/commands/down.d.ts.map +1 -1
  23. package/dist/commands/down.js +42 -16
  24. package/dist/commands/down.js.map +1 -1
  25. package/dist/commands/ext.d.ts +18 -0
  26. package/dist/commands/ext.d.ts.map +1 -0
  27. package/dist/commands/ext.js +220 -0
  28. package/dist/commands/ext.js.map +1 -0
  29. package/dist/commands/feedback.d.ts +2 -2
  30. package/dist/commands/feedback.d.ts.map +1 -1
  31. package/dist/commands/feedback.js +4 -283
  32. package/dist/commands/feedback.js.map +1 -1
  33. package/dist/commands/history.d.ts +2 -1
  34. package/dist/commands/history.d.ts.map +1 -1
  35. package/dist/commands/history.js +3 -13
  36. package/dist/commands/history.js.map +1 -1
  37. package/dist/commands/join.d.ts +2 -1
  38. package/dist/commands/join.d.ts.map +1 -1
  39. package/dist/commands/join.js +2 -18
  40. package/dist/commands/join.js.map +1 -1
  41. package/dist/commands/meshes.d.ts +2 -1
  42. package/dist/commands/meshes.d.ts.map +1 -1
  43. package/dist/commands/meshes.js +1 -1
  44. package/dist/commands/meshes.js.map +1 -1
  45. package/dist/commands/mint.d.ts +2 -1
  46. package/dist/commands/mint.d.ts.map +1 -1
  47. package/dist/commands/mint.js +3 -14
  48. package/dist/commands/mint.js.map +1 -1
  49. package/dist/commands/models.d.ts +29 -0
  50. package/dist/commands/models.d.ts.map +1 -0
  51. package/dist/commands/models.js +54 -0
  52. package/dist/commands/models.js.map +1 -0
  53. package/dist/commands/personas.d.ts +2 -2
  54. package/dist/commands/personas.d.ts.map +1 -1
  55. package/dist/commands/personas.js +23 -20
  56. package/dist/commands/personas.js.map +1 -1
  57. package/dist/commands/send.d.ts +2 -2
  58. package/dist/commands/send.d.ts.map +1 -1
  59. package/dist/commands/send.js +21 -24
  60. package/dist/commands/send.js.map +1 -1
  61. package/dist/commands/setup.d.ts +30 -8
  62. package/dist/commands/setup.d.ts.map +1 -1
  63. package/dist/commands/setup.js +151 -316
  64. package/dist/commands/setup.js.map +1 -1
  65. package/dist/commands/spawn.d.ts +122 -2
  66. package/dist/commands/spawn.d.ts.map +1 -1
  67. package/dist/commands/spawn.js +156 -49
  68. package/dist/commands/spawn.js.map +1 -1
  69. package/dist/commands/status.d.ts +15 -0
  70. package/dist/commands/status.d.ts.map +1 -0
  71. package/dist/commands/status.js +172 -0
  72. package/dist/commands/status.js.map +1 -0
  73. package/dist/commands/topology.d.ts +2 -1
  74. package/dist/commands/topology.d.ts.map +1 -1
  75. package/dist/commands/topology.js +4 -8
  76. package/dist/commands/topology.js.map +1 -1
  77. package/dist/commands/up.d.ts +9 -4
  78. package/dist/commands/up.d.ts.map +1 -1
  79. package/dist/commands/up.js +96 -56
  80. package/dist/commands/up.js.map +1 -1
  81. package/dist/commands/use.d.ts +2 -2
  82. package/dist/commands/use.d.ts.map +1 -1
  83. package/dist/commands/use.js +2 -2
  84. package/dist/commands/use.js.map +1 -1
  85. package/dist/ext-loader.d.ts +13 -0
  86. package/dist/ext-loader.d.ts.map +1 -0
  87. package/dist/ext-loader.js +121 -0
  88. package/dist/ext-loader.js.map +1 -0
  89. package/dist/index.d.ts +3 -0
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +219 -67
  92. package/dist/index.js.map +1 -1
  93. package/dist/lib/attach-client.d.ts +20 -0
  94. package/dist/lib/attach-client.d.ts.map +1 -0
  95. package/dist/lib/attach-client.js +218 -0
  96. package/dist/lib/attach-client.js.map +1 -0
  97. package/dist/lib/completion.d.ts +8 -0
  98. package/dist/lib/completion.d.ts.map +1 -0
  99. package/dist/lib/completion.js +66 -0
  100. package/dist/lib/completion.js.map +1 -0
  101. package/dist/lib/connect.d.ts +1 -73
  102. package/dist/lib/connect.d.ts.map +1 -1
  103. package/dist/lib/connect.js +4 -90
  104. package/dist/lib/connect.js.map +1 -1
  105. package/dist/lib/control.d.ts +34 -0
  106. package/dist/lib/control.d.ts.map +1 -0
  107. package/dist/lib/control.js +65 -0
  108. package/dist/lib/control.js.map +1 -0
  109. package/dist/lib/delivery-proc.d.ts +2 -0
  110. package/dist/lib/delivery-proc.d.ts.map +1 -1
  111. package/dist/lib/manager-proc.d.ts +5 -13
  112. package/dist/lib/manager-proc.d.ts.map +1 -1
  113. package/dist/lib/manager-proc.js +3 -42
  114. package/dist/lib/manager-proc.js.map +1 -1
  115. package/dist/lib/manifest/apply.d.ts.map +1 -1
  116. package/dist/lib/manifest/apply.js +5 -0
  117. package/dist/lib/manifest/apply.js.map +1 -1
  118. package/dist/lib/manifest/live.d.ts.map +1 -1
  119. package/dist/lib/manifest/live.js +4 -1
  120. package/dist/lib/manifest/live.js.map +1 -1
  121. package/dist/lib/manifest/model.d.ts +2 -0
  122. package/dist/lib/manifest/model.d.ts.map +1 -1
  123. package/dist/lib/manifest/prepare.d.ts +2 -1
  124. package/dist/lib/manifest/prepare.d.ts.map +1 -1
  125. package/dist/lib/manifest/prepare.js +3 -1
  126. package/dist/lib/manifest/prepare.js.map +1 -1
  127. package/dist/lib/manifest/resolve.js +1 -0
  128. package/dist/lib/manifest/resolve.js.map +1 -1
  129. package/dist/lib/manifest/schema.d.ts +2 -0
  130. package/dist/lib/manifest/schema.d.ts.map +1 -1
  131. package/dist/lib/manifest/schema.js +3 -2
  132. package/dist/lib/manifest/schema.js.map +1 -1
  133. package/dist/lib/self-exec.d.ts +7 -2
  134. package/dist/lib/self-exec.d.ts.map +1 -1
  135. package/dist/lib/self-exec.js +14 -3
  136. package/dist/lib/self-exec.js.map +1 -1
  137. package/dist/lib/status.d.ts +8 -4
  138. package/dist/lib/status.d.ts.map +1 -1
  139. package/dist/lib/status.js +42 -9
  140. package/dist/lib/status.js.map +1 -1
  141. package/dist/ui.d.ts +1 -12
  142. package/dist/ui.d.ts.map +1 -1
  143. package/dist/ui.js +4 -12
  144. package/dist/ui.js.map +1 -1
  145. package/package.json +8 -6
  146. package/dist/commands/demo.d.ts +0 -2
  147. package/dist/commands/demo.d.ts.map +0 -1
  148. package/dist/commands/demo.js +0 -163
  149. package/dist/commands/demo.js.map +0 -1
  150. package/dist/commands/web.d.ts +0 -32
  151. package/dist/commands/web.d.ts.map +0 -1
  152. package/dist/commands/web.js +0 -307
  153. package/dist/commands/web.js.map +0 -1
  154. package/dist/web/app.js +0 -823
  155. package/dist/web/graph.html +0 -207
  156. package/dist/web/graph.js +0 -528
  157. package/dist/web/index.html +0 -350
@@ -1,14 +1,30 @@
1
1
  import { spawnSync } from "node:child_process";
2
- import { existsSync } from "node:fs";
3
- import { join } from "node:path";
2
+ import { accessSync, constants, existsSync } from "node:fs";
3
+ import { connect } from "node:net";
4
+ import { delimiter, join } from "node:path";
4
5
  import { DEFAULT_SERVER, DEFAULT_SPACE, isReachable } from "@cotal-ai/core";
5
6
  import { authDir, findCotalRoot, loadSpaceAuth } from "@cotal-ai/workspace";
6
7
  import { resolveNatsServer } from "./nats-bin.js";
7
- /** The space this folder operates on: its `.cotal/auth` space if set up, else the default.
8
- * A folder has exactly one space (its auth) — commands resolve it through here so they always
9
- * match the folder's mesh instead of assuming the global default. */
10
- export function resolveSpace(cwd) {
11
- return loadSpaceAuth(authDir(findCotalRoot(cwd)))?.space ?? DEFAULT_SPACE;
8
+ // Moved into `@cotal-ai/workspace` (stage 4); re-exported for the CLI's many importers.
9
+ export { resolveSpace } from "@cotal-ai/workspace";
10
+ /** The dashboard's default port + branded URL. The `web` command moved out to the `cotal-web`
11
+ * extension (stage 4); the CLI keeps these constants and the port probe so the setup ready-card
12
+ * can report the dashboard without importing it. */
13
+ export const WEB_PORT = 7799;
14
+ export const WEB_URL = `http://cotal.localhost:${WEB_PORT}/`;
15
+ /** True if something is already listening on the dashboard port (loopback). */
16
+ export function webUp(port = WEB_PORT) {
17
+ return new Promise((res) => {
18
+ const sock = connect(port, "127.0.0.1");
19
+ sock.setTimeout(400);
20
+ const done = (up) => {
21
+ sock.destroy();
22
+ res(up);
23
+ };
24
+ sock.once("connect", () => done(true));
25
+ sock.once("timeout", () => done(false));
26
+ sock.once("error", () => done(false));
27
+ });
12
28
  }
13
29
  /** Cheap, connectionless-ish snapshot of the mesh for this folder: is a server up,
14
30
  * and what space/auth does the local `.cotal/` describe (found by walking up from `cwd`). */
@@ -41,8 +57,25 @@ export async function machineStatus() {
41
57
  };
42
58
  }
43
59
  export function onPath(bin) {
44
- const r = spawnSync(bin, ["--version"], { stdio: "ignore" });
45
- return !r.error && r.status === 0;
60
+ const exts = process.platform === "win32"
61
+ ? (process.env.PATHEXT ?? ".EXE;.CMD;.BAT;.COM").split(";")
62
+ : [""];
63
+ for (const dir of (process.env.PATH ?? "").split(delimiter).filter(Boolean)) {
64
+ for (const ext of exts) {
65
+ const name = process.platform === "win32" && ext && !bin.toUpperCase().endsWith(ext.toUpperCase())
66
+ ? `${bin}${ext}`
67
+ : bin;
68
+ const candidate = join(dir, name);
69
+ try {
70
+ accessSync(candidate, constants.X_OK);
71
+ return true;
72
+ }
73
+ catch {
74
+ /* try the next PATH entry */
75
+ }
76
+ }
77
+ }
78
+ return false;
46
79
  }
47
80
  function claudePluginInstalled() {
48
81
  if (!onPath("claude"))
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/lib/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AASlD;;sEAEsE;AACtE,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,aAAa,CAAC;AAC5E,CAAC;AAED;8FAC8F;AAC9F,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,MAAM,MAAM,GAAG,cAAc,CAAC;IAC9B,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO;QACL,SAAS,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC;QACpC,MAAM;QACN,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,aAAa;QACnC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;KACpB,CAAC;AACJ,CAAC;AAQD,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,IAAI,GAA0B,SAAS,CAAC;IAC5C,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,IAAI;QACJ,YAAY,EAAE,qBAAqB,EAAE;QACrC,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;YACxB,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;SAC7B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAW;IAChC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACxE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3G,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/lib/status.ts"],"names":[],"mappings":"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"}
package/dist/ui.d.ts CHANGED
@@ -1,15 +1,4 @@
1
1
  import type { PresenceStatus } from "@cotal-ai/core";
2
- export declare const c: {
3
- dim: (s: string) => string;
4
- bold: (s: string) => string;
5
- green: (s: string) => string;
6
- cyan: (s: string) => string;
7
- yellow: (s: string) => string;
8
- red: (s: string) => string;
9
- magenta: (s: string) => string;
10
- gray: (s: string) => string;
11
- };
12
- /** 256-color foreground wrapper (xterm color index 0-255). */
13
- export declare const color256: (n: number) => (s: string) => string;
2
+ export { c, color256 } from "@cotal-ai/workspace";
14
3
  export declare function statusBadge(status: PresenceStatus): string;
15
4
  //# sourceMappingURL=ui.d.ts.map
package/dist/ui.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,eAAO,MAAM,CAAC;aACH,MAAM;cACL,MAAM;eACL,MAAM;cACP,MAAM;gBACJ,MAAM;aACT,MAAM;iBACF,MAAM;cACT,MAAM;CACjB,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,MAAM,GAAG,MAAM,WAAiC,CAAC;AAEnF,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAW1D"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKrD,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAElD,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAW1D"}
package/dist/ui.js CHANGED
@@ -1,15 +1,7 @@
1
- export const c = {
2
- dim: (s) => `\x1b[2m${s}\x1b[0m`,
3
- bold: (s) => `\x1b[1m${s}\x1b[0m`,
4
- green: (s) => `\x1b[32m${s}\x1b[0m`,
5
- cyan: (s) => `\x1b[36m${s}\x1b[0m`,
6
- yellow: (s) => `\x1b[33m${s}\x1b[0m`,
7
- red: (s) => `\x1b[31m${s}\x1b[0m`,
8
- magenta: (s) => `\x1b[35m${s}\x1b[0m`,
9
- gray: (s) => `\x1b[90m${s}\x1b[0m`,
10
- };
11
- /** 256-color foreground wrapper (xterm color index 0-255). */
12
- export const color256 = (n) => (s) => `\x1b[38;5;${n}m${s}\x1b[0m`;
1
+ import { c } from "@cotal-ai/workspace";
2
+ // The ANSI helpers moved into `@cotal-ai/workspace` (stage 4), shared with cotal-web.
3
+ // Re-exported so the CLI's many importers keep resolving them from here.
4
+ export { c, color256 } from "@cotal-ai/workspace";
13
5
  export function statusBadge(status) {
14
6
  switch (status) {
15
7
  case "working":
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,GAAG,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS;IACxC,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS;IACzC,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IAC3C,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IAC1C,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IAC5C,GAAG,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IACzC,OAAO,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IAC7C,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;CAC3C,CAAC;AAEF,8DAA8D;AAC9D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;AAEnF,MAAM,UAAU,WAAW,CAAC,MAAsB;IAChD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9B,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/B,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AAExC,sFAAsF;AACtF,yEAAyE;AACzE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,UAAU,WAAW,CAAC,MAAsB;IAChD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9B,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/B,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/cli",
3
- "description": "Cotal mesh CLI: up, join, watch, console, web, spawn, mint, channels, history.",
4
- "version": "0.9.1",
3
+ "description": "Cotal mesh CLI: up, join, watch, console, spawn, mint, channels, history, ext.",
4
+ "version": "0.10.1",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -23,8 +23,9 @@
23
23
  "react": "^19.0.0",
24
24
  "yaml": "^2.9.0",
25
25
  "zod": "^4.4.3",
26
- "@cotal-ai/core": "0.9.1",
27
- "@cotal-ai/workspace": "0.9.1"
26
+ "ws": "^8.21.0",
27
+ "@cotal-ai/core": "0.10.1",
28
+ "@cotal-ai/workspace": "0.10.1"
28
29
  },
29
30
  "optionalDependencies": {
30
31
  "@eplightning/nats-server-darwin-arm64": "^2.14.0",
@@ -35,7 +36,8 @@
35
36
  "@eplightning/nats-server-win32-x64": "^2.14.0"
36
37
  },
37
38
  "devDependencies": {
38
- "@types/react": "^19.0.0"
39
+ "@types/react": "^19.0.0",
40
+ "@types/ws": "^8.18.1"
39
41
  },
40
42
  "files": [
41
43
  "dist"
@@ -46,6 +48,6 @@
46
48
  "scripts": {
47
49
  "typecheck": "tsc -p tsconfig.json --noEmit",
48
50
  "test": "tsx smoke/manifest.smoke.ts",
49
- "build": "tsc -p tsconfig.json && rm -rf dist/web && cp -R src/web dist/web"
51
+ "build": "tsc -p tsconfig.json"
50
52
  }
51
53
  }
@@ -1,2 +0,0 @@
1
- export declare function demo(argv: string[]): Promise<void>;
2
- //# sourceMappingURL=demo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"AAoEA,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0GxD"}
@@ -1,163 +0,0 @@
1
- import { parseArgs } from "node:util";
2
- import { readFileSync } from "node:fs";
3
- import { CotalEndpoint, isReachable, DEFAULT_SERVER, } from "@cotal-ai/core";
4
- import { resolveSpace } from "../lib/status.js";
5
- import { c } from "../ui.js";
6
- /**
7
- * `cotal demo` — spin up a handful of mock agents and replay a scripted trace that exercises
8
- * EVERY protocol-view feature: all four presence states, all three delivery modes (multicast to
9
- * several channels incl. mentions, peer DMs, an unclaimed anycast), a coalesced burst, and a
10
- * late-joining agent. Point `cotal console` / `cotal web` at the same space to watch it.
11
- *
12
- * pnpm cotal up --open
13
- * pnpm cotal demo --space demo
14
- * pnpm cotal console --space demo # in a real terminal
15
- */
16
- const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
17
- // The core cast (started up front); `scout` joins mid-trace to show a late join.
18
- const AGENTS = [
19
- { name: "alice", role: "planner" },
20
- { name: "bob", role: "builder" },
21
- { name: "dave", role: "builder" },
22
- { name: "maya", role: "researcher" },
23
- { name: "linus", role: "reviewer" },
24
- ];
25
- const SCRIPT = [
26
- { t: "status", who: "alice", status: "working", activity: "drafting the auth outline" },
27
- { t: "status", who: "bob", status: "working", activity: "writing tests · channels.ts" },
28
- { t: "chat", who: "dave", channel: "general", text: "anyone else hit the flaky CI test on channels.ts?" },
29
- { t: "status", who: "dave", status: "working", activity: "refactoring endpoint.ts" },
30
- { t: "chat", who: "bob", channel: "team.backend", text: "pushed channels.ts tests — 12 green ✓" },
31
- { t: "chat", who: "maya", channel: "planning", text: "NATS v3 splits transports cleanly — notes in #planning" },
32
- { t: "dm", who: "alice", to: "bob", text: "can you take the API-key wiring while I'm blocked?" },
33
- { t: "dm", who: "bob", to: "alice", text: "on it — grabbing the OPENAI_API_KEY wiring now" },
34
- { t: "status", who: "alice", status: "waiting", activity: "blocked — needs OPENAI_API_KEY" },
35
- { t: "join", who: "scout", role: "observer" },
36
- { t: "chat", who: "scout", channel: "general", text: "scout here — watching #team.>" },
37
- { t: "anycast", who: "alice", service: "reviewer", text: "review needed on PR #51 (channels hierarchy)" },
38
- { t: "status", who: "linus", status: "working", activity: "reviewing PR #42 · auth guards" },
39
- { t: "chat", who: "linus", channel: "team.review", text: "left 2 comments on PR #42 — small nits" },
40
- { t: "dm", who: "alice", to: "dave", text: "want me to stub the key so you can keep planning?" },
41
- { t: "dm", who: "dave", to: "alice", text: "yes — a no-op stub is perfect for now" },
42
- { t: "burst", who: "linus", to: ["bob", "dave", "maya"], text: "ship it 🚀" },
43
- { t: "chat", who: "bob", channel: "general", text: "@alice key wired — you're unblocked", mentions: ["alice"] },
44
- { t: "status", who: "alice", status: "working", activity: "back on the auth module" },
45
- { t: "status", who: "maya", status: "offline" },
46
- { t: "chat", who: "dave", channel: "incidents", text: "CI flake traced to a race in channels.ts — fix incoming" },
47
- { t: "status", who: "maya", status: "idle", activity: "reading the NATS v3 notes" },
48
- { t: "dm", who: "maya", to: "linus", text: "sent the NATS v3 notes your way" },
49
- { t: "chat", who: "linus", channel: "team.frontend", text: "frontend review queue is clear ✓" },
50
- ];
51
- export async function demo(argv) {
52
- const { values } = parseArgs({
53
- args: argv,
54
- allowPositionals: true,
55
- options: {
56
- space: { type: "string" },
57
- server: { type: "string" },
58
- interval: { type: "string" },
59
- once: { type: "boolean" },
60
- creds: { type: "string" },
61
- },
62
- });
63
- const space = values.space ?? resolveSpace(process.cwd());
64
- const server = values.server ?? DEFAULT_SERVER;
65
- const interval = values.interval ? Number(values.interval) : 1200;
66
- const creds = values.creds ? readFileSync(values.creds, "utf8") : undefined;
67
- if (!(await isReachable(server, { creds }))) {
68
- console.error(c.red(`Can't reach NATS at ${server}. Run: pnpm cotal up`));
69
- process.exit(1);
70
- }
71
- const eps = new Map();
72
- // consume:true so each agent's inbox/streams exist — otherwise peer DMs (unicast) have no
73
- // backing stream. registerPresence:true puts them in the roster; watchPresence:false (the
74
- // console is the watcher). channels:["general"] just ensures the chat stream is bound; we
75
- // publish to every channel explicitly regardless of subscription.
76
- const make = async (name, role) => {
77
- const ep = new CotalEndpoint({
78
- space,
79
- servers: server,
80
- creds,
81
- card: { name, role, kind: "agent" },
82
- channels: ["general"],
83
- consume: true,
84
- registerPresence: true,
85
- watchPresence: false,
86
- });
87
- ep.on("error", () => { });
88
- await ep.start();
89
- eps.set(name, ep);
90
- };
91
- for (const a of AGENTS)
92
- await make(a.name, a.role);
93
- console.log(`${c.bold("cotal demo")} — ${eps.size} agents live in space ${c.bold(space)}`);
94
- console.log(c.dim(` ${[...eps.keys()].join(", ")} (+ scout joins mid-trace)`));
95
- console.log(` watch it: ${c.cyan(`cotal console --space ${space}`)} ${c.dim("or")} ${c.cyan(`cotal web --space ${space}`)}`);
96
- console.log(c.dim(` ${values.once ? "single pass" : "looping"} · ~${interval}ms/step · Ctrl-C to stop\n`));
97
- const idOf = (n) => eps.get(n)?.card.id;
98
- const run = async (a) => {
99
- const ep = "who" in a ? eps.get(a.who) : undefined;
100
- switch (a.t) {
101
- case "status":
102
- if (!ep)
103
- return;
104
- if (a.activity !== undefined)
105
- await ep.setActivity(a.activity);
106
- await ep.setStatus(a.status);
107
- return;
108
- case "chat":
109
- await ep?.multicast(a.text, { channel: a.channel, mentions: a.mentions });
110
- return;
111
- case "dm": {
112
- const tid = idOf(a.to);
113
- if (ep && tid)
114
- await ep.unicast(tid, a.text);
115
- return;
116
- }
117
- case "burst":
118
- for (const to of a.to) {
119
- const tid = idOf(to);
120
- if (ep && tid)
121
- await ep.unicast(tid, a.text); // back-to-back → inside the coalesce window
122
- }
123
- return;
124
- case "anycast":
125
- await ep?.anycast(a.service, a.text);
126
- return;
127
- case "join":
128
- if (!eps.has(a.who))
129
- await make(a.who, a.role);
130
- return;
131
- }
132
- };
133
- let stopping = false;
134
- const shutdown = async () => {
135
- if (stopping)
136
- return;
137
- stopping = true;
138
- console.log(c.dim("\nstopping — agents going offline…"));
139
- for (const ep of eps.values())
140
- await ep.stop().catch(() => { });
141
- process.exit(0);
142
- };
143
- process.on("SIGINT", () => void shutdown());
144
- process.on("SIGTERM", () => void shutdown());
145
- do {
146
- for (const a of SCRIPT) {
147
- if (stopping)
148
- break;
149
- try {
150
- await run(a);
151
- }
152
- catch (e) {
153
- console.error(c.dim(` (skipped ${a.t} from ${"who" in a ? a.who : "?"}: ${e.message})`));
154
- }
155
- await sleep(interval);
156
- }
157
- if (!values.once && !stopping)
158
- await sleep(interval * 2);
159
- } while (!values.once && !stopping);
160
- if (values.once)
161
- await shutdown();
162
- }
163
- //# sourceMappingURL=demo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../src/commands/demo.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- /** The dashboard's default port and its branded address. The server binds loopback
2
- * (127.0.0.1) but serves any Host, so `cotal.localhost` — which Chrome/Firefox/Edge
3
- * resolve to loopback with no DNS setup — just works. (Safari may not resolve
4
- * `*.localhost`; plain http://127.0.0.1:7799 always does.) */
5
- export declare const WEB_PORT = 7799;
6
- export declare const WEB_URL = "http://cotal.localhost:7799/";
7
- /** A live observability dashboard for a space, served over HTTP + SSE. A read-only
8
- * observer endpoint (invisible to peers) feeds the page presence, channel history,
9
- * and a live message stream — no manager required. Bound to loopback. */
10
- export declare function web(argv: string[]): Promise<void>;
11
- /** True if something is already listening on the dashboard port (loopback). */
12
- export declare function webUp(port?: number): Promise<boolean>;
13
- /** Start the dashboard in the background (pid in `.cotal/web.pid`, output to `.cotal/web.log`),
14
- * stopped by `cotal down`. Re-execs this same CLI — `process.execArgv` carries the tsx loader in
15
- * dev, and is empty in prod where `node <entry.js> web …` runs the compiled binary. */
16
- export declare function startWebDetached(o?: {
17
- space?: string;
18
- server?: string;
19
- }): {
20
- pid: number;
21
- url: string;
22
- };
23
- /** Make the dashboard available: reuse one already listening, else start it detached and wait
24
- * briefly for it to come up. Best-effort — callers treat a non-running result as non-fatal. */
25
- export declare function ensureWeb(o?: {
26
- space?: string;
27
- server?: string;
28
- }): Promise<{
29
- url: string;
30
- running: boolean;
31
- }>;
32
- //# sourceMappingURL=web.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"AAwBA;;;+DAG+D;AAC/D,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,OAAO,iCAAwC,CAAC;AAS7D;;0EAE0E;AAC1E,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8LvD;AAgBD,+EAA+E;AAC/E,wBAAgB,KAAK,CAAC,IAAI,GAAE,MAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAY/D;AAED;;wFAEwF;AACxF,wBAAgB,gBAAgB,CAAC,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAkB1G;AAED;gGACgG;AAChG,wBAAsB,SAAS,CAAC,CAAC,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAKvH"}