Commit Graph
1711 Commits
Author SHA1 Message Date
Imanol Maiztegui 8e053f34b5 refactor(opencode): extract indexing event schema and align OpenAPI contracts
Move the IndexingStatus Effect schema out of the KiloIndexing namespace into
a dedicated `indexing-event.ts` module so it can be shared between the bus
event system and the HttpApi layer without circular imports.

Additionally fix several OpenAPI spec inconsistencies:
- Inline PermissionReplyBody into the endpoint payload schema
- Make `organizationId` nullable in the organization set endpoint
- Replace opaque string response for `/kilo/fim` with a structured
  streaming completion schema
- Register `indexing.status` as a typed SSE event in the global event union
- Add `matchLegacyKiloOpenApi` post-processor for backward-compatible
  nullable fields and FIM response shape
- Relocate Kilo-specific bridge tests to `test/kilocode/server/` and trim
  duplicated assertions from the core bridge test file
2026-05-19 10:50:52 +02:00
Imanol Maiztegui 128df55d6b fix(opencode): migrate Instance.provide calls to WithInstance.provide
Replace direct `Instance.provide` usage with `WithInstance.provide` across
source modules and test files to decouple runtime context provisioning
from the core Instance singleton.

- Update kilo-sessions, remote-sender, roll-call, and plan-followup source
- Remove unused `Instance` imports where only `WithInstance` is needed
- Drop unnecessary `init` param from indexing-worktree test calls
- Add missing `WithInstance` import in fixture-dependent test files
2026-05-18 18:32:30 +02:00
Imanol Maiztegui d7fcb894ed refactor(kilo-gateway): clean up proxy auth naming, error handling, and OpenAPI schema alignment
Rename `proxy` helper to `proxyAuth` for clarity, switch modes endpoint
to gracefully handle missing auth instead of returning BadRequest, remove
redundant Content-Type header from audio transcriptions response, and
fix OpenAPI parameter types:

- Change `worktrees` query param from string enum to boolean
- Add `^que.*` pattern to network endpoint requestID path params
- Register experimental session worktrees in query parameter schemas
- Re-enable and update Effect HttpApi route parity tests
2026-05-18 15:51:10 +02:00
Imanol Maiztegui f560e5bd7a refactor(kilo-gateway): extract cloud sessions logic and wire up cloud sync endpoints
Move inline cloud-sessions fetch logic from Hono route handler into a
reusable getCloudSessions function in handlers.ts, and introduce new
Effect HttpApi endpoints for fetching and importing individual cloud
sessions.

- Extract getCloudSessions handler from routes.ts inline implementation
- Export fetchCloudSession, fetchCloudSessionForImport, importSessionToDb
  from kilo-gateway package
- Add cloudSession (GET /kilo/cloud/session/:id) endpoint for previewing
  remote session data
- Add cloudSessionImport (POST /kilo/cloud/session/import) endpoint to
  download and persist cloud sessions locally
- Define CloudSession, CloudSessionData, CloudMessage schemas in the
  kilo-gateway API group
- Change claw status error response from 500 InternalServerError to
  503 ServiceUnavailable
- Register new cloud routes in instance router
- Add test coverage for route disambiguation between import and :id paths
- Regenerate SDK types and OpenAPI spec
2026-05-18 14:38:21 +02:00
Imanol Maiztegui 09923fbe52 style: apply formatting and lint fixes across packages
Reformat code with consistent line breaks, trailing commas, semicolons,
and line-length compliance. No logic changes — purely whitespace,
indentation, and punctuation adjustments driven by the project formatter.

- Break long function signatures and conditionals across multiple lines
- Remove trailing blank lines and stray leading newlines
- Replace string-expression JSX whitespace with literal spaces
- Convert quoted object keys to unquoted where valid
- Remove erroneous shell command prefix from openapi.json
- Deduplicate SessionNetworkWait1 schema and simplify Finite unions to
  plain number type in OpenAPI spec
2026-05-18 12:40:16 +02:00
Imanol Maiztegui 0b41d2dc4b feat(kilocode): migrate kilo HTTP routes to Effect HttpApi layer
Introduce a structured Effect HttpApi surface for all Kilo-specific
endpoints, replacing inline Hono handler logic with declarative group
definitions, typed schemas, and composable handler layers.

Key changes:
- Add HttpApi group and handler modules for commit-message, enhance-prompt,
  indexing, kilocode, network, remote, session-import, suggestion, and
  telemetry
- Extract allow-everything permission logic into a reusable Effect function
- Register all Kilo HttpApi groups in InstanceHttpApi and wire route
  forwarding in the Hono instance router
- Export Suggestion.RequestSchema and annotate schemas with identifiers
- Use NonNegativeInt for indexing status fields and Schema.Finite for
  network wait timestamps
- Add httpapi-bridge test asserting parity between Hono and Effect specs
  for all 22 Kilo overlay routes
- Regenerate SDK types and openapi.json to reflect the new endpoints
2026-05-18 12:36:01 +02:00
Imanol Maiztegui e68fd6781d resolve merge conflicts 2026-05-15 13:13:17 +02:00
Imanol Maiztegui b7a7ecf449 refactor: kilo compat for v1.14.34 2026-05-15 09:25:13 +02:00
Catriel Müller 7bc46c54d8 Merge pull request #10263 from Kilo-Org/axiomatic-gouda
fix(cli): chunk oversized compactions
2026-05-14 15:16:26 -03:00
Catriel Müller c1a797c1f1 fix(cli): chunk oversized compactions 2026-05-14 11:26:28 -03:00
Marius e4e3a36174 Merge pull request #10218 from Kilo-Org/perpetual-parmesan
Configure auto compaction threshold
2026-05-13 21:33:16 +02:00
Catriel Müller 7f6fe7feac refactor: fix exit status code 2026-05-13 13:54:51 -03:00
Catriel Müller aab35c9d18 refactor: fix test // typecheck 2026-05-13 13:17:09 -03:00
marius-kilocode 4860e654ca feat: configure auto compaction threshold 2026-05-13 18:09:54 +02:00
Catriel Müller dbf938841b Merge branch 'main' into feat/roll-call-command 2026-05-13 12:40:24 -03:00
Catriel Müller e8078b88b9 refactor: fix test types 2026-05-13 12:24:12 -03:00
Catriel Müller 54916e9c44 refactor: address the comments 2026-05-13 12:19:15 -03:00
Catriel Müller 2886183aaf refactor: move the command to the kilo folder 2026-05-13 11:33:00 -03:00
Alex Alecu 4f13e85913 fix(cli): track /review completions in telemetry 2026-05-13 11:38:57 +03:00
Catriel Müller 2d5f6f3478 refactor: rebase from main 2026-05-13 00:23:04 -03:00
Catriel Müller 109d59a312 refactor: add support for all markdown files 2026-05-12 23:54:43 -03:00
Catriel Müller 8d23e17141 refactor: isolate kilochange 2026-05-12 23:47:46 -03:00
Maksym Mospanenko 3ca9941bbf feat(config): add escapeJson parameter to substitute for raw content handling
Add optional `escapeJson` parameter to `ConfigPaths.substitute` to control
whether file content should be JSON-escaped. When `false`, multiline content
and special characters are preserved as-is, which is required for agent
markdown prompts that need raw file content rather than escaped strings.

Update agent config processing to pass `escapeJson: false` when substituting
file content into markdown prompts, ensuring proper handling of multiline
files without unwanted escape sequences.

Add comprehensive test coverage for the new parameter and existing
substitution functionality.
2026-05-12 23:44:06 -03:00
Maksym Mospanenko 80edeee58f feat(config): add {file:...} syntax support for agent markdown prompts
Enable file content substitution in agent configuration prompts using the
existing `ConfigPaths.substitute` utility. This allows agent markdown files
to reference external file contents via `{file:path}` syntax, with missing
files resolving to empty strings.

Export `substitute` function from ConfigPaths to support agent config
processing.
2026-05-12 23:39:07 -03:00
Kirill Kalishev 55abf13cfa Merge pull request #10095 from Kilo-Org/ionized-emmental
fix(vscode,cli): sync mode model selection and restore plan follow-up picker
2026-05-12 17:52:31 -04:00
Catriel Müller 305ec5c107 Merge branch 'main' into issue-7861 2026-05-12 11:21:32 -03:00
af902eb359 fix: catch EEXIST from recursive mkdir on Windows (#9794)
* fix: catch EEXIST from recursive mkdir on Windows

fs.mkdir with { recursive: true } can still throw EEXIST on Windows
when the target directory is backed by an NTFS reparse point (OneDrive),
a directory junction, or a WSL-served path. libuv's recursive walk
doesn't treat these as regular directories, so mkdir with recursive:true
attempts to create an already-existing path segment and fails.

This adds a defensive EEXIST catch at both directory-creation origins:
- AppFileSystem.ensureDir / writeWithDirs (snapshots, config, plans)
- Encoding.write (all tool writes and edits)

No functional change on Linux/macOS where EEXIST is never thrown from
recursive mkdir.

Fixes #9618, #9755

* fix: remove extra arg from mkdirSafe call, add unit tests

* docs(kilo-docs): update auto-generated source links

Add 2 new GitHub issue references (9618, 9755) from encoding.ts
and update URL count from 84 to 86.

---------

Co-authored-by: nimgrim <nimgrim@users.noreply.github.com>
Co-authored-by: Imanol Maiztegui <imanol.mzd@gmail.com>
2026-05-12 13:17:49 +00:00
Marius 8af638e7e2 Fix expired Codex auth recovery (#10136)
* fix: recover expired Codex auth

* fix: minimize Codex auth shared changes

* fix: format Codex auth prompt
2026-05-12 09:27:32 +02:00
Kirill Kalishev 9c554f0330 Merge branch 'main' into ionized-emmental 2026-05-11 12:55:04 -04:00
Catriel Müller 41596c5565 Merge pull request #10152 from Kilo-Org/glittery-writer
fix(cli): normalize IDN hostnames to punycode in permission dialogs
2026-05-11 13:39:23 -03:00
Catriel Müller a0dcf76177 fix(cli): strip trailing sentence punctuation from URL matches in normalizeUrls
\S+ was greedily consuming trailing punctuation (. ! , ;) into the URL
match, causing new URL() to mutate clean ASCII URLs — e.g.
"see https://example.com." became "see https://example.com./".

Fix: strip trailing sentence punctuation before parsing, extract and
replace only the hostname (not href) to avoid adding trailing slashes to
bare origins, and restore the stripped tail afterward.
2026-05-11 13:18:49 -03:00
Catriel Müller 9064478949 test(cli): add unit tests for normalizeUrls homograph protection 2026-05-11 12:55:08 -03:00
Truffleandmarius-kilocode 00313bfcd4 fix(tool): clarify semantic_search returns snippets not file paths (#10142)
* fix(tool): clarify semantic_search returns snippets not file paths

The first description bullet read "Find files most relevant to the
search query using semantic search.", which led an AI agent to tell a
user that the tool returns file paths only. The tool actually returns
matching content with file paths, line ranges, and relevance scores.

Updates the first two description bullets to name the output shape
directly. No runtime change.

Closes #9767.

* test(cli): cover semantic_search description

---------

Co-authored-by: marius-kilocode <marius@kilocode.ai>
2026-05-11 14:15:41 +00:00
Catriel Müller f383258f80 Merge pull request #10121 from shssoichiro/apply-auto-to-subagents
fix(cli): apply `--auto` flag to subagents from Task tool
2026-05-11 11:02:53 -03:00
Marius 33a233fd11 fix(cli): prevent nested subagent delegation (#10137) 2026-05-11 15:13:08 +02:00
Catriel Müller 8e90f29695 fix(cli): improve model info panel scrollbar padding and capabilities display 2026-05-11 09:50:01 -03:00
Josh Holmer 9963b0271a fix(cli): apply --auto flag to subagents from Task tool 2026-05-10 00:50:32 -04:00
kirillk 931b803068 test(cli): update QuestionOption wire-shape snapshot to include mode field 2026-05-09 22:16:53 -04:00
kirillk c7fa827662 test(cli): add contract tests for QuestionOption Kilo-specific fields 2026-05-09 21:30:16 -04:00
kirillk b539c6920e fix(vscode): add mode field to plan follow-up Continue here option so picker updates instantly 2026-05-09 20:50:12 -04:00
Catriel Müller 86287939e6 Merge pull request #10080 from Kilo-Org/foam-log
fix: robust provider handling when credentials are misconfigured
2026-05-08 16:46:22 -03:00
kiloconnect[bot] 8651bdceac test(cli): assert apply_patch returns non-mojibake diff for non-UTF-8 files
The existing apply_patch encoding test only checked final file bytes,
which were correct because Patch.deriveNewContentsFromChunks does its
own encoding-aware read. The diff and additions/deletions counts
returned to the user (and shown in the permission prompt) were
nonetheless garbled because the surrounding tool reused a hard-coded
UTF-8 decoder. Pin the diff metadata to catch that regression.
2026-05-08 18:00:29 +00:00
Catriel Müller cd67db9501 fix: kilocode markers 2026-05-08 14:54:30 -03:00
Catriel Müller 11297e4c5a fix: fix providers with wrong credentials 2026-05-08 13:32:35 -03:00
Catriel Müller 875f414ab7 Merge pull request #10036 from Kilo-Org/catrielmuller/prompt-flaky-test
test(cli): fix flaky prompt.test.ts timing races
2026-05-08 09:27:32 -03:00
Marius eb8334db01 fix(agent-manager): preserve promoted session worktree context (#10058)
* fix(agent-manager): preserve promoted session worktree context

* fix(cli): guard worktree context outside instance scope
2026-05-08 13:45:47 +02:00
Christiaan Arnoldus 0397767075 Merge pull request #10014 from Kilo-Org/fix/kilo-provider-cost-anthropic-messages
fix(cli): extract Kilo provider cost from Anthropic Messages and OpenAI Responses APIs (OpenRouter)
2026-05-08 10:51:01 +02:00
kiloconnect[bot] c8446f5231 docs(cli): clarify why Kilo prefers upstream cost over gateway cost
Kilo isn't always BYOK; what matters here is that Kilo doesn't charge a
per-request fee on top of the upstream inference cost. So for the Kilo
provider, the gateway/marketplace `cost` would understate the user's true
spend — always prefer the upstream/market cost when present.
2026-05-08 08:19:44 +00:00
Catriel Müller 8308d9b5de fix: fix flasky test 2026-05-07 15:46:56 -03:00
Marius 9de7c986e7 Support Kilo-hosted indexing embeddings (#9851)
* feat: support Kilo-hosted indexing embeddings

* fix: format indexing settings

* fix: serialize local model persistence

* fix: annotate local model persistence

* fix: stabilize MCP OAuth browser test

* fix: annotate MCP OAuth test wait

* fix: keep KiloProvider under line cap

* fix: align Kilo indexing auth defaults

* fix(vscode): add missing indexing translations

* feat(indexing): fetch Kilo embedding model catalog

* fix(indexing): align Kilo embedding metadata fallback

* fix(gateway): remove unused indexing dependency

* fix(indexing): keep fallback catalog webview safe

* fix(agent-manager): include embedding model provider

* fix(vscode): provide embedding models in stories

* refactor(indexing): rely on Cloud embedding catalog

* fix(indexing): hydrate Kilo model metadata from Cloud

* fix(indexing): clear model when switching provider
2026-05-07 17:14:26 +02:00