Commit Graph

3282 Commits

Author SHA1 Message Date
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
Igor Šćekić fbd25d609f fix(share): update auth login hint in unshare error 2026-01-28 16:25:17 +01:00
Igor Šćekić e76cc9a55d chore(share): rename disable share env var
Update share modules, CI workflow, and e2e scripts to use
KILO_DISABLE_SHARE instead of OPENCODE_DISABLE_SHARE.
2026-01-28 16:17:18 +01:00
Igor Šćekić 1dcbe284a6 fix(share): surface share/unshare failures with errors
Throw explicit errors when sharing is disabled or credentials are missing,
validate session sync initialization, and check HTTP responses/public_id
before persisting the share URL.
2026-01-28 16:16:29 +01:00
Igor Šćekić c43b5b3a29 fix(session): lazy-load ShareNext during removal
Avoid eager import of ShareNext by dynamically importing it only when
removing a session, reducing initialization coupling and preventing
import-time issues.
2026-01-28 16:15:15 +01:00
Igor Šćekić d431c1622d Merge branch 'dev' into add-session-sync 2026-01-28 16:08:58 +01:00
Igor Šćekić 2c86edd29b Merge branch 'dev' into add-session-sync 2026-01-28 15:55:25 +01:00
Catriel Müller e99e621cd4 Merge branch 'dev' into feat/beta-release-workflow 2026-01-28 15:38:21 +01:00
Catriel Müller 23db4efb9d refactor: rename git repo 2026-01-28 15:05:42 +01:00