@mc1global/opencode-jarvis 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/application/bootstrap/index.d.ts +2 -0
  2. package/dist/application/bootstrap/index.d.ts.map +1 -1
  3. package/dist/application/bootstrap/index.js +1 -0
  4. package/dist/application/bootstrap/index.js.map +1 -1
  5. package/dist/application/bootstrap/terminal-commands-use-cases.d.ts +72 -0
  6. package/dist/application/bootstrap/terminal-commands-use-cases.d.ts.map +1 -0
  7. package/dist/application/bootstrap/terminal-commands-use-cases.js +132 -0
  8. package/dist/application/bootstrap/terminal-commands-use-cases.js.map +1 -0
  9. package/dist/application/config/config-service.d.ts +3 -1
  10. package/dist/application/config/config-service.d.ts.map +1 -1
  11. package/dist/application/config/config-service.js +4 -0
  12. package/dist/application/config/config-service.js.map +1 -1
  13. package/dist/application/kanban/card-use-cases.d.ts +16 -1
  14. package/dist/application/kanban/card-use-cases.d.ts.map +1 -1
  15. package/dist/application/kanban/card-use-cases.js +14 -1
  16. package/dist/application/kanban/card-use-cases.js.map +1 -1
  17. package/dist/application/token-metrics/dtos.d.ts +12 -0
  18. package/dist/application/token-metrics/dtos.d.ts.map +1 -1
  19. package/dist/application/token-metrics/tracking-use-cases.d.ts +23 -2
  20. package/dist/application/token-metrics/tracking-use-cases.d.ts.map +1 -1
  21. package/dist/application/token-metrics/tracking-use-cases.js +81 -13
  22. package/dist/application/token-metrics/tracking-use-cases.js.map +1 -1
  23. package/dist/domain/config/value-objects.d.ts +13 -0
  24. package/dist/domain/config/value-objects.d.ts.map +1 -1
  25. package/dist/domain/config/value-objects.js +6 -0
  26. package/dist/domain/config/value-objects.js.map +1 -1
  27. package/dist/domain/token-metrics/ports.d.ts +79 -0
  28. package/dist/domain/token-metrics/ports.d.ts.map +1 -0
  29. package/dist/domain/token-metrics/ports.js +71 -0
  30. package/dist/domain/token-metrics/ports.js.map +1 -0
  31. package/dist/hooks/event-handlers.d.ts +6 -0
  32. package/dist/hooks/event-handlers.d.ts.map +1 -1
  33. package/dist/hooks/event-handlers.js +27 -0
  34. package/dist/hooks/event-handlers.js.map +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +85 -6
  37. package/dist/index.js.map +1 -1
  38. package/dist/mcp-server.js +10 -3
  39. package/dist/mcp-server.js.map +1 -1
  40. package/dist/tools/bootstrap-tools.d.ts +2 -0
  41. package/dist/tools/bootstrap-tools.d.ts.map +1 -1
  42. package/dist/tools/bootstrap-tools.js +59 -1
  43. package/dist/tools/bootstrap-tools.js.map +1 -1
  44. package/dist/tools/token-metrics-tools.d.ts.map +1 -1
  45. package/dist/tools/token-metrics-tools.js +15 -1
  46. package/dist/tools/token-metrics-tools.js.map +1 -1
  47. package/package.json +1 -1
@@ -60,8 +60,15 @@ function generateRecommendations(totalCostUsd, recordCount, byOperation, topAgen
60
60
  }
61
61
  export class TokenMetricsUseCases {
62
62
  repo;
63
- constructor(repo) {
63
+ sprintStatsProvider;
64
+ dashboardConfig;
65
+ constructor(repo, options) {
64
66
  this.repo = repo;
67
+ this.sprintStatsProvider = options?.sprintStatsProvider;
68
+ this.dashboardConfig = options?.dashboardConfig ?? {
69
+ sprintBudgetUsd: null,
70
+ budgetAlertThreshold: 0.8,
71
+ };
65
72
  }
66
73
  /** Record a token usage event. */
67
74
  async recordUsage(req) {
@@ -151,27 +158,88 @@ export class TokenMetricsUseCases {
151
158
  return fail(e instanceof Error ? e.message : String(e));
152
159
  }
153
160
  }
154
- /** Get aggregated report by sprint. */
161
+ /** Get aggregated report by sprint with derived cost metrics. */
155
162
  async getSprintReport(req) {
156
163
  try {
157
164
  const workspace = WorkspaceId.create(req.workspace);
158
165
  const metrics = await this.repo.getMetricsBySprint(workspace, req.sprintId);
159
- return ok(metrics.map((m) => ({
160
- sprintId: m.sprintId,
161
- totalInputTokens: m.totalInputTokens,
162
- totalOutputTokens: m.totalOutputTokens,
163
- totalTokens: m.totalTokens,
164
- totalCostUsd: m.totalCostUsd,
165
- recordCount: m.recordCount,
166
- cardCount: m.cardCount,
167
- agentCount: m.agentCount,
168
- tokensPerCard: m.cardCount > 0 ? Math.round(m.totalTokens / m.cardCount) : 0,
169
- })));
166
+ const results = [];
167
+ for (const m of metrics) {
168
+ // Resolve story points from kanban (cross-context)
169
+ let totalStoryPoints;
170
+ let estimatedCardCount;
171
+ if (this.sprintStatsProvider) {
172
+ try {
173
+ const stats = await this.sprintStatsProvider.resolve(m.sprintId);
174
+ if (stats) {
175
+ totalStoryPoints = stats.totalStoryPoints > 0
176
+ ? stats.totalStoryPoints
177
+ : undefined;
178
+ estimatedCardCount = stats.estimatedCardCount;
179
+ }
180
+ }
181
+ catch {
182
+ // Fire-and-forget — never block report generation
183
+ }
184
+ }
185
+ // Derived metrics
186
+ const costPerStoryPoint = totalStoryPoints !== undefined && totalStoryPoints > 0
187
+ ? Math.round((m.totalCostUsd / totalStoryPoints) * 1_000_000) / 1_000_000
188
+ : undefined;
189
+ const averageCostPerCard = m.cardCount > 0
190
+ ? Math.round((m.totalCostUsd / m.cardCount) * 1_000_000) / 1_000_000
191
+ : undefined;
192
+ // Budget tracking
193
+ const budgetUsd = this.dashboardConfig.sprintBudgetUsd !== null
194
+ ? this.dashboardConfig.sprintBudgetUsd
195
+ : undefined;
196
+ const budgetUtilizationPct = budgetUsd !== undefined && budgetUsd > 0
197
+ ? Math.round((m.totalCostUsd / budgetUsd) * 10000) / 100
198
+ : undefined;
199
+ const budgetAlert = this.computeBudgetAlert(m.totalCostUsd, budgetUsd, budgetUtilizationPct, estimatedCardCount);
200
+ results.push({
201
+ sprintId: m.sprintId,
202
+ totalInputTokens: m.totalInputTokens,
203
+ totalOutputTokens: m.totalOutputTokens,
204
+ totalTokens: m.totalTokens,
205
+ totalCostUsd: m.totalCostUsd,
206
+ recordCount: m.recordCount,
207
+ cardCount: m.cardCount,
208
+ agentCount: m.agentCount,
209
+ tokensPerCard: m.cardCount > 0 ? Math.round(m.totalTokens / m.cardCount) : 0,
210
+ totalStoryPoints,
211
+ costPerStoryPoint,
212
+ averageCostPerCard,
213
+ budgetUsd,
214
+ budgetUtilizationPct,
215
+ budgetAlert,
216
+ });
217
+ }
218
+ return ok(results);
170
219
  }
171
220
  catch (e) {
172
221
  return fail(e instanceof Error ? e.message : String(e));
173
222
  }
174
223
  }
224
+ /**
225
+ * Compute a budget alert message based on utilization.
226
+ * Returns undefined if no budget is configured or utilization is within threshold.
227
+ */
228
+ computeBudgetAlert(totalCostUsd, budgetUsd, utilizationPct, _estimatedCardCount) {
229
+ if (budgetUsd === undefined || utilizationPct === undefined) {
230
+ return undefined;
231
+ }
232
+ const threshold = this.dashboardConfig.budgetAlertThreshold;
233
+ const thresholdPct = threshold * 100;
234
+ if (totalCostUsd >= budgetUsd) {
235
+ return `OVER BUDGET: $${totalCostUsd.toFixed(4)} spent of $${budgetUsd.toFixed(2)} budget (${utilizationPct.toFixed(1)}%)`;
236
+ }
237
+ if (utilizationPct >= thresholdPct) {
238
+ const remaining = budgetUsd - totalCostUsd;
239
+ return `Budget warning: ${utilizationPct.toFixed(1)}% utilized ($${remaining.toFixed(4)} remaining of $${budgetUsd.toFixed(2)})`;
240
+ }
241
+ return undefined;
242
+ }
175
243
  /** Get workspace-wide summary with recommendations. */
176
244
  async getWorkspaceSummary(req) {
177
245
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-use-cases.js","sourceRoot":"","sources":["../../../src/application/token-metrics/tracking-use-cases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracking-use-cases.js","sourceRoot":"","sources":["../../../src/application/token-metrics/tracking-use-cases.ts"],"names":[],"mappings":"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"}
@@ -84,6 +84,16 @@ export interface KanbanConfig {
84
84
  /** Minimum seconds between status transitions (prevents rubber-stamping). */
85
85
  readonly minTransitionIntervalSecs: number;
86
86
  }
87
+ /**
88
+ * Token Metrics bounded context configuration.
89
+ * Controls sprint budget tracking and cost alerts.
90
+ */
91
+ export interface TokenMetricsConfig {
92
+ /** Optional sprint budget in USD. When set, sprint reports include utilization %. */
93
+ readonly sprintBudgetUsd: number | null;
94
+ /** Budget utilization threshold (0-1) that triggers an alert. Default: 0.8. */
95
+ readonly budgetAlertThreshold: number;
96
+ }
87
97
  /**
88
98
  * Maps context names to their typed config interfaces.
89
99
  * Used by ConfigService for type-safe config retrieval.
@@ -95,6 +105,7 @@ export interface ConfigMap {
95
105
  "azure-sync": AzureSyncConfig;
96
106
  "mcp-server": McpServerConfig;
97
107
  kanban: KanbanConfig;
108
+ "token-metrics": TokenMetricsConfig;
98
109
  }
99
110
  /** Default RAG configuration (used when YAML is absent or incomplete). */
100
111
  export declare const DEFAULT_RAG_CONFIG: RagConfig;
@@ -108,6 +119,8 @@ export declare const DEFAULT_AZURE_SYNC_CONFIG: AzureSyncConfig;
108
119
  export declare const DEFAULT_MCP_SERVER_CONFIG: McpServerConfig;
109
120
  /** Default Kanban configuration with gate tasks per phase. */
110
121
  export declare const DEFAULT_KANBAN_CONFIG: KanbanConfig;
122
+ /** Default Token Metrics configuration. */
123
+ export declare const DEFAULT_TOKEN_METRICS_CONFIG: TokenMetricsConfig;
111
124
  /**
112
125
  * All defaults indexed by context name.
113
126
  * Used by ConfigService for fallback resolution.
@@ -1 +1 @@
1
- {"version":3,"file":"value-objects.d.ts","sourceRoot":"","sources":["../../../src/domain/config/value-objects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"value-objects.d.ts","sourceRoot":"","sources":["../../../src/domain/config/value-objects.ts"],"names":[],"mappings":"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"}
@@ -80,6 +80,11 @@ export const DEFAULT_KANBAN_CONFIG = {
80
80
  },
81
81
  minTransitionIntervalSecs: 30,
82
82
  };
83
+ /** Default Token Metrics configuration. */
84
+ export const DEFAULT_TOKEN_METRICS_CONFIG = {
85
+ sprintBudgetUsd: null,
86
+ budgetAlertThreshold: 0.8,
87
+ };
83
88
  /**
84
89
  * All defaults indexed by context name.
85
90
  * Used by ConfigService for fallback resolution.
@@ -91,5 +96,6 @@ export const CONFIG_DEFAULTS = {
91
96
  "azure-sync": DEFAULT_AZURE_SYNC_CONFIG,
92
97
  "mcp-server": DEFAULT_MCP_SERVER_CONFIG,
93
98
  kanban: DEFAULT_KANBAN_CONFIG,
99
+ "token-metrics": DEFAULT_TOKEN_METRICS_CONFIG,
94
100
  };
95
101
  //# sourceMappingURL=value-objects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"value-objects.js","sourceRoot":"","sources":["../../../src/domain/config/value-objects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyHH,gFAAgF;AAEhF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,MAAM,EAAE;QACN,GAAG,EAAE,wBAAwB;QAC7B,KAAK,EAAE,gBAAgB;QACvB,UAAU,EAAE,GAAG;KAChB;IACD,OAAO,EAAE;QACP,WAAW,EAAE,aAAa;KAC3B;IACD,MAAM,EAAE;QACN,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QAC7C,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QACzC,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QACzC,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QAC3C,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QAC3C,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QAC5C,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE;QAC9C,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QAC1C,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QAC3C,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QAC5C,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QAC1C,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QAC3C,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE;KAC9C;IACD,sBAAsB,EAAE,IAAI;CAC7B,CAAC;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,gBAAgB,EAAE,OAAO;IACzB,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,6BAA6B,GAAwB;IAChE,YAAY,EAAE,SAAS;CACxB,CAAC;AAEF,wCAAwC;AACxC,MAAM,CAAC,MAAM,yBAAyB,GAAoB;IACxD,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,QAAQ;IACpB,oBAAoB,EAAE,MAAM;IAC5B,kBAAkB,EAAE,IAAI;IACxB,WAAW,EAAE,KAAK;IAClB,gBAAgB,EAAE,EAAE;CACrB,CAAC;AAEF,wCAAwC;AACxC,MAAM,CAAC,MAAM,yBAAyB,GAAoB;IACxD,SAAS,EAAE,OAAO;IAClB,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF,8DAA8D;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAiB;IACjD,SAAS,EAAE;QACT,KAAK,EAAE;YACL,EAAE,WAAW,EAAE,0CAA0C,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;YAC/F,EAAE,WAAW,EAAE,sCAAsC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;YAC3F,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;SACtE;QACD,MAAM,EAAE;YACN,EAAE,WAAW,EAAE,6BAA6B,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE;YACpF,EAAE,WAAW,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;SACpG;QACD,MAAM,EAAE;YACN,EAAE,WAAW,EAAE,6BAA6B,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE;YACpF,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;SACrF;KACF;IACD,yBAAyB,EAAE,EAAE;CAC9B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsC;IAChE,GAAG,EAAE,kBAAkB;IACvB,QAAQ,EAAE,uBAAuB;IACjC,gBAAgB,EAAE,6BAA6B;IAC/C,YAAY,EAAE,yBAAyB;IACvC,YAAY,EAAE,yBAAyB;IACvC,MAAM,EAAE,qBAAqB;CAC9B,CAAC"}
1
+ {"version":3,"file":"value-objects.js","sourceRoot":"","sources":["../../../src/domain/config/value-objects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Token Metrics Ports
3
+ *
4
+ * Cross-context port interfaces for the token-metrics bounded context.
5
+ * These ports allow the event hook to resolve card/sprint context
6
+ * without directly depending on the kanban bounded context.
7
+ *
8
+ * Pattern: Same as GateConfigPort in kanban domain — interface defined
9
+ * here, implemented at the composition root in index.ts.
10
+ *
11
+ * DDD: Port interfaces (hexagonal architecture)
12
+ * SOLID: DIP - depend on abstractions, not on kanban directly
13
+ * SOLID: ISP - minimal interface for each cross-context need
14
+ */
15
+ import { OperationType } from "./value-objects.js";
16
+ /**
17
+ * Resolved story-point stats for a sprint.
18
+ * Used to compute cost-per-story-point derived metrics.
19
+ */
20
+ export interface SprintStatsContext {
21
+ /** Total story points across all cards in the sprint. */
22
+ readonly totalStoryPoints: number;
23
+ /** Number of cards that have story points assigned. */
24
+ readonly estimatedCardCount: number;
25
+ }
26
+ /**
27
+ * Port for resolving story-point stats for a sprint.
28
+ *
29
+ * The use case calls this to get the total story points assigned
30
+ * to cards in a sprint, enabling cost-per-story-point calculation.
31
+ *
32
+ * Implementation at the composition root uses CardRepository.findBySprint()
33
+ * and sums the story points of estimated cards.
34
+ */
35
+ export interface SprintStatsProvider {
36
+ /**
37
+ * Resolve story-point stats for a sprint.
38
+ * Returns undefined if the sprint has no cards.
39
+ */
40
+ resolve(sprintId: string): Promise<SprintStatsContext | undefined>;
41
+ }
42
+ /**
43
+ * Resolved card context for an agent.
44
+ * Contains the minimal info needed to enrich token metrics.
45
+ */
46
+ export interface ActiveCardContext {
47
+ /** Card ID (e.g. "CD-013") */
48
+ readonly cardId: string;
49
+ /** Sprint ID if the card is assigned to a sprint (e.g. "SP-006") */
50
+ readonly sprintId: string | undefined;
51
+ }
52
+ /**
53
+ * Port for resolving the active card an agent is working on.
54
+ *
55
+ * The event hook calls this to determine which kanban card (in "doing"
56
+ * status) the agent is assigned to, so that token metrics can be
57
+ * auto-associated with the correct card and sprint.
58
+ *
59
+ * Implementation at the composition root uses CardRepository.findByAgent()
60
+ * filtered by "doing" status.
61
+ *
62
+ * When multiple cards are in "doing" for the same agent, returns the
63
+ * most recently started one (by startedAt timestamp).
64
+ */
65
+ export interface ActiveCardProvider {
66
+ /**
67
+ * Resolve the active "doing" card for an agent in a workspace.
68
+ * Returns undefined if no card is in "doing" for this agent.
69
+ */
70
+ resolve(agent: string, workspace: string): Promise<ActiveCardContext | undefined>;
71
+ }
72
+ /**
73
+ * Classify a tool invocation into an OperationType based on the tool name.
74
+ *
75
+ * @param toolName - The tool name (e.g. "kanban-card-move", "rag-search")
76
+ * @returns The inferred OperationType, defaults to Other for unrecognized tools
77
+ */
78
+ export declare function classifyToolOperation(toolName: string): OperationType;
79
+ //# sourceMappingURL=ports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../../src/domain/token-metrics/ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,uDAAuD;IACvD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;CACpE;AAID;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,OAAO,CACL,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;CAC3C;AAqDD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAOrE"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Token Metrics Ports
3
+ *
4
+ * Cross-context port interfaces for the token-metrics bounded context.
5
+ * These ports allow the event hook to resolve card/sprint context
6
+ * without directly depending on the kanban bounded context.
7
+ *
8
+ * Pattern: Same as GateConfigPort in kanban domain — interface defined
9
+ * here, implemented at the composition root in index.ts.
10
+ *
11
+ * DDD: Port interfaces (hexagonal architecture)
12
+ * SOLID: DIP - depend on abstractions, not on kanban directly
13
+ * SOLID: ISP - minimal interface for each cross-context need
14
+ */
15
+ import { OperationType } from "./value-objects.js";
16
+ // ── Tool Operation Classification ─────────────────────────────────────
17
+ /**
18
+ * Classify a tool name into an OperationType.
19
+ *
20
+ * Pure function with no side effects or dependencies.
21
+ * Maps tool name prefixes to operation categories:
22
+ *
23
+ * - kanban-card-create, move, assign, etc. to planning
24
+ * - kanban-grooming, card-scope-doc, card-criteria, card-estimate to grooming
25
+ * - rag, domain-map, env tools to implementation
26
+ * - pipeline, governance tools to review
27
+ * - azure-sync, azure-pr tools to fix
28
+ * - everything else to other
29
+ *
30
+ * The mapping is intentionally coarse — tools that don't fit
31
+ * cleanly into a category default to "other".
32
+ */
33
+ /** Tool prefix to OperationType mapping rules. */
34
+ const TOOL_OPERATION_RULES = [
35
+ // Grooming tools — must be checked BEFORE planning (more specific)
36
+ { pattern: /^kanban-grooming-/, operation: OperationType.Grooming },
37
+ { pattern: /^kanban-card-scope-doc$/, operation: OperationType.Grooming },
38
+ { pattern: /^kanban-card-criteria$/, operation: OperationType.Grooming },
39
+ { pattern: /^kanban-card-estimate$/, operation: OperationType.Grooming },
40
+ // Planning tools
41
+ { pattern: /^kanban-card-/, operation: OperationType.Planning },
42
+ { pattern: /^kanban-sprint-/, operation: OperationType.Planning },
43
+ { pattern: /^kanban-epic-/, operation: OperationType.Planning },
44
+ { pattern: /^kanban-board-/, operation: OperationType.Planning },
45
+ { pattern: /^kanban-wip-/, operation: OperationType.Planning },
46
+ // Review / quality tools
47
+ { pattern: /^pipeline-/, operation: OperationType.Review },
48
+ { pattern: /^governance-/, operation: OperationType.Review },
49
+ // Implementation tools (code-related work)
50
+ { pattern: /^rag-/, operation: OperationType.Implementation },
51
+ { pattern: /^domain-map-/, operation: OperationType.Implementation },
52
+ { pattern: /^env-/, operation: OperationType.Implementation },
53
+ // Fix tools (azure sync is typically maintenance/fix)
54
+ { pattern: /^azure-sync-/, operation: OperationType.Fix },
55
+ { pattern: /^azure-pr-/, operation: OperationType.Fix },
56
+ ];
57
+ /**
58
+ * Classify a tool invocation into an OperationType based on the tool name.
59
+ *
60
+ * @param toolName - The tool name (e.g. "kanban-card-move", "rag-search")
61
+ * @returns The inferred OperationType, defaults to Other for unrecognized tools
62
+ */
63
+ export function classifyToolOperation(toolName) {
64
+ for (const rule of TOOL_OPERATION_RULES) {
65
+ if (rule.pattern.test(toolName)) {
66
+ return rule.operation;
67
+ }
68
+ }
69
+ return OperationType.Other;
70
+ }
71
+ //# sourceMappingURL=ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/domain/token-metrics/ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAqEnD,yEAAyE;AAEzE;;;;;;;;;;;;;;;GAeG;AAEH,kDAAkD;AAClD,MAAM,oBAAoB,GAGrB;IACH,mEAAmE;IACnE,EAAE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;IACnE,EAAE,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;IACzE,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;IACxE,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;IAExE,iBAAiB;IACjB,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;IAC/D,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;IACjE,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;IAC/D,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;IAChE,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;IAE9D,yBAAyB;IACzB,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE;IAC1D,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE;IAE5D,2CAA2C;IAC3C,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,cAAc,EAAE;IAC7D,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,CAAC,cAAc,EAAE;IACpE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,cAAc,EAAE;IAE7D,sDAAsD;IACtD,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,CAAC,GAAG,EAAE;IACzD,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,CAAC,GAAG,EAAE;CACxD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC,KAAK,CAAC;AAC7B,CAAC"}
@@ -4,6 +4,7 @@
4
4
  * Subscribes to OpenCode events for cross-cutting concerns:
5
5
  * - Logging governance violations from tool execution errors
6
6
  * - Recording token metrics on tool.execute.after events
7
+ * - Auto-enriching metrics with card/sprint/operation context
7
8
  *
8
9
  * Hook: "event"
9
10
  * Signature: (input: { event }) => Promise<void>
@@ -16,6 +17,7 @@
16
17
  * SOLID: OCP - new event handlers can be added without modification
17
18
  */
18
19
  import type { TokenMetricsUseCases } from "../application/token-metrics/tracking-use-cases.js";
20
+ import type { ActiveCardProvider } from "../domain/token-metrics/ports.js";
19
21
  import type { PluginLogger } from "./logger.js";
20
22
  /** Shape of an OpenCode event (subset we care about). */
21
23
  export interface PluginEvent {
@@ -31,10 +33,14 @@ export interface EventHandlersDeps {
31
33
  readonly workspace?: string;
32
34
  /** Logger for diagnostic output. */
33
35
  readonly log?: PluginLogger;
36
+ /** Cross-context port: resolves the active card for an agent. */
37
+ readonly activeCardProvider?: ActiveCardProvider;
34
38
  }
35
39
  /**
36
40
  * Creates the event hook.
37
41
  * Monitors for governance violations and records token metrics.
42
+ * Auto-enriches metrics with card/sprint context via ActiveCardProvider
43
+ * and infers operation type from tool name via classifyToolOperation.
38
44
  */
39
45
  export declare function createEventHook(deps: EventHandlersDeps): (input: {
40
46
  event: PluginEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"event-handlers.d.ts","sourceRoot":"","sources":["../../src/hooks/event-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9D,mDAAmD;IACnD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IACrD,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;CAC7B;AAwDD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,iBAAiB,GACtB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAyClD"}
1
+ {"version":3,"file":"event-handlers.d.ts","sourceRoot":"","sources":["../../src/hooks/event-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9D,mDAAmD;IACnD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IACrD,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CAClD;AAwDD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,iBAAiB,GACtB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAqElD"}
@@ -1,3 +1,4 @@
1
+ import { classifyToolOperation } from "../domain/token-metrics/ports.js";
1
2
  /**
2
3
  * Extract token-relevant data from event properties.
3
4
  * OpenCode events may include tool name, input/output sizes, model, etc.
@@ -35,6 +36,8 @@ function extractTokenData(properties) {
35
36
  /**
36
37
  * Creates the event hook.
37
38
  * Monitors for governance violations and records token metrics.
39
+ * Auto-enriches metrics with card/sprint context via ActiveCardProvider
40
+ * and infers operation type from tool name via classifyToolOperation.
38
41
  */
39
42
  export function createEventHook(deps) {
40
43
  return async (input) => {
@@ -53,6 +56,27 @@ export function createEventHook(deps) {
53
56
  // Only record if we have a tool name and some token data
54
57
  if (data.toolName && (data.inputTokens > 0 || data.outputTokens > 0)) {
55
58
  try {
59
+ // Classify operation from tool name
60
+ const operation = classifyToolOperation(data.toolName);
61
+ // Resolve active card context (fire-and-forget safe)
62
+ let cardId;
63
+ let sprintId;
64
+ if (deps.activeCardProvider) {
65
+ try {
66
+ const cardContext = await deps.activeCardProvider.resolve(data.agent, deps.workspace);
67
+ if (cardContext) {
68
+ cardId = cardContext.cardId;
69
+ sprintId = cardContext.sprintId;
70
+ }
71
+ }
72
+ catch (cardErr) {
73
+ // Card resolution failure must NOT block metrics recording
74
+ deps.log?.warn("Active card resolution failed", {
75
+ agent: data.agent,
76
+ error: cardErr instanceof Error ? cardErr.message : String(cardErr),
77
+ });
78
+ }
79
+ }
56
80
  await deps.tokenMetricsUseCases.recordUsage({
57
81
  workspace: deps.workspace,
58
82
  toolName: data.toolName,
@@ -60,9 +84,12 @@ export function createEventHook(deps) {
60
84
  inputTokens: data.inputTokens,
61
85
  outputTokens: data.outputTokens,
62
86
  model: data.model,
87
+ operation,
63
88
  ...(data.sessionId !== undefined
64
89
  ? { sessionId: data.sessionId }
65
90
  : {}),
91
+ ...(cardId !== undefined ? { cardId } : {}),
92
+ ...(sprintId !== undefined ? { sprintId } : {}),
66
93
  });
67
94
  }
68
95
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../src/hooks/event-handlers.ts"],"names":[],"mappings":"AAqCA;;;GAGG;AACH,SAAS,gBAAgB,CAAC,UAAmC;IAQ3D,MAAM,QAAQ,GACZ,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,QAAQ;QACpC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QACpB,CAAC,CAAC,OAAO,UAAU,CAAC,UAAU,CAAC,KAAK,QAAQ;YAC1C,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;YACxB,CAAC,CAAC,SAAS,CAAC;IAElB,uDAAuD;IACvD,MAAM,WAAW,GACf,OAAO,UAAU,CAAC,aAAa,CAAC,KAAK,QAAQ;QAC3C,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;QAC3B,CAAC,CAAC,OAAO,UAAU,CAAC,cAAc,CAAC,KAAK,QAAQ;YAC9C,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;YAC5B,CAAC,CAAC,CAAC,CAAC;IAEV,MAAM,YAAY,GAChB,OAAO,UAAU,CAAC,cAAc,CAAC,KAAK,QAAQ;QAC5C,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;QAC5B,CAAC,CAAC,OAAO,UAAU,CAAC,eAAe,CAAC,KAAK,QAAQ;YAC/C,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;YAC7B,CAAC,CAAC,CAAC,CAAC;IAEV,MAAM,KAAK,GACT,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,QAAQ;QACrC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;QACrB,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,KAAK,GACT,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,QAAQ;QACrC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;QACrB,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,SAAS,GACb,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,QAAQ;QACzC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;QACzB,CAAC,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,KAAK,QAAQ;YAC5C,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;YAC1B,CAAC,CAAC,SAAS,CAAC;IAElB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAuB;IAEvB,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAE1B,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB;YAAE,OAAO;QAEhD,8CAA8C;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EACtC,CAAC;YACD,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,kDAAkD;QAClD,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAEhD,yDAAyD;YACzD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;wBAC1C,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;4BAC9B,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;4BAC/B,CAAC,CAAC,EAAE,CAAC;qBACR,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,gCAAgC,EAAE,GAAG,EAAE;wBACzD,IAAI,EAAE,IAAI,CAAC,QAAQ;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../src/hooks/event-handlers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA6GlD,eAAO,MAAM,YAAY,EAAE,MA+Z1B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAgHlD,eAAO,MAAM,YAAY,EAAE,MAse1B,CAAC"}