@tpsdev-ai/cli 0.1.0 → 0.3.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.
Files changed (198) hide show
  1. package/README.md +46 -60
  2. package/bin/tps.cjs +22 -0
  3. package/bin/tps.ts +435 -0
  4. package/nono-profiles/tps-backup.toml +18 -0
  5. package/nono-profiles/tps-bootstrap.toml +20 -0
  6. package/nono-profiles/tps-office-manager.toml +21 -0
  7. package/nono-profiles/tps-restore.toml +18 -0
  8. package/nono-profiles/tps-status.toml +19 -0
  9. package/package.json +19 -15
  10. package/LICENSE +0 -201
  11. package/dist/bin/tps.d.ts +0 -3
  12. package/dist/bin/tps.d.ts.map +0 -1
  13. package/dist/bin/tps.js +0 -267
  14. package/dist/bin/tps.js.map +0 -1
  15. package/dist/src/cli/hire.d.ts +0 -16
  16. package/dist/src/cli/hire.d.ts.map +0 -1
  17. package/dist/src/cli/hire.js +0 -176
  18. package/dist/src/cli/hire.js.map +0 -1
  19. package/dist/src/cli/office.d.ts +0 -7
  20. package/dist/src/cli/office.d.ts.map +0 -1
  21. package/dist/src/cli/office.js +0 -51
  22. package/dist/src/cli/office.js.map +0 -1
  23. package/dist/src/cli/review.d.ts +0 -9
  24. package/dist/src/cli/review.d.ts.map +0 -1
  25. package/dist/src/cli/review.js +0 -109
  26. package/dist/src/cli/review.js.map +0 -1
  27. package/dist/src/cli/roster.d.ts +0 -6
  28. package/dist/src/cli/roster.d.ts.map +0 -1
  29. package/dist/src/cli/roster.js +0 -60
  30. package/dist/src/cli/roster.js.map +0 -1
  31. package/dist/src/commands/branch.d.ts +0 -14
  32. package/dist/src/commands/branch.d.ts.map +0 -1
  33. package/dist/src/commands/branch.js +0 -395
  34. package/dist/src/commands/branch.js.map +0 -1
  35. package/dist/src/commands/context.d.ts +0 -9
  36. package/dist/src/commands/context.d.ts.map +0 -1
  37. package/dist/src/commands/context.js +0 -57
  38. package/dist/src/commands/context.js.map +0 -1
  39. package/dist/src/commands/identity.d.ts +0 -13
  40. package/dist/src/commands/identity.d.ts.map +0 -1
  41. package/dist/src/commands/identity.js +0 -231
  42. package/dist/src/commands/identity.js.map +0 -1
  43. package/dist/src/commands/mail.d.ts +0 -12
  44. package/dist/src/commands/mail.d.ts.map +0 -1
  45. package/dist/src/commands/mail.js +0 -225
  46. package/dist/src/commands/mail.js.map +0 -1
  47. package/dist/src/commands/office.d.ts +0 -19
  48. package/dist/src/commands/office.d.ts.map +0 -1
  49. package/dist/src/commands/office.js +0 -598
  50. package/dist/src/commands/office.js.map +0 -1
  51. package/dist/src/commands/roster.d.ts +0 -10
  52. package/dist/src/commands/roster.d.ts.map +0 -1
  53. package/dist/src/commands/roster.js +0 -143
  54. package/dist/src/commands/roster.js.map +0 -1
  55. package/dist/src/generators/claude-code.d.ts +0 -17
  56. package/dist/src/generators/claude-code.d.ts.map +0 -1
  57. package/dist/src/generators/claude-code.js +0 -80
  58. package/dist/src/generators/claude-code.js.map +0 -1
  59. package/dist/src/generators/codex.d.ts +0 -22
  60. package/dist/src/generators/codex.d.ts.map +0 -1
  61. package/dist/src/generators/codex.js +0 -78
  62. package/dist/src/generators/codex.js.map +0 -1
  63. package/dist/src/generators/ollama.d.ts +0 -18
  64. package/dist/src/generators/ollama.d.ts.map +0 -1
  65. package/dist/src/generators/ollama.js +0 -97
  66. package/dist/src/generators/ollama.js.map +0 -1
  67. package/dist/src/generators/openclaw.d.ts +0 -15
  68. package/dist/src/generators/openclaw.d.ts.map +0 -1
  69. package/dist/src/generators/openclaw.js +0 -103
  70. package/dist/src/generators/openclaw.js.map +0 -1
  71. package/dist/src/generators/registry.d.ts +0 -36
  72. package/dist/src/generators/registry.d.ts.map +0 -1
  73. package/dist/src/generators/registry.js +0 -99
  74. package/dist/src/generators/registry.js.map +0 -1
  75. package/dist/src/schema/manifest.d.ts +0 -140
  76. package/dist/src/schema/manifest.d.ts.map +0 -1
  77. package/dist/src/schema/manifest.js +0 -62
  78. package/dist/src/schema/manifest.js.map +0 -1
  79. package/dist/src/schema/report.d.ts +0 -166
  80. package/dist/src/schema/report.d.ts.map +0 -1
  81. package/dist/src/schema/report.js +0 -90
  82. package/dist/src/schema/report.js.map +0 -1
  83. package/dist/src/schema/sanitizer.d.ts +0 -30
  84. package/dist/src/schema/sanitizer.d.ts.map +0 -1
  85. package/dist/src/schema/sanitizer.js +0 -97
  86. package/dist/src/schema/sanitizer.js.map +0 -1
  87. package/dist/src/soundstage/mock-llm.d.ts +0 -3
  88. package/dist/src/soundstage/mock-llm.d.ts.map +0 -1
  89. package/dist/src/soundstage/mock-llm.js +0 -68
  90. package/dist/src/soundstage/mock-llm.js.map +0 -1
  91. package/dist/src/utils/agent-info.d.ts +0 -28
  92. package/dist/src/utils/agent-info.d.ts.map +0 -1
  93. package/dist/src/utils/agent-info.js +0 -102
  94. package/dist/src/utils/agent-info.js.map +0 -1
  95. package/dist/src/utils/archive.d.ts +0 -27
  96. package/dist/src/utils/archive.d.ts.map +0 -1
  97. package/dist/src/utils/archive.js +0 -80
  98. package/dist/src/utils/archive.js.map +0 -1
  99. package/dist/src/utils/config-inject.d.ts +0 -27
  100. package/dist/src/utils/config-inject.d.ts.map +0 -1
  101. package/dist/src/utils/config-inject.js +0 -83
  102. package/dist/src/utils/config-inject.js.map +0 -1
  103. package/dist/src/utils/config.d.ts +0 -30
  104. package/dist/src/utils/config.d.ts.map +0 -1
  105. package/dist/src/utils/config.js +0 -55
  106. package/dist/src/utils/config.js.map +0 -1
  107. package/dist/src/utils/connection-state.d.ts +0 -27
  108. package/dist/src/utils/connection-state.d.ts.map +0 -1
  109. package/dist/src/utils/connection-state.js +0 -81
  110. package/dist/src/utils/connection-state.js.map +0 -1
  111. package/dist/src/utils/context.d.ts +0 -14
  112. package/dist/src/utils/context.d.ts.map +0 -1
  113. package/dist/src/utils/context.js +0 -68
  114. package/dist/src/utils/context.js.map +0 -1
  115. package/dist/src/utils/github-webhook.d.ts +0 -3
  116. package/dist/src/utils/github-webhook.d.ts.map +0 -1
  117. package/dist/src/utils/github-webhook.js +0 -105
  118. package/dist/src/utils/github-webhook.js.map +0 -1
  119. package/dist/src/utils/identity.d.ts +0 -114
  120. package/dist/src/utils/identity.d.ts.map +0 -1
  121. package/dist/src/utils/identity.js +0 -341
  122. package/dist/src/utils/identity.js.map +0 -1
  123. package/dist/src/utils/internal-mail.d.ts +0 -18
  124. package/dist/src/utils/internal-mail.d.ts.map +0 -1
  125. package/dist/src/utils/internal-mail.js +0 -75
  126. package/dist/src/utils/internal-mail.js.map +0 -1
  127. package/dist/src/utils/loop-detector.d.ts +0 -27
  128. package/dist/src/utils/loop-detector.d.ts.map +0 -1
  129. package/dist/src/utils/loop-detector.js +0 -42
  130. package/dist/src/utils/loop-detector.js.map +0 -1
  131. package/dist/src/utils/mail-handler.d.ts +0 -19
  132. package/dist/src/utils/mail-handler.d.ts.map +0 -1
  133. package/dist/src/utils/mail-handler.js +0 -94
  134. package/dist/src/utils/mail-handler.js.map +0 -1
  135. package/dist/src/utils/mail.d.ts +0 -22
  136. package/dist/src/utils/mail.d.ts.map +0 -1
  137. package/dist/src/utils/mail.js +0 -111
  138. package/dist/src/utils/mail.js.map +0 -1
  139. package/dist/src/utils/manifest.d.ts +0 -36
  140. package/dist/src/utils/manifest.d.ts.map +0 -1
  141. package/dist/src/utils/manifest.js +0 -91
  142. package/dist/src/utils/manifest.js.map +0 -1
  143. package/dist/src/utils/noise-ik-transport.d.ts +0 -18
  144. package/dist/src/utils/noise-ik-transport.d.ts.map +0 -1
  145. package/dist/src/utils/noise-ik-transport.js +0 -357
  146. package/dist/src/utils/noise-ik-transport.js.map +0 -1
  147. package/dist/src/utils/nono.d.ts +0 -72
  148. package/dist/src/utils/nono.d.ts.map +0 -1
  149. package/dist/src/utils/nono.js +0 -166
  150. package/dist/src/utils/nono.js.map +0 -1
  151. package/dist/src/utils/outbox.d.ts +0 -10
  152. package/dist/src/utils/outbox.d.ts.map +0 -1
  153. package/dist/src/utils/outbox.js +0 -29
  154. package/dist/src/utils/outbox.js.map +0 -1
  155. package/dist/src/utils/output.d.ts +0 -17
  156. package/dist/src/utils/output.d.ts.map +0 -1
  157. package/dist/src/utils/output.js +0 -83
  158. package/dist/src/utils/output.js.map +0 -1
  159. package/dist/src/utils/plain-tcp-transport.d.ts +0 -10
  160. package/dist/src/utils/plain-tcp-transport.d.ts.map +0 -1
  161. package/dist/src/utils/plain-tcp-transport.js +0 -209
  162. package/dist/src/utils/plain-tcp-transport.js.map +0 -1
  163. package/dist/src/utils/provision.d.ts +0 -2
  164. package/dist/src/utils/provision.d.ts.map +0 -1
  165. package/dist/src/utils/provision.js +0 -186
  166. package/dist/src/utils/provision.js.map +0 -1
  167. package/dist/src/utils/relay.d.ts +0 -30
  168. package/dist/src/utils/relay.d.ts.map +0 -1
  169. package/dist/src/utils/relay.js +0 -539
  170. package/dist/src/utils/relay.js.map +0 -1
  171. package/dist/src/utils/sandbox.d.ts +0 -37
  172. package/dist/src/utils/sandbox.d.ts.map +0 -1
  173. package/dist/src/utils/sandbox.js +0 -126
  174. package/dist/src/utils/sandbox.js.map +0 -1
  175. package/dist/src/utils/transport.d.ts +0 -62
  176. package/dist/src/utils/transport.d.ts.map +0 -1
  177. package/dist/src/utils/transport.js +0 -75
  178. package/dist/src/utils/transport.js.map +0 -1
  179. package/dist/src/utils/wall.d.ts +0 -5
  180. package/dist/src/utils/wall.d.ts.map +0 -1
  181. package/dist/src/utils/wall.js +0 -51
  182. package/dist/src/utils/wall.js.map +0 -1
  183. package/dist/src/utils/wire-delivery.d.ts +0 -10
  184. package/dist/src/utils/wire-delivery.d.ts.map +0 -1
  185. package/dist/src/utils/wire-delivery.js +0 -57
  186. package/dist/src/utils/wire-delivery.js.map +0 -1
  187. package/dist/src/utils/wire-frame.d.ts +0 -10
  188. package/dist/src/utils/wire-frame.d.ts.map +0 -1
  189. package/dist/src/utils/wire-frame.js +0 -66
  190. package/dist/src/utils/wire-frame.js.map +0 -1
  191. package/dist/src/utils/wire-mail.d.ts +0 -54
  192. package/dist/src/utils/wire-mail.d.ts.map +0 -1
  193. package/dist/src/utils/wire-mail.js +0 -24
  194. package/dist/src/utils/wire-mail.js.map +0 -1
  195. package/dist/src/utils/ws-noise-transport.d.ts +0 -18
  196. package/dist/src/utils/ws-noise-transport.d.ts.map +0 -1
  197. package/dist/src/utils/ws-noise-transport.js +0 -356
  198. package/dist/src/utils/ws-noise-transport.js.map +0 -1
@@ -1,126 +0,0 @@
1
- /**
2
- * Sandbox VM utilities — direct socket access to Docker AI Sandboxes.
3
- *
4
- * Workaround for Docker Sandbox CLI v0.11.0 `exec` bug:
5
- * `docker sandbox exec` can't find running sandboxes, but each VM
6
- * exposes its own Docker daemon socket at:
7
- * ~/.docker/sandboxes/vm/<name>/docker.sock
8
- *
9
- * We bypass `docker sandbox exec` and talk to the VM's daemon directly.
10
- */
11
- import { existsSync, mkdirSync } from "node:fs";
12
- import { join } from "node:path";
13
- import { homedir } from "node:os";
14
- import { spawnSync } from "node:child_process";
15
- /**
16
- * Get the Docker daemon socket path for a sandbox VM.
17
- */
18
- export function sandboxSocketPath(name) {
19
- return join(process.env.HOME || homedir(), ".docker", "sandboxes", "vm", name, "docker.sock");
20
- }
21
- /**
22
- * Check if a sandbox VM's Docker daemon is accessible.
23
- */
24
- export function isSandboxReady(name) {
25
- const sock = sandboxSocketPath(name);
26
- if (!existsSync(sock))
27
- return false;
28
- const result = spawnSync("docker", ["-H", `unix://${sock}`, "info"], {
29
- encoding: "utf-8",
30
- timeout: 5000,
31
- });
32
- return result.status === 0;
33
- }
34
- /**
35
- * List sandboxes via `docker sandbox ls --json`.
36
- */
37
- export function listSandboxes() {
38
- const result = spawnSync("docker", ["sandbox", "ls", "--json"], {
39
- encoding: "utf-8",
40
- timeout: 10000,
41
- });
42
- if (result.status !== 0)
43
- return [];
44
- try {
45
- const parsed = JSON.parse(result.stdout || "{}");
46
- return (parsed.vms || []).map((vm) => ({
47
- name: vm.name,
48
- agent: vm.agent,
49
- status: vm.status,
50
- socketPath: vm.socket_path || sandboxSocketPath(vm.name),
51
- }));
52
- }
53
- catch {
54
- return [];
55
- }
56
- }
57
- /**
58
- * Execute a command inside a sandbox VM's Docker daemon.
59
- * Runs a container with the workspace mounted.
60
- */
61
- export function sandboxExec(sandboxName, command, options = {}) {
62
- const sock = sandboxSocketPath(sandboxName);
63
- const image = options.image || "alpine:latest";
64
- const args = ["-H", `unix://${sock}`, "run", "--rm"];
65
- if (options.workspace) {
66
- args.push("-v", `${options.workspace}:${options.workspace}`);
67
- args.push("-w", options.workspace);
68
- }
69
- args.push(image, ...command);
70
- return spawnSync("docker", args, {
71
- encoding: "utf-8",
72
- timeout: 60000,
73
- });
74
- }
75
- /**
76
- * Load an image into a sandbox VM by piping from host.
77
- * Uses `docker save | docker -H unix://<sock> load`.
78
- */
79
- export function loadImageIntoSandbox(sandboxName, imageName) {
80
- const sock = sandboxSocketPath(sandboxName);
81
- // Check if image exists in sandbox already
82
- const check = spawnSync("docker", ["-H", `unix://${sock}`, "images", "-q", imageName], {
83
- encoding: "utf-8",
84
- timeout: 10000,
85
- });
86
- if (check.status === 0 && check.stdout.trim()) {
87
- return true; // Already loaded
88
- }
89
- // Save from host and load into sandbox
90
- // Use --config with user-owned dir to bypass credential helper issues
91
- const noauthDir = join(process.env.HOME || homedir(), ".tps", "tmp", "docker-noauth");
92
- mkdirSync(noauthDir, { recursive: true });
93
- const save = spawnSync("docker", ["--config", noauthDir, "save", imageName], {
94
- timeout: 60000,
95
- maxBuffer: 500 * 1024 * 1024, // 500MB
96
- });
97
- if (save.status !== 0)
98
- return false;
99
- const load = spawnSync("docker", ["-H", `unix://${sock}`, "load"], {
100
- input: save.stdout,
101
- encoding: "utf-8",
102
- timeout: 60000,
103
- });
104
- return load.status === 0;
105
- }
106
- /**
107
- * Wait for a sandbox VM to become ready (socket accessible).
108
- */
109
- export function waitForSandbox(name, timeoutMs = 30000) {
110
- const sock = sandboxSocketPath(name);
111
- const start = Date.now();
112
- while (Date.now() - start < timeoutMs) {
113
- if (isSandboxReady(name))
114
- return true;
115
- // If socket parent dir doesn't exist, Docker's internal layout may have changed
116
- const parentDir = join(sock, "..");
117
- if (Date.now() - start > 15000 && !existsSync(parentDir)) {
118
- console.error(`Docker Sandbox socket path not found: ${parentDir}\n` +
119
- `Docker may have changed its internal layout. Expected socket at:\n ${sock}`);
120
- return false;
121
- }
122
- spawnSync("sleep", ["1"]);
123
- }
124
- return false;
125
- }
126
- //# sourceMappingURL=sandbox.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../src/utils/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AAStE;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI,CACT,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,EAC7B,SAAS,EACT,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,aAAa,CACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,EAAE;QACnE,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;QAC9D,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAE9C,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,UAAU,EAAE,EAAE,CAAC,WAAW,IAAI,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC;SACzD,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,WAAmB,EACnB,OAAiB,EACjB,UAAkD,EAAE;IAEpD,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,eAAe,CAAC;IAE/C,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC;IAE7B,OAAO,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE;QAC/B,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,SAAiB;IACzE,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAE5C,2CAA2C;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE;QACrF,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,CAAC,iBAAiB;IAChC,CAAC;IAED,uCAAuC;IACvC,sEAAsE;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IACtF,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;QAC3E,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ;KACvC,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,EAAE;QACjE,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,SAAS,GAAG,KAAK;IAC5D,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,IAAI,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,gFAAgF;QAChF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,KAAK,CACX,yCAAyC,SAAS,IAAI;gBACtD,uEAAuE,IAAI,EAAE,CAC9E,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,62 +0,0 @@
1
- export interface DeliveryTransport {
2
- deliver(envelope: MailEnvelope): Promise<DeliveryResult>;
3
- name(): string;
4
- }
5
- export interface MailEnvelope {
6
- from: string;
7
- to: string;
8
- office?: string;
9
- body: Buffer;
10
- headers: Record<string, string>;
11
- }
12
- export interface DeliveryResult {
13
- delivered: boolean;
14
- transport: string;
15
- path?: string;
16
- error?: string;
17
- }
18
- export interface BranchTarget {
19
- host: string;
20
- port: number;
21
- branchId: string;
22
- hostPublicKey: Uint8Array;
23
- }
24
- export interface TpsMessage {
25
- type: number;
26
- seq: number;
27
- ts: string;
28
- body: unknown;
29
- sig?: string;
30
- }
31
- export interface TransportChannel {
32
- send(msg: TpsMessage): Promise<void>;
33
- onMessage(handler: (msg: TpsMessage) => void): void;
34
- offMessage(handler: (msg: TpsMessage) => void): void;
35
- close(): Promise<void>;
36
- isAlive(): boolean;
37
- peerFingerprint(): string;
38
- }
39
- export interface TransportServer {
40
- onConnection(handler: (channel: TransportChannel) => void): void;
41
- close(): Promise<void>;
42
- }
43
- export interface WireTransport {
44
- connect(target: BranchTarget): Promise<TransportChannel>;
45
- listen(port: number): Promise<TransportServer>;
46
- }
47
- export declare class TransportRegistry {
48
- private readonly defaultTransport;
49
- private perBranch;
50
- constructor(defaultTransport: DeliveryTransport);
51
- register(branchId: string, transport: DeliveryTransport): void;
52
- unregister(branchId: string): void;
53
- resolve(branchId: string): DeliveryTransport;
54
- getDefault(): DeliveryTransport;
55
- has(branchId: string): boolean;
56
- }
57
- export declare function resolveTransport(recipientId: string, registry: TransportRegistry): DeliveryTransport;
58
- export declare class FileSystemTransport implements DeliveryTransport {
59
- name(): string;
60
- deliver(envelope: MailEnvelope): Promise<DeliveryResult>;
61
- }
62
- //# sourceMappingURL=transport.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/utils/transport.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACzD,IAAI,IAAI,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IACpD,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IACrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC;IACnB,eAAe,IAAI,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAChD;AAED,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAF7C,OAAO,CAAC,SAAS,CAAwC;gBAE5B,gBAAgB,EAAE,iBAAiB;IAEhE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAI9D,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIlC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB;IAI5C,UAAU,IAAI,iBAAiB;IAI/B,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG/B;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,CAEpG;AAoBD,qBAAa,mBAAoB,YAAW,iBAAiB;IAC3D,IAAI,IAAI,MAAM;IAIR,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;CA2B/D"}
@@ -1,75 +0,0 @@
1
- import { mkdirSync, renameSync, writeFileSync } from "node:fs";
2
- import { randomUUID } from "node:crypto";
3
- import { join } from "node:path";
4
- import { homedir } from "node:os";
5
- export class TransportRegistry {
6
- defaultTransport;
7
- perBranch = new Map();
8
- constructor(defaultTransport) {
9
- this.defaultTransport = defaultTransport;
10
- }
11
- register(branchId, transport) {
12
- this.perBranch.set(branchId, transport);
13
- }
14
- unregister(branchId) {
15
- this.perBranch.delete(branchId);
16
- }
17
- resolve(branchId) {
18
- return this.perBranch.get(branchId) ?? this.defaultTransport;
19
- }
20
- getDefault() {
21
- return this.defaultTransport;
22
- }
23
- has(branchId) {
24
- return this.perBranch.has(branchId);
25
- }
26
- }
27
- export function resolveTransport(recipientId, registry) {
28
- return registry.resolve(recipientId);
29
- }
30
- function ensureDir(path) {
31
- mkdirSync(path, { recursive: true });
32
- }
33
- function atomicWriteJson(targetPath, data) {
34
- const tmp = `${targetPath}.tmp-${process.pid}-${Date.now()}`;
35
- writeFileSync(tmp, JSON.stringify(data, null, 2), "utf-8");
36
- renameSync(tmp, targetPath);
37
- }
38
- function timestampPrefix() {
39
- return new Date().toISOString().replace(/[:.]/g, "-");
40
- }
41
- function hostMailRoot() {
42
- return process.env.TPS_MAIL_DIR || join(process.env.HOME || homedir(), ".tps", "mail");
43
- }
44
- export class FileSystemTransport {
45
- name() {
46
- return "filesystem";
47
- }
48
- async deliver(envelope) {
49
- try {
50
- const recipientNew = join(hostMailRoot(), envelope.to, "new");
51
- ensureDir(recipientNew);
52
- const payload = {
53
- id: envelope.headers["x-tps-id"] || randomUUID(),
54
- from: envelope.from,
55
- to: envelope.to,
56
- body: envelope.body.toString("utf-8"),
57
- timestamp: envelope.headers["x-tps-timestamp"] || new Date().toISOString(),
58
- read: false,
59
- origin: envelope.headers["x-tps-origin"] || "docker-sandbox",
60
- };
61
- const filename = `${timestampPrefix()}-${randomUUID()}.json`;
62
- const outPath = join(recipientNew, filename);
63
- atomicWriteJson(outPath, payload);
64
- return { delivered: true, transport: this.name(), path: outPath };
65
- }
66
- catch (e) {
67
- return {
68
- delivered: false,
69
- transport: this.name(),
70
- error: e?.message || "delivery failed",
71
- };
72
- }
73
- }
74
- }
75
- //# sourceMappingURL=transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/utils/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAyDlC,MAAM,OAAO,iBAAiB;IAGC;IAFrB,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEzD,YAA6B,gBAAmC;QAAnC,qBAAgB,GAAhB,gBAAgB,CAAmB;IAAG,CAAC;IAEpE,QAAQ,CAAC,QAAgB,EAAE,SAA4B;QACrD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,QAAgB;QACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC;IAC/D,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,QAAgB;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,QAA2B;IAC/E,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB,EAAE,IAAa;IACxD,MAAM,GAAG,GAAG,GAAG,UAAU,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAC7D,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3D,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,OAAO,mBAAmB;IAC9B,IAAI;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAsB;QAClC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9D,SAAS,CAAC,YAAY,CAAC,CAAC;YAExB,MAAM,OAAO,GAAG;gBACd,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,EAAE;gBAChD,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACrC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC1E,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAgB;aAC7D,CAAC;YAEF,MAAM,QAAQ,GAAG,GAAG,eAAe,EAAE,IAAI,UAAU,EAAE,OAAO,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC7C,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACpE,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE;gBACtB,KAAK,EAAE,CAAC,EAAE,OAAO,IAAI,iBAAiB;aACvC,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -1,5 +0,0 @@
1
- export declare function wallPath(officeDir: string): string;
2
- export declare function initWall(officeDir: string, officeName: string): void;
3
- export declare function postToWall(officeDir: string, agent: string, message: string): void;
4
- export declare function readWall(officeDir: string): string;
5
- //# sourceMappingURL=wall.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wall.d.ts","sourceRoot":"","sources":["../../../src/utils/wall.ts"],"names":[],"mappings":"AAeA,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAMpE;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAoBlF;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKlD"}
@@ -1,51 +0,0 @@
1
- import { existsSync, readFileSync, appendFileSync, writeFileSync } from "node:fs";
2
- import { join, resolve, sep } from "node:path";
3
- import { homedir } from "node:os";
4
- import { sanitizeIdentifier } from "../schema/sanitizer.js";
5
- const MAX_WALL_BYTES = 256 * 1024; // 256KB cap
6
- function assertOfficeDir(officeDir) {
7
- const resolved = resolve(officeDir);
8
- const root = resolve(join(process.env.HOME || homedir(), ".tps", "branch-office"));
9
- if (!resolved.startsWith(root + sep) && resolved !== root) {
10
- throw new Error(`Office directory out of bounds: ${officeDir}`);
11
- }
12
- }
13
- export function wallPath(officeDir) {
14
- return join(officeDir, "WALL.md");
15
- }
16
- export function initWall(officeDir, officeName) {
17
- assertOfficeDir(officeDir);
18
- const p = wallPath(officeDir);
19
- if (!existsSync(p)) {
20
- writeFileSync(p, `# ${officeName} — Broadcast Wall\n\n`, "utf-8");
21
- }
22
- }
23
- export function postToWall(officeDir, agent, message) {
24
- assertOfficeDir(officeDir);
25
- const safe = sanitizeIdentifier(agent);
26
- if (!agent || safe !== agent)
27
- throw new Error(`Invalid agent id: ${agent}`);
28
- if (message.includes("\u0000"))
29
- throw new Error("Wall post contains invalid null byte.");
30
- if (Buffer.byteLength(message, "utf8") > 4096)
31
- throw new Error("Wall post exceeds 4KB limit.");
32
- const p = wallPath(officeDir);
33
- if (!existsSync(p))
34
- throw new Error("Wall not initialized. Run initWall first.");
35
- const timestamp = new Date().toISOString();
36
- const entry = `\n**[${timestamp}] ${agent}:** ${message}\n`;
37
- // Check wall size cap (S17.2-A fix: check size AFTER append)
38
- const current = readFileSync(p, "utf-8");
39
- if (Buffer.byteLength(current + entry, "utf8") > MAX_WALL_BYTES) {
40
- throw new Error("Wall has reached maximum size (256KB). Archive or reset.");
41
- }
42
- appendFileSync(p, entry, "utf-8");
43
- }
44
- export function readWall(officeDir) {
45
- assertOfficeDir(officeDir);
46
- const p = wallPath(officeDir);
47
- if (!existsSync(p))
48
- return "";
49
- return readFileSync(p, "utf-8");
50
- }
51
- //# sourceMappingURL=wall.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wall.js","sourceRoot":"","sources":["../../../src/utils/wall.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import type { DeliveryResult, DeliveryTransport, MailEnvelope, TransportChannel } from "./transport.js";
2
- export declare class WireDeliveryTransport implements DeliveryTransport {
3
- private readonly channel;
4
- private readonly timeoutMs;
5
- private seq;
6
- constructor(channel: TransportChannel, timeoutMs?: number);
7
- name(): string;
8
- deliver(envelope: MailEnvelope): Promise<DeliveryResult>;
9
- }
10
- //# sourceMappingURL=wire-delivery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wire-delivery.d.ts","sourceRoot":"","sources":["../../../src/utils/wire-delivery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,YAAY,EAEZ,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAGxB,qBAAa,qBAAsB,YAAW,iBAAiB;IAI3D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ5B,OAAO,CAAC,GAAG,CAAK;gBAGG,OAAO,EAAE,gBAAgB,EACzB,SAAS,GAAE,MAAa;IAG3C,IAAI,IAAI,MAAM;IAIR,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;CA6C/D"}
@@ -1,57 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { MSG_MAIL_ACK, MSG_MAIL_DELIVER, MailAckBodySchema } from "./wire-mail.js";
3
- export class WireDeliveryTransport {
4
- channel;
5
- timeoutMs;
6
- seq = 0;
7
- constructor(channel, timeoutMs = 5000) {
8
- this.channel = channel;
9
- this.timeoutMs = timeoutMs;
10
- }
11
- name() {
12
- return "wire";
13
- }
14
- async deliver(envelope) {
15
- const id = envelope.headers["x-tps-id"] || randomUUID();
16
- const msg = {
17
- type: MSG_MAIL_DELIVER,
18
- seq: this.seq++,
19
- ts: new Date().toISOString(),
20
- body: {
21
- id,
22
- from: envelope.from,
23
- to: envelope.to,
24
- content: envelope.body.toString("utf-8"),
25
- timestamp: envelope.headers["x-tps-timestamp"] || new Date().toISOString(),
26
- },
27
- };
28
- await this.channel.send(msg);
29
- return new Promise((resolve) => {
30
- const handler = (ack) => {
31
- if (ack.type !== MSG_MAIL_ACK)
32
- return;
33
- const parsed = MailAckBodySchema.safeParse(ack.body);
34
- if (!parsed.success || parsed.data.id !== id)
35
- return;
36
- clearTimeout(timer);
37
- this.channel.offMessage(handler);
38
- if (parsed.data.accepted) {
39
- resolve({ delivered: true, transport: this.name() });
40
- }
41
- else {
42
- resolve({
43
- delivered: false,
44
- transport: this.name(),
45
- error: parsed.data.reason || "rejected",
46
- });
47
- }
48
- };
49
- const timer = setTimeout(() => {
50
- this.channel.offMessage(handler);
51
- resolve({ delivered: false, transport: this.name(), error: "timeout" });
52
- }, this.timeoutMs);
53
- this.channel.onMessage(handler);
54
- });
55
- }
56
- }
57
- //# sourceMappingURL=wire-delivery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wire-delivery.js","sourceRoot":"","sources":["../../../src/utils/wire-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,MAAM,OAAO,qBAAqB;IAIb;IACA;IAJX,GAAG,GAAG,CAAC,CAAC;IAEhB,YACmB,OAAyB,EACzB,YAAoB,IAAI;QADxB,YAAO,GAAP,OAAO,CAAkB;QACzB,cAAS,GAAT,SAAS,CAAe;IACxC,CAAC;IAEJ,IAAI;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAsB;QAClC,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC;QAExD,MAAM,GAAG,GAAe;YACtB,IAAI,EAAE,gBAAgB;YACtB,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;YACf,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,IAAI,EAAE;gBACJ,EAAE;gBACF,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACxC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC3E;SACF,CAAC;QAEF,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE7B,OAAO,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,CAAC,GAAe,EAAE,EAAE;gBAClC,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;oBAAE,OAAO;gBACtC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE;oBAAE,OAAO;gBAErD,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACzB,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC;wBACN,SAAS,EAAE,KAAK;wBAChB,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE;wBACtB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU;qBACxC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACjC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1E,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEnB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,10 +0,0 @@
1
- import type { TpsMessage } from "./transport.js";
2
- export declare const HEADER_BYTES = 6;
3
- export declare const MAX_PAYLOAD_BYTES: number;
4
- export declare function encodeWireMessage(msg: TpsMessage): Buffer;
5
- export declare function decodeWireMessage(frame: Buffer): TpsMessage;
6
- export declare function extractWireFrames(buffer: Buffer): {
7
- messages: TpsMessage[];
8
- rest: Buffer;
9
- };
10
- //# sourceMappingURL=wire-frame.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wire-frame.d.ts","sourceRoot":"","sources":["../../../src/utils/wire-frame.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKjD,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAU7C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAYzD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAwB3D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAkB1F"}
@@ -1,66 +0,0 @@
1
- import { Packr, Unpackr } from "msgpackr";
2
- import { z } from "zod";
3
- const packr = new Packr();
4
- const unpackr = new Unpackr();
5
- export const HEADER_BYTES = 6;
6
- export const MAX_PAYLOAD_BYTES = 1024 * 1024; // 1MB
7
- const WireMessageSchema = z.object({
8
- type: z.number().int().min(0).max(0xffff),
9
- seq: z.number().int().nonnegative(),
10
- ts: z.string().min(1),
11
- body: z.unknown(),
12
- sig: z.string().optional(),
13
- });
14
- export function encodeWireMessage(msg) {
15
- const parsed = WireMessageSchema.parse(msg);
16
- const payload = Buffer.from(packr.pack(parsed));
17
- if (payload.length > MAX_PAYLOAD_BYTES) {
18
- throw new Error(`Wire payload exceeds maximum size (${MAX_PAYLOAD_BYTES} bytes)`);
19
- }
20
- const out = Buffer.allocUnsafe(HEADER_BYTES + payload.length);
21
- out.writeUInt16BE(parsed.type, 0);
22
- out.writeUInt32BE(payload.length, 2);
23
- payload.copy(out, HEADER_BYTES);
24
- return out;
25
- }
26
- export function decodeWireMessage(frame) {
27
- if (frame.length < HEADER_BYTES) {
28
- throw new Error("Incomplete frame header");
29
- }
30
- const type = frame.readUInt16BE(0);
31
- const len = frame.readUInt32BE(2);
32
- if (len > MAX_PAYLOAD_BYTES) {
33
- throw new Error(`Wire payload exceeds maximum size (${MAX_PAYLOAD_BYTES} bytes)`);
34
- }
35
- if (frame.length !== HEADER_BYTES + len) {
36
- throw new Error("Invalid frame length");
37
- }
38
- const payload = frame.subarray(HEADER_BYTES);
39
- const decoded = unpackr.unpack(payload);
40
- const parsed = WireMessageSchema.parse({ ...decoded, type });
41
- return {
42
- type: parsed.type,
43
- seq: parsed.seq,
44
- ts: parsed.ts,
45
- body: parsed.body,
46
- sig: parsed.sig,
47
- };
48
- }
49
- export function extractWireFrames(buffer) {
50
- const messages = [];
51
- let offset = 0;
52
- while (offset + HEADER_BYTES <= buffer.length) {
53
- const len = buffer.readUInt32BE(offset + 2);
54
- if (len > MAX_PAYLOAD_BYTES) {
55
- throw new Error(`Wire payload exceeds maximum size (${MAX_PAYLOAD_BYTES} bytes)`);
56
- }
57
- const frameBytes = HEADER_BYTES + len;
58
- if (offset + frameBytes > buffer.length)
59
- break;
60
- const frame = buffer.subarray(offset, offset + frameBytes);
61
- messages.push(decodeWireMessage(frame));
62
- offset += frameBytes;
63
- }
64
- return { messages, rest: buffer.subarray(offset) };
65
- }
66
- //# sourceMappingURL=wire-frame.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wire-frame.js","sourceRoot":"","sources":["../../../src/utils/wire-frame.ts"],"names":[],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- import { z } from "zod";
2
- export declare const MSG_MAIL_DELIVER = 1;
3
- export declare const MSG_MAIL_ACK = 2;
4
- export declare const MSG_JOIN_COMPLETE = 15;
5
- export declare const MSG_HEARTBEAT = 16;
6
- export declare const MailDeliverBodySchema: z.ZodObject<{
7
- id: z.ZodString;
8
- from: z.ZodString;
9
- to: z.ZodString;
10
- content: z.ZodString;
11
- timestamp: z.ZodString;
12
- }, "strip", z.ZodTypeAny, {
13
- id: string;
14
- content: string;
15
- timestamp: string;
16
- from: string;
17
- to: string;
18
- }, {
19
- id: string;
20
- content: string;
21
- timestamp: string;
22
- from: string;
23
- to: string;
24
- }>;
25
- export type MailDeliverBody = z.infer<typeof MailDeliverBodySchema>;
26
- export declare const MailAckBodySchema: z.ZodObject<{
27
- id: z.ZodString;
28
- accepted: z.ZodBoolean;
29
- reason: z.ZodOptional<z.ZodString>;
30
- }, "strip", z.ZodTypeAny, {
31
- id: string;
32
- accepted: boolean;
33
- reason?: string | undefined;
34
- }, {
35
- id: string;
36
- accepted: boolean;
37
- reason?: string | undefined;
38
- }>;
39
- export type MailAckBody = z.infer<typeof MailAckBodySchema>;
40
- export declare const JoinCompleteBodySchema: z.ZodObject<{
41
- hostPubkey: z.ZodString;
42
- hostFingerprint: z.ZodString;
43
- hostId: z.ZodString;
44
- }, "strip", z.ZodTypeAny, {
45
- hostPubkey: string;
46
- hostFingerprint: string;
47
- hostId: string;
48
- }, {
49
- hostPubkey: string;
50
- hostFingerprint: string;
51
- hostId: string;
52
- }>;
53
- export type JoinCompleteBody = z.infer<typeof JoinCompleteBodySchema>;
54
- //# sourceMappingURL=wire-mail.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wire-mail.d.ts","sourceRoot":"","sources":["../../../src/utils/wire-mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB,IAAO,CAAC;AACrC,eAAO,MAAM,YAAY,IAAO,CAAC;AACjC,eAAO,MAAM,iBAAiB,KAAO,CAAC;AACtC,eAAO,MAAM,aAAa,KAAO,CAAC;AAIlC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAMhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAI5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -1,24 +0,0 @@
1
- import { z } from "zod";
2
- export const MSG_MAIL_DELIVER = 0x01;
3
- export const MSG_MAIL_ACK = 0x02;
4
- export const MSG_JOIN_COMPLETE = 0x0f;
5
- export const MSG_HEARTBEAT = 0x10;
6
- const SAFE_ID = /^[a-zA-Z0-9._-]{1,64}$/;
7
- export const MailDeliverBodySchema = z.object({
8
- id: z.string().uuid(),
9
- from: z.string().regex(SAFE_ID, "Invalid sender identifier"),
10
- to: z.string().regex(SAFE_ID, "Invalid recipient identifier"),
11
- content: z.string(),
12
- timestamp: z.string().min(1),
13
- });
14
- export const MailAckBodySchema = z.object({
15
- id: z.string().uuid(),
16
- accepted: z.boolean(),
17
- reason: z.string().optional(),
18
- });
19
- export const JoinCompleteBodySchema = z.object({
20
- hostPubkey: z.string(),
21
- hostFingerprint: z.string(),
22
- hostId: z.string(),
23
- });
24
- //# sourceMappingURL=wire-mail.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wire-mail.js","sourceRoot":"","sources":["../../../src/utils/wire-mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAElC,MAAM,OAAO,GAAG,wBAAwB,CAAC;AAEzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAC5D,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,8BAA8B,CAAC;IAC7D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC"}
@@ -1,18 +0,0 @@
1
- import { type BranchTarget, type TransportChannel, type TransportServer, type TpsMessage, type WireTransport } from "./transport.js";
2
- import { type TpsKeyPair } from "./identity.js";
3
- export declare class WsNoiseTransport implements WireTransport {
4
- private readonly localKeyPair;
5
- private readonly hostKeyPair?;
6
- constructor(localKeyPair: TpsKeyPair, hostKeyPair?: TpsKeyPair | undefined);
7
- listen(port: number): Promise<TransportServer>;
8
- connect(target: BranchTarget): Promise<TransportChannel>;
9
- }
10
- export declare function listenForJoinWs(branchKeyPair: TpsKeyPair, port: number, timeoutMs?: number): Promise<{
11
- channel: TransportChannel;
12
- server: TransportServer;
13
- hostPubkey: Uint8Array;
14
- hostFingerprint: string;
15
- hostId: string;
16
- }>;
17
- export declare function listenForHostWs(branchKeyPair: TpsKeyPair, expectedHostPubkey: Uint8Array, port: number, onMessage: (msg: TpsMessage, channel: TransportChannel) => void | Promise<void>): Promise<TransportServer>;
18
- //# sourceMappingURL=ws-noise-transport.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ws-noise-transport.d.ts","sourceRoot":"","sources":["../../../src/utils/ws-noise-transport.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAA+C,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAwI7F,qBAAa,gBAAiB,YAAW,aAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBADZ,YAAY,EAAE,UAAU,EACxB,WAAW,CAAC,EAAE,UAAU,YAAA;IAGrC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAsD9C,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAqE/D;AAED,wBAAsB,eAAe,CACnC,aAAa,EAAE,UAAU,EACzB,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAgB,GAC1B,OAAO,CAAC;IACT,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAmFD;AAED,wBAAsB,eAAe,CACnC,aAAa,EAAE,UAAU,EACzB,kBAAkB,EAAE,UAAU,EAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC9E,OAAO,CAAC,eAAe,CAAC,CAgE1B"}