Commit Graph
14026 Commits
Author SHA1 Message Date
roboomp cc9fba7513 fix(catalog): normalized kimi k3 reasoning efforts
- Derived the mandatory low, high, and max ladder for Kimi K3 across OpenAI-compatible routes.
- Mapped generic requested tiers onto K3 wire values and defaulted the model to max.
- Added request-level regression coverage for LiteLLM-compatible models.

Fixes #5983
2026-07-18 11:36:38 +00:00
can1357 3fdd85ab6c fix(ai): made kimi device-id persistence best-effort
- getDeviceId threw ENOENT when ~/.omp/agent was missing (fresh installs, CI runners), and getKimiCommonHeaders propagated it into fetchUsage's catch, silently nulling every kimi-code usage report.
- Now creates the parent directory and falls back to a per-process ephemeral id when persistence fails; unreadable device-id files regenerate instead of throwing.
2026-07-18 06:56:54 +02:00
can1357 0ca454befa chore: bump version to 17.0.4 2026-07-18 06:41:08 +02:00
can1357 9ee329c9d7 chore: update changelogs 2026-07-18 06:40:52 +02:00
can1357 f60c7791c1 fix(catalog): used Moonshot MFJS schema for Kimi models on all hosts
- Enable `moonshot-mfjs` tool schema flavor for Kimi-family ids on any host, not just native endpoints, since proxies forward schemas verbatim to Moonshot's validator.
2026-07-18 06:27:36 +02:00
Can BölükandGitHub e44ecdc699 Merge pull request #4843 from iacore/mnemopi
fix(mnemopi): lighter dispose consolidation so /quit returns quickly
2026-07-18 06:27:08 +02:00
Can BölükandGitHub fb8f7a3989 Merge pull request #5953 from iacore/iacore/kimi-quota
fix(kimi): surface the 5h usage window reset time
2026-07-18 06:25:46 +02:00
Can BölükandGitHub c056ee2050 Merge branch 'main' into iacore/kimi-quota 2026-07-18 06:25:33 +02:00
can1357 f6a11c1bd1 Merge remote-tracking branch 'origin/farm/c26c6f43/flatten-transcript-compose-after-commit' 2026-07-18 06:24:37 +02:00
can1357 c8e166d5fe Merge branch 'farm/af10fef0/fix-task-boolean-schema' 2026-07-18 06:23:47 +02:00
can1357 ef235ed7f4 Merge remote-tracking branch 'origin/farm/190d7d63/fix-moonshot-task-output-schema' 2026-07-18 06:22:51 +02:00
can1357 7e77e44ea8 Merge remote-tracking branch 'origin/farm/a11d37e8/session-load-blob-ref-precheck' 2026-07-18 06:21:44 +02:00
can1357 ef02c0a9c3 Merge remote-tracking branch 'origin/farm/ce83ac1f/fix-stt-static-ffmpeg-linux-capture' 2026-07-18 06:20:55 +02:00
roboomp 83bfb6dbd8 fix(task): avoided boolean output subschemas
Represent task output schema inputs as explicit JSON-compatible types so ArkType emits object-form subschemas accepted by llama.cpp grammar generation.

Fixes #5957
2026-07-18 04:11:26 +00:00
roboomp d4a9d50a5b fix(ai): normalized boolean schemas for moonshot
Coerced boolean subschemas into MFJS-compatible object forms while preserving boolean keyword values.

Fixes #5952
2026-07-18 03:52:16 +00:00
iacore 85e122cece fix(kimi): surface the 5h usage window reset time
The Kimi Code usages endpoint returns resetTime on each limit's detail
object, while window carries only duration/timeUnit. buildWindow() only
reads window fields, so the 5h row parsed to a window with durationMs but
no resetsAt — and omp usage renders "resets in …" only when
window.resetsAt is set. The Total quota row worked because toUsageLimit
falls back to row.resetsAt when no window exists, but the row.window ??
short-circuit bypassed that fallback for the 5h row.

Carry the row-level reset onto the window when the window itself has
none; an explicit window resetTime still wins.
2026-07-18 11:48:20 +08:00
iacore cd98f6a610 Merge remote-tracking branch 'origin/main' into mnemopi 2026-07-18 11:05:24 +08:00
roboomp 84c6b6aa58 fix(tui): compact committed finalized transcript history
TranscriptContainer gated committed-prefix compaction on version === undefined, so version-tracked AssistantMessageComponent history never compacted and every stream tick re-walked all N sealed blocks (depth-linear compose).

Compact fully-committed finalized blocks regardless of post-finalize version tracking: their rows are immutable native scrollback the terminal owns. A post-commit mutation no longer recommits on ordinary frames (no duplication) and rehydrates on the next destructive full replay (no loss). Adds the permanent bench/transcript-compose.bench.ts fixture; ratio(N5000/N500) drops 2.30 -> 0.90.

Fixes #5930
2026-07-18 00:52:57 +00:00
Can BölükandGitHub 1b4a4fd3fd Merge pull request #5923 from DarkPhilosophy/fix/mnemopi-corrupt-model-heal
fix(mnemopi): self-heal a corrupt cached embedding model on init
2026-07-18 02:31:01 +02:00
DarkPhilosophy 7ca0235616 fix(mnemopi): normalize the default model cache root 2026-07-18 02:55:00 +03:00
DarkPhilosophy e6d3064bef fix(mnemopi): compose cache heals and route the embed worker through them
Review follow-ups:
- The corruption retry now goes THROUGH the sidecar heal, so a cache
  broken in both ways (truncated model blob AND stale/missing
  config/tokenizer sidecars) recovers in one pass instead of the retry
  escaping with a sidecar error.
- defaultLocalModelInitializer is exported from core as the shared
  initializer and the coding-agent embed worker now uses it instead of
  calling FlagEmbedding.init directly, so omp's subprocess embeddings
  inherit both heals; fastembed/onnxruntime still load only in the
  child address space.
2026-07-18 02:35:39 +03:00
roboomp 1e209caeee perf(session): gate blob-ref resolution behind synchronous precheck
resolveBlobRefsInEntries handed every non-session entry to the recursive
async resolvePersistedBlobRefs walk, allocating and awaiting child promises
even for plain-text entries with no blob:sha256: refs. On large text-heavy
histories this dominated the blob_resolve phase of session open.

Add a cheap synchronous containsBlobRef precheck that early-exits on the
first ref and allocates nothing. Interleave the precheck with per-entry
initiation so positive entries still start resolution at the same relative
point as the old filter+map schedule (a later entry that gains a ref during
an earlier BlobStore.get is still scanned after that mutation).

Blob-free N=5000 fixture: blob_resolve median 19.5ms -> 1.1ms, zero
BlobStore.get calls.

Fixes #5922
2026-07-17 23:25:16 +00:00
DarkPhilosophy eed5da008e test(mnemopi): pin the corruption retry contract end-to-end
defaultLocalModelInitializer (exported @internal for tests; production
seam stays setLocalModelInitializer) now provably retries
FlagEmbedding.init EXACTLY once after a Protobuf-corruption failure,
quarantining the cached file in between, and surfaces the error without
looping when the retry fails too. The heal callsite now passes
options.cacheDir so containment checks the caller's cache root, not
only the global default.
2026-07-18 02:25:05 +03:00
DarkPhilosophy 61cdedec02 docs(mnemopi): changelog entry for corrupt-model self-heal 2026-07-18 02:22:12 +03:00
DarkPhilosophy 6cc0c71d1d fix(mnemopi): self-heal a corrupt cached embedding model on init
A truncated model_optimized.onnx (observed live: 5.7MB file from June,
'Protobuf parsing failed' on every load) blocks local embeddings
forever: the downloader treats the existing file as complete, so every
init re-parses the same broken bytes and local recall/retain loses its
embedder. defaultLocalModelInitializer now quarantines the exact file
named by the loader (atomic rename to *.corrupt-<ts>) and retries init
ONCE so the model re-downloads.

The extracted path is error-message content: it is honored only when
it resolves inside the fastembed cache directory, so a dependency
emitting an unexpected message can never rename an arbitrary file.

Contract tests: protobuf failure quarantines exactly the named cache
file and reports retry-safe; unrelated errors touch nothing; a missing
file (concurrent heal) stays retry-safe; a path outside the cache root
is refused untouched.
2026-07-18 02:21:17 +03:00
roboomp 26e75b251c fix(stt): selected supported linux ffmpeg input
- Probed Linux ffmpeg demuxers and fell back to ALSA when PulseAudio input is unavailable.
- Preserved recorder stderr so immediate capture failures report their real cause.
- Added regressions for ALSA selection and stderr diagnostics.

Fixes #5907
2026-07-17 20:25:21 +00:00
can1357 48241afcc4 test(coding-agent): dropped stale URL read-cache assertions
- 33d66643d removed the process-local URL response cache (#5803) but left
  two fetch-kagi-toggle tests asserting the old reuse contract.
- Deleted the obsolete repeated-read reuse test (refetch behavior is
  covered by fetch-raw-mode and search-url-paths regressions) and kept
  the offset/limit selector contract without the no-network assertion.
2026-07-17 22:16:21 +02:00
can1357 f8e7b29b70 fix(hashline): rejected trailing colon on DEL headers
- `DEL N:` previously consumed the colon and body rows then failed with the
  wrong guidance; it now falls through to contamination detection which
  emits the corrective "has no colon" message, matching `DEL.BLK N`.
- Aligns tokenizer with the leniency removal in 766790cba.
2026-07-17 21:53:57 +02:00
can1357 2c225a0d00 chore: bump version to 17.0.3 2026-07-17 21:38:00 +02:00
can1357 766790cbac chore: unclanking edit pr 2026-07-17 21:37:20 +02:00
can1357 4d4090a578 style: formatted shell tilde-expansion test 2026-07-17 21:24:45 +02:00
can1357 0e05691cdb style: formatted kimi-code k3 reasoning test 2026-07-17 21:24:10 +02:00
can1357 69148a89ca chore: normalized changelogs after farm PR sweep 2026-07-17 21:23:27 +02:00
can1357 3848a37f9a Merge PR #5820: fix(catalog): read litellm per-model cost from rich metadata (@roboomp) 2026-07-17 21:22:31 +02:00
can1357 8577371187 Merge PR #5896: fix(kimi-code): preserve K3 native effort contract (@roboomp) 2026-07-17 21:22:08 +02:00
can1357 cd97af0e19 Merge PR #5853: fix(ai): order parallel tool outputs before result images (@roboomp) 2026-07-17 21:22:08 +02:00
can1357 73a22c15b3 Merge PR #5807: fix(catalog): warn when LiteLLM metadata discovery is forbidden (@roboomp) 2026-07-17 21:22:08 +02:00
can1357 4a363870aa Merge PR #5866: fix(tui): prevent settings exit flicker (@roboomp) 2026-07-17 21:22:08 +02:00
can1357 afd7265c4c Merge PR #5863: fix(tui): recognize remote cmux resize sessions (@roboomp) 2026-07-17 21:22:07 +02:00
can1357 4d7604dffc Merge PR #5837: fix(tui): exit when the terminal disconnects (@roboomp) 2026-07-17 21:22:07 +02:00
can1357 8c546bda77 Merge PR #5816: fix(tools): recognize zip-family archives and prune unconvertible extensions (@roboomp) 2026-07-17 21:22:07 +02:00
can1357 089eec18e6 Merge PR #5811: fix(read): refresh URL responses on each invocation (@roboomp) 2026-07-17 21:22:07 +02:00
can1357 3df9cb12c1 Merge PR #5883: fix(agent): preserve signed thinking-only stops (@roboomp) 2026-07-17 21:22:06 +02:00
can1357 1311e6440b Merge PR #5809: fix(session): make /new an atomic boundary against queued steers (@roboomp) 2026-07-17 21:22:06 +02:00
can1357 357d683007 Merge PR #5894: fix(mcp): process-group kill and SIGKILL escalate on stdio transport close (@Mathews-Tom) 2026-07-17 21:22:06 +02:00
can1357 c081dedd3a Merge PR #5887: fix(tui): isolate wrapped OSC 8 links in tables (@roboomp) 2026-07-17 21:22:06 +02:00
can1357 0422357bff Merge PR #5880: fix(extensions): restore legacy Kimi provider compatibility (@roboomp) 2026-07-17 21:22:05 +02:00
can1357 3de62abccb Merge PR #5878: fix(tui): keep active todo visible in collapsed views (@roboomp) 2026-07-17 21:22:05 +02:00
can1357 940855608e Merge PR #5865: fix(hub): restore persisted peers after resume (@roboomp) 2026-07-17 21:22:05 +02:00
can1357 3e006c8a70 Merge PR #5855: fix(mcp): stop reauth after failed dynamic client registration (@roboomp) 2026-07-17 21:22:05 +02:00