Commit graph

636 commits

Author SHA1 Message Date
Adil Hafeez
74f9b44378 fix black formatting for Python test files 2026-03-15 08:49:22 +00:00
Adil Hafeez
c4634d0034 compact and deduplicate test suite
- Extract generate_storage_tests! macro for shared CRUD tests across memory/postgresql backends
- Move merge tests to mod.rs (testing default trait method once)
- Consolidate signal analyzer tests into table-driven tests
- Extract shared fixtures in router test files
- Parametrize Python CLI tests
- Remove dead tests (test_skip_version_check_env_var, test_arch_agent_config_default)
- Extract SSE event test helpers in streaming_response
2026-03-15 08:34:29 +00:00
Adil Hafeez
785bf7e021
add build-cli and build-brightstaff skills (#824) 2026-03-13 00:28:35 -07:00
Adil Hafeez
2f52774c0e
Add Claude Code skills and streamline CLAUDE.md (#823)
* add claude code skills and streamline CLAUDE.md

* remove claude code attribution from PR skill

* update pr skill
2026-03-13 00:18:41 -07:00
Adil Hafeez
5400b0a2fa
add instructions on hosting arch-router locally (#819) 2026-03-11 15:28:50 -07:00
Adil Hafeez
b4313d93a4
Run demos without Docker (#809) 2026-03-11 12:49:36 -07:00
Musa
6610097659
Support for Codex via Plano (#808)
* Add Codex CLI support; xAI response improvements

* Add native Plano running check and update CLI agent error handling

* adding PR suggestions for transformations and code quality

* message extraction logic in ResponsesAPIRequest

* xAI support for Responses API by routing to native endpoint + refactor code
2026-03-10 20:54:14 -07:00
Adil Hafeez
5189f7907a
add k8s deploy guide (#816) 2026-03-10 12:27:31 -07:00
Adil Hafeez
97b7a390ef
support inline routing_policy in request body (#811) (#815) 2026-03-10 12:23:18 -07:00
Adil Hafeez
028a2cd196
add routing service (#814)
fixes https://github.com/katanemo/plano/issues/810
2026-03-09 16:32:16 -07:00
Adil Hafeez
b9f01c8471
support native mode in planoai logs command (#807) 2026-03-05 18:34:06 -08:00
Adil Hafeez
065328e11c
release 0.4.11 (#806) 2026-03-05 13:58:19 -08:00
Adil Hafeez
780a0af132
Use editable install to fix sdist build failure (#805) 2026-03-05 13:50:50 -08:00
Adil Hafeez
a1508f4de1
fix pypi publish: use wheel-only build, remove build hook (#804) 2026-03-05 12:54:40 -08:00
Adil Hafeez
8f7a8a8a17
fix sdist build: use build hook to bundle config files (#803)
* fix sdist build: use build hook to bundle config files

* copy hatch_build.py in Dockerfile
2026-03-05 12:40:50 -08:00
Adil Hafeez
c13ce19293
release 0.4.10 (#802) 2026-03-05 12:17:45 -08:00
Adil Hafeez
36cbe3f589
show download progress bar instead of curl output (#801) 2026-03-05 12:09:25 -08:00
Adil Hafeez
abb89382f7
fix gzip hard link error in WASM plugin upload (#800) 2026-03-05 08:49:04 -08:00
Adil Hafeez
f63d5de02c
Run plano natively by default (#744) 2026-03-05 07:35:25 -08:00
Adil Hafeez
198c912202
allow otel collector endpoint to be set from config (#794)
Co-authored-by: Adil Hafeez <adil.hafeez10@t-mobile.com>
2026-03-01 04:05:45 -08:00
Musa
15c6c62df0
fix: strip trailing 'Copy code' from clipboard when copying code blocks (#788)
Co-authored-by: Claude <noreply@anthropic.com>
2026-02-27 13:11:26 -08:00
Adil Hafeez
d9404afa4d
release 0.4.9 (#785) 2026-02-26 16:18:02 -08:00
Salman Chishti
5082f087c6
Upgrade GitHub Actions to latest versions (#782)
Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com>
2026-02-26 12:17:32 -08:00
Salman Chishti
e2380063f7
Upgrade GitHub Actions for Node 24 compatibility (#781)
Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com>
2026-02-26 10:45:03 -08:00
Musa
2bde21ff57
add Custom Trace Attributes to extend observability (#708)
* add custom trace attributes

* refactor: prefix custom trace attributes and update schema handlers tests configs

* refactor: rename custom_attribute_prefixes to span_attribute_header_prefixes in configuration and related handlers

* docs: add section on custom span attributes

* refactor: update tracing configuration to use span attributes and adjust related handlers

* docs: custom span attributes section to include static attributes and clarify configuration

* add custom trace attributes

* refactor: prefix custom trace attributes and update schema handlers tests configs

* refactor: rename custom_attribute_prefixes to span_attribute_header_prefixes in configuration and related handlers

* docs: add section on custom span attributes

* refactor: update tracing configuration to use span attributes and adjust related handlers

* docs: custom span attributes section to include static attributes and clarify configuration

* refactor: remove TraceCollector usage and enhance logging with structured attributes

* refactor: custom trace attribute extraction to improve clarity

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 16:27:20 -08:00
Adil Hafeez
70ad56a258
remove exposed example passwords from documentation (#779)
* remove exposed example passwords from documentation

Replace hardcoded example password (MyPass#123/MyPass%23123) and
project-specific Supabase references (postgres.myproject) with
generic placeholders in docs.

https://claude.ai/code/session_01H5wj3VH1Jh28kzepEwdDCx

* remove hardcoded FlightAware AeroAPI key from flights.py

https://claude.ai/code/session_01H5wj3VH1Jh28kzepEwdDCx

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-25 13:14:36 -08:00
Musa
ed64230833
add support for background trace collection and tracing output (#749)
* feat: add trace listener process management and foreground mode

* docs: add CLI reference documentation and update index

* fix: test coverage failing

* refactor: simplify trace listener initialization and remove debug mode handling

* docs: add CLI command screenshots to reference documentation

* fix: update trace listener PID file path

* refactor: integrate trace listener management into runtime module and streamline PID handling

* adjusting trace command for feedback on PR
2026-02-24 19:17:33 -08:00
Syed A. Hashmi
54bc8e5e52
[ISSUE 706]: Standardize returned errors from Plano (#772)
* [ISSUE 706]: Standardize returned errors from Plano

* Standardized errors in chat completion
2026-02-24 14:34:33 -08:00
Salman Paracha
69d650a4e5
updating architecture diagram (#774)
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
2026-02-21 16:00:02 -08:00
Adil Hafeez
21b043e6d0
add workflow preferences to CLAUDE.md (#770) 2026-02-18 20:24:34 -08:00
Adil Hafeez
baeee56f6b
Make model field optional in request types, resolve from default provider (#768) 2026-02-18 04:43:59 -08:00
Adil Hafeez
7b5f1549a5
release 0.4.8 (#767)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 01:52:55 -08:00
Adil Hafeez
98b979ce54
Upstream TLS validation and configurable connect timeout (#766) 2026-02-18 01:19:20 -08:00
Teja Sunku
4fe66c2918
docs: Fix incorrect routing preferences in OpenClaw demo config (#765) 2026-02-18 01:15:46 -08:00
Musa
d70f79b41c
sync CLI templates with demo configs via manifest + CI flow (#764)
* feat: add template synchronization utility and CI integration

* refactor: make simple write to CI, no check

* ci: conditionally sync CLI templates on push to main branch

* docs: fix small capitalization
2026-02-17 12:59:09 -08:00
Adil Hafeez
c69fbd8a4d
Add OpenClaw + Plano intelligent routing demo (#761)
* Add OpenClaw + Plano intelligent routing demo

Demonstrates preference-based routing for personal AI assistants:
Kimi K2.5 handles conversation and agentic tasks, Claude handles
code generation, testing, and complex reasoning — with zero
application code changes and ~48% cost savings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Remove redundant provider_interface from Kimi K2.5 config

The openai/ prefix in the model name already sets the provider
interface. Setting provider_interface explicitly conflicts with it
and fails config validation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Simplify config to v0.3.0 format, remove explicit Arch-Router entry

Arch-Router is implicit when routing_preferences are defined.
Aligns with the preference_based_routing demo pattern.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Clean up Ollama/Arch-Router references, make Jaeger optional

Router is handled internally by Plano — no need for Ollama or
explicit Arch-Router setup. Jaeger is kept as an optional step
in the README for developers who want tracing visibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Remove run_demo.sh, use planoai CLI directly

The planoai CLI already handles startup. README now uses
planoai up/down directly instead of a wrapper script.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Remove docker-compose.yaml, use inline docker run for Jaeger

No need for a compose file when Jaeger is the only optional
service. A single docker run command in the README is simpler.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Clarify testing: OpenClaw channels vs direct Plano requests

Primary testing is through messaging channels (Telegram, Slack,
etc.) with log monitoring. The test_routing.sh script is now
documented as an optional direct verification tool.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add OpenClaw onboarding instructions to README

Includes install, onboarding wizard, channel setup, doctor
check, and how to point the gateway at Plano.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Use OpenClaw onboarding wizard for Plano provider setup

Replace manual JSON config with instructions to use the
openclaw onboard wizard to set up a custom OpenAI-compatible
provider pointing at Plano.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fixed readme and removed unnecessary testing.sh file

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
2026-02-17 06:34:54 -08:00
Adil Hafeez
bfbf838b19
release 0.4.7 (#752) 2026-02-17 05:45:44 -08:00
Adil Hafeez
50088d9eff
Add demos README with overview of all demo categories (#762) 2026-02-17 03:22:12 -08:00
Adil Hafeez
5d2279a796
Revert "Add OpenClaw + Plano intelligent routing demo"
This reverts commit 5090000fd2.
2026-02-17 03:15:42 -08:00
Adil Hafeez
5090000fd2
Add OpenClaw + Plano intelligent routing demo
Demonstrates preference-based routing for personal AI assistants:
Kimi K2.5 handles conversation and agentic tasks, Claude handles
code generation, testing, and complex reasoning — with zero
application code changes and ~48% cost savings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 03:13:55 -08:00
Adil Hafeez
473996d35d
Overhaul demos directory: cleanup, restructure, and standardize configs (#760) 2026-02-17 03:09:28 -08:00
Adil Hafeez
c3591bcbf3
Upgrade CI, Docker, and demos to Python 3.14 (#759)
Update all GitHub Actions workflows and Dockerfiles to use Python 3.14
as the default version. Remove the upper bound on requires-python in
model_choice_with_test_harness to allow 3.14+. The CLI's
requires-python stays at >=3.10 for broad compatibility.
2026-02-15 10:22:33 -08:00
Adil Hafeez
9c4b2fc570
Remove security scan badge and keep CI, Docker, and Docs badges
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 00:41:06 -08:00
Adil Hafeez
b5de62c307
trigger CI to test security scan badge 2026-02-15 00:32:13 -08:00
Adil Hafeez
2fcae0453a
Update GitHub badges after CI consolidation (#758)
* Update GitHub badges after CI workflow consolidation

Fix broken README badges pointing to deleted workflow files (pre-commit.yml,
rust_tests.yml, e2e_tests.yml) and replace with consolidated CI badge. Add
Docker image publish badge and dynamic Trivy security scan badge.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Use existing ADIL_GITHUB_TOKEN secret for security badge

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 00:26:44 -08:00
Adil Hafeez
8a39446d95
Consolidate GitHub Actions CI from 15 to 5 workflow files (#757) 2026-02-14 18:49:08 -08:00
Musa
ef285f1213
Add error handling for OTLP/gRPC listener binding in trace command (#748) 2026-02-14 15:28:45 -08:00
Adil Hafeez
1df43872a6
Fix code scanning and dependabot security alerts (#756)
* Fix code scanning and dependabot security alerts

Code scanning fixes (14 alerts):
- Fix XSS in OG image route by validating request origin against allowlist
- Fix incomplete URL sanitization in blog layout using exact hostname matching
- Bind port-check socket to 127.0.0.1 instead of 0.0.0.0
- Add explicit permissions to 7 GitHub Actions workflows

Dependabot fixes:
- Update @isaacs/brace-expansion 5.0.0 -> 5.0.1 (CVE-2026-25547)
- Update bytes 1.10.1 -> 1.11.1 (CVE-2026-25541)
- Update time 0.3.41 -> 0.3.47 (CVE-2026-25727)
- Update cryptography 45.0.7 -> 46.0.5 (CVE-2026-26007)
- Update python-multipart 0.0.20 -> 0.0.22 (CVE-2026-24486)
- Update urllib3 2.6.2 -> 2.6.3 in test lockfiles (CVE-2026-21441)
- Update Werkzeug 3.1.4 -> 3.1.5 (CVE-2026-21860)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Address PR review feedback

- Replace plano.katanemo.com with planoai.dev in allowed hosts
- Add planoai.dev to OG route and blog layout allowlists
- Revert socket bind to 0.0.0.0 (intentional for port-in-use check)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 12:27:07 -08:00
Adil Hafeez
38646fdac2
Add Trivy Docker security scan to CI (#755)
* Add Trivy Docker image security scan workflow

Scans the Docker image for CRITICAL and HIGH vulnerabilities using Trivy.
Blocks PRs on failures; runs non-blocking on main for visibility. Results
are uploaded to the GitHub Security tab via SARIF.


* Add explicit permissions to Docker security scan workflow

Set minimal permissions: contents read for checkout, security-events
write for SARIF upload to the GitHub Security tab.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix 27 HIGH vulnerabilities found by Trivy Docker scan

- Install supervisor via pip instead of apt to eliminate 22 Debian
  python3.13 package vulnerabilities
- Pin urllib3>=2.6.3 to fix CVE-2025-66418, CVE-2025-66471, CVE-2026-21441
- Add ignore-unfixed to Trivy scan to suppress unfixable glibc CVE-2026-0861

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 19:53:49 -08:00
Adil Hafeez
94f804991e
Add .env.local to gitignore and gitleaks pre-commit hook (#754)
Prevent future secret leaks by ignoring .env.local files and adding
gitleaks secret scanning to the pre-commit pipeline.
2026-02-13 15:51:08 -08:00