specweave 1.0.260 → 1.0.261

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.
@@ -1,19 +1,46 @@
1
1
  import type { OverviewPayload, IncrementListPayload, SyncStatusPayload, SkillUsage, LspStatus, PluginInfo } from '../../types.js';
2
+ import type { CostsSummaryPayload } from './cost-aggregator.js';
3
+ interface AnalyticsAggregation {
4
+ totalEvents: number;
5
+ successRate: number;
6
+ topCommands: Array<{
7
+ name: string;
8
+ count: number;
9
+ }>;
10
+ topSkills: Array<{
11
+ name: string;
12
+ plugin: string;
13
+ count: number;
14
+ successCount: number;
15
+ failureCount: number;
16
+ lastUsed: string;
17
+ }>;
18
+ topAgents: Array<{
19
+ name: string;
20
+ count: number;
21
+ }>;
22
+ dailySummaries: Array<{
23
+ date: string;
24
+ totalEvents: number;
25
+ }>;
26
+ last24hEvents: number;
27
+ }
2
28
  export declare class DashboardDataAggregator {
3
29
  private projectRoot;
30
+ private analyticsCache;
31
+ private analyticsCacheTime;
32
+ private readonly analyticsCacheTTL;
4
33
  constructor(projectRoot: string);
5
34
  /** Get overview combining all sources */
6
- getOverview(): Promise<OverviewPayload>;
35
+ getOverview(costData?: CostsSummaryPayload): Promise<OverviewPayload>;
7
36
  /** Get increments list */
8
37
  getIncrements(): Promise<IncrementListPayload>;
9
- /** Get sync status */
38
+ /** Get sync status with enriched connection diagnosis */
10
39
  getSyncStatus(): Promise<SyncStatusPayload>;
11
- /** Get analytics summary (from cache if available) */
12
- getAnalyticsSummary(): Promise<Record<string, unknown>>;
13
- /** Get per-skill usage stats */
40
+ /** Get analytics summary aggregated from events.jsonl */
41
+ getAnalyticsSummary(): Promise<AnalyticsAggregation>;
42
+ /** Get per-skill usage stats from events.jsonl */
14
43
  getSkillUsage(): Promise<SkillUsage[]>;
15
- /** Get costs summary */
16
- getCostsSummary(): Promise<Record<string, unknown>>;
17
44
  /** Get notifications */
18
45
  getNotifications(): Promise<unknown[]>;
19
46
  /** Get config */
@@ -22,14 +49,14 @@ export declare class DashboardDataAggregator {
22
49
  getLspStatus(): Promise<LspStatus | null>;
23
50
  /** Get installed plugins */
24
51
  getPlugins(): Promise<PluginInfo[]>;
52
+ private aggregateEventsFromJsonl;
53
+ private enrichSyncPlatforms;
25
54
  private readDashboardJson;
26
55
  private readSyncMetadata;
27
56
  private readNotifications;
28
- private readCosts;
29
- private readAnalyticsCache;
30
57
  private readConfig;
31
58
  private readJsonFile;
32
59
  private extractStatusBreakdown;
33
- private count24hEvents;
34
60
  }
61
+ export {};
35
62
  //# sourceMappingURL=dashboard-data-aggregator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-data-aggregator.d.ts","sourceRoot":"","sources":["../../../../../src/dashboard/server/data/dashboard-data-aggregator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EAEpB,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,UAAU,EAEX,MAAM,gBAAgB,CAAC;AAExB,qBAAa,uBAAuB;IACtB,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM;IAEvC,yCAAyC;IACnC,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAmD7C,0BAA0B;IACpB,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAoCpD,sBAAsB;IAChB,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAQjD,sDAAsD;IAChD,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI7D,gCAAgC;IAC1B,aAAa,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAc5C,wBAAwB;IAClB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKzD,wBAAwB;IAClB,gBAAgB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAI5C,iBAAiB;IACX,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAInD,qBAAqB;IACf,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAI/C,4BAA4B;IACtB,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAyCzC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,cAAc;CAMvB"}
1
+ {"version":3,"file":"dashboard-data-aggregator.d.ts","sourceRoot":"","sources":["../../../../../src/dashboard/server/data/dashboard-data-aggregator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EAEpB,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,UAAU,EACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChI,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,uBAAuB;IAKtB,OAAO,CAAC,WAAW;IAJ/B,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;gBAExB,WAAW,EAAE,MAAM;IAEvC,yCAAyC;IACnC,WAAW,CAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IA2C3E,0BAA0B;IACpB,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAoCpD,yDAAyD;IACnD,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC;IASjD,yDAAyD;IACnD,mBAAmB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAI1D,kDAAkD;IAC5C,aAAa,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAa5C,wBAAwB;IAClB,gBAAgB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAI5C,iBAAiB;IACX,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAInD,qBAAqB;IACf,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAI/C,4BAA4B;IACtB,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAwC3B,wBAAwB;IA6GtC,OAAO,CAAC,mBAAmB;IAqE3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,sBAAsB;CAQ/B"}
@@ -3,14 +3,16 @@ import * as path from 'path';
3
3
  export class DashboardDataAggregator {
4
4
  constructor(projectRoot) {
5
5
  this.projectRoot = projectRoot;
6
+ this.analyticsCache = null;
7
+ this.analyticsCacheTime = 0;
8
+ this.analyticsCacheTTL = 30000; // 30 seconds
6
9
  }
7
10
  /** Get overview combining all sources */
8
- async getOverview() {
11
+ async getOverview(costData) {
9
12
  const dashboard = this.readDashboardJson();
10
13
  const syncMeta = this.readSyncMetadata();
11
14
  const notifications = this.readNotifications();
12
- const costs = this.readCosts();
13
- const analytics = this.readAnalyticsCache();
15
+ const analytics = await this.aggregateEventsFromJsonl();
14
16
  const config = this.readConfig();
15
17
  return {
16
18
  project: {
@@ -23,15 +25,15 @@ export class DashboardDataAggregator {
23
25
  priorityBreakdown: dashboard?.summary?.byPriority ?? {},
24
26
  },
25
27
  analytics: {
26
- totalEvents: analytics?.totalEvents ?? 0,
27
- successRate: analytics?.successRate ?? 0,
28
- last24hEvents: this.count24hEvents(analytics),
28
+ totalEvents: analytics.totalEvents,
29
+ successRate: analytics.successRate,
30
+ last24hEvents: analytics.last24hEvents,
29
31
  },
30
32
  costs: {
31
- totalCost: costs?.totalCost ?? dashboard?.costs?.totalCost ?? 0,
32
- totalSavings: costs?.totalSavings ?? dashboard?.costs?.totalSavings ?? 0,
33
- totalTokens: costs?.totalTokens ?? dashboard?.costs?.totalTokens ?? 0,
34
- sessionCount: Array.isArray(costs?.sessions) ? costs.sessions.length : 0,
33
+ totalCost: costData?.totalCost ?? 0,
34
+ totalSavings: costData?.totalSavings ?? 0,
35
+ totalTokens: costData?.totalTokens ?? 0,
36
+ sessionCount: costData?.sessionCount ?? 0,
35
37
  },
36
38
  notifications: {
37
39
  pendingCount: Array.isArray(notifications)
@@ -42,12 +44,7 @@ export class DashboardDataAggregator {
42
44
  : 0,
43
45
  },
44
46
  sync: {
45
- platforms: Object.fromEntries(Object.entries(syncMeta || {})
46
- .filter(([key]) => ['github', 'jira', 'ado'].includes(key))
47
- .map(([key, val]) => [key, {
48
- lastImport: val?.lastImport ?? '',
49
- lastSyncResult: val?.lastSyncResult ?? 'unknown',
50
- }])),
47
+ platforms: this.enrichSyncPlatforms(syncMeta, config),
51
48
  },
52
49
  generatedAt: new Date().toISOString(),
53
50
  };
@@ -86,38 +83,32 @@ export class DashboardDataAggregator {
86
83
  summary: dashboard?.summary ?? {},
87
84
  };
88
85
  }
89
- /** Get sync status */
86
+ /** Get sync status with enriched connection diagnosis */
90
87
  async getSyncStatus() {
91
88
  const meta = this.readSyncMetadata();
89
+ const config = this.readConfig();
92
90
  return {
93
- platforms: meta || {},
91
+ platforms: this.enrichSyncPlatforms(meta, config),
94
92
  lastUpdated: meta?.lastUpdated,
95
93
  };
96
94
  }
97
- /** Get analytics summary (from cache if available) */
95
+ /** Get analytics summary aggregated from events.jsonl */
98
96
  async getAnalyticsSummary() {
99
- return this.readAnalyticsCache() || { totalEvents: 0, topCommands: [], topSkills: [], topAgents: [] };
97
+ return this.aggregateEventsFromJsonl();
100
98
  }
101
- /** Get per-skill usage stats */
99
+ /** Get per-skill usage stats from events.jsonl */
102
100
  async getSkillUsage() {
103
- const cache = this.readAnalyticsCache();
104
- if (!cache?.topSkills)
105
- return [];
106
- return cache.topSkills.map((s) => ({
107
- name: s.name || '',
108
- plugin: s.plugin || '',
109
- count: s.count || 0,
110
- successCount: s.successCount || 0,
111
- failureCount: s.failureCount || 0,
112
- avgDuration: s.avgDuration,
113
- lastUsed: s.lastUsed || '',
101
+ const analytics = await this.aggregateEventsFromJsonl();
102
+ return analytics.topSkills.map(s => ({
103
+ name: s.name,
104
+ plugin: s.plugin,
105
+ count: s.count,
106
+ successCount: s.successCount,
107
+ failureCount: s.failureCount,
108
+ avgDuration: undefined,
109
+ lastUsed: s.lastUsed,
114
110
  }));
115
111
  }
116
- /** Get costs summary */
117
- async getCostsSummary() {
118
- const costs = this.readCosts();
119
- return costs || { totalCost: 0, totalTokens: 0, totalSavings: 0, sessions: [] };
120
- }
121
112
  /** Get notifications */
122
113
  async getNotifications() {
123
114
  return this.readNotifications() || [];
@@ -142,7 +133,6 @@ export class DashboardDataAggregator {
142
133
  if (!entry.isDirectory())
143
134
  continue;
144
135
  const pluginDir = path.join(cacheDir, entry.name);
145
- // Find version directory
146
136
  const versions = fs.readdirSync(pluginDir, { withFileTypes: true })
147
137
  .filter(v => v.isDirectory())
148
138
  .map(v => v.name);
@@ -166,6 +156,171 @@ export class DashboardDataAggregator {
166
156
  catch { /* ignore read errors */ }
167
157
  return plugins;
168
158
  }
159
+ // --- Analytics Aggregation from events.jsonl ---
160
+ async aggregateEventsFromJsonl() {
161
+ if (this.analyticsCache && Date.now() - this.analyticsCacheTime < this.analyticsCacheTTL) {
162
+ return this.analyticsCache;
163
+ }
164
+ const eventsPath = path.join(this.projectRoot, '.specweave/state/analytics/events.jsonl');
165
+ const commandCounts = new Map();
166
+ const skillMap = new Map();
167
+ const agentCounts = new Map();
168
+ const dailyCounts = new Map();
169
+ let totalEvents = 0;
170
+ let successCount = 0;
171
+ let last24hEvents = 0;
172
+ const now24h = new Date(Date.now() - 86400000).toISOString();
173
+ try {
174
+ if (!fs.existsSync(eventsPath)) {
175
+ const empty = { totalEvents: 0, successRate: 0, topCommands: [], topSkills: [], topAgents: [], dailySummaries: [], last24hEvents: 0 };
176
+ this.analyticsCache = empty;
177
+ this.analyticsCacheTime = Date.now();
178
+ return empty;
179
+ }
180
+ const content = fs.readFileSync(eventsPath, 'utf-8');
181
+ const lines = content.split('\n').filter(Boolean);
182
+ for (const line of lines) {
183
+ try {
184
+ const event = JSON.parse(line);
185
+ totalEvents++;
186
+ if (event.success)
187
+ successCount++;
188
+ if (event.timestamp && event.timestamp >= now24h)
189
+ last24hEvents++;
190
+ const name = event.name || '';
191
+ const type = event.type || '';
192
+ // Command counts
193
+ if (name) {
194
+ commandCounts.set(name, (commandCounts.get(name) || 0) + 1);
195
+ }
196
+ // Skill tracking (commands starting with /sw:)
197
+ if (name.startsWith('/sw:') || type === 'skill_activation') {
198
+ const existing = skillMap.get(name);
199
+ if (existing) {
200
+ existing.count++;
201
+ if (event.success)
202
+ existing.successCount++;
203
+ else
204
+ existing.failureCount++;
205
+ if (event.timestamp > existing.lastUsed)
206
+ existing.lastUsed = event.timestamp;
207
+ }
208
+ else {
209
+ skillMap.set(name, {
210
+ plugin: event.plugin || 'specweave',
211
+ count: 1,
212
+ successCount: event.success ? 1 : 0,
213
+ failureCount: event.success ? 0 : 1,
214
+ lastUsed: event.timestamp || '',
215
+ });
216
+ }
217
+ }
218
+ // Agent tracking
219
+ if (type === 'agent_spawn') {
220
+ agentCounts.set(name, (agentCounts.get(name) || 0) + 1);
221
+ }
222
+ // Daily bucketing
223
+ if (event.timestamp) {
224
+ const date = event.timestamp.slice(0, 10);
225
+ dailyCounts.set(date, (dailyCounts.get(date) || 0) + 1);
226
+ }
227
+ }
228
+ catch { /* skip bad lines */ }
229
+ }
230
+ }
231
+ catch { /* file read error */ }
232
+ const topCommands = Array.from(commandCounts.entries())
233
+ .map(([name, count]) => ({ name, count }))
234
+ .sort((a, b) => b.count - a.count)
235
+ .slice(0, 20);
236
+ const topSkills = Array.from(skillMap.entries())
237
+ .map(([name, data]) => ({ name, ...data }))
238
+ .sort((a, b) => b.count - a.count);
239
+ const topAgents = Array.from(agentCounts.entries())
240
+ .map(([name, count]) => ({ name, count }))
241
+ .sort((a, b) => b.count - a.count)
242
+ .slice(0, 10);
243
+ const dailySummaries = Array.from(dailyCounts.entries())
244
+ .map(([date, totalEvents]) => ({ date, totalEvents }))
245
+ .sort((a, b) => a.date.localeCompare(b.date));
246
+ const result = {
247
+ totalEvents,
248
+ successRate: totalEvents > 0 ? Math.round((successCount / totalEvents) * 100) : 0,
249
+ topCommands,
250
+ topSkills,
251
+ topAgents,
252
+ dailySummaries,
253
+ last24hEvents,
254
+ };
255
+ this.analyticsCache = result;
256
+ this.analyticsCacheTime = Date.now();
257
+ return result;
258
+ }
259
+ // --- Sync Enrichment ---
260
+ enrichSyncPlatforms(syncMeta, config) {
261
+ const platforms = {};
262
+ const platformConfigs = {
263
+ github: {
264
+ key: 'github',
265
+ label: 'GitHub',
266
+ configCheck: () => {
267
+ const gh = config?.sync?.github;
268
+ return gh?.owner && gh?.repo ? `${gh.owner}/${gh.repo}` : null;
269
+ },
270
+ },
271
+ jira: {
272
+ key: 'jira',
273
+ label: 'JIRA',
274
+ configCheck: () => {
275
+ const j = config?.sync?.jira;
276
+ return j?.domain ? `${j.domain} (${j.projectKey || 'N/A'})` : null;
277
+ },
278
+ },
279
+ ado: {
280
+ key: 'ado',
281
+ label: 'Azure DevOps',
282
+ configCheck: () => {
283
+ const a = config?.sync?.ado;
284
+ return a?.organization ? `${a.organization}/${a.project || ''}` : null;
285
+ },
286
+ },
287
+ };
288
+ for (const [key, pConfig] of Object.entries(platformConfigs)) {
289
+ const meta = syncMeta?.[key];
290
+ const configDetail = pConfig.configCheck();
291
+ const lastImport = meta?.lastImport || '';
292
+ const lastSyncResult = meta?.lastSyncResult || 'unknown';
293
+ const lastImportCount = meta?.lastImportCount ?? 0;
294
+ let connectionStatus;
295
+ let diagnosticMessage = '';
296
+ if (!configDetail) {
297
+ connectionStatus = 'not_configured';
298
+ diagnosticMessage = `${pConfig.label} sync is not configured. Add credentials in config.json.`;
299
+ }
300
+ else if (!lastImport) {
301
+ connectionStatus = 'configured_never_synced';
302
+ diagnosticMessage = `${pConfig.label} configured for ${configDetail}. No sync attempted yet.`;
303
+ }
304
+ else if (lastSyncResult === 'success') {
305
+ connectionStatus = 'connected';
306
+ diagnosticMessage = `${pConfig.label} connected to ${configDetail}. Last sync: ${lastImportCount} items.`;
307
+ }
308
+ else {
309
+ connectionStatus = 'sync_failed';
310
+ diagnosticMessage = `${pConfig.label} configured for ${configDetail}. Last sync attempt failed at ${new Date(lastImport).toLocaleString()}.`;
311
+ }
312
+ platforms[key] = {
313
+ lastImport,
314
+ lastSyncResult,
315
+ lastImportCount,
316
+ lastSkippedCount: meta?.lastSkippedCount ?? 0,
317
+ connectionStatus,
318
+ diagnosticMessage,
319
+ configDetail,
320
+ };
321
+ }
322
+ return platforms;
323
+ }
169
324
  // --- Private helpers ---
170
325
  readDashboardJson() {
171
326
  return this.readJsonFile('.specweave/state/dashboard.json');
@@ -177,12 +332,6 @@ export class DashboardDataAggregator {
177
332
  const data = this.readJsonFile('.specweave/state/notifications.json');
178
333
  return data?.notifications || data || [];
179
334
  }
180
- readCosts() {
181
- return this.readJsonFile('.specweave/logs/costs.json');
182
- }
183
- readAnalyticsCache() {
184
- return this.readJsonFile('.specweave/state/analytics/cache.json');
185
- }
186
335
  readConfig() {
187
336
  return this.readJsonFile('.specweave/config.json');
188
337
  }
@@ -208,12 +357,5 @@ export class DashboardDataAggregator {
208
357
  }
209
358
  return result;
210
359
  }
211
- count24hEvents(analytics) {
212
- if (!analytics?.dailySummaries?.length)
213
- return 0;
214
- const today = new Date().toISOString().slice(0, 10);
215
- const todaySummary = analytics.dailySummaries.find((d) => d.date === today);
216
- return todaySummary?.totalEvents ?? 0;
217
- }
218
360
  }
219
361
  //# sourceMappingURL=dashboard-data-aggregator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-data-aggregator.js","sourceRoot":"","sources":["../../../../../src/dashboard/server/data/dashboard-data-aggregator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAY7B,MAAM,OAAO,uBAAuB;IAClC,YAAoB,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAE3C,yCAAyC;IACzC,KAAK,CAAC,WAAW;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEjC,OAAO;YACL,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI;gBAC3B,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;gBAC/C,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;gBACjD,mBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC;gBACvD,eAAe,EAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC;gBAChE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE;gBAC/C,iBAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE;aACxD;YACD,SAAS,EAAE;gBACT,WAAW,EAAE,SAAS,EAAE,WAAW,IAAI,CAAC;gBACxC,WAAW,EAAE,SAAS,EAAE,WAAW,IAAI,CAAC;gBACxC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;aAC9C;YACD,KAAK,EAAE;gBACL,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC;gBAC/D,YAAY,EAAE,KAAK,EAAE,YAAY,IAAI,SAAS,EAAE,KAAK,EAAE,YAAY,IAAI,CAAC;gBACxE,WAAW,EAAE,KAAK,EAAE,WAAW,IAAI,SAAS,EAAE,KAAK,EAAE,WAAW,IAAI,CAAC;gBACrE,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACzE;YACD,aAAa,EAAE;gBACb,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;oBACxC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM;oBACzD,CAAC,CAAC,CAAC;gBACL,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;oBACzC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM;oBACtF,CAAC,CAAC,CAAC;aACN;YACD,IAAI,EAAE;gBACJ,SAAS,EAAE,MAAM,CAAC,WAAW,CAC3B,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;qBAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;qBAC1D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE;wBACxC,UAAU,EAAE,GAAG,EAAE,UAAU,IAAI,EAAE;wBACjC,cAAc,EAAE,GAAG,EAAE,cAAc,IAAI,SAAS;qBACjD,CAAC,CAAC,CACN;aACF;YACD,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,KAAK,CAAC,aAAa;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAuB,EAAE,CAAC;QAE1C,IAAI,SAAS,EAAE,UAAU,EAAE,CAAC;YAC1B,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAoB,EAAE,CAAC;gBACjF,UAAU,CAAC,IAAI,CAAC;oBACd,EAAE;oBACF,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;oBACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;oBAChC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;oBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;oBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;oBAC/C,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;oBAC3C,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;oBAC/B,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;iBACtC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvB,MAAM,WAAW,GAA2B,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YACnI,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,GAAG,MAAM,CAAC;YAC9C,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,UAAU;YACV,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,EAAE;SAClC,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACrC,OAAO;YACL,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,WAAW,EAAE,IAAI,EAAE,WAAW;SAC/B,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,mBAAmB;QACvB,OAAO,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACxG,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,aAAa;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,SAAS;YAAE,OAAO,EAAE,CAAC;QACjC,OAAQ,KAAK,CAAC,SAAmB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;YACtB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;YACnB,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC;YACjC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC;YACjC,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,eAAe;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAClF,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,gBAAgB;QACpB,OAAO,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,qBAAqB;IACrB,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,iCAAiC,CAAC,CAAC;IAC9D,CAAC;IAED,4BAA4B;IAC5B,KAAK,CAAC,UAAU;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACxB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EACtB,iCAAiC,CAClC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QAExC,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;oBAAE,SAAS;gBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClD,yBAAyB;gBACzB,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;qBAChE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;qBAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;gBACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAEjD,IAAI,UAAU,GAAG,CAAC,CAAC;gBACnB,IAAI,YAAY,GAAG,CAAC,CAAC;gBACrB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAClD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACtD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;yBAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACzC,CAAC;gBACD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/B,YAAY,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC;yBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC3C,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,0BAA0B;IAElB,iBAAiB;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,iCAAiC,CAAC,CAAC;IAC9D,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,+BAA+B,CAAC,CAAC;IAC5D,CAAC;IAEO,iBAAiB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,qCAAqC,CAAC,CAAC;QACtE,OAAO,IAAI,EAAE,aAAa,IAAI,IAAI,IAAI,EAAE,CAAC;IAC3C,CAAC;IAEO,SAAS;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;IACzD,CAAC;IAEO,kBAAkB;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,uCAAuC,CAAC,CAAC;IACpE,CAAC;IAEO,UAAU;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;IACrD,CAAC;IAEO,YAAY,CAAC,YAAoB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC1C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,OAAY;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,CAAC;YAC5G,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,cAAc,CAAC,SAAc;QACnC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM;YAAE,OAAO,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACjF,OAAO,YAAY,EAAE,WAAW,IAAI,CAAC,CAAC;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"dashboard-data-aggregator.js","sourceRoot":"","sources":["../../../../../src/dashboard/server/data/dashboard-data-aggregator.ts"],"names":[],"mappings":"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"}
@@ -161,6 +161,17 @@ export interface LspStatus {
161
161
  pluginMissing: number;
162
162
  };
163
163
  }
164
+ export interface RepoInfo {
165
+ name: string;
166
+ org: string;
167
+ path: string;
168
+ remote?: string;
169
+ branch?: string;
170
+ hasSpecweave: boolean;
171
+ isCurrent?: boolean;
172
+ lastModified?: string;
173
+ }
174
+ export type { CostsSummaryPayload, SessionTokenSummary } from './server/data/cost-aggregator.js';
164
175
  export type ConfigPayload = Record<string, unknown>;
165
176
  export interface ProjectInfo {
166
177
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/dashboard/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/dashboard/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,kBAAkB,GAClB,iBAAiB,GACjB,aAAa,GACb,cAAc,GACd,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,gBAAgB,GAChB,UAAU,GACV,gBAAgB,GAChB,kBAAkB,GAClB,cAAc,CAAC;AAEnB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC3C,CAAC;IACF,SAAS,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,aAAa,EAAE;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC3E,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC,CAAC;IACH,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACvF,KAAK,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E;AAGD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;IAC1E,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAGD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,iBAAiB,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,CAAC;IACjG,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAGD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,KAAK,EAAE;QACL,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAGD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGjG,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAGpD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;CACvB;AAGD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAGD,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,MAAM,YAAY,GAAG,CACzB,GAAG,EAAE,OAAO,MAAM,EAAE,eAAe,EACnC,GAAG,EAAE,OAAO,MAAM,EAAE,cAAc,EAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "1.0.260",
3
+ "version": "1.0.261",
4
4
  "description": "Spec-driven development framework for AI coding agents. First-class support for Claude Code — compatible with any LLM-powered coding tool. Living documentation, autonomous execution, quality gates, and multilingual support (9 languages).",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -96,6 +96,41 @@ Map flags to extra `successCriteria` entries:
96
96
 
97
97
  Always include `tasks_complete` and `acs_satisfied` as base criteria. Ensure `.specweave/state/` dir exists.
98
98
 
99
+ ### Step 1.5a: MANDATORY - Complexity Check for Team-Lead Routing
100
+
101
+ **Before starting autonomous execution, check if this increment needs team-lead:**
102
+
103
+ 1. Count pending tasks in tasks.md (count `[ ]` markers)
104
+ 2. Detect domains from file paths in tasks.md and plan.md:
105
+ - Frontend: `.tsx`, `src/components/`, `src/pages/`, React/Vue keywords
106
+ - Backend: `src/api/`, `src/services/`, `src/routes/`, Express/NestJS keywords
107
+ - Database: `prisma/`, `migrations/`, SQL keywords
108
+ - DevOps: `Dockerfile`, `.github/`, `k8s/` keywords
109
+ - Testing: `tests/`, `e2e/`, `.test.` keywords
110
+ - Security: `src/auth/`, auth keywords
111
+ - Mobile: `ios/`, `android/`, React Native keywords
112
+
113
+ 3. **If 3+ domains detected OR domain count suggests multi-agent benefit:**
114
+
115
+ ```
116
+ ⚠️ COMPLEXITY ASSESSMENT
117
+ ══════════════════════════════════════════
118
+ Tasks: [N] pending | Domains: [N] ([list])
119
+ ──────────────────────────────────────────
120
+ This increment spans 3+ domains. /sw:team-lead is recommended
121
+ for parallel execution with higher quality results.
122
+ ⚡ Trade-off: ~2-3x more tokens, but parallel agents
123
+ produce better results for multi-domain work.
124
+ ══════════════════════════════════════════
125
+ ```
126
+
127
+ Then use AskUserQuestion:
128
+ - Option A: "Use /sw:team-lead (Recommended)" — invoke team-lead and stop auto
129
+ - Option B: "Continue with /sw:auto (sequential)" — proceed normally
130
+
131
+ **In auto mode** (no user present): Auto-invoke `/sw:team-lead` for 3+ domains.
132
+ This is the default behavior per CLAUDE.md execution strategy.
133
+
99
134
  ### Step 1.5: MANDATORY - Display Stop Conditions
100
135
 
101
136
  **You MUST output a stop conditions banner BEFORE starting work.** Detect test frameworks, count test files, then show:
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Execute increment tasks following spec and plan with sync hooks. Use when saying "implement", "start working", "execute tasks", or "continue increment".
2
+ description: Execute increment tasks following spec and plan with sync hooks. Use when saying "implement", "start working", "execute tasks", or "continue increment". IMPORTANT - Before starting, check task count and domain count. If 3+ domains or 15+ tasks, recommend /sw:team-lead instead (ask user for confirmation, or auto-invoke in auto mode).
3
3
  argument-hint: "<increment-id>"
4
4
  hooks:
5
5
  PostToolUse:
@@ -77,6 +77,43 @@ Generate `plan.md` and `tasks.md` for an increment using Architect Agent and tes
77
77
  - PLANNING → ACTIVE transition (tasks.md now exists)
78
78
  - Update lastUpdated timestamp
79
79
 
80
+ 6. **Execution Strategy Recommendation** (MANDATORY):
81
+ After generating tasks.md, analyze complexity and output a recommendation:
82
+
83
+ **6a. Count pending tasks** in the generated tasks.md (count `[ ]` markers)
84
+
85
+ **6b. Detect domains** from file paths and task descriptions:
86
+ - Frontend: `src/components/`, `src/pages/`, `src/hooks/`, `src/styles/`, `.tsx`, `.css`, React/Vue/Angular keywords
87
+ - Backend: `src/api/`, `src/services/`, `src/middleware/`, `src/routes/`, Express/Fastify/NestJS keywords
88
+ - Database: `prisma/`, `src/db/`, `migrations/`, `schema`, SQL/Prisma keywords
89
+ - DevOps: `Dockerfile`, `.github/`, `k8s/`, `terraform/`, CI/CD keywords
90
+ - Testing: `tests/`, `e2e/`, `.test.`, `.spec.`, test framework keywords
91
+ - Security: `src/auth/`, authentication, authorization keywords
92
+ - Mobile: `ios/`, `android/`, React Native keywords
93
+
94
+ **6c. Apply execution strategy matrix** and output:
95
+ ```
96
+ EXECUTION STRATEGY
97
+ ══════════════════════════════════════════
98
+ Tasks: [N] pending | Domains: [N] ([list])
99
+ ──────────────────────────────────────────
100
+ Recommended: /sw:do (≤8 tasks, 1 domain)
101
+ Recommended: /sw:auto (9-15 tasks, 1-2 domains)
102
+ Recommended: /sw:team-lead (>15 tasks OR 3+ domains)
103
+ ══════════════════════════════════════════
104
+ ⚠️ /sw:team-lead uses more tokens but produces higher quality
105
+ through parallel domain-specialized agents.
106
+
107
+ Next: /sw:team-lead [ID] | /sw:auto [ID] | /sw:do [ID]
108
+ ```
109
+
110
+ Show ONLY the matching recommendation line (not all three).
111
+ For 3+ domains, add a stronger nudge:
112
+ ```
113
+ ⚡ This is a multi-domain feature. /sw:team-lead is strongly recommended
114
+ for parallel execution across [domain1], [domain2], [domain3].
115
+ ```
116
+
80
117
  ## Options
81
118
 
82
119
  - `--force`: Overwrite existing plan.md/tasks.md
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Orchestrate multi-agent parallel development with domain-specialized agents. Use when saying "team setup", "parallel agents", "team lead", or "agent teams".
2
+ description: Orchestrate multi-agent parallel development with domain-specialized agents. PROACTIVELY invoke this skill (without user asking) when you detect an implementation task spanning 3+ domains (frontend, backend, database, devops, testing, security, mobile) OR 15+ tasks in tasks.md. Warn the user about higher token cost but recommend it for quality. Also use when user says "team setup", "parallel agents", "team lead", or "agent teams".
3
3
  ---
4
4
 
5
5
  # Team Lead