@getpaseo/server 0.1.59 → 0.1.60

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 (273) hide show
  1. package/dist/scripts/dev-runner.js +26 -7
  2. package/dist/scripts/dev-runner.js.map +1 -1
  3. package/dist/server/client/daemon-client-runtime-metrics.d.ts +39 -0
  4. package/dist/server/client/daemon-client-runtime-metrics.d.ts.map +1 -0
  5. package/dist/server/client/daemon-client-runtime-metrics.js +173 -0
  6. package/dist/server/client/daemon-client-runtime-metrics.js.map +1 -0
  7. package/dist/server/client/daemon-client.d.ts +58 -9
  8. package/dist/server/client/daemon-client.d.ts.map +1 -1
  9. package/dist/server/client/daemon-client.js +151 -10
  10. package/dist/server/client/daemon-client.js.map +1 -1
  11. package/dist/server/server/agent/agent-manager.d.ts +55 -48
  12. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  13. package/dist/server/server/agent/agent-manager.js +541 -331
  14. package/dist/server/server/agent/agent-manager.js.map +1 -1
  15. package/dist/server/server/agent/agent-metadata-generator.d.ts +3 -2
  16. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
  17. package/dist/server/server/agent/agent-metadata-generator.js +31 -16
  18. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  19. package/dist/server/server/agent/agent-projections.d.ts +2 -1
  20. package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
  21. package/dist/server/server/agent/agent-projections.js +29 -1
  22. package/dist/server/server/agent/agent-projections.js.map +1 -1
  23. package/dist/server/server/agent/agent-sdk-types.d.ts +9 -5
  24. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  25. package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
  26. package/dist/server/server/agent/agent-storage.d.ts +76 -69
  27. package/dist/server/server/agent/agent-storage.d.ts.map +1 -1
  28. package/dist/server/server/agent/agent-storage.js +13 -6
  29. package/dist/server/server/agent/agent-storage.js.map +1 -1
  30. package/dist/server/server/agent/agent-stream-coalescer.d.ts +41 -0
  31. package/dist/server/server/agent/agent-stream-coalescer.d.ts.map +1 -0
  32. package/dist/server/server/agent/agent-stream-coalescer.js +166 -0
  33. package/dist/server/server/agent/agent-stream-coalescer.js.map +1 -0
  34. package/dist/server/server/agent/agent-timeline-store-types.d.ts +54 -0
  35. package/dist/server/server/agent/agent-timeline-store-types.d.ts.map +1 -0
  36. package/dist/server/server/agent/agent-timeline-store-types.js +2 -0
  37. package/dist/server/server/agent/agent-timeline-store-types.js.map +1 -0
  38. package/dist/server/server/agent/agent-timeline-store.d.ts +32 -0
  39. package/dist/server/server/agent/agent-timeline-store.d.ts.map +1 -0
  40. package/dist/server/server/agent/agent-timeline-store.js +245 -0
  41. package/dist/server/server/agent/agent-timeline-store.js.map +1 -0
  42. package/dist/server/server/agent/mcp-server.d.ts +12 -1
  43. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  44. package/dist/server/server/agent/mcp-server.js +276 -65
  45. package/dist/server/server/agent/mcp-server.js.map +1 -1
  46. package/dist/server/server/agent/mcp-shared.d.ts +196 -152
  47. package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
  48. package/dist/server/server/agent/mcp-shared.js +40 -42
  49. package/dist/server/server/agent/mcp-shared.js.map +1 -1
  50. package/dist/server/server/agent/model-resolver.d.ts.map +1 -1
  51. package/dist/server/server/agent/model-resolver.js +3 -1
  52. package/dist/server/server/agent/model-resolver.js.map +1 -1
  53. package/dist/server/server/agent/prompt-attachments.d.ts +6 -0
  54. package/dist/server/server/agent/prompt-attachments.d.ts.map +1 -0
  55. package/dist/server/server/agent/prompt-attachments.js +31 -0
  56. package/dist/server/server/agent/prompt-attachments.js.map +1 -0
  57. package/dist/server/server/agent/provider-launch-config.d.ts +12 -10
  58. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
  59. package/dist/server/server/agent/provider-launch-config.js +34 -0
  60. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  61. package/dist/server/server/agent/provider-manifest.d.ts +1 -0
  62. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  63. package/dist/server/server/agent/provider-manifest.js +22 -1
  64. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  65. package/dist/server/server/agent/provider-registry.d.ts +5 -2
  66. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  67. package/dist/server/server/agent/provider-registry.js +20 -9
  68. package/dist/server/server/agent/provider-registry.js.map +1 -1
  69. package/dist/server/server/agent/provider-snapshot-manager.d.ts +17 -5
  70. package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -1
  71. package/dist/server/server/agent/provider-snapshot-manager.js +150 -61
  72. package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
  73. package/dist/server/server/agent/providers/acp-agent.d.ts +8 -4
  74. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
  75. package/dist/server/server/agent/providers/acp-agent.js +73 -8
  76. package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
  77. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +2 -2
  78. package/dist/server/server/agent/providers/claude-agent.d.ts +1 -1
  79. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  80. package/dist/server/server/agent/providers/claude-agent.js +8 -7
  81. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  82. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +37 -4
  83. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  84. package/dist/server/server/agent/providers/codex-app-server-agent.js +61 -31
  85. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  86. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts.map +1 -1
  87. package/dist/server/server/agent/providers/copilot-acp-agent.js +3 -2
  88. package/dist/server/server/agent/providers/copilot-acp-agent.js.map +1 -1
  89. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +64 -0
  90. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts.map +1 -0
  91. package/dist/server/server/agent/providers/mock-load-test-agent.js +585 -0
  92. package/dist/server/server/agent/providers/mock-load-test-agent.js.map +1 -0
  93. package/dist/server/server/agent/providers/opencode-agent.d.ts +19 -4
  94. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  95. package/dist/server/server/agent/providers/opencode-agent.js +227 -118
  96. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  97. package/dist/server/server/agent/providers/pi-direct-agent.d.ts +69 -0
  98. package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -0
  99. package/dist/server/server/agent/providers/pi-direct-agent.js +1177 -0
  100. package/dist/server/server/agent/providers/pi-direct-agent.js.map +1 -0
  101. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +7 -4
  102. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  103. package/dist/server/server/agent-attention-policy.d.ts +13 -13
  104. package/dist/server/server/agent-attention-policy.d.ts.map +1 -1
  105. package/dist/server/server/agent-attention-policy.js +20 -36
  106. package/dist/server/server/agent-attention-policy.js.map +1 -1
  107. package/dist/server/server/bootstrap.d.ts +6 -0
  108. package/dist/server/server/bootstrap.d.ts.map +1 -1
  109. package/dist/server/server/bootstrap.js +113 -11
  110. package/dist/server/server/bootstrap.js.map +1 -1
  111. package/dist/server/server/chat/chat-rpc-schemas.d.ts +44 -44
  112. package/dist/server/server/chat/chat-types.d.ts +6 -6
  113. package/dist/server/server/checkout-diff-manager.d.ts +0 -1
  114. package/dist/server/server/checkout-diff-manager.d.ts.map +1 -1
  115. package/dist/server/server/checkout-diff-manager.js +6 -4
  116. package/dist/server/server/checkout-diff-manager.js.map +1 -1
  117. package/dist/server/server/config.d.ts.map +1 -1
  118. package/dist/server/server/config.js +1 -0
  119. package/dist/server/server/config.js.map +1 -1
  120. package/dist/server/server/file-explorer/service.d.ts.map +1 -1
  121. package/dist/server/server/file-explorer/service.js +2 -1
  122. package/dist/server/server/file-explorer/service.js.map +1 -1
  123. package/dist/server/server/loop/rpc-schemas.d.ts +392 -392
  124. package/dist/server/server/loop-service.d.ts +52 -52
  125. package/dist/server/server/paseo-worktree-archive-service.d.ts +41 -0
  126. package/dist/server/server/paseo-worktree-archive-service.d.ts.map +1 -0
  127. package/dist/server/server/paseo-worktree-archive-service.js +137 -0
  128. package/dist/server/server/paseo-worktree-archive-service.js.map +1 -0
  129. package/dist/server/server/paseo-worktree-service.d.ts +24 -0
  130. package/dist/server/server/paseo-worktree-service.d.ts.map +1 -0
  131. package/dist/server/server/paseo-worktree-service.js +94 -0
  132. package/dist/server/server/paseo-worktree-service.js.map +1 -0
  133. package/dist/server/server/path-utils.d.ts +1 -0
  134. package/dist/server/server/path-utils.d.ts.map +1 -1
  135. package/dist/server/server/path-utils.js +9 -0
  136. package/dist/server/server/path-utils.js.map +1 -1
  137. package/dist/server/server/persisted-config.d.ts +73 -73
  138. package/dist/server/server/persistence-hooks.d.ts.map +1 -1
  139. package/dist/server/server/persistence-hooks.js +3 -0
  140. package/dist/server/server/persistence-hooks.js.map +1 -1
  141. package/dist/server/server/resolve-worktree-creation-intent.d.ts +30 -0
  142. package/dist/server/server/resolve-worktree-creation-intent.d.ts.map +1 -0
  143. package/dist/server/server/resolve-worktree-creation-intent.js +163 -0
  144. package/dist/server/server/resolve-worktree-creation-intent.js.map +1 -0
  145. package/dist/server/server/schedule/rpc-schemas.d.ts +192 -192
  146. package/dist/server/server/schedule/service.d.ts +1 -1
  147. package/dist/server/server/schedule/service.d.ts.map +1 -1
  148. package/dist/server/server/schedule/types.d.ts +44 -44
  149. package/dist/server/server/script-health-monitor.d.ts +39 -0
  150. package/dist/server/server/script-health-monitor.d.ts.map +1 -0
  151. package/dist/server/server/script-health-monitor.js +158 -0
  152. package/dist/server/server/script-health-monitor.js.map +1 -0
  153. package/dist/server/server/script-proxy.d.ts +40 -0
  154. package/dist/server/server/script-proxy.d.ts.map +1 -0
  155. package/dist/server/server/script-proxy.js +245 -0
  156. package/dist/server/server/script-proxy.js.map +1 -0
  157. package/dist/server/server/script-route-branch-handler.d.ts +10 -0
  158. package/dist/server/server/script-route-branch-handler.d.ts.map +1 -0
  159. package/dist/server/server/script-route-branch-handler.js +45 -0
  160. package/dist/server/server/script-route-branch-handler.js.map +1 -0
  161. package/dist/server/server/script-status-projection.d.ts +29 -0
  162. package/dist/server/server/script-status-projection.d.ts.map +1 -0
  163. package/dist/server/server/script-status-projection.js +133 -0
  164. package/dist/server/server/script-status-projection.js.map +1 -0
  165. package/dist/server/server/session.d.ts +77 -13
  166. package/dist/server/server/session.d.ts.map +1 -1
  167. package/dist/server/server/session.js +1290 -548
  168. package/dist/server/server/session.js.map +1 -1
  169. package/dist/server/server/websocket-server.d.ts +27 -3
  170. package/dist/server/server/websocket-server.d.ts.map +1 -1
  171. package/dist/server/server/websocket-server.js +112 -29
  172. package/dist/server/server/websocket-server.js.map +1 -1
  173. package/dist/server/server/workspace-archive-service.d.ts +8 -0
  174. package/dist/server/server/workspace-archive-service.d.ts.map +1 -0
  175. package/dist/server/server/workspace-archive-service.js +17 -0
  176. package/dist/server/server/workspace-archive-service.js.map +1 -0
  177. package/dist/server/server/workspace-git-metadata.d.ts +24 -0
  178. package/dist/server/server/workspace-git-metadata.d.ts.map +1 -0
  179. package/dist/server/server/workspace-git-metadata.js +78 -0
  180. package/dist/server/server/workspace-git-metadata.js.map +1 -0
  181. package/dist/server/server/workspace-git-service.d.ts +104 -5
  182. package/dist/server/server/workspace-git-service.d.ts.map +1 -1
  183. package/dist/server/server/workspace-git-service.js +442 -56
  184. package/dist/server/server/workspace-git-service.js.map +1 -1
  185. package/dist/server/server/workspace-reconciliation-service.d.ts +54 -0
  186. package/dist/server/server/workspace-reconciliation-service.d.ts.map +1 -0
  187. package/dist/server/server/workspace-reconciliation-service.js +176 -0
  188. package/dist/server/server/workspace-reconciliation-service.js.map +1 -0
  189. package/dist/server/server/workspace-registry-bootstrap.d.ts.map +1 -1
  190. package/dist/server/server/workspace-registry-bootstrap.js +4 -3
  191. package/dist/server/server/workspace-registry-bootstrap.js.map +1 -1
  192. package/dist/server/server/workspace-registry.d.ts +8 -8
  193. package/dist/server/server/workspace-registry.test-helpers.d.ts +37 -0
  194. package/dist/server/server/workspace-registry.test-helpers.d.ts.map +1 -0
  195. package/dist/server/server/workspace-registry.test-helpers.js +121 -0
  196. package/dist/server/server/workspace-registry.test-helpers.js.map +1 -0
  197. package/dist/server/server/workspace-script-runtime-store.d.ts +28 -0
  198. package/dist/server/server/workspace-script-runtime-store.d.ts.map +1 -0
  199. package/dist/server/server/workspace-script-runtime-store.js +78 -0
  200. package/dist/server/server/workspace-script-runtime-store.js.map +1 -0
  201. package/dist/server/server/workspace-service-env.d.ts +17 -0
  202. package/dist/server/server/workspace-service-env.d.ts.map +1 -0
  203. package/dist/server/server/workspace-service-env.js +80 -0
  204. package/dist/server/server/workspace-service-env.js.map +1 -0
  205. package/dist/server/server/workspace-service-port-registry.d.ts +19 -0
  206. package/dist/server/server/workspace-service-port-registry.d.ts.map +1 -0
  207. package/dist/server/server/workspace-service-port-registry.js +59 -0
  208. package/dist/server/server/workspace-service-port-registry.js.map +1 -0
  209. package/dist/server/server/worktree-bootstrap.d.ts +55 -10
  210. package/dist/server/server/worktree-bootstrap.d.ts.map +1 -1
  211. package/dist/server/server/worktree-bootstrap.js +290 -112
  212. package/dist/server/server/worktree-bootstrap.js.map +1 -1
  213. package/dist/server/server/worktree-core.d.ts +25 -0
  214. package/dist/server/server/worktree-core.d.ts.map +1 -0
  215. package/dist/server/server/worktree-core.js +75 -0
  216. package/dist/server/server/worktree-core.js.map +1 -0
  217. package/dist/server/server/worktree-errors.d.ts +12 -0
  218. package/dist/server/server/worktree-errors.d.ts.map +1 -0
  219. package/dist/server/server/worktree-errors.js +31 -0
  220. package/dist/server/server/worktree-errors.js.map +1 -0
  221. package/dist/server/server/worktree-session.d.ts +56 -70
  222. package/dist/server/server/worktree-session.d.ts.map +1 -1
  223. package/dist/server/server/worktree-session.js +176 -251
  224. package/dist/server/server/worktree-session.js.map +1 -1
  225. package/dist/server/services/github-service.d.ts +225 -0
  226. package/dist/server/services/github-service.d.ts.map +1 -0
  227. package/dist/server/services/github-service.js +1381 -0
  228. package/dist/server/services/github-service.js.map +1 -0
  229. package/dist/server/shared/messages.d.ts +29408 -12268
  230. package/dist/server/shared/messages.d.ts.map +1 -1
  231. package/dist/server/shared/messages.js +391 -65
  232. package/dist/server/shared/messages.js.map +1 -1
  233. package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -0
  234. package/dist/server/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  235. package/dist/server/terminal/terminal-manager.d.ts +9 -0
  236. package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
  237. package/dist/server/terminal/terminal-manager.js +27 -0
  238. package/dist/server/terminal/terminal-manager.js.map +1 -1
  239. package/dist/server/terminal/terminal-output-coalescer.d.ts +30 -0
  240. package/dist/server/terminal/terminal-output-coalescer.d.ts.map +1 -0
  241. package/dist/server/terminal/terminal-output-coalescer.js +55 -0
  242. package/dist/server/terminal/terminal-output-coalescer.js.map +1 -0
  243. package/dist/server/terminal/terminal.d.ts +32 -1
  244. package/dist/server/terminal/terminal.d.ts.map +1 -1
  245. package/dist/server/terminal/terminal.js +397 -17
  246. package/dist/server/terminal/terminal.js.map +1 -1
  247. package/dist/server/utils/checkout-git.d.ts +63 -10
  248. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  249. package/dist/server/utils/checkout-git.js +321 -229
  250. package/dist/server/utils/checkout-git.js.map +1 -1
  251. package/dist/server/utils/promise-timeout.d.ts +9 -0
  252. package/dist/server/utils/promise-timeout.d.ts.map +1 -0
  253. package/dist/server/utils/promise-timeout.js +25 -0
  254. package/dist/server/utils/promise-timeout.js.map +1 -0
  255. package/dist/server/utils/script-hostname.d.ts +8 -0
  256. package/dist/server/utils/script-hostname.d.ts.map +1 -0
  257. package/dist/server/utils/script-hostname.js +14 -0
  258. package/dist/server/utils/script-hostname.js.map +1 -0
  259. package/dist/server/utils/string-command-shell.d.ts +10 -0
  260. package/dist/server/utils/string-command-shell.d.ts.map +1 -0
  261. package/dist/server/utils/string-command-shell.js +21 -0
  262. package/dist/server/utils/string-command-shell.js.map +1 -0
  263. package/dist/server/utils/worktree.d.ts +54 -7
  264. package/dist/server/utils/worktree.d.ts.map +1 -1
  265. package/dist/server/utils/worktree.js +434 -129
  266. package/dist/server/utils/worktree.js.map +1 -1
  267. package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -0
  268. package/dist/src/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  269. package/package.json +11 -14
  270. package/dist/server/server/agent/providers/pi-acp-agent.d.ts +0 -28
  271. package/dist/server/server/agent/providers/pi-acp-agent.d.ts.map +0 -1
  272. package/dist/server/server/agent/providers/pi-acp-agent.js +0 -302
  273. package/dist/server/server/agent/providers/pi-acp-agent.js.map +0 -1
@@ -0,0 +1,121 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { promises as fs } from "node:fs";
3
+ import path from "node:path";
4
+ import { createPersistedProjectRecord, createPersistedWorkspaceRecord, } from "./workspace-registry.js";
5
+ class FileBackedRegistry {
6
+ constructor(options) {
7
+ this.loaded = false;
8
+ this.cache = new Map();
9
+ this.persistQueue = Promise.resolve();
10
+ this.filePath = options.filePath;
11
+ this.schema = options.schema;
12
+ this.getId = options.getId;
13
+ this.logger = options.logger.child({
14
+ module: "workspace-registry",
15
+ component: options.component,
16
+ });
17
+ }
18
+ async initialize() {
19
+ await this.load();
20
+ }
21
+ async existsOnDisk() {
22
+ try {
23
+ await fs.access(this.filePath);
24
+ return true;
25
+ }
26
+ catch {
27
+ return false;
28
+ }
29
+ }
30
+ async list() {
31
+ await this.load();
32
+ return Array.from(this.cache.values());
33
+ }
34
+ async get(id) {
35
+ await this.load();
36
+ return this.cache.get(id) ?? null;
37
+ }
38
+ async upsert(record) {
39
+ await this.load();
40
+ const parsed = this.schema(record);
41
+ this.cache.set(this.getId(parsed), parsed);
42
+ await this.enqueuePersist();
43
+ }
44
+ async archive(id, archivedAt) {
45
+ await this.load();
46
+ const existing = this.cache.get(id);
47
+ if (!existing) {
48
+ return;
49
+ }
50
+ const next = this.schema({
51
+ ...existing,
52
+ updatedAt: archivedAt,
53
+ archivedAt,
54
+ });
55
+ this.cache.set(id, next);
56
+ await this.enqueuePersist();
57
+ }
58
+ async remove(id) {
59
+ await this.load();
60
+ if (!this.cache.delete(id)) {
61
+ return;
62
+ }
63
+ await this.enqueuePersist();
64
+ }
65
+ async load() {
66
+ if (this.loaded) {
67
+ return;
68
+ }
69
+ this.cache.clear();
70
+ try {
71
+ const raw = await fs.readFile(this.filePath, "utf8");
72
+ const parsed = JSON.parse(raw);
73
+ for (const record of parsed) {
74
+ const validated = this.schema(record);
75
+ this.cache.set(this.getId(validated), validated);
76
+ }
77
+ }
78
+ catch (error) {
79
+ const code = error.code;
80
+ if (code !== "ENOENT") {
81
+ this.logger.error({ err: error, filePath: this.filePath }, "Failed to load registry file");
82
+ }
83
+ }
84
+ this.loaded = true;
85
+ }
86
+ async persist() {
87
+ const records = Array.from(this.cache.values());
88
+ await fs.mkdir(path.dirname(this.filePath), { recursive: true });
89
+ const tempPath = `${this.filePath}.${process.pid}.${Date.now()}.${randomUUID()}.tmp`;
90
+ await fs.writeFile(tempPath, JSON.stringify(records, null, 2), "utf8");
91
+ await fs.rename(tempPath, this.filePath);
92
+ }
93
+ async enqueuePersist() {
94
+ const nextPersist = this.persistQueue.then(() => this.persist());
95
+ this.persistQueue = nextPersist.catch(() => { });
96
+ await nextPersist;
97
+ }
98
+ }
99
+ export class FileBackedProjectRegistry extends FileBackedRegistry {
100
+ constructor(filePath, logger) {
101
+ super({
102
+ filePath,
103
+ logger,
104
+ schema: (record) => createPersistedProjectRecord(record),
105
+ getId: (record) => record.projectId,
106
+ component: "projects",
107
+ });
108
+ }
109
+ }
110
+ export class FileBackedWorkspaceRegistry extends FileBackedRegistry {
111
+ constructor(filePath, logger) {
112
+ super({
113
+ filePath,
114
+ logger,
115
+ schema: (record) => createPersistedWorkspaceRecord(record),
116
+ getId: (record) => record.workspaceId,
117
+ component: "workspaces",
118
+ });
119
+ }
120
+ }
121
+ //# sourceMappingURL=workspace-registry.test-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-registry.test-helpers.js","sourceRoot":"","sources":["../../../src/server/workspace-registry.test-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface ScriptRuntimeEntry {
2
+ workspaceId: string;
3
+ scriptName: string;
4
+ type: "script" | "service";
5
+ lifecycle: "running" | "stopped";
6
+ terminalId: string;
7
+ exitCode: number | null;
8
+ }
9
+ type RuntimeEntryKey = {
10
+ workspaceId: string;
11
+ scriptName: string;
12
+ };
13
+ export declare class WorkspaceScriptRuntimeStore {
14
+ private readonly entries;
15
+ private readonly scriptsByWorkspace;
16
+ get(key: RuntimeEntryKey): ScriptRuntimeEntry | null;
17
+ set(entry: ScriptRuntimeEntry): void;
18
+ remove(key: RuntimeEntryKey): void;
19
+ listForWorkspace(workspaceId: string): ScriptRuntimeEntry[];
20
+ removeForWorkspace(workspaceId: string): void;
21
+ isRunning(key: RuntimeEntryKey): boolean;
22
+ private addScriptToWorkspaceIndex;
23
+ private removeScriptFromWorkspaceIndex;
24
+ private toEntryKey;
25
+ private toWorkspaceKey;
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=workspace-script-runtime-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-script-runtime-store.d.ts","sourceRoot":"","sources":["../../../src/server/workspace-script-runtime-store.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,KAAK,eAAe,GAAG;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAkC;IAErE,GAAG,CAAC,GAAG,EAAE,eAAe,GAAG,kBAAkB,GAAG,IAAI;IAKpD,GAAG,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAYpC,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAWlC,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAqB3D,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAO7C,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO;IAIxC,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,8BAA8B;IAatC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,cAAc;CAGvB"}
@@ -0,0 +1,78 @@
1
+ export class WorkspaceScriptRuntimeStore {
2
+ constructor() {
3
+ this.entries = new Map();
4
+ this.scriptsByWorkspace = new Map();
5
+ }
6
+ get(key) {
7
+ const entry = this.entries.get(this.toEntryKey(key));
8
+ return entry ? { ...entry } : null;
9
+ }
10
+ set(entry) {
11
+ const workspaceKey = this.toWorkspaceKey(entry.workspaceId);
12
+ const entryKey = this.toEntryKey(entry);
13
+ const previous = this.entries.get(entryKey);
14
+ if (previous) {
15
+ this.removeScriptFromWorkspaceIndex(previous.workspaceId, previous.scriptName);
16
+ }
17
+ this.entries.set(entryKey, { ...entry });
18
+ this.addScriptToWorkspaceIndex(workspaceKey, entry.scriptName);
19
+ }
20
+ remove(key) {
21
+ const entryKey = this.toEntryKey(key);
22
+ const existing = this.entries.get(entryKey);
23
+ if (!existing) {
24
+ return;
25
+ }
26
+ this.entries.delete(entryKey);
27
+ this.removeScriptFromWorkspaceIndex(existing.workspaceId, existing.scriptName);
28
+ }
29
+ listForWorkspace(workspaceId) {
30
+ const scriptNames = this.scriptsByWorkspace.get(this.toWorkspaceKey(workspaceId));
31
+ if (!scriptNames) {
32
+ return [];
33
+ }
34
+ const entries = [];
35
+ for (const scriptName of scriptNames) {
36
+ const entry = this.entries.get(this.toEntryKey({
37
+ workspaceId,
38
+ scriptName,
39
+ }));
40
+ if (entry) {
41
+ entries.push({ ...entry });
42
+ }
43
+ }
44
+ return entries;
45
+ }
46
+ removeForWorkspace(workspaceId) {
47
+ for (const entry of this.listForWorkspace(workspaceId)) {
48
+ this.entries.delete(this.toEntryKey(entry));
49
+ }
50
+ this.scriptsByWorkspace.delete(this.toWorkspaceKey(workspaceId));
51
+ }
52
+ isRunning(key) {
53
+ return this.get(key)?.lifecycle === "running";
54
+ }
55
+ addScriptToWorkspaceIndex(workspaceKey, scriptName) {
56
+ const scripts = this.scriptsByWorkspace.get(workspaceKey) ?? new Set();
57
+ scripts.add(scriptName);
58
+ this.scriptsByWorkspace.set(workspaceKey, scripts);
59
+ }
60
+ removeScriptFromWorkspaceIndex(workspaceId, scriptName) {
61
+ const workspaceKey = this.toWorkspaceKey(workspaceId);
62
+ const scripts = this.scriptsByWorkspace.get(workspaceKey);
63
+ if (!scripts) {
64
+ return;
65
+ }
66
+ scripts.delete(scriptName);
67
+ if (scripts.size === 0) {
68
+ this.scriptsByWorkspace.delete(workspaceKey);
69
+ }
70
+ }
71
+ toEntryKey(key) {
72
+ return `${this.toWorkspaceKey(key.workspaceId)}::${key.scriptName}`;
73
+ }
74
+ toWorkspaceKey(workspaceId) {
75
+ return workspaceId;
76
+ }
77
+ }
78
+ //# sourceMappingURL=workspace-script-runtime-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-script-runtime-store.js","sourceRoot":"","sources":["../../../src/server/workspace-script-runtime-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface WorkspaceServicePeer {
2
+ scriptName: string;
3
+ port: number;
4
+ }
5
+ export interface BuildWorkspaceServiceEnvOptions {
6
+ scriptName: string;
7
+ projectSlug: string;
8
+ branchName: string | null;
9
+ daemonPort: number | null | undefined;
10
+ daemonListenHost: string | null | undefined;
11
+ peers: readonly WorkspaceServicePeer[];
12
+ }
13
+ export declare function normalizeServiceEnvName(scriptName: string): string;
14
+ export declare function buildWorkspaceServiceEnv(options: BuildWorkspaceServiceEnvOptions): Record<string, string>;
15
+ export declare function resolveServiceBindHost(daemonListenHost: string | null | undefined): string;
16
+ export declare function assertNoServiceEnvNameCollisions(scriptNames: readonly string[]): void;
17
+ //# sourceMappingURL=workspace-service-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-service-env.d.ts","sourceRoot":"","sources":["../../../src/server/workspace-service-env.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACxC;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,+BAA+B,GACvC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsCxB;AAED,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAE1F;AAgCD,wBAAgB,gCAAgC,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAoBrF"}
@@ -0,0 +1,80 @@
1
+ import { buildScriptHostname } from "../utils/script-hostname.js";
2
+ export function normalizeServiceEnvName(scriptName) {
3
+ return scriptName
4
+ .toUpperCase()
5
+ .replace(/[^A-Z0-9]+/g, "_")
6
+ .replace(/^_+|_+$/g, "");
7
+ }
8
+ export function buildWorkspaceServiceEnv(options) {
9
+ const scriptNames = options.peers.map((peer) => peer.scriptName);
10
+ assertNoServiceEnvNameCollisions(scriptNames);
11
+ const selfPeer = options.peers.find((peer) => peer.scriptName === options.scriptName);
12
+ if (!selfPeer) {
13
+ throw new Error(`Service '${options.scriptName}' is missing from workspace service peers`);
14
+ }
15
+ const env = {
16
+ HOST: resolveServiceBindHost(options.daemonListenHost),
17
+ PASEO_PORT: String(selfPeer.port),
18
+ };
19
+ if (options.daemonPort !== null && options.daemonPort !== undefined) {
20
+ env.PASEO_URL = buildServiceProxyUrl({
21
+ projectSlug: options.projectSlug,
22
+ branchName: options.branchName,
23
+ scriptName: options.scriptName,
24
+ daemonPort: options.daemonPort,
25
+ });
26
+ }
27
+ for (const peer of options.peers) {
28
+ const envName = normalizeServiceEnvName(peer.scriptName);
29
+ env[`PASEO_SERVICE_${envName}_PORT`] = String(peer.port);
30
+ if (options.daemonPort !== null && options.daemonPort !== undefined) {
31
+ env[`PASEO_SERVICE_${envName}_URL`] = buildServiceProxyUrl({
32
+ projectSlug: options.projectSlug,
33
+ branchName: options.branchName,
34
+ scriptName: peer.scriptName,
35
+ daemonPort: options.daemonPort,
36
+ });
37
+ }
38
+ }
39
+ return env;
40
+ }
41
+ export function resolveServiceBindHost(daemonListenHost) {
42
+ return isLoopbackListenHost(daemonListenHost) ? "127.0.0.1" : "0.0.0.0";
43
+ }
44
+ function buildServiceProxyUrl(options) {
45
+ const hostname = buildScriptHostname({
46
+ projectSlug: options.projectSlug,
47
+ branchName: options.branchName,
48
+ scriptName: options.scriptName,
49
+ });
50
+ return `http://${hostname}:${options.daemonPort}`;
51
+ }
52
+ function isLoopbackListenHost(host) {
53
+ if (!host) {
54
+ return true;
55
+ }
56
+ const normalizedHost = host.trim().toLowerCase();
57
+ return (normalizedHost === "localhost" ||
58
+ normalizedHost === "127.0.0.1" ||
59
+ normalizedHost === "::1" ||
60
+ normalizedHost === "[::1]");
61
+ }
62
+ export function assertNoServiceEnvNameCollisions(scriptNames) {
63
+ const scriptNamesByEnvName = new Map();
64
+ for (const scriptName of scriptNames) {
65
+ const envName = normalizeServiceEnvName(scriptName);
66
+ const namesForEnvName = scriptNamesByEnvName.get(envName) ?? [];
67
+ namesForEnvName.push(scriptName);
68
+ scriptNamesByEnvName.set(envName, namesForEnvName);
69
+ }
70
+ const collisions = [];
71
+ for (const [envName, scriptNames] of scriptNamesByEnvName) {
72
+ if (scriptNames.length > 1) {
73
+ collisions.push(`Service env name collision for ${envName}: ${scriptNames.join(", ")}`);
74
+ }
75
+ }
76
+ if (collisions.length > 0) {
77
+ throw new Error(collisions.join("; "));
78
+ }
79
+ }
80
+ //# sourceMappingURL=workspace-service-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-service-env.js","sourceRoot":"","sources":["../../../src/server/workspace-service-env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ interface WorkspaceServicePortDeclaration {
2
+ scriptName: string;
3
+ port?: number;
4
+ }
5
+ interface EnsureWorkspaceServicePortPlanOptions {
6
+ workspaceId: string;
7
+ services: readonly WorkspaceServicePortDeclaration[];
8
+ allocatePort: () => Promise<number>;
9
+ }
10
+ interface RefreshWorkspaceServicePortOptions {
11
+ workspaceId: string;
12
+ service: WorkspaceServicePortDeclaration;
13
+ allocatePort: () => Promise<number>;
14
+ }
15
+ export declare function ensureWorkspaceServicePortPlan(options: EnsureWorkspaceServicePortPlanOptions): Promise<ReadonlyMap<string, number>>;
16
+ export declare function requirePlannedWorkspaceServicePort(plan: ReadonlyMap<string, number>, scriptName: string): number;
17
+ export declare function refreshWorkspaceServicePort(options: RefreshWorkspaceServicePortOptions): Promise<number>;
18
+ export {};
19
+ //# sourceMappingURL=workspace-service-port-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-service-port-registry.d.ts","sourceRoot":"","sources":["../../../src/server/workspace-service-port-registry.ts"],"names":[],"mappings":"AAAA,UAAU,+BAA+B;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,qCAAqC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACrD,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC;AAED,UAAU,kCAAkC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,+BAA+B,CAAC;IACzC,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC;AAKD,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,qCAAqC,GAC7C,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiBtC;AAED,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,UAAU,EAAE,MAAM,GACjB,MAAM,CAMR;AA+BD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,kCAAkC,GAC1C,OAAO,CAAC,MAAM,CAAC,CAOjB"}
@@ -0,0 +1,59 @@
1
+ const workspaceServicePortPlans = new Map();
2
+ const pendingWorkspaceServicePortPlans = new Map();
3
+ export async function ensureWorkspaceServicePortPlan(options) {
4
+ const existingPlan = workspaceServicePortPlans.get(options.workspaceId);
5
+ if (existingPlan) {
6
+ return new Map(existingPlan);
7
+ }
8
+ let pendingPlan = pendingWorkspaceServicePortPlans.get(options.workspaceId);
9
+ if (!pendingPlan) {
10
+ pendingPlan = createPendingWorkspaceServicePortPlan({
11
+ workspaceId: options.workspaceId,
12
+ services: options.services,
13
+ allocatePort: options.allocatePort,
14
+ });
15
+ pendingWorkspaceServicePortPlans.set(options.workspaceId, pendingPlan);
16
+ }
17
+ return new Map(await pendingPlan);
18
+ }
19
+ export function requirePlannedWorkspaceServicePort(plan, scriptName) {
20
+ const port = plan.get(scriptName);
21
+ if (port === undefined) {
22
+ throw new Error(`Service '${scriptName}' is missing from workspace service port plan`);
23
+ }
24
+ return port;
25
+ }
26
+ async function createPendingWorkspaceServicePortPlan(options) {
27
+ try {
28
+ const plan = await buildWorkspaceServicePortPlan({
29
+ services: options.services,
30
+ allocatePort: options.allocatePort,
31
+ });
32
+ workspaceServicePortPlans.set(options.workspaceId, plan);
33
+ return plan;
34
+ }
35
+ finally {
36
+ pendingWorkspaceServicePortPlans.delete(options.workspaceId);
37
+ }
38
+ }
39
+ async function buildWorkspaceServicePortPlan(options) {
40
+ const plan = new Map();
41
+ for (const service of options.services) {
42
+ plan.set(service.scriptName, await resolveServicePort(service, options.allocatePort));
43
+ }
44
+ return plan;
45
+ }
46
+ export async function refreshWorkspaceServicePort(options) {
47
+ const plan = workspaceServicePortPlans.get(options.workspaceId) ?? new Map();
48
+ const port = await resolveServicePort(options.service, options.allocatePort);
49
+ plan.set(options.service.scriptName, port);
50
+ workspaceServicePortPlans.set(options.workspaceId, plan);
51
+ return port;
52
+ }
53
+ async function resolveServicePort(service, allocatePort) {
54
+ if (service.port !== undefined) {
55
+ return service.port;
56
+ }
57
+ return await allocatePort();
58
+ }
59
+ //# sourceMappingURL=workspace-service-port-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-service-port-registry.js","sourceRoot":"","sources":["../../../src/server/workspace-service-port-registry.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import type { Logger } from "pino";
2
2
  import type { TerminalManager } from "../terminal/terminal-manager.js";
3
- import { type WorktreeConfig } from "../utils/worktree.js";
4
- import type { AgentTimelineItem } from "./agent/agent-sdk-types.js";
3
+ import { runWorktreeSetupCommands, type WorktreeConfig, type WorktreeSetupCommandResult } from "../utils/worktree.js";
4
+ import { type ScriptRouteStore } from "./script-proxy.js";
5
+ import type { WorkspaceScriptRuntimeStore } from "./workspace-script-runtime-store.js";
6
+ import type { AgentTimelineItem, ToolCallDetail } from "./agent/agent-sdk-types.js";
5
7
  export interface WorktreeBootstrapTerminalResult {
6
8
  name: string | null;
7
9
  command: string;
@@ -12,18 +14,61 @@ export interface WorktreeBootstrapTerminalResult {
12
14
  export interface RunAsyncWorktreeBootstrapOptions {
13
15
  agentId: string;
14
16
  worktree: WorktreeConfig;
17
+ shouldBootstrap?: boolean;
15
18
  terminalManager: TerminalManager | null;
16
19
  appendTimelineItem: (item: AgentTimelineItem) => Promise<boolean>;
17
20
  emitLiveTimelineItem?: (item: AgentTimelineItem) => Promise<boolean>;
18
21
  logger?: Logger;
19
22
  }
20
- export interface CreateAgentWorktreeOptions {
21
- cwd: string;
22
- branchName: string;
23
- baseBranch: string;
24
- worktreeSlug: string;
25
- paseoHome?: string;
26
- }
27
- export declare function createAgentWorktree(options: CreateAgentWorktreeOptions): Promise<WorktreeConfig>;
23
+ type MiddleTruncationAccumulator = {
24
+ totalBytes: number;
25
+ head: string;
26
+ tail: string;
27
+ truncated: boolean;
28
+ };
29
+ export type WorktreeSetupOutputAccumulator = MiddleTruncationAccumulator;
30
+ export type WorktreeSetupProgressAccumulator = {
31
+ resultsByIndex: Map<number, WorktreeSetupCommandResult>;
32
+ outputAccumulatorsByIndex: Map<number, WorktreeSetupOutputAccumulator>;
33
+ };
34
+ export declare function createWorktreeSetupOutputAccumulator(): WorktreeSetupOutputAccumulator;
35
+ export declare function appendWorktreeSetupOutputAccumulator(accumulator: WorktreeSetupOutputAccumulator, chunk: string): void;
36
+ export declare function createWorktreeSetupProgressAccumulator(): WorktreeSetupProgressAccumulator;
37
+ export declare function applyWorktreeSetupProgressEvent(accumulator: WorktreeSetupProgressAccumulator, event: Parameters<NonNullable<Parameters<typeof runWorktreeSetupCommands>[0]["onEvent"]>>[0]): void;
38
+ export declare function getWorktreeSetupProgressResults(accumulator: WorktreeSetupProgressAccumulator): WorktreeSetupCommandResult[];
39
+ export declare function buildWorktreeSetupDetail(input: {
40
+ worktree: WorktreeConfig;
41
+ results: WorktreeSetupCommandResult[];
42
+ outputAccumulatorsByIndex?: Map<number, WorktreeSetupOutputAccumulator>;
43
+ }): Extract<ToolCallDetail, {
44
+ type: "worktree_setup";
45
+ }>;
28
46
  export declare function runAsyncWorktreeBootstrap(options: RunAsyncWorktreeBootstrapOptions): Promise<void>;
47
+ export interface WorktreeScriptResult {
48
+ scriptName: string;
49
+ hostname: string | null;
50
+ port: number | null;
51
+ terminalId: string;
52
+ }
53
+ interface SpawnWorkspaceScriptOptions {
54
+ repoRoot: string;
55
+ workspaceId: string;
56
+ projectSlug: string;
57
+ branchName: string | null;
58
+ scriptName: string;
59
+ daemonPort?: number | null;
60
+ daemonListenHost?: string | null;
61
+ routeStore: ScriptRouteStore;
62
+ runtimeStore: WorkspaceScriptRuntimeStore;
63
+ terminalManager: TerminalManager;
64
+ logger?: Logger;
65
+ onLifecycleChanged?: () => void;
66
+ }
67
+ export declare function spawnWorkspaceScript(options: SpawnWorkspaceScriptOptions): Promise<WorktreeScriptResult>;
68
+ export declare function teardownWorktreeScripts(options: {
69
+ hostnames: string[];
70
+ routeStore: ScriptRouteStore;
71
+ logger: Logger;
72
+ }): void;
73
+ export {};
29
74
  //# sourceMappingURL=worktree-bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-bootstrap.d.ts","sourceRoot":"","sources":["../../../src/server/worktree-bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGvE,OAAO,EAOL,KAAK,cAAc,EAGpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;IACzB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,kBAAkB,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqHD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,cAAc,CAAC,CAsBzB;AAiVD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,IAAI,CAAC,CAmIf"}
1
+ {"version":3,"file":"worktree-bootstrap.d.ts","sourceRoot":"","sources":["../../../src/server/worktree-bootstrap.ts"],"names":[],"mappings":"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"}