Skip to content

Commit d03ebfc

Browse files
authored
Merge pull request #822 from Pipelex/release/v0.24.0
Release v0.24.0
2 parents 9bd3dfd + 8c1370a commit d03ebfc

44 files changed

Lines changed: 788 additions & 95 deletions

Some content is hidden

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

.badges/tests.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"schemaVersion": 1,
33
"label": "tests",
4-
"message": "4047",
4+
"message": "4053",
55
"color": "blue",
66
"cacheSeconds": 300
77
}
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
---
2+
name: update-graph-ui
3+
description: >
4+
Update the mthds-ui graph viewer assets in pipelex to a new version.
5+
Bumps the version tag in package.json, runs make sync-graph-ui to rebuild
6+
and copy the standalone JS/CSS assets, verifies the sync and runs tests.
7+
Use when user says "update graph ui", "bump mthds-ui", "sync graph viewer",
8+
"update graph viewer", "new version of mthds-ui", or any variation of
9+
updating the vendored graph viewer assets.
10+
user_invocable: true
11+
---
12+
13+
# Update Graph UI Assets
14+
15+
Update the vendored mthds-ui graph viewer assets in pipelex to a new version.
16+
17+
## Prerequisites
18+
19+
- `node` and `npm` must be on PATH
20+
- Git access to `github.com/Pipelex/mthds-ui`
21+
22+
## Workflow
23+
24+
### 1. Check current state
25+
26+
```bash
27+
grep '@pipelex/mthds-ui' package.json
28+
cat pipelex/graph/reactflow/assets/.graph-ui-version
29+
```
30+
31+
Report the currently pinned version and the currently synced version.
32+
33+
### 2. Determine target version
34+
35+
Ask the user which version to update to, or check the latest tag:
36+
37+
```bash
38+
git ls-remote --tags https://github.com/Pipelex/mthds-ui.git | grep -o 'refs/tags/v[0-9.]*' | sed 's|refs/tags/v||' | sort -V | tail -1
39+
```
40+
41+
Show the user the latest available version and ask for confirmation.
42+
43+
### 3. Update package.json
44+
45+
Edit `package.json` to change the version tag and update the pinned SHA:
46+
47+
```bash
48+
git ls-remote https://github.com/Pipelex/mthds-ui.git refs/tags/v<NEW_VERSION> refs/tags/v<NEW_VERSION>^{}
49+
```
50+
51+
If two lines appear (annotated tag), use the `^{}` dereferenced SHA (the commit).
52+
If one line appears (lightweight tag), use that SHA directly.
53+
Update both fields:
54+
55+
```json
56+
"dependencies": {
57+
"@pipelex/mthds-ui": "github:Pipelex/mthds-ui#v<NEW_VERSION>"
58+
},
59+
"//dependencies": {
60+
"@pipelex/mthds-ui": "v<NEW_VERSION> = <COMMIT_SHA>"
61+
}
62+
```
63+
64+
### 4. Sync assets
65+
66+
```bash
67+
make sync-graph-ui
68+
```
69+
70+
This clones mthds-ui at the pinned tag, builds the standalone JS/CSS bundles,
71+
and copies them to `pipelex/graph/reactflow/assets/`.
72+
73+
If this fails, stop and report the error. Common issues:
74+
- Tag doesn't exist on the remote (check available tags)
75+
- npm install failure (network issue)
76+
- Build failure (mthds-ui build broken at that tag)
77+
78+
### 5. Verify sync
79+
80+
```bash
81+
make check-graph-ui-sync
82+
```
83+
84+
Must print "up-to-date". If not, something went wrong in step 4.
85+
86+
### 6. Run graph tests
87+
88+
```bash
89+
.venv/bin/pytest tests/unit/pipelex/graph/test_reactflow_html.py -v --no-header
90+
```
91+
92+
All tests must pass. These verify:
93+
- HTML generation with embedded GraphSpec
94+
- Bundled JS/CSS is present
95+
- Config JSON embedding
96+
- HTML structure validity
97+
98+
### 7. Run full quality checks
99+
100+
```bash
101+
make agent-check
102+
```
103+
104+
Ensures the new assets don't break lint, type checking, or any other checks.
105+
106+
### 8. Report
107+
108+
Tell the user:
109+
- Previous version and new version
110+
- Asset sizes (JS + CSS)
111+
- Test results
112+
- Remind to commit: `package.json`, `graph-viewer.js`, `graph-viewer.css`, `.graph-ui-version`
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Graph UI asset sync check
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
- dev
8+
9+
jobs:
10+
graph-ui-sync:
11+
name: Graph UI sync
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Check graph UI assets are in sync
17+
run: |
18+
PINNED_VERSION=$(grep -o '"github:Pipelex/mthds-ui#[^"]*"' package.json | sed 's/.*#//;s/"//')
19+
SYNCED_VERSION=$(cat pipelex/graph/reactflow/assets/.graph-ui-version 2>/dev/null | tr -d '[:space:]')
20+
SYNCED_VERSION="${SYNCED_VERSION:-NONE}"
21+
if [ "$PINNED_VERSION" != "$SYNCED_VERSION" ]; then
22+
echo "::error::Graph UI assets are out of date! Pinned: $PINNED_VERSION, Synced: $SYNCED_VERSION. Run 'make sync-graph-ui' to update."
23+
exit 1
24+
fi
25+
echo "Graph UI assets are up-to-date ($SYNCED_VERSION)"

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ mthds-wip
7272
# Derived artifacts (auto-generated, not tracked)
7373
derived/
7474

75+
# Node.js (used only for syncing mthds-ui graph viewer assets)
76+
node_modules/
77+
package-lock.json
78+
7579
# Claude plans
7680
.claude/plans/
7781
.gstack/

.pipelex-dev/test_profiles.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ anthropic = [
6666
"claude-4.5-haiku",
6767
"claude-4.5-sonnet",
6868
"claude-4.5-opus",
69+
"claude-4.6-sonnet",
6970
"claude-4.6-opus",
71+
"claude-4.7-opus",
7072
]
7173

7274
# --- DeepSeek Models ---

.pipelex/inference/backends/anthropic.toml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,15 @@ outputs = ["text", "structured"]
101101
max_prompt_images = 100
102102
costs = { input = 5.0, output = 25.0 }
103103

104+
["claude-4.6-sonnet"]
105+
model_id = "claude-sonnet-4-6"
106+
max_tokens = 64000
107+
inputs = ["text", "images", "pdf"]
108+
outputs = ["text", "structured"]
109+
max_prompt_images = 100
110+
costs = { input = 3.0, output = 15.0 }
111+
thinking_mode = "adaptive"
112+
104113
["claude-4.6-opus"]
105114
model_id = "claude-opus-4-6"
106115
max_tokens = 64000
@@ -109,3 +118,14 @@ outputs = ["text", "structured"]
109118
max_prompt_images = 100
110119
costs = { input = 5.0, output = 25.0 }
111120
thinking_mode = "adaptive"
121+
122+
# --- Claude 4.7 Series --------------------------------------------------------
123+
["claude-4.7-opus"]
124+
model_id = "claude-opus-4-7"
125+
max_tokens = 128000
126+
inputs = ["text", "images", "pdf"]
127+
outputs = ["text", "structured"]
128+
max_prompt_images = 100
129+
costs = { input = 5.0, output = 25.0 }
130+
thinking_mode = "adaptive"
131+
listed_constraints = ["temperature_unsupported"]

.pipelex/inference/backends/bedrock.toml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,16 @@ max_prompt_images = 100
125125
costs = { input = 5.0, output = 25.0 }
126126
thinking_mode = "manual"
127127

128+
["claude-4.6-sonnet"]
129+
sdk = "bedrock_anthropic"
130+
model_id = "global.anthropic.claude-sonnet-4-6"
131+
max_tokens = 64000
132+
inputs = ["text", "images", "pdf"]
133+
outputs = ["text", "structured"]
134+
max_prompt_images = 100
135+
costs = { input = 3.0, output = 15.0 }
136+
thinking_mode = "adaptive"
137+
128138
["claude-4.6-opus"]
129139
sdk = "bedrock_anthropic"
130140
model_id = "global.anthropic.claude-opus-4-6-v1"
@@ -134,3 +144,15 @@ outputs = ["text", "structured"]
134144
max_prompt_images = 100
135145
costs = { input = 5.0, output = 25.0 }
136146
thinking_mode = "adaptive"
147+
148+
# --- Claude 4.7 Series --------------------------------------------------------
149+
["claude-4.7-opus"]
150+
sdk = "bedrock_anthropic"
151+
model_id = "global.anthropic.claude-opus-4-7"
152+
max_tokens = 128000
153+
inputs = ["text", "images", "pdf"]
154+
outputs = ["text", "structured"]
155+
max_prompt_images = 100
156+
costs = { input = 5.0, output = 25.0 }
157+
thinking_mode = "adaptive"
158+
listed_constraints = ["temperature_unsupported"]

.pipelex/inference/deck/1_llm_deck.toml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,21 @@ for_object = "@default-general"
2828

2929
[llm.aliases]
3030
best-gpt = "gpt-5.2"
31-
best-claude = "claude-4.5-opus"
31+
best-claude = "claude-4.7-opus"
3232
best-gemini = "gemini-3.0-pro"
3333
best-mistral = "mistral-large"
3434

3535
# Default aliases (first choice from waterfalls)
36-
default-general = "claude-4.5-sonnet"
36+
default-general = "claude-4.6-sonnet"
3737
default-premium = "claude-4.6-opus"
3838
default-premium-vision = "claude-4.6-opus"
3939
default-premium-structured = "claude-4.6-opus"
4040
default-large-context-code = "gemini-3.0-pro"
4141
default-large-context-text = "gemini-2.5-flash"
4242
default-small = "gpt-4o-mini"
4343
default-small-structured = "gpt-4o-mini"
44-
default-small-vision = "gemini-2.5-flash-lite"
45-
default-small-creative = "gemini-2.5-flash-lite"
44+
default-small-vision = "gemini-3.0-flash-preview"
45+
default-small-creative = "gemini-3.0-flash-preview"
4646

4747
####################################################################################################
4848
# LLM Presets
@@ -52,34 +52,36 @@ default-small-creative = "gemini-2.5-flash-lite"
5252

5353
# Writing
5454
writing-factual = { model = "@default-premium", temperature = 0.1, description = "Factual writing with high accuracy" }
55+
writing-factual-cheap = { model = "@default-small", temperature = 0.1, description = "Cheap factual writing with high accuracy" }
5556
writing-creative = { model = "@default-premium", temperature = 0.9, description = "Creative writing with high variability" }
57+
writing-creative-cheap = { model = "@default-small-creative", temperature = 0.9, description = "Cheap creative writing with high variability" }
5658

5759
# Retrieval
5860
retrieval = { model = "@default-large-context-text", temperature = 0.1, description = "Data retrieval from large text corpora" }
61+
retrieval-cheap = { model = "gemini-2.5-flash-lite", temperature = 0.1, description = "Cheap data retrieval from large text corpora" }
62+
retrieval-premium = { model = "claude-4.7-opus", temperature = 0.1, description = "Premium data retrieval with highest accuracy" }
5963

6064
# Engineering
6165
engineering-structured = { model = "@default-premium-structured", temperature = 0.2, description = "Structured engineering output (JSON, schemas)" }
6266
engineering-code = { model = "@default-premium", temperature = 0.1, description = "Code generation and analysis" }
67+
engineering-code-cheap = { model = "claude-4.6-sonnet", temperature = 0.1, description = "Cheap code generation and analysis" }
68+
engineering-code-cheaper = { model = "claude-4.5-haiku", temperature = 0.1, description = "Cheapest code generation and analysis" }
6369
engineering-codebase-analysis = { model = "@best-gemini", temperature = 0.1, description = "Large codebase analysis" }
6470

6571
# Vision
66-
vision = { model = "@default-premium-vision", temperature = 0.5, description = "Vision language model for understanding images" }
67-
vision-cheap = { model = "@default-small-vision", temperature = 0.5, description = "Budget vision model for simple image tasks" }
72+
vision = { model = "@default-premium-vision", temperature = 0.5, description = "Understanding and interpreting images" }
73+
vision-cheap = { model = "@default-small-vision", temperature = 0.5, description = "Cheap image understanding for simple tasks" }
6874
vision-diagram = { model = "@default-premium-vision", temperature = 0.3, description = "Diagram and chart interpretation" }
6975
vision-table = { model = "@default-premium-vision", temperature = 0.3, description = "Table extraction from images" }
7076

7177
# Image generation prompting
7278
img-gen-prompting = { model = "@default-premium", temperature = 0.5, description = "Crafting image generation prompts" }
73-
img-gen-prompting-cheap = { model = "@default-small", temperature = 0.5, description = "Budget image prompt generation" }
79+
img-gen-prompting-cheap = { model = "@default-small-creative", temperature = 0.5, description = "Cheap image prompt generation" }
7480

7581
# Reasoning
7682
deep-analysis = { model = "@default-premium", temperature = 0.1, reasoning_effort = "high", description = "Deep reasoning and analysis" }
7783
quick-reasoning = { model = "@default-premium", temperature = 0.3, reasoning_effort = "low", description = "Quick reasoning for simple tasks" }
7884

79-
# Builder (isolated presets for the pipeline builder)
80-
pipe-builder-engineering = { model = "claude-4.6-opus", temperature = 0.2, description = "Builder: structured engineering output" }
81-
pipe-builder-img-gen-prompting = { model = "claude-4.5-sonnet", temperature = 0.7, description = "Builder: crafting image generation prompts" }
82-
8385
# Testing
8486
testing-text = { model = "@default-small", temperature = 0.5, description = "Testing preset for text generation" }
8587
testing-structured = { model = "@default-small-structured", temperature = 0.1, description = "Testing preset for structured output" }

.vscode/launch.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100
"args": [
101101
"run",
102102
"bundle",
103-
"tests/integration/pipelex/pipes/pipelines/test_image_out_in.mthds",
103+
"/Users/lchoquel/repos/Pipelex/pipelex-demos/mthds-wip/fashion_moodboard",
104104
],
105105
"console": "integratedTerminal",
106106
"justMyCode": false

.vscode/settings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
{
2+
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
3+
"python.analysis.extraPaths": ["./tests"],
24
"[python]": {
35
"editor.defaultFormatter": "charliermarsh.ruff"
46
},
@@ -35,5 +37,6 @@
3537
"[mthds]": {
3638
"editor.defaultFormatter": "Pipelex.pipelex",
3739
"editor.formatOnSave": true
38-
}
40+
},
41+
"pipelex.graph.direction": "left_to_right"
3942
}

0 commit comments

Comments
 (0)