Skip to content
Draft
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
b5e0c0c
[OPIK-4987] [FE][BE] feat: integrate Ollie Console sidebar into Opik …
Nimrod007 Mar 16, 2026
aecb8e9
refactor: move OllieSidebar to comet plugin system
Nimrod007 Mar 16, 2026
0405caf
fix: add fallback lazy-load for OllieSidebar in dev mode
Nimrod007 Mar 17, 2026
cc50b4f
update bridge contract, added events, refactor
awkoy Mar 17, 2026
744951e
[OPIK-4987] [FE] Wire bridge context to Ollie sidebar (#5723)
jverre Mar 18, 2026
5dfa620
feat: manifest-based CDN loading for Ollie sidebar
awkoy Mar 18, 2026
26ffb28
feat: wire live bridge context and navigation to Ollie sidebar
jverre Mar 19, 2026
cbf187d
fix: harden Ollie sidebar resilience and code quality
awkoy Mar 19, 2026
970b019
merge: resolve conflict in AssistantSidebar emit handler
awkoy Mar 19, 2026
936285c
Merge remote-tracking branch 'origin/main' into nimrodlahav/add-ollie…
awkoy Mar 19, 2026
1b6ead8
feat: enable assistant sidebar in dev and remove debug logs
jverre Mar 20, 2026
5d49549
fix: update feature-toggles-provider import path
jverre Mar 20, 2026
f549da1
feat: add local runner API endpoints and bridge pairing events
jverre Mar 20, 2026
d114a3f
feat: load Ollie assets from CDN and fix feature-toggles import
awkoy Mar 20, 2026
ead9ede
Update Helm documentation
CometActions Mar 20, 2026
98de59c
[OPIK-4949] [SDK] feat: add LocalRunnerTask for evaluation suite inte…
itamargolan Mar 18, 2026
0fc6cd1
test: add edge case tests and remove example script
itamargolan Mar 18, 2026
1728361
fix: address PR review feedback for LocalRunnerTask
itamargolan Mar 18, 2026
c0284ed
style: fix ruff format and add comment for id filtering
itamargolan Mar 18, 2026
e1ea353
fix: address second round of PR review feedback
itamargolan Mar 18, 2026
10cc42c
fix: use exact deadline check instead of preemptive timeout
itamargolan Mar 18, 2026
8266d3b
fix: use non-exhaustible time.monotonic mock to prevent flaky test on…
itamargolan Mar 19, 2026
4d52862
[OPIK-4942] [BE] Option E — Separate assertion_results table (#5716)
JetoPistola Mar 19, 2026
00b02df
[OPIK-5017] [BE] refactor: local runner architecture follow-up improv…
BorisTkachenko Mar 19, 2026
6d78b2f
[NA] [E2E] fix: update datasets page-objects for new UI labels (#5747)
NatZol Mar 19, 2026
956f1bb
[NA] [SDK] [DOCS] Update automatically OpenAPI spec and Fern code (#5…
CometActions Mar 20, 2026
ceb9af4
Revert "[OPIK-4690] [FE] Add user role update permission to Members t…
anastasiapyzhik Mar 20, 2026
342cc02
[NA] [BE] Update model prices file (#5757)
CometActions Mar 20, 2026
3444f14
[OPIK-4935] [BE] feat(api): add project_name scoping to experiment st…
thiagohora Mar 20, 2026
0e2ad6c
[OPIK-5102][FE]: blueprints ux improvements; (#5743)
aadereiko Mar 20, 2026
cbb6883
[OPIK-4449] [FE] Fix eval suite Assertions tab and Go to traces butto…
awkoy Mar 20, 2026
f7d36c9
[OPIK-5167] [BE] fix: remove user_role_update permission from Workspa…
LifeXplorer Mar 20, 2026
c8dc090
[OPIK-5152] [SDK] feat: promote search_threads to Opik client API (#5…
alexkuzmik Mar 20, 2026
b441c6c
Update versions to 1.10.45 and bump base version to 1.10.46
CometActions Mar 20, 2026
7b2bdc4
[OPIK-4865] [SDK] fix: support None values in AgentConfig blueprints …
petrotiurin Mar 20, 2026
2c2f3ef
[OPIK-5102]: fix go to traces button; (#5764)
aadereiko Mar 20, 2026
4eb0881
[NA] [CI] chore: add comment_mode: failures to test reporters (#5762)
petrotiurin Mar 20, 2026
98deb67
[OPIK-4938] [BE] Add project-scoped REST endpoints and integration te…
thiagohora Mar 20, 2026
c037e62
fix: address PR review - distributed trace headers, remove unused con…
itamargolan Mar 20, 2026
7bd7703
fix: remove unused import to pass ruff lint
itamargolan Mar 20, 2026
5141250
fix: change poll_interval_seconds default to 0.5s per review feedback
itamargolan Mar 20, 2026
a192952
fix: lint and CI failures - formatting, mypy, flaky test
itamargolan Mar 20, 2026
5ea992f
fix: use distributed trace headers directly without conversion
itamargolan Mar 20, 2026
e45976c
fix: address baz review - narrow exception catch, improve test names
itamargolan Mar 20, 2026
9ab5a8e
fix: use DistributedTraceHeadersDict return type to satisfy mypy
itamargolan Mar 20, 2026
612339d
fix: remove distributed trace headers from LocalRunnerTask
itamargolan Mar 20, 2026
d98e0a1
fix: remove trailing newline in test file
itamargolan Mar 20, 2026
055823e
fix: access task_output via test_case in e2e test
itamargolan Mar 20, 2026
c24449f
[NA] [SDK] [DOCS] Update automatically OpenAPI spec and Fern code (#5…
CometActions Mar 20, 2026
8a67537
[OPIK-5154] [BE] Add STRING_EXACT field type for case-sensitive ID fi…
YarivHashaiComet Mar 20, 2026
ccf963e
[OPIK-4938] [BE] Add X-Opik-Deprecation header for workspace-wide fal…
thiagohora Mar 20, 2026
dcede61
[OPIK-4966] [FE] feat: v2 router, page registration, and URL redirect…
andriidudar Mar 20, 2026
1aa0a9f
[OPIK-5176] [SDK] feat: require @track context when calling get_agent…
petrotiurin Mar 20, 2026
60aa93e
[OPIK-5177] [FE] fix: minor UI fixes and copy changes (#5768)
awkoy Mar 20, 2026
1b01701
[OPIK-5050] [BE] fix: trace threads closing job performance and query…
ldaugusto Mar 20, 2026
789b9fe
[OPIK-4714] [FE] Edit dataset permission (#5722)
anastasiapyzhik Mar 23, 2026
c8d9681
[NA] [BE] Update model prices file (#5779)
CometActions Mar 23, 2026
f60d913
build(deps-dev): bump com.diffplug.spotless:spotless-maven-plugin (#5…
dependabot[bot] Mar 23, 2026
07828e2
build(deps): bump org.jdbi:jdbi3-stringtemplate4 in /apps/opik-backen…
dependabot[bot] Mar 23, 2026
856ad74
[NA][DOCS] Add section for running online evals retrospectively to do…
LeoRoccoBreedt Mar 23, 2026
305acfb
[OPIK-4966] [FE] refactor: extract shared deps from v1 for v1/v2 coex…
andriidudar Mar 23, 2026
aad5077
[OPIK-4966] [FE] feat: clone v1 pages, layout, and pages-shared into …
andriidudar Mar 23, 2026
c1c59da
Update versions to 1.10.46 and bump base version to 1.10.47
CometActions Mar 23, 2026
665dcb4
[OPIK-4938] [BE] Add project_name support to dataset, experiment and …
thiagohora Mar 23, 2026
bb4b00c
[OPIK-5019] [BE] feat: add LLM model registry service and API endpoin…
AndreiCautisanu Mar 23, 2026
f2b913c
[OPIK-4891] [BE] Add data retention policy enforcement (#5647)
ldaugusto Mar 23, 2026
83e99c8
[NA] [SDK] [DOCS] Update automatically OpenAPI spec and Fern code (#5…
CometActions Mar 23, 2026
f042fc0
[OPIK-4938] [BE] Minor test and code cleanup from PR review feedback …
thiagohora Mar 23, 2026
ea95893
[OPIK-5189] [FE] fix: render ChatPrompt messages in optimizer trial c…
itamargolan Mar 23, 2026
8ca0e4f
[NA] [SDK] [DOCS] Update automatically OpenAPI spec and Fern code (#5…
CometActions Mar 24, 2026
d81aa3c
[OPIK-5032] [FE] fix: eval suite experiment export with assertions an…
awkoy Mar 24, 2026
890d6eb
[OPIK-4964] [FE] feat: v2 sidebar navigation with project-scoped rout…
andriidudar Mar 24, 2026
295d3a3
[OPIK-4688] [INFRA] Auto-trigger FERN update on BE merge and notify #…
JetoPistola Mar 24, 2026
4b0cdba
[OPIK-4518] [BE] Restore stable dataset item IDs in versioned API (#5…
andrescrz Mar 24, 2026
f7a544a
[OPIK-5219] [BE] Fix pass_rate query reading from wrong table (always…
JetoPistola Mar 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions apps/opik-backend/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -792,6 +792,9 @@ serviceToggles:
# Default: false
# Description: Whether or not Agent Configuration feature is enabled
agentConfigurationEnabled: ${TOGGLE_AGENT_CONFIGURATION_ENABLED:-"false"}
# Default: false
# Description: Whether or not Assistant Sidebar is enabled
assistantSidebarEnabled: ${TOGGLE_ASSISTANT_SIDEBAR_ENABLED:-"false"}

# Local Runner configuration
localRunner:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,6 @@ public class ServiceTogglesConfig {
@NotNull boolean collaboratorsTabEnabled;
@JsonProperty
@NotNull boolean agentConfigurationEnabled;
@JsonProperty
@NotNull boolean assistantSidebarEnabled;
}
3 changes: 2 additions & 1 deletion apps/opik-frontend/.env.development
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
VITE_BASE_URL=/
VITE_BASE_API_URL=/api
VITE_BASE_OPIK_AI_URL=/opik-ai
VITE_BASE_OPIK_AI_URL=/opik-ai
VITE_ASSISTANT_SIDEBAR_URL=http://localhost:3333
44 changes: 44 additions & 0 deletions apps/opik-frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions apps/opik-frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
},
"scripts": {
"start": "vite",
"dev:assistant": "VITE_ASSISTANT_SIDEBAR_ENABLED=true vite",
"build": "tsc && vite build",
"serve": "vite preview",
"test": "vitest",
Expand Down
2 changes: 2 additions & 0 deletions apps/opik-frontend/src/api/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ export const PLAYGROUND_EVALUATION_REST_ENDPOINT =
"/v1/private/playground/evaluations/";
export const DASHBOARDS_REST_ENDPOINT = "/v1/private/dashboards/";
export const AGENT_CONFIGS_REST_ENDPOINT = "/v1/private/agent-configs/";
export const LOCAL_RUNNERS_REST_ENDPOINT = "/v1/private/local-runners/";

export const COMPARE_EXPERIMENTS_KEY = "compare-experiments";
export const SPANS_KEY = "spans";
Expand All @@ -59,6 +60,7 @@ export const TRACE_AI_ASSISTANT_KEY = "trace-analyzer-history";
export const DASHBOARDS_KEY = "dashboards";
export const DASHBOARD_KEY = "dashboard";
export const AGENT_CONFIGS_KEY = "agent-configs";
export const LOCAL_RUNNERS_KEY = "local-runners";

// stats for feedback
export const STATS_COMET_ENDPOINT = "https://stats.comet.com/notify/event/";
Expand Down
47 changes: 47 additions & 0 deletions apps/opik-frontend/src/api/local-runners/useLocalRunnerById.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { QueryFunctionContext, useQuery } from "@tanstack/react-query";
import api, {

Check failure on line 2 in apps/opik-frontend/src/api/local-runners/useLocalRunnerById.ts

View workflow job for this annotation

GitHub Actions / lint

Replace `⏎··LOCAL_RUNNERS_REST_ENDPOINT,⏎··LOCAL_RUNNERS_KEY,⏎` with `·LOCAL_RUNNERS_REST_ENDPOINT,·LOCAL_RUNNERS_KEY·`
LOCAL_RUNNERS_REST_ENDPOINT,
LOCAL_RUNNERS_KEY,
} from "@/api/api";

interface LocalRunner {
id: string;
name: string;
project_id: string;
status: "pairing" | "connected" | "disconnected";
connected_at: string | null;
agents: Array<{
name: string;
description: string;
}>;
}

type UseLocalRunnerByIdParams = {
runnerId: string;
};

const getLocalRunnerById = async (
{ signal }: QueryFunctionContext,
{ runnerId }: UseLocalRunnerByIdParams,
) => {
const { data } = await api.get<LocalRunner>(
LOCAL_RUNNERS_REST_ENDPOINT + runnerId,
{ signal },
);

return data;
};

export default function useLocalRunnerById(
params: UseLocalRunnerByIdParams,
options?: {
enabled?: boolean;
refetchInterval?: number | false;
},
) {
return useQuery({
queryKey: [LOCAL_RUNNERS_KEY, params],
queryFn: (context) => getLocalRunnerById(context, params),
...options,
});
Comment on lines +42 to +46
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

useLocalRunnerById repeats the useQuery-by-id pattern, should we extract a shared createUseResourceById({ endpoint, keyPrefix })?

Finding type: Code Dedup and Conventions | Severity: 🟢 Low


Want Baz to fix this for you? Activate Fixer

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { useMutation } from "@tanstack/react-query";
import api, { LOCAL_RUNNERS_REST_ENDPOINT } from "@/api/api";

interface LocalRunnerPairResponse {
pairing_code: string;
runner_id: string;
expires_in_seconds: number;
}

type UseLocalRunnerPairMutationParams = {
projectId: string;
};

const useLocalRunnerPairMutation = () => {
return useMutation({
mutationFn: async ({ projectId }: UseLocalRunnerPairMutationParams) => {
const { data } = await api.post<LocalRunnerPairResponse>(
`${LOCAL_RUNNERS_REST_ENDPOINT}pairs`,
{ project_id: projectId },
);

return data;
},
});
};

export default useLocalRunnerPairMutation;
21 changes: 20 additions & 1 deletion apps/opik-frontend/src/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -505,6 +505,22 @@
body {
@apply bg-background text-foreground comet-body;
}

/* Reset @layer base styles (preflight, border-border, body font/color)
at the microfrontend boundary. revert-layer rolls back only this layer,
so unlayered ollie.css still applies normally. */
.comet-assistant-sidebar-root {
font: revert-layer;
color: revert-layer;
letter-spacing: revert-layer;
line-height: revert-layer;
}

.comet-assistant-sidebar-root *,
.comet-assistant-sidebar-root *::before,
.comet-assistant-sidebar-root *::after {
all: revert-layer;
}
}

/* custom classes */
Expand Down Expand Up @@ -580,8 +596,11 @@
}

.comet-content-inset {
--comet-content-width: calc(100vw - var(--sidebar-width));
--comet-content-width: calc(
100vw - var(--sidebar-width) - var(--assistant-sidebar-width, 0px)
);
left: var(--sidebar-width);
right: var(--assistant-sidebar-width, 0px);
}

.comet-table-row-best td {
Expand Down
Loading
Loading