@specforge/mcp 2.6.0 → 3.0.1
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/README.md +73 -0
- package/bin/{specforge-mcp → specforge} +0 -5
- package/dist/ai-provider/circuit-breaker.d.ts +63 -0
- package/dist/ai-provider/circuit-breaker.d.ts.map +1 -0
- package/dist/ai-provider/circuit-breaker.js +160 -0
- package/dist/ai-provider/circuit-breaker.js.map +1 -0
- package/dist/ai-provider/cli-version.d.ts +50 -0
- package/dist/ai-provider/cli-version.d.ts.map +1 -0
- package/dist/ai-provider/cli-version.js +141 -0
- package/dist/ai-provider/cli-version.js.map +1 -0
- package/dist/ai-provider/config-loader.d.ts +45 -0
- package/dist/ai-provider/config-loader.d.ts.map +1 -0
- package/dist/ai-provider/config-loader.js +106 -0
- package/dist/ai-provider/config-loader.js.map +1 -0
- package/dist/ai-provider/errors.d.ts +48 -0
- package/dist/ai-provider/errors.d.ts.map +1 -0
- package/dist/ai-provider/errors.js +102 -0
- package/dist/ai-provider/errors.js.map +1 -0
- package/dist/ai-provider/events.d.ts +73 -0
- package/dist/ai-provider/events.d.ts.map +1 -0
- package/dist/ai-provider/events.js +75 -0
- package/dist/ai-provider/events.js.map +1 -0
- package/dist/ai-provider/factory.d.ts +31 -0
- package/dist/ai-provider/factory.d.ts.map +1 -0
- package/dist/ai-provider/factory.js +100 -0
- package/dist/ai-provider/factory.js.map +1 -0
- package/dist/ai-provider/index.d.ts +24 -0
- package/dist/ai-provider/index.d.ts.map +1 -0
- package/dist/ai-provider/index.js +46 -0
- package/dist/ai-provider/index.js.map +1 -0
- package/dist/ai-provider/instance-coordinator.d.ts +54 -0
- package/dist/ai-provider/instance-coordinator.d.ts.map +1 -0
- package/dist/ai-provider/instance-coordinator.js +199 -0
- package/dist/ai-provider/instance-coordinator.js.map +1 -0
- package/dist/ai-provider/jsonl-parser.d.ts +43 -0
- package/dist/ai-provider/jsonl-parser.d.ts.map +1 -0
- package/dist/ai-provider/jsonl-parser.js +107 -0
- package/dist/ai-provider/jsonl-parser.js.map +1 -0
- package/dist/ai-provider/lifecycle.d.ts +50 -0
- package/dist/ai-provider/lifecycle.d.ts.map +1 -0
- package/dist/ai-provider/lifecycle.js +145 -0
- package/dist/ai-provider/lifecycle.js.map +1 -0
- package/dist/ai-provider/logger.d.ts +69 -0
- package/dist/ai-provider/logger.d.ts.map +1 -0
- package/dist/ai-provider/logger.js +161 -0
- package/dist/ai-provider/logger.js.map +1 -0
- package/dist/ai-provider/metrics.d.ts +91 -0
- package/dist/ai-provider/metrics.d.ts.map +1 -0
- package/dist/ai-provider/metrics.js +187 -0
- package/dist/ai-provider/metrics.js.map +1 -0
- package/dist/ai-provider/process-manager.d.ts +97 -0
- package/dist/ai-provider/process-manager.d.ts.map +1 -0
- package/dist/ai-provider/process-manager.js +477 -0
- package/dist/ai-provider/process-manager.js.map +1 -0
- package/dist/ai-provider/providers/claude-code.d.ts +64 -0
- package/dist/ai-provider/providers/claude-code.d.ts.map +1 -0
- package/dist/ai-provider/providers/claude-code.js +205 -0
- package/dist/ai-provider/providers/claude-code.js.map +1 -0
- package/dist/ai-provider/retry-executor.d.ts +52 -0
- package/dist/ai-provider/retry-executor.d.ts.map +1 -0
- package/dist/ai-provider/retry-executor.js +138 -0
- package/dist/ai-provider/retry-executor.js.map +1 -0
- package/dist/ai-provider/safe-args.d.ts +58 -0
- package/dist/ai-provider/safe-args.d.ts.map +1 -0
- package/dist/ai-provider/safe-args.js +176 -0
- package/dist/ai-provider/safe-args.js.map +1 -0
- package/dist/ai-provider/semaphore.d.ts +50 -0
- package/dist/ai-provider/semaphore.d.ts.map +1 -0
- package/dist/ai-provider/semaphore.js +97 -0
- package/dist/ai-provider/semaphore.js.map +1 -0
- package/dist/ai-provider/tracer.d.ts +67 -0
- package/dist/ai-provider/tracer.d.ts.map +1 -0
- package/dist/ai-provider/tracer.js +209 -0
- package/dist/ai-provider/tracer.js.map +1 -0
- package/dist/ai-provider/types.d.ts +181 -0
- package/dist/ai-provider/types.d.ts.map +1 -0
- package/dist/ai-provider/types.js +8 -0
- package/dist/ai-provider/types.js.map +1 -0
- package/dist/autopilot/agents/agent-runner.d.ts +109 -0
- package/dist/autopilot/agents/agent-runner.d.ts.map +1 -0
- package/dist/autopilot/agents/agent-runner.js +731 -0
- package/dist/autopilot/agents/agent-runner.js.map +1 -0
- package/dist/autopilot/agents/agent-selector.d.ts +59 -0
- package/dist/autopilot/agents/agent-selector.d.ts.map +1 -0
- package/dist/autopilot/agents/agent-selector.js +234 -0
- package/dist/autopilot/agents/agent-selector.js.map +1 -0
- package/dist/autopilot/agents/model-selector.d.ts +49 -0
- package/dist/autopilot/agents/model-selector.d.ts.map +1 -0
- package/dist/autopilot/agents/model-selector.js +62 -0
- package/dist/autopilot/agents/model-selector.js.map +1 -0
- package/dist/autopilot/agents/profiles/builtin.d.ts +55 -0
- package/dist/autopilot/agents/profiles/builtin.d.ts.map +1 -0
- package/dist/autopilot/agents/profiles/builtin.js +323 -0
- package/dist/autopilot/agents/profiles/builtin.js.map +1 -0
- package/dist/autopilot/agents/profiles/types.d.ts +98 -0
- package/dist/autopilot/agents/profiles/types.d.ts.map +1 -0
- package/dist/autopilot/agents/profiles/types.js +17 -0
- package/dist/autopilot/agents/profiles/types.js.map +1 -0
- package/dist/autopilot/api/autopilot-api-client.d.ts +217 -0
- package/dist/autopilot/api/autopilot-api-client.d.ts.map +1 -0
- package/dist/autopilot/api/autopilot-api-client.js +402 -0
- package/dist/autopilot/api/autopilot-api-client.js.map +1 -0
- package/dist/autopilot/cli/abort.d.ts +20 -0
- package/dist/autopilot/cli/abort.d.ts.map +1 -0
- package/dist/autopilot/cli/abort.js +201 -0
- package/dist/autopilot/cli/abort.js.map +1 -0
- package/dist/autopilot/cli/display.d.ts +63 -0
- package/dist/autopilot/cli/display.d.ts.map +1 -0
- package/dist/autopilot/cli/display.js +260 -0
- package/dist/autopilot/cli/display.js.map +1 -0
- package/dist/autopilot/cli/index.d.ts +24 -0
- package/dist/autopilot/cli/index.d.ts.map +1 -0
- package/dist/autopilot/cli/index.js +79 -0
- package/dist/autopilot/cli/index.js.map +1 -0
- package/dist/autopilot/cli/pause.d.ts +18 -0
- package/dist/autopilot/cli/pause.d.ts.map +1 -0
- package/dist/autopilot/cli/pause.js +110 -0
- package/dist/autopilot/cli/pause.js.map +1 -0
- package/dist/autopilot/cli/resume.d.ts +22 -0
- package/dist/autopilot/cli/resume.d.ts.map +1 -0
- package/dist/autopilot/cli/resume.js +172 -0
- package/dist/autopilot/cli/resume.js.map +1 -0
- package/dist/autopilot/cli/run.d.ts +25 -0
- package/dist/autopilot/cli/run.d.ts.map +1 -0
- package/dist/autopilot/cli/run.js +220 -0
- package/dist/autopilot/cli/run.js.map +1 -0
- package/dist/autopilot/cli/status.d.ts +20 -0
- package/dist/autopilot/cli/status.d.ts.map +1 -0
- package/dist/autopilot/cli/status.js +217 -0
- package/dist/autopilot/cli/status.js.map +1 -0
- package/dist/autopilot/config.d.ts +45 -0
- package/dist/autopilot/config.d.ts.map +1 -0
- package/dist/autopilot/config.js +269 -0
- package/dist/autopilot/config.js.map +1 -0
- package/dist/autopilot/core/dependency-resolver.d.ts +108 -0
- package/dist/autopilot/core/dependency-resolver.d.ts.map +1 -0
- package/dist/autopilot/core/dependency-resolver.js +394 -0
- package/dist/autopilot/core/dependency-resolver.js.map +1 -0
- package/dist/autopilot/core/dispatcher.d.ts +215 -0
- package/dist/autopilot/core/dispatcher.d.ts.map +1 -0
- package/dist/autopilot/core/dispatcher.js +594 -0
- package/dist/autopilot/core/dispatcher.js.map +1 -0
- package/dist/autopilot/core/failure-handler.d.ts +145 -0
- package/dist/autopilot/core/failure-handler.d.ts.map +1 -0
- package/dist/autopilot/core/failure-handler.js +308 -0
- package/dist/autopilot/core/failure-handler.js.map +1 -0
- package/dist/autopilot/core/rate-limit-handler.d.ts +108 -0
- package/dist/autopilot/core/rate-limit-handler.d.ts.map +1 -0
- package/dist/autopilot/core/rate-limit-handler.js +195 -0
- package/dist/autopilot/core/rate-limit-handler.js.map +1 -0
- package/dist/autopilot/core/state-manager.d.ts +160 -0
- package/dist/autopilot/core/state-manager.d.ts.map +1 -0
- package/dist/autopilot/core/state-manager.js +393 -0
- package/dist/autopilot/core/state-manager.js.map +1 -0
- package/dist/autopilot/core/timeout-manager.d.ts +95 -0
- package/dist/autopilot/core/timeout-manager.d.ts.map +1 -0
- package/dist/autopilot/core/timeout-manager.js +188 -0
- package/dist/autopilot/core/timeout-manager.js.map +1 -0
- package/dist/autopilot/git/branch-manager.d.ts +117 -0
- package/dist/autopilot/git/branch-manager.d.ts.map +1 -0
- package/dist/autopilot/git/branch-manager.js +238 -0
- package/dist/autopilot/git/branch-manager.js.map +1 -0
- package/dist/autopilot/git/index.d.ts +9 -0
- package/dist/autopilot/git/index.d.ts.map +1 -0
- package/dist/autopilot/git/index.js +9 -0
- package/dist/autopilot/git/index.js.map +1 -0
- package/dist/autopilot/git/merge-manager.d.ts +118 -0
- package/dist/autopilot/git/merge-manager.d.ts.map +1 -0
- package/dist/autopilot/git/merge-manager.js +304 -0
- package/dist/autopilot/git/merge-manager.js.map +1 -0
- package/dist/autopilot/git/worktree-manager.d.ts +128 -0
- package/dist/autopilot/git/worktree-manager.d.ts.map +1 -0
- package/dist/autopilot/git/worktree-manager.js +298 -0
- package/dist/autopilot/git/worktree-manager.js.map +1 -0
- package/dist/autopilot/index.d.ts +30 -0
- package/dist/autopilot/index.d.ts.map +1 -0
- package/dist/autopilot/index.js +55 -0
- package/dist/autopilot/index.js.map +1 -0
- package/dist/autopilot/sync/index.d.ts +7 -0
- package/dist/autopilot/sync/index.d.ts.map +1 -0
- package/dist/autopilot/sync/index.js +7 -0
- package/dist/autopilot/sync/index.js.map +1 -0
- package/dist/autopilot/sync/sync-manager.d.ts +168 -0
- package/dist/autopilot/sync/sync-manager.d.ts.map +1 -0
- package/dist/autopilot/sync/sync-manager.js +303 -0
- package/dist/autopilot/sync/sync-manager.js.map +1 -0
- package/dist/autopilot/types.d.ts +454 -0
- package/dist/autopilot/types.d.ts.map +1 -0
- package/dist/autopilot/types.js +26 -0
- package/dist/autopilot/types.js.map +1 -0
- package/dist/autopilot/utils/audit-logger.d.ts +176 -0
- package/dist/autopilot/utils/audit-logger.d.ts.map +1 -0
- package/dist/autopilot/utils/audit-logger.js +308 -0
- package/dist/autopilot/utils/audit-logger.js.map +1 -0
- package/dist/autopilot/utils/cost-tracker.d.ts +162 -0
- package/dist/autopilot/utils/cost-tracker.d.ts.map +1 -0
- package/dist/autopilot/utils/cost-tracker.js +269 -0
- package/dist/autopilot/utils/cost-tracker.js.map +1 -0
- package/dist/autopilot/utils/index.d.ts +9 -0
- package/dist/autopilot/utils/index.d.ts.map +1 -0
- package/dist/autopilot/utils/index.js +9 -0
- package/dist/autopilot/utils/index.js.map +1 -0
- package/dist/autopilot/utils/progress-reporter.d.ts +132 -0
- package/dist/autopilot/utils/progress-reporter.d.ts.map +1 -0
- package/dist/autopilot/utils/progress-reporter.js +290 -0
- package/dist/autopilot/utils/progress-reporter.js.map +1 -0
- package/dist/autopilot/worker/worker-pool.d.ts +179 -0
- package/dist/autopilot/worker/worker-pool.d.ts.map +1 -0
- package/dist/autopilot/worker/worker-pool.js +331 -0
- package/dist/autopilot/worker/worker-pool.js.map +1 -0
- package/dist/autopilot/worker/worker-session.d.ts +171 -0
- package/dist/autopilot/worker/worker-session.d.ts.map +1 -0
- package/dist/autopilot/worker/worker-session.js +295 -0
- package/dist/autopilot/worker/worker-session.js.map +1 -0
- package/dist/cli/commands/debug/call.d.ts.map +1 -1
- package/dist/cli/commands/debug/call.js +5 -1
- package/dist/cli/commands/debug/call.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/tools/core/epic.js +1 -1
- package/dist/tools/core/epic.js.map +1 -1
- package/dist/tools/core/lookup.d.ts.map +1 -1
- package/dist/tools/core/lookup.js +3 -2
- package/dist/tools/core/lookup.js.map +1 -1
- package/dist/tools/core/specification.js +1 -1
- package/dist/tools/core/specification.js.map +1 -1
- package/dist/tools/core/ticket.d.ts.map +1 -1
- package/dist/tools/core/ticket.js +4 -6
- package/dist/tools/core/ticket.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +60 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +4 -1
- package/dist/validation/index.js.map +1 -1
- package/package.json +8 -4
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit Logger
|
|
3
|
+
*
|
|
4
|
+
* JSONL logging for autopilot runs.
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'fs/promises';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
/**
|
|
9
|
+
* Audit Logger
|
|
10
|
+
*
|
|
11
|
+
* Writes structured JSONL logs for autopilot runs.
|
|
12
|
+
*/
|
|
13
|
+
export class AuditLogger {
|
|
14
|
+
runId;
|
|
15
|
+
logFilePath;
|
|
16
|
+
writeQueue = [];
|
|
17
|
+
isWriting = false;
|
|
18
|
+
initialized = false;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.runId = options.runId;
|
|
21
|
+
const logDir = options.logDir || path.join(options.workingDirectory, '.specforge', 'logs');
|
|
22
|
+
this.logFilePath = path.join(logDir, `autopilot-${options.runId}.jsonl`);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the logger
|
|
26
|
+
*/
|
|
27
|
+
async initialize() {
|
|
28
|
+
if (this.initialized)
|
|
29
|
+
return;
|
|
30
|
+
// Ensure log directory exists
|
|
31
|
+
const logDir = path.dirname(this.logFilePath);
|
|
32
|
+
await fs.mkdir(logDir, { recursive: true });
|
|
33
|
+
this.initialized = true;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Log an entry
|
|
37
|
+
*/
|
|
38
|
+
async log(type, data = {}) {
|
|
39
|
+
const entry = {
|
|
40
|
+
timestamp: new Date().toISOString(),
|
|
41
|
+
runId: this.runId,
|
|
42
|
+
type,
|
|
43
|
+
data,
|
|
44
|
+
};
|
|
45
|
+
this.writeQueue.push(entry);
|
|
46
|
+
await this.processQueue();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Process the write queue
|
|
50
|
+
*/
|
|
51
|
+
async processQueue() {
|
|
52
|
+
if (this.isWriting || this.writeQueue.length === 0) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.isWriting = true;
|
|
56
|
+
try {
|
|
57
|
+
// Ensure initialized
|
|
58
|
+
if (!this.initialized) {
|
|
59
|
+
await this.initialize();
|
|
60
|
+
}
|
|
61
|
+
// Take all entries from queue
|
|
62
|
+
const entries = [...this.writeQueue];
|
|
63
|
+
this.writeQueue = [];
|
|
64
|
+
// Write entries to file
|
|
65
|
+
const lines = entries.map(e => JSON.stringify(e)).join('\n') + '\n';
|
|
66
|
+
await fs.appendFile(this.logFilePath, lines);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
// Re-add entries to queue on error
|
|
70
|
+
// But don't let the queue grow unbounded
|
|
71
|
+
if (this.writeQueue.length < 1000) {
|
|
72
|
+
this.writeQueue.unshift(...this.writeQueue);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
this.isWriting = false;
|
|
77
|
+
// Process remaining entries
|
|
78
|
+
if (this.writeQueue.length > 0) {
|
|
79
|
+
await this.processQueue();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Log run started
|
|
85
|
+
*/
|
|
86
|
+
async logRunStarted(data) {
|
|
87
|
+
await this.log('run:started', data);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Log run completed
|
|
91
|
+
*/
|
|
92
|
+
async logRunCompleted(data) {
|
|
93
|
+
await this.log('run:completed', data);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Log run paused
|
|
97
|
+
*/
|
|
98
|
+
async logRunPaused(reason) {
|
|
99
|
+
await this.log('run:paused', { reason });
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Log run resumed
|
|
103
|
+
*/
|
|
104
|
+
async logRunResumed() {
|
|
105
|
+
await this.log('run:resumed', {});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Log run aborted
|
|
109
|
+
*/
|
|
110
|
+
async logRunAborted(reason) {
|
|
111
|
+
await this.log('run:aborted', { reason });
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Log epic started
|
|
115
|
+
*/
|
|
116
|
+
async logEpicStarted(epicId, epicTitle) {
|
|
117
|
+
await this.log('epic:started', { epicId, epicTitle });
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Log epic completed
|
|
121
|
+
*/
|
|
122
|
+
async logEpicCompleted(epicId, ticketsCompleted, ticketsFailed) {
|
|
123
|
+
await this.log('epic:completed', {
|
|
124
|
+
epicId,
|
|
125
|
+
ticketsCompleted,
|
|
126
|
+
ticketsFailed,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Log epic failed
|
|
131
|
+
*/
|
|
132
|
+
async logEpicFailed(epicId, error) {
|
|
133
|
+
await this.log('epic:failed', { epicId, error });
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Log ticket started
|
|
137
|
+
*/
|
|
138
|
+
async logTicketStarted(ticketId, ticketTitle, workerId) {
|
|
139
|
+
await this.log('ticket:started', {
|
|
140
|
+
ticketId,
|
|
141
|
+
ticketTitle,
|
|
142
|
+
workerId,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Log ticket completed
|
|
147
|
+
*/
|
|
148
|
+
async logTicketCompleted(ticketId, workerId, costUsd, tokens, filesModified) {
|
|
149
|
+
await this.log('ticket:completed', {
|
|
150
|
+
ticketId,
|
|
151
|
+
workerId,
|
|
152
|
+
costUsd,
|
|
153
|
+
tokens,
|
|
154
|
+
filesModified,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Log ticket failed
|
|
159
|
+
*/
|
|
160
|
+
async logTicketFailed(ticketId, workerId, error, retryCount) {
|
|
161
|
+
await this.log('ticket:failed', {
|
|
162
|
+
ticketId,
|
|
163
|
+
workerId,
|
|
164
|
+
error,
|
|
165
|
+
retryCount,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Log ticket retried
|
|
170
|
+
*/
|
|
171
|
+
async logTicketRetried(ticketId, workerId, retryCount) {
|
|
172
|
+
await this.log('ticket:retried', {
|
|
173
|
+
ticketId,
|
|
174
|
+
workerId,
|
|
175
|
+
retryCount,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Log worker created
|
|
180
|
+
*/
|
|
181
|
+
async logWorkerCreated(workerId, worktreePath) {
|
|
182
|
+
await this.log('worker:created', { workerId, worktreePath });
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Log worker status change
|
|
186
|
+
*/
|
|
187
|
+
async logWorkerStatus(workerId, status, ticketId) {
|
|
188
|
+
await this.log(`worker:${status === 'idle' ? 'idle' : 'started'}`, {
|
|
189
|
+
workerId,
|
|
190
|
+
status,
|
|
191
|
+
ticketId,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Log cost threshold
|
|
196
|
+
*/
|
|
197
|
+
async logCostThreshold(threshold, currentCost, percentUsed) {
|
|
198
|
+
await this.log('cost:threshold', {
|
|
199
|
+
threshold,
|
|
200
|
+
currentCost,
|
|
201
|
+
percentUsed,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Log cost limit reached
|
|
206
|
+
*/
|
|
207
|
+
async logCostLimitReached(limit, currentCost) {
|
|
208
|
+
await this.log('cost:limit_reached', { limit, currentCost });
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Log rate limit hit
|
|
212
|
+
*/
|
|
213
|
+
async logRateLimitHit(retryAfterMs, provider) {
|
|
214
|
+
await this.log('rate_limit:hit', { retryAfterMs, provider });
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Log rate limit cleared
|
|
218
|
+
*/
|
|
219
|
+
async logRateLimitCleared() {
|
|
220
|
+
await this.log('rate_limit:cleared', {});
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Log systemic error
|
|
224
|
+
*/
|
|
225
|
+
async logSystemicError(errorType, errorCount, message) {
|
|
226
|
+
await this.log('error:systemic', {
|
|
227
|
+
errorType,
|
|
228
|
+
errorCount,
|
|
229
|
+
message,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Log git commit
|
|
234
|
+
*/
|
|
235
|
+
async logGitCommit(ticketId, commitHash, branch) {
|
|
236
|
+
await this.log('git:commit', { ticketId, commitHash, branch });
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Log git merge
|
|
240
|
+
*/
|
|
241
|
+
async logGitMerge(sourceBranch, targetBranch, success, commitHash) {
|
|
242
|
+
await this.log('git:merge', {
|
|
243
|
+
sourceBranch,
|
|
244
|
+
targetBranch,
|
|
245
|
+
success,
|
|
246
|
+
commitHash,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Log git conflict
|
|
251
|
+
*/
|
|
252
|
+
async logGitConflict(sourceBranch, targetBranch, files) {
|
|
253
|
+
await this.log('git:conflict', {
|
|
254
|
+
sourceBranch,
|
|
255
|
+
targetBranch,
|
|
256
|
+
files,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Flush pending writes
|
|
261
|
+
*/
|
|
262
|
+
async flush() {
|
|
263
|
+
while (this.writeQueue.length > 0 || this.isWriting) {
|
|
264
|
+
await new Promise(resolve => setTimeout(resolve, 10));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get log file path
|
|
269
|
+
*/
|
|
270
|
+
getLogFilePath() {
|
|
271
|
+
return this.logFilePath;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Get run ID
|
|
275
|
+
*/
|
|
276
|
+
getRunId() {
|
|
277
|
+
return this.runId;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Read log entries
|
|
281
|
+
*/
|
|
282
|
+
async readEntries() {
|
|
283
|
+
try {
|
|
284
|
+
const content = await fs.readFile(this.logFilePath, 'utf-8');
|
|
285
|
+
return content
|
|
286
|
+
.split('\n')
|
|
287
|
+
.filter(line => line.trim().length > 0)
|
|
288
|
+
.map(line => JSON.parse(line));
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
return [];
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get entries by type
|
|
296
|
+
*/
|
|
297
|
+
async getEntriesByType(type) {
|
|
298
|
+
const entries = await this.readEntries();
|
|
299
|
+
return entries.filter(e => e.type === type);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Create an audit logger
|
|
304
|
+
*/
|
|
305
|
+
export function createAuditLogger(options) {
|
|
306
|
+
return new AuditLogger(options);
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=audit-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-logger.js","sourceRoot":"","sources":["../../../src/autopilot/utils/audit-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cost Tracker
|
|
3
|
+
*
|
|
4
|
+
* Tracks and estimates token usage costs for autopilot runs.
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from 'events';
|
|
7
|
+
import type { TokenUsage } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Model pricing (per million tokens)
|
|
10
|
+
*/
|
|
11
|
+
export interface ModelPricing {
|
|
12
|
+
inputCostPer1M: number;
|
|
13
|
+
outputCostPer1M: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Built-in model pricing
|
|
17
|
+
*/
|
|
18
|
+
export declare const MODEL_PRICING: Record<string, ModelPricing>;
|
|
19
|
+
/**
|
|
20
|
+
* Cost threshold warning
|
|
21
|
+
*/
|
|
22
|
+
export interface CostThresholdWarning {
|
|
23
|
+
threshold: number;
|
|
24
|
+
currentCost: number;
|
|
25
|
+
percentUsed: number;
|
|
26
|
+
message: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Cost snapshot
|
|
30
|
+
*/
|
|
31
|
+
export interface CostSnapshot {
|
|
32
|
+
totalCostUsd: number;
|
|
33
|
+
totalInputTokens: number;
|
|
34
|
+
totalOutputTokens: number;
|
|
35
|
+
ticketCount: number;
|
|
36
|
+
averageCostPerTicket: number;
|
|
37
|
+
timestamp: Date;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Cost Tracker Events
|
|
41
|
+
*/
|
|
42
|
+
export interface CostTrackerEvents {
|
|
43
|
+
'cost:updated': {
|
|
44
|
+
totalCost: number;
|
|
45
|
+
lastCost: number;
|
|
46
|
+
};
|
|
47
|
+
'cost:threshold': CostThresholdWarning;
|
|
48
|
+
'cost:limit_reached': {
|
|
49
|
+
limit: number;
|
|
50
|
+
currentCost: number;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Cost Tracker Options
|
|
55
|
+
*/
|
|
56
|
+
export interface CostTrackerOptions {
|
|
57
|
+
maxTotalCostUsd?: number;
|
|
58
|
+
warningThresholds?: number[];
|
|
59
|
+
modelPricing?: Record<string, ModelPricing>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Cost Tracker
|
|
63
|
+
*
|
|
64
|
+
* Tracks token usage and estimates costs, emitting warnings at thresholds.
|
|
65
|
+
*/
|
|
66
|
+
export declare class CostTracker extends EventEmitter {
|
|
67
|
+
private totalCostUsd;
|
|
68
|
+
private totalInputTokens;
|
|
69
|
+
private totalOutputTokens;
|
|
70
|
+
private ticketCount;
|
|
71
|
+
private maxTotalCostUsd;
|
|
72
|
+
private warningThresholds;
|
|
73
|
+
private triggeredThresholds;
|
|
74
|
+
private modelPricing;
|
|
75
|
+
private costHistory;
|
|
76
|
+
constructor(options?: CostTrackerOptions);
|
|
77
|
+
/**
|
|
78
|
+
* Estimate cost from token usage
|
|
79
|
+
*/
|
|
80
|
+
estimateCost(tokens: TokenUsage, model?: string): number;
|
|
81
|
+
/**
|
|
82
|
+
* Add token usage and update cost
|
|
83
|
+
*/
|
|
84
|
+
addTokenUsage(tokens: TokenUsage, model?: string): number;
|
|
85
|
+
/**
|
|
86
|
+
* Add direct cost (when tokens aren't available)
|
|
87
|
+
*/
|
|
88
|
+
addDirectCost(costUsd: number): void;
|
|
89
|
+
/**
|
|
90
|
+
* Check and emit threshold warnings
|
|
91
|
+
*/
|
|
92
|
+
private checkThresholds;
|
|
93
|
+
/**
|
|
94
|
+
* Get threshold warning message
|
|
95
|
+
*/
|
|
96
|
+
private getThresholdMessage;
|
|
97
|
+
/**
|
|
98
|
+
* Check if cost limit is reached
|
|
99
|
+
*/
|
|
100
|
+
isLimitReached(): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Get remaining budget
|
|
103
|
+
*/
|
|
104
|
+
getRemainingBudget(): number;
|
|
105
|
+
/**
|
|
106
|
+
* Get budget utilization percentage
|
|
107
|
+
*/
|
|
108
|
+
getBudgetUtilization(): number;
|
|
109
|
+
/**
|
|
110
|
+
* Get total cost
|
|
111
|
+
*/
|
|
112
|
+
getTotalCost(): number;
|
|
113
|
+
/**
|
|
114
|
+
* Get total tokens
|
|
115
|
+
*/
|
|
116
|
+
getTotalTokens(): TokenUsage;
|
|
117
|
+
/**
|
|
118
|
+
* Get average cost per ticket
|
|
119
|
+
*/
|
|
120
|
+
getAverageCostPerTicket(): number;
|
|
121
|
+
/**
|
|
122
|
+
* Get ticket count
|
|
123
|
+
*/
|
|
124
|
+
getTicketCount(): number;
|
|
125
|
+
/**
|
|
126
|
+
* Get cost snapshot
|
|
127
|
+
*/
|
|
128
|
+
getSnapshot(): CostSnapshot;
|
|
129
|
+
/**
|
|
130
|
+
* Get cost history
|
|
131
|
+
*/
|
|
132
|
+
getCostHistory(): CostSnapshot[];
|
|
133
|
+
/**
|
|
134
|
+
* Estimate remaining tickets based on average cost
|
|
135
|
+
*/
|
|
136
|
+
estimateRemainingTickets(): number;
|
|
137
|
+
/**
|
|
138
|
+
* Format cost as currency string
|
|
139
|
+
*/
|
|
140
|
+
formatCost(cost: number): string;
|
|
141
|
+
/**
|
|
142
|
+
* Get cost summary string
|
|
143
|
+
*/
|
|
144
|
+
getSummary(): string;
|
|
145
|
+
/**
|
|
146
|
+
* Reset tracker
|
|
147
|
+
*/
|
|
148
|
+
reset(): void;
|
|
149
|
+
/**
|
|
150
|
+
* Update max cost limit
|
|
151
|
+
*/
|
|
152
|
+
setMaxCost(maxCostUsd: number): void;
|
|
153
|
+
/**
|
|
154
|
+
* Get max cost limit
|
|
155
|
+
*/
|
|
156
|
+
getMaxCost(): number;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Create a cost tracker
|
|
160
|
+
*/
|
|
161
|
+
export declare function createCostTracker(options?: CostTrackerOptions): CostTracker;
|
|
162
|
+
//# sourceMappingURL=cost-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-tracker.d.ts","sourceRoot":"","sources":["../../../src/autopilot/utils/cost-tracker.ts"],"names":[],"mappings":"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"}
|