Commit Graph

3357 Commits

Author SHA1 Message Date
diegosouzapw
ef79eab224 feat(api): traffic-inspector ws + requests + replay + annotation routes (F6) 2026-05-28 01:24:14 -03:00
diegosouzapw
1d6fcfd0c4 feat(authz): mark traffic-inspector LOCAL_ONLY + SPAWN_CAPABLE (F6) 2026-05-28 01:24:08 -03:00
diegosouzapw
cb6a8c1641 merge(F4): Inspector core into Group A parent 2026-05-27 23:06:49 -03:00
diegosouzapw
6a5304b79a merge(F3): MITM handlers + targets + server.cjs hook into Group A parent 2026-05-27 23:06:49 -03:00
diegosouzapw
1196d08aad test(mitm): handlers + targets + detection unit tests (F3)
- mitm-handler-base: hookBufferStart returns InterceptedRequest with
  sanitized headers, extractSourceModel parses body.model, writeError
  emits JSON with sanitized message (Hard Rule #12).
- mitm-handler-<id>: nine per-agent happy-path tests (antigravity,
  kiro, copilot, codex, cursor, zed, claude-code, open-code) exercise
  full intercept() with mocked fetch via _mitmHandlerHarness.ts;
  asserts mapped model is forwarded and AgentBridge correlation
  headers are present. Trae test confirms intercept() rejects with a
  structured error.
- mitm-targets-resolve: ALL_TARGETS contains 9 entries; resolveTarget
  is case-insensitive and returns null for unknown hosts.
- mitm-targets-route: bypass > target > passthrough precedence
  validated against representative hostnames.
- mitm-detection: DETECTORS covers every AgentId; detectAgent never
  throws and returns DetectionResult-shaped objects for all probes.
2026-05-27 22:33:56 -03:00
diegosouzapw
75b3e916bc test(inspector): unit tests for F4 inspector core (7 specs) 2026-05-27 21:44:53 -03:00
diegosouzapw
c5f697dbc6 feat(inspector): add harExport (F4) 2026-05-27 21:44:46 -03:00
diegosouzapw
62f2fdc4c1 feat(inspector): add httpProxyServer + systemProxyConfig + agentBridgeHook (F4) 2026-05-27 21:44:42 -03:00
diegosouzapw
482cfbcdad feat(inspector): add buffer, sseMerger, conversationNormalizer, llmMetadataExtractor (F4) 2026-05-27 21:44:37 -03:00
diegosouzapw
a0e9535769 feat(mitm): manager writes targets.json + agent status (F3)
Two additions to src/mitm/manager.ts:

1. writeTargetsJson(targets?) — persists the static ALL_TARGETS
   registry to <DATA_DIR>/mitm/targets.json. server.cjs reads this
   file at boot and extends its baseline TARGET_HOSTS set so the
   full AgentBridge target catalog is intercepted alongside the
   historical antigravity hosts.

2. getAllAgentsStatus() — read-only aggregate of every registered
   target plus its current installation detection result, used by
   the AgentBridge dashboard.

startMitm() now invokes writeTargetsJson() before any DNS/cert work;
write failures are logged but never block startup.
2026-05-27 21:43:10 -03:00
diegosouzapw
4d5328dca4 feat(mitm): hook server.cjs to load dynamic targets.json (F3)
server.cjs now reads <DATA_DIR>/mitm/targets.json at startup and
adds the listed hostnames to TARGET_HOSTS. The antigravity baseline
remains hard-coded so existing installs continue to work even if
targets.json is missing or malformed (loader catches all errors and
returns 0).

All additions are marked with // T-A-F3: comments to make the
forward-port-only changes easy to audit.
2026-05-27 21:36:43 -03:00
diegosouzapw
6347cbfe5d feat(mitm): add detection modules for 8 agents (F3)
Filesystem-only installation probes for antigravity, kiro, copilot,
codex, cursor, zed, claude-code, and open-code. detectAgent(id)
dispatcher returns {installed, path?} without ever spawning a shell
or interpolating runtime paths (Hard Rule #13).

Trae has no detector — its entry in the dispatch table returns
{installed: false} until upstream viability is confirmed.
2026-05-27 21:31:46 -03:00
diegosouzapw
304dcac4cc feat(mitm): add targets index with resolveTarget + routeConnection (F3)
ALL_TARGETS aggregates the nine MitmTarget descriptors in canonical
order. resolveTarget(hostname) does a case-insensitive exact-match
lookup against each target.hosts list. routeConnection(hostname,
userBypass) returns {kind: bypass|target|passthrough} per plan 11
§4.6 precedence: default+user bypass > known target host > passthrough.
2026-05-27 21:31:39 -03:00
diegosouzapw
bed254954c feat(mitm): add remaining targets (cursor/zed/claudeCode/openCode/trae) (F3)
Declarative MitmTarget descriptors for the remaining agent identities:
- cursor: api2.cursor.sh, OpenAI Chat Completions
- zed: api.zed.dev, OpenAI Chat Completions
- claude-code: api.anthropic.com, Anthropic Messages format
- open-code: opencode.ai, OpenAI Chat Completions
- trae: viability=investigating, host trae.invalid placeholder

All entries point at lazy dynamic imports of their respective
handlers in src/mitm/handlers/<id>.ts (F3 handlers commit).
2026-05-27 21:31:33 -03:00
diegosouzapw
316e3b39f3 feat(mitm): add handler base + 9 concrete agent handlers (F3)
Implements MitmHandlerBase abstract class with shared concerns
(request body capture, secret masking, router forwarding, SSE
piping, Traffic Inspector hooks via dynamic import) plus concrete
handlers for antigravity, kiro, copilot, codex, cursor, zed,
claude-code, open-code, and trae (stub for investigating viability).

Each concrete handler maps request body model field to a configured
target, forwards to OmniRoute router, and pipes back SSE.

Targets antigravity and kiro updated to the new MitmTarget shape
while preserving legacy MITM_PROFILE export aliases.
2026-05-27 21:31:26 -03:00
diegosouzapw
ddf6b0ef63 merge(F2): DB migrations + modules into Group A parent 2026-05-27 19:41:11 -03:00
diegosouzapw
648415d4cf merge(F1): shared foundation into Group A parent 2026-05-27 19:41:10 -03:00
diegosouzapw
97d607e7c5 test(mitm/inspector): unit tests for F1 foundation utilities
83 tests across 7 files: mitm-masksecrets (9), mitm-passthrough (10),
mitm-upstream-trust (5), inspector-kind-detector (14), inspector-context-key (11),
inspector-types (11), shared-schemas (23). All green.
2026-05-27 19:39:37 -03:00
diegosouzapw
96b6000f40 feat(schemas): add agentBridge/inspector Zod schemas (F1)
- AgentBridgeStateRow/Mapping/Bypass/ServerAction/Dns/MappingPut/BypassUpsert/UpstreamCaPost schemas
- InspectorCustomHost/SessionStart/SessionPatch/CaptureModeAction/SystemProxy/TlsInterceptToggle/AnnotationPut/ListQuery schemas
2026-05-27 19:39:32 -03:00
diegosouzapw
411a6d85d1 feat(inspector): add types, contextKey, kindDetector (F1)
- InterceptedRequest/LlmMetadata/WsEvent types + InterceptedRequestSchema
- extractSystemPrompt() supports OpenAI/Anthropic/Gemini formats
- computeContextKey() returns 12-hex SHA-256 of system prompt
- detectKind() classifies traffic via 18 host patterns + path + body + UA
- src/lib/inspector/secretMask.ts re-exports maskSecret (plano 12 bridge)
2026-05-27 19:39:26 -03:00
diegosouzapw
898f2f21c4 feat(mitm): add types, masking, passthrough, upstream-trust (F1)
- MitmTarget/AgentId types + MitmTargetSchema (Zod) in src/mitm/types.ts
- maskSecret() with pre-compiled BEARER/SK_KEY/LONG_TOKEN patterns
- sanitizeHeaders() using isForbiddenUpstreamHeaderName denylist + masking
- shouldBypass()/globMatch() — ReDoS-safe string split (no runtime RegExp)
- configureUpstreamCa() sets undici global dispatcher; safe error message (Hard Rule #12)
2026-05-27 19:39:18 -03:00
diegosouzapw
80fa37f30f test(db): unit tests for F2 modules 2026-05-27 19:24:30 -03:00
diegosouzapw
47c0dce062 chore(env): document AgentBridge + Inspector env vars and re-exports (F2) 2026-05-27 19:24:26 -03:00
diegosouzapw
9fcfc2bd0b feat(db): add inspector custom hosts + sessions CRUD modules (F2) 2026-05-27 19:24:22 -03:00
diegosouzapw
45f602606b feat(db): add agentBridge state/mappings/bypass CRUD modules (F2) 2026-05-27 19:24:19 -03:00
diegosouzapw
89d3304a93 feat(db): add migrations 073/074/075 agent_bridge + inspector (F2) 2026-05-27 19:24:14 -03:00
diegosouzapw
722e9f41cd chore: apply unit test fixes, polyfills, and environment precedence fixes 2026-05-27 18:02:17 -03:00
JeferssonLemes
52a43d65d3 feat(modelSpecs): align opencode-go family with upstream provider limits (#2802)
Integrated into release/v3.8.6
2026-05-27 17:06:32 -03:00
Hernan Javier Ardila Sanchez
0e9aed4d03 fix(gemini): emit signaturelessToolCallMode:text for GEMINI format models (#2801)
Integrated into release/v3.8.6
2026-05-27 17:05:36 -03:00
Apostol Apostolov
87fad5d171 [codex] home: restore settings-driven home layout and quota auto-refresh (#2800)
Integrated into release/v3.8.6
2026-05-27 17:05:18 -03:00
Apostol Apostolov
f1e4c001a9 feat(logs): add clean history button (#2799)
Integrated into release/v3.8.6
2026-05-27 17:04:49 -03:00
akarray
83445a96b8 fix(oauth): repair Google loopback callback flow (#2796)
Integrated into release/v3.8.6
2026-05-27 17:04:31 -03:00
Markus Hartung
0c6c5e212e fix: Error: Unable to inspect existing database #2771 (#2795)
Integrated into release/v3.8.6
2026-05-27 17:04:13 -03:00
Paijo
aac17c01c3 fix: register missing web-cookie validators (claude-web, gemini-web, copilot-web, t3-web) (#2793)
Integrated into release/v3.8.6
2026-05-27 17:03:55 -03:00
Paijo
619463c573 fix: resolve npm install warnings — remove dead deps, relax engine constraint (#2792)
Integrated into release/v3.8.6
2026-05-27 17:03:38 -03:00
JeferssonLemes
72a46581b6 fix(opencode-go): route qwen3.x via claude messages + repair fixMissingToolResponses for Claude-shape upstreams (#2791)
Integrated into release/v3.8.6
2026-05-27 17:02:38 -03:00
diegosouzapw
722aa32939 chore: ignore .claude/settings.local.json (per-user Claude Code permissions) 2026-05-27 16:29:27 -03:00
diegosouzapw
80f8dd7863 chore: merge release/v3.8.5 into main (post-v3.8.5 hotfixes + community PRs) 2026-05-27 16:23:02 -03:00
Diego Rodrigues de Sa e Souza
3c016ce4dc Merge pull request #2790 from jeferssonlemes/feat/opencode-go-missing-models
feat(opencode-go): register 4 missing models from upstream catalog
2026-05-27 10:42:14 -03:00
diegosouzapw
7042460292 chore: merge release/v3.8.5 to resolve conflicts 2026-05-27 10:41:52 -03:00
Diego Rodrigues de Sa e Souza
10ecf693a9 Merge pull request #2789 from InkshadeWoods/main
fix(i18n): translate 162 missing zh-CN UI strings
2026-05-27 10:41:29 -03:00
diegosouzapw
d718a6cbfb chore: merge release/v3.8.5 to resolve conflicts 2026-05-27 10:41:07 -03:00
Diego Rodrigues de Sa e Souza
f32f6b841c Merge pull request #2782 from kjhq/docs/fix-readme-broken-links
docs: fix broken documentation links in README after Fumadocs migration
2026-05-27 10:31:54 -03:00
diegosouzapw
7117cea835 chore: merge release/v3.8.5 to resolve conflicts 2026-05-27 10:31:40 -03:00
Diego Rodrigues de Sa e Souza
c765a987e6 Merge pull request #2783 from JxnLexn/fix-codex
fix(codex): apply global service tiers to combo request bodies
2026-05-27 10:31:22 -03:00
diegosouzapw
a00af74279 chore: merge release/v3.8.5 to resolve conflicts 2026-05-27 10:31:09 -03:00
Diego Rodrigues de Sa e Souza
1d28fbc6f2 Merge pull request #2784 from hartmark/feature/docker-speedup
fix: speedup docker creation by reducing steps and bunch up copy operations
2026-05-27 10:30:47 -03:00
diegosouzapw
a7e1124f64 chore: merge release/v3.8.5 to resolve conflicts 2026-05-27 10:29:53 -03:00
Diego Rodrigues de Sa e Souza
4cefed33f7 Merge pull request #2785 from JxnLexn/fix-logging
fix: keep database log settings in sync with the pipeline toggle
2026-05-27 10:29:30 -03:00
diegosouzapw
02494051af chore: merge release/v3.8.5 to resolve conflicts 2026-05-27 10:29:15 -03:00