@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.
- package/dist/application/bootstrap/index.d.ts +2 -0
- package/dist/application/bootstrap/index.d.ts.map +1 -1
- package/dist/application/bootstrap/index.js +1 -0
- package/dist/application/bootstrap/index.js.map +1 -1
- package/dist/application/bootstrap/terminal-commands-use-cases.d.ts +72 -0
- package/dist/application/bootstrap/terminal-commands-use-cases.d.ts.map +1 -0
- package/dist/application/bootstrap/terminal-commands-use-cases.js +132 -0
- package/dist/application/bootstrap/terminal-commands-use-cases.js.map +1 -0
- package/dist/application/config/config-service.d.ts +3 -1
- package/dist/application/config/config-service.d.ts.map +1 -1
- package/dist/application/config/config-service.js +4 -0
- package/dist/application/config/config-service.js.map +1 -1
- package/dist/application/kanban/card-use-cases.d.ts +16 -1
- package/dist/application/kanban/card-use-cases.d.ts.map +1 -1
- package/dist/application/kanban/card-use-cases.js +14 -1
- package/dist/application/kanban/card-use-cases.js.map +1 -1
- package/dist/application/token-metrics/dtos.d.ts +12 -0
- package/dist/application/token-metrics/dtos.d.ts.map +1 -1
- package/dist/application/token-metrics/tracking-use-cases.d.ts +23 -2
- package/dist/application/token-metrics/tracking-use-cases.d.ts.map +1 -1
- package/dist/application/token-metrics/tracking-use-cases.js +81 -13
- package/dist/application/token-metrics/tracking-use-cases.js.map +1 -1
- package/dist/domain/config/value-objects.d.ts +13 -0
- package/dist/domain/config/value-objects.d.ts.map +1 -1
- package/dist/domain/config/value-objects.js +6 -0
- package/dist/domain/config/value-objects.js.map +1 -1
- package/dist/domain/token-metrics/ports.d.ts +79 -0
- package/dist/domain/token-metrics/ports.d.ts.map +1 -0
- package/dist/domain/token-metrics/ports.js +71 -0
- package/dist/domain/token-metrics/ports.js.map +1 -0
- package/dist/hooks/event-handlers.d.ts +6 -0
- package/dist/hooks/event-handlers.d.ts.map +1 -1
- package/dist/hooks/event-handlers.js +27 -0
- package/dist/hooks/event-handlers.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -6
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.js +10 -3
- package/dist/mcp-server.js.map +1 -1
- package/dist/tools/bootstrap-tools.d.ts +2 -0
- package/dist/tools/bootstrap-tools.d.ts.map +1 -1
- package/dist/tools/bootstrap-tools.js +59 -1
- package/dist/tools/bootstrap-tools.js.map +1 -1
- package/dist/tools/token-metrics-tools.d.ts.map +1 -1
- package/dist/tools/token-metrics-tools.js +15 -1
- package/dist/tools/token-metrics-tools.js.map +1 -1
- 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
|
-
|
|
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
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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":"AAAA;;;;;;;;;GASG;AAIH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB,KAAK,GACL,UAAU,GACV,gBAAgB,GAChB,QAAQ,GACR,YAAY,GACZ,eAAe,GACf,OAAO,GACP,oBAAoB,GACpB,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,YAAY,CAAC;AAIjB,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,yCAAyC;AACzC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAClD,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;CAC1C;AAED,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,oDAAoD;AACpD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,QAAQ,GAAG,KAAK,CAAC;IACtC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC;IACjE,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CACjD;AAID;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/C;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC5E,6EAA6E;IAC7E,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;CAC5C;AAID;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,mBAAmB,CAAC;IACtC,YAAY,EAAE,eAAe,CAAC;IAC9B,YAAY,EAAE,eAAe,CAAC;IAC9B,MAAM,EAAE,YAAY,CAAC;
|
|
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;
|
|
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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../src/hooks/event-handlers.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAsBzE;;;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;;;;;GAKG;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,oCAAoC;oBACpC,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAEvD,qDAAqD;oBACrD,IAAI,MAA0B,CAAC;oBAC/B,IAAI,QAA4B,CAAC;oBACjC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;wBAC5B,IAAI,CAAC;4BACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CACvD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAAS,CACf,CAAC;4BACF,IAAI,WAAW,EAAE,CAAC;gCAChB,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;gCAC5B,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;4BAClC,CAAC;wBACH,CAAC;wBAAC,OAAO,OAAO,EAAE,CAAC;4BACjB,2DAA2D;4BAC3D,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,+BAA+B,EAAE;gCAC9C,KAAK,EAAE,IAAI,CAAC,KAAK;gCACjB,KAAK,EAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;6BACpE,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBAED,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,SAAS;wBACT,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;4BAC9B,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;4BAC/B,CAAC,CAAC,EAAE,CAAC;wBACP,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3C,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAChD,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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|