Metadata-Version: 2.4
Name: openstudio-ai
Version: 0.1.1
Summary: OpenStudio AI harness with MCP runtime, host adapters, skills, and knowledge.
Project-URL: Homepage, https://gitlab.pnnl.gov/building-energy-modeling/openstudio-ai-harness
Project-URL: Repository, https://gitlab.pnnl.gov/building-energy-modeling/openstudio-ai-harness
Project-URL: Documentation, https://gitlab.pnnl.gov/building-energy-modeling/openstudio-ai-harness
Author: PNNL
License-Expression: BSD-3-Clause
License-File: LICENSE
Keywords: ai,building-energy-modeling,mcp,openstudio,simulation
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.12
Requires-Dist: jinja2>=3.1.0
Requires-Dist: mcp>=1.0.0
Requires-Dist: openstudio>=3.10.0
Requires-Dist: platformdirs>=4.0.0
Requires-Dist: pydantic>=2.12.3
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: pyyaml>=6.0.2
Provides-Extra: dev
Requires-Dist: black>=25.9.0; extra == 'dev'
Requires-Dist: build>=1.2.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=1.2.0; extra == 'dev'
Requires-Dist: pytest>=8.4.2; extra == 'dev'
Requires-Dist: twine>=5.0.0; extra == 'dev'
Provides-Extra: standalone
Requires-Dist: automa-ai>=0.7.3; extra == 'standalone'
Requires-Dist: streamlit>=1.54.0; extra == 'standalone'
Description-Content-Type: text/markdown

# OpenStudio AI Harness

OpenStudio AI Harness packages a local MCP runtime, host adapters, skills,
knowledge, and workflow-state tools for AI-assisted building-energy modeling.

## Current Capabilities

- OpenStudio MCP server for model lifecycle, simulation, results, SDK lookup,
  runtime storage, and MCP-backed blackboard workflow state.
- Claude Code plugin export.
- Codex plugin export.
- Runtime learning schemas and candidate folders.
- HVAC workflow skills and generated child skills.
- Reviewed OpenStudio SDK knowledge packs.
- Packaging north-star plan for stable `pip install` and marketplace agentic
  installation paths.

## Development Setup

From this repository root:

```bash
python -m pip install -e ".[dev,standalone]"
```

Use `.[dev,standalone]` for full local harness development. The `standalone`
extra installs the optional AUTOMA-AI and Streamlit dependencies used by
`agent.py`, `ui.py`, and tests that exercise the local A2A agent path.

Install the runtime package after it is published:

```bash
python -m pip install openstudio-ai
openstudio-ai install-runtime
OPENSTUDIO_PATH=/path/to/openstudio openstudio-ai doctor
openstudio-ai-mcp --transport stdio
```

OpenStudio AI requires both the PyPI `openstudio` Python package, installed as
a dependency of `openstudio-ai`, and the native OpenStudio application/CLI. Set
`OPENSTUDIO_PATH` when the CLI is not on `PATH`.

The base package is the recommended install for Claude Code, Codex, and other
marketplace-style host integrations. It intentionally does not install
AUTOMA-AI or Streamlit. To run the standalone local AI app, install:

```bash
python -m pip install "openstudio-ai[standalone]"
python agent.py
streamlit run ui.py
```

Standalone mode requires user-provided LLM configuration, such as API keys or
model endpoint settings, in the local environment.

Run focused tests:

```bash
python -m pytest -q \
  tests/test_mcp_openstudio_smoke.py \
  tests/test_openstudio_sdk_docs.py \
  tests/test_openstudio_learning_pipeline.py \
  tests/test_openstudio_codex_adapter.py \
  tests/test_openstudio_claude_code_adapter.py
```

Start the MCP server in stdio mode:

```bash
openstudio-ai-mcp --transport stdio
```

Export local development plugins:

```bash
python -m adapters.claude_code_adapter export-plugin \
  --output-dir /tmp/openstudio-ai-claude-plugin

python -m adapters.codex_adapter export-plugin \
  --output-dir /tmp/openstudio-ai-codex-plugin
```

Export marketplace-oriented plugins that expect an installed runtime command:

```bash
python -m adapters.claude_code_adapter export-plugin \
  --output-dir /tmp/openstudio-ai-claude-plugin \
  --runtime-mode marketplace

python -m adapters.codex_adapter export-plugin \
  --output-dir /tmp/openstudio-ai-codex-plugin \
  --runtime-mode marketplace
```

## Key Docs

- [Harness Details](docs/HARNESS_DETAILS.md)
- [Packaging North Star](docs/PACKAGING_NORTHSTAR.md)
- [Runtime Installation Contract](docs/RUNTIME_INSTALLATION_CONTRACT.md)
- [Marketplace Install Guide](docs/MARKETPLACE_INSTALL_GUIDE.md)
- [PyPI Release Guide](docs/RELEASE.md)
- [Developer Guidance](docs/DEVELOPER_GUIDANCE.md)

## Runtime State

Local runtime state is intentionally ignored by Git:

- `.openstudio_mcp_workspace/`
- `.openstudio_ai_blackboards/`
- `logs/`
- `outputs/`

The MCP runtime uses local SQLite metadata and filesystem workspaces for large
OSM, SQL, and log artifacts.
