Merge pull request #14727 from Kilo-Org/v2-editor-services-inventory

docs(kilo): inventory remaining editor services (#14415)
This commit is contained in:
Fabio Pliger
2026-10-07 10:55:13 -05:00
committed by GitHub
@@ -0,0 +1,52 @@
# Remaining editor services inventory — 2026-10-02
## Header and method
- Issue: Kilo-Org/kilocode#14415 (parent epic #14021, gate G2).
- Governing plan: PR #14704 (`origin/v2-execution-plan:migration-tracking/plans/kilo-opencode-v2-execution-plan.md`). Decision 5 and the hard-gate list are cited where they set a disposition.
- `origin/main` (v1) inspected at `622ed1f5ae5af2d864908a0bb759b0c9121d406c`.
- `kilo-v2` (v2) inspected at `a2e6c1f69b36a0215c30a80f9d13da9f530073df`.
- Method: enumerate v1 consumers under `packages/kilo-vscode/src/` and `packages/kilo-jetbrains`, the matching v1 backend under `packages/opencode/src/kilocode/` and `packages/kilo-gateway/src/`, then locate the v2 destination and observe the current v2 tree. No source changes; read-only.
- Owner is `unassigned` everywhere: no assignee is recorded on #14415, #14021, or any child, and no team owner is stated in the plan.
- All v1 paths are `origin/main:` unless marked; all v2 paths are the `kilo-v2` working tree.
## Main inventory
| Service | Original consumer (UI/workflow + v1 path) | v1 backend | v2 destination | Current kilo-v2 state | Gate | Owner | Disposition | Evidence |
|---|---|---|---|---|---|---|---|---|
| Classic inline autocomplete (FIM) | VS Code editor ghost text; inline provider registered in `packages/kilo-vscode/src/services/autocomplete/AutocompleteServiceManager.ts:244`, generation in `.../classic-auto-complete/FillInTheMiddle.ts:72`, settings `webview-ui/src/components/settings/AutocompleteTab.tsx`, command `package.json:218` | Kilo Gateway `/kilo/fim` (`packages/opencode/src/kilocode/server/httpapi/groups/kilo-gateway.ts:238`, handler `.../handlers/kilo-gateway.ts:114`) via `packages/kilo-gateway/src/fim.ts` + `mistral-fim-endpoint.ts` + `server/fim.ts` | #14416 producer/service contract; consumer stays `packages/kilo-vscode/src/services/autocomplete/` (schema-RPC/plugin pattern of `packages/schema/src/kilocode/generation.ts` + `packages/kilo-cli/src/generation-plugin.ts`) | Snapshot present and registered (`extension.ts:574`), but `services/autocomplete/fim.ts:40` calls `client.kilo.fim`; no v2 route or SDK method exists (`packages/kilo-gateway/src/` has no `fim.ts`), so it is non-functional | G2, G3 (hard gate; Decision 6) | unassigned | implement under #14416 | v2 `fim.ts:40`; v1 `groups/kilo-gateway.ts:238`; v2 `packages/kilo-gateway/src/` listing |
| Chat textarea autocomplete | VS Code chat input ghost text; `packages/kilo-vscode/src/services/autocomplete/chat-autocomplete/ChatTextAreaAutocomplete.ts:105`, wired at `KiloProvider.ts:1395` | Reuses FIM: `generateFim` (`.../services/autocomplete/fim.ts:19`) | #14416 producer (same as FIM); consumer stays `.../chat-autocomplete/` | Wired in v2 (`KiloProvider.ts:1395`) but shares the missing FIM backend, so it cannot complete | G2 | unassigned | implement under #14416 | v2 `KiloProvider.ts:1395`; v2 `chat-autocomplete/ChatTextAreaAutocomplete.ts:110` |
| Next-edit (Mercury/NES) | VS Code off-cursor inline suggestion with Tab jump/accept and Esc dismiss; `.../next-edit/NextEditInlineCompletionProvider.ts:48`, commands/keybindings `package.json:228,233,882,887` | Kilo Gateway `/kilo/edit` (`groups/kilo-gateway.ts` `EditBody`, handler `handlers/kilo-gateway.ts:190`) via `packages/kilo-gateway/src/edit.ts` + `edit-prompt.ts` + `server/edit.ts` | #14416 producer/service contract; consumer stays `.../next-edit/` (`MercuryEditProvider.ts`) | Snapshot present, `.../next-edit/MercuryEditProvider.ts:41` calls `client.kilo.edit`; no v2 route or `edit.ts` in `packages/kilo-gateway/src/`, so it is non-functional | G2, G3 (hard gate; Decision 6) | unassigned | implement under #14416 | v2 `MercuryEditProvider.ts:41`; v1 assessment row `packages/opencode/test/kilocode/server/httpapi-kilo-edit.test.ts:33` |
| Editor code actions / quick fixes | VS Code editor context menu and lightbulb; `.../code-actions/code-action-provider.ts:3`, `register-code-actions.ts:7`, contributions `package.json:412–427,601–625` | None: local prompt templates (`.../code-actions/support-prompt.ts`) posted into the chat/session | #14417 verification; host plumbing (chat panel, focus/reveal) belongs to #14016 | Snapshot present and registered (`extension.ts:585–598`) but older than v1: `register-code-actions.ts` lacks `injectedTitle`, `lastFocusedChat`, and current `ADD_TO_CONTEXT` handling; not workflow-verified | G2 | unassigned | implement/verify under #14417 | v1↔v2 diff of `services/code-actions/register-code-actions.ts`; v2 `extension.ts:585` |
| Terminal context actions | VS Code terminal context menu; `.../code-actions/register-terminal-actions.ts:7` (fix/explain/add selection), contributions `package.json:432–442,625–641` | None: reads terminal buffer via `.../services/terminal/context.ts`, posts a chat prompt | #14417 verification; terminal lifecycle/tickets belong to #14016 | Snapshot present and registered (`extension.ts:586`) but older than v1 (missing `injectedTitle`); not workflow-verified | G2 | unassigned | implement/verify under #14417 | v1↔v2 diff of `register-terminal-actions.ts`; v2 `extension.ts:586` |
| Generate terminal command | VS Code command palette; v1 `extension.ts:635`, v2 `extension.ts:445` | None: injects `Generate a terminal command: …` into chat | #14417 verification | Wired in v2 (`extension.ts:445`); depends on chat parity, not an editor producer | G2 | unassigned | implement/verify under #14417 | v1 `extension.ts:635`; v2 `extension.ts:445` |
| Enhance prompt / commit message / branch-name generation | Enhance: chat prompt input `webview-ui/src/components/chat/PromptInput.tsx:1509` → `KiloProvider.ts:1679`; commit: SCM title `.../services/commit-message/index.ts:37` (`package.json:403,560`); branch: Agent Manager worktree naming `.../agent-manager/branch-naming.ts:171` | `/enhance-prompt` (`packages/opencode/src/kilocode/enhance-prompt.ts:32`), `/commit-message` (`.../commit-message/generate.ts:158`), `/session/:sessionID/branch-name` (`.../kilocode/branch-name.ts`) | `packages/schema/src/kilocode/generation.ts` (`GenerationRpc`) + `packages/kilo-cli/src/generation-plugin.ts` + client `packages/kilo-vscode/src/backend/generation.ts:234` | Implemented client-side against the v2 client: `enhancePrompt` (`KiloProvider.ts:1522`), `commitMessage` (`generation.ts:283`), `branchName` (`generation.ts:340`, consumed at `branch-naming.ts:171`). Stateless backend verified; original editor/SCM consumer acceptance still pending | G2 (G3: enhance/branch consumed on JetBrains) | unassigned | implement/verify consumers under #14417 | v2 `backend/generation.ts:234,283,340`; v2 `KiloProvider.ts:1522`; v1 `branch-naming.ts:171` |
| Speech-to-text | VS Code chat composer mic and model picker; `webview-ui/src/components/speech-to-text/SpeechToTextButton.tsx`, `useSpeechToText.ts`, capture in `src/speech-to-text/handler.ts:64` | Kilo Gateway `/kilo/audio/transcriptions` (`.../speech-to-text/transcribe.ts:6`, handler `handlers/kilo-gateway.ts`) and `/kilo/models/transcriptions` | `packages/kilo-vscode/src/speech-to-text/` + a Kilo Gateway transcription producer (post-cutover) | Client snapshot present (`KiloProvider.ts:2730`, `speech-to-text/catalog.ts`), but v2 `packages/kilo-gateway/src/` has no audio-transcription route and v1 `source.ts` is absent; non-functional | post-cutover (Decision 5, voice/STT; #14418) | unassigned | post-cutover | v2 `catalog.ts` (`/kilo/models/transcriptions`), `transcribe.ts` (`/kilo/audio/transcriptions`); v2 gateway listing |
| Image generation | Experimental chat tool invoked by the model (`generate_image`) plus experimental model picker; `webview-ui/src/components/settings/ExperimentalTab.tsx:147`, `context/image-models.tsx`, save path `KiloProvider.ts:1229` | `packages/opencode/src/kilocode/tool/generate-image.ts:150` gated by `.../tool/registry.ts:337` (`experimental.image_generation`); gateway `/kilo/models/images` | Core/runtime image tool + gateway image-model producer + `packages/kilo-vscode/src/image-generation/` (post-cutover) | Client model fetch present (`KiloProvider.ts:2718`, `image-generation/models.ts`) but no v2 `generate-image` tool and no gateway image route; non-functional | post-cutover (Decision 5, image gen experimental on v1; #14419) | unassigned | post-cutover | assessment TSV `packages/opencode/src/kilocode/tool/generate-image.ts` (needs port); v2 `KiloProvider.ts:2718` |
| KiloClaw | VS Code separate editor panel; `packages/kilo-vscode/src/kiloclaw/KiloClawProvider.ts`, wired `extension.ts:5,158,368,391` | None in v1: removed from `origin/main` (0 claw paths in the repo) | none — remove the stale v2 tree and wiring | 40 claw paths still present in `kilo-v2` (`src/kiloclaw/`, `webview-ui/kiloclaw/`, 6 manifest commands) from an older snapshot; still imported and registered | not needed (Decision 5, #14419) | unassigned | not needed; removal candidate | v1 `origin/main` has 0 claw paths; v2 `git ls-files` has 40; v2 `extension.ts:5,158,368,391` |
## Handed to sibling epics
| Item | Observed here | Why it is not a #14021 feature service | Sibling epic |
|---|---|---|---|
| Notebook host contracts | `packages/kilo-vscode/src/services/notebook/` (`adapter.ts`, `bridge.ts`, `output.ts`) and the notebook cell selector in `AutocompleteServiceManager.ts:249` | Notebook open/edit/execute is basic client parity, not a feature-specific producer | #14016 |
| Terminal lifecycle and ticket bridge | `packages/kilo-vscode/src/services/terminal/context.ts`, `truncate.ts`; terminal ticket/relay work | Host terminal plumbing shared by many consumers; terminal context actions are inventoried above under #14417 | #14016 |
| Chat prompt/message plumbing for enhance and speech | `webview-ui/src/components/chat/PromptInput.tsx`, message types under `webview-ui/src/types/messages/` | Host request/reply wiring is client parity; the producers are inventoried above | #14016 |
| Attention/notifications, marketplace, browser automation, git service | `services/attention/`, `services/marketplace/`, `services/browser-automation/`, `services/git/` | General client services already tracked by the parity epic | #14016 |
| FIM/next-edit for JetBrains | JetBrains v1 consumes none of FIM/next-edit today (`packages/kilo-jetbrains` has no inline-completion provider; only `LegacyMigrationConverters.kt:146` migrates autocomplete settings) but #14423 depends on #14416 | G3 integration and validation, not G2 inventory | #14022 |
| JetBrains enhance prompt and branch name | Consumed on v1: `KiloBackendChatManager.kt:150` (`/enhance-prompt`), `KiloWorkspaceRpcApiImpl.kt:319` (branch name) | Needs the v2 generation contract after G3 import; VS Code completion does not close G3 | #14022 |
| Cloud agent consumers | No cloud-agent consumer of FIM, next-edit, speech, image generation, commit, or code actions was found in v1 or v2 | Outside the editor-service boundary | #14023 |
Notes: v1 JetBrains has no speech, image-generation, commit-message, or code-action consumer in production sources (grep of `packages/kilo-jetbrains/{backend,frontend}/src/main`), so those rows are G2-only. JetBrains does have an `EditorContextDto` (`KiloCliDataParser.kt:30,937`) for selection context, which is chat parity for #14022.
## Proposed progress-plan row changes (for N7 to apply; do not edit the plan here)
Current rows under "Original VS Code and remaining clients" in `migration-tracking/plans/kilo-opencode-v2-plan-progress.md`:
| Existing row | Proposed change |
|---|---|
| `Inline autocomplete/FIM and next-edit` (Needs port / Pending) | Keep one row; update remaining scope to name the two producers and consumers: classic FIM and chat textarea autocomplete (`client.kilo.fim`) plus next-edit (`client.kilo.edit`), all under #14416, G2+G3 hard gate. Note the v2 snapshot is registered but has no Gateway/RPC routes, so it is non-functional. |
| `Enhance prompt / commit / branch generation` (Partial / Full E2E pending) | Update remaining scope: stateless generation now runs through the Kilo-owned `kilocode.generation` RPC (`backend/generation.ts`); remaining work is verifying the original editor/SCM consumers under #14417. Note JetBrains consumes enhance prompt and branch name on v1, so this is also G3-relevant. |
| `Voice / speech-to-text` (Deferred / Pending) | Mark post-cutover and cite Decision 5 (#14418); record that the v2 client snapshot exists but the `/kilo/audio/transcriptions` and `/kilo/models/transcriptions` producers are absent, so there is nothing to verify at G2. |
| `Image generation and Claw` (Needs port / Pending) | Split into two rows. `Image generation` → post-cutover (Decision 5, experimental on v1; #14419); note the v2 client model fetch exists but the tool and image route are missing. `KiloClaw` → not needed (Decision 5; removed from `origin/main`) with the stale `kilo-v2` claw tree recorded as a removal candidate. |
| (no row) | Add `Editor code actions and terminal context actions` → destination "VS Code editor/terminal menus + chat", phase 5, implementation `Needs port`, verification `Pending`, remaining scope "bring the stale v2 `services/code-actions` snapshot to v1 parity and verify fix/explain/improve/add-to-context and terminal actions in the real UI" under #14417. |