Metadata-Version: 2.4
Name: ddr-docs
Version: 0.2.1
Summary: CLI-first FileMaker DDR extraction and analysis toolkit
Author: DDR-Docs Contributors
License-Expression: MIT
Project-URL: Homepage, https://github.com/Nuosis/FM2WEB_CLI
Project-URL: Repository, https://github.com/Nuosis/FM2WEB_CLI
Keywords: filemaker,ddr,documentation,cli,analysis
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: jsonschema>=4.19.0
Requires-Dist: jinja2>=3.1.0
Requires-Dist: lxml>=5.0.0
Requires-Dist: pydantic>=2.5.0
Requires-Dist: pydantic-settings>=2.1.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: PyYAML>=6.0.0
Requires-Dist: rich>=13.0.0
Requires-Dist: typer>=0.9.0
Provides-Extra: analyzer
Requires-Dist: httpx>=0.25.0; extra == "analyzer"
Requires-Dist: langfuse>=2.0.0; extra == "analyzer"
Requires-Dist: openai>=1.0.0; extra == "analyzer"
Requires-Dist: pydantic-ai>=0.0.14; extra == "analyzer"
Requires-Dist: pyttsx3>=2.90; extra == "analyzer"
Requires-Dist: redis>=5.0.0; extra == "analyzer"
Requires-Dist: rq>=1.15.0; extra == "analyzer"
Requires-Dist: sqlite-vec>=0.1.0; extra == "analyzer"
Requires-Dist: sqlalchemy>=2.0.0; extra == "analyzer"
Requires-Dist: supabase>=2.0.0; extra == "analyzer"
Requires-Dist: vosk>=0.3.45; (sys_platform != "darwin" or platform_machine != "arm64") and extra == "analyzer"
Provides-Extra: dev
Requires-Dist: build>=1.2.2; extra == "dev"
Requires-Dist: pytest>=7.4.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Dynamic: license-file

# FM2WEB_CLI

Standalone CLI-first extraction of the `ddr-docs` toolkit from the broader FM2Web repo.

This repo is meant to be the first private-repo candidate Marcus can own separately. It keeps the Python CLI, extraction pipeline, SQLite ingestion, and analyzer-backed analysis flows. It intentionally drops the desktop/Tauri app, Streamlit UI, and other non-CLI project baggage.

## What this repo includes

- `ddr_docs/`, the CLI and DDR extraction pipeline
- `analyzer/`, the SQLite-backed ingestion and analysis services used by CLI analysis commands
- `scripts/`, extractor and rendering scripts invoked by the pipeline
- `tests/`, CLI, extractor, ingestion, pipeline, and smoke tests
- `docs/`, architecture and schema notes still relevant to the CLI/analyzer workflow

## What this repo intentionally excludes

- desktop/Tauri app code
- Streamlit UI
- export2web prompt packs and workflow assets
- playgrounds, bundled build artifacts, temp outputs, and egg metadata
- analyzer API server and DAG workflow runtime from the original monorepo

## Package identity

- Repository name: `FM2WEB_CLI`
- Python package name: `ddr-docs`
- Console command: `ddr-docs`

Keeping the package name avoids unnecessary churn for the CLI while making the repo identity clearly standalone.

## Install

### From a local checkout

```bash
python -m pip install -e .
# or with analyzer extras
python -m pip install -e '.[analyzer,dev]'
```

## Quick start

### Generate extracted docs from a DDR XML file

```bash
ddr-docs generate /path/to/file.ddr.xml -o ./out/ddr-run
```

### Run the full analyzer-backed flow

```bash
ddr-docs analyze full-analysis \
  --input /path/to/file.ddr.xml \
  --output-dir ./out/full-analysis \
  --sqlite-path ./out/full-analysis/fm2web.sqlite3
```

## Common commands

```bash
ddr-docs --help
ddr-docs generate --help
ddr-docs analyze --help
ddr-docs analyze full-analysis --help
```

## Development

Run a focused validation pass:

```bash
python -m pytest \
  tests/test_cli_full_analysis.py \
  tests/test_cli_optional_deps.py \
  tests/test_pipeline.py \
  tests/test_ingestion_idempotency.py \
  tests/test_ingestion_offline_policy.py \
  tests/test_smoke.py
```

Build package artifacts:

```bash
python -m build
```

## Notes on extraction scope

This repo was extracted from `FM2Web` as a practical first standalone candidate, not a full architectural rewrite. A few internals still reflect the original FM2Web naming and workspace assumptions.

The biggest known coupling is that the pipeline still depends on top-level `scripts/` helpers at runtime, so source-checkout usage is the most trustworthy path for now.

## License

MIT
