prab-cli 1.1.0 → 1.2.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.
@@ -12,14 +12,14 @@ const os_1 = __importDefault(require("os"));
12
12
  */
13
13
  class SuperTracker {
14
14
  constructor() {
15
- this.logDir = path_1.default.join(os_1.default.homedir(), '.config', 'groq-cli-tool', 'logs');
15
+ this.logDir = path_1.default.join(os_1.default.homedir(), ".config", "groq-cli-tool", "logs");
16
16
  this.sessionId = this.generateSessionId();
17
17
  this.logFile = path_1.default.join(this.logDir, `session-${this.sessionId}.jsonl`);
18
18
  this.ensureLogDir();
19
19
  }
20
20
  generateSessionId() {
21
21
  const now = new Date();
22
- return `${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}-${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}${String(now.getSeconds()).padStart(2, '0')}`;
22
+ return `${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, "0")}${String(now.getDate()).padStart(2, "0")}-${String(now.getHours()).padStart(2, "0")}${String(now.getMinutes()).padStart(2, "0")}${String(now.getSeconds()).padStart(2, "0")}`;
23
23
  }
24
24
  ensureLogDir() {
25
25
  if (!fs_1.default.existsSync(this.logDir)) {
@@ -30,8 +30,8 @@ class SuperTracker {
30
30
  * Write a log entry to file (with immediate flush)
31
31
  */
32
32
  write(entry) {
33
- const line = JSON.stringify(entry) + '\n';
34
- const fd = fs_1.default.openSync(this.logFile, 'a');
33
+ const line = JSON.stringify(entry) + "\n";
34
+ const fd = fs_1.default.openSync(this.logFile, "a");
35
35
  fs_1.default.writeSync(fd, line);
36
36
  fs_1.default.fsyncSync(fd);
37
37
  fs_1.default.closeSync(fd);
@@ -42,10 +42,10 @@ class SuperTracker {
42
42
  sessionStart(model, toolCount) {
43
43
  this.write({
44
44
  timestamp: new Date().toISOString(),
45
- level: 'info',
46
- event: 'SESSION_START',
45
+ level: "info",
46
+ event: "SESSION_START",
47
47
  message: `Session started with model: ${model}`,
48
- data: { model, toolCount, sessionId: this.sessionId }
48
+ data: { model, toolCount, sessionId: this.sessionId },
49
49
  });
50
50
  }
51
51
  /**
@@ -54,10 +54,10 @@ class SuperTracker {
54
54
  promptReceived(prompt) {
55
55
  this.write({
56
56
  timestamp: new Date().toISOString(),
57
- level: 'info',
58
- event: 'PROMPT_RECEIVED',
59
- message: `User: "${prompt.length > 100 ? prompt.substring(0, 100) + '...' : prompt}"`,
60
- data: { prompt, length: prompt.length }
57
+ level: "info",
58
+ event: "PROMPT_RECEIVED",
59
+ message: `User: "${prompt.length > 100 ? prompt.substring(0, 100) + "..." : prompt}"`,
60
+ data: { prompt, length: prompt.length },
61
61
  });
62
62
  }
63
63
  /**
@@ -66,10 +66,10 @@ class SuperTracker {
66
66
  apiRequest(model, messageCount, toolCount) {
67
67
  this.write({
68
68
  timestamp: new Date().toISOString(),
69
- level: 'api',
70
- event: 'API_REQUEST',
69
+ level: "api",
70
+ event: "API_REQUEST",
71
71
  message: `Sending request to Groq API`,
72
- data: { model, messageCount, toolCount }
72
+ data: { model, messageCount, toolCount },
73
73
  });
74
74
  }
75
75
  /**
@@ -78,11 +78,11 @@ class SuperTracker {
78
78
  apiResponse(hasContent, hasToolCalls, toolCallCount, duration) {
79
79
  this.write({
80
80
  timestamp: new Date().toISOString(),
81
- level: 'api',
82
- event: 'API_RESPONSE',
81
+ level: "api",
82
+ event: "API_RESPONSE",
83
83
  message: `Received response from Groq API`,
84
84
  data: { hasContent, hasToolCalls, toolCallCount },
85
- duration
85
+ duration,
86
86
  });
87
87
  }
88
88
  /**
@@ -91,10 +91,10 @@ class SuperTracker {
91
91
  apiError(error, details) {
92
92
  this.write({
93
93
  timestamp: new Date().toISOString(),
94
- level: 'error',
95
- event: 'API_ERROR',
94
+ level: "error",
95
+ event: "API_ERROR",
96
96
  message: `API Error: ${error}`,
97
- data: { error, details }
97
+ data: { error, details },
98
98
  });
99
99
  }
100
100
  /**
@@ -103,23 +103,23 @@ class SuperTracker {
103
103
  aiResponse(content) {
104
104
  this.write({
105
105
  timestamp: new Date().toISOString(),
106
- level: 'ai',
107
- event: 'AI_RESPONSE',
108
- message: `AI: "${content.length > 150 ? content.substring(0, 150) + '...' : content}"`,
109
- data: { content: content.substring(0, 500), length: content.length }
106
+ level: "ai",
107
+ event: "AI_RESPONSE",
108
+ message: `AI: "${content.length > 150 ? content.substring(0, 150) + "..." : content}"`,
109
+ data: { content: content.substring(0, 500), length: content.length },
110
110
  });
111
111
  }
112
112
  /**
113
113
  * Log AI decided to call tools
114
114
  */
115
115
  aiToolDecision(toolCalls) {
116
- const toolNames = toolCalls.map(t => t.name).join(', ');
116
+ const toolNames = toolCalls.map((t) => t.name).join(", ");
117
117
  this.write({
118
118
  timestamp: new Date().toISOString(),
119
- level: 'ai',
120
- event: 'AI_TOOL_DECISION',
119
+ level: "ai",
120
+ event: "AI_TOOL_DECISION",
121
121
  message: `AI decided to call: [${toolNames}]`,
122
- data: { toolCalls }
122
+ data: { toolCalls },
123
123
  });
124
124
  }
125
125
  /**
@@ -128,10 +128,10 @@ class SuperTracker {
128
128
  toolStart(toolName, args) {
129
129
  this.write({
130
130
  timestamp: new Date().toISOString(),
131
- level: 'info',
132
- event: 'TOOL_START',
131
+ level: "info",
132
+ event: "TOOL_START",
133
133
  message: `Executing tool: ${toolName}`,
134
- data: { toolName, args }
134
+ data: { toolName, args },
135
135
  });
136
136
  }
137
137
  /**
@@ -140,11 +140,11 @@ class SuperTracker {
140
140
  toolSuccess(toolName, output, duration) {
141
141
  this.write({
142
142
  timestamp: new Date().toISOString(),
143
- level: 'success',
144
- event: 'TOOL_SUCCESS',
143
+ level: "success",
144
+ event: "TOOL_SUCCESS",
145
145
  message: `Tool completed: ${toolName}`,
146
146
  data: { toolName, outputPreview: output.substring(0, 200), outputLength: output.length },
147
- duration
147
+ duration,
148
148
  });
149
149
  }
150
150
  /**
@@ -153,11 +153,11 @@ class SuperTracker {
153
153
  toolError(toolName, error, duration, args) {
154
154
  this.write({
155
155
  timestamp: new Date().toISOString(),
156
- level: 'error',
157
- event: 'TOOL_ERROR',
156
+ level: "error",
157
+ event: "TOOL_ERROR",
158
158
  message: `Tool failed: ${toolName}`,
159
159
  data: { toolName, error, args, errorMessage: error },
160
- duration
160
+ duration,
161
161
  });
162
162
  }
163
163
  /**
@@ -166,10 +166,10 @@ class SuperTracker {
166
166
  toolCancelled(toolName) {
167
167
  this.write({
168
168
  timestamp: new Date().toISOString(),
169
- level: 'warn',
170
- event: 'TOOL_CANCELLED',
169
+ level: "warn",
170
+ event: "TOOL_CANCELLED",
171
171
  message: `Tool cancelled by user: ${toolName}`,
172
- data: { toolName }
172
+ data: { toolName },
173
173
  });
174
174
  }
175
175
  /**
@@ -178,10 +178,10 @@ class SuperTracker {
178
178
  modelInit(modelId, provider, success, error) {
179
179
  this.write({
180
180
  timestamp: new Date().toISOString(),
181
- level: success ? 'success' : 'error',
182
- event: 'MODEL_INIT',
181
+ level: success ? "success" : "error",
182
+ event: "MODEL_INIT",
183
183
  message: success ? `Model initialized: ${modelId}` : `Model init failed: ${error}`,
184
- data: { modelId, provider, success, error }
184
+ data: { modelId, provider, success, error },
185
185
  });
186
186
  }
187
187
  /**
@@ -190,10 +190,12 @@ class SuperTracker {
190
190
  modelSwitch(fromModel, toModel, success) {
191
191
  this.write({
192
192
  timestamp: new Date().toISOString(),
193
- level: success ? 'success' : 'error',
194
- event: 'MODEL_SWITCH',
195
- message: success ? `Switched model: ${fromModel} -> ${toModel}` : `Model switch failed: ${fromModel} -> ${toModel}`,
196
- data: { fromModel, toModel, success }
193
+ level: success ? "success" : "error",
194
+ event: "MODEL_SWITCH",
195
+ message: success
196
+ ? `Switched model: ${fromModel} -> ${toModel}`
197
+ : `Model switch failed: ${fromModel} -> ${toModel}`,
198
+ data: { fromModel, toModel, success },
197
199
  });
198
200
  }
199
201
  /**
@@ -202,11 +204,11 @@ class SuperTracker {
202
204
  promptComplete(prompt, duration, iterations) {
203
205
  this.write({
204
206
  timestamp: new Date().toISOString(),
205
- level: 'success',
206
- event: 'PROMPT_COMPLETE',
207
+ level: "success",
208
+ event: "PROMPT_COMPLETE",
207
209
  message: `Prompt processed successfully`,
208
210
  data: { promptPreview: prompt.substring(0, 50), iterations },
209
- duration
211
+ duration,
210
212
  });
211
213
  }
212
214
  /**
@@ -215,10 +217,10 @@ class SuperTracker {
215
217
  promptFailed(prompt, error) {
216
218
  this.write({
217
219
  timestamp: new Date().toISOString(),
218
- level: 'error',
219
- event: 'PROMPT_FAILED',
220
+ level: "error",
221
+ event: "PROMPT_FAILED",
220
222
  message: `Prompt processing failed: ${error}`,
221
- data: { promptPreview: prompt.substring(0, 50), error }
223
+ data: { promptPreview: prompt.substring(0, 50), error },
222
224
  });
223
225
  }
224
226
  /**
@@ -227,10 +229,10 @@ class SuperTracker {
227
229
  streamChunk(hasContent, hasToolCalls) {
228
230
  this.write({
229
231
  timestamp: new Date().toISOString(),
230
- level: 'debug',
231
- event: 'STREAM_CHUNK',
232
+ level: "debug",
233
+ event: "STREAM_CHUNK",
232
234
  message: `Stream chunk: content=${hasContent}, tools=${hasToolCalls}`,
233
- data: { hasContent, hasToolCalls }
235
+ data: { hasContent, hasToolCalls },
234
236
  });
235
237
  }
236
238
  /**
@@ -239,10 +241,10 @@ class SuperTracker {
239
241
  iteration(count, reason) {
240
242
  this.write({
241
243
  timestamp: new Date().toISOString(),
242
- level: 'debug',
243
- event: 'ITERATION',
244
+ level: "debug",
245
+ event: "ITERATION",
244
246
  message: `Loop iteration ${count}: ${reason}`,
245
- data: { count, reason }
247
+ data: { count, reason },
246
248
  });
247
249
  }
248
250
  /**
@@ -251,10 +253,10 @@ class SuperTracker {
251
253
  contextAttached(files) {
252
254
  this.write({
253
255
  timestamp: new Date().toISOString(),
254
- level: 'info',
255
- event: 'CONTEXT_ATTACHED',
256
+ level: "info",
257
+ event: "CONTEXT_ATTACHED",
256
258
  message: `Attached ${files.length} file(s) for context`,
257
- data: { files }
259
+ data: { files },
258
260
  });
259
261
  }
260
262
  /**
@@ -263,10 +265,10 @@ class SuperTracker {
263
265
  debug(message, data) {
264
266
  this.write({
265
267
  timestamp: new Date().toISOString(),
266
- level: 'debug',
267
- event: 'DEBUG',
268
+ level: "debug",
269
+ event: "DEBUG",
268
270
  message,
269
- data
271
+ data,
270
272
  });
271
273
  }
272
274
  /**
@@ -275,10 +277,10 @@ class SuperTracker {
275
277
  warn(message, data) {
276
278
  this.write({
277
279
  timestamp: new Date().toISOString(),
278
- level: 'warn',
279
- event: 'WARNING',
280
+ level: "warn",
281
+ event: "WARNING",
280
282
  message,
281
- data
283
+ data,
282
284
  });
283
285
  }
284
286
  /**
@@ -287,14 +289,14 @@ class SuperTracker {
287
289
  error(message, error, data) {
288
290
  this.write({
289
291
  timestamp: new Date().toISOString(),
290
- level: 'error',
291
- event: 'ERROR',
292
+ level: "error",
293
+ event: "ERROR",
292
294
  message,
293
295
  data: {
294
296
  error: error instanceof Error ? error.message : error,
295
297
  stack: error instanceof Error ? error.stack : undefined,
296
- ...data
297
- }
298
+ ...data,
299
+ },
298
300
  });
299
301
  }
300
302
  /**