hot reloading the BRUTAL way
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
# Project Overview
|
||||
|
||||
`lda-workflow-as-struct` is a Python 3.14 prototype for `lda.chat`: an AI-assisted workflow system where an LLM plans structured workflows and a deterministic executor validates/runs them.
|
||||
|
||||
Main packages live under `src/`:
|
||||
- `wf_core`: workflow model, validation, runtime semantics, frames, trace, interrupts, foreach, async execution.
|
||||
- `wf_authoring`: ergonomic authoring layer including `@node`, `NodeSpec`, `WorkflowBuilder`, conditions, paths, and subgraph wrapping.
|
||||
- `wf_mcp`: MCP broker/proxy layer for managing multiple backend MCP connections, discovery/catalog snapshots, transparent FastMCP proxying, config/admin tools, and eventual workflow build/run integration.
|
||||
|
||||
Important docs:
|
||||
- `readme.md`: running design notes and architecture.
|
||||
- `authoring_sketch.md`: authoring API direction.
|
||||
- `wf_mcp_plan.md`: MCP proxy/broker/workflow integration plan.
|
||||
- `scratchpad.md`: rough design history.
|
||||
|
||||
Current MCP direction: transparent proxy mode is the main product path. Old broker tools remain useful for debugging/admin/catalog operations, but protocol-native FastMCP proxying exposes upstream tools/resources/prompts as first-class MCP capabilities.
|
||||
@@ -0,0 +1,20 @@
|
||||
# Style And Conventions
|
||||
|
||||
General:
|
||||
- Python 3.14, `src/` layout, Pydantic v2 where external/boundary validation is useful.
|
||||
- Prefer explicit dataclasses for runtime/internal models and Pydantic for config/wire-ish boundary validation.
|
||||
- Async-first for MCP calls and workflow runtime interactions.
|
||||
- Keep MCP proxy concepts separate from workflow-specific concepts like `outcome`.
|
||||
- Do not leak workflow-only fields into MCP `tools/list`.
|
||||
|
||||
Code style:
|
||||
- Use precise type hints and modern Python collection syntax (`list[str]`, `dict[str, Any]`).
|
||||
- Keep modules layered by responsibility; avoid stuffing everything into service/runtime files.
|
||||
- Prefer small helper modules when behavior becomes a boundary (`config_models.py`, `config_manager.py`, `proxy_validation.py`).
|
||||
- Validation should fail early with clear errors.
|
||||
- Tests should exercise behavior through public APIs/MCP calls where practical.
|
||||
|
||||
Editing rules from repo collaboration:
|
||||
- Use `apply_patch` for manual code edits.
|
||||
- Do not revert user-owned changes.
|
||||
- Treat `wf_mcp.config.json` as user-owned live config unless explicitly asked.
|
||||
@@ -0,0 +1,27 @@
|
||||
# Suggested Commands
|
||||
|
||||
Use PowerShell on Windows from the repo root.
|
||||
|
||||
Testing:
|
||||
- `uv run --with pytest pytest -q`
|
||||
- Focused example: `uv run --with pytest pytest tests/test_wf_mcp_transparent_proxy.py -q`
|
||||
|
||||
Lint/type checks:
|
||||
- `uv run ruff check src/wf_mcp tests`
|
||||
- Focused basedpyright example: `uv run basedpyright src/wf_mcp/transparent_proxy.py --level error`
|
||||
|
||||
Formatting:
|
||||
- `uv run ruff format`
|
||||
|
||||
CLI / MCP server:
|
||||
- `uv run wf-mcp --config wf_mcp.config.json serve`
|
||||
- Transparent proxy mode is default.
|
||||
- Old broker mode: `uv run wf-mcp --config wf_mcp.config.json serve --mode broker`
|
||||
- Optional compatibility/search flags: `--resources-as-tools`, `--prompts-as-tools`, `--search-tools`
|
||||
|
||||
Useful Windows shell commands:
|
||||
- Fast search: `rg "pattern" path`
|
||||
- List files: `Get-ChildItem -Force`
|
||||
- Read file: `Get-Content -Path path`
|
||||
- Git status: `git status --short`
|
||||
- Diff: `git diff -- path`
|
||||
@@ -0,0 +1,12 @@
|
||||
# Task Completion Checklist
|
||||
|
||||
Before considering a code task done:
|
||||
- Run focused tests for the touched area.
|
||||
- Run full tests when the change affects shared behavior: `uv run --with pytest pytest -q`.
|
||||
- Run ruff on touched source/tests, usually `uv run ruff check src/wf_mcp tests` for MCP work.
|
||||
- Run focused basedpyright at error level for new or heavily changed files when type issues are likely.
|
||||
- Check `git status --short` and distinguish user-owned config changes from code changes.
|
||||
- Summarize functional changes and verification results concisely.
|
||||
|
||||
Known environment note:
|
||||
- Windows sandbox may block commands with `CreateProcessAsUserW failed: 5`; retry important commands with escalation rather than working around via unsafe shell tricks.
|
||||
Reference in New Issue
Block a user