Proto commits in lmnr-ai/lmnr

These 52 commits are when the Protocol Buffers files have changed:

Commit:49cb3f6
Author:laminar-coding-agent[bot]
Committer:GitHub

refactor(LAM-1653): port query-engine to in-process Rust in app-server (#1834) * refactor(LAM-1653): port query-engine to in-process Rust in app-server Replace the standalone Python gRPC query-engine service with an in-process Rust implementation built on the sqlparser crate. SQL validation and JSON<->SQL conversion now run inside app-server (src/query_engine/in_process/) behind an enum_dispatch QueryEngineTrait seam, eliminating the network hop and the separate service deployment. - Remove the query-engine/ dir, its .proto, build.rs codegen, the Grpc engine variant, and all QUERY_ENGINE_URL / docker-compose wiring. - Validator preserves the Python security semantics verbatim: SELECT-only, blocked functions, project_id rejection, table allowlist, and v0-view project scoping. - Frontend camelCase JSON contract (sql/types.ts) preserved. - 54 Rust tests ported 1:1 from the Python suites (35 validator, 14 json_to_sql, 5 sql_to_json). tsc --no-verify: all type errors are pre-existing (asset module declarations + recharts v3 types per CLAUDE.md known issue); the one touched frontend file (terminal.tsx) is clean. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor: pass &TimeRange into get_time_range_conditions Remove the unwrap() that relied on the caller's is_some() check; thread the &TimeRange through from build_where_clause's if-let so the invariant is enforced by the type system. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix: escape single quotes in string filter values format!("'{s}'") produced invalid SQL for values containing apostrophes (e.g. O'Brien -> 'O'Brien'). Double embedded single quotes per ClickHouse's escaping convention; sqlparser de-doubles on parse so the round-trip through sql_to_json stays byte-identical. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(LAM-1653): respect table alias when extracting traces time bounds When a query aliases the traces table (FROM traces t WHERE t.start_time >= …), the alias-qualified time predicates were dropped, leaving the traces_v0 view function with epoch-wide defaults and scanning far more data than the filter implies. Accept a qualifier matching the table's alias in addition to the literal `traces`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Fail closed on tokenizer error in raw-expression comment check contains_sql_comment is part of the raw-expression security boundary; returning false on a tokenizer error was fail-open. Reject (return true) instead so an unparseable fragment can't slip past the comment check. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Fix saturating i64 cast in format_number f64->i64 cast saturated large whole-number filter values (e.g. 1e19 became i64::MAX). f64's Display already drops the trailing `.0` for whole numbers without scientific notation or saturation, so render through it directly. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Strip alias from validated raw metric expression validate_raw_expression returned the full projection (including any user `AS` alias) instead of the alias-stripped inner expression used for the security checks. A raw column like `countIf(...) AS foo` produced invalid `(... AS foo) AS \`value\`` once metric_sql re-wrapped it. Return inner_expr. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Strip alias from safe_column_expr metric column safe_column_expr returned the full projection (including any user `AS` alias), so a metric column like `cost AS total` produced invalid `sum(cost AS total) AS \`alias\`` once metric_sql re-wrapped it. Match the alias-stripping the raw-expression path already does. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fixes after rebase, remove start_time params in traces * workaround downstream bug with parsing IN without parens * docs: reword query-engine notes to avoid negative existence claims Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * small further update to claude.md to keep info fresh --------- Co-authored-by: Robert Kim <skull8888888@gmail.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> Co-authored-by: Din <dinmukhamed.mailibay@gmail.com> Co-authored-by: cursor[bot] <cursor[bot]@users.noreply.github.com>

Commit:412adbc
Author:laminar-coding-agent[bot]
Committer:GitHub

feat(pii-redactor): standalone CPU gRPC service for PII redaction (LAM-1612) (#1773) * feat(pii-redactor): standalone CPU gRPC service for PII redaction (LAM-1612) New top-level crate at pii-redactor/. Loads any HuggingFace token-classification model exported to ONNX (model.onnx + tokenizer.json + config.json with BIO id2label) and exposes a single PiiRedactorService.Redact RPC that takes a list of texts and returns the same list with PII spans replaced by [REDACTED_<LABEL>] placeholders. CPU-tuned: ORT GraphOptimizationLevel::Level3, intra/inter thread knobs, tokio spawn_blocking + per-session semaphore so concurrent requests don't contend on a single ORT session. App-server is intentionally not wired up — this PR delivers only the service. Dockerfile bakes ./models/ into the image and pins ONNX Runtime 1.20.0 shared lib, so the container boots without any external resources. See pii-redactor/README.md for weight-prep + test instructions. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * feat(pii-redactor): handle BIOES tag scheme + document OpenAI privacy filter prep The OpenAI privacy filter (openai/privacy-filter) tags spans with BIOES (B-/I-/E-/S-) rather than BIO. Extend span decoding to handle E- (close current span) and S- (single-token span); BIO emitters are unaffected since they never emit E-/S-. Update the README with concrete download instructions for the privacy filter (including ONNX external-data shards) and the smaller quantised variants that make sense on CPU. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): recover from poisoned session mutex; verify ORT tarball Address greptile review feedback on PR #1773: - engine.rs: a panic during ORT inference would poison the session Mutex, so .unwrap() turned a single panic into a permanent outage of that slot (the entire service with --num-sessions=1). The session itself is reusable across panics; recover via into_inner(). - Dockerfile: the libonnxruntime.so 1.20.0 release asset is now SHA-256 verified before extraction, so a tampered or substituted upstream tarball can't sneak a malicious native library into the image. Hash exposed as ORT_SHA256 build-arg next to ORT_VERSION for easy bumping. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): propagate semaphore close error instead of panicking acquire_owned() can only fail if the semaphore is closed (which we never do today), but unwrap() is the wrong default — propagate via anyhow so any future change that does close the semaphore surfaces as a clean gRPC error rather than a panicked tokio task. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): record needs_token_type_ids once on first session Previously the flag was reassigned every loop iteration, so only the final session's value survived — fine in practice (all sessions load the same model.onnx) but sloppy. Latch on first session via Option + get_or_insert_with so future readers don't have to verify that the loop is idempotent. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * feat(pii-redactor): cap texts per Redact request Reject Redact RPCs that carry more than PII_MAX_TEXTS_PER_REQUEST texts (default 1024) with RESOURCE_EXHAUSTED. Prevents a misbehaving client from forcing the engine to allocate a giant Vec<String> + spawn ceil(n / max_batch_size) blocking tasks each holding ONNX tensors. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): clamp max_batch_size and max_seq_len to >= 1 slice::chunks(0) panics, so PII_MAX_BATCH_SIZE=0 (whether via flag or env) would crash on the first non-empty Redact request rather than fail at startup. Clamp at the same place we already do for num_sessions; also clamp max_seq_len since 0 would silently turn every text into a no-op (.min(0) = 0). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): verify logits batch dim matches input count Before iterating texts and calling logits.index_axis(Axis(0), i), check that dims[0] == batch. A mismatched export or an ORT quirk that returns fewer rows would otherwise panic on the first out-of-range i and surface as a JoinError rather than a clean Status::internal. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): treat gap ids in id2label as "O", not empty label LabelMap stores ids in a Vec sized to max_id + 1, so any non-contiguous id2label leaves "" at the gap index. lookup()'s unwrap_or("O") only handled out-of-bounds ids, so a gap id returned "" — split_bioes classifies that as ("X", "") and bioes_spans treats it as a PII span, producing "[REDACTED_]" placeholders. Fall back to "O" on empty too. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix * accept list of stringified json * feat(app-server): redact span input/output via pii-redactor gRPC When `PII_REDACTOR_URL` is set, app-server connects to the pii-redactor service at startup and threads a clonable client into both the cloud SpanHandler and the data-plane DataPlaneSpanHandler. Inside `process_span_messages`, after provider conversion and before size accounting / dedup / CH insert / Quickwit indexing, spans whose attributes carry `lmnr.should_remove_pii = true` get their `input` and `output` JSON values stringified, batched into a single Redact RPC, and written back from the response — every storage tier sees the redacted content. RPC failures are logged and the batch continues with original content (best-effort: redaction never blocks ingest). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): reserve room for special tokens in chunk size The chunk size check tokenized without special tokens but inference re-encodes with them (CLS/SEP for BERT-family). Texts at exactly chunk_size content tokens would feed chunk_size + overhead tokens to the model, overflowing positional embeddings on models whose max_position_embeddings == chunk_size. Probe the tokenizer at load to derive special_overhead and store effective_chunk_size = chunk_size - special_overhead. Use it for both the single-window threshold and the sliding-window stride/end so content-token slices always leave room for the special tokens added at inference. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): pop session from pool to match permit count Round-robin selection over Vec<Mutex<Session>> let a freed permit pick a still-busy session while another sat idle, blocking on the mutex under variable-length workloads (chunked vs single-window inputs). This contradicted the design goal of queuing cleanly instead of contending on one ORT session. Replace with a Mutex<Vec<Session>> pool: hold the lock only long enough to pop a session at the start and push it back at the end. The permit count equals the pool size so a permitted task is guaranteed to find an available session. The session is returned even on inference error so a transient failure can't shrink the pool and let permits over-promise availability. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(pii-redactor): redact after dedup, target only new LLM messages For LLM spans flagged with `lmnr.should_remove_pii=true`, redact only the newly-deduped input messages (those about to be inserted into `llm_messages`) plus output. For non-LLM spans, redact full input + output as before. Move the redaction call after `build_dedup_batch` and before the `llm_messages` ClickHouse insert / size accounting / Quickwit indexing, so every storage tier sees the redacted bytes without paying redaction compute for input messages already seen earlier in the trace. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): return session to pool via RAII guard Replace the manual pop / push-after-result-closure with a SessionGuard whose Drop hands the session back. Covers normal exit, error returns, and panics inside `session.run()` uniformly — without the guard, an unwind would skip the push and permanently shrink the pool while the semaphore kept handing out permits for it. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * feat: project-level PII redaction toggle (Pro-tier gated) Replace the per-span `lmnr.should_remove_pii` attribute with a project- level `projects.remove_pii` boolean. The flag rides on the same row as `ProjectWithWorkspaceBillingInfo`, so the redaction decision lookup is free after the first batch via the existing `project:{id}` Redis cache. Pro-tier gated server-side (UI greys the toggle) so a forged request can't enable redaction on a Free / Hobby workspace. The toggle action invalidates the app-server cache before returning. Redaction runs in `process_span_messages` after `build_dedup_batch` and before the `llm_messages` insert. For dedup'd LLM spans whose `span.input` is `None` post-LAM-1608, redaction targets `dedup.messages[k].content` directly — Quickwit indexing and `llm_messages` share that buffer, so a single update covers both storage tiers. Already-seen messages were redacted on first emit and ride the wire as hashes. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): actually sub-batch detect_spans_batch by max_batch_size `PII_MAX_BATCH_SIZE` was advertised in CLI help / README / PR description but discarded with `let _ = args.max_batch_size`. The whole `rendered` vec was passed to `detect_spans_batch` as one unit, so an operator tuning the flag for memory bounding saw no effect. Wire `max_batch_size` into `GrpcServer` and chunk `rendered` before dispatch. Concurrency within a sub-batch is still gated by the session permit pool; the chunking only bounds the peak in-flight task / per-text memory burst on near-cap requests. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): redact full union of overlapping different-label spans When the sliding-window decoder labels the same byte range differently in adjacent windows, two spans can overlap after same-label merging (e.g. `[0..10] private_email` followed by `[5..25] private_personal_information`). The previous `s < cursor` skip dropped the entire second span, so its un-covered tail (bytes `[10..25]`) passed through the final drain unredacted. Skip only when the span is fully behind the cursor (`e <= cursor`); otherwise clip its start to `cursor` so the un-redacted tail is still covered. Add tests for the overlapping-different-label and fully-subsumed cases. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redactor): refresh dedup span_content_bytes after redaction `build_dedup_batch` populates `dedup.span_content_bytes[dedup_idx]` from pre-redaction `content.len()`. `redact_spans_in_place` then mutates `dedup.messages[idx].content` in place — without an adjustment, the post-dedup input-bytes loop bills the workspace using the stale pre-redaction sizes for every project that has `remove_pii=true`. Track msg_idx → dedup_idx while building the redact request, then on write-back replace the message's old length with the redacted length in `span_content_bytes` so the loop sees current bytes. Matches the comment on `estimate_size_bytes` ("size reflects redacted content"). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(pii-redaction route): require auth + project membership The PATCH endpoint touched `projects.remove_pii` with no session check and no ownership validation — any caller could toggle redaction for an arbitrary project id, including silently DISABLING it on someone else's project to bypass the Pro-tier gate (which only blocks enabling). Add explicit `getServerSession` + `isUserMemberOfProject` check at the top of the handler, returning 401 / 403 JSON. Don't call `requireProjectAccess` — it `redirect()`s to /sign-in and `notFound()`s, which is the right shape for page navigations but not for an API route the client expects to read as JSON. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor: project settings as JSONB column Replace per-column project setting flags with a single `projects.settings JSONB` column. Adding a setting now means adding a typed field on each side — Zod on the Next.js write path, serde on the Rust read path — no migration. Migration 0086 swaps the previous `remove_pii BOOLEAN` for `settings JSONB DEFAULT '{}'`, backfilling rows where `remove_pii` was true into `{"removePii": true}`. Existing migration 0085 is preserved since it's already shipped on this branch. Writes are Next.js-only: - `updateProjectSettings` in `lib/actions/project/settings.ts` accepts a strict-Zod `Partial<ProjectSettings>`, applies per-key tier gates server-side, merges via Postgres `||` (no read-modify-write race), and invalidates the app-server's `project:{id}` Redis cache. - `PATCH /api/projects/:id/settings` is the public surface, gated on session + project membership. Reads on the Rust side go through `ProjectSettings` with serde defaults on every field, tolerating older rows / unknown keys. Malformed JSON falls back to defaults with a warning rather than poisoning the cache. PII redactor reads `info.settings.remove_pii` instead of the flat field. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(project cache): bump key version after settings JSONB shape change Moving `remove_pii` into nested `settings` changes the JSON shape of cached `ProjectWithWorkspaceBillingInfo` entries. Existing entries from a prior build of this branch (staging / dev previews) still carry top-level `removePii`; serde drops that field and applies default `settings`, so `settings.remove_pii` reads false on cache hits even when Postgres has the toggle on — ingest would silently skip PII redaction until TTL. Bump `PROJECT_CACHE_KEY` to `project:v2` on both sides. The two cache key constants must stay in sync — the frontend invalidates entries the app-server fills, so a drift would orphan Postgres writes from cache reads. Old `project:{id}` entries TTL-expire harmlessly. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor: collapse projects.settings migration history Both prior migrations on this branch (0085 added `remove_pii`, 0086 swapped to JSONB) only ever ran on staging — neither shipped to prod. Squash them into a single 0085 that adds `settings JSONB DEFAULT '{}'` directly. Drop the `project:v2` cache key bump in lockstep: with no prior in-prod shape of `ProjectWithWorkspaceBillingInfo`, the bump was solving a problem that didn't exist (old caches deserialize fine — `settings` defaults to empty, matching what Postgres returns post-migration). Re-applied staging schema to match the new migration so devs running this branch don't hit a checksum mismatch. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * feat(pii-redaction): instrument redactor + Security tab + upgrade button - `redact_spans_in_place` now carries a tracing instrument span with `recordable_spans`, `batch_size` (texts dispatched to the Redact RPC), `dedup_messages`, `whole_inputs`, `whole_outputs` fields. The actual RPC await runs inside a nested `pii_redactor.rpc` span so its latency is chartable separately from the surrounding bookkeeping. `resolve_opted_in_projects` gets its own `unique_projects` / `opted_in` span. - Move the PII redaction toggle out of General into a new Security tab in project settings (icon: shield-check). Keeps General focused on rename / delete; Security becomes the natural home for any future data-handling controls. - Next to the "Pro plan required" badge (when the toggle is greyed out on Free / Hobby tiers), add a small "Upgrade plan" button linking to `/workspace/{id}?tab=billing` so the user can reach the upgrade flow in one click instead of hunting the sidebar. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Robert Kim <skull8888888@gmail.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

Commit:25075d4
Author:Robert Kim

feat: add Custom SQL metric support to dashboard chart builder Allow users to write raw SQL expressions as custom metrics when creating dashboard charts, reusing the SQL editor component from evaluation run tables. The custom SQL expression is passed through the query pipeline and injected directly into the generated ClickHouse query. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Commit:1801e52
Author:Robert Kim

feat: add Custom SQL metric support to dashboard charts (LAM-1035) Add a "Custom SQL" option to the dashboard chart metric function dropdown, allowing users to write raw SQL expressions for column definitions. This reuses the SQL editor component from the evaluation run table feature, with schema-aware autocomplete and AI assist capabilities. Changes: - Add `raw_sql` field to Metric in protobuf definitions (both app-server and query-engine) - Add `raw` metric function with `rawSql` field to frontend TypeScript types - Add "Custom SQL" option to MetricsField with embedded SQLEditor and alias input - Update Python query engine to handle raw SQL metrics in json_to_sql and sql_to_json - Add 5 new test cases for raw SQL metric conversion and roundtrip Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Commit:3b6e571
Author:Rakhman Asmatullayev
Committer:GitHub

logs ingestion (#1181) * logs ingestion * ui: logs tab * check project usage in grpc endpoint * remove unused file * chore * use existing recursive function for calculating attributes size * move auth functions in auth mod * remove dropped_attributes_count field * revert file delete * revert fe changes * chore * chore

Commit:034698b
Author:Rakhman Asmatullayev

logs ingestion

Commit:6bdbf7e
Author:Rakhman Asmatullayev
Committer:GitHub

quickwit search (squash all) (#1041)

Commit:b1168fe
Author:Olzhas Nurpeisov
Committer:GitHub

feat: add open source sql conversion for open source (#1028) * feat: add open source sql conversion for open source * feat: migrate default charts * feat: restore lock file

Commit:30fde21
Author:Olzhas Nurpeisov
Committer:GitHub

feat: ui chart builder LAM-856 (#1027) * feat: ui chart builder wip * feat: WIP * feat: update protos, WIP * feat: update proto, update schema, form * feat: update schemas, update types, fix comments * feat: separate endpoints * feat: default order by, chart responsiveness, total field

Commit:6e332c8
Author:Dinmukhamed Mailibay
Committer:GitHub

query engine for self-hosted (#878) * query engine for self-hosted * fix ellipsis, add trace tags * fix docker compose

Commit:a254f94
Author:Din
Committer:Din

query engine for self-hosted

Commit:64cc41a
Author:Din
Committer:Din

query engine for self-hosted

Commit:cf20fe0
Author:Din

query engine for self-hosted

Commit:77ee0d4
Author:Dinmukhamed Mailibay
Committer:GitHub

remove python agent manager (#807) * remove python agent manager * remove mentions from contributing.md

The documentation is generated from this commit.

Commit:3f24282
Author:Dinmukhamed Mailibay
Committer:GitHub

update API to return response with vec (#785) * update API to return response with vec * propagate SQL error to user * try format query * remove query string from error message * better find query start * wrap error message to json * remove debug console log * small formatting fixes; raise limit to 512MB * return status 400 on CH bad response * safety: santize both 400 and 500

Commit:a36125d
Author:Din

propagate SQL error to user

Commit:a586cdc
Author:Olzhas Nurpeisov
Committer:GitHub

feat: add query engine grpc (#771)

Commit:99fc85a
Author:Olzhas Nurpeisov

feat: update sql query

Commit:a2da487
Author:Olzhas Nurpeisov

feat: add query engine grpc

Commit:7edea77
Author:Dinmukhamed Mailibay
Committer:GitHub

remove unused machine manager (#705)

Commit:39d96af
Author:Din

remove machine manager proto as well

Commit:5675e56
Author:Din

pass disable give control and user agent params

Commit:706718c
Author:Dinmukhamed Mailibay
Committer:GitHub

remove mentions of pipelines (#525)

Commit:6258c12
Author:Dinmukhamed Mailibay
Committer:GitHub

remove any mentions of semantic search and python executor (#524) * remove any mentions of semantic search and python executor * lint fix

Commit:015c659
Author:Dinmukhamed Mailibay
Committer:GitHub

add openai and gemini providers (#512)

Commit:ea2c7de
Author:Dinmukhamed Mailibay
Committer:GitHub

error chunk, agent configs, update frontend deps (#507) * error chunk, agent configs, update frontend deps * Update app-server/src/agent_manager/worker.rs Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * fix frontend build (downgrade novnc) * update pnpm lock * add start_url to agent request and rebase migrations --------- Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

Commit:244b495
Author:Din
Committer:Din

error chunk, agent configs, update frontend deps

Commit:98a0c0f
Author:Din

wip: add storage state

Commit:33bd76c
Author:Dinmukhamed Mailibay
Committer:GitHub

Feat/agent manager - screenshots (#471) * squash agent-manager migrations (#462) * Merge pull request #470 from lmnr-ai/screenshots Screenshots

Commit:65c5db8
Author:Dinmukhamed Mailibay
Committer:GitHub

Merge pull request #470 from lmnr-ai/screenshots Screenshots

Commit:a35eba1
Author:Dinmukhamed Mailibay
Committer:GitHub

Python agent manager (#461) * docker-compose. TODO: test after releasing changes * build agent-manager for container registry * add info in README

Commit:97f1662
Author:skull8888888
Committer:GitHub

control (#457)

Commit:d5fc901
Author:Dinmukhamed Mailibay
Committer:GitHub

add steps limits (#455) * control * add cookies, write timestamp, skip serializing state * write action_result to db on assistant messages * minor: changed actionResult key to camelCase * fix to stream cancelling when leaving page * trace_id and session_id * separate table for agent_chats * cancel agent session * trace cancel session * fixes to cancel * fix * add steps limits * add step count, fix frontent build * updates to trace_id proto * user id and stop session --------- Co-authored-by: Robert Kim <skull8888888@gmail.com>

Commit:b2c139d
Author:Dinmukhamed Mailibay
Committer:GitHub

Feat/agent manager (#448)

Commit:b2c42c7
Author:Robert Kim

refactor

Commit:049f87a
Author:Din

cookies and cdp_url

Commit:480aea2
Author:Dinmukhamed Mailibay
Committer:GitHub

Agent manager (#436) * wip: agent-manager call * change to mpsc (single-consumer mode) and fix stream * add project id + further fixes * move channel, remove message-history * add retry on sending chunk to channel * add message id to stream * close stream on error, fix empty channel, update state management * allow passing old agent state in API as well

Commit:23b1d83
Author:Din

close stream on error, fix empty channel, update state management

Commit:6ce24a7
Author:Din

move channel, remove message-history

Commit:77b72ef
Author:Din

wip: still figuring out rabbit

Commit:33e25cf
Author:Din
Committer:Din

wip: agent-manager call

Commit:c138f51
Author:Dinmukhamed Mailibay
Committer:GitHub

Search (#375) * tmp * update clickhouse init sql * wip: trying search * update indices and implement frontend search * remove bm25 and sparse embeddings * add default limit on search --------- Co-authored-by: Robert Kim <skull8888888@gmail.com>

Commit:2ac996e
Author:Dinmukhamed Mailibay
Committer:GitHub

store spans in qdrant + search (#321) * wip: store spans in qdrant * lint, fix build

Commit:c17ca7c
Author:Dinmukhamed Mailibay
Committer:GitHub

store only metadata in qdrant (#316) * wip: store only metadata in qdrant * further fixes * add filter by metadata to api request

Commit:44e69e3
Author:skull8888888
Committer:GitHub

Machine (#292) new dockerfile + machine api

Commit:9cce384
Author:Robert Kim

added sandbox api

Commit:52a8964
Author:Robert Kim

tmp

Commit:00fc811
Author:Robert Kim

v0 of jupyter sandbox

Commit:b10be47
Author:skull8888888
Committer:GitHub

Sync changes (#53) synced changes --------- Co-authored-by: Din <dinmukhamed.mailibay@gmail.com>

Commit:d9cc64b
Author:Din
Committer:Din

events dashboard, grpc ingestor, next v14.2

Commit:1c79f2a
Author:Temirlan Myrzakhmetov
Committer:GitHub

Single user, clickhouse, docker compose (#4) * prepare front-end for single placeholder user * bring-in some changes, add rabitmq, prepare sql and compose * Remove unused grpc files * Clickhouse for docker compose * frontend changes * bring-in backend updates * bring README from other branch + some fixes to it * minor fixes in readme, newest changes for app-server, clickhouse initializer script --------- Co-authored-by: Din <dinmukhamed.mailibay@gmail.com> Co-authored-by: Robert Kim <skull8888888@gmail.com>

Commit:ac24e94
Author:Din
Committer:Din

initial commit