325 Commits

Author SHA1 Message Date
can1357 72000acfeb chore: bump version to 17.4.0
Warm bazel disk cache / Seed darwin release bazel cache: darwin-arm64 (push) Has been cancelled
Warm bazel disk cache / Seed darwin release bazel cache: darwin-x64-baseline (push) Has been cancelled
Warm bazel disk cache / Seed bun store cache (push) Has been cancelled
CI / Resolve release metadata (push) Has been cancelled
CI / Lint, type check & web build (push) Has been cancelled
CI / Validate Rust workspace (bazel) (push) Has been cancelled
CI / Build native addons (bazel) (push) Has been cancelled
OMP Nix / Evaluate flake (push) Has been cancelled
CI / Test TS workspace fast (push) Has been cancelled
CI / Test coding-agent singleton/global-state (TS) (push) Has been cancelled
CI / Test TS native/integration packages (push) Has been cancelled
CI / Test coding-agent UI/TUI (TS) (push) Has been cancelled
CI / Test coding-agent runtime/session (TS) (push) Has been cancelled
CI / Test coding-agent native/unit (TS) (push) Has been cancelled
CI / Test CLI smoke (TS) (push) Has been cancelled
CI / Install method smoke tests (push) Has been cancelled
CI / Release validation gate (push) Has been cancelled
CI / Release binary: linux-arm64 (push) Has been cancelled
CI / Release binary: linux-musl-arm64 (push) Has been cancelled
CI / Release binary: linux-musl-x64 (push) Has been cancelled
CI / Release binary: linux-x64 (push) Has been cancelled
CI / Release binary: win32-x64 (push) Has been cancelled
CI / Release binary: darwin-arm64 (push) Has been cancelled
CI / Release binary: darwin-x64 (push) Has been cancelled
CI / Publish native leaf packages (push) Has been cancelled
CI / Publish GitHub release (push) Has been cancelled
CI / Verify published release (macOS) (push) Has been cancelled
CI / Publish to npm (push) Has been cancelled
CI / Update Homebrew tap (push) Has been cancelled
2026-08-20 08:13:58 +02:00
can1357 22b40b47e1 chore: bump version to 17.3.8 2026-08-19 12:35:37 +02:00
Sunil Srivatsa 49415712f2 fix(memory): separate extraction instructions from user input
The memory-extraction prompt concatenated its instructions, few-shot
examples, and the user message into a single user turn, so a small local
model could not distinguish instructions from input and frequently echoed
the Globex/weather examples instead of extracting facts.

Send the instructions as a real system turn and the raw text as the user
turn. The tiny worker protocol gains a systemPrompt field, and Mnemopi
completion input carries task metadata so the backend selects the right
prompt per call.

Drop the code-built MEMORY_EXTRACTION_TEMPLATE rather than porting it:
prompt text belongs in .md files, and resolveMemoryCompletionInput already
overrides that template for every extraction call, so Mnemopi rendered it
only for the result to be discarded.

Measured on ONNX q4 CPU, LFM2.5-1.2B memory extraction improved from 1/8
to 5/8 once the roles were separated.
2026-08-17 15:06:37 -07:00
can1357 0a912cc467 chore: bump version to 17.3.7 2026-08-17 22:29:25 +03:00
can1357 54e1a8c900 chore: bump version to 17.3.6 2026-08-17 17:16:40 +03:00
can1357 37eee71978 chore: bump version to 17.3.5 2026-08-16 10:21:05 +03:00
Can Bölük ca1f184823 chore: rewritten changelogs 2026-08-16 09:28:34 +03:00
can1357 55e5da3d17 chore(changelog): normalized changelogs after merged fixes 2026-08-16 02:15:11 +02:00
can1357 b445134b4d Merge PR #8370: fix: retry transient Anthropic failures at oneshot LLM call sites (@wonjun3991)
# Conflicts:
#	packages/coding-agent/src/utils/title-generator.ts
2026-08-16 02:14:12 +02:00
can1357 ffd53ff92a chore: bump version to 17.3.4 2026-08-14 14:38:16 +02:00
roboomp fc9d40ca30 fix(mnemopi): keep global rows recallable under channelId filter
buildWhere() appended a redundant hard `channel_id = ?` clause on top of
the `(session_id = ? OR scope = 'global' OR channel_id = ?)` visibility
clause. The hard AND nullified the `scope='global'` branch, so any global
row whose channel_id differed from the recall channelId — including rows
imported via importFromDict() with channel_id NULL — was silently dropped.

Channel isolation is fully preserved by the visibility OR-clause alone
(other-channel, non-global, cross-session rows still fail all three
disjuncts), so removing the hard clause restores global visibility without
leaking other channels.

Fixes #8525
2026-08-14 06:55:59 +00:00
can1357 039728ad80 chore: bump version to 17.3.3 2026-08-14 05:44:05 +02:00
can1357 ae2d3d6ea1 chore: bump version to 17.3.2 2026-08-14 00:28:43 +02:00
can1357 0bc2c342f4 chore: bump version to 17.3.1 2026-08-13 19:39:21 +02:00
can1357 b279db1790 test: refactored test suites to eliminate time-based sleeps and polling loops
- Replaced time-based sleeps and polling loops with event-driven promise resolvers and fake timers across agent and tool tests.
- Migrated test suites to share in-memory auth storage and fixtures using lifecycle hooks.
- Updated catalog model definitions, metadata, and configurations.
2026-08-13 19:32:22 +02:00
can1357 8b0f400d3c chore: bump version to 17.3.0 2026-08-13 08:28:43 +02:00
wonjun3991 38a2040b8d fix(coding-agent): retry transient failures at oneshot LLM call sites
Session title generation, TTS speech enhancement, commit-message
generation, the auto-thinking and unexpected-stop classifiers, memory
extraction/consolidation, the commit analysis/summary/changelog/map/reduce
passes and the mnemopi LLM callback each aborted or degraded on the first
transient blip. Several returned null, which made a provider overload
indistinguishable from a legitimate empty result.

The commit analysis, summary, changelog and reduce passes also fed a
provider error message straight into their response parsers: they never
checked stopReason, so a failed request produced garbage instead of
surfacing the error. The map phase's own retry helper only caught thrown
errors, so a resolved stopReason "error" bypassed it entirely.

Sites deliberately left unwrapped: the Anthropic web_search provider
(server-side execution, billed per search - a re-request duplicates a real
side effect), the legacy streamSimple shim (already-emitted events would
duplicate), the auth-gateway health probe (a probe must report the state
it observed), and the script paths whose own retry logic tracks per-attempt
usage or re-requests only the failed subset.
2026-08-13 10:54:42 +09:00
can1357 5481d8b9b0 chore: bump version to 17.2.15 2026-08-12 03:26:12 +02:00
can1357 e5ebb2aee0 chore: bump version to 17.2.14 2026-08-11 20:43:02 +02:00
can1357 2157becbe9 chore: bump version to 17.2.13 2026-08-11 16:03:05 +02:00
can1357 8fed93632a refactor(ai): rebranded openrouter identifiers and user agent to omp
- Updated user agent and openrouter titles in packages/ai from Oh-My-Pi to omp.
- Integrated getOpenRouterHeaders into image generation tool requests in packages/coding-agent.
- Updated provider documentation and test assertions to reflect the rebrand.
2026-08-11 15:28:28 +02:00
can1357 6fb07028fd chore: bump version to 17.2.12 2026-08-08 20:57:55 +02:00
can1357 055a5d4f26 chore: bump version to 17.2.11 2026-08-07 23:38:40 +02:00
can1357 a9dcf0f8d1 chore: update changelogs 2026-08-07 23:38:26 +02:00
roboomp 336975c46c fix(mnemopi): recover from partially-extracted embedding model cache
An interrupted fastembed model download leaves <cacheDir>/<model>/ with
sidecars and a truncated model.onnx_data but no model.onnx. Upstream
retrieveModel short-circuits on the existing dir (and reuses a leftover
partial <model>.tar.gz), so FlagEmbedding.init throws "Model file not
found at .../model.onnx" every session: semantic recall silently dies
machine-wide and reconcileEmbeddingModel re-enqueues the same
never-embeddable rows on every store open.

quarantineCorruptModelFile only matched "Protobuf parsing failed", never
this partial-extraction variant. Add clearIncompleteModelCache: a
"Model file not found" init failure now removes the incomplete model dir
and the leftover partial archive (containment-guarded to a direct child
of the fastembed cache root) and retries init exactly once, so the next
attempt re-downloads cleanly and recall self-heals.

Fixes #7916
2026-08-07 23:38:25 +02:00
can1357 3a8591a8af test: hardened two ci-flaky timing tests
- mnemopi provider parity 'diagnose, validate, graph' does ~6.7s of real
  work under bun --parallel=8 on loaded runners; raised its per-test
  timeout to 30s (default 5s flaked twice in three CI runs).
- utils LRUCache updateAgeOnGet drove a 30ms TTL with real 20ms sleeps
  (10ms margin); now drives performance.now() via a mocked clock, so the
  contract is asserted deterministically with no wall-clock wait.
2026-08-06 14:48:57 +02:00
can1357 43c1b245e7 chore: bump version to 17.2.10 2026-08-06 13:32:34 +02:00
can1357 9e738dc880 chore: reformat + rewrite changelogs 2026-08-06 13:30:08 +02:00
can1357 0b0e7dd530 chore: normalized changelogs after merging 20 pull requests 2026-08-05 21:50:46 +02:00
can1357 e9888367d1 refactor: migrated packages to internal utility modules and removed external dependencies
- Implemented in-house, zero-dependency utility modules in `pi-utils` covering DOM manipulation, markdown parsing, templating, browser automation helpers, and terminal buffers.
- Migrated packages across the repository to consume the new internal utilities and `omptype` schema validators instead of external dependencies.
- Removed multiple external runtime and development dependencies including Zod, Marked, LRU cache, Turndown, and Puppeteer browser packages.
2026-08-05 13:39:09 +02:00
can1357 f7f8e040ee chore: bump version to 17.2.9 2026-08-05 03:07:47 +02:00
metaphorics 3802d2dd80 chore(ts): enforce noImplicitOverride 2026-08-05 02:49:01 +09:00
can1357 003bb5548c chore: bump version to 17.2.8 2026-08-04 05:53:35 +02:00
can1357 a5090f1f81 chore: bump version to 17.2.7 2026-08-04 01:19:36 +02:00
can1357 bc39ffa265 feat: introduced omptype validation package and migrated workspace dependencies
- Introduce `@oh-my-pi/omptype` as a new ArkType-compatible schema validation package featuring a lazy JIT runtime, JSON Schema emission, and compatibility adapters.
- Replace `arktype` across workspace packages and test utilities with `@oh-my-pi/omptype`.
- Add benchmark suites, tests, and documentation for the new validation engine and adapters.
- Update workspace build, test runner, and release configurations to include the new package.
2026-08-03 21:56:48 +02:00
can1357 01c1f91ff5 chore: bump version to 17.2.6 2026-08-03 16:44:19 +02:00
can1357 4ddc2d2cd4 chore: rewrite changelogs + fix stale tests 2026-08-03 15:32:19 +02:00
can1357 2219a6ee26 Merge PR #7215: feat(mnemopi): add opt-in SQLite page-size selection (@bradmccormack) 2026-08-03 15:12:03 +02:00
can1357 c53b85aaf4 chore: bump version to 17.2.5 2026-08-03 05:53:12 +02:00
Brad McCormack b955946dff fix(mnemopi): restore [Unreleased] section after upstream merge
The auto-merge during conflict resolution placed the page-size Added
section under [17.2.3] (which already had the upstream's think-block
fix) and left an empty ### Fixed header. Move the Added section back
under [Unreleased] where it belongs; drop the empty header.

No code changes.
2026-08-02 11:13:43 +10:00
Brad McCormack 4313e408e7 fix(mnemopi): follow namespace import convention in cost log
Use namespace imports for the Node built-ins touched by cost logging.
2026-08-02 11:12:35 +10:00
Brad McCormack 2163ee38a6 fix(mnemopi): validate explicit SQLite page sizes
Reject invalid page-size values before interpolating the PRAGMA and cover new, existing, and in-memory database behavior.
2026-08-02 11:12:35 +10:00
Brad McCormack 68555bd677 fix(mnemopi): make SQLite page-size alignment opt-in
Keep SQLite default behavior unless a page size is explicitly configured, and route file-backed Mnemopi databases through the shared opener.
2026-08-02 11:12:35 +10:00
Brad McCormack e541ee2ef6 fix(mnemopi): align SQLite page size with OS page size
Add the initial page-size detection and regression coverage for file-backed Mnemopi databases.
2026-08-02 11:12:35 +10:00
can1357 d595332fc6 chore: bump version to 17.2.4 2026-08-02 00:19:30 +02:00
can1357 8baa3300bc chore: bump version to 17.2.3 2026-08-01 08:35:39 +02:00
roboomp c95d182bf2 fix(mnemopi): anchored think stripping to leading blocks
- Restricted the reasoning-wrapper removal to leading <think> blocks so a
  literal think tag after real content is preserved instead of deleted.
- Added coverage asserting mid-content think tags survive cleanOutput.

Fixes #7231
2026-08-01 05:18:25 +00:00
roboomp ebd7ea3578 fix(mnemopi): stripped reasoning blocks from remote llm output
- Removed MiniMax-style think wrappers in cleanOutput so reasoning-model
  responses no longer leak into consolidation summaries or corrupt fact
  extraction (the wrapper previously survived parsing and every stored fact
  became reasoning prose).
- Added remote consolidation and remote extraction regression coverage.

Fixes #7231
2026-08-01 05:13:19 +00:00
can1357 d5861c2c66 chore: bump version to 17.2.2 2026-07-31 20:56:49 +02:00
can1357 2c85a74cd4 chore: rewrite changelog 2026-07-31 20:40:52 +02:00