agent-tank 0.9.9 → 0.9.11

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.
@@ -122,12 +122,12 @@ function usageItem(label, value, suffix, options = {}) {
122
122
  `;
123
123
  }
124
124
 
125
- function formatClaudeUsage(usage) {
125
+ function formatClaudeUsage(usage, agentId = 'claude') {
126
126
  let html = '';
127
127
  const sections = [
128
128
  { data: usage.session, label: 'Session', cycle: 'session' },
129
129
  { data: usage.weeklyAll, label: 'Weekly (all)', cycle: 'weekly' },
130
- { data: usage.weeklySonnet, label: 'Weekly (Sonnet)', cycle: 'weekly' },
130
+ { data: usage.weeklyFable, label: 'Weekly (Fable)', cycle: 'weekly' },
131
131
  { data: usage.weekly, label: 'Weekly', cycle: 'weekly' },
132
132
  ];
133
133
  for (const { data, label, cycle } of sections) {
@@ -140,7 +140,7 @@ function formatClaudeUsage(usage) {
140
140
  const paceData = data.pace || null;
141
141
 
142
142
  html += '<div class="model-container">';
143
- html += usageItem(label, percent, '% used', { isZero, agentName: 'claude', resetsIn });
143
+ html += usageItem(label, percent, '% used', { isZero, agentName: agentId, resetsIn });
144
144
  html += resetInfoItem(data.resetsIn, data.resetsAt, cycle, { isZero, paceData });
145
145
  html += '</div>';
146
146
  }
@@ -159,7 +159,7 @@ function formatClaudeUsage(usage) {
159
159
  ? `$${extra.spent.toFixed(2)} / $${extra.budget.toFixed(2)}`
160
160
  : '';
161
161
  html += '<div class="model-container">';
162
- html += usageItem('Extra', percent, '% used', { isZero, agentName: 'claude', resetsIn });
162
+ html += usageItem('Extra', percent, '% used', { isZero, agentName: agentId, resetsIn });
163
163
  if (spentLabel) {
164
164
  html += `<div class="usage-item reset-info"><span class="usage-label">↳ Budget</span><span class="usage-value">${spentLabel}</span></div>`;
165
165
  }
@@ -169,7 +169,7 @@ function formatClaudeUsage(usage) {
169
169
  return html;
170
170
  }
171
171
 
172
- function formatAgyUsage(usage) {
172
+ function formatAgyUsage(usage, agentId = 'agy') {
173
173
  let html = '';
174
174
  if (usage.models && usage.models.length > 0) {
175
175
  for (const model of usage.models) {
@@ -182,15 +182,17 @@ function formatAgyUsage(usage) {
182
182
  const paceData = model.pace || null;
183
183
 
184
184
  html += '<div class="model-container">';
185
- html += usageItem(modelName, percent, '% used', { isZero, isModelName: true, agentName: 'agy', resetsIn });
186
- html += resetInfoItem(model.resetsIn, null, 'sessionAgy', { isZero, paceData });
185
+ html += usageItem(modelName, percent, '% used', { isZero, isModelName: true, agentName: agentId, resetsIn });
186
+ // Weekly and five-hour limits share this list, so each entry carries the
187
+ // cycle its countdown belongs to; older payloads have no cycle field.
188
+ html += resetInfoItem(model.resetsIn, model.resetsAt || null, model.cycle || 'sessionAgy', { isZero, paceData });
187
189
  html += '</div>';
188
190
  }
189
191
  }
190
192
  return html;
191
193
  }
192
194
 
193
- function formatCodexUsage(usage) {
195
+ function formatCodexUsage(usage, agentId = 'codex') {
194
196
  let html = '';
195
197
  const models = [];
196
198
  if (usage.fiveHour || usage.weekly) {
@@ -213,7 +215,7 @@ function formatCodexUsage(usage) {
213
215
  const paceData = ml.fiveHour.pace || null;
214
216
 
215
217
  html += '<div class="model-container nested-container">';
216
- html += usageItem('5h limit', fiveHourPercent, '% used', { isZero, isNestedMetric: true, agentName: 'codex', resetsIn, metricId: `codex-${modelSlug}-5h` });
218
+ html += usageItem('5h limit', fiveHourPercent, '% used', { isZero, isNestedMetric: true, agentName: agentId, resetsIn, metricId: `${agentId}-${modelSlug}-5h` });
217
219
  html += resetInfoItem(ml.fiveHour.resetsIn, ml.fiveHour.resetsAt, 'fiveHour', { isZero, paceData });
218
220
  html += '</div>';
219
221
  }
@@ -226,7 +228,7 @@ function formatCodexUsage(usage) {
226
228
  const paceData = ml.weekly.pace || null;
227
229
 
228
230
  html += '<div class="model-container nested-container">';
229
- html += usageItem('Weekly', weeklyPercent, '% used', { isZero, isNestedMetric: true, agentName: 'codex', resetsIn, metricId: `codex-${modelSlug}-weekly` });
231
+ html += usageItem('Weekly', weeklyPercent, '% used', { isZero, isNestedMetric: true, agentName: agentId, resetsIn, metricId: `${agentId}-${modelSlug}-weekly` });
230
232
  html += resetInfoItem(ml.weekly.resetsIn, ml.weekly.resetsAt, 'weekly', { isZero, paceData });
231
233
  html += '</div>';
232
234
  }
@@ -234,14 +236,14 @@ function formatCodexUsage(usage) {
234
236
  return html;
235
237
  }
236
238
 
237
- function formatUsage(agentName, usage) {
239
+ function formatUsage(agentName, usage, options = {}) {
238
240
  if (!usage) {
239
241
  return '<p class="usage-item">No data available</p>';
240
242
  }
241
243
 
242
244
  const formatters = { claude: formatClaudeUsage, agy: formatAgyUsage, codex: formatCodexUsage };
243
245
  const formatter = formatters[agentName];
244
- const html = formatter ? formatter(usage) : '';
246
+ const html = formatter ? formatter(usage, options.agentId || agentName) : '';
245
247
 
246
248
  return html || '<p class="usage-item">No usage data</p>';
247
249
  }