opencode-usage-coach 0.7.1 → 0.8.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/dist/tui.js CHANGED
@@ -202,189 +202,185 @@ function initializeTui(api, disposeRoot) {
202
202
  h = null;
203
203
  }
204
204
  const nodes = [];
205
- const HARNESS_AGENTS = ["usage-coach-harness"];
206
- if (s && s.agent && !HARNESS_AGENTS.includes(s.agent)) {
207
- return _$createElement("box");
208
- }
209
205
  if (s) {
210
206
  const dKey = s.decision === "GO" ? "success" : s.decision === "THROTTLE" ? "warning" : "error";
211
207
  const modelShort = s.model ? s.model.split("/").pop() ?? s.model : "";
212
208
  if (s.isFree) {
213
209
  nodes.push((() => {
214
- var _el$5 = _$createElement("box"), _el$6 = _$createElement("text"), _el$8 = _$createElement("text"), _el$9 = _$createTextNode(` `);
215
- _$insertNode(_el$5, _el$6);
216
- _$insertNode(_el$5, _el$8);
217
- _$setProp(_el$5, "flexDirection", "row");
218
- _$insertNode(_el$6, _$createTextNode(`usage-coach [free]`));
219
- _$insertNode(_el$8, _el$9);
220
- _$insert(_el$8, modelShort, null);
210
+ var _el$4 = _$createElement("box"), _el$5 = _$createElement("text"), _el$7 = _$createElement("text"), _el$8 = _$createTextNode(` `);
211
+ _$insertNode(_el$4, _el$5);
212
+ _$insertNode(_el$4, _el$7);
213
+ _$setProp(_el$4, "flexDirection", "row");
214
+ _$insertNode(_el$5, _$createTextNode(`usage-coach [free]`));
215
+ _$insertNode(_el$7, _el$8);
216
+ _$insert(_el$7, modelShort, null);
221
217
  _$effect((_p$) => {
222
218
  var _v$ = st(dKey), _v$2 = st("textMuted");
223
- _v$ !== _p$.e && (_p$.e = _$setProp(_el$6, "style", _v$, _p$.e));
224
- _v$2 !== _p$.t && (_p$.t = _$setProp(_el$8, "style", _v$2, _p$.t));
219
+ _v$ !== _p$.e && (_p$.e = _$setProp(_el$5, "style", _v$, _p$.e));
220
+ _v$2 !== _p$.t && (_p$.t = _$setProp(_el$7, "style", _v$2, _p$.t));
225
221
  return _p$;
226
222
  }, {
227
223
  e: void 0,
228
224
  t: void 0
229
225
  });
230
- return _el$5;
226
+ return _el$4;
231
227
  })());
232
228
  } else {
233
229
  if (modelShort) {
234
230
  nodes.push((() => {
235
- var _el$0 = _$createElement("box"), _el$1 = _$createElement("text"), _el$10 = _$createTextNode(`usage-coach [`), _el$11 = _$createTextNode(`]`), _el$12 = _$createElement("text"), _el$13 = _$createTextNode(` `);
231
+ var _el$9 = _$createElement("box"), _el$0 = _$createElement("text"), _el$1 = _$createTextNode(`usage-coach [`), _el$10 = _$createTextNode(`]`), _el$11 = _$createElement("text"), _el$12 = _$createTextNode(` `);
232
+ _$insertNode(_el$9, _el$0);
233
+ _$insertNode(_el$9, _el$11);
234
+ _$setProp(_el$9, "flexDirection", "row");
236
235
  _$insertNode(_el$0, _el$1);
237
- _$insertNode(_el$0, _el$12);
238
- _$setProp(_el$0, "flexDirection", "row");
239
- _$insertNode(_el$1, _el$10);
240
- _$insertNode(_el$1, _el$11);
241
- _$insert(_el$1, () => TAG[s.decision], _el$11);
242
- _$insertNode(_el$12, _el$13);
243
- _$insert(_el$12, modelShort, null);
236
+ _$insertNode(_el$0, _el$10);
237
+ _$insert(_el$0, () => TAG[s.decision], _el$10);
238
+ _$insertNode(_el$11, _el$12);
239
+ _$insert(_el$11, modelShort, null);
244
240
  _$effect((_p$) => {
245
241
  var _v$3 = st(dKey), _v$4 = st("textMuted");
246
- _v$3 !== _p$.e && (_p$.e = _$setProp(_el$1, "style", _v$3, _p$.e));
247
- _v$4 !== _p$.t && (_p$.t = _$setProp(_el$12, "style", _v$4, _p$.t));
242
+ _v$3 !== _p$.e && (_p$.e = _$setProp(_el$0, "style", _v$3, _p$.e));
243
+ _v$4 !== _p$.t && (_p$.t = _$setProp(_el$11, "style", _v$4, _p$.t));
248
244
  return _p$;
249
245
  }, {
250
246
  e: void 0,
251
247
  t: void 0
252
248
  });
253
- return _el$0;
249
+ return _el$9;
254
250
  })());
255
251
  } else {
256
252
  nodes.push((() => {
257
- var _el$14 = _$createElement("text"), _el$15 = _$createTextNode(`usage-coach [`), _el$16 = _$createTextNode(`]`);
258
- _$insertNode(_el$14, _el$15);
259
- _$insertNode(_el$14, _el$16);
260
- _$insert(_el$14, () => TAG[s.decision], _el$16);
261
- _$effect((_$p) => _$setProp(_el$14, "style", st(dKey), _$p));
262
- return _el$14;
253
+ var _el$13 = _$createElement("text"), _el$14 = _$createTextNode(`usage-coach [`), _el$15 = _$createTextNode(`]`);
254
+ _$insertNode(_el$13, _el$14);
255
+ _$insertNode(_el$13, _el$15);
256
+ _$insert(_el$13, () => TAG[s.decision], _el$15);
257
+ _$effect((_$p) => _$setProp(_el$13, "style", st(dKey), _$p));
258
+ return _el$13;
263
259
  })());
264
260
  }
265
261
  if (s.providers && s.providers.length > 0) {
266
262
  for (const p of s.providers) {
267
263
  nodes.push((() => {
268
- var _el$17 = _$createElement("box"), _el$18 = _$createElement("text"), _el$20 = _$createElement("text"), _el$21 = _$createElement("text"), _el$22 = _$createElement("text"), _el$23 = _$createTextNode(` `), _el$24 = _$createTextNode(`% `);
269
- _$insertNode(_el$17, _el$18);
270
- _$insertNode(_el$17, _el$20);
271
- _$insertNode(_el$17, _el$21);
272
- _$insertNode(_el$17, _el$22);
273
- _$setProp(_el$17, "flexDirection", "row");
274
- _$insertNode(_el$18, _$createTextNode(` 5h `));
275
- _$insert(_el$20, () => barFill(p.fiveHour));
276
- _$insert(_el$21, () => barEmpty(p.fiveHour));
277
- _$insertNode(_el$22, _el$23);
278
- _$insertNode(_el$22, _el$24);
279
- _$insert(_el$22, () => p.fiveHour, _el$24);
280
- _$insert(_el$22, () => p.fiveHourReset, null);
264
+ var _el$16 = _$createElement("box"), _el$17 = _$createElement("text"), _el$19 = _$createElement("text"), _el$20 = _$createElement("text"), _el$21 = _$createElement("text"), _el$22 = _$createTextNode(` `), _el$23 = _$createTextNode(`% `);
265
+ _$insertNode(_el$16, _el$17);
266
+ _$insertNode(_el$16, _el$19);
267
+ _$insertNode(_el$16, _el$20);
268
+ _$insertNode(_el$16, _el$21);
269
+ _$setProp(_el$16, "flexDirection", "row");
270
+ _$insertNode(_el$17, _$createTextNode(` 5h `));
271
+ _$insert(_el$19, () => barFill(p.fiveHour));
272
+ _$insert(_el$20, () => barEmpty(p.fiveHour));
273
+ _$insertNode(_el$21, _el$22);
274
+ _$insertNode(_el$21, _el$23);
275
+ _$insert(_el$21, () => p.fiveHour, _el$23);
276
+ _$insert(_el$21, () => p.fiveHourReset, null);
281
277
  _$effect((_p$) => {
282
278
  var _v$5 = st("text"), _v$6 = st("text");
283
- _v$5 !== _p$.e && (_p$.e = _$setProp(_el$20, "style", _v$5, _p$.e));
284
- _v$6 !== _p$.t && (_p$.t = _$setProp(_el$21, "style", _v$6, _p$.t));
279
+ _v$5 !== _p$.e && (_p$.e = _$setProp(_el$19, "style", _v$5, _p$.e));
280
+ _v$6 !== _p$.t && (_p$.t = _$setProp(_el$20, "style", _v$6, _p$.t));
285
281
  return _p$;
286
282
  }, {
287
283
  e: void 0,
288
284
  t: void 0
289
285
  });
290
- return _el$17;
286
+ return _el$16;
291
287
  })());
292
288
  nodes.push((() => {
293
- var _el$25 = _$createElement("box"), _el$26 = _$createElement("text"), _el$28 = _$createElement("text"), _el$29 = _$createElement("text"), _el$30 = _$createElement("text"), _el$31 = _$createTextNode(` `), _el$32 = _$createTextNode(`% `);
294
- _$insertNode(_el$25, _el$26);
295
- _$insertNode(_el$25, _el$28);
296
- _$insertNode(_el$25, _el$29);
297
- _$insertNode(_el$25, _el$30);
298
- _$setProp(_el$25, "flexDirection", "row");
299
- _$insertNode(_el$26, _$createTextNode(` 1w `));
300
- _$insert(_el$28, () => barFill(p.weekly));
301
- _$insert(_el$29, () => barEmpty(p.weekly));
302
- _$insertNode(_el$30, _el$31);
303
- _$insertNode(_el$30, _el$32);
304
- _$insert(_el$30, () => p.weekly, _el$32);
305
- _$insert(_el$30, () => p.weeklyReset, null);
289
+ var _el$24 = _$createElement("box"), _el$25 = _$createElement("text"), _el$27 = _$createElement("text"), _el$28 = _$createElement("text"), _el$29 = _$createElement("text"), _el$30 = _$createTextNode(` `), _el$31 = _$createTextNode(`% `);
290
+ _$insertNode(_el$24, _el$25);
291
+ _$insertNode(_el$24, _el$27);
292
+ _$insertNode(_el$24, _el$28);
293
+ _$insertNode(_el$24, _el$29);
294
+ _$setProp(_el$24, "flexDirection", "row");
295
+ _$insertNode(_el$25, _$createTextNode(` 1w `));
296
+ _$insert(_el$27, () => barFill(p.weekly));
297
+ _$insert(_el$28, () => barEmpty(p.weekly));
298
+ _$insertNode(_el$29, _el$30);
299
+ _$insertNode(_el$29, _el$31);
300
+ _$insert(_el$29, () => p.weekly, _el$31);
301
+ _$insert(_el$29, () => p.weeklyReset, null);
306
302
  _$effect((_p$) => {
307
303
  var _v$7 = st("text"), _v$8 = st("text");
308
- _v$7 !== _p$.e && (_p$.e = _$setProp(_el$28, "style", _v$7, _p$.e));
309
- _v$8 !== _p$.t && (_p$.t = _$setProp(_el$29, "style", _v$8, _p$.t));
304
+ _v$7 !== _p$.e && (_p$.e = _$setProp(_el$27, "style", _v$7, _p$.e));
305
+ _v$8 !== _p$.t && (_p$.t = _$setProp(_el$28, "style", _v$8, _p$.t));
310
306
  return _p$;
311
307
  }, {
312
308
  e: void 0,
313
309
  t: void 0
314
310
  });
315
- return _el$25;
311
+ return _el$24;
316
312
  })());
317
313
  }
318
314
  } else {
319
315
  nodes.push((() => {
320
- var _el$33 = _$createElement("box"), _el$34 = _$createElement("text"), _el$36 = _$createElement("text"), _el$37 = _$createElement("text"), _el$38 = _$createElement("text");
321
- _$insertNode(_el$33, _el$34);
322
- _$insertNode(_el$33, _el$36);
323
- _$insertNode(_el$33, _el$37);
324
- _$insertNode(_el$33, _el$38);
325
- _$setProp(_el$33, "flexDirection", "row");
326
- _$insertNode(_el$34, _$createTextNode(` 5h `));
327
- _$insert(_el$36, () => barFill(s.fiveHour));
328
- _$insert(_el$37, () => barEmpty(s.fiveHour));
329
- _$insertNode(_el$38, _$createTextNode(` 0%`));
316
+ var _el$32 = _$createElement("box"), _el$33 = _$createElement("text"), _el$35 = _$createElement("text"), _el$36 = _$createElement("text"), _el$37 = _$createElement("text");
317
+ _$insertNode(_el$32, _el$33);
318
+ _$insertNode(_el$32, _el$35);
319
+ _$insertNode(_el$32, _el$36);
320
+ _$insertNode(_el$32, _el$37);
321
+ _$setProp(_el$32, "flexDirection", "row");
322
+ _$insertNode(_el$33, _$createTextNode(` 5h `));
323
+ _$insert(_el$35, () => barFill(s.fiveHour));
324
+ _$insert(_el$36, () => barEmpty(s.fiveHour));
325
+ _$insertNode(_el$37, _$createTextNode(` 0%`));
330
326
  _$effect((_p$) => {
331
327
  var _v$9 = st("text"), _v$0 = st("text");
332
- _v$9 !== _p$.e && (_p$.e = _$setProp(_el$36, "style", _v$9, _p$.e));
333
- _v$0 !== _p$.t && (_p$.t = _$setProp(_el$37, "style", _v$0, _p$.t));
328
+ _v$9 !== _p$.e && (_p$.e = _$setProp(_el$35, "style", _v$9, _p$.e));
329
+ _v$0 !== _p$.t && (_p$.t = _$setProp(_el$36, "style", _v$0, _p$.t));
334
330
  return _p$;
335
331
  }, {
336
332
  e: void 0,
337
333
  t: void 0
338
334
  });
339
- return _el$33;
335
+ return _el$32;
340
336
  })());
341
337
  nodes.push((() => {
342
- var _el$40 = _$createElement("box"), _el$41 = _$createElement("text"), _el$43 = _$createElement("text"), _el$44 = _$createElement("text"), _el$45 = _$createElement("text");
343
- _$insertNode(_el$40, _el$41);
344
- _$insertNode(_el$40, _el$43);
345
- _$insertNode(_el$40, _el$44);
346
- _$insertNode(_el$40, _el$45);
347
- _$setProp(_el$40, "flexDirection", "row");
348
- _$insertNode(_el$41, _$createTextNode(` 1w `));
349
- _$insert(_el$43, () => barFill(s.weekly));
350
- _$insert(_el$44, () => barEmpty(s.weekly));
351
- _$insertNode(_el$45, _$createTextNode(` 0%`));
338
+ var _el$39 = _$createElement("box"), _el$40 = _$createElement("text"), _el$42 = _$createElement("text"), _el$43 = _$createElement("text"), _el$44 = _$createElement("text");
339
+ _$insertNode(_el$39, _el$40);
340
+ _$insertNode(_el$39, _el$42);
341
+ _$insertNode(_el$39, _el$43);
342
+ _$insertNode(_el$39, _el$44);
343
+ _$setProp(_el$39, "flexDirection", "row");
344
+ _$insertNode(_el$40, _$createTextNode(` 1w `));
345
+ _$insert(_el$42, () => barFill(s.weekly));
346
+ _$insert(_el$43, () => barEmpty(s.weekly));
347
+ _$insertNode(_el$44, _$createTextNode(` 0%`));
352
348
  _$effect((_p$) => {
353
349
  var _v$1 = st("text"), _v$10 = st("text");
354
- _v$1 !== _p$.e && (_p$.e = _$setProp(_el$43, "style", _v$1, _p$.e));
355
- _v$10 !== _p$.t && (_p$.t = _$setProp(_el$44, "style", _v$10, _p$.t));
350
+ _v$1 !== _p$.e && (_p$.e = _$setProp(_el$42, "style", _v$1, _p$.e));
351
+ _v$10 !== _p$.t && (_p$.t = _$setProp(_el$43, "style", _v$10, _p$.t));
356
352
  return _p$;
357
353
  }, {
358
354
  e: void 0,
359
355
  t: void 0
360
356
  });
361
- return _el$40;
357
+ return _el$39;
362
358
  })());
363
359
  }
364
360
  }
365
361
  } else {
366
362
  nodes.push((() => {
367
- var _el$47 = _$createElement("text");
368
- _$insertNode(_el$47, _$createTextNode(`usage-coach: ...`));
369
- return _el$47;
363
+ var _el$46 = _$createElement("text");
364
+ _$insertNode(_el$46, _$createTextNode(`usage-coach: ...`));
365
+ return _el$46;
370
366
  })());
371
367
  }
372
- if (h && h.active !== false && h.tasks.length > 0) {
368
+ if (h && h.tasks.length > 0) {
373
369
  nodes.push((() => {
374
- var _el$49 = _$createElement("text");
375
- _$insertNode(_el$49, _$createTextNode(` `));
376
- return _el$49;
370
+ var _el$48 = _$createElement("text");
371
+ _$insertNode(_el$48, _$createTextNode(` `));
372
+ return _el$48;
377
373
  })());
378
374
  nodes.push((() => {
379
- var _el$51 = _$createElement("text"), _el$52 = _$createTextNode(`harness: `), _el$53 = _$createTextNode(` `), _el$54 = _$createTextNode(`/`);
380
- _$insertNode(_el$51, _el$52);
381
- _$insertNode(_el$51, _el$53);
382
- _$insertNode(_el$51, _el$54);
383
- _$insert(_el$51, () => h.name, _el$53);
384
- _$insert(_el$51, () => h.current, _el$54);
385
- _$insert(_el$51, () => h.total, null);
386
- _$effect((_$p) => _$setProp(_el$51, "style", st("textMuted"), _$p));
387
- return _el$51;
375
+ var _el$50 = _$createElement("text"), _el$51 = _$createTextNode(`harness: `), _el$52 = _$createTextNode(` `), _el$53 = _$createTextNode(`/`);
376
+ _$insertNode(_el$50, _el$51);
377
+ _$insertNode(_el$50, _el$52);
378
+ _$insertNode(_el$50, _el$53);
379
+ _$insert(_el$50, () => h.name, _el$52);
380
+ _$insert(_el$50, () => h.current, _el$53);
381
+ _$insert(_el$50, () => h.total, null);
382
+ _$effect((_$p) => _$setProp(_el$50, "style", st("textMuted"), _$p));
383
+ return _el$50;
388
384
  })());
389
385
  for (const t of h.tasks) {
390
386
  const sKey = statusKey[t.status] ?? "text";
@@ -400,19 +396,19 @@ function initializeTui(api, disposeRoot) {
400
396
  const displayEl = hasSub ? subEl : taskEl;
401
397
  const lineKey = subWarn ? "warning" : sKey;
402
398
  nodes.push((() => {
403
- var _el$55 = _$createElement("text"), _el$56 = _$createTextNode(` \u25CF `), _el$57 = _$createTextNode(` `), _el$58 = _$createTextNode(` `);
404
- _$insertNode(_el$55, _el$56);
405
- _$insertNode(_el$55, _el$57);
406
- _$insertNode(_el$55, _el$58);
407
- _$insert(_el$55, () => t.id, _el$57);
408
- _$insert(_el$55, mdl, _el$57);
409
- _$insert(_el$55, lbl, _el$58);
410
- _$insert(_el$55, rev, _el$58);
411
- _$insert(_el$55, subStepStr, _el$58);
412
- _$insert(_el$55, displayEl, _el$58);
413
- _$insert(_el$55, () => t.title, null);
414
- _$effect((_$p) => _$setProp(_el$55, "style", st(lineKey), _$p));
415
- return _el$55;
399
+ var _el$54 = _$createElement("text"), _el$55 = _$createTextNode(` \u25CF `), _el$56 = _$createTextNode(` `), _el$57 = _$createTextNode(` `);
400
+ _$insertNode(_el$54, _el$55);
401
+ _$insertNode(_el$54, _el$56);
402
+ _$insertNode(_el$54, _el$57);
403
+ _$insert(_el$54, () => t.id, _el$56);
404
+ _$insert(_el$54, mdl, _el$56);
405
+ _$insert(_el$54, lbl, _el$57);
406
+ _$insert(_el$54, rev, _el$57);
407
+ _$insert(_el$54, subStepStr, _el$57);
408
+ _$insert(_el$54, displayEl, _el$57);
409
+ _$insert(_el$54, () => t.title, null);
410
+ _$effect((_$p) => _$setProp(_el$54, "style", st(lineKey), _$p));
411
+ return _el$54;
416
412
  })());
417
413
  const pv = t.model ? (t.model.split("/")[0] ?? "").split("-")[0] : "";
418
414
  const provCoach = pv ? s?.providers?.find((p) => p.id === pv || pv && p.id.startsWith(pv) || pv && pv.startsWith(p.id)) : s?.providers?.[0];
@@ -420,35 +416,35 @@ function initializeTui(api, disposeRoot) {
420
416
  const pct = rawPct < 0 ? 0 : rawPct;
421
417
  const pctLabel = rawPct < 0 ? "n/a" : `${rawPct}%`;
422
418
  nodes.push((() => {
423
- var _el$59 = _$createElement("box"), _el$60 = _$createElement("text"), _el$62 = _$createElement("text"), _el$63 = _$createElement("text"), _el$64 = _$createElement("text"), _el$65 = _$createTextNode(` `);
424
- _$insertNode(_el$59, _el$60);
425
- _$insertNode(_el$59, _el$62);
426
- _$insertNode(_el$59, _el$63);
427
- _$insertNode(_el$59, _el$64);
428
- _$setProp(_el$59, "flexDirection", "row");
429
- _$insertNode(_el$60, _$createTextNode(` 5h `));
430
- _$insert(_el$62, () => barFill(pct));
431
- _$insert(_el$63, () => barEmpty(pct));
432
- _$insertNode(_el$64, _el$65);
433
- _$insert(_el$64, pctLabel, null);
419
+ var _el$58 = _$createElement("box"), _el$59 = _$createElement("text"), _el$61 = _$createElement("text"), _el$62 = _$createElement("text"), _el$63 = _$createElement("text"), _el$64 = _$createTextNode(` `);
420
+ _$insertNode(_el$58, _el$59);
421
+ _$insertNode(_el$58, _el$61);
422
+ _$insertNode(_el$58, _el$62);
423
+ _$insertNode(_el$58, _el$63);
424
+ _$setProp(_el$58, "flexDirection", "row");
425
+ _$insertNode(_el$59, _$createTextNode(` 5h `));
426
+ _$insert(_el$61, () => barFill(pct));
427
+ _$insert(_el$62, () => barEmpty(pct));
428
+ _$insertNode(_el$63, _el$64);
429
+ _$insert(_el$63, pctLabel, null);
434
430
  _$effect((_p$) => {
435
431
  var _v$11 = st("text"), _v$12 = st("text");
436
- _v$11 !== _p$.e && (_p$.e = _$setProp(_el$62, "style", _v$11, _p$.e));
437
- _v$12 !== _p$.t && (_p$.t = _$setProp(_el$63, "style", _v$12, _p$.t));
432
+ _v$11 !== _p$.e && (_p$.e = _$setProp(_el$61, "style", _v$11, _p$.e));
433
+ _v$12 !== _p$.t && (_p$.t = _$setProp(_el$62, "style", _v$12, _p$.t));
438
434
  return _p$;
439
435
  }, {
440
436
  e: void 0,
441
437
  t: void 0
442
438
  });
443
- return _el$59;
439
+ return _el$58;
444
440
  })());
445
441
  }
446
442
  }
447
443
  return (() => {
448
- var _el$66 = _$createElement("box");
449
- _$setProp(_el$66, "flexDirection", "column");
450
- _$insert(_el$66, nodes);
451
- return _el$66;
444
+ var _el$65 = _$createElement("box");
445
+ _$setProp(_el$65, "flexDirection", "column");
446
+ _$insert(_el$65, nodes);
447
+ return _el$65;
452
448
  })();
453
449
  };
454
450
  tlog("registering slots");
@@ -463,9 +459,9 @@ function initializeTui(api, disposeRoot) {
463
459
  } catch (e) {
464
460
  tlog(`sidebar_footer err: ${String(e)}`);
465
461
  result = (() => {
466
- var _el$67 = _$createElement("text");
467
- _$insertNode(_el$67, _$createTextNode(`usage-coach`));
468
- return _el$67;
462
+ var _el$66 = _$createElement("text");
463
+ _$insertNode(_el$66, _$createTextNode(`usage-coach`));
464
+ return _el$66;
469
465
  })();
470
466
  }
471
467
  return result;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-usage-coach",
3
- "version": "0.7.1",
3
+ "version": "0.8.1",
4
4
  "description": "opencode closed-loop usage coach — quota SENSE -> coaching DECIDE -> loop ACT + TUI integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",