@tpsdev-ai/cli 0.2.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 (228) hide show
  1. package/README.md +65 -0
  2. package/bin/tps.cjs +22 -0
  3. package/bin/tps.ts +435 -0
  4. package/package.json +29 -5
  5. package/dist/bin/tps.d.ts +0 -3
  6. package/dist/bin/tps.d.ts.map +0 -1
  7. package/dist/bin/tps.js +0 -414
  8. package/dist/bin/tps.js.map +0 -1
  9. package/dist/src/cli/hire.d.ts +0 -16
  10. package/dist/src/cli/hire.d.ts.map +0 -1
  11. package/dist/src/cli/hire.js +0 -176
  12. package/dist/src/cli/hire.js.map +0 -1
  13. package/dist/src/cli/office.d.ts +0 -7
  14. package/dist/src/cli/office.d.ts.map +0 -1
  15. package/dist/src/cli/office.js +0 -51
  16. package/dist/src/cli/office.js.map +0 -1
  17. package/dist/src/cli/review.d.ts +0 -9
  18. package/dist/src/cli/review.d.ts.map +0 -1
  19. package/dist/src/cli/review.js +0 -109
  20. package/dist/src/cli/review.js.map +0 -1
  21. package/dist/src/cli/roster.d.ts +0 -6
  22. package/dist/src/cli/roster.d.ts.map +0 -1
  23. package/dist/src/cli/roster.js +0 -60
  24. package/dist/src/cli/roster.js.map +0 -1
  25. package/dist/src/commands/backup.d.ts +0 -19
  26. package/dist/src/commands/backup.d.ts.map +0 -1
  27. package/dist/src/commands/backup.js +0 -595
  28. package/dist/src/commands/backup.js.map +0 -1
  29. package/dist/src/commands/bootstrap.d.ts +0 -7
  30. package/dist/src/commands/bootstrap.d.ts.map +0 -1
  31. package/dist/src/commands/bootstrap.js +0 -255
  32. package/dist/src/commands/bootstrap.js.map +0 -1
  33. package/dist/src/commands/branch.d.ts +0 -14
  34. package/dist/src/commands/branch.d.ts.map +0 -1
  35. package/dist/src/commands/branch.js +0 -395
  36. package/dist/src/commands/branch.js.map +0 -1
  37. package/dist/src/commands/context.d.ts +0 -9
  38. package/dist/src/commands/context.d.ts.map +0 -1
  39. package/dist/src/commands/context.js +0 -57
  40. package/dist/src/commands/context.js.map +0 -1
  41. package/dist/src/commands/git.d.ts +0 -8
  42. package/dist/src/commands/git.d.ts.map +0 -1
  43. package/dist/src/commands/git.js +0 -53
  44. package/dist/src/commands/git.js.map +0 -1
  45. package/dist/src/commands/identity.d.ts +0 -13
  46. package/dist/src/commands/identity.d.ts.map +0 -1
  47. package/dist/src/commands/identity.js +0 -231
  48. package/dist/src/commands/identity.js.map +0 -1
  49. package/dist/src/commands/mail.d.ts +0 -12
  50. package/dist/src/commands/mail.d.ts.map +0 -1
  51. package/dist/src/commands/mail.js +0 -251
  52. package/dist/src/commands/mail.js.map +0 -1
  53. package/dist/src/commands/office-manager.d.ts +0 -147
  54. package/dist/src/commands/office-manager.d.ts.map +0 -1
  55. package/dist/src/commands/office-manager.js +0 -171
  56. package/dist/src/commands/office-manager.js.map +0 -1
  57. package/dist/src/commands/office.d.ts +0 -12
  58. package/dist/src/commands/office.d.ts.map +0 -1
  59. package/dist/src/commands/office.js +0 -480
  60. package/dist/src/commands/office.js.map +0 -1
  61. package/dist/src/commands/roster.d.ts +0 -10
  62. package/dist/src/commands/roster.d.ts.map +0 -1
  63. package/dist/src/commands/roster.js +0 -143
  64. package/dist/src/commands/roster.js.map +0 -1
  65. package/dist/src/commands/secrets.d.ts +0 -9
  66. package/dist/src/commands/secrets.d.ts.map +0 -1
  67. package/dist/src/commands/secrets.js +0 -54
  68. package/dist/src/commands/secrets.js.map +0 -1
  69. package/dist/src/commands/status.d.ts +0 -33
  70. package/dist/src/commands/status.d.ts.map +0 -1
  71. package/dist/src/commands/status.js +0 -407
  72. package/dist/src/commands/status.js.map +0 -1
  73. package/dist/src/generators/brief.d.ts +0 -6
  74. package/dist/src/generators/brief.d.ts.map +0 -1
  75. package/dist/src/generators/brief.js +0 -33
  76. package/dist/src/generators/brief.js.map +0 -1
  77. package/dist/src/generators/claude-code.d.ts +0 -18
  78. package/dist/src/generators/claude-code.d.ts.map +0 -1
  79. package/dist/src/generators/claude-code.js +0 -85
  80. package/dist/src/generators/claude-code.js.map +0 -1
  81. package/dist/src/generators/codex.d.ts +0 -23
  82. package/dist/src/generators/codex.d.ts.map +0 -1
  83. package/dist/src/generators/codex.js +0 -83
  84. package/dist/src/generators/codex.js.map +0 -1
  85. package/dist/src/generators/ollama.d.ts +0 -18
  86. package/dist/src/generators/ollama.d.ts.map +0 -1
  87. package/dist/src/generators/ollama.js +0 -97
  88. package/dist/src/generators/ollama.js.map +0 -1
  89. package/dist/src/generators/openclaw.d.ts +0 -15
  90. package/dist/src/generators/openclaw.d.ts.map +0 -1
  91. package/dist/src/generators/openclaw.js +0 -107
  92. package/dist/src/generators/openclaw.js.map +0 -1
  93. package/dist/src/generators/registry.d.ts +0 -36
  94. package/dist/src/generators/registry.d.ts.map +0 -1
  95. package/dist/src/generators/registry.js +0 -99
  96. package/dist/src/generators/registry.js.map +0 -1
  97. package/dist/src/schema/manifest.d.ts +0 -287
  98. package/dist/src/schema/manifest.d.ts.map +0 -1
  99. package/dist/src/schema/manifest.js +0 -65
  100. package/dist/src/schema/manifest.js.map +0 -1
  101. package/dist/src/schema/report.d.ts +0 -166
  102. package/dist/src/schema/report.d.ts.map +0 -1
  103. package/dist/src/schema/report.js +0 -90
  104. package/dist/src/schema/report.js.map +0 -1
  105. package/dist/src/schema/sanitizer.d.ts +0 -30
  106. package/dist/src/schema/sanitizer.d.ts.map +0 -1
  107. package/dist/src/schema/sanitizer.js +0 -99
  108. package/dist/src/schema/sanitizer.js.map +0 -1
  109. package/dist/src/soundstage/mock-llm.d.ts +0 -3
  110. package/dist/src/soundstage/mock-llm.d.ts.map +0 -1
  111. package/dist/src/soundstage/mock-llm.js +0 -68
  112. package/dist/src/soundstage/mock-llm.js.map +0 -1
  113. package/dist/src/utils/agent-info.d.ts +0 -28
  114. package/dist/src/utils/agent-info.d.ts.map +0 -1
  115. package/dist/src/utils/agent-info.js +0 -102
  116. package/dist/src/utils/agent-info.js.map +0 -1
  117. package/dist/src/utils/archive.d.ts +0 -20
  118. package/dist/src/utils/archive.d.ts.map +0 -1
  119. package/dist/src/utils/archive.js +0 -108
  120. package/dist/src/utils/archive.js.map +0 -1
  121. package/dist/src/utils/config-inject.d.ts +0 -27
  122. package/dist/src/utils/config-inject.d.ts.map +0 -1
  123. package/dist/src/utils/config-inject.js +0 -83
  124. package/dist/src/utils/config-inject.js.map +0 -1
  125. package/dist/src/utils/config.d.ts +0 -30
  126. package/dist/src/utils/config.d.ts.map +0 -1
  127. package/dist/src/utils/config.js +0 -55
  128. package/dist/src/utils/config.js.map +0 -1
  129. package/dist/src/utils/connection-state.d.ts +0 -27
  130. package/dist/src/utils/connection-state.d.ts.map +0 -1
  131. package/dist/src/utils/connection-state.js +0 -81
  132. package/dist/src/utils/connection-state.js.map +0 -1
  133. package/dist/src/utils/context.d.ts +0 -14
  134. package/dist/src/utils/context.d.ts.map +0 -1
  135. package/dist/src/utils/context.js +0 -68
  136. package/dist/src/utils/context.js.map +0 -1
  137. package/dist/src/utils/github-webhook.d.ts +0 -3
  138. package/dist/src/utils/github-webhook.d.ts.map +0 -1
  139. package/dist/src/utils/github-webhook.js +0 -105
  140. package/dist/src/utils/github-webhook.js.map +0 -1
  141. package/dist/src/utils/identity.d.ts +0 -124
  142. package/dist/src/utils/identity.d.ts.map +0 -1
  143. package/dist/src/utils/identity.js +0 -434
  144. package/dist/src/utils/identity.js.map +0 -1
  145. package/dist/src/utils/internal-mail.d.ts +0 -18
  146. package/dist/src/utils/internal-mail.d.ts.map +0 -1
  147. package/dist/src/utils/internal-mail.js +0 -75
  148. package/dist/src/utils/internal-mail.js.map +0 -1
  149. package/dist/src/utils/loop-detector.d.ts +0 -27
  150. package/dist/src/utils/loop-detector.d.ts.map +0 -1
  151. package/dist/src/utils/loop-detector.js +0 -42
  152. package/dist/src/utils/loop-detector.js.map +0 -1
  153. package/dist/src/utils/mail-handler.d.ts +0 -19
  154. package/dist/src/utils/mail-handler.d.ts.map +0 -1
  155. package/dist/src/utils/mail-handler.js +0 -94
  156. package/dist/src/utils/mail-handler.js.map +0 -1
  157. package/dist/src/utils/mail.d.ts +0 -22
  158. package/dist/src/utils/mail.d.ts.map +0 -1
  159. package/dist/src/utils/mail.js +0 -111
  160. package/dist/src/utils/mail.js.map +0 -1
  161. package/dist/src/utils/manifest.d.ts +0 -36
  162. package/dist/src/utils/manifest.d.ts.map +0 -1
  163. package/dist/src/utils/manifest.js +0 -94
  164. package/dist/src/utils/manifest.js.map +0 -1
  165. package/dist/src/utils/noise-ik-transport.d.ts +0 -18
  166. package/dist/src/utils/noise-ik-transport.d.ts.map +0 -1
  167. package/dist/src/utils/noise-ik-transport.js +0 -357
  168. package/dist/src/utils/noise-ik-transport.js.map +0 -1
  169. package/dist/src/utils/nono.d.ts +0 -72
  170. package/dist/src/utils/nono.d.ts.map +0 -1
  171. package/dist/src/utils/nono.js +0 -166
  172. package/dist/src/utils/nono.js.map +0 -1
  173. package/dist/src/utils/outbox.d.ts +0 -10
  174. package/dist/src/utils/outbox.d.ts.map +0 -1
  175. package/dist/src/utils/outbox.js +0 -29
  176. package/dist/src/utils/outbox.js.map +0 -1
  177. package/dist/src/utils/output.d.ts +0 -17
  178. package/dist/src/utils/output.d.ts.map +0 -1
  179. package/dist/src/utils/output.js +0 -83
  180. package/dist/src/utils/output.js.map +0 -1
  181. package/dist/src/utils/plain-tcp-transport.d.ts +0 -10
  182. package/dist/src/utils/plain-tcp-transport.d.ts.map +0 -1
  183. package/dist/src/utils/plain-tcp-transport.js +0 -209
  184. package/dist/src/utils/plain-tcp-transport.js.map +0 -1
  185. package/dist/src/utils/provision.d.ts +0 -2
  186. package/dist/src/utils/provision.d.ts.map +0 -1
  187. package/dist/src/utils/provision.js +0 -193
  188. package/dist/src/utils/provision.js.map +0 -1
  189. package/dist/src/utils/relay.d.ts +0 -30
  190. package/dist/src/utils/relay.d.ts.map +0 -1
  191. package/dist/src/utils/relay.js +0 -539
  192. package/dist/src/utils/relay.js.map +0 -1
  193. package/dist/src/utils/sandbox.d.ts +0 -37
  194. package/dist/src/utils/sandbox.d.ts.map +0 -1
  195. package/dist/src/utils/sandbox.js +0 -126
  196. package/dist/src/utils/sandbox.js.map +0 -1
  197. package/dist/src/utils/transport.d.ts +0 -62
  198. package/dist/src/utils/transport.d.ts.map +0 -1
  199. package/dist/src/utils/transport.js +0 -75
  200. package/dist/src/utils/transport.js.map +0 -1
  201. package/dist/src/utils/vault.d.ts +0 -21
  202. package/dist/src/utils/vault.d.ts.map +0 -1
  203. package/dist/src/utils/vault.js +0 -67
  204. package/dist/src/utils/vault.js.map +0 -1
  205. package/dist/src/utils/wall.d.ts +0 -5
  206. package/dist/src/utils/wall.d.ts.map +0 -1
  207. package/dist/src/utils/wall.js +0 -51
  208. package/dist/src/utils/wall.js.map +0 -1
  209. package/dist/src/utils/wire-delivery.d.ts +0 -10
  210. package/dist/src/utils/wire-delivery.d.ts.map +0 -1
  211. package/dist/src/utils/wire-delivery.js +0 -57
  212. package/dist/src/utils/wire-delivery.js.map +0 -1
  213. package/dist/src/utils/wire-frame.d.ts +0 -10
  214. package/dist/src/utils/wire-frame.d.ts.map +0 -1
  215. package/dist/src/utils/wire-frame.js +0 -66
  216. package/dist/src/utils/wire-frame.js.map +0 -1
  217. package/dist/src/utils/wire-mail.d.ts +0 -54
  218. package/dist/src/utils/wire-mail.d.ts.map +0 -1
  219. package/dist/src/utils/wire-mail.js +0 -24
  220. package/dist/src/utils/wire-mail.js.map +0 -1
  221. package/dist/src/utils/workspace.d.ts +0 -14
  222. package/dist/src/utils/workspace.d.ts.map +0 -1
  223. package/dist/src/utils/workspace.js +0 -53
  224. package/dist/src/utils/workspace.js.map +0 -1
  225. package/dist/src/utils/ws-noise-transport.d.ts +0 -18
  226. package/dist/src/utils/ws-noise-transport.d.ts.map +0 -1
  227. package/dist/src/utils/ws-noise-transport.js +0 -356
  228. package/dist/src/utils/ws-noise-transport.js.map +0 -1
@@ -1,55 +0,0 @@
1
- import { readFileSync, existsSync } from "node:fs";
2
- import { join, dirname } from "node:path";
3
- export function getAgentList(config) {
4
- return config.agents?.list || [];
5
- }
6
- export function getDefaults(config) {
7
- return config.agents?.defaults || {};
8
- }
9
- /**
10
- * Resolve an agent's workspace, falling back to agents.defaults.workspace.
11
- */
12
- export function resolveWorkspace(agent, config) {
13
- if (agent.workspace)
14
- return agent.workspace;
15
- const defaults = getDefaults(config);
16
- return defaults.workspace;
17
- }
18
- export function findOpenClawConfig(startDir) {
19
- let dir = startDir || process.cwd();
20
- const home = process.env.HOME || "/";
21
- while (true) {
22
- const candidate = join(dir, "openclaw.json");
23
- if (existsSync(candidate))
24
- return candidate;
25
- const dotCandidate = join(dir, ".openclaw", "openclaw.json");
26
- if (existsSync(dotCandidate))
27
- return dotCandidate;
28
- const parent = dirname(dir);
29
- if (parent === dir || dir === home)
30
- break;
31
- dir = parent;
32
- }
33
- // Last resort: ~/.openclaw/openclaw.json
34
- const globalConfig = join(home, ".openclaw", "openclaw.json");
35
- if (existsSync(globalConfig))
36
- return globalConfig;
37
- return null;
38
- }
39
- export function readOpenClawConfig(configPath) {
40
- const raw = readFileSync(configPath, "utf-8");
41
- return JSON.parse(raw);
42
- }
43
- /**
44
- * Resolve config path: use explicit path if given, otherwise auto-discover.
45
- */
46
- export function resolveConfigPath(explicit) {
47
- if (explicit) {
48
- if (!existsSync(explicit)) {
49
- throw new Error(`Config file not found: ${explicit}`);
50
- }
51
- return explicit;
52
- }
53
- return findOpenClawConfig();
54
- }
55
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqB1C,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAsB;IAChD,OAAO,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAoB,EAAE,MAAsB;IAC3E,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC,SAAS,CAAC;IAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC,SAA+B,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAiB;IAClD,IAAI,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;IAErC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAC7C,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QAC7D,IAAI,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,YAAY,CAAC;QAElD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM;QAC1C,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IAED,yCAAyC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IAC9D,IAAI,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,YAAY,CAAC;IAElD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,kBAAkB,EAAE,CAAC;AAC9B,CAAC"}
@@ -1,27 +0,0 @@
1
- export interface HostConnectionState {
2
- branch: string;
3
- connectedAt: string;
4
- lastHeartbeatSent: string;
5
- lastHeartbeatAck: string | null;
6
- reconnectCount: number;
7
- bytesSent: number;
8
- bytesReceived: number;
9
- messagesSent: number;
10
- messagesReceived: number;
11
- pid: number;
12
- }
13
- export interface BranchConnectionState {
14
- connectedAt: string;
15
- lastSeen: string;
16
- messagesReceived: number;
17
- messagesPushed: number;
18
- }
19
- export declare function writeHostState(state: HostConnectionState): void;
20
- export declare function readHostState(branch: string): HostConnectionState | null;
21
- export declare function clearHostState(branch: string): void;
22
- export declare function writeBranchState(state: BranchConnectionState): void;
23
- export declare function readBranchState(): BranchConnectionState | null;
24
- export declare function clearBranchState(): void;
25
- export declare function listHostStates(): HostConnectionState[];
26
- export declare function connectionAlive(branch: string): boolean | null;
27
- //# sourceMappingURL=connection-state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connection-state.d.ts","sourceRoot":"","sources":["../../../src/utils/connection-state.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAUD,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAG/D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAIxE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAGnE;AAED,wBAAgB,eAAe,IAAI,qBAAqB,GAAG,IAAI,CAI9D;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,cAAc,IAAI,mBAAmB,EAAE,CAStD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAS9D"}
@@ -1,81 +0,0 @@
1
- import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
2
- import { homedir } from "node:os";
3
- import { join } from "node:path";
4
- const connectionsDir = () => join(process.env.HOME ?? homedir(), ".tps", "connections");
5
- function hostStatePath(branch) {
6
- return join(connectionsDir(), `${branch}.json`);
7
- }
8
- function branchStatePath() {
9
- return join(connectionsDir(), "host.json");
10
- }
11
- export function writeHostState(state) {
12
- mkdirSync(connectionsDir(), { recursive: true });
13
- writeFileSync(hostStatePath(state.branch), JSON.stringify(state, null, 2), "utf-8");
14
- }
15
- export function readHostState(branch) {
16
- const p = hostStatePath(branch);
17
- if (!existsSync(p))
18
- return null;
19
- try {
20
- return JSON.parse(readFileSync(p, "utf-8"));
21
- }
22
- catch {
23
- return null;
24
- }
25
- }
26
- export function clearHostState(branch) {
27
- try {
28
- rmSync(hostStatePath(branch), { force: true });
29
- }
30
- catch { }
31
- }
32
- export function writeBranchState(state) {
33
- mkdirSync(connectionsDir(), { recursive: true });
34
- writeFileSync(branchStatePath(), JSON.stringify(state, null, 2), "utf-8");
35
- }
36
- export function readBranchState() {
37
- const p = branchStatePath();
38
- if (!existsSync(p))
39
- return null;
40
- try {
41
- return JSON.parse(readFileSync(p, "utf-8"));
42
- }
43
- catch {
44
- return null;
45
- }
46
- }
47
- export function clearBranchState() {
48
- try {
49
- rmSync(branchStatePath(), { force: true });
50
- }
51
- catch { }
52
- }
53
- export function listHostStates() {
54
- const dir = connectionsDir();
55
- if (!existsSync(dir))
56
- return [];
57
- return readdirSync(dir)
58
- .filter((f) => f.endsWith(".json") && f !== "host.json")
59
- .map((f) => {
60
- try {
61
- return JSON.parse(readFileSync(join(dir, f), "utf-8"));
62
- }
63
- catch {
64
- return null;
65
- }
66
- })
67
- .filter((x) => !!x);
68
- }
69
- export function connectionAlive(branch) {
70
- const state = readHostState(branch);
71
- if (!state)
72
- return null;
73
- try {
74
- process.kill(state.pid, 0);
75
- return true;
76
- }
77
- catch {
78
- return false;
79
- }
80
- }
81
- //# sourceMappingURL=connection-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connection-state.js","sourceRoot":"","sources":["../../../src/utils/connection-state.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- export interface WorkstreamContext {
2
- workstream: string;
3
- summary: string;
4
- createdAt: string;
5
- updatedAt: string;
6
- }
7
- export declare function getContextDir(): string;
8
- export declare function readContext(workstream: string): WorkstreamContext | null;
9
- export declare function writeContext(workstream: string, data: Pick<WorkstreamContext, "summary"> & Partial<Pick<WorkstreamContext, "createdAt" | "updatedAt">>): WorkstreamContext;
10
- export declare function listContexts(): Array<{
11
- workstream: string;
12
- updatedAt: string;
13
- }>;
14
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/utils/context.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAaD,wBAAgB,aAAa,IAAI,MAAM,CAOtC;AAOD,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAKxE;AAED,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,GACrG,iBAAiB,CAoBnB;AAED,wBAAgB,YAAY,IAAI,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB/E"}
@@ -1,68 +0,0 @@
1
- import { mkdirSync, readFileSync, readdirSync, renameSync, statSync, writeFileSync, existsSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { homedir } from "node:os";
4
- function assertValidWorkstream(workstream) {
5
- if (workstream.length > 64) {
6
- throw new Error("Invalid workstream: max length is 64 characters.");
7
- }
8
- if (!/^[a-zA-Z0-9_-]+$/.test(workstream)) {
9
- throw new Error(`Invalid workstream "${workstream}". Use only letters, numbers, underscores, and hyphens.`);
10
- }
11
- }
12
- export function getContextDir() {
13
- // Per-workspace context (avoid polluting ~/.openclaw root config directory).
14
- // Can be overridden explicitly for tests/tooling.
15
- return (process.env.TPS_CONTEXT_DIR ||
16
- join(process.env.HOME || homedir(), ".tps", "context"));
17
- }
18
- function contextPath(workstream) {
19
- assertValidWorkstream(workstream);
20
- return join(getContextDir(), `${workstream}.json`);
21
- }
22
- export function readContext(workstream) {
23
- const file = contextPath(workstream);
24
- if (!existsSync(file))
25
- return null;
26
- const raw = readFileSync(file, "utf-8");
27
- return JSON.parse(raw);
28
- }
29
- export function writeContext(workstream, data) {
30
- const dir = getContextDir();
31
- mkdirSync(dir, { recursive: true });
32
- const now = new Date().toISOString();
33
- const existing = readContext(workstream);
34
- const record = {
35
- workstream,
36
- summary: data.summary,
37
- createdAt: existing?.createdAt || data.createdAt || now,
38
- updatedAt: data.updatedAt || now,
39
- };
40
- const file = contextPath(workstream);
41
- const tmp = `${file}.tmp-${process.pid}-${Date.now()}`;
42
- writeFileSync(tmp, JSON.stringify(record, null, 2), "utf-8");
43
- renameSync(tmp, file);
44
- return record;
45
- }
46
- export function listContexts() {
47
- const dir = getContextDir();
48
- if (!existsSync(dir))
49
- return [];
50
- const rows = readdirSync(dir)
51
- .filter((f) => f.endsWith(".json"))
52
- .map((f) => {
53
- const workstream = f.replace(/\.json$/, "");
54
- const file = join(dir, f);
55
- let updatedAt;
56
- try {
57
- const parsed = JSON.parse(readFileSync(file, "utf-8"));
58
- updatedAt = parsed.updatedAt || statSync(file).mtime.toISOString();
59
- }
60
- catch {
61
- updatedAt = statSync(file).mtime.toISOString();
62
- }
63
- return { workstream, updatedAt };
64
- })
65
- .sort((a, b) => (a.updatedAt < b.updatedAt ? 1 : -1));
66
- return rows;
67
- }
68
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/utils/context.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { IncomingMessage, ServerResponse } from "node:http";
2
- export declare function handleGithubWebhook(req: IncomingMessage, res: ServerResponse): Promise<void>;
3
- //# sourceMappingURL=github-webhook.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github-webhook.d.ts","sourceRoot":"","sources":["../../../src/utils/github-webhook.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AA2EjE,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmClG"}
@@ -1,105 +0,0 @@
1
- import { createHmac, timingSafeEqual } from "node:crypto";
2
- import { queueOutboxMessage } from "./outbox.js";
3
- function webhookSecret() {
4
- return process.env.GITHUB_WEBHOOK_SECRET ?? "";
5
- }
6
- function webhookTarget() {
7
- return process.env.GITHUB_WEBHOOK_TARGET ?? "rockit";
8
- }
9
- function validateSignature(body, sigHeader) {
10
- const secret = webhookSecret();
11
- if (!secret)
12
- return false;
13
- if (!sigHeader?.startsWith("sha256="))
14
- return false;
15
- const expected = createHmac("sha256", secret).update(body).digest("hex");
16
- const expectedBuf = Buffer.from(`sha256=${expected}`, "utf-8");
17
- const actualBuf = Buffer.from(sigHeader, "utf-8");
18
- if (expectedBuf.length !== actualBuf.length)
19
- return false;
20
- return timingSafeEqual(expectedBuf, actualBuf);
21
- }
22
- function readBody(req) {
23
- return new Promise((resolve, reject) => {
24
- const chunks = [];
25
- req.on("data", (chunk) => chunks.push(chunk));
26
- req.on("end", () => resolve(Buffer.concat(chunks)));
27
- req.on("error", reject);
28
- });
29
- }
30
- function formatEvent(event, payload) {
31
- const repo = payload.repository?.full_name ?? "unknown/repo";
32
- switch (event) {
33
- case "push": {
34
- const ref = payload.ref ?? "unknown";
35
- const branch = ref.replace("refs/heads/", "");
36
- const commits = payload.commits?.length ?? 0;
37
- const pusher = payload.pusher?.name ?? "unknown";
38
- const after = payload.after?.slice(0, 7) ?? "unknown";
39
- return `📦 push to ${repo}/${branch} by ${pusher} — ${commits} commit(s), HEAD ${after}`;
40
- }
41
- case "pull_request": {
42
- const action = payload.action;
43
- const pr = payload.pull_request;
44
- const num = pr?.number ?? "?";
45
- const title = pr?.title ?? "(no title)";
46
- const user = pr?.user?.login ?? "unknown";
47
- const url = pr?.html_url ?? "";
48
- return `🔀 PR #${num} ${action} by ${user} — ${title}\n${url}`;
49
- }
50
- case "workflow_run": {
51
- const wf = payload.workflow_run;
52
- const name = wf?.name ?? "workflow";
53
- const conclusion = wf?.conclusion ?? "in_progress";
54
- const branch = wf?.head_branch ?? "?";
55
- const sha = wf?.head_sha?.slice(0, 7) ?? "?";
56
- const icon = conclusion === "success" ? "✅" : conclusion === "failure" ? "❌" : "⏳";
57
- return `${icon} ${repo} — ${name} ${conclusion} on ${branch} @ ${sha}`;
58
- }
59
- case "issues": {
60
- const action = payload.action;
61
- const issue = payload.issue;
62
- const num = issue?.number ?? "?";
63
- const title = issue?.title ?? "(no title)";
64
- const user = issue?.user?.login ?? "unknown";
65
- const url = issue?.html_url ?? "";
66
- return `🐛 Issue #${num} ${action} by ${user} — ${title}\n${url}`;
67
- }
68
- default:
69
- return `📬 GitHub ${event} on ${repo}`;
70
- }
71
- }
72
- export async function handleGithubWebhook(req, res) {
73
- if (!webhookSecret()) {
74
- console.warn("[webhook] GITHUB_WEBHOOK_SECRET not set — all webhook requests will be rejected");
75
- res.statusCode = 503;
76
- res.end("Webhook not configured");
77
- return;
78
- }
79
- const event = req.headers["x-github-event"];
80
- const sig = req.headers["x-hub-signature-256"];
81
- if (!event) {
82
- res.statusCode = 400;
83
- res.end("Missing X-GitHub-Event header");
84
- return;
85
- }
86
- const body = await readBody(req);
87
- if (!validateSignature(body, sig)) {
88
- res.statusCode = 401;
89
- res.end("Invalid signature");
90
- return;
91
- }
92
- let payload;
93
- try {
94
- payload = JSON.parse(body.toString("utf-8"));
95
- }
96
- catch {
97
- res.statusCode = 400;
98
- res.end("Invalid JSON");
99
- return;
100
- }
101
- queueOutboxMessage(webhookTarget(), formatEvent(event, payload), "github-webhook");
102
- res.statusCode = 200;
103
- res.end("ok");
104
- }
105
- //# sourceMappingURL=github-webhook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github-webhook.js","sourceRoot":"","sources":["../../../src/utils/github-webhook.ts"],"names":[],"mappings":"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"}
@@ -1,124 +0,0 @@
1
- export interface TpsVault {
2
- identity: {
3
- seed: string;
4
- createdAt: string;
5
- expiresAt?: string;
6
- };
7
- secrets: Record<string, string>;
8
- }
9
- export declare function saveToVault(data: TpsVault): Promise<void>;
10
- export declare function loadFromVault(): Promise<TpsVault | null>;
11
- export interface TpsSigningKeyPair {
12
- publicKey: Uint8Array;
13
- privateKey: Uint8Array;
14
- }
15
- export interface TpsEncryptionKeyPair {
16
- publicKey: Uint8Array;
17
- privateKey: Uint8Array;
18
- }
19
- export interface TpsKeyPair {
20
- signing: TpsSigningKeyPair;
21
- encryption: TpsEncryptionKeyPair;
22
- seed: Uint8Array;
23
- fingerprint: string;
24
- createdAt: string;
25
- expiresAt?: string;
26
- publicKey: Uint8Array;
27
- privateKey: Uint8Array;
28
- }
29
- export interface KeyMeta {
30
- fingerprint: string;
31
- createdAt: string;
32
- expiresAt?: string;
33
- trust?: "high" | "standard" | "low";
34
- revokedAt?: string;
35
- revokeReason?: string;
36
- }
37
- /**
38
- * Compute the fingerprint (SHA-256 hex) of a public key.
39
- */
40
- export declare function fingerprint(publicKey: Uint8Array): string;
41
- /**
42
- * Derive X25519 private key from Ed25519 seed.
43
- * Uses SHA-512 of the seed (same as Ed25519 key expansion) and clamps
44
- * the first 32 bytes for Curve25519 scalar multiplication.
45
- * This is the same approach as libsodium's crypto_sign_ed25519_sk_to_curve25519.
46
- */
47
- export declare function edSeedToX25519Private(seed: Uint8Array): Uint8Array;
48
- /**
49
- * Generate a new identity keypair (Ed25519 signing + X25519 encryption).
50
- * Both are derived from a single 32-byte seed.
51
- */
52
- export declare function generateKeyPair(options?: {
53
- expiresIn?: number;
54
- }): TpsKeyPair;
55
- /**
56
- * Sign a message with a private key.
57
- * Returns the 64-byte Ed25519 signature.
58
- */
59
- export declare function sign(message: Uint8Array, privateKey: Uint8Array): Uint8Array;
60
- /**
61
- * Verify a signature against a message and public key.
62
- */
63
- export declare function verify(message: Uint8Array, signature: Uint8Array, publicKey: Uint8Array): boolean;
64
- /**
65
- * Save a keypair to a directory.
66
- * Private keys get 0600 permissions. Both Ed25519 and X25519 keys stored.
67
- */
68
- export declare function saveKeyPair(keyPair: TpsKeyPair, dir: string, prefix?: string): void;
69
- /**
70
- * Load a keypair from a directory.
71
- * Supports both new format (with seed + x25519) and legacy (ed25519 only).
72
- */
73
- export declare function loadKeyPair(dir: string, prefix?: string): TpsKeyPair;
74
- /**
75
- * Check if a private key file has safe permissions (0600).
76
- * Returns true if permissions are restrictive enough.
77
- */
78
- export declare function checkKeyPermissions(keyPath: string): boolean;
79
- /**
80
- * Initialize host identity (generate keypair if not exists).
81
- * Returns the keypair (existing or newly generated).
82
- */
83
- export declare function initHostIdentity(options?: {
84
- expiresIn?: number;
85
- force?: boolean;
86
- }): Promise<TpsKeyPair>;
87
- /**
88
- * Load the host identity. Throws if not initialized.
89
- */
90
- export declare function loadHostIdentity(): Promise<TpsKeyPair>;
91
- export declare function loadHostIdentityId(): Promise<string>;
92
- export interface RegisteredKey {
93
- branchId: string;
94
- publicKey: Uint8Array;
95
- encryptionKey?: Uint8Array;
96
- meta: KeyMeta;
97
- }
98
- /**
99
- * Register a branch's public keys in the host registry.
100
- * Branch generates its own keys — only PUBLIC keys are registered here.
101
- * The host NEVER sees a branch's private key.
102
- */
103
- export declare function registerBranch(branchId: string, publicKey: Uint8Array, meta?: Partial<KeyMeta>, encryptionKey?: Uint8Array): RegisteredKey;
104
- /**
105
- * Look up a branch's registered key.
106
- */
107
- export declare function lookupBranch(branchId: string): RegisteredKey | null;
108
- /**
109
- * Revoke a branch's key. Moves metadata to revoked/ directory.
110
- */
111
- export declare function revokeBranch(branchId: string, reason: string): void;
112
- /**
113
- * Check if a branch key is revoked.
114
- */
115
- export declare function isRevoked(branchId: string): boolean;
116
- /**
117
- * Check if a branch key is expired.
118
- */
119
- export declare function isExpired(meta: KeyMeta): boolean;
120
- /**
121
- * List all registered (non-revoked) branches.
122
- */
123
- export declare function listBranches(): RegisteredKey[];
124
- //# sourceMappingURL=identity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/utils/identity.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAeD,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/D;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAW9D;AAwCD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,oBAAoB,CAAC;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAQlE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,UAAU,CA0Bb;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAE5E;AAED;;GAEG;AACH,wBAAgB,MAAM,CACpB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,UAAU,GACpB,OAAO,CAMT;AAkBD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAe,GACtB,IAAI,CA6BN;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAe,GAAG,UAAU,CA0C5E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAS5D;AAID;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2BtB;AAmBD;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAU5D;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAW1D;AAKD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,UAAU,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EACvB,aAAa,CAAC,EAAE,UAAU,GACzB,aAAa,CAiCf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA4BnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAqCnE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAGhD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAa9C"}