dashboard setup - #1
Conversation
Format Python code with psf/black push
…ions ci/cd: added github actions for agenta-web
…r `$ref=#/components/schemas/agenta_backend__models__api__evaluation_model__LMProvidersEnum-Input__1` see fix [#1](https://github.com/Agenta-AI/agenta_cloud/commit/3770adabaa1d0dd415db5ec18e4630e4f2dc1bcd)
- Add shouldIgnoreRowClick guard to AppTable row click handler - Add shouldIgnoreRowClick guard to VariantsTable row click handler - Fixes issue where clicking checkboxes or dropdown menus triggers row navigation - Affects app management page and all variant table contexts (overview, deployment, evaluation) Builds on shared utility from PR Agenta-AI#1
- Add shouldIgnoreRowClick guard to AppTable row click handler - Add shouldIgnoreRowClick guard to VariantsTable row click handler - Fixes issue where clicking checkboxes or dropdown menus triggers row navigation - Affects app management page and all variant table contexts (overview, deployment, evaluation) Builds on shared utility from PR Agenta-AI#1
- Add shouldIgnoreRowClick guard to AppTable row click handler - Add shouldIgnoreRowClick guard to VariantsTable row click handler - Fixes issue where clicking checkboxes or dropdown menus triggers row navigation - Affects app management page and all variant table contexts (overview, deployment, evaluation) Builds on shared utility from PR Agenta-AI#1
…ayground-entities-package-updates [Frontend] App playground local mode #1 - entities package update
JP shipped the TS Fern client with a default generators.yml ("0 seconds
configuring Fern, maybe we need to re-generate"). Adds a config: block
that addresses the bulk of the PoC's documented build/runtime issues at
the source instead of via per-app workarounds.
clients/scripts/generate.sh
- omitFernHeaders: true — drops X-Fern-* headers the
Agenta API CORS allowlist doesn't accept (PoC finding #5)
- includeCredentialsOnCrossOriginRequests: true — withCredentials
baked into every request so cookie-session auth works without a
custom fetch wrapper (was finding in convenience layer)
- fetchSupport: native, streamType: web, formDataSupport: Node18,
fileResponseType: binary-response — prefer browser/web standards
- retainOriginalCasing: true — keep wire snake_case (matches
backend, OpenAPI spec, v2 entities Zod schemas; camelCase conversion
would break ~all existing consumer code)
- defaultTimeoutInSeconds: 30, maxRetries: 3 — explicit network
defaults aligned with v2 stage-0 client
- packageJson.browser: { fs/stream/buffer: false } + devDependencies:
@types/node — bake the browser-stub and node types into the
generated package.json (PoC findings #1 and #2)
clients/typescript/package.json (bootstrap heredoc): mirror the same
browser field + @types/node devDep so the static bootstrap matches.
generate.sh adds fix_typescript_admin_duplicates: a Python post-gen
patch that renames the second `createAccounts` (and its private __
partner) to `createAccountsAlt`. Two OpenAPI operations resolve to the
same TS function name — backend should disambiguate via explicit
operation_id. Admin endpoints aren't in v0 scope so the rename is safe.
Serde stays OFF: noSerdeLayer: false + allowExtraFields exposed ~200
codegen errors in fern-typescript-sdk@3.63.7 (broken
Record<string, T | null> handling, recursive type aliases for
FullJson*/LabelJson*, plus the duplicate methods). Documented in
generate.sh inline. The convenience layer's Zod boundary continues to
handle Pydantic extra="allow" at the entity level instead.
web/packages/agenta-sdk/src/index.ts: slim the fetch wrapper now that
omitFernHeaders + withCredentials are upstream. The wrapper is only
non-undefined when no apiKey was supplied — strips the empty
Authorization header HeaderAuthProvider sets in the cookie-auth case.
Verified: pnpm install clean; @agenta/sdk + @agenta/entities typecheck
+ lint pass; @agenta/client builds standalone (tsc with no errors);
next dev --turbopack on web/ee returns HTTP 200 on /w (was 500 before
the CORS fix) with no Module-not-found errors; next build on web/oss
completes successfully.
After Arda's note that tracing works on main but not on our branch (suspected interaction between PR #4469 and our merge), did a full static-analysis pass on the FE tracing pipeline. Findings: * All tracing-related FE files are BYTE-IDENTICAL to main — `runnableSetup.ts` (references builder), the two tracing API endpoint files, `executionItems.ts` references-passing block, `store.ts` sourceRef setter. * All commits from PR #4491 (`fix/broken-tracing-and-workflow-events`, the fix JP shipped after PR #4469 broke tracing) are reachable from branch HEAD — `b1b5b899df`, `83495a340a`, `601c9de468`, `69379a9f04`, `301f74f65f`, `92be0a87e2`. * Our branch's actual diff vs main does NOT touch the trace pipeline, references building, sourceRef construction, or tracing endpoints. The diff is mustache token plugin, playground inputs body, visibility rule, template format picker, schema-aware seeding, view-type ordering, chat single- testcase gate, native-vs-stringified input transport. Recorded three plausible hypotheses in the inventory: 1. Premise re-check — "main works" may need re-verification with the same repro Mahmoud used. 2. Indirect effect from native-input transport — the only semantically meaningful FE change that touches the request body. Backend trace-save might choke on nested-object inputs even though trace_id was already returned. 3. Environmental — staging state, build cache, env var. Not code. Recommended next steps documented in inventory: re-verify main → capture wire-format diff → hand off to JP if backend-side.
…rk locally
Confirmed via:
* Local HEAD == origin HEAD (`396ecd5eda`).
* `origin/main` (`d7c60c14e6`, frozen since 2026-06-01 10:21Z, i.e.
6 minutes BEFORE Mahmoud's tracing report) is an ancestor of our
HEAD.
* `origin/feat/add-mustache-rendering` (`a12751604a`, Arda's main-
merge at 15:08Z) is an ancestor of our HEAD via merge
`8dd4da1870`.
* Static analysis earlier (commit `396ecd5eda`) confirmed all FE
tracing files (`runnableSetup.ts`, `tracing/api/index.ts`,
`trace/api/api.ts`, executionItems `payloadRefs` block) are
byte-identical to main.
* Arda re-tested locally on the synced branch and traces work.
Net read: Mahmoud's #1 was a transient state at QA time, almost
certainly the staging deploy catching FE post-#4469 / backend
pre-#4491 (or the inverse) before JP's tracing fix had fully
propagated. The code on our branch IS the post-fix state; staging
behaves like local once redeployed.
All nine inventory items now marked fixed/resolved.
After Arda's note that tracing works on main but not on our branch (suspected interaction between PR #4469 and our merge), did a full static-analysis pass on the FE tracing pipeline. Findings: * All tracing-related FE files are BYTE-IDENTICAL to main — `runnableSetup.ts` (references builder), the two tracing API endpoint files, `executionItems.ts` references-passing block, `store.ts` sourceRef setter. * All commits from PR #4491 (`fix/broken-tracing-and-workflow-events`, the fix JP shipped after PR #4469 broke tracing) are reachable from branch HEAD — `b1b5b899df`, `83495a340a`, `601c9de468`, `69379a9f04`, `301f74f65f`, `92be0a87e2`. * Our branch's actual diff vs main does NOT touch the trace pipeline, references building, sourceRef construction, or tracing endpoints. The diff is mustache token plugin, playground inputs body, visibility rule, template format picker, schema-aware seeding, view-type ordering, chat single- testcase gate, native-vs-stringified input transport. Recorded three plausible hypotheses in the inventory: 1. Premise re-check — "main works" may need re-verification with the same repro Mahmoud used. 2. Indirect effect from native-input transport — the only semantically meaningful FE change that touches the request body. Backend trace-save might choke on nested-object inputs even though trace_id was already returned. 3. Environmental — staging state, build cache, env var. Not code. Recommended next steps documented in inventory: re-verify main → capture wire-format diff → hand off to JP if backend-side.
…rk locally
Confirmed via:
* Local HEAD == origin HEAD (`396ecd5eda`).
* `origin/main` (`d7c60c14e6`, frozen since 2026-06-01 10:21Z, i.e.
6 minutes BEFORE Mahmoud's tracing report) is an ancestor of our
HEAD.
* `origin/feat/add-mustache-rendering` (`a12751604a`, Arda's main-
merge at 15:08Z) is an ancestor of our HEAD via merge
`8dd4da1870`.
* Static analysis earlier (commit `396ecd5eda`) confirmed all FE
tracing files (`runnableSetup.ts`, `tracing/api/index.ts`,
`trace/api/api.ts`, executionItems `payloadRefs` block) are
byte-identical to main.
* Arda re-tested locally on the synced branch and traces work.
Net read: Mahmoud's #1 was a transient state at QA time, almost
certainly the staging deploy catching FE post-#4469 / backend
pre-#4491 (or the inverse) before JP's tracing fix had fully
propagated. The code on our branch IS the post-fix state; staging
behaves like local once redeployed.
All nine inventory items now marked fixed/resolved.
…ub-block Two UX fixes in the agent config panel: - #1 Harness/model coherence: under the Model field, show a muted hint describing the harness's model convention (alias vs provider/id) and its providers, and warn when a configured provider isn't one the harness can reach. Non-destructive guidance (the Provider select is already gated); full model- list filtering is a follow-up needing provider-name normalisation against the model schema. - #2 Connection grouping: render Provider/mode/name as an inset bordered card with a muted CONNECTION sub-header, so the credential fields read as a sub-section rather than peers of Harness/Model.
…name refactor/agent-harness-rename renames the harness values pi→pi_core and agenta→pi_agenta (claude unchanged). Add pi_core/pi_agenta entries to the static capability map (both share Pi's exact slice: the eight vault providers, direct deployment, provider/id naming) while keeping pi/agenta as transitional aliases so the panel resolves against either backend during the rollout. The harness helpers and the #1 model-coherence hint key off these, so they now work for the renamed harnesses. Once feat/agent-model-picker lands the /inspect-fed map, the static fallback + aliases retire. Unit test covers the new names mirror the Pi set.
Reconcile the upstream agent work with our /invoke-absorbs-/messages direction. Ours wins on the contract: drop /messages, nest messages under data.inputs, use flags.stream. Keep upstream's batch/stream channel toggle (agentChannelModeAtom), pointed at /invoke and driving the Accept header (negotiation #1); x-ag-messages-format declares the message format (negotiation #2); history stays optional/default (#3). - WorkflowRequestData drops the messages and stream fields; reads move to data.inputs.messages and flags.stream. Alias kept. - is_agent inferred from the URI key at workflow creation; route gate removed. - Env vars normalized to our convention: AGENTA_AGENT_SKILLS_LOADED, DAYTONA_AUTOSTOP (code, helm, schema, docs, env examples). - Stale /messages comments in merged-in files updated to /invoke. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ashrafchowdury
left a comment
There was a problem hiding this comment.
- What looks good: Clean multi-stage Dockerfile with a non-root user, TypeScript strict mode enabled, Tailwind CSS properly wired, and the docker-compose service integration is well-structured overall.
- Risky changes: (1)
npm install --productionin the Dockerfiledepsstage skips devDependencies (TypeScript, ESLint, etc.) thatnpm run buildrequires — this will break the production Docker build. (2) The docker-compose volume mount./dashboard:/appshadows the container's built-innode_modules, causing the dev server to fail unlessnode_modulesis separately volume-excluded. (3) Placeholder API route with hardcoded data left in. - Missing tests: No test files or test script present anywhere in this PR. The
package.jsonhas no"test"script, and the new API route has no coverage. - Overall verdict: COMMENT — no critical security issues, but the Dockerfile production flag and volume-mount conflict are real bugs that will surface immediately. Please address before merging.
| WORKDIR /app | ||
|
|
||
| COPY package.json package-lock.json ./ | ||
| RUN npm install --production |
There was a problem hiding this comment.
npm install --production omits devDependencies (TypeScript, ESLint, @types/*), but the builder stage copies these node_modules and then runs npm run build, which requires them. This will fail at build time.
Fix: use npm ci (or plain npm install) in the deps stage so all dependencies — including dev ones needed for compilation — are available to the builder:
RUN npm ci| volumes: | ||
| - ./dashboard:/app | ||
| command: npm run dev | ||
| ports: |
There was a problem hiding this comment.
Mounting ./dashboard:/app will shadow the node_modules directory that was installed inside the image. The dev server will fail with Cannot find module 'next'.
Add an anonymous volume to preserve the container's node_modules:
volumes:
- ./dashboard:/app
- /app/node_modules| req: NextApiRequest, | ||
| res: NextApiResponse<Data> | ||
| ) { | ||
| res.status(200).json({ name: 'John Doe' }) |
There was a problem hiding this comment.
This is the default create-next-app placeholder route returning { name: 'John Doe' }. It should be removed before merging — it serves no purpose in a real dashboard and will confuse anyone hitting /api/hello in production.
The Agenta-AI#5190 follow-up: the elicitation form now has a real default field (shipped in Agenta-AI#5177), so the playbook layer retires its two workarounds — "put the recommended value in the field description" and "the FIRST enum option signals the default". - All 28 template playbooks migrated: proposed values become field defaults (one-click accept); researchable enums set "figure it out" AS the default and lean on the built-in Other… escape hatch; fields that already implied multiplicity use the multi-select array shape. Every body stays within its 1-2 KB budget. - write-template-playbooks skill: platform fact Agenta-AI#1 flipped (defaults exist — use them; type-matched, empty stripped, dates ignore them), skeleton + checklist + worked example updated. - playbook-spec: "The request_input reality (no defaults)" replaced with the shipped dialect (defaults, multi-select, oneOf choice cards); open-questions Agenta-AI#2 closed as shipped-and-adopted. - build-an-agent skill loop step 1 now tells the builder to propose defaults and use the richer shapes at the decisive prompt position.
No description provided.