codesession-cli 1.0.0 → 1.3.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/agents.js ADDED
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+ /**
3
+ * Agent Sessions - Programmatic API for AI agents
4
+ *
5
+ * Track agent runs with automatic file watching, git tracking,
6
+ * AI cost logging, and budget enforcement.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { AgentSession } from 'codesession-cli/agents';
11
+ *
12
+ * const session = new AgentSession('Refactor auth module', {
13
+ * budget: 5.00,
14
+ * directory: './src',
15
+ * git: true,
16
+ * });
17
+ *
18
+ * session.start();
19
+ * // ... agent does work ...
20
+ * const summary = session.end();
21
+ * ```
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.BudgetExceededError = exports.AgentSession = void 0;
25
+ exports.runAgentSession = runAgentSession;
26
+ const db_1 = require("./db");
27
+ const git_1 = require("./git");
28
+ const watcher_1 = require("./watcher");
29
+ class AgentSession {
30
+ constructor(name, config = {}) {
31
+ this.sessionId = null;
32
+ this.gitInterval = null;
33
+ this.totalCost = 0;
34
+ this.totalTokens = 0;
35
+ this.started = false;
36
+ this.ended = false;
37
+ this.name = name;
38
+ this.config = {
39
+ git: true,
40
+ gitPollInterval: 5000,
41
+ ...config,
42
+ };
43
+ }
44
+ /**
45
+ * Start the agent session. Begins file watching and git tracking.
46
+ * @returns The session ID
47
+ */
48
+ start() {
49
+ if (this.started) {
50
+ throw new Error(`Session "${this.name}" is already started.`);
51
+ }
52
+ if (this.ended) {
53
+ throw new Error(`Session "${this.name}" has already ended. Create a new AgentSession.`);
54
+ }
55
+ const cwd = this.config.directory || process.cwd();
56
+ this.sessionId = (0, db_1.createSession)({
57
+ name: this.name,
58
+ startTime: new Date().toISOString(),
59
+ workingDirectory: cwd,
60
+ filesChanged: 0,
61
+ commits: 0,
62
+ aiCost: 0,
63
+ aiTokens: 0,
64
+ status: 'active',
65
+ });
66
+ // Start file watcher
67
+ (0, watcher_1.startWatcher)(this.sessionId, cwd);
68
+ // Start git polling
69
+ if (this.config.git) {
70
+ (0, git_1.initGit)(cwd);
71
+ this.gitInterval = setInterval(async () => {
72
+ if (this.sessionId) {
73
+ await (0, git_1.checkForNewCommits)(this.sessionId);
74
+ }
75
+ }, this.config.gitPollInterval);
76
+ }
77
+ this.started = true;
78
+ return this.sessionId;
79
+ }
80
+ /**
81
+ * Log AI usage for this session. Automatically checks budget.
82
+ * Cost is optional — auto-calculated from built-in pricing if omitted (requires known model).
83
+ * @returns The remaining budget (null if no budget set)
84
+ * @throws BudgetExceededError if budget is exceeded
85
+ */
86
+ logAI(provider, model, tokens, cost, options) {
87
+ this.assertStarted();
88
+ (0, db_1.addAIUsage)({
89
+ sessionId: this.sessionId,
90
+ provider,
91
+ model,
92
+ tokens,
93
+ promptTokens: options?.promptTokens,
94
+ completionTokens: options?.completionTokens,
95
+ cost,
96
+ timestamp: new Date().toISOString(),
97
+ });
98
+ this.totalCost += cost;
99
+ this.totalTokens += tokens;
100
+ // Notify callback
101
+ if (this.config.onAIUsage) {
102
+ this.config.onAIUsage(cost, this.totalCost, model);
103
+ }
104
+ // Check budget
105
+ if (this.config.budget !== undefined && this.totalCost >= this.config.budget) {
106
+ if (this.config.onBudgetExceeded) {
107
+ this.config.onBudgetExceeded(this.totalCost, this.config.budget);
108
+ }
109
+ this.end(`Budget exceeded: $${this.totalCost.toFixed(2)} / $${this.config.budget.toFixed(2)}`);
110
+ throw new BudgetExceededError(this.totalCost, this.config.budget);
111
+ }
112
+ return this.config.budget !== undefined
113
+ ? Math.max(0, this.config.budget - this.totalCost)
114
+ : null;
115
+ }
116
+ /**
117
+ * Check how much budget remains.
118
+ * @returns Remaining budget in dollars, or null if no budget set
119
+ */
120
+ get budgetRemaining() {
121
+ if (this.config.budget === undefined)
122
+ return null;
123
+ return Math.max(0, this.config.budget - this.totalCost);
124
+ }
125
+ /** Current total cost spent in this session */
126
+ get spent() {
127
+ return this.totalCost;
128
+ }
129
+ /** Current total tokens used in this session */
130
+ get tokens() {
131
+ return this.totalTokens;
132
+ }
133
+ /** Whether this session is currently active */
134
+ get isActive() {
135
+ return this.started && !this.ended;
136
+ }
137
+ /** The database session ID (null if not started) */
138
+ get id() {
139
+ return this.sessionId;
140
+ }
141
+ /**
142
+ * End the agent session and return a full summary.
143
+ */
144
+ end(notes) {
145
+ this.assertStarted();
146
+ // Stop tracking
147
+ (0, watcher_1.stopWatcher)();
148
+ if (this.gitInterval) {
149
+ clearInterval(this.gitInterval);
150
+ this.gitInterval = null;
151
+ }
152
+ const endTime = new Date().toISOString();
153
+ (0, db_1.endSession)(this.sessionId, endTime, notes);
154
+ this.ended = true;
155
+ // Build summary
156
+ const session = (0, db_1.getSession)(this.sessionId);
157
+ const files = (0, db_1.getFileChanges)(this.sessionId);
158
+ const commits = (0, db_1.getCommits)(this.sessionId);
159
+ const aiUsage = (0, db_1.getAIUsage)(this.sessionId);
160
+ return {
161
+ sessionId: this.sessionId,
162
+ name: this.name,
163
+ duration: session.duration || 0,
164
+ filesChanged: session.filesChanged,
165
+ commits: session.commits,
166
+ aiCost: session.aiCost,
167
+ aiTokens: session.aiTokens,
168
+ budgetRemaining: this.config.budget !== undefined
169
+ ? Math.max(0, this.config.budget - session.aiCost)
170
+ : null,
171
+ files: files.map((f) => ({
172
+ path: f.filePath,
173
+ type: f.changeType,
174
+ timestamp: f.timestamp,
175
+ })),
176
+ commitList: commits.map((c) => ({
177
+ hash: c.hash,
178
+ message: c.message,
179
+ timestamp: c.timestamp,
180
+ })),
181
+ aiUsageBreakdown: aiUsage.map((a) => ({
182
+ provider: a.provider,
183
+ model: a.model,
184
+ tokens: a.tokens,
185
+ cost: a.cost,
186
+ timestamp: a.timestamp,
187
+ })),
188
+ metadata: this.config.metadata,
189
+ };
190
+ }
191
+ /**
192
+ * Check if an AI call would exceed the budget.
193
+ * Useful for pre-flight checks before making expensive API calls.
194
+ * @returns true if the call would stay within budget
195
+ */
196
+ canAfford(estimatedCost) {
197
+ if (this.config.budget === undefined)
198
+ return true;
199
+ return this.totalCost + estimatedCost <= this.config.budget;
200
+ }
201
+ assertStarted() {
202
+ if (!this.started) {
203
+ throw new Error(`Session "${this.name}" has not been started. Call .start() first.`);
204
+ }
205
+ if (this.ended) {
206
+ throw new Error(`Session "${this.name}" has already ended.`);
207
+ }
208
+ }
209
+ }
210
+ exports.AgentSession = AgentSession;
211
+ /**
212
+ * Thrown when an agent session exceeds its budget.
213
+ * Catch this to handle budget enforcement gracefully.
214
+ *
215
+ * @example
216
+ * ```typescript
217
+ * try {
218
+ * session.logAI('openai', 'gpt-4o', 5000, 0.10);
219
+ * } catch (e) {
220
+ * if (e instanceof BudgetExceededError) {
221
+ * console.log(`Over budget: spent $${e.spent}, limit $${e.budget}`);
222
+ * }
223
+ * }
224
+ * ```
225
+ */
226
+ class BudgetExceededError extends Error {
227
+ constructor(spent, budget) {
228
+ super(`Budget exceeded: spent $${spent.toFixed(2)} of $${budget.toFixed(2)} limit`);
229
+ this.name = 'BudgetExceededError';
230
+ this.spent = spent;
231
+ this.budget = budget;
232
+ }
233
+ }
234
+ exports.BudgetExceededError = BudgetExceededError;
235
+ /**
236
+ * Quick helper to run an agent function within a tracked session.
237
+ * Handles start/end/error automatically.
238
+ *
239
+ * @example
240
+ * ```typescript
241
+ * const summary = await runAgentSession('Fix all linting errors', {
242
+ * budget: 3.00,
243
+ * directory: './src',
244
+ * }, async (session) => {
245
+ * // Your agent logic here
246
+ * const response = await openai.chat.completions.create({ ... });
247
+ * session.logAI('openai', 'gpt-4o', response.usage.total_tokens, 0.05);
248
+ * });
249
+ * ```
250
+ */
251
+ async function runAgentSession(name, config, agentFn) {
252
+ const session = new AgentSession(name, config);
253
+ session.start();
254
+ try {
255
+ await agentFn(session);
256
+ }
257
+ catch (error) {
258
+ if (error instanceof BudgetExceededError) {
259
+ // Session already ended by logAI, return summary from DB
260
+ const dbSession = (0, db_1.getSession)(session.id);
261
+ const files = (0, db_1.getFileChanges)(session.id);
262
+ const commits = (0, db_1.getCommits)(session.id);
263
+ const aiUsage = (0, db_1.getAIUsage)(session.id);
264
+ return {
265
+ sessionId: session.id,
266
+ name,
267
+ duration: dbSession.duration || 0,
268
+ filesChanged: dbSession.filesChanged,
269
+ commits: dbSession.commits,
270
+ aiCost: dbSession.aiCost,
271
+ aiTokens: dbSession.aiTokens,
272
+ budgetRemaining: 0,
273
+ files: files.map((f) => ({ path: f.filePath, type: f.changeType, timestamp: f.timestamp })),
274
+ commitList: commits.map((c) => ({ hash: c.hash, message: c.message, timestamp: c.timestamp })),
275
+ aiUsageBreakdown: aiUsage.map((a) => ({ provider: a.provider, model: a.model, tokens: a.tokens, cost: a.cost, timestamp: a.timestamp })),
276
+ metadata: config.metadata,
277
+ };
278
+ }
279
+ // For non-budget errors, end session with error note and re-throw
280
+ if (session.isActive) {
281
+ session.end(`Error: ${error.message}`);
282
+ }
283
+ throw error;
284
+ }
285
+ if (session.isActive) {
286
+ return session.end();
287
+ }
288
+ // Session was ended during agentFn (e.g. explicit end call)
289
+ const dbSession = (0, db_1.getSession)(session.id);
290
+ const files = (0, db_1.getFileChanges)(session.id);
291
+ const commitsList = (0, db_1.getCommits)(session.id);
292
+ const aiUsage = (0, db_1.getAIUsage)(session.id);
293
+ return {
294
+ sessionId: session.id,
295
+ name,
296
+ duration: dbSession.duration || 0,
297
+ filesChanged: dbSession.filesChanged,
298
+ commits: dbSession.commits,
299
+ aiCost: dbSession.aiCost,
300
+ aiTokens: dbSession.aiTokens,
301
+ budgetRemaining: config.budget !== undefined ? Math.max(0, config.budget - dbSession.aiCost) : null,
302
+ files: files.map((f) => ({ path: f.filePath, type: f.changeType, timestamp: f.timestamp })),
303
+ commitList: commitsList.map((c) => ({ hash: c.hash, message: c.message, timestamp: c.timestamp })),
304
+ aiUsageBreakdown: aiUsage.map((a) => ({ provider: a.provider, model: a.model, tokens: a.tokens, cost: a.cost, timestamp: a.timestamp })),
305
+ metadata: config.metadata,
306
+ };
307
+ }
308
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
package/dist/db.d.ts CHANGED
@@ -10,6 +10,7 @@ export declare function addAIUsage(usage: Omit<AIUsage, 'id'>): void;
10
10
  export declare function getFileChanges(sessionId: number): FileChange[];
11
11
  export declare function getCommits(sessionId: number): Commit[];
12
12
  export declare function getAIUsage(sessionId: number): AIUsage[];
13
+ export declare function exportSessions(format: 'json' | 'csv', limit?: number): string;
13
14
  export declare function getStats(): SessionStats;
14
15
  export declare function closeDb(): void;
15
16
  //# sourceMappingURL=db.d.ts.map
package/dist/db.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAgE7E,wBAAgB,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,CAOlE;AAED,wBAAgB,gBAAgB,IAAI,OAAO,GAAG,IAAI,CAKjD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAYnF;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAI5D;AAED,wBAAgB,WAAW,CAAC,KAAK,SAAK,GAAG,OAAO,EAAE,CAIjD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI,CAalE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAa1D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAgB3D;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CAU9D;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAUtD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAYvD;AAED,wBAAgB,QAAQ,IAAI,YAAY,CAqBvC;AAmBD,wBAAgB,OAAO,IAAI,IAAI,CAE9B"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA8E7E,wBAAgB,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,CAOlE;AAED,wBAAgB,gBAAgB,IAAI,OAAO,GAAG,IAAI,CAKjD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAYnF;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAI5D;AAED,wBAAgB,WAAW,CAAC,KAAK,SAAK,GAAG,OAAO,EAAE,CAIjD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI,CAalE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAa1D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAkB3D;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CAU9D;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAUtD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAcvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAuB7E;AAED,wBAAgB,QAAQ,IAAI,YAAY,CAqBvC;AAmBD,wBAAgB,OAAO,IAAI,IAAI,CAE9B"}
package/dist/db.js CHANGED
@@ -14,6 +14,7 @@ exports.addAIUsage = addAIUsage;
14
14
  exports.getFileChanges = getFileChanges;
15
15
  exports.getCommits = getCommits;
16
16
  exports.getAIUsage = getAIUsage;
17
+ exports.exportSessions = exportSessions;
17
18
  exports.getStats = getStats;
18
19
  exports.closeDb = closeDb;
19
20
  const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
@@ -26,6 +27,9 @@ if (!(0, fs_1.existsSync)(DB_DIR)) {
26
27
  (0, fs_1.mkdirSync)(DB_DIR, { recursive: true });
27
28
  }
28
29
  const db = new better_sqlite3_1.default(DB_PATH);
30
+ // Enable WAL mode + busy timeout for concurrent access safety
31
+ db.pragma('journal_mode = WAL');
32
+ db.pragma('busy_timeout = 5000');
29
33
  // Initialize database
30
34
  db.exec(`
31
35
  CREATE TABLE IF NOT EXISTS sessions (
@@ -70,11 +74,22 @@ db.exec(`
70
74
  provider TEXT NOT NULL,
71
75
  model TEXT NOT NULL,
72
76
  tokens INTEGER NOT NULL,
77
+ prompt_tokens INTEGER,
78
+ completion_tokens INTEGER,
73
79
  cost REAL NOT NULL,
74
80
  timestamp TEXT NOT NULL,
75
81
  FOREIGN KEY (session_id) REFERENCES sessions(id)
76
82
  )
77
83
  `);
84
+ // Migration: add granular token columns if missing
85
+ try {
86
+ db.exec('ALTER TABLE ai_usage ADD COLUMN prompt_tokens INTEGER');
87
+ }
88
+ catch (_) { /* column already exists */ }
89
+ try {
90
+ db.exec('ALTER TABLE ai_usage ADD COLUMN completion_tokens INTEGER');
91
+ }
92
+ catch (_) { /* column already exists */ }
78
93
  function createSession(session) {
79
94
  const stmt = db.prepare(`
80
95
  INSERT INTO sessions (name, start_time, working_directory, status)
@@ -138,10 +153,10 @@ function addCommit(commit) {
138
153
  }
139
154
  function addAIUsage(usage) {
140
155
  const stmt = db.prepare(`
141
- INSERT INTO ai_usage (session_id, provider, model, tokens, cost, timestamp)
142
- VALUES (?, ?, ?, ?, ?, ?)
156
+ INSERT INTO ai_usage (session_id, provider, model, tokens, prompt_tokens, completion_tokens, cost, timestamp)
157
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
143
158
  `);
144
- stmt.run(usage.sessionId, usage.provider, usage.model, usage.tokens, usage.cost, usage.timestamp);
159
+ stmt.run(usage.sessionId, usage.provider, usage.model, usage.tokens, usage.promptTokens || null, usage.completionTokens || null, usage.cost, usage.timestamp);
145
160
  // Update session AI totals
146
161
  const sumStmt = db.prepare(`
147
162
  SELECT SUM(cost) as total_cost, SUM(tokens) as total_tokens
@@ -149,7 +164,9 @@ function addAIUsage(usage) {
149
164
  `);
150
165
  const result = sumStmt.get(usage.sessionId);
151
166
  const updateStmt = db.prepare('UPDATE sessions SET ai_cost = ?, ai_tokens = ? WHERE id = ?');
152
- updateStmt.run(result.total_cost || 0, result.total_tokens || 0, usage.sessionId);
167
+ // Round to 10 decimal places to prevent floating-point accumulation drift
168
+ const roundedCost = Math.round((result.total_cost || 0) * 1e10) / 1e10;
169
+ updateStmt.run(roundedCost, result.total_tokens || 0, usage.sessionId);
153
170
  }
154
171
  function getFileChanges(sessionId) {
155
172
  const stmt = db.prepare('SELECT * FROM file_changes WHERE session_id = ? ORDER BY timestamp');
@@ -182,10 +199,32 @@ function getAIUsage(sessionId) {
182
199
  provider: row.provider,
183
200
  model: row.model,
184
201
  tokens: row.tokens,
202
+ promptTokens: row.prompt_tokens || undefined,
203
+ completionTokens: row.completion_tokens || undefined,
185
204
  cost: row.cost,
186
205
  timestamp: row.timestamp,
187
206
  }));
188
207
  }
208
+ function exportSessions(format, limit) {
209
+ const sessions = getSessions(limit || 999999);
210
+ if (format === 'json') {
211
+ const full = sessions.map((s) => {
212
+ const aiUsage = getAIUsage(s.id);
213
+ const files = getFileChanges(s.id);
214
+ const commits = getCommits(s.id);
215
+ return { ...s, aiUsage, files, commits };
216
+ });
217
+ return JSON.stringify(full, null, 2);
218
+ }
219
+ // CSV
220
+ const header = 'id,name,status,startTime,endTime,duration,filesChanged,commits,aiTokens,aiCost,notes';
221
+ const rows = sessions.map((s) => [
222
+ s.id, `"${(s.name || '').replace(/"/g, '""')}"`, s.status, s.startTime, s.endTime || '',
223
+ s.duration || '', s.filesChanged, s.commits, s.aiTokens,
224
+ s.aiCost, `"${(s.notes || '').replace(/"/g, '""')}"`
225
+ ].join(','));
226
+ return [header, ...rows].join('\n');
227
+ }
189
228
  function getStats() {
190
229
  const stmt = db.prepare(`
191
230
  SELECT
@@ -217,7 +256,7 @@ function mapSession(row) {
217
256
  workingDirectory: row.working_directory,
218
257
  filesChanged: row.files_changed,
219
258
  commits: row.commits,
220
- aiCost: row.ai_cost,
259
+ aiCost: Math.round((row.ai_cost || 0) * 1e10) / 1e10,
221
260
  aiTokens: row.ai_tokens,
222
261
  notes: row.notes,
223
262
  status: row.status,
package/dist/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":";;;;;AAkFA,sCAOC;AAED,4CAKC;AAED,gCAYC;AAED,gCAIC;AAED,kCAIC;AAED,sCAaC;AAED,8BAaC;AAED,gCAkBC;AAED,wCAUC;AAED,gCAUC;AAED,gCAcC;AAED,wCAuBC;AAED,4BAqBC;AAmBD,0BAEC;AAzRD,oEAAsC;AACtC,+BAA4B;AAC5B,2BAA6B;AAC7B,2BAA2C;AAG3C,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,aAAa,CAAC,CAAC;AAC9C,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE5C,IAAI,CAAC,IAAA,eAAU,EAAC,MAAM,CAAC,EAAE,CAAC;IACxB,IAAA,cAAS,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,EAAE,GAAG,IAAI,wBAAQ,CAAC,OAAO,CAAC,CAAC;AAEjC,8DAA8D;AAC9D,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAChC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAEjC,sBAAsB;AACtB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;CAeP,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC;;;;;;;;;CASP,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC;;;;;;;;;CASP,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;CAaP,CAAC,CAAC;AAEH,mDAAmD;AACnD,IAAI,CAAC;IACH,EAAE,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;AACnE,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC;AAC3C,IAAI,CAAC;IACH,EAAE,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;AACvE,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC;AAE3C,SAAgB,aAAa,CAAC,OAA4B;IACxD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAGvB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC7F,OAAO,MAAM,CAAC,eAAyB,CAAC;AAC1C,CAAC;AAED,SAAgB,gBAAgB;IAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAQ,CAAC;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,UAAU,CAAC,SAAiB,EAAE,OAAe,EAAE,KAAc;IAC3E,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAE1G,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;GAIvB,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,EAAE,SAAS,CAAC,CAAC;AACrE,CAAC;AAED,SAAgB,UAAU,CAAC,SAAiB;IAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAQ,CAAC;IACvC,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,CAAC;AAED,SAAgB,WAAW,CAAC,KAAK,GAAG,EAAE;IACpC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAU,CAAC;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,aAAa,CAAC,MAA8B;IAC1D,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAGvB,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAEjF,6BAA6B;IAC7B,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAC;IACjH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAQ,CAAC;IAEtD,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;IACpF,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,SAAS,CAAC,MAA0B;IAClD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAGvB,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAE1E,+BAA+B;IAC/B,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAQ,CAAC;IAEtD,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;IAC9E,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,UAAU,CAAC,KAA0B;IACnD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAGvB,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAE9J,2BAA2B;IAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAG1B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAQ,CAAC;IAEnD,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC;IAC7F,0EAA0E;IAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACvE,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC;AAED,SAAgB,cAAc,CAAC,SAAiB;IAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC;IAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAU,CAAC;IAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,UAAU,CAAC,SAAiB;IAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC;IACzF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAU,CAAC;IAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,UAAU,CAAC,SAAiB;IAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC;IAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAU,CAAC;IAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QAC5C,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,IAAI,SAAS;QACpD,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,cAAc,CAAC,MAAsB,EAAE,KAAc;IACnE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;IAE9C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,EAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,EAAG,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,EAAG,CAAC,CAAC;YAClC,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,MAAM;IACN,MAAM,MAAM,GAAG,sFAAsF,CAAC;IACtG,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B;QACE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;QACvF,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ;QACvD,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;KACrD,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,QAAQ;IACtB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;GASvB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAS,CAAC;IAEjC,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;QACjC,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC;QACnC,YAAY,EAAE,MAAM,CAAC,aAAa,IAAI,CAAC;QACvC,WAAW,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;QACnC,cAAc,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAQ;IAC1B,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,gBAAgB,EAAE,GAAG,CAAC,iBAAiB;QACvC,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI;QACpD,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC;AACJ,CAAC;AAED,SAAgB,OAAO;IACrB,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,7 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ export { createSession, getActiveSession, endSession, getSession, getSessions, getStats, addFileChange, addCommit, addAIUsage, getFileChanges, getCommits, getAIUsage, exportSessions } from './db';
3
+ export { initGit, checkForNewCommits, getGitInfo } from './git';
4
+ export { startWatcher, stopWatcher } from './watcher';
5
+ export { Session, FileChange, Commit, AIUsage, SessionStats } from './types';
6
+ export { AgentSession, AgentSessionConfig, AgentSessionSummary, BudgetExceededError, runAgentSession } from './agents';
3
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA4ZA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AACpM,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}