chore: snapshot working tree - pty_exited notifications + in-flight inference WIP
feat(booterm): structured pty_exited WS notifications. Plan-validated, impl-validated, code-reviewed green (contracts build clean, contracts test 29/29, booterm + web typecheck clean). wip: in-progress inference/provider refactor (agents.ts, provider.ts, new llama-providers.ts, removed llama-args-validator), plus arena, dispatcher, compaction, schema changes. openspec: pty-exit-notifications complete; x-agent-flags planned (not yet implemented).
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
# boocode — AI Context Map
|
||||
|
||||
> **Stack:** fastify, go-net-http | none | react | typescript
|
||||
> **Microservices:** @boocode/contracts, @boocode/ion, @boocode/booterm, @boocode/coder, @boocode/server, @boocode/web, codecontext, @boocode/conductor
|
||||
> **Stack:** fastify | none | react | typescript
|
||||
> **Microservices:** @boocode/contracts, @boocode/ion, @boocode/booterm, @boocode/coder, @boocode/control, @boocode/server, @boocode/web, @boocode/conductor
|
||||
|
||||
> 147 routes (9 inferred) + 9 ws | 23 models | 92 components | 288 lib files | 42 env vars | 16 middleware
|
||||
> 182 routes (11 inferred) + 11 ws | 40 models | 107 components | 316 lib files | 57 env vars | 16 middleware
|
||||
> **Token savings:** this file is ~0 tokens. Without it, AI exploration would cost ~0 tokens. **Saves ~0 tokens per conversation.**
|
||||
> **Last scanned:** 2026-06-08 04:10 — re-run after significant changes
|
||||
> **Last scanned:** 2026-06-13 12:48 — re-run after significant changes
|
||||
|
||||
---
|
||||
|
||||
@@ -17,14 +17,13 @@
|
||||
- **`/api/plans`** GET | POST | GET/:id | PATCH/:id → Plan
|
||||
- **`/api/runs`** GET | POST | GET/:id → Run
|
||||
- **`/api/tasks`** GET | POST | GET/:id → Task
|
||||
- **`/api/policies`** GET | POST | GET/:id | DELETE/:id → Policie
|
||||
- **`/api/chats/:id/messages`** GET | POST | GET/:id | DELETE/:id → Message
|
||||
- **`/api/projects`** GET | POST | GET/:id | PATCH/:id | DELETE/:id → Project
|
||||
- **`/api/sessions`** GET/:id | PATCH/:id | DELETE/:id → Session
|
||||
|
||||
## Other Routes
|
||||
|
||||
### fastify
|
||||
|
||||
- `GET` `/api/term/health` params()
|
||||
- `GET` `/api/term/sessions/:sid/panes/:pid/search` params(sid, pid) [auth]
|
||||
- `GET` `/api/term/sessions` params() [auth]
|
||||
@@ -76,6 +75,45 @@
|
||||
- `POST` `/api/sessions/:sessionId/worktree-stash` params(sessionId) [auth, db]
|
||||
- `GET` `/api/ws/sessions/:sessionId` params(sessionId) [auth, db]
|
||||
- `GET` `/api/ws/user` params() [auth, db]
|
||||
- `POST` `/v1/chat/completions` params() [auth, ai]
|
||||
- `GET` `/v1/models` params() [auth, ai]
|
||||
- `POST` `/api/action/submit` params() [queue]
|
||||
- `GET` `/api/action/queue/:providerId` params(providerId) [queue]
|
||||
- `POST` `/api/bench/suite` params() [auth, db, cache, queue]
|
||||
- `GET` `/api/bench/suites` params() [auth, db, cache, queue]
|
||||
- `GET` `/api/bench/suites/:id` params(id) [auth, db, cache, queue]
|
||||
- `POST` `/api/bench/run` params() [auth, db, cache, queue]
|
||||
- `GET` `/api/bench/runs` params() [auth, db, cache, queue]
|
||||
- `GET` `/api/bench/runs/:id` params(id) [auth, db, cache, queue]
|
||||
- `GET` `/api/bench/baselines` params() [auth, db, cache, queue]
|
||||
- `GET` `/api/capture/:providerId/:swapEntryId` params(providerId, swapEntryId) [db]
|
||||
- `POST` `/api/eval/suite` params() [db, queue]
|
||||
- `GET` `/api/eval/suites` params() [db, queue]
|
||||
- `GET` `/api/eval/suites/:id` params(id) [db, queue]
|
||||
- `POST` `/api/eval/seed` params() [db, queue]
|
||||
- `POST` `/api/eval/run` params() [db, queue]
|
||||
- `GET` `/api/eval/runs` params() [db, queue]
|
||||
- `GET` `/api/eval/runs/:id` params(id) [db, queue]
|
||||
- `GET` `/api/eval/leaderboard` params() [db, queue]
|
||||
- `GET` `/upstream/:model/props` params(model) [db, cache, ai]
|
||||
- `GET` `/api/playground/models` params() [auth, cache]
|
||||
- `POST` `/api/playground/chat` params() [auth, cache]
|
||||
- `POST` `/api/playground/chat-ab` params() [auth, cache]
|
||||
- `GET` `/api/policies/virtual-models` params() [auth, db]
|
||||
- `GET` `/api/policies/dispatch-log` params() [auth, db]
|
||||
- `GET` `/api/reports` params() [db]
|
||||
- `GET` `/api/reports/:id` params(id) [db]
|
||||
- `POST` `/api/reports/generate` params() [db]
|
||||
- `GET` `/api/reports/schedule` params() [db]
|
||||
- `POST` `/api/reports/schedule` params() [db]
|
||||
- `GET` `/api/routing/scores` params() [db]
|
||||
- `GET` `/api/hosts` params() [db]
|
||||
- `PATCH` `/api/hosts/:id` params(id) [db]
|
||||
- `GET` `/api/hosts/:id/config` params(id) [db]
|
||||
- `POST` `/api/hosts/:id/config/validate` params(id) [db]
|
||||
- `POST` `/api/hosts/:id/config/diff` params(id) [db]
|
||||
- `POST` `/api/hosts/:id/config/apply` params(id) [db]
|
||||
- `GET` `/api/ws/control` params()
|
||||
- `GET` `/api/projects/:id/agents` params(id) [db, cache]
|
||||
- `GET` `/api/analytics/context` params() [auth, db]
|
||||
- `POST` `/api/chats/:id/messages/:msg_id/artifacts/download` params(id, msg_id) [auth, db]
|
||||
@@ -95,8 +133,13 @@
|
||||
- `POST` `/api/chats/:id/compare` params(id) [auth, db, queue]
|
||||
- `GET` `/api/coder/ws/sessions/:sessionId` params(sessionId) [auth]
|
||||
- `ALL` `/api/coder/*` params() [auth]
|
||||
- `GET` `/api/control/ws` params() [auth, ai]
|
||||
- `ALL` `/api/control/*` params() [auth, ai]
|
||||
- `GET` `/api/settings/inference` params() [cache]
|
||||
- `PATCH` `/api/settings/inference` params() [cache]
|
||||
- `GET` `/api/memory` params() [db]
|
||||
- `GET` `/api/memory/daily` params() [db]
|
||||
- `GET` `/api/memory/dreams` params() [db]
|
||||
- `GET` `/api/sessions/:id/messages` params(id) [auth, db, queue]
|
||||
- `POST` `/api/chats/:id/messages/:message_id/regenerate` params(id, message_id) [auth, db, queue]
|
||||
- `POST` `/api/chats/:id/compact` params(id) [auth, db, queue]
|
||||
@@ -137,21 +180,6 @@
|
||||
- `GET` `/api/chats/:id/traces` params(id) [db]
|
||||
- `GET` `/api/ws/sessions/:id` params(id) [auth, db]
|
||||
|
||||
### go-net-http
|
||||
|
||||
- `GET` `/health` params() [queue]
|
||||
- `POST` `/v1/get_codebase_overview` params() [queue]
|
||||
- `POST` `/v1/get_file_analysis` params() [queue]
|
||||
- `POST` `/v1/get_symbol_info` params() [queue]
|
||||
- `POST` `/v1/search_symbols` params() [queue]
|
||||
- `POST` `/v1/get_dependencies` params() [queue]
|
||||
- `POST` `/v1/watch_changes` params() [queue]
|
||||
- `POST` `/v1/get_semantic_neighborhoods` params() [queue]
|
||||
- `POST` `/v1/get_framework_analysis` params() [queue]
|
||||
- `POST` `/v1/get_symbol_details` params() [queue]
|
||||
- `POST` `/v1/get_call_graph` params() [queue]
|
||||
- `POST` `/v1/get_blast_radius` params() [queue]
|
||||
|
||||
## WebSocket Events
|
||||
|
||||
- `WS` `message` — `apps/booterm/src/ws/attach.ts`
|
||||
@@ -161,6 +189,8 @@
|
||||
- `WS` `close` — `apps/coder/src/cli.ts`
|
||||
- `WS` `close` — `apps/coder/src/routes/ws.ts`
|
||||
- `WS` `error` — `apps/coder/src/routes/ws.ts`
|
||||
- `WS` `close` — `apps/control/src/routes/ws.ts`
|
||||
- `WS` `error` — `apps/control/src/routes/ws.ts`
|
||||
- `WS` `close` — `apps/server/src/routes/ws.ts`
|
||||
- `WS` `error` — `apps/server/src/routes/ws.ts`
|
||||
|
||||
@@ -305,6 +335,173 @@
|
||||
- items_completed: integer (required)
|
||||
- metadata: jsonb
|
||||
|
||||
### control_hosts
|
||||
- provider_id: text (pk, fk)
|
||||
- ssh_host: text
|
||||
- ssh_user: text
|
||||
- ssh_key_path: text
|
||||
- config_path: text
|
||||
- restart_cmd: text
|
||||
- os: text
|
||||
- gpu_label: text
|
||||
- enabled: boolean (required)
|
||||
|
||||
### control_requests
|
||||
- id: bigint(auto) (pk)
|
||||
- provider_id: text (required, fk)
|
||||
- swap_entry_id: integer (required, fk)
|
||||
- ts: timestamp(tz) (required)
|
||||
- model: text
|
||||
- req_path: text
|
||||
- status_code: integer
|
||||
- duration_ms: integer
|
||||
- cache_tokens: integer
|
||||
- input_tokens: integer
|
||||
- output_tokens: integer
|
||||
- prompt_tps: real
|
||||
- gen_tps: real
|
||||
- has_capture: boolean (required)
|
||||
- capture: jsonb
|
||||
|
||||
### control_perf_samples
|
||||
- provider_id: text (required, fk)
|
||||
- ts: timestamp(tz) (required)
|
||||
- gpu: jsonb
|
||||
- sys: jsonb
|
||||
|
||||
### control_perf_rollup_5m
|
||||
- provider_id: text (required, fk)
|
||||
- bucket: timestamp(tz) (required)
|
||||
- gpu_agg: jsonb
|
||||
- sys_agg: jsonb
|
||||
|
||||
### control_model_events
|
||||
- provider_id: text (required, fk)
|
||||
- model: text (required)
|
||||
- state: text (required)
|
||||
- ts: timestamp(tz) (required)
|
||||
- detail: jsonb
|
||||
|
||||
### bench_suites
|
||||
- id: text (pk)
|
||||
- name: text (required)
|
||||
- provider_id: text (required, fk)
|
||||
- model: text (required)
|
||||
- repetitions: integer (required)
|
||||
- metadata: jsonb
|
||||
|
||||
### bench_runs
|
||||
- id: text (pk)
|
||||
- suite_id: text (required, fk)
|
||||
- job_type: text (required)
|
||||
- status: text (required)
|
||||
- started_at: timestamp(tz)
|
||||
- finished_at: timestamp(tz)
|
||||
- total_samples: integer (required)
|
||||
- completed_samples: integer (required)
|
||||
- concurrent_foreign_requests: integer (required)
|
||||
- temperature: real
|
||||
- top_p: real
|
||||
- aggregate: jsonb
|
||||
- regression_flag: text
|
||||
- error: text
|
||||
|
||||
### bench_samples
|
||||
- id: bigint(auto) (pk)
|
||||
- run_id: text (required, fk)
|
||||
- prompt_tokens: integer (required)
|
||||
- gen_tokens: integer (required)
|
||||
- concurrency: integer (required)
|
||||
- repetition: integer (required)
|
||||
- ttft_ms: real
|
||||
- total_ms: real
|
||||
- prompt_tps: real
|
||||
- gen_tps: real
|
||||
- cache_n: integer
|
||||
- error: text
|
||||
|
||||
### bench_baselines
|
||||
- provider_id: text (required, fk)
|
||||
- model: text (required)
|
||||
- aggregate: jsonb (required)
|
||||
- run_id: text (required, fk)
|
||||
|
||||
### eval_suites
|
||||
- id: text (pk)
|
||||
- name: text (required)
|
||||
- kind: text (required)
|
||||
- version: integer (required)
|
||||
- tasks: jsonb (required)
|
||||
- judge_model: text
|
||||
- judge_model_version: text
|
||||
- metadata: jsonb
|
||||
|
||||
### eval_runs
|
||||
- id: text (pk)
|
||||
- suite_id: text (required, fk)
|
||||
- job_type: text (required)
|
||||
- provider_id: text (required, fk)
|
||||
- model: text (required)
|
||||
- quant: text
|
||||
- status: text (required)
|
||||
- judge_model: text
|
||||
- judge_model_version: text
|
||||
- started_at: timestamp(tz)
|
||||
- finished_at: timestamp(tz)
|
||||
- total_tasks: integer (required)
|
||||
- completed_tasks: integer (required)
|
||||
- aggregate: jsonb
|
||||
- error: text
|
||||
|
||||
### eval_results
|
||||
- id: bigint(auto) (pk)
|
||||
- run_id: text (required, fk)
|
||||
- task_id: text (required, fk)
|
||||
- task_index: integer (required)
|
||||
- score: real
|
||||
- max_score: real
|
||||
- rationale: text
|
||||
- sandbox_exit_code: integer
|
||||
- sandbox_stderr: text
|
||||
- sandbox_stdout: text
|
||||
- execution_ms: integer
|
||||
- error: text
|
||||
|
||||
### control_reports
|
||||
- id: text (pk)
|
||||
- kind: text (required)
|
||||
- interval: text (required)
|
||||
- period_start: timestamp(tz) (required)
|
||||
- period_end: timestamp(tz) (required)
|
||||
- markdown: text (required)
|
||||
- stats: jsonb
|
||||
|
||||
### control_schedule_meta
|
||||
- name: text (pk)
|
||||
- interval: text (required)
|
||||
- enabled: boolean (required)
|
||||
- last_run_at: timestamp(tz)
|
||||
|
||||
### route_policies
|
||||
- id: text (pk)
|
||||
- name: text (required)
|
||||
- virtual_model: text (required)
|
||||
- candidates: jsonb (required)
|
||||
- fallback: text
|
||||
- enabled: boolean (required)
|
||||
|
||||
### route_dispatch_log
|
||||
- id: bigint(auto) (pk)
|
||||
- ts: timestamp(tz) (required)
|
||||
- virtual_model: text (required)
|
||||
- chosen_provider_id: text (fk)
|
||||
- chosen_model: text
|
||||
- candidates_tried: jsonb
|
||||
- status: text (required)
|
||||
- source: text
|
||||
- error: text
|
||||
- duration_ms: integer
|
||||
|
||||
### projects
|
||||
- id: uuid (pk)
|
||||
- name: text (required)
|
||||
@@ -384,6 +581,15 @@
|
||||
- messages: jsonb (required)
|
||||
- tool_states: jsonb (required)
|
||||
|
||||
### memory_entries
|
||||
- id: uuid (pk)
|
||||
- project_id: uuid (required, fk)
|
||||
- topic: text (required)
|
||||
- title: text (required)
|
||||
- content: text (required)
|
||||
- date: date
|
||||
- mood: text
|
||||
|
||||
---
|
||||
|
||||
# Components
|
||||
@@ -448,6 +654,19 @@
|
||||
- **Workspace** — props: sessionId, projectId, agentId, onAgentChange, panesHook, chatsHook, session, project, onAddPane — `apps/web/src/components/Workspace.tsx`
|
||||
- **AddProviderModal** — props: open, onOpenChange, onAdded — `apps/web/src/components/coder/AddProviderModal.tsx`
|
||||
- **ProvidersSettings** — `apps/web/src/components/coder/ProvidersSettings.tsx`
|
||||
- **ActivityTab** — props: requests, providerIds, onOpenCapture — `apps/web/src/components/control/ActivityTab.tsx`
|
||||
- **BenchTab** — props: providerIds — `apps/web/src/components/control/BenchTab.tsx`
|
||||
- **CaptureDrawer** — props: requestId, providerId, onClose — `apps/web/src/components/control/CaptureDrawer.tsx`
|
||||
- **EvalsTab** — props: providerIds — `apps/web/src/components/control/EvalsTab.tsx`
|
||||
- **FleetTab** — props: hosts, gpuMap — `apps/web/src/components/control/FleetTab.tsx`
|
||||
- **HostCard** — props: host, gpuData — `apps/web/src/components/control/HostCard.tsx`
|
||||
- **HostConfigEditor** — props: providerId, onClose — `apps/web/src/components/control/HostConfigEditor.tsx`
|
||||
- **LogsTab** — props: logs, providerIds — `apps/web/src/components/control/LogsTab.tsx`
|
||||
- **PerfChart** — props: series, timestamps, height — `apps/web/src/components/control/PerfChart.tsx`
|
||||
- **PlaygroundTab** — props: providerIds — `apps/web/src/components/control/PlaygroundTab.tsx`
|
||||
- **ReportsTab** — `apps/web/src/components/control/ReportsTab.tsx`
|
||||
- **TtlRing** — props: deadline, size — `apps/web/src/components/control/TtlRing.tsx`
|
||||
- **VramGauge** — props: used, total, size — `apps/web/src/components/control/VramGauge.tsx`
|
||||
- **MatrixRain** — props: enabled, density, speed, opacity — `apps/web/src/components/fx/MatrixRain.tsx`
|
||||
- **NeonField** — props: enabled, opacity, speed — `apps/web/src/components/fx/NeonField.tsx`
|
||||
- **ThemeFx** — `apps/web/src/components/fx/ThemeFx.tsx`
|
||||
@@ -470,10 +689,12 @@
|
||||
- **FloatingMenu** — props: x, y, hasSelection, chatInputs, onCopy, onPaste, onSelectAll, onSearch, onSendToChat, onDismiss — `apps/web/src/components/panes/terminal/FloatingMenu.tsx`
|
||||
- **SearchBar** — props: searchRef, theme, onClose — `apps/web/src/components/panes/terminal/SearchBar.tsx`
|
||||
- **TerminalHotkeyBar** — props: ctrlArmed, onSendBytes, onArmCtrl, onFit — `apps/web/src/components/panes/terminal/TerminalHotkeyBar.tsx`
|
||||
- **ControlProvider** — `apps/web/src/hooks/useControlStream.tsx`
|
||||
- **RightRailDrawerProvider** — `apps/web/src/hooks/useRightRailDrawer.tsx`
|
||||
- **SidebarDrawerProvider** — `apps/web/src/hooks/useSidebarDrawer.tsx`
|
||||
- **PATH_REGEX** — `apps/web/src/lib/linkify-paths.tsx`
|
||||
- **Analytics** — `apps/web/src/pages/Analytics.tsx`
|
||||
- **Control** — `apps/web/src/pages/Control.tsx`
|
||||
- **Home** — `apps/web/src/pages/Home.tsx`
|
||||
- **Memory** — `apps/web/src/pages/Memory.tsx`
|
||||
- **Project** — `apps/web/src/pages/Project.tsx`
|
||||
@@ -600,8 +821,8 @@
|
||||
- function sanitizeSlug: (s) => string
|
||||
- function buildBattleSlug: (battleId, battleType, createdAt) => string
|
||||
- _...7 more_
|
||||
- `apps/coder/src/services/arena-model-call.ts` — function arenaModelCall: (opts, 'LLAMA_SWAP_URL'>;
|
||||
model) => Promise<string>
|
||||
- `apps/coder/src/services/arena-local-models.ts` — function createLocalModelSet: (log) => LocalModelSetHandle, interface LocalModelSetHandle
|
||||
- `apps/coder/src/services/arena-model-call.ts` — function resolveModelEndpoint: (model) => void, function arenaModelCall: (opts) => Promise<string>
|
||||
- `apps/coder/src/services/arena-runner.ts`
|
||||
- function createBattleRunner: (deps) => BattleRunner
|
||||
- interface ContestantSpec
|
||||
@@ -779,6 +1000,11 @@
|
||||
- interface LineRef
|
||||
- `apps/coder/src/services/hashline/xxhash32.ts` — function hashXxh32: (input, seed) => number
|
||||
- `apps/coder/src/services/host-exec.ts` — function hostExec: (command, opts?) => Promise<HostExecResult>, interface HostExecResult
|
||||
- `apps/coder/src/services/llama-providers.ts`
|
||||
- function loadLlamaProviders: (providersPath, llamaSwapUrl) => LlamaProvidersFile
|
||||
- function getLlamaProviders: () => LlamaProvidersFile
|
||||
- function parseModelRef: (ref) => ParsedModelRef
|
||||
- `apps/coder/src/services/local-gateway.ts` — function resolveGatewayModel: (model) => void, function registerLocalGatewayRoutes: (app) => void
|
||||
- `apps/coder/src/services/lsp/client.ts` — class LspClient
|
||||
- `apps/coder/src/services/lsp/config.ts` — function getServerConfig: (filePath) => LspServerConfig | null, interface LspServerConfig
|
||||
- `apps/coder/src/services/lsp/operations.ts`
|
||||
@@ -831,6 +1057,11 @@
|
||||
- function reclaimPort: (port) => void
|
||||
- function waitForPortRelease: (port, timeoutMs) => Promise<boolean>
|
||||
- function freePort: () => Promise<number>
|
||||
- `apps/coder/src/services/opencode-config-sync.ts`
|
||||
- function buildBoocodeLocalProviderConfig: (gatewayUrl) => Promise<OpencodeProviderConfig>
|
||||
- function syncOpencodeConfig: (gatewayUrl, log, msg) => void
|
||||
- interface OpencodeProviderConfig
|
||||
- interface OpencodeConfig
|
||||
- `apps/coder/src/services/orphan-worktree-reaper.ts`
|
||||
- function reapOrphanWorktrees: (sql, log, graceMs, now) => void
|
||||
- function createOrphanWorktreeReaper: (deps) => void
|
||||
@@ -859,6 +1090,11 @@
|
||||
- function waitForElicitationResponse: (taskId, sessionId, provider, modeId, params, timeoutMs) => Promise<CreateElicitationResponse>
|
||||
- function cancelPendingPermission: (taskId) => void
|
||||
- _...3 more_
|
||||
- `apps/coder/src/services/pi-config-sync.ts`
|
||||
- function buildPiProviderEntry: (gatewayUrl, existing?) => Promise<PiProviderConfig>
|
||||
- function syncPiConfig: (gatewayUrl, log, msg) => void
|
||||
- interface PiProviderConfig
|
||||
- interface PiModelsConfig
|
||||
- `apps/coder/src/services/plan-store.ts`
|
||||
- function createPlan: (sql, opts) => Promise<Plan>
|
||||
- function getPlan: (sql, planId) => Promise<Plan | null>
|
||||
@@ -891,11 +1127,11 @@
|
||||
- `apps/coder/src/services/provider-snapshot.ts`
|
||||
- function fetchDeepSeekModels: (config) => Promise<ProviderModel[]>
|
||||
- function fetchLlamaSwapModels: (config) => Promise<ProviderModel[]>
|
||||
- function fetchRegistryModels: (defaultModel?) => Promise<ProviderModel[]>
|
||||
- function prefixLlamaSwapModels: (models) => ProviderModel[]
|
||||
- function prefixBoocodeLocalModels: (models) => ProviderModel[]
|
||||
- function mergeModels: (...lists) => ProviderModel[]
|
||||
- function getProviderSnapshot: (sql, config, cwd?, force) => Promise<ProviderSnapshotEntry[]>
|
||||
- function clearProviderSnapshotCache: () => void
|
||||
- _...2 more_
|
||||
- _...4 more_
|
||||
- `apps/coder/src/services/pty-dispatch.ts`
|
||||
- function dispatchViaPty: (opts) => Promise<DispatchResult>
|
||||
- interface DispatchResult
|
||||
@@ -939,6 +1175,125 @@
|
||||
- function isSecretPath: (filePath) => boolean
|
||||
- function resolveWritePath: (projectRoot, filePath) => string
|
||||
- class WriteGuardError
|
||||
- `apps/control/src/config.ts` — function loadConfig: () => Config, type Config
|
||||
- `apps/control/src/db.ts`
|
||||
- function getSql: (config) => Sql
|
||||
- function waitForTable: (sql, tableName, timeoutMs) => Promise<void>
|
||||
- function applySchema: (sql) => Promise<void>
|
||||
- function pingDb: (sql) => Promise<boolean>
|
||||
- function closeDb: () => Promise<void>
|
||||
- type Sql
|
||||
- `apps/control/src/index.ts`
|
||||
- function createDeltaEmitter: () => DeltaEmitter
|
||||
- function handleLlamaSweepEvent: (fleet, sql, config, providerId, emitter, event, logRelay) => Promise<void>
|
||||
- type DeltaCallback
|
||||
- type DeltaEmitter
|
||||
- `apps/control/src/services/action-queue.ts`
|
||||
- class ActionQueue
|
||||
- interface QueuedAction
|
||||
- interface ActionQueueEntry
|
||||
- interface ActionQueueState
|
||||
- interface ActionQueueDeps
|
||||
- type ActionType
|
||||
- `apps/control/src/services/bench-engine.ts`
|
||||
- function parseLlamaTimings: (chunk) => BenchTimings | null
|
||||
- function runSingleBenchRequest: (baseUrl, model, promptTokens, genTokens, repetition, temperature, topP) => Promise<BenchSample>
|
||||
- function runBenchSuite: (params, sql, emitter, seq, onProgress) => void
|
||||
- function computeRegressionFlag: (current, baselineJson) => 'baseline' | 'regression' | 'improvement' | null
|
||||
- function computeAggregates: (samples) => BenchAggregate
|
||||
- interface BenchSuite
|
||||
- _...5 more_
|
||||
- `apps/control/src/services/capture-fetch.ts`
|
||||
- function fetchCapture: (baseUrl, providerId, swapEntryId) => Promise<CaptureFetchResult>
|
||||
- function parseCapture: (raw, unknown>, providerId, swapEntryId) => CaptureData
|
||||
- function persistCapture: (sql, capture) => Promise<void>
|
||||
- interface CaptureData
|
||||
- interface CaptureFetchResult
|
||||
- `apps/control/src/services/eval-suites.ts`
|
||||
- function loadEvalSuitesFromData: () => EvalSuiteData[]
|
||||
- function seedEvalSuites: (sql) => Promise<void>
|
||||
- function listEvalSuites: (sql) => Promise<EvalSuiteRow[]>
|
||||
- function getEvalSuite: (sql, id) => Promise<EvalSuiteRow | null>
|
||||
- function upsertEvalSuite: (sql, id, name, kind, tasks, judgeModel, metadata?, unknown>) => Promise<string>
|
||||
- function createEvalRun: (sql, suiteId, providerId, model, quant, judgeModel, judgeModelVersion, totalTasks) => Promise<string>
|
||||
- _...9 more_
|
||||
- `apps/control/src/services/fleet-connector.ts`
|
||||
- function addJitter: (delayMs) => number
|
||||
- function reconnectDecision: (failures, policy) => ReconnectDecision
|
||||
- function parseSseLine: (line) => LlamaSweepSSEEvent | null
|
||||
- function startFleetConnector: (providerId, baseUrl, deps) => AbortController
|
||||
- function runFleetConnector: (providerId, baseUrl, abort, deps) => Promise<void>
|
||||
- interface ReconnectPolicy
|
||||
- _...8 more_
|
||||
- `apps/control/src/services/fleet-state.ts`
|
||||
- function createFleetState: () => FleetState
|
||||
- function ensureHostState: (fleet, providerId) => HostState
|
||||
- function stampLastSeen: (state) => void
|
||||
- function incrementSeq: (state) => number
|
||||
- interface HostConfig
|
||||
- interface FleetState
|
||||
- _...3 more_
|
||||
- `apps/control/src/services/gateway.ts`
|
||||
- function isGatewayVirtualModel: (id) => boolean
|
||||
- function parseVirtualModel: (modelId) => string
|
||||
- function orderCandidates: (virtualModel, policy, scores) => string[]
|
||||
- function resolveCandidates: (sql, fleet, modelId) => Promise<ResolvedCandidates>
|
||||
- function splitComposite: (compositeId) => void
|
||||
- interface RoutePolicyRow
|
||||
- _...3 more_
|
||||
- `apps/control/src/services/host-access.ts` — function acquireHostAccess: (providerId, purpose) => Promise<HostGrant>, interface HostGrant
|
||||
- `apps/control/src/services/jsonb.ts`
|
||||
- function jsonbStringArray: (value) => string[]
|
||||
- function jsonbArray: (value) => unknown[]
|
||||
- function jsonbNumberArray: (value) => number[]
|
||||
- function jsonbObject: (value) => Record<string, unknown> | null
|
||||
- `apps/control/src/services/judge-runner.ts`
|
||||
- function runJudgeEval: (params, sql, emitter, seq, logger) => void
|
||||
- interface JudgeEvalParams
|
||||
- interface JudgeProgress
|
||||
- interface JudgeResult
|
||||
- `apps/control/src/services/llama-providers.ts`
|
||||
- function loadLlamaProviders: (providersPath, llamaSwapUrl) => LlamaProvidersFile
|
||||
- function getLlamaProviders: () => LlamaProvidersFile
|
||||
- function resolveProviderBaseUrl: (providerId) => string | null
|
||||
- `apps/control/src/services/log-relay.ts` — class LogRelay, interface LogLine
|
||||
- `apps/control/src/services/reconcile.ts` — function detectGap: (oldestReconcileTs, newestPersistedTs) => boolean
|
||||
- `apps/control/src/services/reports.ts`
|
||||
- function gatherReportStats: (sql, interval, now) => Promise<ReportStats>
|
||||
- function renderReportMarkdown: (stats) => string
|
||||
- function generateReport: (sql, interval, now) => void
|
||||
- function isReportDue: (lastRunAt, interval, now) => boolean
|
||||
- function runReportSchedulerTick: (sql, now) => void
|
||||
- interface ReportStats
|
||||
- _...1 more_
|
||||
- `apps/control/src/services/retention.ts`
|
||||
- function buildRetentionConfig: (cfg) => RetentionConfig
|
||||
- function runRollup: (sql, providerId, hours) => Promise<void>
|
||||
- function pruneRawSamples: (sql, providerId, hours) => Promise<void>
|
||||
- function pruneActivity: (sql, hours) => Promise<void>
|
||||
- function pruneModelEvents: (sql, hours) => Promise<void>
|
||||
- function trimCapture: (captureJson, sizeKB) => string | null
|
||||
- _...2 more_
|
||||
- `apps/control/src/services/routing-scores.ts`
|
||||
- function assignBadges: (scores) => void
|
||||
- function computeRoutingScores: (sql, fleet) => Promise<ModelScore[]>
|
||||
- interface ModelScore
|
||||
- type BadgeKind
|
||||
- const BADGE_LABELS: Record<BadgeKind, string>
|
||||
- `apps/control/src/services/sandbox-runner.ts`
|
||||
- function runCodeEval: (params, sql, emitter, seq, onProgress) => void
|
||||
- interface SandboxEvalParams
|
||||
- interface SandboxProgress
|
||||
- interface SandboxResult
|
||||
- interface SandboxContainer
|
||||
- `apps/control/src/services/ssh-config.ts`
|
||||
- function validateLlamaConfig: (yamlText, schema) => ValidationResult
|
||||
- function computeDiff: (oldText, newText) => string
|
||||
- function backupFilename: (configPath, now) => string
|
||||
- function readRemoteConfig: (target, configPath, exec) => Promise<string>
|
||||
- function applyRemoteConfig: (opts) => Promise<ApplyResult>
|
||||
- function healthWait: (baseUrl, fetcher, attempts, delayMs) => Promise<boolean>
|
||||
- _...7 more_
|
||||
- `apps/server/src/config.ts` — function loadConfig: () => Config, type Config
|
||||
- `apps/server/src/db.ts`
|
||||
- function getSql: (config) => Sql
|
||||
@@ -1086,11 +1441,6 @@
|
||||
- function finalizeStreamedRow: (ctx, opts) => void
|
||||
- function finalizeEmpty: (ctx, args) => Promise<void>
|
||||
- function finalizeCompletion: (ctx, args, result, startedAt, session) => Promise<void>
|
||||
- `apps/server/src/services/inference/llama-args-validator.ts`
|
||||
- function validateExtraArgs: (args?) => string[]
|
||||
- function isManagedFlag: (flag) => boolean
|
||||
- function stripShadowingFlags: (args, opts?) => string[]
|
||||
- interface StripOptions
|
||||
- `apps/server/src/services/inference/loop-detectors.ts`
|
||||
- function detectContentRepeat: (messages) => LoopDetectionResult
|
||||
- function detectToolLoop: (toolNames) => LoopDetectionResult
|
||||
@@ -1121,12 +1471,12 @@
|
||||
- interface OpenAiMessage
|
||||
- `apps/server/src/services/inference/provider.ts`
|
||||
- function isDeepSeekModel: (modelId) => boolean
|
||||
- function resolveRoute: (agent, config?, modelId?) => RoutingInfo
|
||||
- function upstreamModel: (config, modelId, agent?) => LanguageModel
|
||||
- function isGatewayVirtualModel: (wireModelId) => boolean
|
||||
- function resolveModelProvider: (modelId, config) => ResolvedModel
|
||||
- function resolveRoute: (agent, config?, modelId?) => void
|
||||
- function upstreamModel: (config, modelId, agent?, source?) => LanguageModel
|
||||
- function resolveModelEndpoint: (config, modelId) => void
|
||||
- function resetDeepSeekProvider: () => void
|
||||
- interface RoutingInfo
|
||||
- _...1 more_
|
||||
- _...4 more_
|
||||
- `apps/server/src/services/inference/prune.ts`
|
||||
- function selectPruneTargets: (partsNewestFirst, tailStartCreatedAt) => void
|
||||
- function prune: (args) => Promise<PruneResult>
|
||||
@@ -1194,6 +1544,10 @@
|
||||
- function runInference: (ctx, sessionId, chatId, assistantMessageId, signal?) => Promise<void>
|
||||
- function runInferenceWithModel: (ctx, sessionId, chatId, assistantMessageId, modelOverride, compareGroupId, signal?) => Promise<void>
|
||||
- function createInferenceRunner: (ctx, 'publishUser'>, publishUserFn, frame) => void
|
||||
- `apps/server/src/services/llama-providers.ts`
|
||||
- function loadLlamaProviders: (providersPath, llamaSwapUrl) => LlamaProvidersFile
|
||||
- function getLlamaProviders: () => LlamaProvidersFile
|
||||
- function parseModelRef: (ref) => ParsedModelRef
|
||||
- `apps/server/src/services/mcp-client.ts`
|
||||
- function initialize: (entries, logger) => Promise<void>
|
||||
- function callTool: (prefixedName, args, unknown>) => Promise<unknown>
|
||||
@@ -1415,6 +1769,7 @@
|
||||
- `apps/web/src/hooks/useProjectGit.ts` — function useProjectGit: (projectId) => GitMeta | null
|
||||
- `apps/web/src/hooks/useProviderSnapshot.ts` — function refreshProviderSnapshot: (cwd?) => Promise<ProviderSnapshotEntry[]>, function useProviderSnapshot: (cwd?) => ProviderSnapshotEntry[] | null
|
||||
- `apps/web/src/hooks/usePullToRefresh.ts` — function usePullToRefresh: (onRefresh) => void
|
||||
- `apps/web/src/hooks/useReducedMotion.ts` — function useReducedMotion: () => boolean
|
||||
- `apps/web/src/hooks/useSessionChats.ts`
|
||||
- function useSessionChats: (sessionId, opts) => UseSessionChatsResult
|
||||
- interface UseSessionChatsOpts
|
||||
@@ -1532,6 +1887,14 @@
|
||||
- function waitForEvent: (threadManager, threadId, eventType, timeoutMs) => Promise<LaceEvent>
|
||||
- function waitForEventCount: (threadManager, threadId, eventType, count, timeoutMs) => Promise<LaceEvent[]>
|
||||
- function waitForEventMatch: (threadManager, threadId, predicate) => void
|
||||
- `packages/contracts/src/llama-providers.ts`
|
||||
- function parseModelRef: (ref, defaultProvider) => ParsedModelRef
|
||||
- function formatModelRef: (providerId, wireModelId) => string
|
||||
- interface ParsedModelRef
|
||||
- type LlamaProvider
|
||||
- type LlamaProvidersFile
|
||||
- const LlamaProviderSchema
|
||||
- _...1 more_
|
||||
- `packages/ion/src/cli/commands/abandon.ts` — function abandonCommand: (args, options) => Promise<void>
|
||||
- `packages/ion/src/cli/commands/approve.ts` — function approveCommand: (args, options) => Promise<void>
|
||||
- `packages/ion/src/cli/commands/cleanup.ts` — function cleanupCommand: (args, options) => Promise<void>
|
||||
@@ -1639,6 +2002,7 @@
|
||||
- `BOOCODE_TRUNCATION_DIR` **required** — apps/server/src/services/__tests__/truncate.test.ts
|
||||
- `BOOCODER_DEV_URL` **required** — apps/web/vite.config.ts
|
||||
- `BOOCODER_URL` **required** — apps/coder/src/cli.ts
|
||||
- `BOOCONTROL_URL` **required** — apps/server/src/index.ts
|
||||
- `BOOTERM_DEV_URL` **required** — apps/web/vite.config.ts
|
||||
- `BOOTERM_SSH_HOST` **required** — apps/booterm/src/pty/manager.ts
|
||||
- `BOOTERM_SSH_USER` **required** — apps/booterm/src/pty/manager.ts
|
||||
@@ -1648,38 +2012,53 @@
|
||||
- `BRAINSTORM_OWNER_PID` **required** — data/skills/superpowers/brainstorming/scripts/server.cjs
|
||||
- `BRAINSTORM_PORT` **required** — data/skills/superpowers/brainstorming/scripts/server.cjs
|
||||
- `BRAINSTORM_URL_HOST` **required** — data/skills/superpowers/brainstorming/scripts/server.cjs
|
||||
- `CODECONTEXT_CHILD` **required** — codecontext/shim.go
|
||||
- `CAPTURE_BUDGET_MB` (has default) — apps/control/.env.example
|
||||
- `CAPTURE_SIZE_KB` (has default) — apps/control/.env.example
|
||||
- `CONDUCTOR_MODEL` **required** — conductor/src/dispatch.ts
|
||||
- `CONDUCTOR_OPENCODE_BIN` **required** — conductor/src/dispatch.ts
|
||||
- `CONDUCTOR_TIMEOUT_MS` **required** — conductor/src/dispatch.ts
|
||||
- `CONTAINER_GUIDANCE_FILE` **required** — apps/server/src/services/__tests__/system-prompt.test.ts
|
||||
- `CONTEXT7_API_KEY` (has default) — .env
|
||||
- `DATABASE_URL` (has default) — .env.example
|
||||
- `DATABASE_URL` (has default) — apps/control/.env.example
|
||||
- `DEEPSEEK_API_KEY` (has default) — .env
|
||||
- `DEEPSEEK_BASE_URL` (has default) — .env
|
||||
- `DEFAULT_MODEL` (has default) — .env.example
|
||||
- `DEV_REMOTE_USER` **required** — apps/web/vite.config.ts
|
||||
- `EMBEDDING_MODEL_PATH` **required** — apps/server/src/services/memory/embeddings.ts
|
||||
- `EVAL_JUDGE_MODEL` **required** — apps/control/src/services/judge-runner.ts
|
||||
- `GITEA_BASE_URL` (has default) — .env
|
||||
- `GITEA_SSH_HOST` (has default) — .env
|
||||
- `GITEA_TOKEN` (has default) — .env
|
||||
- `GITEA_USER` (has default) — .env
|
||||
- `LLAMA_SWAP_URL` (has default) — .env.example
|
||||
- `HOST` (has default) — apps/control/.env.example
|
||||
- `LLAMA_PROVIDERS_PATH` (has default) — apps/control/.env.example
|
||||
- `LLAMA_SWAP_URL` (has default) — apps/control/.env.example
|
||||
- `LOG_LEVEL` (has default) — apps/control/.env.example
|
||||
- `MCP_TEST_MISSING` **required** — apps/server/src/services/__tests__/mcp-config.test.ts
|
||||
- `MCP_TEST_SECRET` **required** — apps/server/src/services/__tests__/mcp-config.test.ts
|
||||
- `MEMORY_SEARCH` **required** — apps/server/src/services/memory/recall.ts
|
||||
- `NODE_ENV` (has default) — .env.example
|
||||
- `PORT` (has default) — .env.example
|
||||
- `NODE_ENV` (has default) — apps/control/.env.example
|
||||
- `PORT` (has default) — apps/control/.env.example
|
||||
- `POSTGRES_PASSWORD` (has default) — .env.example
|
||||
- `PROJECT_ROOT_WHITELIST` (has default) — .env.example
|
||||
- `RETENTION_RAW_HOURS` (has default) — apps/control/.env.example
|
||||
- `RETENTION_ROLLUP_DAYS` (has default) — apps/control/.env.example
|
||||
- `SANDBOX_CONCURRENCY` **required** — apps/control/src/services/sandbox-runner.ts
|
||||
- `SANDBOX_CPU` **required** — apps/control/src/services/sandbox-runner.ts
|
||||
- `SANDBOX_IMAGE` **required** — apps/control/src/services/sandbox-runner.ts
|
||||
- `SANDBOX_MEMORY` **required** — apps/control/src/services/sandbox-runner.ts
|
||||
- `SANDBOX_PIDS` **required** — apps/control/src/services/sandbox-runner.ts
|
||||
- `SANDBOX_TIMEOUT_MS` **required** — apps/control/src/services/sandbox-runner.ts
|
||||
- `SEARXNG_URL` (has default) — .env.example
|
||||
- `SKILLS_ROOT` **required** — apps/server/src/services/skills.ts
|
||||
- `VITEST` **required** — apps/control/src/index.ts
|
||||
- `WEB_DIST_PATH` **required** — apps/server/src/index.ts
|
||||
|
||||
## Config Files
|
||||
|
||||
- `.env.example`
|
||||
- `Dockerfile`
|
||||
- `apps/control/.env.example`
|
||||
- `apps/web/vite.config.ts`
|
||||
- `docker-compose.yml`
|
||||
|
||||
@@ -1720,38 +2099,38 @@
|
||||
## Most Imported Files (change these carefully)
|
||||
|
||||
- `apps/coder/src/db.ts` — imported by **44** files
|
||||
- `apps/server/src/db.ts` — imported by **34** files
|
||||
- `apps/server/src/types/api.ts` — imported by **34** files
|
||||
- `apps/server/src/db.ts` — imported by **32** files
|
||||
- `packages/ion/src/cli/utils.ts` — imported by **24** files
|
||||
- `apps/control/src/db.ts` — imported by **22** files
|
||||
- `apps/coder/src/services/tools/types.ts` — imported by **18** files
|
||||
- `apps/coder/src/conductor/types.ts` — imported by **16** files
|
||||
- `apps/control/src/services/fleet-state.ts` — imported by **15** files
|
||||
- `apps/server/src/services/tools.ts` — imported by **15** files
|
||||
- `apps/coder/src/services/agent-backend.ts` — imported by **14** files
|
||||
- `apps/coder/src/services/acp-tool-snapshot.ts` — imported by **14** files
|
||||
- `apps/control/src/index.ts` — imported by **14** files
|
||||
- `apps/server/src/config.ts` — imported by **14** files
|
||||
- `apps/coder/src/services/provider-config-registry.ts` — imported by **13** files
|
||||
- `conductor/src/types.ts` — imported by **13** files
|
||||
- `apps/coder/src/services/provider-config-registry.ts` — imported by **12** files
|
||||
- `apps/coder/src/config.ts` — imported by **11** files
|
||||
- `apps/coder/src/services/provider-types.ts` — imported by **11** files
|
||||
- `apps/coder/src/services/provider-types.ts` — imported by **12** files
|
||||
- `apps/coder/src/config.ts` — imported by **10** files
|
||||
- `apps/coder/src/services/llama-providers.ts` — imported by **10** files
|
||||
- `apps/server/src/services/broker.ts` — imported by **10** files
|
||||
- `apps/server/src/services/agents.ts` — imported by **10** files
|
||||
- `apps/server/src/services/path_guard.ts` — imported by **10** files
|
||||
- `apps/coder/src/services/pending_changes.ts` — imported by **9** files
|
||||
- `apps/server/src/services/inference/payload.ts` — imported by **9** files
|
||||
- `apps/server/src/services/inference/dcp/messages.ts` — imported by **9** files
|
||||
|
||||
## Import Map (who imports what)
|
||||
|
||||
- `apps/coder/src/db.ts` ← `apps/coder/src/index.ts`, `apps/coder/src/routes/__tests__/agent-sessions.routes.test.ts`, `apps/coder/src/routes/__tests__/chat-resolve.test.ts`, `apps/coder/src/routes/__tests__/providers.routes.test.ts`, `apps/coder/src/routes/agent-sessions.ts` +39 more
|
||||
- `apps/server/src/db.ts` ← `apps/server/src/index.ts`, `apps/server/src/routes/__tests__/settings-favorites.test.ts`, `apps/server/src/routes/agents.ts`, `apps/server/src/routes/analytics.ts`, `apps/server/src/routes/artifacts.ts` +29 more
|
||||
- `apps/server/src/types/api.ts` ← `apps/server/src/routes/chats.ts`, `apps/server/src/routes/messages.ts`, `apps/server/src/routes/models.ts`, `apps/server/src/routes/projects.ts`, `apps/server/src/routes/sessions.ts` +29 more
|
||||
- `apps/server/src/db.ts` ← `apps/server/src/index.ts`, `apps/server/src/routes/agents.ts`, `apps/server/src/routes/analytics.ts`, `apps/server/src/routes/artifacts.ts`, `apps/server/src/routes/chats.ts` +27 more
|
||||
- `packages/ion/src/cli/utils.ts` ← `packages/ion/src/cli/commands/abandon.ts`, `packages/ion/src/cli/commands/abandon.ts`, `packages/ion/src/cli/commands/approve.ts`, `packages/ion/src/cli/commands/approve.ts`, `packages/ion/src/cli/commands/cleanup.ts` +19 more
|
||||
- `apps/control/src/db.ts` ← `apps/control/src/index.ts`, `apps/control/src/routes/bench.ts`, `apps/control/src/routes/captures.ts`, `apps/control/src/routes/evals.ts`, `apps/control/src/routes/gateway.ts` +17 more
|
||||
- `apps/coder/src/services/tools/types.ts` ← `apps/coder/src/routes/messages.ts`, `apps/coder/src/services/dispatcher.ts`, `apps/coder/src/services/tools/adapter.ts`, `apps/coder/src/services/tools/apply_pending.ts`, `apps/coder/src/services/tools/check_task_status.ts` +13 more
|
||||
- `apps/coder/src/conductor/types.ts` ← `apps/coder/src/conductor/flows/_util.ts`, `apps/coder/src/conductor/flows/architectural-analysis.ts`, `apps/coder/src/conductor/flows/authoring.ts`, `apps/coder/src/conductor/flows/code-review.ts`, `apps/coder/src/conductor/flows/discovery.ts` +11 more
|
||||
- `apps/control/src/services/fleet-state.ts` ← `apps/control/src/index.ts`, `apps/control/src/index.ts`, `apps/control/src/routes/actions.ts`, `apps/control/src/routes/bench.ts`, `apps/control/src/routes/evals.ts` +10 more
|
||||
- `apps/server/src/services/tools.ts` ← `apps/server/src/index.ts`, `apps/server/src/services/__tests__/agent-allowlist.test.ts`, `apps/server/src/services/agents.ts`, `apps/server/src/services/inference/stream-phase-adapter.ts`, `apps/server/src/services/inference/stream-phase.ts` +10 more
|
||||
- `apps/coder/src/services/agent-backend.ts` ← `apps/coder/src/routes/lifecycle.ts`, `apps/coder/src/services/__tests__/stream-json-parser.test.ts`, `apps/coder/src/services/acp-event-map.ts`, `apps/coder/src/services/agent-pool.ts`, `apps/coder/src/services/backends/__tests__/claude-sdk-map.test.ts` +9 more
|
||||
- `apps/coder/src/services/acp-tool-snapshot.ts` ← `apps/coder/src/services/__tests__/acp-event-map.test.ts`, `apps/coder/src/services/__tests__/frame-emitter.test.ts`, `apps/coder/src/services/__tests__/stream-json-parser.test.ts`, `apps/coder/src/services/acp-dispatch.ts`, `apps/coder/src/services/acp-event-map.ts` +9 more
|
||||
- `apps/server/src/config.ts` ← `apps/server/src/db.ts`, `apps/server/src/index.ts`, `apps/server/src/routes/chats.ts`, `apps/server/src/routes/messages.ts`, `apps/server/src/routes/models.ts` +9 more
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user