Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
1bbd5b7
ignore roo
crvernon May 19, 2026
1d66b03
WU-1: scaffold v2.0.0 Phase 1 packages and bump version
crvernon May 19, 2026
b0c3ba4
resize logo
crvernon May 19, 2026
0ed8671
resize logo
crvernon May 19, 2026
65d539e
resize logo
crvernon May 19, 2026
2f6c7fd
WU-2: add scalable.yaml parser with env expansion + schema checks
crvernon May 19, 2026
5b6b7b9
WU-3: add manifest semantic validator + validation report tests
crvernon May 19, 2026
a2eccad
WU-4: add provider protocol, deployment spec, and registry
crvernon May 19, 2026
609b9e0
WU-5: add LocalProvider with tagged local execution and tests
crvernon May 19, 2026
738a0b5
WU-6: add SlurmProvider translation layer with mocked tests
crvernon May 19, 2026
1bbac8f
WU-7: add manifest-to-legacy adapter and ModelConfig deprecation gate
crvernon May 19, 2026
cdbc51d
feat(v2-phase1): add session+dryrun APIs, CLI commands, docs, and CI …
crvernon May 19, 2026
abecbeb
ignore env files
crvernon May 19, 2026
78ca831
add env example file
crvernon May 19, 2026
f9b5642
update changelog
crvernon May 19, 2026
fc0a8e8
Merge pull request #20 from JGCRI/version/2.0.0-phase1-provider-manifest
crvernon May 19, 2026
5cf2d97
phase 2 progress towards telemetry and deterministic advising
crvernon May 19, 2026
1ae928c
Merge pull request #21 from JGCRI/version/2.0.0-phase2-telemetry-advi…
crvernon May 19, 2026
84b5128
Phase 3: cloud + Kubernetes execution, artifact stores, overlays, cost
crvernon May 19, 2026
6c55dde
Merge pull request #22 from JGCRI/version/2.0.0-phase3-cloud-kubernetes
crvernon May 19, 2026
1460fff
Phase 4: AI assistant features
crvernon May 19, 2026
78b12cb
Initial plan
Copilot May 19, 2026
468ff67
Merge version/2.0.0-phase4-ai-assistants into fix branch
Copilot May 19, 2026
6e18a73
Fix lint violations in session and AI planning tests
Copilot May 19, 2026
cc28345
Add explicit GitHub Actions token permissions in tests workflow
Copilot May 20, 2026
10f57eb
Merge pull request #24 from JGCRI/copilot/fix-ruff-mypy-job-failure
crvernon May 20, 2026
3dc3683
Rollback branch content to commit 1460fff
Copilot May 20, 2026
3b4bd09
ruff fixes
crvernon May 20, 2026
d911ef8
ruff fixes
crvernon May 20, 2026
a864a60
Merge pull request #23 from JGCRI/version/2.0.0-phase4-ai-assistants
crvernon May 20, 2026
60dfd39
Add Phase 5 implementation plan
crvernon May 20, 2026
bc321c9
Merge Phase 4: AI assistant features into version/2.0.0
crvernon May 20, 2026
2efbe9d
Phase 5: ML optimization and emulation
crvernon May 20, 2026
a3b68a6
Merge pull request #25 from JGCRI/version/2.0.0-phase5-ml-emulation
crvernon May 20, 2026
dcb8a2d
update docs
crvernon May 20, 2026
b3b2151
how-to tutorials in docs
crvernon May 20, 2026
6112929
jupyter notebook tutorials
crvernon May 20, 2026
ea975f4
pydanticai transition
crvernon May 20, 2026
2dc4988
support tests failure for ai
crvernon May 20, 2026
c4021e1
ruff adjustments
crvernon May 20, 2026
d0df09f
formatting for ruff
crvernon May 20, 2026
7c2b2bd
Merge pull request #26 from JGCRI/version/2.0.0
crvernon May 20, 2026
12df6d5
adjust title overline length
crvernon May 20, 2026
a9fcec7
update storylines in tutorials
crvernon May 20, 2026
1e7dc30
update systems language
crvernon May 20, 2026
d3e0e5b
extending more ai provider options
crvernon May 20, 2026
8254f5b
update docs on ai provider expansion
crvernon May 20, 2026
be11ab9
handle env setup for ai notebook
crvernon May 20, 2026
1a9568a
docs update for provider support
crvernon May 20, 2026
8ef0f57
new beginner level tutorials
crvernon May 20, 2026
b42ff4e
beginner tutorials
crvernon May 20, 2026
bf7c7ad
break out tutorials into beginner and advanced
crvernon May 20, 2026
eff3b5d
reorder docs
crvernon May 20, 2026
d3bce61
update version to 2.0.0-beta.1
crvernon May 20, 2026
ec67aa1
local dev install clarity
crvernon May 20, 2026
f67c8d3
fix formatting via ruff feedback
crvernon May 20, 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
62 changes: 62 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# ===========================================================================
# Scalable AI Provider Configuration
# ===========================================================================
# These generic environment variables configure which AI/LLM provider and
# model Scalable uses. They are provider-agnostic — set them once and switch
# providers by changing AI_PROVIDER and LLM_MODEL_NAME.
#
# Supported providers:
# openai — OpenAI (GPT-5.2, GPT-5.5, etc.)
# anthropic — Anthropic (Claude Opus, Sonnet, Haiku)
# google — Google Gemini (2.0 Flash, 1.5 Pro, etc.)
# xai — xAI (Grok-2, Grok-3)
# groq — Groq (Llama, Mixtral — fast inference)
# ollama — Local Ollama models (Llama3, Mistral, etc.)
# ===========================================================================

# Provider name — determines which AI service to use.
# Options: openai | anthropic | google | xai | groq | ollama
AI_PROVIDER=openai

# Universal API key — works for any provider that requires authentication.
# This single key is used unless a provider-specific key is set (see below).
AI_API_KEY=your_api_key_here

# LLM model of choice for generation tasks.
# Examples by provider:
# openai: gpt-4o, gpt-4o-mini, o1, o1-mini
# anthropic: claude-opus-4-20250514, claude-sonnet-4-20250514, claude-haiku-3-20250414
# google: gemini-2.0-flash, gemini-1.5-pro, gemini-1.5-flash
# xai: grok-3, grok-2
# groq: llama-3.1-70b-versatile, mixtral-8x7b-32768
# ollama: llama3, mistral, codellama
LLM_MODEL_NAME=gpt-5.5

# Optional: Custom API base URL.
# Required for OpenAI-compatible proxies (e.g., Azure, vLLM, LiteLLM).
# xAI defaults to https://api.x.ai/v1 automatically.
# Ollama defaults to http://localhost:11434 automatically.
# AI_BASE_URL=https://api.openai.com/v1

# ===========================================================================
# Provider-Specific API Keys (Optional Overrides)
# ===========================================================================
# If you use multiple providers, you can set provider-specific keys below.
# These take priority over AI_API_KEY for their respective provider.
#
# OPENAI_API_KEY=sk-...
# ANTHROPIC_API_KEY=sk-ant-...
# GOOGLE_API_KEY=AIza...
# XAI_API_KEY=xai-...
# GROQ_API_KEY=gsk_...

# ===========================================================================
# Advanced: SCALABLE_AI_* Overrides
# ===========================================================================
# These Scalable-specific variables take priority over the generic ones above.
# Use them only if you need separate config for Scalable vs. other tools.
#
# SCALABLE_AI_BACKEND=openai
# SCALABLE_AI_MODEL=gpt-4o
# SCALABLE_AI_ENDPOINT=https://custom-endpoint.example.com/v1
# SCALABLE_AI_API_KEY=sk-...
41 changes: 36 additions & 5 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: tests

on:
push:
branches: [develop, master, main]
branches: [develop, master, main, 'version/**']
pull_request:
branches: [develop, master, main]
branches: [develop, master, main, 'version/**']
workflow_dispatch:

concurrency:
Expand All @@ -18,12 +18,17 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.11", "3.12", "3.13"]
include:
- os: ubuntu-latest
python-version: "3.11"
- os: ubuntu-latest
python-version: "3.12"
- os: ubuntu-latest
python-version: "3.13"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # versioneer needs tags
fetch-depth: 0

- uses: actions/setup-python@v5
with:
Expand All @@ -38,6 +43,32 @@ jobs:
- name: Run unit tests
run: pytest tests/unit -v

validate-example-manifests:
name: validate example manifests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip

- name: Install package
run: |
python -m pip install --upgrade pip
python -m pip install -e .[test]

- name: Validate docs examples
run: |
scalable validate docs/examples/scalable.minimal.yaml --target local
scalable validate docs/examples/scalable.gcam_stitches.yaml --target local

- name: Plan docs examples (dry-run)
run: |
scalable plan docs/examples/scalable.minimal.yaml --target local --dry-run --output /tmp/plan-minimal.json
scalable plan docs/examples/scalable.gcam_stitches.yaml --target local --dry-run --output /tmp/plan-gcam-stitches.json

lint:
name: ruff + mypy
runs-on: ubuntu-latest
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@
# -----------------------------
capabilities/
plans/
.rooignore
.env
notebooks/.ipynb_checkpoints/
notebooks/beginner/.ipynb_checkpoints/
notebooks/intermediate/.ipynb_checkpoints/
notebooks/advanced/.ipynb_checkpoints/

# -----------------------------
# Python bytecode / caches
Expand Down
Loading
Loading