Skip to content

Commit 5d31d10

Browse files
authored
Increment arthur-engine version to 2.1.386
2 parents eff619d + f7e013a commit 5d31d10

File tree

274 files changed

+15698
-3396
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

274 files changed

+15698
-3396
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: Claude Code Review
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, ready_for_review, reopened]
6+
# Optional: Only run on specific file changes
7+
# paths:
8+
# - "src/**/*.ts"
9+
# - "src/**/*.tsx"
10+
# - "src/**/*.js"
11+
# - "src/**/*.jsx"
12+
13+
jobs:
14+
claude-review:
15+
# Optional: Filter by PR author
16+
# if: |
17+
# github.event.pull_request.user.login == 'external-contributor' ||
18+
# github.event.pull_request.user.login == 'new-developer' ||
19+
# github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
20+
21+
runs-on: ubuntu-latest
22+
permissions:
23+
contents: read
24+
pull-requests: read
25+
issues: read
26+
id-token: write
27+
28+
steps:
29+
- name: Checkout repository
30+
uses: actions/checkout@v4
31+
with:
32+
fetch-depth: 1
33+
34+
- name: Run Claude Code Review
35+
id: claude-review
36+
uses: anthropics/claude-code-action@v1
37+
with:
38+
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
39+
plugin_marketplaces: 'https://github.com/anthropics/claude-code.git'
40+
plugins: 'code-review@claude-code-plugins'
41+
prompt: '/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}'
42+
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
43+
# or https://code.claude.com/docs/en/cli-reference for available options
44+

.github/workflows/claude.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: Claude Code
2+
3+
on:
4+
issue_comment:
5+
types: [created]
6+
pull_request_review_comment:
7+
types: [created]
8+
issues:
9+
types: [opened, assigned]
10+
pull_request_review:
11+
types: [submitted]
12+
13+
jobs:
14+
claude:
15+
if: |
16+
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
17+
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
18+
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
19+
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
20+
runs-on: ubuntu-latest
21+
permissions:
22+
contents: read
23+
pull-requests: read
24+
issues: read
25+
id-token: write
26+
actions: read # Required for Claude to read CI results on PRs
27+
steps:
28+
- name: Checkout repository
29+
uses: actions/checkout@v4
30+
with:
31+
fetch-depth: 1
32+
33+
- name: Run Claude Code
34+
id: claude
35+
uses: anthropics/claude-code-action@v1
36+
with:
37+
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
38+
39+
# This is an optional setting that allows Claude to read CI results on PRs
40+
additional_permissions: |
41+
actions: read
42+
43+
# Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
44+
# prompt: 'Update the pull request description to include a summary of changes.'
45+
46+
# Optional: Add claude_args to customize behavior and configuration
47+
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
48+
# or https://code.claude.com/docs/en/cli-reference for available options
49+
# claude_args: '--allowed-tools Bash(gh pr:*)'
50+

CLAUDE.md

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ Arthur Engine is a Python-based AI/ML monitoring and governance platform with th
2424
**Frontend:**
2525

2626
- React 19, TypeScript, Vite
27-
- Tailwind CSS, TanStack Query/Table
27+
- **MUI (Material UI) v7** - Primary component library (`@mui/material`, `@mui/icons-material`, `@mui/x-date-pickers`)
28+
- Emotion (`@emotion/react`, `@emotion/styled`) - Styling engine for MUI
29+
- Tailwind CSS - Utility classes for layout supplementing MUI
30+
- TanStack Query/Table, Material React Table
2831
- Zustand for state management
2932

3033
**Infrastructure:**
@@ -227,6 +230,61 @@ The scorer system in [src/scorer/checks/](src/scorer/checks/) implements:
227230
- **Regex Checks**: Pattern-based validation
228231
- Custom rules support via extensible plugin system
229232

233+
## Frontend UI Guidelines (MANDATORY)
234+
235+
### Always Use MUI Components
236+
237+
**All frontend UI work MUST use Material UI (MUI) components.** Do NOT use plain HTML elements or custom-styled replacements when an MUI component exists. This applies to every new component, feature, and bugfix.
238+
239+
**Required:** Use MUI components from `@mui/material` for all UI elements:
240+
241+
| Instead of... | Always use... |
242+
| ------------------------ | --------------------------------------------------- |
243+
| `<button>` | `<Button>` from `@mui/material` |
244+
| `<input>`, `<textarea>` | `<TextField>` from `@mui/material` |
245+
| `<select>` | `<Select>` or `<Autocomplete>` from `@mui/material` |
246+
| `<table>` | `<Table>` components or Material React Table |
247+
| `<div>` for layout | `<Box>`, `<Stack>`, `<Paper>`, `<Card>` |
248+
| `<p>`, `<h1>`-`<h6>` | `<Typography>` with appropriate `variant` |
249+
| `<a>` | `<Link>` from `@mui/material` |
250+
| `<ul>/<li>` for menus | `<List>`, `<ListItem>`, `<Menu>`, `<MenuItem>` |
251+
| `<dialog>`, custom modal | `<Dialog>` with `DialogTitle`, `DialogContent`, `DialogActions` |
252+
| Custom alert/banner | `<Alert>` from `@mui/material` |
253+
| Custom tooltip | `<Tooltip>` from `@mui/material` |
254+
| Custom chip/badge | `<Chip>`, `<Badge>` from `@mui/material` |
255+
| Custom icon | Icons from `@mui/icons-material` |
256+
| Custom date picker | Components from `@mui/x-date-pickers` |
257+
258+
### Styling Rules
259+
260+
1. **Use the MUI `sx` prop** as the primary styling method for MUI components. This is the established pattern across the codebase.
261+
2. **Use MUI theme color tokens** — never use raw hex/rgb colors. Use semantic tokens:
262+
- `primary.main`, `primary.light`, `primary.dark`, `primary.50`
263+
- `secondary.main`, `secondary.light`, `secondary.dark`
264+
- `error.main`, `error.50`, `success.main`, `success.light`
265+
- `warning.main`, `info.main`
266+
- `text.primary`, `text.secondary`, `text.disabled`
267+
- `divider`, `action.hover`
268+
3. **Tailwind CSS is only for supplementary layout utilities** (e.g., `min-h-screen`, `flex`, spacing). Never use Tailwind for colors, typography, or component styling that MUI handles.
269+
4. **Use `styled()` from `@mui/material/styles`** only when creating reusable custom-styled components that need to extend MUI components.
270+
271+
### Component Patterns
272+
273+
- **Buttons**: Use `variant="contained"` for primary actions, `variant="outlined"` for secondary, `variant="text"` for tertiary.
274+
- **Typography**: Use semantic variants — `h5`/`h6` for headings, `subtitle1`/`body1`/`body2` for body text, `caption` for helper text.
275+
- **Text Fields**: Use `variant="filled"` as the default text field style.
276+
- **Layout**: Use `<Stack>` for flex layouts, `<Box>` for general containers, `<Card>`/`<Paper>` for elevated surfaces.
277+
- **Icons**: Always source from `@mui/icons-material`. Size with `sx={{ fontSize: N }}` and color with theme tokens.
278+
- **Feedback**: Use `<Alert>` for inline messages, notistack's `enqueueSnackbar` for toast notifications, `<Tooltip>` for hover hints.
279+
280+
### What NOT to Do
281+
282+
- **Do NOT create custom-styled `<div>`, `<span>`, or `<button>` elements** when MUI provides an equivalent component.
283+
- **Do NOT use inline CSS styles** (`style={{ }}`) — use the `sx` prop instead.
284+
- **Do NOT use hardcoded color values** (`#ff0000`, `rgb(...)`) — use MUI theme tokens.
285+
- **Do NOT use Tailwind for colors or typography** — those are handled by MUI's design system.
286+
- **Do NOT introduce new UI libraries** that duplicate MUI functionality.
287+
230288
## Development Workflow
231289

232290
### GenAI Engine Development
@@ -380,3 +438,4 @@ GENAI_ENGINE_INTERNAL_API_KEY=<api-key>
380438
- API changes require changelog generation via `poetry run generate_changelog`
381439
- Model files are downloaded and cached on first use
382440
- GPU support optional but improves performance for model-based checks
441+
- **Frontend: Always use MUI components** — never use plain HTML elements when MUI provides an equivalent. See "Frontend UI Guidelines" section above for full details.

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,29 @@ The Arthur Engine can prevent data-security and compliance risks from creating n
9090

9191
_NB: We have provided open-source models for Prompt Injection and Toxicity evaluation as default in the free version of Arthur. In the case that you already have custom solutions for these evaluations and would like to use them, the models used for Prompt Injection and Toxicity are fully customizable and can be substituted out here ([PI Code Pointer](genai-engine/src/scorer/checks/prompt_injection/classifier.py#L20), [Toxicity Code Pointer](genai-engine/src/scorer/checks/toxicity/toxicity.py#L29)). If you are interested in higher performing and/or lower latency evaluations out of the box, please enquire about the enterprise version of Arthur Engine._
9292

93+
## Broad Integration Support Through the OpenInference Specification
94+
95+
Arthur Engine fully supports the OpenInference specification, which allows you to connect the Engine to a wide range of AI frameworks, libraries, and agent stacks without custom instrumentation.
96+
97+
OpenInference provides a shared trace and data schema for AI systems. Since Arthur Engine follows this standard, you can immediately use any integration already built for the OpenInference ecosystem, including the large collection maintained by Arize Phoenix.
98+
99+
This includes support for many popular frameworks such as:
100+
101+
- LangChain
102+
- LangGraph
103+
- LlamaIndex
104+
- Vercel AI SDK
105+
- FastAPI and Flask apps instrumented with OpenInference
106+
- OpenAI, Anthropic, Google, and other model providers aligned with the spec
107+
- Agent frameworks, orchestration tools, and custom pipelines supported by Phoenix integrations
108+
- And many others
109+
110+
You can view the full and continuously updated list of supported integrations here:
111+
https://github.com/Arize-ai/phoenix?tab=readme-ov-file#tracing-integrations
112+
113+
By adopting OpenInference, Arthur Engine provides a flexible and future proof way to bring traces, spans, metrics, inputs, outputs, and evaluation signals into the Arthur platform. This makes it easy to collect data from diverse Gen AI apps, agents, and services with a single unified integration path.
114+
115+
93116
## Contributing
94117

95118
- Join the Arthur community on [Discord](https://discord.gg/tdfUAtaVHz) to get help and share your feedback.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
<a href="https://console.aws.amazon.com/cloudformation/home#/stacks/create/review?templateURL=https://arthur-cft.s3.us-east-2.amazonaws.com/arthur-engine/templates/2.1.355/root-arthur-engine-cpu.yml&stackName=arthur-engine&param_MLEngineClientId=yourClientIdHere">
1+
<a href="https://console.aws.amazon.com/cloudformation/home#/stacks/create/review?templateURL=https://arthur-cft.s3.us-east-2.amazonaws.com/arthur-engine/templates/2.1.386/root-arthur-engine-cpu.yml&stackName=arthur-engine&param_MLEngineClientId=yourClientIdHere">
22
<img src="https://s3.amazonaws.com/cloudformation-examples/cloudformation-launch-stack.png" alt="Launch">
33
</a>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
<a href="https://console.aws.amazon.com/cloudformation/home#/stacks/create/review?templateURL=https://arthur-cft.s3.us-east-2.amazonaws.com/arthur-engine/templates/2.1.355/root-arthur-engine-gpu.yml&stackName=arthur-engine&param_MLEngineClientId=yourClientIdHere">
1+
<a href="https://console.aws.amazon.com/cloudformation/home#/stacks/create/review?templateURL=https://arthur-cft.s3.us-east-2.amazonaws.com/arthur-engine/templates/2.1.386/root-arthur-engine-gpu.yml&stackName=arthur-engine&param_MLEngineClientId=yourClientIdHere">
22
<img src="https://s3.amazonaws.com/cloudformation-examples/cloudformation-launch-stack.png" alt="Launch">
33
</a>

deployment/ecs/model-upload/poetry.lock

Lines changed: 21 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deployment/gcp/model-upload/Dockerfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ COPY --from=downloader /models /models
6464

6565
# Set Python path to include our dependencies
6666
ENV PYTHONPATH=/app/site-packages
67-
ENV MODELS_DIR=/models
6867
ENV LOG_LEVEL=INFO
6968

7069
# Create non-root user for Cloud Run

0 commit comments

Comments
 (0)