Commit Graph

3290 Commits

Author SHA1 Message Date
Igor Šćekić 13001c4f10 fix(kilo-sessions): cap token validity cache to 15 minutes 2026-02-02 15:08:59 +01:00
Igor Šćekić 6eb37d4305 fix(kilo-sessions): drop in-flight cache entry on errors 2026-02-02 15:06:50 +01:00
Igor Šćekić 6d53540a58 fix(kilo-sessions): update cache key only on token change 2026-02-02 15:06:04 +01:00
Igor Šćekić c5657260a3 refactor(kilo-sessions): make clearCache synchronous 2026-02-02 14:52:43 +01:00
Igor Šćekić 6834fe4380 fix(kilo-sessions): clear auth validity cache on token change
Ensure in-flight auth validity lookups are not reused across different tokens
by clearing the previous cache key when a new token is received.
2026-02-02 14:51:03 +01:00
Igor Šćekić 18934825aa test(kilo-sessions): update in-flight cache test for undefined values 2026-02-02 14:49:07 +01:00
Igor Šćekić fb552eddfe fix(kilo-sessions): key auth validity cache by token
Use a per-token cache key for auth validity to prevent different
sessions from sharing the same cached result.
2026-02-02 14:40:39 +01:00
Igor Šćekić 642d1c8477 fix(kilo-sessions): cache token and auth validity
Use in-flight cache for token retrieval and token validity checks, and
centralize cache clearing on auth errors to avoid reusing invalid
credentials while still allowing retries after transient failures.
2026-02-02 14:30:50 +01:00
Igor Šćekić 5ef866eebd fix(kilo-sessions): stop caching undefined in in-flight cache
Treat `undefined` as a non-cacheable sentinel by deleting the cache entry
when the callback resolves to `undefined`, ensuring future calls retry
instead of serving stale data.
2026-02-02 14:29:07 +01:00
Igor Šćekić e815689023 fix(kilo-sessions): await in-flight refresh to avoid stale reads
Always return the in-flight promise when a refresh is running so callers
don’t receive an expired cached value. Preserve the original timestamp
until refresh succeeds and only update it on successful recompute to
avoid masking failed refreshes.
2026-02-02 13:37:08 +01:00
Igor Šćekić 9a4fb8c786 test(kilo-sessions): add in-flight cache behavior tests 2026-02-02 13:24:42 +01:00
Igor Šćekić 960bc15133 test(kilo-sessions): move ingest queue test suite 2026-02-02 13:24:02 +01:00
Igor Šćekić 9e64e10d80 fix(kilo-sessions): cache undefined values in in-flight cache
Track entry presence separately from the cached value so `undefined`
results are treated as valid cache hits within the TTL.
2026-02-02 13:22:19 +01:00
Igor Šćekić 2f1c9fe6ea fix(kilo-sessions): clear org in-flight cache on auth reset 2026-02-02 13:21:12 +01:00
Igor Šćekić bdf13f83b8 perf(kilo-sessions): add in-flight cache
Introduce a shared in-flight + TTL cache to dedupe concurrent
getClient() and org ID resolution calls, and clear cached client state
when auth becomes invalid to avoid repeated use of stale credentials.
2026-02-02 13:11:47 +01:00
Igor Šćekić d69e22abe0 fix(kilo-sessions): validate org id as uuid
Ensure orgId is only sourced from env/auth when it is a valid UUID, and
cache it with a UUID type to prevent invalid values from propagating.
2026-02-02 13:05:28 +01:00
Igor Šćekić b4b05db389 refactor(share): rename ShareNext to KiloSessions
Move share/ingest modules under kilo-sessions and update bootstrap and
session share/unshare/remove flows to use KiloSessions. Update ingest
queue test imports accordingly.
2026-02-02 12:39:24 +01:00
Igor Šćekić c06a87abe9 fix(share): resolve orgId from auth when env missing
Fetch orgId from KILO auth when KILO_ORG_ID is not set and cache the
result briefly to avoid repeated lookups during ingest sync.
2026-01-30 11:02:57 +01:00
Igor Šćekić 5f927347cc feat(share): sync kilo platform/org metadata to ingest
Add `kilo_meta` items to the ingest queue with a stable key so updates
coalesce, and send metadata derived from `KILO_PLATFORM` and `KILO_ORG_ID`
during session sync.
2026-01-29 22:09:11 +01:00
Igor Šćekić 9d0f9da3b8 feat(share): allow ingest url override via env var 2026-01-29 19:32:37 +01:00
Igor Šćekić 85c6f13c5a Merge pull request #54 from Kilo-Org/add-session-sync 2026-01-29 18:49:29 +01:00
Igor Šćekić e99573595e chore: annotate files with kilocode_change markers 2026-01-29 18:38:33 +01:00
Marius c14ace5283 fix: update kilo theme colors to match official kilocode CLI theme (#66) 2026-01-29 16:12:33 +01:00
Marius fafd49e251 fix: prioritize Kilo Gateway models in search results (#64)
* fix: prioritize Kilo Gateway models in search results

* fix: use stable partition to preserve fuzzysort ranking
2026-01-29 15:36:20 +01:00
Catriel Müller a42e1a7f90 feat: legacy cli auth migration (#63) 2026-01-29 14:18:06 +01:00
Suresh Kumar Sivasankaran 356be1768f Handle kilo tips (#60)
Co-authored-by: Suresh Sivasankaran <suresh.sivasankaran@epilot.cloud>
2026-01-29 14:14:28 +01:00
Igor Šćekić 1bb41afc72 refactor(share): extract ingest queue into module
Move per-session debounce/retry ingest logic into a reusable IngestQueue
helper and wire ShareNext to use it, including an auth error callback to
clear cached credentials. Add test coverage for coalescing, throttling,
retry/backoff, and non-retryable failures.
2026-01-29 14:10:10 +01:00
Igor Šćekić a7910b4d92 fix(cli): allow empty messages array in import response 2026-01-29 13:17:09 +01:00
Igor Šćekić 452a88ec8d refactor(share): remove legacy Share sync module
Drop Share.init() from bootstrap and delete the old Share
implementation now superseded by ShareNext.
2026-01-29 13:06:29 +01:00
Igor Šćekić f5b7b82d6d fix(share): encode session id in share/unshare urls 2026-01-29 12:59:43 +01:00
Igor Šćekić ecc2b29824 fix(cli): validate import response messages array 2026-01-29 12:39:30 +01:00
Igor Šćekić 81f69b4f04 fix(share): add retry/backoff to session sync flush
Coalesce ingest updates with a per-session due time and schedule flushes
to respect active backoff windows.

Retry transient failures (network, 429, 5xx, etc.) with capped exponential
backoff and a small retry budget, while avoiding overwriting newer queued
updates during in-flight retries.
2026-01-29 12:26:53 +01:00
Igor Šćekić b81323b062 fix(share): block share/unshare when ingest disabled
Add ingest-disabled guardrails to share and unshare, and harden
session removal by encoding the session id and logging network/HTTP
failures instead of throwing.
2026-01-29 12:08:28 +01:00
Igor Šćekić f3e5c7eebc fix(cli): encode session id in import fetch url 2026-01-29 12:08:07 +01:00
Catriel Müller b546869d01 fix: binary name fix 2026-01-29 12:07:03 +01:00
Catriel Müller 01a141ebba refactor: rename plugin 2026-01-29 11:53:34 +01:00
Igor Šćekić 18c2977815 Merge branch 'dev' into add-session-sync 2026-01-29 11:50:40 +01:00
Igor Šćekić b3d2673499 fix(share): avoid caching auth on network failures
Skip caching when the auth request fails without a response so
subsequent calls can retry instead of persisting an invalid state.
2026-01-29 11:50:30 +01:00
Catriel Müller 454604333d refactor: disable auto upgrade 2026-01-29 11:39:49 +01:00
Igor Šćekić 7067554978 feat(share): allow disabling session ingest
Add `KILO_DISABLE_SESSION_INGEST` to skip session ingest initialization.
Also cache the ingest client briefly to reduce repeated auth/token checks and
surface clearer errors when session creation requests fail.
2026-01-29 11:27:03 +01:00
Igor Šćekić 7fff59fa47 fix(cli): validate and parse kilo session URLs safely 2026-01-29 11:23:20 +01:00
Igor Šćekić 1b75836d8a fix(share): remove disabled guard from getClient 2026-01-29 11:15:39 +01:00
Catriel Müller 29deeb9985 Fix Nix Build (#57)
* fix: fix nix build

* refactor: fix cargo script

* fix: rust version

* refactor: fix desktop app build
2026-01-29 11:13:58 +01:00
Marius 80db9c327f Make kilo org lower case in publish script (#58)
* Make kilo org lower case in publish script

* Use next channel
2026-01-29 11:13:16 +01:00
Igor Šćekić ed19d4872c fix(share): skip session sync when kilo token is invalid
Validate the kilo API token against the user endpoint before syncing and
cache auth validity per token to avoid repeated checks.
2026-01-29 11:12:20 +01:00
Igor Šćekić 3c01ef8bc6 Merge branch 'dev' into add-session-sync 2026-01-28 18:33:34 +01:00
Igor Šćekić 282e3ba4ae perf(share): debounce session sync and retry on failure
Coalesce frequent session updates into a per-session debounce queue with
stable entity keys to reduce redundant POSTs. Improve resilience by
handling async init/full sync errors, validating responses, and requeueing
failed batches without overwriting newer updates.
2026-01-28 18:31:47 +01:00
Catriel Müller 2aba4349a0 Test Fix (#55)
* refactor: update model names

* refactor: fix test matrix
2026-01-28 17:52:05 +01:00
Florian Hines 9521208a1d Maybe fix cache (#56)
* Maybe fix cache

* maybe?

* clean up

* Clean up change markers

---------

Co-authored-by: pandemicsyn <me@neonronin.sh>
2026-01-28 17:18:47 +01:00
Igor Šćekić 722c97da92 refactor(share): remove redundant share url empty check 2026-01-28 16:25:54 +01:00