chore: remove operator service refs and clarify .env.example labels#1668
Conversation
…abels Operator service is gone from the deployment but stale code/config remained. Also fixes misleading OPTIONAL labels in .env.example that hid required vars (SOPS_AGE_KEY, INSTANCE_SECRET) — both throw or fail deploy without them. - Delete unused browser_operate / get_operator_service_url helpers (no callers) - Drop WebBrowserOperateResult / OperatorChatResponse types - Remove dead browser_operate UI branch and thinking.browsing translation - Strip /metrics/operator from Caddyfile and proxy README - Regenerate api.d.ts to drop the two deleted helper imports - Re-label SOPS_AGE_KEY, INSTANCE_SECRET, and Database section as REQUIRED
📝 WalkthroughWalkthroughThis change removes the Operator Service-based browser automation feature from the platform. The removal includes the Estimated code review effort🎯 3 (Moderate) | ⏱️ ~22 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@services/proxy/README.md`:
- Line 23: The README's metrics route list was shortened incorrectly; update the
`services/proxy/README.md` metrics section to document all exposed token-gated
endpoints by adding `/metrics/platform` and `/metrics/convex` alongside the
existing `/metrics/*` note and clarifying which backends (`crawler:8002`,
`rag:8001`) they proxy to and that these routes require tokens. Mention the
exact routes `/metrics/platform` and `/metrics/convex`, their target services,
and the token-gating requirement so operators can configure scrapes correctly.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: f52436f1-2d64-4391-babe-b97e10b712f4
⛔ Files ignored due to path filters (1)
services/platform/convex/_generated/api.d.tsis excluded by!**/_generated/**
📒 Files selected for processing (10)
.env.exampleservices/platform/app/features/chat/components/thinking-animation.tsxservices/platform/convex/agent_tools/web/helpers/browser_operate.tsservices/platform/convex/agent_tools/web/helpers/get_operator_service_url.tsservices/platform/convex/agent_tools/web/helpers/types.tsservices/platform/messages/de.jsonservices/platform/messages/en.jsonservices/platform/messages/fr.jsonservices/proxy/Caddyfileservices/proxy/README.md
💤 Files with no reviewable changes (7)
- services/platform/convex/agent_tools/web/helpers/browser_operate.ts
- services/platform/convex/agent_tools/web/helpers/get_operator_service_url.ts
- services/platform/messages/en.json
- services/platform/app/features/chat/components/thinking-animation.tsx
- services/platform/messages/de.json
- services/platform/messages/fr.json
- services/platform/convex/agent_tools/web/helpers/types.ts
| - `convex:3211` — Convex HTTP actions and `/api/*` site proxy | ||
| - `convex:6791` — Convex Dashboard at `/convex-dashboard` | ||
| - `crawler:8002`, `rag:8001`, `operator:8004` — `/metrics/*` (token-gated) | ||
| - `crawler:8002`, `rag:8001` — `/metrics/*` (token-gated) |
There was a problem hiding this comment.
Metrics route docs are incomplete after this edit.
Line 23 now documents only crawler/rag, but the proxy still exposes /metrics/platform and /metrics/convex (token-gated). This can mislead operators configuring scrapes.
📄 Suggested doc fix
-- `crawler:8002`, `rag:8001` — `/metrics/*` (token-gated)
+- `crawler:8002`, `rag:8001`, `platform:3000` — `/metrics/*` (token-gated; includes `/metrics/platform` and `/metrics/convex`)📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - `crawler:8002`, `rag:8001` — `/metrics/*` (token-gated) | |
| - `crawler:8002`, `rag:8001`, `platform:3000` — `/metrics/*` (token-gated; includes `/metrics/platform` and `/metrics/convex`) |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@services/proxy/README.md` at line 23, The README's metrics route list was
shortened incorrectly; update the `services/proxy/README.md` metrics section to
document all exposed token-gated endpoints by adding `/metrics/platform` and
`/metrics/convex` alongside the existing `/metrics/*` note and clarifying which
backends (`crawler:8002`, `rag:8001`) they proxy to and that these routes
require tokens. Mention the exact routes `/metrics/platform` and
`/metrics/convex`, their target services, and the token-gating requirement so
operators can configure scrapes correctly.
Multi-agent review of the branch surfaced eight orphan references the initial removal missed: issue templates, the issue-labeler mapping, the commitlint scope-enum, a stale .gitignore line, the CLI README's rotatable-services list, and a leftover translation mock entry.
Summary
browser_operate.ts/get_operator_service_url.tshelpers (no callers —web_tool.tsonly exposesfetchandsearchmodes), strip the now-deadWebBrowserOperateResult/OperatorChatResponsetypes, remove thebrowser_operateUI branch inthinking-animation.tsxand the unusedthinking.browsingtranslation in en/de/fr, and drop/metrics/operatorfrom the Caddyfile and proxy README..env.examplelabel fixes. Three misleading section headers, prompted by a user noting thatOPTIONAL: Provider Secrets Encryptionis actually required:SOPS_AGE_KEY→REQUIRED(provider decryption inconvex/lib/sops.tsand the guardrails secret box inconvex/lib/secret_box.tsboth throw without it;tale initalways generates one).INSTANCE_SECRET→REQUIRED(used bygenerate_keyinservices/platform/docker-entrypoint.shto derive the Convex admin key —tale deployfails without it).Database Configuration→REQUIRED:prefix added for label consistency (DB_PASSWORDwas already documented as required inline).SOPS_AGE_KEY=to match the file's "REQUIRED → uncommented" convention.tale initstill auto-fills empty values via the existingmissing = requiredVars.filter(v => !existing[v])check intools/cli/src/lib/config/ensure-env.ts.convex/_generated/api.d.tsupdated by hand to drop the two stale helper imports/registry entries because the local Convex backend wasn't running for codegen — purely mechanical, identical to whatbunx convex devwould produce. Will be reaffirmed on the next codegen run.Test plan
npx tsc --noEmitfromservices/platform/→ exit 0npm run lint --workspace=@tale/platform→ 0 warnings, 0 errorsbunx convex devregenerates_generated/api.d.tswith no diff against this branchcaddy validate(or a proxy container build) passes with the updatedCaddyfiletale initon a fresh checkout still auto-generatesSOPS_AGE_KEYandINSTANCE_SECRETinto.envwebtool invocation withmode: fetchstill shows the "Reading {hostname}" thinking messageSummary by CodeRabbit
New Features
Bug Fixes
Chores