-
Notifications
You must be signed in to change notification settings - Fork 473
[Frontend] App playground local mode #2 - entity-ui package update #3606
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: frontend-feature/stateless-playground-entities-package-updates
Are you sure you want to change the base?
Conversation
- Add @agenta/entities, @agenta/playground, @agenta/shared, and @agenta/ui workspace dependencies - Enables OSS web to consume modular Agenta packages
- Add PlaygroundTest component wrapping @agenta/playground with OSS-specific providers - Inject EntityDrillInView, SharedGenerationResultUtils, LoadTestsetModal, CommitVariantChangesButton via PlaygroundUIProvider - Add OSSdrillInUIProvider and EntitySelectorProvider context wrappers - Create OSS page route at /playground-test - Create EE page route importing OSS implementation - Re-export all @agenta/playground components and types for convenience
- Remove local AppMessageContext implementation - Re-export AppMessageContext, message, modal, notification from @agenta/ui - Add deprecation comment directing new code to import from @agenta/ui - Maintains backward compatibility for existing OSS imports
- Accept tree prop as alternative to traceId for displaying metrics - Map StatusCodeEnum from @agenta/entities/trace to legacy StatusCode values - Extract metrics from inline tree nodes format (metrics.acc/unit structure) - Convert inline tree nodes to TraceSpanNode-like structure for readMetric compatibility - Use inline tree data when provided, otherwise fetch via traceEntityAtom - Disable trace drawer button for inline data (effectiveTraceId === "inline")
- Prevent font-weight changes on hover/active states to eliminate layout shift - Set max-width (280px) and min-width (180px) constraints on dropdown columns - Add text truncation with ellipsis for long item labels (max-width: 220px) - Hide loading spinner on parent items to reduce visual clutter - Remove unused danger dropdown menu item hover styles
…packages/agenta-playground-integration
… Selection, Molecule pattern, and shared package architecture - Add Loadable Bridge Pattern section with selectors/actions reference for testset/trace data sources - Add Runnable Bridge Pattern section documenting executable entity management (app revisions, evaluators) - Add Entity Selection System section covering EntityPicker and EntityCascader components with pre-built adapters - Rename Entity Controller Pattern to Molecule
- Add css-modules.d.ts with type declarations for *.module.css and *.css imports - Define module declarations mapping CSS class names to string values - Enables TypeScript support for CSS modules across all @Agenta workspace packages
- Add 'packages/*' glob pattern to pnpm-workspace.yaml - Enables monorepo support for @agenta/* workspace packages under web/packages/
…packages/agenta-playground-integration
… and remove unused dependencies - Configure Turbo tasks with proper dependency chains for build/dev/lint/types:check across all packages - Add workspace package transpilation to Next.js config to ensure proper module resolution - Remove unused dependencies: postcss-antd-fixes, blakejs, diff, highlight.js, react-syntax-highlighter - Define task-specific inputs/outputs and caching strategies for optimal build performance - Set up persistent
…nent injection - Create OSSdrillInUIProvider wrapper around DrillInUIProvider from @agenta/entities/ui - Inject SelectLLMProvider component for OSS-level model selection with vault/secrets integration - Add comprehensive JSDoc documentation explaining provider purpose and usage - Note that most UI components (Editor, ChatMessage, FieldHeader) are now imported directly from @agenta/ui in entities package
- Add initialTestcasesAtom to store pre-populated testcase data for save mode - Add initializeSaveModeAtom write-only atom to initialize modal in create mode with testcases and optional default name - Update resetModalStateAtom to clear initialTestcasesAtom on modal close - Add comprehensive JSDoc documentation for new atoms explaining save mode usage
…d atom - Import and re-export projectIdAtom from @agenta/shared in project selectors - Update setLocationAtom to sync projectId changes to setSharedProjectIdAtom - Remove local projectIdAtom definition in favor of shared atom from entity packages - Add comment explaining synchronization ensures entity packages can read current projectId
…packages/agenta-playground-integration
Add @scalar/openapi-parser for OpenAPI schema parsing and eslint-plugin-import for import linting. Update debug dependency to 4.4.3 across the lockfile.
Add @agenta/ui, @agenta/entities, and @agenta/playground package paths to Tailwind content configuration to ensure styles from these packages are properly processed.
…genta/ui - Initialize setUserAtoms in AppGlobalWrappers with workspaceMembersAtom and userAtom to enable user resolution features like UserAuthorLabel - Update CellRenderers to re-export components, utilities, constants and types from @agenta/ui for backward compatibility - Add documentation note encouraging new code to import directly from @agenta/ui
Add loadableId parameter to initializeSaveMode call in PlaygroundTest to match updated SaveModeConfig signature. Also add documentation note about appRevision entity using direct API query via @agenta/shared axios without requiring initialization.
…packages/agenta-playground-integration
refactor(oss): migrate CellRenderers to @agenta/ui package Remove CellRenderers components from oss/src/components as they have been migrated to the @agenta/ui package. Components removed include CellContentPopover, ChatMessagesCellContent, JsonCellContent, SmartCellContent, TextCellContent, UserAuthorLabel, and supporting utilities/constants. The index.ts now re-exports from @agenta/ui for backward compatibility. ```
…packages/agenta-playground-integration
…packages/agenta-playground-integration
- Enable @typescript-eslint/no-explicit-any as error in ESLint config - Enable noImplicitAny and strictNullChecks in TypeScript base config
…packages/agenta-playground-integration
…packages/agenta-playground-integration
…packages/agenta-playground-integration
…packages/agenta-playground-integration
…evision configs - Import selection configs from @agenta/entities packages - Call initializeSelectionSystem in Providers.tsx before component rendering - Register testset and appRevision entity selection configurations
- OSS: add @agenta/playground-ui workspace dependency - EE: add @agenta/* workspace dependencies for shared packages
- Document @agenta/shared subpath exports (api, state, utils, hooks, schemas, types) - Document @agenta/ui subpath exports (table, editor, chat-message, app-message, etc.) - Update @agenta/entities subpath examples with consistent formatting
- eslint: add rule to prevent re-exporting from @agenta/* packages in app layer - tsconfig.base.json: switch moduleResolution from 'node' to 'bundler'
…packages/agenta-playground-ui-initial
…ta-packages/agenta-playground-integration
Add reusable utilities for revision/version handling: - revisionLabel.ts: Formatting utilities for version labels, local draft detection - revisionUtils.ts: URI parsing, agConfig extraction, list item types and transforms These utilities are shared across appRevision and ossAppRevision entities.
Add complete OSS app revision entity management with:
- Zod schemas for validation (core.ts)
- Data transformers for legacy API (api/api.ts)
- Jotai state management with molecule pattern (state/molecule.ts)
- Schema fetching with two-layer resolution (schemaAtoms.ts, serviceSchemaAtoms.ts)
- Runnable capability support (runnableSetup.ts)
- Local draft management (localDrafts.ts)
- Commit abstraction for legacy API (commit.ts)
- Entity relations for app → variant → revision hierarchy (relations.ts)
- Factory functions for creating local drafts (core/factory.ts)
This module uses the legacy backend API (AppVariantRevision model):
- GET /variants/{variant_id}/revisions/{revision_number}/
- POST /variants/revisions/query/
- Add ossAppRevision subpath export to package.json - Export ossAppRevision controller from main index.ts - Export shared revision utilities from shared/index.ts
…n integration - appRevision/api: Add shared type exports and transformers - appRevision/relations: Update entity relation types - runnable/bridge: Add ossAppRevision runnable type support - runnable/types: Add ossAppRevision-related type definitions - shared/molecule/types: Update molecule type definitions - testset/core/schema: Minor schema updates
Add modal adapters for OSS app revision (variant) entities: - ossAppRevisionAdapters.ts: Commit/delete modal support for variants - Uses ossAppRevisionMolecule for data and commit actions - Provides diff data and version info for commit modal
Add relation-based selection adapter for OSS app revisions: - ossAppRevisionRelationAdapter.ts: 2-level and 3-level hierarchy support - Supports App → Variant → Revision (3-level) and Variant → Revision (2-level) - Uses entity relations from @agenta/entities/ossAppRevision - Configurable factory for playground integration
Add tree-select selection mode for 2-level hierarchies: - useTreeSelectMode.ts: Hook for Ant Design TreeSelect integration - Provides data and handlers for expandable parent groups - Supports custom actions, filtering, and search - Used by TreeSelectVariant (Playground SelectVariant style)
Add TreeSelect-based entity picker variant: - TreeSelectVariant.tsx: Main component with dropdown and popup - TreeSelectPopupContent.tsx: Popup content with search and tree - TreeSelectVariant.module.css: Styling for tree select - Used for Playground SelectVariant style selection
Update UnifiedEntityPicker to support tree-select variant: - Add 'tree-select' variant option to UnifiedEntityPicker - Export TreeSelectVariant and related types - Update EntitySelectorModal with tree-select support
Update package exports: - Export ossAppRevision selection adapter and types - Export TreeSelectVariant and useTreeSelectMode - Add ossAppRevision modal adapter export
…updates' into frontend-feature/stateless-playground-entity-ui-package-updates
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| // If appId is provided, use entity-level atoms directly (single source of truth) | ||
| if (appId && !variantsListAtom) { | ||
| const variantsFamily = includeLocalDrafts | ||
| ? variantsListWithDraftsAtomFamily | ||
| : variantsListQueryStateAtomFamily | ||
| resolvedVariantsListAtom = variantsFamily(appId) as Atom<ListQueryState<unknown>> | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔴 appIdAtom option is declared but never used to resolve app ID
The createOssAppRevisionAdapter function accepts an appIdAtom option that is documented as providing a dynamic app ID that "Takes precedence over static appId if both are provided", but the implementation never actually reads from this atom.
Click to expand
The Problem
At ossAppRevisionRelationAdapter.ts:338-344, the code only checks for static appId:
// If appId is provided, use entity-level atoms directly (single source of truth)
if (appId && !variantsListAtom) {
const variantsFamily = includeLocalDrafts
? variantsListWithDraftsAtomFamily
: variantsListQueryStateAtomFamily
resolvedVariantsListAtom = variantsFamily(appId) as Atom<ListQueryState<unknown>>
}The appIdAtom is destructured (line 323) and used in a condition for revisions (line 352), but it's never used to resolve the variants list atom.
Impact
- If a user passes only
appIdAtom(withoutappId), the adapter will silently fall back to 3-level mode instead of the expected 2-level mode - The documented behavior ("Takes precedence over static appId") is not implemented
- This is a functional bug where the feature doesn't work as documented
Expected Behavior
The code should read from appIdAtom to get the dynamic app ID when provided, and use that to resolve the variants list atom for 2-level mode.
Recommendation: Either implement the appIdAtom functionality by reading from the atom to get the dynamic app ID, or remove the appIdAtom option from the interface and documentation if it's not intended to be supported. Note that reading from an atom outside of React components/hooks requires using store.get() pattern, which may require architectural changes.
Was this helpful? React with 👍 or 👎 to provide feedback.
…updates' into frontend-feature/stateless-playground-entity-ui-package-updates
…updates' into frontend-feature/stateless-playground-entity-ui-package-updates
… fdir@6.4.6 - Upgrade lodash from ^4.17.21 to >=4.17.23 across multiple packages - Upgrade Next.js from 15.5.9 to 15.5.10 - Remove unused fdir@6.4.6 dependency and snapshots
…updates' into frontend-feature/stateless-playground-entity-ui-package-updates
…yAppRevision naming - Delete ossAppRevisionAdapters.ts modal adapter file - Delete ossAppRevisionRelationAdapter.ts selection adapter file - Aligns with legacyAppRevision naming convention established in entities package
- Add legacyAppRevisionAdapters.ts for commit/delete modal support - Add legacyAppRevisionRelationAdapter.ts for 2/3-level entity selection - Implements relation-based adapter pattern using legacyAppRevisionMolecule - Supports both 3-level (App → Variant → Revision) and 2-level (Variant → Revision) selection modes - Commit flow uses molecule's commit action with polling workaround for legacy API - Includes diff display
Uh oh!
There was an error while loading. Please reload this page.