@cluesmith/codev 2.0.6 → 2.0.7

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 (181) hide show
  1. package/dashboard/dist/assets/{index-B-s8BA2l.js → index-BblS3DWL.js} +30 -30
  2. package/dashboard/dist/assets/index-BblS3DWL.js.map +1 -0
  3. package/dashboard/dist/assets/index-Cr9PyjqX.css +32 -0
  4. package/dashboard/dist/index.html +2 -2
  5. package/dist/agent-farm/cli.d.ts.map +1 -1
  6. package/dist/agent-farm/cli.js +23 -48
  7. package/dist/agent-farm/cli.js.map +1 -1
  8. package/dist/agent-farm/commands/architect.d.ts +5 -5
  9. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  10. package/dist/agent-farm/commands/architect.js +37 -20
  11. package/dist/agent-farm/commands/architect.js.map +1 -1
  12. package/dist/agent-farm/commands/attach.d.ts.map +1 -1
  13. package/dist/agent-farm/commands/attach.js +1 -21
  14. package/dist/agent-farm/commands/attach.js.map +1 -1
  15. package/dist/agent-farm/commands/cleanup.d.ts +12 -0
  16. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  17. package/dist/agent-farm/commands/cleanup.js +108 -7
  18. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  19. package/dist/agent-farm/commands/spawn-worktree.d.ts +1 -2
  20. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  21. package/dist/agent-farm/commands/spawn-worktree.js +12 -18
  22. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  23. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  24. package/dist/agent-farm/commands/spawn.js +30 -26
  25. package/dist/agent-farm/commands/spawn.js.map +1 -1
  26. package/dist/agent-farm/commands/start.d.ts.map +1 -1
  27. package/dist/agent-farm/commands/start.js +2 -6
  28. package/dist/agent-farm/commands/start.js.map +1 -1
  29. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  30. package/dist/agent-farm/commands/status.js +4 -23
  31. package/dist/agent-farm/commands/status.js.map +1 -1
  32. package/dist/agent-farm/commands/stop.d.ts.map +1 -1
  33. package/dist/agent-farm/commands/stop.js +2 -6
  34. package/dist/agent-farm/commands/stop.js.map +1 -1
  35. package/dist/agent-farm/commands/tower-cloud.d.ts +2 -9
  36. package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -1
  37. package/dist/agent-farm/commands/tower-cloud.js +12 -47
  38. package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
  39. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  40. package/dist/agent-farm/commands/tower.js +6 -23
  41. package/dist/agent-farm/commands/tower.js.map +1 -1
  42. package/dist/agent-farm/db/index.d.ts.map +1 -1
  43. package/dist/agent-farm/db/index.js +52 -2
  44. package/dist/agent-farm/db/index.js.map +1 -1
  45. package/dist/agent-farm/db/schema.d.ts +1 -1
  46. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  47. package/dist/agent-farm/db/schema.js +1 -1
  48. package/dist/agent-farm/lib/cloud-config.d.ts +1 -0
  49. package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -1
  50. package/dist/agent-farm/lib/cloud-config.js +2 -2
  51. package/dist/agent-farm/lib/cloud-config.js.map +1 -1
  52. package/dist/agent-farm/lib/tower-client.d.ts +49 -0
  53. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  54. package/dist/agent-farm/lib/tower-client.js +32 -2
  55. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  56. package/dist/agent-farm/servers/overview.d.ts +47 -1
  57. package/dist/agent-farm/servers/overview.d.ts.map +1 -1
  58. package/dist/agent-farm/servers/overview.js +298 -58
  59. package/dist/agent-farm/servers/overview.js.map +1 -1
  60. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  61. package/dist/agent-farm/servers/tower-instances.js +2 -1
  62. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  63. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  64. package/dist/agent-farm/servers/tower-routes.js +21 -20
  65. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  66. package/dist/agent-farm/servers/tower-server.js +3 -4
  67. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  68. package/dist/agent-farm/servers/tower-terminals.d.ts +1 -1
  69. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  70. package/dist/agent-farm/servers/tower-terminals.js +4 -4
  71. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  72. package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
  73. package/dist/agent-farm/servers/tower-tunnel.js +3 -19
  74. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  75. package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
  76. package/dist/agent-farm/servers/tower-websocket.js +2 -1
  77. package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
  78. package/dist/agent-farm/types.d.ts +1 -1
  79. package/dist/agent-farm/types.d.ts.map +1 -1
  80. package/dist/agent-farm/utils/display.d.ts +8 -0
  81. package/dist/agent-farm/utils/display.d.ts.map +1 -0
  82. package/dist/agent-farm/utils/display.js +26 -0
  83. package/dist/agent-farm/utils/display.js.map +1 -0
  84. package/dist/agent-farm/utils/notifications.d.ts.map +1 -1
  85. package/dist/agent-farm/utils/notifications.js +7 -16
  86. package/dist/agent-farm/utils/notifications.js.map +1 -1
  87. package/dist/agent-farm/utils/server-utils.d.ts +4 -0
  88. package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
  89. package/dist/agent-farm/utils/server-utils.js +20 -0
  90. package/dist/agent-farm/utils/server-utils.js.map +1 -1
  91. package/dist/agent-farm/utils/shell.d.ts +5 -0
  92. package/dist/agent-farm/utils/shell.d.ts.map +1 -1
  93. package/dist/agent-farm/utils/shell.js +15 -11
  94. package/dist/agent-farm/utils/shell.js.map +1 -1
  95. package/dist/cli.d.ts.map +1 -1
  96. package/dist/cli.js +25 -19
  97. package/dist/cli.js.map +1 -1
  98. package/dist/commands/consult/index.d.ts +10 -9
  99. package/dist/commands/consult/index.d.ts.map +1 -1
  100. package/dist/commands/consult/index.js +401 -259
  101. package/dist/commands/consult/index.js.map +1 -1
  102. package/dist/commands/consult/usage-extractor.d.ts +3 -0
  103. package/dist/commands/consult/usage-extractor.d.ts.map +1 -1
  104. package/dist/commands/consult/usage-extractor.js +52 -29
  105. package/dist/commands/consult/usage-extractor.js.map +1 -1
  106. package/dist/commands/porch/index.d.ts.map +1 -1
  107. package/dist/commands/porch/index.js +13 -12
  108. package/dist/commands/porch/index.js.map +1 -1
  109. package/dist/commands/porch/next.d.ts.map +1 -1
  110. package/dist/commands/porch/next.js +7 -18
  111. package/dist/commands/porch/next.js.map +1 -1
  112. package/dist/commands/porch/plan.d.ts.map +1 -1
  113. package/dist/commands/porch/plan.js +17 -2
  114. package/dist/commands/porch/plan.js.map +1 -1
  115. package/dist/commands/porch/prompts.d.ts.map +1 -1
  116. package/dist/commands/porch/prompts.js +6 -3
  117. package/dist/commands/porch/prompts.js.map +1 -1
  118. package/dist/commands/porch/state.d.ts +13 -0
  119. package/dist/commands/porch/state.d.ts.map +1 -1
  120. package/dist/commands/porch/state.js +46 -1
  121. package/dist/commands/porch/state.js.map +1 -1
  122. package/dist/lib/github.d.ts +10 -9
  123. package/dist/lib/github.d.ts.map +1 -1
  124. package/dist/lib/github.js +49 -9
  125. package/dist/lib/github.js.map +1 -1
  126. package/dist/terminal/index.d.ts +2 -0
  127. package/dist/terminal/index.d.ts.map +1 -1
  128. package/dist/terminal/index.js +2 -0
  129. package/dist/terminal/index.js.map +1 -1
  130. package/dist/terminal/pty-manager.js +2 -2
  131. package/dist/terminal/pty-manager.js.map +1 -1
  132. package/dist/terminal/pty-session.js +1 -1
  133. package/dist/terminal/pty-session.js.map +1 -1
  134. package/package.json +1 -1
  135. package/skeleton/.claude/skills/af/SKILL.md +9 -9
  136. package/skeleton/.claude/skills/consult/SKILL.md +55 -38
  137. package/skeleton/.claude/skills/porch/SKILL.md +53 -0
  138. package/skeleton/DEPENDENCIES.md +2 -2
  139. package/skeleton/builders.md +8 -19
  140. package/skeleton/protocol-schema.json +1 -1
  141. package/skeleton/protocols/bugfix/prompts/pr.md +3 -3
  142. package/skeleton/protocols/bugfix/protocol.json +1 -1
  143. package/skeleton/protocols/maintain/consult-types/impl-review.md +72 -0
  144. package/skeleton/protocols/maintain/consult-types/pr-review.md +72 -0
  145. package/skeleton/protocols/maintain/protocol.json +4 -4
  146. package/skeleton/protocols/maintain/protocol.md +3 -3
  147. package/skeleton/protocols/protocol-schema.json +1 -1
  148. package/skeleton/protocols/spir/consult-types/impl-review.md +72 -0
  149. package/skeleton/protocols/spir/consult-types/phase-review.md +72 -0
  150. package/skeleton/protocols/spir/consult-types/pr-review.md +72 -0
  151. package/skeleton/protocols/spir/prompts/plan.md +4 -4
  152. package/skeleton/protocols/spir/prompts/review.md +8 -8
  153. package/skeleton/protocols/spir/prompts/specify.md +6 -6
  154. package/skeleton/protocols/spir/protocol.json +11 -11
  155. package/skeleton/protocols/spir/templates/review.md +2 -2
  156. package/skeleton/protocols/tick/consult-types/impl-review.md +72 -0
  157. package/skeleton/protocols/tick/consult-types/plan-review.md +59 -0
  158. package/skeleton/protocols/tick/consult-types/pr-review.md +72 -0
  159. package/skeleton/protocols/tick/consult-types/spec-review.md +55 -0
  160. package/skeleton/protocols/tick/protocol.json +2 -7
  161. package/skeleton/resources/commands/agent-farm.md +13 -11
  162. package/skeleton/resources/commands/codev.md +0 -35
  163. package/skeleton/resources/commands/consult.md +88 -234
  164. package/skeleton/resources/commands/overview.md +6 -7
  165. package/skeleton/resources/workflow-reference.md +24 -24
  166. package/skeleton/roles/architect.md +17 -21
  167. package/skeleton/roles/builder.md +13 -13
  168. package/skeleton/templates/AGENTS.md +1 -1
  169. package/skeleton/templates/CLAUDE.md +1 -1
  170. package/skeleton/templates/cheatsheet.md +22 -18
  171. package/skeleton/templates/pr-overview.md +5 -5
  172. package/dashboard/dist/assets/index-B-s8BA2l.js.map +0 -1
  173. package/dashboard/dist/assets/index-DB2AxRP7.css +0 -32
  174. package/dist/agent-farm/commands/consult.d.ts +0 -15
  175. package/dist/agent-farm/commands/consult.d.ts.map +0 -1
  176. package/dist/agent-farm/commands/consult.js +0 -39
  177. package/dist/agent-farm/commands/consult.js.map +0 -1
  178. /package/skeleton/{consult-types → protocols/bugfix/consult-types}/impl-review.md +0 -0
  179. /package/skeleton/{consult-types/pr-ready.md → protocols/bugfix/consult-types/pr-review.md} +0 -0
  180. /package/skeleton/{consult-types → protocols/spir/consult-types}/plan-review.md +0 -0
  181. /package/skeleton/{consult-types → protocols/spir/consult-types}/spec-review.md +0 -0
@@ -8,7 +8,8 @@
8
8
  */
9
9
  import fs from 'node:fs';
10
10
  import path from 'node:path';
11
- import { fetchPRList, fetchIssueList, parseLinkedIssue, parseLabelDefaults, } from '../../lib/github.js';
11
+ import { fetchPRList, fetchIssueList, fetchRecentlyClosed, parseLinkedIssue, parseLabelDefaults, } from '../../lib/github.js';
12
+ import { loadProtocol } from '../../commands/porch/protocol.js';
12
13
  /**
13
14
  * Parse a porch status.yaml file into structured data.
14
15
  * Uses line-based parsing (same pattern as gate-status.ts).
@@ -21,47 +22,75 @@ export function parseStatusYaml(content) {
21
22
  phase: '',
22
23
  currentPlanPhase: '',
23
24
  gates: {},
25
+ gateRequestedAt: {},
26
+ planPhases: [],
27
+ startedAt: '',
24
28
  };
25
29
  const lines = content.split('\n');
26
- let inGates = false;
30
+ let section = 'none';
27
31
  let currentGate = '';
32
+ let currentPlanPhase = null;
28
33
  for (const line of lines) {
29
34
  // Top-level scalar fields
30
35
  const idMatch = line.match(/^id:\s*'?(\S+?)'?\s*$/);
31
36
  if (idMatch) {
32
37
  result.id = idMatch[1];
38
+ section = 'none';
33
39
  continue;
34
40
  }
35
41
  const titleMatch = line.match(/^title:\s*(\S.*?)\s*$/);
36
42
  if (titleMatch) {
37
43
  result.title = titleMatch[1];
44
+ section = 'none';
38
45
  continue;
39
46
  }
40
47
  const protocolMatch = line.match(/^protocol:\s*(\S+)/);
41
48
  if (protocolMatch) {
42
49
  result.protocol = protocolMatch[1];
50
+ section = 'none';
43
51
  continue;
44
52
  }
45
53
  const phaseMatch = line.match(/^phase:\s*(\S+)/);
46
54
  if (phaseMatch) {
47
55
  result.phase = phaseMatch[1];
56
+ section = 'none';
48
57
  continue;
49
58
  }
50
59
  const planPhaseMatch = line.match(/^current_plan_phase:\s*(\S+)/);
51
60
  if (planPhaseMatch) {
52
61
  result.currentPlanPhase = planPhaseMatch[1];
62
+ section = 'none';
53
63
  continue;
54
64
  }
55
- // Gates section
65
+ const startedMatch = line.match(/^started_at:\s*'?(.+?)'?\s*$/);
66
+ if (startedMatch) {
67
+ result.startedAt = startedMatch[1];
68
+ section = 'none';
69
+ continue;
70
+ }
71
+ // Section headers
56
72
  if (/^gates:\s*$/.test(line)) {
57
- inGates = true;
73
+ if (currentPlanPhase) {
74
+ pushPlanPhase(result, currentPlanPhase);
75
+ currentPlanPhase = null;
76
+ }
77
+ section = 'gates';
78
+ continue;
79
+ }
80
+ if (/^plan_phases:\s*$/.test(line)) {
81
+ section = 'plan_phases';
58
82
  continue;
59
83
  }
60
- // Stop gates section at next top-level key
61
- if (inGates && /^\S/.test(line) && line.trim() !== '') {
62
- inGates = false;
84
+ // Stop section at next top-level key
85
+ if (/^\S/.test(line) && line.trim() !== '') {
86
+ if (currentPlanPhase) {
87
+ pushPlanPhase(result, currentPlanPhase);
88
+ currentPlanPhase = null;
89
+ }
90
+ section = 'none';
63
91
  }
64
- if (inGates) {
92
+ // Gates section
93
+ if (section === 'gates') {
65
94
  const gateNameMatch = line.match(/^\s{2}(\S+):\s*$/);
66
95
  if (gateNameMatch) {
67
96
  currentGate = gateNameMatch[1];
@@ -71,10 +100,144 @@ export function parseStatusYaml(content) {
71
100
  if (statusMatch && currentGate) {
72
101
  result.gates[currentGate] = statusMatch[1];
73
102
  }
103
+ const requestedMatch = line.match(/^\s{4}requested_at:\s*'?(.+?)'?\s*$/);
104
+ if (requestedMatch && currentGate) {
105
+ const val = requestedMatch[1];
106
+ if (val !== 'null' && val !== '~') {
107
+ result.gateRequestedAt[currentGate] = val;
108
+ }
109
+ }
74
110
  }
111
+ // Plan phases section
112
+ if (section === 'plan_phases') {
113
+ const itemIdMatch = line.match(/^\s{2}-\s+id:\s*(\S+)/);
114
+ if (itemIdMatch) {
115
+ if (currentPlanPhase) {
116
+ pushPlanPhase(result, currentPlanPhase);
117
+ }
118
+ currentPlanPhase = { id: itemIdMatch[1] };
119
+ continue;
120
+ }
121
+ const itemTitleMatch = line.match(/^\s{4}title:\s*(.+?)\s*$/);
122
+ if (itemTitleMatch && currentPlanPhase) {
123
+ currentPlanPhase.title = itemTitleMatch[1];
124
+ continue;
125
+ }
126
+ const itemStatusMatch = line.match(/^\s{4}status:\s*(\S+)/);
127
+ if (itemStatusMatch && currentPlanPhase) {
128
+ currentPlanPhase.status = itemStatusMatch[1];
129
+ continue;
130
+ }
131
+ }
132
+ }
133
+ // Flush last plan phase if we were in that section
134
+ if (currentPlanPhase) {
135
+ pushPlanPhase(result, currentPlanPhase);
75
136
  }
76
137
  return result;
77
138
  }
139
+ function pushPlanPhase(result, partial) {
140
+ if (partial.id) {
141
+ result.planPhases.push({
142
+ id: partial.id,
143
+ title: partial.title || '',
144
+ status: partial.status || 'pending',
145
+ });
146
+ }
147
+ }
148
+ // =============================================================================
149
+ // Progress and blocked detection
150
+ // =============================================================================
151
+ /**
152
+ * Calculate progress percentage (0-100) based on protocol phase.
153
+ *
154
+ * SPIR/spider: nuanced sub-progress with gate awareness and plan phase tracking.
155
+ * Other protocols: even split derived from protocol.json phases array.
156
+ */
157
+ export function calculateProgress(parsed, workspaceRoot) {
158
+ const protocol = parsed.protocol;
159
+ if (protocol === 'spir' || protocol === 'spider') {
160
+ return calculateSpirProgress(parsed);
161
+ }
162
+ if (!protocol || !workspaceRoot)
163
+ return 0;
164
+ // Load phase list dynamically from protocol.json
165
+ const phases = loadProtocolPhases(workspaceRoot, protocol);
166
+ if (!phases)
167
+ return 0;
168
+ return calculateEvenProgress(parsed.phase, phases);
169
+ }
170
+ function calculateSpirProgress(parsed) {
171
+ const gateRequested = (gate) => parsed.gates[gate] === 'pending' && !!parsed.gateRequestedAt[gate];
172
+ switch (parsed.phase) {
173
+ case 'specify':
174
+ return gateRequested('spec-approval') ? 20 : 10;
175
+ case 'plan':
176
+ return gateRequested('plan-approval') ? 45 : 35;
177
+ case 'implement': {
178
+ const total = parsed.planPhases.length;
179
+ if (total === 0)
180
+ return 70;
181
+ const completed = parsed.planPhases.filter(p => p.status === 'complete').length;
182
+ return 50 + Math.round((completed / total) * 40);
183
+ }
184
+ case 'review':
185
+ return gateRequested('pr') ? 95 : 92;
186
+ case 'complete':
187
+ return 100;
188
+ default:
189
+ return 0;
190
+ }
191
+ }
192
+ /**
193
+ * Even-split progress for protocols with fixed phase lists.
194
+ * Each phase gets an equal share of 100%, with 'complete' always = 100.
195
+ */
196
+ export function calculateEvenProgress(phase, phases) {
197
+ if (phase === 'complete')
198
+ return 100;
199
+ const idx = phases.indexOf(phase);
200
+ if (idx === -1)
201
+ return 0;
202
+ return Math.round(((idx + 1) / (phases.length + 1)) * 100);
203
+ }
204
+ /** Cache of protocol phase IDs keyed by protocol name */
205
+ const protocolPhaseCache = new Map();
206
+ /**
207
+ * Load phase IDs from a protocol's protocol.json file.
208
+ * Cached per protocol name for the lifetime of the process.
209
+ */
210
+ function loadProtocolPhases(workspaceRoot, protocolName) {
211
+ const cached = protocolPhaseCache.get(protocolName);
212
+ if (cached)
213
+ return cached;
214
+ try {
215
+ const protocol = loadProtocol(workspaceRoot, protocolName);
216
+ const phases = protocol.phases.map(p => p.id);
217
+ protocolPhaseCache.set(protocolName, phases);
218
+ return phases;
219
+ }
220
+ catch {
221
+ return null;
222
+ }
223
+ }
224
+ /**
225
+ * Detect if a builder is blocked on a gate (requested but not approved).
226
+ * Returns a human-readable label or null.
227
+ */
228
+ export function detectBlocked(parsed) {
229
+ const gateLabels = {
230
+ 'spec-approval': 'spec review',
231
+ 'plan-approval': 'plan review',
232
+ 'pr': 'PR review',
233
+ };
234
+ for (const [gate, label] of Object.entries(gateLabels)) {
235
+ if (parsed.gates[gate] === 'pending' && parsed.gateRequestedAt[gate]) {
236
+ return label;
237
+ }
238
+ }
239
+ return null;
240
+ }
78
241
  // =============================================================================
79
242
  // Builder discovery
80
243
  // =============================================================================
@@ -133,23 +296,22 @@ export function worktreeNameToRoleId(dirName) {
133
296
  * Returns the project dir prefix (to match `{ID}-*`) or null for soft-mode builders.
134
297
  */
135
298
  export function extractProjectIdFromWorktreeName(dirName) {
136
- // SPIR: spir-126-slug → "0126" (zero-padded)
299
+ // SPIR: spir-386-slug → try both "386" and "0386" (porch may or may not zero-pad)
137
300
  const spirMatch = dirName.match(/^spir-(\d+)/);
138
301
  if (spirMatch)
139
- return spirMatch[1].padStart(4, '0');
140
- // TICK: tick-130-slug → "0130" (zero-padded)
302
+ return spirMatch[1];
303
+ // TICK: tick-130-slug → try both "130" and "0130"
141
304
  const tickMatch = dirName.match(/^tick-(\d+)/);
142
305
  if (tickMatch)
143
- return tickMatch[1].padStart(4, '0');
144
- // Bugfix: bugfix-296-slug → "builder-bugfix-296"
145
- // Porch project dirs are created via buildAgentName('bugfix', N) → "builder-bugfix-N"
306
+ return tickMatch[1];
307
+ // Bugfix: bugfix-382-slug → "bugfix-382" (porch uses this, not "builder-bugfix-382")
146
308
  const bugfixMatch = dirName.match(/^bugfix-(\d+)/);
147
309
  if (bugfixMatch)
148
- return `builder-bugfix-${bugfixMatch[1]}`;
310
+ return `bugfix-${bugfixMatch[1]}`;
149
311
  // Legacy numeric: 0110 or 0110-slug → "0110"
150
312
  const numericMatch = dirName.match(/^(\d+)(?:-|$)/);
151
313
  if (numericMatch)
152
- return numericMatch[1].padStart(4, '0');
314
+ return numericMatch[1];
153
315
  // task-NAvW, worktree-foIg → null (soft mode)
154
316
  return null;
155
317
  }
@@ -183,11 +345,19 @@ export function discoverBuilders(workspaceRoot) {
183
345
  mode: 'soft',
184
346
  gates: {},
185
347
  worktreePath,
348
+ protocol: '',
349
+ planPhases: [],
350
+ progress: 0,
351
+ blocked: null,
352
+ startedAt: null,
186
353
  });
187
354
  continue;
188
355
  }
189
356
  const projectsDir = path.join(worktreePath, 'codev', 'projects');
190
- // Try to find matching status.yaml by project ID prefix
357
+ // Try to find matching status.yaml by project ID prefix.
358
+ // Porch may create dirs with or without zero-padding (e.g. "386-slug" or "0386-slug"),
359
+ // and bugfix dirs may be "bugfix-382-slug" or "builder-bugfix-382-slug".
360
+ const paddedId = /^\d+$/.test(projectId) ? projectId.padStart(4, '0') : null;
191
361
  let found = false;
192
362
  if (fs.existsSync(projectsDir)) {
193
363
  try {
@@ -195,7 +365,10 @@ export function discoverBuilders(workspaceRoot) {
195
365
  for (const projEntry of projectEntries) {
196
366
  if (!projEntry.isDirectory())
197
367
  continue;
198
- if (!projEntry.name.startsWith(`${projectId}-`))
368
+ const name = projEntry.name;
369
+ const matches = name.startsWith(`${projectId}-`)
370
+ || (paddedId && name.startsWith(`${paddedId}-`));
371
+ if (!matches)
199
372
  continue;
200
373
  const statusFile = path.join(projectsDir, projEntry.name, 'status.yaml');
201
374
  if (!fs.existsSync(statusFile))
@@ -212,10 +385,17 @@ export function discoverBuilders(workspaceRoot) {
212
385
  id: parsed.id || entry.name,
213
386
  issueNumber: Number.isNaN(issueNumber) ? null : issueNumber,
214
387
  issueTitle: parsed.title || null,
215
- phase: parsed.currentPlanPhase || parsed.phase,
388
+ phase: (parsed.currentPlanPhase && parsed.currentPlanPhase !== 'null')
389
+ ? parsed.currentPlanPhase
390
+ : parsed.phase,
216
391
  mode: 'strict',
217
392
  gates: parsed.gates,
218
393
  worktreePath,
394
+ protocol: parsed.protocol,
395
+ planPhases: parsed.planPhases,
396
+ progress: calculateProgress(parsed, workspaceRoot),
397
+ blocked: detectBlocked(parsed),
398
+ startedAt: parsed.startedAt || null,
219
399
  });
220
400
  found = true;
221
401
  break;
@@ -237,6 +417,11 @@ export function discoverBuilders(workspaceRoot) {
237
417
  mode: 'soft',
238
418
  gates: {},
239
419
  worktreePath,
420
+ protocol: '',
421
+ planPhases: [],
422
+ progress: 0,
423
+ blocked: null,
424
+ startedAt: null,
240
425
  });
241
426
  }
242
427
  }
@@ -246,50 +431,71 @@ export function discoverBuilders(workspaceRoot) {
246
431
  // Backlog derivation
247
432
  // =============================================================================
248
433
  /**
249
- * Derive backlog from open GitHub issues cross-referenced with specs and builders.
434
+ * Scan a codev artifact directory and return a map of issue number → filename.
250
435
  */
251
- export function deriveBacklog(issues, workspaceRoot, activeBuilderIssues, prLinkedIssues) {
252
- const specsDir = path.join(workspaceRoot, 'codev', 'specs');
253
- const specNumbers = new Set();
254
- if (fs.existsSync(specsDir)) {
255
- try {
256
- const files = fs.readdirSync(specsDir);
257
- for (const file of files) {
258
- if (!file.endsWith('.md'))
259
- continue;
260
- const numStr = file.split('-')[0];
261
- const num = parseInt(numStr, 10);
262
- if (!Number.isNaN(num))
263
- specNumbers.add(num);
264
- }
265
- }
266
- catch {
267
- // Silently continue
436
+ function scanArtifactDir(dirPath) {
437
+ const result = new Map();
438
+ if (!fs.existsSync(dirPath))
439
+ return result;
440
+ try {
441
+ const files = fs.readdirSync(dirPath);
442
+ for (const file of files) {
443
+ if (!file.endsWith('.md'))
444
+ continue;
445
+ const numStr = file.split('-')[0];
446
+ const num = parseInt(numStr, 10);
447
+ if (!Number.isNaN(num))
448
+ result.set(num, file);
268
449
  }
269
450
  }
451
+ catch {
452
+ // Silently continue
453
+ }
454
+ return result;
455
+ }
456
+ /**
457
+ * Derive backlog from open GitHub issues cross-referenced with specs and builders.
458
+ */
459
+ export function deriveBacklog(issues, workspaceRoot, activeBuilderIssues, prLinkedIssues) {
460
+ const specFiles = scanArtifactDir(path.join(workspaceRoot, 'codev', 'specs'));
461
+ const planFiles = scanArtifactDir(path.join(workspaceRoot, 'codev', 'plans'));
462
+ const reviewFiles = scanArtifactDir(path.join(workspaceRoot, 'codev', 'reviews'));
270
463
  return issues
271
464
  .filter(issue => !prLinkedIssues.has(issue.number))
272
465
  .map(issue => {
273
- const { type, priority } = parseLabelDefaults(issue.labels);
274
- return {
466
+ const { type, priority } = parseLabelDefaults(issue.labels, issue.title);
467
+ const specFile = specFiles.get(issue.number);
468
+ const planFile = planFiles.get(issue.number);
469
+ const reviewFile = reviewFiles.get(issue.number);
470
+ const item = {
275
471
  number: issue.number,
276
472
  title: issue.title,
473
+ url: issue.url,
277
474
  type,
278
475
  priority,
279
- hasSpec: specNumbers.has(issue.number),
476
+ hasSpec: !!specFile,
477
+ hasPlan: !!planFile,
478
+ hasReview: !!reviewFile,
280
479
  hasBuilder: activeBuilderIssues.has(issue.number),
281
480
  createdAt: issue.createdAt,
282
481
  };
482
+ if (specFile)
483
+ item.specPath = `codev/specs/${specFile}`;
484
+ if (planFile)
485
+ item.planPath = `codev/plans/${planFile}`;
486
+ if (reviewFile)
487
+ item.reviewPath = `codev/reviews/${reviewFile}`;
488
+ return item;
283
489
  });
284
490
  }
285
491
  // =============================================================================
286
492
  // OverviewCache
287
493
  // =============================================================================
288
494
  export class OverviewCache {
289
- prCache = null;
290
- issueCache = null;
291
- lastWorkspaceRoot = null;
292
- TTL = 60_000;
495
+ prCache = new Map();
496
+ issueCache = new Map();
497
+ closedCache = new Map();
498
+ TTL = 30_000;
293
499
  /**
294
500
  * Build the overview response. Aggregates builder state, PRs, and backlog.
295
501
  *
@@ -299,11 +505,6 @@ export class OverviewCache {
299
505
  * (backward-compatible / unit-test friendly).
300
506
  */
301
507
  async getOverview(workspaceRoot, activeBuilderRoleIds) {
302
- // Invalidate cache when workspace changes (prevents cross-workspace stale data)
303
- if (this.lastWorkspaceRoot !== null && this.lastWorkspaceRoot !== workspaceRoot) {
304
- this.invalidate();
305
- }
306
- this.lastWorkspaceRoot = workspaceRoot;
307
508
  const errors = {};
308
509
  // 1. Discover builders from .builders/ directory, then filter to live sessions
309
510
  let builders = discoverBuilders(workspaceRoot);
@@ -326,6 +527,7 @@ export class OverviewCache {
326
527
  pendingPRs = prs.map(pr => ({
327
528
  number: pr.number,
328
529
  title: pr.title,
530
+ url: pr.url,
329
531
  reviewStatus: pr.reviewDecision || 'REVIEW_REQUIRED',
330
532
  linkedIssue: parseLinkedIssue(pr.body || '', pr.title),
331
533
  createdAt: pr.createdAt,
@@ -342,8 +544,31 @@ export class OverviewCache {
342
544
  }
343
545
  else {
344
546
  backlog = deriveBacklog(issues, workspaceRoot, activeBuilderIssues, prLinkedIssues);
547
+ // Enrich builder titles from GitHub issue titles
548
+ // (status.yaml stores a slug, not the human-readable title)
549
+ const issueTitleMap = new Map(issues.map(i => [i.number, i.title]));
550
+ for (const b of builders) {
551
+ if (b.issueNumber !== null && issueTitleMap.has(b.issueNumber)) {
552
+ b.issueTitle = issueTitleMap.get(b.issueNumber);
553
+ }
554
+ }
555
+ }
556
+ // 4. Fetch recently closed issues (cached, scoped to workspace)
557
+ let recentlyClosed = [];
558
+ const closed = await this.fetchRecentlyClosedCached(workspaceRoot);
559
+ if (closed !== null) {
560
+ recentlyClosed = closed.map(issue => {
561
+ const { type } = parseLabelDefaults(issue.labels);
562
+ return {
563
+ number: issue.number,
564
+ title: issue.title,
565
+ url: issue.url,
566
+ type,
567
+ closedAt: issue.closedAt,
568
+ };
569
+ });
345
570
  }
346
- const result = { builders, pendingPRs, backlog };
571
+ const result = { builders, pendingPRs, backlog, recentlyClosed };
347
572
  if (Object.keys(errors).length > 0) {
348
573
  result.errors = errors;
349
574
  }
@@ -353,31 +578,46 @@ export class OverviewCache {
353
578
  * Invalidate all cached data.
354
579
  */
355
580
  invalidate() {
356
- this.prCache = null;
357
- this.issueCache = null;
581
+ this.prCache.clear();
582
+ this.issueCache.clear();
583
+ this.closedCache.clear();
358
584
  }
359
585
  // ===========================================================================
360
586
  // Private cache helpers
361
587
  // ===========================================================================
362
588
  async fetchPRsCached(cwd) {
363
589
  const now = Date.now();
364
- if (this.prCache && (now - this.prCache.fetchedAt) < this.TTL) {
365
- return this.prCache.data;
590
+ const cached = this.prCache.get(cwd);
591
+ if (cached && (now - cached.fetchedAt) < this.TTL) {
592
+ return cached.data;
366
593
  }
367
594
  const data = await fetchPRList(cwd);
368
595
  if (data !== null) {
369
- this.prCache = { data, fetchedAt: now };
596
+ this.prCache.set(cwd, { data, fetchedAt: now });
370
597
  }
371
598
  return data;
372
599
  }
373
600
  async fetchIssuesCached(cwd) {
374
601
  const now = Date.now();
375
- if (this.issueCache && (now - this.issueCache.fetchedAt) < this.TTL) {
376
- return this.issueCache.data;
602
+ const cached = this.issueCache.get(cwd);
603
+ if (cached && (now - cached.fetchedAt) < this.TTL) {
604
+ return cached.data;
377
605
  }
378
606
  const data = await fetchIssueList(cwd);
379
607
  if (data !== null) {
380
- this.issueCache = { data, fetchedAt: now };
608
+ this.issueCache.set(cwd, { data, fetchedAt: now });
609
+ }
610
+ return data;
611
+ }
612
+ async fetchRecentlyClosedCached(cwd) {
613
+ const now = Date.now();
614
+ const cached = this.closedCache.get(cwd);
615
+ if (cached && (now - cached.fetchedAt) < this.TTL) {
616
+ return cached.data;
617
+ }
618
+ const data = await fetchRecentlyClosed(cwd);
619
+ if (data !== null) {
620
+ this.closedCache.set(cwd, { data, fetchedAt: now });
381
621
  }
382
622
  return data;
383
623
  }
@@ -1 +1 @@
1
- {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/overview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/overview.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAoFhE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,MAAM,GAAiB;QAC3B,EAAE,EAAE,EAAE;QACN,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,gBAAgB,EAAE,EAAE;QACpB,KAAK,EAAE,EAAE;QACT,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,OAAO,GAAqC,MAAM,CAAC;IACvD,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,gBAAgB,GAA8B,IAAI,CAAC;IAEvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,0BAA0B;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACpD,IAAI,OAAO,EAAE,CAAC;YAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,GAAG,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAEpE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACvD,IAAI,UAAU,EAAE,CAAC;YAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,GAAG,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAE7E,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACvD,IAAI,aAAa,EAAE,CAAC;YAAC,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,GAAG,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAEtF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACjD,IAAI,UAAU,EAAE,CAAC;YAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,GAAG,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAE7E,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClE,IAAI,cAAc,EAAE,CAAC;YAAC,MAAM,CAAC,gBAAgB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,GAAG,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAEhG,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAChE,IAAI,YAAY,EAAE,CAAC;YAAC,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,GAAG,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAErF,kBAAkB;QAClB,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,gBAAgB,EAAE,CAAC;gBAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBAAC,gBAAgB,GAAG,IAAI,CAAC;YAAC,CAAC;YAC3F,OAAO,GAAG,OAAO,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,aAAa,CAAC;YACxB,SAAS;QACX,CAAC;QAED,qCAAqC;QACrC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3C,IAAI,gBAAgB,EAAE,CAAC;gBAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBAAC,gBAAgB,GAAG,IAAI,CAAC;YAAC,CAAC;YAC3F,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QAED,gBAAgB;QAChB,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACrD,IAAI,aAAa,EAAE,CAAC;gBAClB,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzE,IAAI,cAAc,IAAI,WAAW,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;oBAClC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,gBAAgB,EAAE,CAAC;oBAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBAAC,CAAC;gBAClE,gBAAgB,GAAG,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,SAAS;YACX,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9D,IAAI,cAAc,IAAI,gBAAgB,EAAE,CAAC;gBACvC,gBAAgB,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC5D,IAAI,eAAe,IAAI,gBAAgB,EAAE,CAAC;gBACxC,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBAC7C,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,IAAI,gBAAgB,EAAE,CAAC;QAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAAC,CAAC;IAElE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,MAAoB,EAAE,OAA2B;IACtE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;YACrB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;SACpC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAoB,EAAE,aAAsB;IAC5E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEjC,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa;QAAE,OAAO,CAAC,CAAC;IAE1C,iDAAiD;IACjD,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IAEtB,OAAO,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAoB;IACjD,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CACrC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAErE,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,KAAK,MAAM;YACT,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACvC,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;YAChF,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,KAAK,UAAU;YACb,OAAO,GAAG,CAAC;QACb;YACE,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,MAAgB;IACnE,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,GAAG,CAAC;IACrC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,yDAAyD;AACzD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAoB,CAAC;AAEvD;;;GAGG;AACH,SAAS,kBAAkB,CAAC,aAAqB,EAAE,YAAoB;IACrE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9C,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAoB;IAChD,MAAM,UAAU,GAA2B;QACzC,eAAe,EAAE,aAAa;QAC9B,eAAe,EAAE,aAAa;QAC9B,IAAI,EAAE,WAAW;KAClB,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,yCAAyC;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,SAAS;QAAE,OAAO,gBAAgB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,yCAAyC;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,SAAS;QAAE,OAAO,gBAAgB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,+CAA+C;IAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACjD,IAAI,WAAW;QAAE,OAAO,kBAAkB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnE,sCAAsC;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACnD,IAAI,SAAS;QAAE,OAAO,gBAAgB,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAErD,+DAA+D;IAC/D,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3D,IAAI,aAAa;QAAE,OAAO,YAAY,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzD,6DAA6D;IAC7D,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI,YAAY;QAAE,OAAO,gBAAgB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnE,8DAA8D;IAC9D,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC1D,IAAI,YAAY;QAAE,OAAO,WAAW,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAAe;IAC9D,kFAAkF;IAClF,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/C,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IAEnC,kDAAkD;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/C,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IAEnC,qFAAqF;IACrF,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACnD,IAAI,WAAW;QAAE,OAAO,UAAU,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnD,6CAA6C;IAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACpD,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IAEzC,8CAA8C;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,aAAqB;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IAE3C,MAAM,QAAQ,GAAsB,EAAE,CAAC;IAEvC,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,gCAAgC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,mDAAmD;YACnD,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,KAAK,CAAC,IAAI;gBACd,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,EAAE;gBACT,YAAY;gBACZ,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEjE,yDAAyD;QACzD,uFAAuF;QACvF,yEAAyE;QACzE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5E,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;oBACvC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;wBAAE,SAAS;oBACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;oBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,CAAC;2BAC3C,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;oBACnD,IAAI,CAAC,OAAO;wBAAE,SAAS;oBAEvB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;oBACzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;wBAAE,SAAS;oBAEzC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBACrD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;oBAExC,IAAI,WAAW,GAAkB,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC5E,IAAI,WAAW,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;wBACtD,uEAAuE;wBACvE,MAAM,WAAW,GAAG,MAAM,CAAC,EAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBAC/C,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAClE,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC;wBACZ,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI;wBAC3B,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW;wBAC3D,UAAU,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;wBAChC,KAAK,EAAE,CAAC,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,KAAK,MAAM,CAAC;4BACpE,CAAC,CAAC,MAAM,CAAC,gBAAgB;4BACzB,CAAC,CAAC,MAAM,CAAC,KAAK;wBAChB,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,YAAY;wBACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,QAAQ,EAAE,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC;wBAClD,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;wBAC9B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;qBACpC,CAAC,CAAC;oBACH,KAAK,GAAG,IAAI,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,8EAA8E;YAC9E,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,KAAK,CAAC,IAAI;gBACd,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW;gBAC3D,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,EAAE;gBACT,YAAY;gBACZ,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;GAEG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oBAAoB;IACtB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,MAA6B,EAC7B,aAAqB,EACrB,mBAAgC,EAChC,cAA2B;IAE3B,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAElF,OAAO,MAAM;SACV,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAClD,GAAG,CAAC,KAAK,CAAC,EAAE;QACX,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,IAAI,GAAgB;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,IAAI;YACJ,QAAQ;YACR,OAAO,EAAE,CAAC,CAAC,QAAQ;YACnB,OAAO,EAAE,CAAC,CAAC,QAAQ;YACnB,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;YACjD,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;QACF,IAAI,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,eAAe,QAAQ,EAAE,CAAC;QACxD,IAAI,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,eAAe,QAAQ,EAAE,CAAC;QACxD,IAAI,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,iBAAiB,UAAU,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC;AAED,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,MAAM,OAAO,aAAa;IAChB,OAAO,GAAG,IAAI,GAAG,EAAmD,CAAC;IACrE,UAAU,GAAG,IAAI,GAAG,EAA8D,CAAC;IACnF,WAAW,GAAG,IAAI,GAAG,EAA8D,CAAC;IAC3E,GAAG,GAAG,MAAM,CAAC;IAE9B;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CAAC,aAAqB,EAAE,oBAAkC;QACzE,MAAM,MAAM,GAAsC,EAAE,CAAC;QAErD,+EAA+E;QAC/E,IAAI,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,oBAAoB,EAAE,CAAC;YACzB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBAC7B,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;gBACnE,OAAO,MAAM,KAAK,IAAI,IAAI,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,QAAQ;aACL,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;aACvB,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAC1C,CAAC;QAEF,6CAA6C;QAC7C,IAAI,UAAU,GAAiB,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,GAAG,8CAA8C,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1B,MAAM,EAAE,EAAE,CAAC,MAAM;gBACjB,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,GAAG,EAAE,EAAE,CAAC,GAAG;gBACX,YAAY,EAAE,EAAE,CAAC,cAAc,IAAI,iBAAiB;gBACpD,WAAW,EAAE,gBAAgB,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC;gBACtD,SAAS,EAAE,EAAE,CAAC,SAAS;aACxB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,UAAU;aACP,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC;aACzB,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAC1C,CAAC;QAEF,mEAAmE;QACnE,IAAI,OAAO,GAAkB,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,GAAG,iDAAiD,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC;YAEpF,iDAAiD;YACjD,4DAA4D;YAC5D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/D,CAAC,CAAC,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAE,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,IAAI,cAAc,GAAyB,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;QACnE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAClC,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClD,OAAO;oBACL,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,IAAI;oBACJ,QAAQ,EAAE,KAAK,CAAC,QAAS;iBAC1B,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QAC/E,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,8EAA8E;IAC9E,wBAAwB;IACxB,8EAA8E;IAEtE,KAAK,CAAC,cAAc,CAAC,GAAW;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,MAAM,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClD,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,GAAW;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,MAAM,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClD,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,GAAW;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClD,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"tower-instances.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-instances.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAY1F,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACpD,kBAAkB,EAAE,MAAM,eAAe,CAAC;IAC1C,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,0DAA0D;IAC1D,0BAA0B,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAC1E,+CAA+C;IAC/C,mBAAmB,EAAE,CACnB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,EAC1E,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EACzC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,KAC3F,IAAI,CAAC;IACV,gDAAgD;IAChD,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,uDAAuD;IACvD,+BAA+B,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,wCAAwC;IACxC,wBAAwB,EAAE,CACxB,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KACpC,OAAO,CAAC;QAAE,SAAS,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC,CAAC;CAC9C;AAYD,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAEtD;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAMD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAWlE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAiCjD;AAMD;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAiE9D;AAMD;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,CAqElH;AAMD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAmK5H;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAY7G;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA+D1H"}
1
+ {"version":3,"file":"tower-instances.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-instances.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAY1F,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACpD,kBAAkB,EAAE,MAAM,eAAe,CAAC;IAC1C,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,0DAA0D;IAC1D,0BAA0B,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAC1E,+CAA+C;IAC/C,mBAAmB,EAAE,CACnB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,EAC1E,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EACzC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,KAC3F,IAAI,CAAC;IACV,gDAAgD;IAChD,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,uDAAuD;IACvD,+BAA+B,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,wCAAwC;IACxC,wBAAwB,EAAE,CACxB,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KACpC,OAAO,CAAC;QAAE,SAAS,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC,CAAC;CAC9C;AAYD,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAEtD;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAMD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAWlE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAiCjD;AAMD;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAiE9D;AAMD;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,CAqElH;AAMD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAmK5H;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAY7G;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA+D1H"}
@@ -11,6 +11,7 @@ import crypto from 'node:crypto';
11
11
  import { exec } from 'node:child_process';
12
12
  import { promisify } from 'node:util';
13
13
  import { homedir } from 'node:os';
14
+ import { encodeWorkspacePath } from '../lib/tower-client.js';
14
15
  const execAsync = promisify(exec);
15
16
  import { getGlobalDb } from '../db/index.js';
16
17
  import { defaultSessionOptions } from '../../terminal/index.js';
@@ -123,7 +124,7 @@ export async function getInstances() {
123
124
  }
124
125
  }
125
126
  // Encode workspace path for proxy URL
126
- const encodedPath = Buffer.from(workspacePath).toString('base64url');
127
+ const encodedPath = encodeWorkspacePath(workspacePath);
127
128
  const proxyUrl = `/workspace/${encodedPath}/`;
128
129
  // Get terminals from tower's registry
129
130
  // Phase 4 (Spec 0090): Tower manages terminals directly - no separate dashboard server