specweave 0.3.13 → 0.4.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/CLAUDE.md +17 -1
- package/README.md +1 -1
- package/bin/install-all.sh +9 -2
- package/bin/install-hooks.sh +57 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +55 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/core/agent-model-manager.d.ts +52 -0
- package/dist/core/agent-model-manager.d.ts.map +1 -0
- package/dist/core/agent-model-manager.js +120 -0
- package/dist/core/agent-model-manager.js.map +1 -0
- package/dist/core/cost-tracker.d.ts +108 -0
- package/dist/core/cost-tracker.d.ts.map +1 -0
- package/dist/core/cost-tracker.js +281 -0
- package/dist/core/cost-tracker.js.map +1 -0
- package/dist/core/model-selector.d.ts +57 -0
- package/dist/core/model-selector.d.ts.map +1 -0
- package/dist/core/model-selector.js +115 -0
- package/dist/core/model-selector.js.map +1 -0
- package/dist/core/phase-detector.d.ts +62 -0
- package/dist/core/phase-detector.d.ts.map +1 -0
- package/dist/core/phase-detector.js +229 -0
- package/dist/core/phase-detector.js.map +1 -0
- package/dist/types/cost-tracking.d.ts +43 -0
- package/dist/types/cost-tracking.d.ts.map +1 -0
- package/dist/types/cost-tracking.js +8 -0
- package/dist/types/cost-tracking.js.map +1 -0
- package/dist/types/model-selection.d.ts +53 -0
- package/dist/types/model-selection.d.ts.map +1 -0
- package/dist/types/model-selection.js +12 -0
- package/dist/types/model-selection.js.map +1 -0
- package/dist/utils/cost-reporter.d.ts +58 -0
- package/dist/utils/cost-reporter.d.ts.map +1 -0
- package/dist/utils/cost-reporter.js +224 -0
- package/dist/utils/cost-reporter.js.map +1 -0
- package/dist/utils/pricing-constants.d.ts +70 -0
- package/dist/utils/pricing-constants.d.ts.map +1 -0
- package/dist/utils/pricing-constants.js +71 -0
- package/dist/utils/pricing-constants.js.map +1 -0
- package/package.json +1 -1
- package/src/agents/architect/AGENT.md +3 -0
- package/src/agents/code-reviewer.md +156 -0
- package/src/agents/data-scientist/AGENT.md +181 -0
- package/src/agents/database-optimizer/AGENT.md +147 -0
- package/src/agents/devops/AGENT.md +3 -0
- package/src/agents/diagrams-architect/AGENT.md +3 -0
- package/src/agents/docs-writer/AGENT.md +3 -0
- package/src/agents/kubernetes-architect/AGENT.md +142 -0
- package/src/agents/ml-engineer/AGENT.md +150 -0
- package/src/agents/mlops-engineer/AGENT.md +201 -0
- package/src/agents/network-engineer/AGENT.md +149 -0
- package/src/agents/observability-engineer/AGENT.md +213 -0
- package/src/agents/payment-integration/AGENT.md +35 -0
- package/src/agents/performance/AGENT.md +3 -0
- package/src/agents/performance-engineer/AGENT.md +153 -0
- package/src/agents/pm/AGENT.md +3 -0
- package/src/agents/qa-lead/AGENT.md +3 -0
- package/src/agents/security/AGENT.md +3 -0
- package/src/agents/sre/AGENT.md +3 -0
- package/src/agents/tdd-orchestrator/AGENT.md +169 -0
- package/src/agents/tech-lead/AGENT.md +3 -0
- package/src/commands/specweave.costs.md +261 -0
- package/src/commands/specweave.ml-pipeline.md +292 -0
- package/src/commands/specweave.monitor-setup.md +501 -0
- package/src/commands/specweave.slo-implement.md +1055 -0
- package/src/commands/specweave.sync-github.md +1 -1
- package/src/commands/specweave.tdd-cycle.md +199 -0
- package/src/commands/specweave.tdd-green.md +842 -0
- package/src/commands/specweave.tdd-red.md +135 -0
- package/src/commands/specweave.tdd-refactor.md +165 -0
- package/src/skills/SKILLS-INDEX.md +18 -10
- package/src/skills/billing-automation/SKILL.md +559 -0
- package/src/skills/distributed-tracing/SKILL.md +438 -0
- package/src/skills/e2e-playwright/README.md +1 -1
- package/src/skills/e2e-playwright/package.json +1 -1
- package/src/skills/gitops-workflow/SKILL.md +285 -0
- package/src/skills/gitops-workflow/references/argocd-setup.md +134 -0
- package/src/skills/gitops-workflow/references/sync-policies.md +131 -0
- package/src/skills/grafana-dashboards/SKILL.md +369 -0
- package/src/skills/helm-chart-scaffolding/SKILL.md +544 -0
- package/src/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
- package/src/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
- package/src/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
- package/src/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
- package/src/skills/k8s-manifest-generator/SKILL.md +511 -0
- package/src/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
- package/src/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
- package/src/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
- package/src/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
- package/src/skills/k8s-manifest-generator/references/service-spec.md +724 -0
- package/src/skills/k8s-security-policies/SKILL.md +334 -0
- package/src/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
- package/src/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
- package/src/skills/ml-pipeline-workflow/SKILL.md +245 -0
- package/src/skills/paypal-integration/SKILL.md +467 -0
- package/src/skills/pci-compliance/SKILL.md +466 -0
- package/src/skills/prometheus-configuration/SKILL.md +392 -0
- package/src/skills/slo-implementation/SKILL.md +329 -0
- package/src/skills/stripe-integration/SKILL.md +442 -0
- package/src/skills/tdd-workflow/SKILL.md +378 -0
- package/src/templates/README.md.template +1 -1
- package/src/skills/bmad-method-expert/SKILL.md +0 -626
- package/src/skills/bmad-method-expert/scripts/analyze-project.js +0 -318
- package/src/skills/bmad-method-expert/scripts/check-setup.js +0 -208
- package/src/skills/bmad-method-expert/scripts/generate-template.js +0 -1149
- package/src/skills/bmad-method-expert/scripts/validate-documents.js +0 -340
- package/src/skills/context-optimizer/SKILL.md +0 -588
- package/src/skills/figma-designer/SKILL.md +0 -149
- package/src/skills/figma-implementer/SKILL.md +0 -148
- package/src/skills/figma-mcp-connector/SKILL.md +0 -136
- package/src/skills/figma-to-code/SKILL.md +0 -128
- package/src/skills/spec-kit-expert/SKILL.md +0 -1010
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase Detector
|
|
3
|
+
*
|
|
4
|
+
* Multi-signal phase detection algorithm that analyzes user prompts and context
|
|
5
|
+
* to determine whether work is in planning, execution, or review phase.
|
|
6
|
+
*
|
|
7
|
+
* Uses 4 signals with weighted scoring:
|
|
8
|
+
* 1. Keyword analysis (40%) - Planning/execution/review keywords
|
|
9
|
+
* 2. Command analysis (30%) - Slash commands hint at phase
|
|
10
|
+
* 3. Context analysis (20%) - Increment state, file types
|
|
11
|
+
* 4. Explicit hints (10%) - User explicitly states phase
|
|
12
|
+
*
|
|
13
|
+
* Target accuracy: >95%
|
|
14
|
+
*/
|
|
15
|
+
export class PhaseDetector {
|
|
16
|
+
constructor() {
|
|
17
|
+
// Keyword dictionaries for each phase
|
|
18
|
+
this.planningKeywords = [
|
|
19
|
+
'plan', 'design', 'analyze', 'research', 'architecture', 'decide',
|
|
20
|
+
'strategy', 'requirements', 'specification', 'feasibility', 'explore',
|
|
21
|
+
'brainstorm', 'assess', 'evaluate', 'investigate', 'study', 'conceive',
|
|
22
|
+
'blueprint', 'roadmap', 'scope', 'estimate', 'proposal'
|
|
23
|
+
];
|
|
24
|
+
this.executionKeywords = [
|
|
25
|
+
'implement', 'build', 'create', 'write', 'code', 'generate',
|
|
26
|
+
'develop', 'construct', 'refactor', 'fix', 'update', 'modify',
|
|
27
|
+
'add', 'delete', 'remove', 'change', 'integrate', 'deploy',
|
|
28
|
+
'setup', 'configure', 'install', 'run', 'execute'
|
|
29
|
+
];
|
|
30
|
+
this.reviewKeywords = [
|
|
31
|
+
'review', 'validate', 'audit', 'assess', 'check', 'verify',
|
|
32
|
+
'test', 'evaluate', 'inspect', 'examine', 'quality',
|
|
33
|
+
'debug', 'troubleshoot', 'analyze error', 'find bug', 'measure'
|
|
34
|
+
];
|
|
35
|
+
// Command-to-phase mapping
|
|
36
|
+
this.commandPhaseMap = {
|
|
37
|
+
'/specweave.inc': 'planning',
|
|
38
|
+
'/specweave': 'planning',
|
|
39
|
+
'/increment': 'planning',
|
|
40
|
+
'/specweave.do': 'execution',
|
|
41
|
+
'/do': 'execution',
|
|
42
|
+
'/specweave.validate': 'review',
|
|
43
|
+
'/validate': 'review',
|
|
44
|
+
'/specweave.done': 'review',
|
|
45
|
+
'/spec-driven-brainstorming': 'planning',
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Detect phase from user prompt and execution context
|
|
50
|
+
*/
|
|
51
|
+
detect(prompt, context = {}) {
|
|
52
|
+
const scores = {
|
|
53
|
+
planning: 0,
|
|
54
|
+
execution: 0,
|
|
55
|
+
review: 0,
|
|
56
|
+
};
|
|
57
|
+
const signals = {
|
|
58
|
+
keywords: [],
|
|
59
|
+
context: [],
|
|
60
|
+
};
|
|
61
|
+
// Signal 1: Keyword analysis (40% weight)
|
|
62
|
+
const keywordScore = this.analyzeKeywords(prompt, scores, signals);
|
|
63
|
+
// Signal 2: Command analysis (30% weight)
|
|
64
|
+
const commandScore = this.analyzeCommand(context, scores, signals);
|
|
65
|
+
// Signal 3: Context analysis (20% weight)
|
|
66
|
+
const contextScore = this.analyzeContext(context, scores, signals);
|
|
67
|
+
// Signal 4: Explicit hints (10% weight)
|
|
68
|
+
const hintScore = this.analyzeHints(prompt, scores, signals);
|
|
69
|
+
// Calculate total signal strength
|
|
70
|
+
const totalSignals = keywordScore + commandScore + contextScore + hintScore;
|
|
71
|
+
// Determine winning phase
|
|
72
|
+
const phase = Object.keys(scores).reduce((a, b) => scores[a] > scores[b] ? a : b);
|
|
73
|
+
// Calculate confidence (normalized score of winning phase)
|
|
74
|
+
const maxScore = Math.max(...Object.values(scores));
|
|
75
|
+
const confidence = maxScore > 0 ? scores[phase] / maxScore : 0.5;
|
|
76
|
+
return {
|
|
77
|
+
phase,
|
|
78
|
+
confidence,
|
|
79
|
+
signals,
|
|
80
|
+
reasoning: this.generateReasoning(phase, confidence, signals, totalSignals),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Analyze keywords in prompt
|
|
85
|
+
*/
|
|
86
|
+
analyzeKeywords(prompt, scores, signals) {
|
|
87
|
+
const lowerPrompt = prompt.toLowerCase();
|
|
88
|
+
let matchCount = 0;
|
|
89
|
+
// Check planning keywords
|
|
90
|
+
for (const keyword of this.planningKeywords) {
|
|
91
|
+
if (lowerPrompt.includes(keyword)) {
|
|
92
|
+
scores.planning++;
|
|
93
|
+
if (signals.keywords.length < 5) { // Limit to first 5
|
|
94
|
+
signals.keywords.push(`planning:${keyword}`);
|
|
95
|
+
}
|
|
96
|
+
matchCount++;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Check execution keywords
|
|
100
|
+
for (const keyword of this.executionKeywords) {
|
|
101
|
+
if (lowerPrompt.includes(keyword)) {
|
|
102
|
+
scores.execution++;
|
|
103
|
+
if (signals.keywords.length < 5) {
|
|
104
|
+
signals.keywords.push(`execution:${keyword}`);
|
|
105
|
+
}
|
|
106
|
+
matchCount++;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Check review keywords
|
|
110
|
+
for (const keyword of this.reviewKeywords) {
|
|
111
|
+
if (lowerPrompt.includes(keyword)) {
|
|
112
|
+
scores.review++;
|
|
113
|
+
if (signals.keywords.length < 5) {
|
|
114
|
+
signals.keywords.push(`review:${keyword}`);
|
|
115
|
+
}
|
|
116
|
+
matchCount++;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return matchCount > 0 ? 1 : 0;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Analyze command hints
|
|
123
|
+
*/
|
|
124
|
+
analyzeCommand(context, scores, signals) {
|
|
125
|
+
if (context.command && this.commandPhaseMap[context.command]) {
|
|
126
|
+
const phase = this.commandPhaseMap[context.command];
|
|
127
|
+
scores[phase] += 3; // Strong signal
|
|
128
|
+
signals.command = context.command;
|
|
129
|
+
return 1;
|
|
130
|
+
}
|
|
131
|
+
return 0;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Analyze execution context
|
|
135
|
+
*/
|
|
136
|
+
analyzeContext(context, scores, signals) {
|
|
137
|
+
let signalCount = 0;
|
|
138
|
+
// Increment state signals
|
|
139
|
+
if (context.incrementState === 'backlog' || context.incrementState === 'planned') {
|
|
140
|
+
scores.planning++;
|
|
141
|
+
signals.context.push(`increment:${context.incrementState}`);
|
|
142
|
+
signalCount++;
|
|
143
|
+
}
|
|
144
|
+
else if (context.incrementState === 'in-progress') {
|
|
145
|
+
scores.execution++;
|
|
146
|
+
signals.context.push('increment:in-progress');
|
|
147
|
+
signalCount++;
|
|
148
|
+
}
|
|
149
|
+
else if (context.incrementState === 'completed') {
|
|
150
|
+
scores.review++;
|
|
151
|
+
signals.context.push('increment:completed');
|
|
152
|
+
signalCount++;
|
|
153
|
+
}
|
|
154
|
+
// File modification signals
|
|
155
|
+
if (context.filesModified && context.filesModified.length > 0) {
|
|
156
|
+
const hasArchitectureDocs = context.filesModified.some(f => f.includes('/architecture/') || f.includes('/adr/') || f.includes('spec.md') || f.includes('plan.md'));
|
|
157
|
+
const hasCodeFiles = context.filesModified.some(f => f.endsWith('.ts') || f.endsWith('.js') || f.endsWith('.py') ||
|
|
158
|
+
f.endsWith('.tsx') || f.endsWith('.jsx') || f.endsWith('.java'));
|
|
159
|
+
const hasTestFiles = context.filesModified.some(f => f.includes('.test.') || f.includes('.spec.') || f.includes('__tests__/'));
|
|
160
|
+
if (hasArchitectureDocs) {
|
|
161
|
+
scores.planning++;
|
|
162
|
+
signals.context.push('files:architecture-docs');
|
|
163
|
+
signalCount++;
|
|
164
|
+
}
|
|
165
|
+
if (hasCodeFiles) {
|
|
166
|
+
scores.execution++;
|
|
167
|
+
signals.context.push('files:code-files');
|
|
168
|
+
signalCount++;
|
|
169
|
+
}
|
|
170
|
+
if (hasTestFiles) {
|
|
171
|
+
scores.review++;
|
|
172
|
+
signals.context.push('files:test-files');
|
|
173
|
+
signalCount++;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return signalCount > 0 ? 1 : 0;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Analyze explicit hints in prompt
|
|
180
|
+
*/
|
|
181
|
+
analyzeHints(prompt, scores, signals) {
|
|
182
|
+
const lowerPrompt = prompt.toLowerCase();
|
|
183
|
+
// Explicit phase mentions
|
|
184
|
+
if (lowerPrompt.includes('planning phase') || lowerPrompt.includes('plan for')) {
|
|
185
|
+
scores.planning += 2;
|
|
186
|
+
return 1;
|
|
187
|
+
}
|
|
188
|
+
if (lowerPrompt.includes('implementation') || lowerPrompt.includes('execution phase') || lowerPrompt.includes('build phase')) {
|
|
189
|
+
scores.execution += 2;
|
|
190
|
+
return 1;
|
|
191
|
+
}
|
|
192
|
+
if (lowerPrompt.includes('review phase') || lowerPrompt.includes('validation phase')) {
|
|
193
|
+
scores.review += 2;
|
|
194
|
+
return 1;
|
|
195
|
+
}
|
|
196
|
+
return 0;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Generate human-readable reasoning
|
|
200
|
+
*/
|
|
201
|
+
generateReasoning(phase, confidence, signals, totalSignals) {
|
|
202
|
+
const reasons = [];
|
|
203
|
+
if (signals.command) {
|
|
204
|
+
reasons.push(`command '${signals.command}' indicates ${phase}`);
|
|
205
|
+
}
|
|
206
|
+
const planningKeywords = signals.keywords.filter(k => k.startsWith('planning:')).map(k => k.substring(9));
|
|
207
|
+
const executionKeywords = signals.keywords.filter(k => k.startsWith('execution:')).map(k => k.substring(10));
|
|
208
|
+
const reviewKeywords = signals.keywords.filter(k => k.startsWith('review:')).map(k => k.substring(7));
|
|
209
|
+
if (planningKeywords.length > 0) {
|
|
210
|
+
reasons.push(`planning keywords: ${planningKeywords.slice(0, 3).join(', ')}`);
|
|
211
|
+
}
|
|
212
|
+
if (executionKeywords.length > 0) {
|
|
213
|
+
reasons.push(`execution keywords: ${executionKeywords.slice(0, 3).join(', ')}`);
|
|
214
|
+
}
|
|
215
|
+
if (reviewKeywords.length > 0) {
|
|
216
|
+
reasons.push(`review keywords: ${reviewKeywords.slice(0, 3).join(', ')}`);
|
|
217
|
+
}
|
|
218
|
+
if (signals.context.length > 0) {
|
|
219
|
+
reasons.push(`context: ${signals.context.join(', ')}`);
|
|
220
|
+
}
|
|
221
|
+
const confidencePercent = (confidence * 100).toFixed(0);
|
|
222
|
+
const signalStrength = totalSignals >= 3 ? 'strong' : totalSignals >= 2 ? 'moderate' : 'weak';
|
|
223
|
+
if (reasons.length === 0) {
|
|
224
|
+
return `${phase} phase (${confidencePercent}% confidence, ${signalStrength} signals) - defaulting due to low signal`;
|
|
225
|
+
}
|
|
226
|
+
return `${phase} phase (${confidencePercent}% confidence, ${signalStrength} signals) - ${reasons.join('; ')}`;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=phase-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-detector.js","sourceRoot":"","sources":["../../src/core/phase-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Cost Tracking system
|
|
3
|
+
*
|
|
4
|
+
* Tracks token usage and costs per session, agent, model, and increment.
|
|
5
|
+
* Calculates savings vs all-Sonnet baseline.
|
|
6
|
+
*/
|
|
7
|
+
import type { Model } from './model-selection';
|
|
8
|
+
/**
|
|
9
|
+
* Token usage for a single session
|
|
10
|
+
*/
|
|
11
|
+
export interface TokenUsage {
|
|
12
|
+
inputTokens: number;
|
|
13
|
+
outputTokens: number;
|
|
14
|
+
totalTokens: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Single cost tracking session (one agent invocation)
|
|
18
|
+
*/
|
|
19
|
+
export interface CostSession {
|
|
20
|
+
sessionId: string;
|
|
21
|
+
agent: string;
|
|
22
|
+
model: Exclude<Model, 'auto'>;
|
|
23
|
+
increment?: string;
|
|
24
|
+
command?: string;
|
|
25
|
+
startedAt: string;
|
|
26
|
+
endedAt?: string;
|
|
27
|
+
tokenUsage: TokenUsage;
|
|
28
|
+
cost: number;
|
|
29
|
+
savings: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Cost report for an entire increment
|
|
33
|
+
*/
|
|
34
|
+
export interface IncrementCostReport {
|
|
35
|
+
incrementId: string;
|
|
36
|
+
totalCost: number;
|
|
37
|
+
totalSavings: number;
|
|
38
|
+
totalTokens: number;
|
|
39
|
+
sessionCount: number;
|
|
40
|
+
costByModel: Record<string, number>;
|
|
41
|
+
costByAgent: Record<string, number>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=cost-tracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-tracking.d.ts","sourceRoot":"","sources":["../../src/types/cost-tracking.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-tracking.js","sourceRoot":"","sources":["../../src/types/cost-tracking.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the Intelligent Model Selection system
|
|
3
|
+
*
|
|
4
|
+
* This system automatically routes work to the optimal AI model based on:
|
|
5
|
+
* - Agent preferences (planning vs execution agents)
|
|
6
|
+
* - Phase detection (planning vs execution vs review)
|
|
7
|
+
* - User overrides (manual model selection)
|
|
8
|
+
*
|
|
9
|
+
* Achieves 60-70% cost savings by using Haiku for execution, Sonnet for planning.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Available AI models
|
|
13
|
+
* - sonnet: Latest Sonnet 4.5 (planning, complex analysis)
|
|
14
|
+
* - haiku: Latest Haiku 4.5 (execution, simple tasks)
|
|
15
|
+
* - opus: Latest Opus (rare, critical decisions)
|
|
16
|
+
* - auto: System decides based on context
|
|
17
|
+
*/
|
|
18
|
+
export type Model = 'sonnet' | 'haiku' | 'opus' | 'auto';
|
|
19
|
+
/**
|
|
20
|
+
* Work phases for phase detection
|
|
21
|
+
*/
|
|
22
|
+
export type Phase = 'planning' | 'execution' | 'review';
|
|
23
|
+
/**
|
|
24
|
+
* Cost profiles for agents
|
|
25
|
+
*/
|
|
26
|
+
export type CostProfile = 'planning' | 'execution' | 'hybrid';
|
|
27
|
+
/**
|
|
28
|
+
* Fallback behavior when preferred model fails
|
|
29
|
+
*/
|
|
30
|
+
export type FallbackBehavior = 'strict' | 'flexible' | 'auto';
|
|
31
|
+
/**
|
|
32
|
+
* Agent model preference loaded from AGENT.md frontmatter
|
|
33
|
+
*/
|
|
34
|
+
export interface AgentModelPreference {
|
|
35
|
+
agent: string;
|
|
36
|
+
preference: Model;
|
|
37
|
+
profile: CostProfile;
|
|
38
|
+
fallback: FallbackBehavior;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Model selection decision with reasoning
|
|
42
|
+
*/
|
|
43
|
+
export interface ModelSelectionDecision {
|
|
44
|
+
model: Exclude<Model, 'auto'>;
|
|
45
|
+
reason: 'user_override' | 'agent_preference' | 'phase_detection' | 'low_confidence_default' | 'cost_policy' | 'fallback';
|
|
46
|
+
confidence?: number;
|
|
47
|
+
reasoning: string;
|
|
48
|
+
alternatives?: Array<{
|
|
49
|
+
model: Model;
|
|
50
|
+
score: number;
|
|
51
|
+
}>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=model-selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-selection.d.ts","sourceRoot":"","sources":["../../src/types/model-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,KAAK,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,eAAe,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,wBAAwB,GAAG,aAAa,GAAG,UAAU,CAAC;IACzH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the Intelligent Model Selection system
|
|
3
|
+
*
|
|
4
|
+
* This system automatically routes work to the optimal AI model based on:
|
|
5
|
+
* - Agent preferences (planning vs execution agents)
|
|
6
|
+
* - Phase detection (planning vs execution vs review)
|
|
7
|
+
* - User overrides (manual model selection)
|
|
8
|
+
*
|
|
9
|
+
* Achieves 60-70% cost savings by using Haiku for execution, Sonnet for planning.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=model-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-selection.js","sourceRoot":"","sources":["../../src/types/model-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cost Report Generation
|
|
3
|
+
*
|
|
4
|
+
* Generates human-readable cost reports with multiple export formats:
|
|
5
|
+
* - JSON (machine-readable)
|
|
6
|
+
* - CSV (spreadsheet import)
|
|
7
|
+
* - ASCII Dashboard (CLI display)
|
|
8
|
+
*/
|
|
9
|
+
import type { CostTracker } from '../core/cost-tracker';
|
|
10
|
+
import type { IncrementCostReport } from '../types/cost-tracking';
|
|
11
|
+
export declare class CostReporter {
|
|
12
|
+
private costTracker;
|
|
13
|
+
constructor(costTracker: CostTracker);
|
|
14
|
+
/**
|
|
15
|
+
* Generate cost report for a specific increment
|
|
16
|
+
*
|
|
17
|
+
* @param incrementId - Increment ID (e.g., '0003')
|
|
18
|
+
* @returns Aggregate cost report
|
|
19
|
+
*/
|
|
20
|
+
generateIncrementReport(incrementId: string): IncrementCostReport;
|
|
21
|
+
/**
|
|
22
|
+
* Export report to JSON file
|
|
23
|
+
*
|
|
24
|
+
* @param incrementId - Increment ID
|
|
25
|
+
* @param outputPath - Output file path
|
|
26
|
+
*/
|
|
27
|
+
exportToJSON(incrementId: string, outputPath: string): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Export report to CSV file
|
|
30
|
+
*
|
|
31
|
+
* @param incrementId - Increment ID
|
|
32
|
+
* @param outputPath - Output file path
|
|
33
|
+
*/
|
|
34
|
+
exportToCSV(incrementId: string, outputPath: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Generate ASCII dashboard for CLI display
|
|
37
|
+
*
|
|
38
|
+
* @param incrementId - Optional increment ID (defaults to all increments)
|
|
39
|
+
* @returns ASCII table with cost breakdown
|
|
40
|
+
*/
|
|
41
|
+
generateDashboard(incrementId?: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Generate dashboard for a specific increment
|
|
44
|
+
*/
|
|
45
|
+
private generateIncrementDashboard;
|
|
46
|
+
/**
|
|
47
|
+
* Generate dashboard for all increments
|
|
48
|
+
*/
|
|
49
|
+
private generateOverallDashboard;
|
|
50
|
+
/**
|
|
51
|
+
* Generate compact one-line summary
|
|
52
|
+
*
|
|
53
|
+
* @param incrementId - Optional increment ID
|
|
54
|
+
* @returns One-line summary string
|
|
55
|
+
*/
|
|
56
|
+
generateSummaryLine(incrementId?: string): string;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=cost-reporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-reporter.d.ts","sourceRoot":"","sources":["../../src/utils/cost-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,qBAAa,YAAY;IACX,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAE5C;;;;;OAKG;IACH,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB;IAIjE;;;;;OAKG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1E;;;;;OAKG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCzE;;;;;OAKG;IACH,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAQ/C;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA8FlC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmEhC;;;;;OAKG;IACH,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;CASlD"}
|