diegosouzapw
f0cdc3622e
fix(agent-bridge-ui): remove double-write of risk-accepted localStorage (M5)
...
AgentCard.handleRiskAccept was calling markRiskAccepted() before opening the
RiskNoticeModal, which itself writes the same key via dontShowAgainKey on accept.
Remove the redundant markRiskAccepted call and delete the now-unused helper so
RiskNoticeModal (D16) is the sole canonical persistence owner. Add a spy-based
test asserting the key is written exactly once per accept.
2026-05-28 16:24:09 -03:00
diegosouzapw
fa655ab4df
test(inspector-ui): assert StatsCharts is lazy-loaded via dynamic
...
11 assertions covering: dynamic import with ssr:false, absence of static
recharts import in StatsTab, absence of the discarded _rechartsPreload
pattern, and presence of recharts exports in StatsCharts.
2026-05-28 16:07:11 -03:00
diegosouzapw
d779707b3a
refactor(inspector-ui): split StatsTab charts into separate dynamic-imported module (C3)
...
Move all recharts rendering into StatsCharts.tsx and replace the orphaned
_rechartsPreload no-op with a proper next/dynamic() call (ssr: false), achieving
real bundle split so recharts is not included in the initial page chunk.
2026-05-28 16:07:03 -03:00
diegosouzapw
9df7cad803
refactor(inspector): return 'unknown' from kindDetector for unclear signals (B1)
2026-05-28 16:06:25 -03:00
diegosouzapw
3c9dcf2475
merge(fix4): historic banner + conversation separators + per-agent risk modal (Group A)
2026-05-28 13:00:47 -03:00
diegosouzapw
5377f6f0c4
test(ui): coverage for fix4 UI behaviors (3 specs)
2026-05-28 12:58:51 -03:00
diegosouzapw
cd46090b75
feat(i18n): banner/separator/risk strings for fix4 (en + pt-BR)
2026-05-28 12:58:44 -03:00
diegosouzapw
72fd52db83
feat(ui): per-agent RiskNoticeModal on first DNS activation (fix4 gap3)
2026-05-28 12:58:39 -03:00
diegosouzapw
5f065a20e5
feat(ui): conversation tab CONTEXT HISTORY / MODEL RESPONSE separators (fix4 gap2)
2026-05-28 12:58:33 -03:00
diegosouzapw
2406e392d8
feat(ui): historic session banner with back-to-live action (fix4 gap1)
2026-05-28 12:58:29 -03:00
diegosouzapw
2f3cbdb9fe
merge(fix3): wire useTranslations in Traffic Inspector components (Group A)
2026-05-28 11:40:29 -03:00
diegosouzapw
f37148903d
merge(fix2): system proxy revert on page exit (Group A)
2026-05-28 11:38:13 -03:00
diegosouzapw
699053fe80
merge(fix1): addDNSEntry generic for dynamic custom hosts (Group A)
2026-05-28 11:38:12 -03:00
diegosouzapw
8dbc3ae551
feat(i18n): wire useTranslations in Traffic Inspector components (fix3)
...
Convert CaptureModesToolbar, TopBarControls, CustomHostsManager,
HttpProxySnippetCard and SessionRecorderBar to consume useTranslations
instead of hardcoded English strings. Add 7 missing trafficInspector
keys (customHostsTitle, loading, copied, copy, httpProxyTitle,
notRecording, anyStatus) to both en.json and pt-BR.json.
2026-05-28 11:36:02 -03:00
diegosouzapw
5e51436ff3
test(mitm/api): coverage for dynamic DNS entries (fix1)
2026-05-28 11:23:52 -03:00
diegosouzapw
8e518ae008
feat(api): wire DNS propagation for traffic-inspector custom hosts (fix1)
2026-05-28 11:23:48 -03:00
diegosouzapw
785f8e4117
feat(mitm): parameterize addDNSEntry/removeDNSEntry for dynamic hosts (fix1)
2026-05-28 11:23:45 -03:00
diegosouzapw
3d65f87f63
test(ui): system proxy exit guard hook (fix2)
2026-05-28 11:21:18 -03:00
diegosouzapw
9cc85f4864
feat(i18n): add system proxy exit warning string (fix2)
2026-05-28 11:21:13 -03:00
diegosouzapw
bdd65cdd5e
feat(ui): system proxy exit guard via beforeunload + sendBeacon (fix2)
2026-05-28 11:21:09 -03:00
diegosouzapw
53754ae93c
merge(F10): audit report + sourceModel fix(F3) (Group A)
2026-05-28 10:26:03 -03:00
diegosouzapw
3cb3b88c9d
merge(F9): docs (AGENTBRIDGE/TRAFFIC_INSPECTOR) + openapi + E2E specs + CHANGELOG (Group A)
2026-05-28 10:26:02 -03:00
diegosouzapw
8926c8bf98
chore(changelog): document Group A AgentBridge + Traffic Inspector (F9)
2026-05-28 09:14:40 -03:00
diegosouzapw
48c31c4ce5
test(e2e): smoke flows for agent-bridge + traffic-inspector + cross (F9)
2026-05-28 09:14:27 -03:00
diegosouzapw
5ff220b655
docs(api): add ~28 routes for agent-bridge + traffic-inspector to openapi.yaml (F9)
2026-05-28 09:14:18 -03:00
diegosouzapw
7a33af8ef7
docs(architecture): register agent-bridge + traffic-inspector in REPOSITORY_MAP (F9)
2026-05-28 09:14:12 -03:00
diegosouzapw
76fa6688ae
docs(frameworks): add TRAFFIC_INSPECTOR.md (F9)
2026-05-28 09:14:04 -03:00
diegosouzapw
12cc1bb79c
docs(frameworks): add AGENTBRIDGE.md (F9)
2026-05-28 09:13:51 -03:00
diegosouzapw
70c9bf279a
fix(F3): pass sourceModel to agentBridgeHook.recordRequestStart
...
hookBufferStart was calling recordRequestStart without sourceModel,
causing the field to be null even when extractSourceModel returned
a value from the body. Now forwards the extracted model so the
Traffic Inspector buffer entry is populated correctly.
2026-05-28 09:06:16 -03:00
diegosouzapw
039ff0abd9
merge(F8): Traffic Inspector UI into Group A parent
2026-05-28 08:05:58 -03:00
diegosouzapw
e6bfe147d5
merge(F7): AgentBridge UI into Group A parent
2026-05-28 07:29:56 -03:00
diegosouzapw
1c0015a9ab
merge(F6): Traffic Inspector REST + WS routes into Group A parent
2026-05-28 07:29:56 -03:00
diegosouzapw
105d2586b0
merge(F5): AgentBridge REST routes into Group A parent
2026-05-28 07:26:35 -03:00
diegosouzapw
bd31823259
test(ui): add traffic-inspector UI tests (56 cases passing) (F8)
2026-05-28 07:25:32 -03:00
diegosouzapw
98c5fefed4
feat(i18n): add Traffic Inspector strings for en + pt-BR (F8)
2026-05-28 07:25:27 -03:00
diegosouzapw
d73273ca20
feat(sidebar): add traffic-inspector entry to HIDEABLE + TOOLS_GROUP (F8)
2026-05-28 07:25:23 -03:00
diegosouzapw
442457af75
feat(ui): traffic-inspector hooks (stream, filters, virtual-list, resizable, session, replay) (F8)
2026-05-28 07:25:20 -03:00
diegosouzapw
4a802e84bd
feat(ui): traffic-inspector shared components (waterfall, json, context bar, etc) (F8)
2026-05-28 07:25:15 -03:00
diegosouzapw
389b035bee
feat(ui): traffic-inspector conversation chat bubbles + session recorder/picker (F8)
2026-05-28 07:25:09 -03:00
diegosouzapw
e5a0d3df22
feat(ui): traffic-inspector tabs (headers/request/response/timing/llm/stats) (F8)
2026-05-28 07:25:04 -03:00
diegosouzapw
2502993581
feat(ui): traffic-inspector page + capture toolbar + streaming list (F8)
2026-05-28 07:25:00 -03:00
diegosouzapw
2568e9f1f5
fix(ui): resolve react-hooks/set-state-in-effect lint errors (F7)
...
- RiskNoticeBanner: use lazy useState initializer for localStorage read
instead of useEffect + setState
- ModelSelectorModal: move fetch logic to useCallback, call from useEffect
to avoid setState directly in effect body
2026-05-28 02:00:53 -03:00
diegosouzapw
f6f5d8da7d
test(ui): agent-bridge UI unit tests (F7)
...
18 vitest/jsdom tests across 4 files:
- agent-bridge-page.test.tsx: EmptyState, RiskNoticeBanner (render/dismiss),
BypassListEditor (defaults, initial patterns)
- agent-card.test.tsx: render, expand, DNS toggle, wizard open
- setup-wizard.test.tsx: step1 render, Next navigation, DNS enable, Cancel
- bypass-list-editor.test.tsx: defaults, patterns, save callback, button
All 18 tests pass. Timeout set to 30000ms (initial transform overhead).
2026-05-28 01:39:44 -03:00
diegosouzapw
5046bff067
feat(i18n): pt-BR + en strings for AgentBridge (F7)
...
Add ~90 i18n keys under agentBridge.* namespace (server card, agent list,
agent card, setup wizard, model mapping, bypass list, upstream CA, empty
state, risk banner, sidebar title/subtitle) in en.json and pt-BR.json.
Other 39 locales get EN fallback automatically (D17).
2026-05-28 01:39:36 -03:00
diegosouzapw
dcb9685aa8
feat(redirect): /system/mitm-proxy now points to /tools/agent-bridge (F7)
...
Update the old MITM proxy page redirect from /dashboard/system/proxy
to /dashboard/tools/agent-bridge per plan 11 acceptance criterion.
2026-05-28 01:39:30 -03:00
diegosouzapw
91e3d9c965
feat(sidebar): add agent-bridge entry to TOOLS_GROUP (F7)
...
Add "agent-bridge" to HIDEABLE_SIDEBAR_ITEM_IDS and to TOOLS_GROUP.items
after cloud-agents. Only adding lines, never reordering (D5 / Hard Rule).
2026-05-28 01:39:23 -03:00
diegosouzapw
192e6286da
feat(ui): agent-bridge page + server card + agent list (F7)
...
Add AgentBridge full UI at /dashboard/tools/agent-bridge:
- page.tsx (Server Component, fetches state + providers check)
- AgentBridgePageClient.tsx (orchestrator, all mutations)
- AgentBridgeServerCard: Start/Stop/Restart/TrustCert/Download/RegenCert
- AgentList: grid + All/Active/Setup/Investigating filter + search
- AgentCard: expandable with DNS toggle, model mappings, setup wizard
- SetupWizard: 3-step modal (Verify → DNS → Mappings)
- ModelMappingTable + ModelSelectorModal: source→target inline editing
- BypassListEditor: default + user bypass patterns textarea/chips
- UpstreamCaField: path + Test TLS + Save
- EmptyStateNoProviders: shown when zero providers configured (D15)
- RiskNoticeBanner: amber dismissible (localStorage persistence)
- shared/: DnsStatusBadge, CertStatusIcon, AgentIcon
- hooks/useAgentBridgeState: polling fetch (no SWR dependency)
- src/shared/components/RiskNoticeModal.tsx: generic risk modal (D16)
2026-05-28 01:39:17 -03:00
diegosouzapw
1d9cb7eb03
test(api): integration tests for traffic-inspector routes (F6)
2026-05-28 01:24:33 -03:00
diegosouzapw
668010bcf2
feat(api): traffic-inspector sessions + internal ingest routes (F6)
2026-05-28 01:24:26 -03:00
diegosouzapw
c16ce8a9e1
feat(api): traffic-inspector hosts + capture-modes + tls routes (F6)
2026-05-28 01:24:20 -03:00