robo7
5dda42a49f
fix: enforce archive path containment when sessions dir is missing
...
Use path.resolve(sessionsDir) as fallback when realpathSync fails,
ensuring the traversal guard stays active even for nonexistent agent
directories. Previously the guard was skipped entirely.
2026-03-14 00:11:52 +08:00
robo7
038186e30d
fix: preserve archived transcript identity in usage resolution
...
- Extract findArchivedTranscript() helper for reuse across resolution paths
- resolveSessionUsageFileOrRespond: fall back to archived transcript when
primary file is missing (reset/deleted sessions)
- Archived keys use :: delimiter with embedded filename for uniqueness
(e.g. agent:main:sess-foo::sess-foo.jsonl.reset.2026-03-13T10-00-00Z)
- resolveSessionUsageFileOrRespond detects :: keys and resolves directly
to archived file with path traversal guard
- sessions.usage specific-key branch: fall back to findArchivedTranscript
when primary transcript doesn't exist
- DiscoveredSession.archived flag for downstream consumers
- Fix .sort() → .toSorted() for oxlint compliance
Closes review feedback on PR #45204 .
2026-03-14 00:02:26 +08:00
Peter Steinberger
d358b3ac88
refactor(core): extract shared usage, auth, and display helpers
2026-03-02 08:54:20 +00:00
Harold Hunt
844d84a7f5
Issue 17774 - Usage - Local - Show data from midnight to midnight of selected dates for browser time zone (AI assisted) (openclaw#19357) thanks @huntharo
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test:macmini (override approved by Tak for this run; local baseline failures outside PR scope)
Co-authored-by: huntharo <5617868+huntharo@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-02-20 20:09:03 -06:00
Peter Steinberger
5e76cefc70
refactor(gateway): share session store lookup map builder
2026-02-18 22:40:26 +00:00
Peter Steinberger
b8b43175c5
style: align formatting with oxfmt 0.33
2026-02-18 01:34:35 +00:00
Peter Steinberger
31f9be126c
style: run oxfmt and fix gate failures
2026-02-18 01:29:02 +00:00
cpojer
d0cb8c19b2
chore: wtf.
2026-02-17 13:36:48 +09:00
Sebastian
ed11e93cf2
chore(format)
2026-02-16 23:20:16 -05:00
cpojer
90ef2d6bdf
chore: Update formatting.
2026-02-17 09:18:40 +09:00
Peter Steinberger
2c5e24cbb5
refactor(gateway): dedupe session usage file resolution
2026-02-15 06:11:53 +00:00
Peter Steinberger
fef86e475b
refactor: dedupe shared helpers across ui/gateway/extensions
2026-02-15 03:34:14 +00:00
Peter Steinberger
990413534a
fix: land multi-agent session path fix + regressions ( #15103 ) ( #15448 )
...
Co-authored-by: Josh Lehman <josh@martian.engineering>
2026-02-13 14:17:24 +01:00
Gustavo Madeira Santana
ac41176532
Auto-reply: fix non-default agent session transcript path resolution ( #15154 )
...
* Auto-reply: fix non-default agent transcript path resolution
* Auto-reply: harden non-default agent transcript lookups
* Auto-reply: harden session path resolution across agent stores
2026-02-12 23:23:12 -05:00
Peter Steinberger
4199f9889f
fix: harden session transcript path resolution
2026-02-13 01:28:17 +01:00
Tak Hoffman
9271fcb3d4
Gateway: fix multi-agent sessions.usage discovery ( #11523 )
...
* Gateway: fix multi-agent sessions.usage discovery
* Gateway: resolve sessions.usage keys via sessionId
2026-02-07 17:40:56 -06:00
Tak Hoffman
8a352c8f9d
Web UI: add token usage dashboard ( #10072 )
...
* feat(ui): Token Usage dashboard with session analytics
Adds a comprehensive Token Usage view to the dashboard:
Backend:
- Extended session-cost-usage.ts with per-session daily breakdown
- Added date range filtering (startMs/endMs) to API endpoints
- New sessions.usage, sessions.usage.timeseries, sessions.usage.logs endpoints
- Cost breakdown by token type (input/output/cache read/write)
Frontend:
- Two-column layout: Daily chart + breakdown | Sessions list
- Interactive daily bar chart with click-to-filter and shift-click range select
- Session detail panel with usage timeline, conversation logs, context weight
- Filter chips for active day/session selections
- Toggle between tokens/cost view modes (default: cost)
- Responsive design for smaller screens
UX improvements:
- 21-day default date range
- Debounced date input (400ms)
- Session list shows filtered totals when days selected
- Context weight breakdown shows skills, tools, files contribution
* fix(ui): restore gatewayUrl validation and syncUrlWithSessionKey signature
- Restore normalizeGatewayUrl() to validate ws:/wss: protocol
- Restore isTopLevelWindow() guard for iframe security
- Revert syncUrlWithSessionKey signature (host param was unused)
* feat(ui): Token Usage dashboard with session analytics
Adds a comprehensive Token Usage view to the dashboard:
Backend:
- Extended session-cost-usage.ts with per-session daily breakdown
- Added date range filtering (startMs/endMs) to API endpoints
- New sessions.usage, sessions.usage.timeseries, sessions.usage.logs endpoints
- Cost breakdown by token type (input/output/cache read/write)
Frontend:
- Two-column layout: Daily chart + breakdown | Sessions list
- Interactive daily bar chart with click-to-filter and shift-click range select
- Session detail panel with usage timeline, conversation logs, context weight
- Filter chips for active day/session selections
- Toggle between tokens/cost view modes (default: cost)
- Responsive design for smaller screens
UX improvements:
- 21-day default date range
- Debounced date input (400ms)
- Session list shows filtered totals when days selected
- Context weight breakdown shows skills, tools, files contribution
* fix: usage dashboard data + cost handling (#8462 ) (thanks @mcinteerj)
* Usage: enrich metrics dashboard
* Usage: add latency + model trends
* Gateway: improve usage log parsing
* UI: add usage query helpers
* UI: client-side usage filter + debounce
* Build: harden write-cli-compat timing
* UI: add conversation log filters
* UI: fix usage dashboard lint + state
* Web UI: default usage dates to local day
* Protocol: sync session usage params (#8462 ) (thanks @mcinteerj, @TakHoffman)
---------
Co-authored-by: Jake McInteer <mcinteerj@gmail.com>
2026-02-05 22:35:46 -06:00
cpojer
f06dd8df06
chore: Enable "experimentalSortImports" in Oxfmt and reformat all imorts.
2026-02-01 10:03:47 +09:00
cpojer
5ceff756e1
chore: Enable "curly" rule to avoid single-statement if confusion/errors.
2026-01-31 16:19:20 +09:00
Peter Steinberger
0e17e55be9
fix: cache usage cost summary
2026-01-22 08:51:22 +00:00
Peter Steinberger
3ce1ee84ac
Usage: add cost summaries to /usage + mac menu
2026-01-19 00:05:06 +00:00
Peter Steinberger
eef90b47a3
chore: satisfy lint
2026-01-07 11:49:01 +01:00
Peter Steinberger
9bf6684366
feat: add provider usage tracking
2026-01-07 11:42:46 +01:00