PlanOpticon
Add MIT license, PyPI packaging, CI/CD pipelines, and docs site - MIT License, Copyright (c) 2025 CONFLICT LLC - pyproject.toml with full metadata, optional deps [pdf,gpu,cloud,dev,all] - GitHub Actions: CI (test matrix), PyPI publish, binary releases, docs deploy - MkDocs Material docs site for planopticon.dev with CNAME - Docs: installation, quickstart, configuration, CLI reference, architecture, API reference, user guides, contributing guide - Binary release pipeline for macOS (arm64/x86), Linux, Windows via PyInstaller
Commit
f0106a3cb04f75ee93a9e33fb1d43b8178f8c3af81eca8ce0627120874094f9c
Parent
ccf32cc46510c70…
26 files changed
+62
+39
+44
+69
+21
+4
+1
+7
+2
+7
+37
+43
+21
+20
+58
+7
+3
+32
+65
+44
+40
+83
+18
+26
+33
+2
+
.github/workflows/ci.yml
+
.github/workflows/docs.yml
+
.github/workflows/publish.yml
+
.github/workflows/release-binaries.yml
+
LICENSE
+
MANIFEST.in
+
docs/CNAME
+
docs/api/analyzers.md
+
docs/api/models.md
+
docs/api/providers.md
+
docs/architecture/overview.md
+
docs/architecture/pipeline.md
+
docs/architecture/providers.md
+
docs/cli-reference.md
+
docs/contributing.md
+
docs/getting-started/configuration.md
+
docs/getting-started/installation.md
+
docs/getting-started/quickstart.md
+
docs/guide/batch.md
+
docs/guide/cloud-sources.md
+
docs/guide/output-formats.md
+
docs/guide/single-video.md
+
docs/index.md
+
mkdocs.yml
+
pyproject.toml
+
setup.py
+62
| --- a/.github/workflows/ci.yml | ||
| +++ b/.github/workflows/ci.yml | ||
| @@ -0,0 +1,62 @@ | ||
| 1 | +name: CI | |
| 2 | + | |
| 3 | +on: | |
| 4 | + push: | |
| 5 | + branches: [main] | |
| 6 | + pull_request: | |
| 7 | + branches: [main] | |
| 8 | + | |
| 9 | +jobs: | |
| 10 | + test: | |
| 11 | + runs-on: ${{ matrix.os }} | |
| 12 | + strategy: | |
| 13 | + matrix: | |
| 14 | + os: [ubuntu-latest, macos-latest] | |
| 15 | + python-version: ["3.10", "3.11", "3.12", "3.13"] | |
| 16 | + steps: | |
| 17 | + 4 | |
| 18 | + | |
| 19 | + - name: checkout@v6 | |
| 20 | + | |
| 21 | + - name: Set up Python ${{ matrix.python-version }} | |
| 22 | + uses: actions/setup-python@v5 | |
| 23 | +pip instwith: | |
| 24 | + python-version: ${{ matrix.python-version }} | |
| 25 | + | |
| 26 | + - name: Install system dependencies (Ubuntu) | |
| 27 | + if: runner.os == 'Linux' | |
| 28 | + run: | | |
| 29 | + sudo apt-get update | |
| 30 | + sudo apt-get install -y ffmpeg libsndfile1 | |
| 31 | + | |
| 32 | + - name: Install system dependencies (macOS) | |
| 33 | + if: runner.os == 'macOS' | |
| 34 | + run: brew install ffmpeg libsndfile | |
| 35 | + | |
| 36 | + - name: Install Python dependencies | |
| 37 | + run: | | |
| 38 | + python -m pip install --upgrade pip | |
| 39 | + pip install -e ".[dev]" | |
| 40 | + | |
| 41 | + - name: Run tests | |
| 42 | + run: pytest tests/ -v --tb=short | |
| 43 | + | |
| 44 | + - name: Check code style | |
| 45 | + run: ruff check video_processor/ | |
| 46 | + | |
| 47 | + lint: | |
| 48 | + runs-on: ubu4- uses: actions/checkout@v6 | |
| 49 | + | |
| 50 | + - uses: actions/setup-python@v5 | |
| 51 | +pip instwith: | |
| 52 | + python-version: "3.12" | |
| 53 | + | |
| 54 | + - name: Install dependencies | |
| 55 | + run: | | |
| 56 | + pip install ruff mypy | |
| 57 | + | |
| 58 | + - name: Ruff | |
| 59 | + run: ruff check video_processor/ | |
| 60 | + | |
| 61 | + - name: Type check | |
| 62 | + run: mypy video_processor/ --igno |
| --- a/.github/workflows/ci.yml | |
| +++ b/.github/workflows/ci.yml | |
| @@ -0,0 +1,62 @@ | |
| --- a/.github/workflows/ci.yml | |
| +++ b/.github/workflows/ci.yml | |
| @@ -0,0 +1,62 @@ | |
| 1 | name: CI |
| 2 | |
| 3 | on: |
| 4 | push: |
| 5 | branches: [main] |
| 6 | pull_request: |
| 7 | branches: [main] |
| 8 | |
| 9 | jobs: |
| 10 | test: |
| 11 | runs-on: ${{ matrix.os }} |
| 12 | strategy: |
| 13 | matrix: |
| 14 | os: [ubuntu-latest, macos-latest] |
| 15 | python-version: ["3.10", "3.11", "3.12", "3.13"] |
| 16 | steps: |
| 17 | 4 |
| 18 | |
| 19 | - name: checkout@v6 |
| 20 | |
| 21 | - name: Set up Python ${{ matrix.python-version }} |
| 22 | uses: actions/setup-python@v5 |
| 23 | pip instwith: |
| 24 | python-version: ${{ matrix.python-version }} |
| 25 | |
| 26 | - name: Install system dependencies (Ubuntu) |
| 27 | if: runner.os == 'Linux' |
| 28 | run: | |
| 29 | sudo apt-get update |
| 30 | sudo apt-get install -y ffmpeg libsndfile1 |
| 31 | |
| 32 | - name: Install system dependencies (macOS) |
| 33 | if: runner.os == 'macOS' |
| 34 | run: brew install ffmpeg libsndfile |
| 35 | |
| 36 | - name: Install Python dependencies |
| 37 | run: | |
| 38 | python -m pip install --upgrade pip |
| 39 | pip install -e ".[dev]" |
| 40 | |
| 41 | - name: Run tests |
| 42 | run: pytest tests/ -v --tb=short |
| 43 | |
| 44 | - name: Check code style |
| 45 | run: ruff check video_processor/ |
| 46 | |
| 47 | lint: |
| 48 | runs-on: ubu4- uses: actions/checkout@v6 |
| 49 | |
| 50 | - uses: actions/setup-python@v5 |
| 51 | pip instwith: |
| 52 | python-version: "3.12" |
| 53 | |
| 54 | - name: Install dependencies |
| 55 | run: | |
| 56 | pip install ruff mypy |
| 57 | |
| 58 | - name: Ruff |
| 59 | run: ruff check video_processor/ |
| 60 | |
| 61 | - name: Type check |
| 62 | run: mypy video_processor/ --igno |
| --- a/.github/workflows/docs.yml | ||
| +++ b/.github/workflows/docs.yml | ||
| @@ -0,0 +1,39 @@ | ||
| 1 | +name: Deploy Docs | |
| 2 | + | |
| 3 | +on: | |
| 4 | + push: | |
| 5 | + branches: [main] | |
| 6 | + paths: | |
| 7 | + - "docs/**" | |
| 8 | + - "mkdocs.yml" | |
| 9 | + | |
| 10 | +permissions: | |
| 11 | + contents: write | |
| 12 | + pages: write | |
| 13 | + id-token: write | |
| 14 | + | |
| 15 | +jobs: | |
| 16 | + deploy: | |
| 17 | + runs-on: ubuntu-latest | |
| 18 | + steps: | |
| 19 | + 4e: Deploy Docs | |
| 20 | + | |
| 21 | +on: | |
| 22 | + push: | |
| 23 | + branches: [main] | |
| 24 | + paths: | |
| 25 | + - "docs/**" | |
| 26 | + - "mkdocs.yml" | |
| 27 | + | |
| 28 | +permissions: | |
| 29 | + contents: write | |
| 30 | + pages: write | |
| 31 | + id-token: write | |
| 32 | + | |
| 33 | +jobs: | |
| 34 | + deploy: | |
| 35 | + runs-on: ubuntu-latest | |
| 36 | + steps: | |
| 37 | + - uses: actions/checkout@v6 | |
| 38 | + | |
| 39 | + - u5es: actions/setup-pythn |
| --- a/.github/workflows/docs.yml | |
| +++ b/.github/workflows/docs.yml | |
| @@ -0,0 +1,39 @@ | |
| --- a/.github/workflows/docs.yml | |
| +++ b/.github/workflows/docs.yml | |
| @@ -0,0 +1,39 @@ | |
| 1 | name: Deploy Docs |
| 2 | |
| 3 | on: |
| 4 | push: |
| 5 | branches: [main] |
| 6 | paths: |
| 7 | - "docs/**" |
| 8 | - "mkdocs.yml" |
| 9 | |
| 10 | permissions: |
| 11 | contents: write |
| 12 | pages: write |
| 13 | id-token: write |
| 14 | |
| 15 | jobs: |
| 16 | deploy: |
| 17 | runs-on: ubuntu-latest |
| 18 | steps: |
| 19 | 4e: Deploy Docs |
| 20 | |
| 21 | on: |
| 22 | push: |
| 23 | branches: [main] |
| 24 | paths: |
| 25 | - "docs/**" |
| 26 | - "mkdocs.yml" |
| 27 | |
| 28 | permissions: |
| 29 | contents: write |
| 30 | pages: write |
| 31 | id-token: write |
| 32 | |
| 33 | jobs: |
| 34 | deploy: |
| 35 | runs-on: ubuntu-latest |
| 36 | steps: |
| 37 | - uses: actions/checkout@v6 |
| 38 | |
| 39 | - u5es: actions/setup-pythn |
| --- a/.github/workflows/publish.yml | ||
| +++ b/.github/workflows/publish.yml | ||
| @@ -0,0 +1,44 @@ | ||
| 1 | +name: Publish to PyPI | |
| 2 | + | |
| 3 | +on: | |
| 4 | + release: | |
| 5 | + types: [published] | |
| 6 | + | |
| 7 | +permissions: | |
| 8 | + id-token: write | |
| 9 | + | |
| 10 | +jobs: | |
| 11 | + build: | |
| 12 | + runs-on: ubuntu-latest | |
| 13 | + steps: | |
| 14 | + 4- uses: actions/checkout@v6 | |
| 15 | + | |
| 16 | + - uses: actions/setup-python@v5 | |
| 17 | + with: | |
| 18 | + v6 | |
| 19 | + with: | |
| 20 | + python-version: "3.12" | |
| 21 | + | |
| 22 | + - name: Install build tools | |
| 23 | + run: pip install build | |
| 24 | + | |
| 25 | + - name: Build package | |
| 26 | + run: python -m build | |
| 27 | + | |
| 28 | + - name: Upload artifacts | |
| 29 | + uses4 actions/upload-artifact@v6 | |
| 30 | + with: | |
| 31 | + name: dist | |
| 32 | + path: dist/ | |
| 33 | + | |
| 34 | + publish-pypi: | |
| 35 | + needs: build | |
| 36 | + runs-on: ubuntu-latest | |
| 37 | + environment: pypi | |
| 38 | + steps: | |
| 39 | + - name: Downlo4 actions/upload-artifact@v6 | |
| 40 | + t | |
| 41 | + path: dist/ | |
| 42 | + | |
| 43 | + - name: Publish to PyPI | |
| 44 | + uses: pypa/gh-acti |
| --- a/.github/workflows/publish.yml | |
| +++ b/.github/workflows/publish.yml | |
| @@ -0,0 +1,44 @@ | |
| --- a/.github/workflows/publish.yml | |
| +++ b/.github/workflows/publish.yml | |
| @@ -0,0 +1,44 @@ | |
| 1 | name: Publish to PyPI |
| 2 | |
| 3 | on: |
| 4 | release: |
| 5 | types: [published] |
| 6 | |
| 7 | permissions: |
| 8 | id-token: write |
| 9 | |
| 10 | jobs: |
| 11 | build: |
| 12 | runs-on: ubuntu-latest |
| 13 | steps: |
| 14 | 4- uses: actions/checkout@v6 |
| 15 | |
| 16 | - uses: actions/setup-python@v5 |
| 17 | with: |
| 18 | v6 |
| 19 | with: |
| 20 | python-version: "3.12" |
| 21 | |
| 22 | - name: Install build tools |
| 23 | run: pip install build |
| 24 | |
| 25 | - name: Build package |
| 26 | run: python -m build |
| 27 | |
| 28 | - name: Upload artifacts |
| 29 | uses4 actions/upload-artifact@v6 |
| 30 | with: |
| 31 | name: dist |
| 32 | path: dist/ |
| 33 | |
| 34 | publish-pypi: |
| 35 | needs: build |
| 36 | runs-on: ubuntu-latest |
| 37 | environment: pypi |
| 38 | steps: |
| 39 | - name: Downlo4 actions/upload-artifact@v6 |
| 40 | t |
| 41 | path: dist/ |
| 42 | |
| 43 | - name: Publish to PyPI |
| 44 | uses: pypa/gh-acti |
| --- a/.github/workflows/release-binaries.yml | ||
| +++ b/.github/workflows/release-binaries.yml | ||
| @@ -0,0 +1,69 @@ | ||
| 1 | +name: Build Release Binaries | |
| 2 | + | |
| 3 | +on: | |
| 4 | + release: | |
| 5 | + types: [published] | |
| 6 | + | |
| 7 | +permissions: | |
| 8 | + contents: write | |
| 9 | + | |
| 10 | +jobs: | |
| 11 | + build: | |
| 12 | + strategy: | |
| 13 | + matrix: | |
| 14 | + include: | |
| 15 | + - os: ubuntu-latest | |
| 16 | + target: linux-x86_64 | |
| 17 | + ext: "" | |
| 18 | + - os: macos-latest | |
| 19 | + target: macos-arm64 | |
| 20 | + ext: "" | |
| 21 | + - os: macos-13 | |
| 22 | + target: macos-x86_64 | |
| 23 | + ext: "" | |
| 24 | + - os: windows-latest | |
| 25 | + target: windows-x86_64 | |
| 26 | + ext: ".exe" | |
| 27 | + | |
| 28 | + runs-on: ${{ matrix.os }} | |
| 29 | + steps: | |
| 30 | + 4- uses: actions/checkout@v6 | |
| 31 | + | |
| 32 | + - uses: actions/setup-python@v5 | |
| 33 | + with: | |
| 34 | + python-version: "3.12" | |
| 35 | + | |
| 36 | + - name: Install system dependencies (Ubuntu) | |
| 37 | + if: runner.os == 'Linux' | |
| 38 | + run: | | |
| 39 | + sudo apt-get update | |
| 40 | + sudo apt-get install -y ffmpeg libsndfile1 | |
| 41 | + | |
| 42 | + - name: Install system dependencies (macOS) | |
| 43 | + if: runner.os == 'macOS' | |
| 44 | + run: brew install ffmpeg libsndfile | |
| 45 | + | |
| 46 | + - name: Install dependencies | |
| 47 | + run: | | |
| 48 | + pip install -e ".[all]" | |
| 49 | + pip install pyinstaller | |
| 50 | + | |
| 51 | + - name: Build binary | |
| 52 | + run: | | |
| 53 | + pyinstaller \ | |
| 54 | + --name planopticon-${{ matrix.target }} \ | |
| 55 | + --onefile \ | |
| 56 | + --console \ | |
| 57 | + --hidden-import=video_processor \ | |
| 58 | + --hidden-import=video_processor.cli.commands \ | |
| 59 | + --hidden-import=video_processor.providers \ | |
| 60 | + --hidden-import=video_processor.providers.openai_provider \ | |
| 61 | + --hidden-import=video_processor.providers.anthropic_provider \ | |
| 62 | + --hidden-import=video_processor.providers.gemini_provider \ | |
| 63 | + --collect-all video_processor \ | |
| 64 | + video_processor/cli/commands.py | |
| 65 | + | |
| 66 | + - name: Upload binary to release | |
| 67 | + uses: softprops/action-gh-release@v2 | |
| 68 | + with: | |
| 69 | + files: dist/planopticon-${{ matrix. |
| --- a/.github/workflows/release-binaries.yml | |
| +++ b/.github/workflows/release-binaries.yml | |
| @@ -0,0 +1,69 @@ | |
| --- a/.github/workflows/release-binaries.yml | |
| +++ b/.github/workflows/release-binaries.yml | |
| @@ -0,0 +1,69 @@ | |
| 1 | name: Build Release Binaries |
| 2 | |
| 3 | on: |
| 4 | release: |
| 5 | types: [published] |
| 6 | |
| 7 | permissions: |
| 8 | contents: write |
| 9 | |
| 10 | jobs: |
| 11 | build: |
| 12 | strategy: |
| 13 | matrix: |
| 14 | include: |
| 15 | - os: ubuntu-latest |
| 16 | target: linux-x86_64 |
| 17 | ext: "" |
| 18 | - os: macos-latest |
| 19 | target: macos-arm64 |
| 20 | ext: "" |
| 21 | - os: macos-13 |
| 22 | target: macos-x86_64 |
| 23 | ext: "" |
| 24 | - os: windows-latest |
| 25 | target: windows-x86_64 |
| 26 | ext: ".exe" |
| 27 | |
| 28 | runs-on: ${{ matrix.os }} |
| 29 | steps: |
| 30 | 4- uses: actions/checkout@v6 |
| 31 | |
| 32 | - uses: actions/setup-python@v5 |
| 33 | with: |
| 34 | python-version: "3.12" |
| 35 | |
| 36 | - name: Install system dependencies (Ubuntu) |
| 37 | if: runner.os == 'Linux' |
| 38 | run: | |
| 39 | sudo apt-get update |
| 40 | sudo apt-get install -y ffmpeg libsndfile1 |
| 41 | |
| 42 | - name: Install system dependencies (macOS) |
| 43 | if: runner.os == 'macOS' |
| 44 | run: brew install ffmpeg libsndfile |
| 45 | |
| 46 | - name: Install dependencies |
| 47 | run: | |
| 48 | pip install -e ".[all]" |
| 49 | pip install pyinstaller |
| 50 | |
| 51 | - name: Build binary |
| 52 | run: | |
| 53 | pyinstaller \ |
| 54 | --name planopticon-${{ matrix.target }} \ |
| 55 | --onefile \ |
| 56 | --console \ |
| 57 | --hidden-import=video_processor \ |
| 58 | --hidden-import=video_processor.cli.commands \ |
| 59 | --hidden-import=video_processor.providers \ |
| 60 | --hidden-import=video_processor.providers.openai_provider \ |
| 61 | --hidden-import=video_processor.providers.anthropic_provider \ |
| 62 | --hidden-import=video_processor.providers.gemini_provider \ |
| 63 | --collect-all video_processor \ |
| 64 | video_processor/cli/commands.py |
| 65 | |
| 66 | - name: Upload binary to release |
| 67 | uses: softprops/action-gh-release@v2 |
| 68 | with: |
| 69 | files: dist/planopticon-${{ matrix. |
A
LICENSE
+21
| --- a/LICENSE | ||
| +++ b/LICENSE | ||
| @@ -0,0 +1,21 @@ | ||
| 1 | +MIT License | |
| 2 | + | |
| 3 | +Copyright (c) 2025 CONFLICT LLC. All rights reserved. | |
| 4 | + | |
| 5 | +Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6 | +of this software and associated documentation files (the "Software"), to deal | |
| 7 | +in the Software without restriction, including without limitation the rights | |
| 8 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 9 | +copies of the Software, and to permit persons to whom the Software is | |
| 10 | +furnished to do so, subject to the following conditions: | |
| 11 | + | |
| 12 | +The above copyright notice and this permission notice shall be included in all | |
| 13 | +copies or substantial portions of the Software. | |
| 14 | + | |
| 15 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 16 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 17 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 18 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 19 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 20 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 21 | +SOFTWARE. |
| --- a/LICENSE | |
| +++ b/LICENSE | |
| @@ -0,0 +1,21 @@ | |
| --- a/LICENSE | |
| +++ b/LICENSE | |
| @@ -0,0 +1,21 @@ | |
| 1 | MIT License |
| 2 | |
| 3 | Copyright (c) 2025 CONFLICT LLC. All rights reserved. |
| 4 | |
| 5 | Permission is hereby granted, free of charge, to any person obtaining a copy |
| 6 | of this software and associated documentation files (the "Software"), to deal |
| 7 | in the Software without restriction, including without limitation the rights |
| 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| 9 | copies of the Software, and to permit persons to whom the Software is |
| 10 | furnished to do so, subject to the following conditions: |
| 11 | |
| 12 | The above copyright notice and this permission notice shall be included in all |
| 13 | copies or substantial portions of the Software. |
| 14 | |
| 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| 21 | SOFTWARE. |
+4
| --- a/MANIFEST.in | ||
| +++ b/MANIFEST.in | ||
| @@ -0,0 +1,4 @@ | ||
| 1 | +include LICENSE | |
| 2 | +include README.md | |
| 3 | +include requirements.txt | |
| 4 | +recursive-include video_processor *.py |
| --- a/MANIFEST.in | |
| +++ b/MANIFEST.in | |
| @@ -0,0 +1,4 @@ | |
| --- a/MANIFEST.in | |
| +++ b/MANIFEST.in | |
| @@ -0,0 +1,4 @@ | |
| 1 | include LICENSE |
| 2 | include README.md |
| 3 | include requirements.txt |
| 4 | recursive-include video_processor *.py |
+1
| --- a/docs/CNAME | ||
| +++ b/docs/CNAME | ||
| @@ -0,0 +1 @@ | ||
| 1 | +planopticon.dev |
| --- a/docs/CNAME | |
| +++ b/docs/CNAME | |
| @@ -0,0 +1 @@ | |
| --- a/docs/CNAME | |
| +++ b/docs/CNAME | |
| @@ -0,0 +1 @@ | |
| 1 | planopticon.dev |
| --- a/docs/api/analyzers.md | ||
| +++ b/docs/api/analyzers.md | ||
| @@ -0,0 +1,7 @@ | ||
| 1 | +# Analyzers API Reference | |
| 2 | + | |
| 3 | +::: video_processor.analyzers.diagram_analyzer | |
| 4 | + | |
| 5 | +::: video_processor.analyzers.content_analyzer | |
| 6 | + | |
| 7 | +::: video_processor |
| --- a/docs/api/analyzers.md | |
| +++ b/docs/api/analyzers.md | |
| @@ -0,0 +1,7 @@ | |
| --- a/docs/api/analyzers.md | |
| +++ b/docs/api/analyzers.md | |
| @@ -0,0 +1,7 @@ | |
| 1 | # Analyzers API Reference |
| 2 | |
| 3 | ::: video_processor.analyzers.diagram_analyzer |
| 4 | |
| 5 | ::: video_processor.analyzers.content_analyzer |
| 6 | |
| 7 | ::: video_processor |
+2
| --- a/docs/api/models.md | ||
| +++ b/docs/api/models.md | ||
| @@ -0,0 +1,2 @@ | ||
| 1 | +# Models API Reference | |
| 2 | + |
| --- a/docs/api/models.md | |
| +++ b/docs/api/models.md | |
| @@ -0,0 +1,2 @@ | |
| --- a/docs/api/models.md | |
| +++ b/docs/api/models.md | |
| @@ -0,0 +1,2 @@ | |
| 1 | # Models API Reference |
| 2 |
| --- a/docs/api/providers.md | ||
| +++ b/docs/api/providers.md | ||
| @@ -0,0 +1,7 @@ | ||
| 1 | +# Providers API Reference | |
| 2 | + | |
| 3 | +::: video_processor.providers.base | |
| 4 | + | |
| 5 | +::: video_processor.providers.manager | |
| 6 | + | |
| 7 | +::: video_processor.providers.discovery |
| --- a/docs/api/providers.md | |
| +++ b/docs/api/providers.md | |
| @@ -0,0 +1,7 @@ | |
| --- a/docs/api/providers.md | |
| +++ b/docs/api/providers.md | |
| @@ -0,0 +1,7 @@ | |
| 1 | # Providers API Reference |
| 2 | |
| 3 | ::: video_processor.providers.base |
| 4 | |
| 5 | ::: video_processor.providers.manager |
| 6 | |
| 7 | ::: video_processor.providers.discovery |
| --- a/docs/architecture/overview.md | ||
| +++ b/docs/architecture/overview.md | ||
| @@ -0,0 +1,37 @@ | ||
| 1 | +# Architecture Overview | |
| 2 | + | |
| 3 | +## System diagram | |
| 4 | + | |
| 5 | +```mermaid | |
| 6 | +graph TD | |
| 7 | + A[Video Input] --> B[Frame Extractor] | |
| 8 | + A --> C[Audio Extractor] | |
| 9 | + B --> D[Diagram Analyzer] | |
| 10 | + C --> E[Transcription] | |
| 11 | + D --> F[Knowledge Graph] | |
| 12 | + E --> F | |
| 13 | + E --> G[Key Point Extractor] | |
| 14 | + E --> H[Action Item Detector] | |
| 15 | + D --> I[Content Analyzer] | |
| 16 | + E --> I | |
| 17 | + F --> J[Plan Generator] | |
| 18 | + G --> J | |
| 19 | + H --> J | |
| 20 | + I --> J | |
| 21 | +bgraph Output & Export | |
| 22 | + J J --> L[HTML Report] | |
| 23 | + --> L[HTML Report] | |
| 24 | + D --> N[Mermaid/SVG/PNG Export] | |
| 25 | +``` | |
| 26 | + | |
| 27 | +## Module structure | |
| 28 | + | |
| 29 | +``` | |
| 30 | +video_processor/ | |
| 31 | +├── cli/ # CLI commands (Click) | |
| 32 | +│ └── commands.py | |
| 33 | +├── le Notes (macOS) | |
| 34 | +├── extractors/ # Media extraction | |
| 35 | +│ ├── frame_extractor.py # Video → frames | |
| 36 | +│ └── audio_extractor.py # Video → WAV | |
| 37 | +├── anal |
| --- a/docs/architecture/overview.md | |
| +++ b/docs/architecture/overview.md | |
| @@ -0,0 +1,37 @@ | |
| --- a/docs/architecture/overview.md | |
| +++ b/docs/architecture/overview.md | |
| @@ -0,0 +1,37 @@ | |
| 1 | # Architecture Overview |
| 2 | |
| 3 | ## System diagram |
| 4 | |
| 5 | ```mermaid |
| 6 | graph TD |
| 7 | A[Video Input] --> B[Frame Extractor] |
| 8 | A --> C[Audio Extractor] |
| 9 | B --> D[Diagram Analyzer] |
| 10 | C --> E[Transcription] |
| 11 | D --> F[Knowledge Graph] |
| 12 | E --> F |
| 13 | E --> G[Key Point Extractor] |
| 14 | E --> H[Action Item Detector] |
| 15 | D --> I[Content Analyzer] |
| 16 | E --> I |
| 17 | F --> J[Plan Generator] |
| 18 | G --> J |
| 19 | H --> J |
| 20 | I --> J |
| 21 | bgraph Output & Export |
| 22 | J J --> L[HTML Report] |
| 23 | --> L[HTML Report] |
| 24 | D --> N[Mermaid/SVG/PNG Export] |
| 25 | ``` |
| 26 | |
| 27 | ## Module structure |
| 28 | |
| 29 | ``` |
| 30 | video_processor/ |
| 31 | ├── cli/ # CLI commands (Click) |
| 32 | │ └── commands.py |
| 33 | ├── le Notes (macOS) |
| 34 | ├── extractors/ # Media extraction |
| 35 | │ ├── frame_extractor.py # Video → frames |
| 36 | │ └── audio_extractor.py # Video → WAV |
| 37 | ├── anal |
| --- a/docs/architecture/pipeline.md | ||
| +++ b/docs/architecture/pipeline.md | ||
| @@ -0,0 +1,43 @@ | ||
| 1 | +# Processing Pipeline | |
| 2 | + | |
| 3 | +## Single video pipeline | |
| 4 | + | |
| 5 | +```mermaid | |
| 6 | +sequenceDiagram | |
| 7 | + participant CLI | |
| 8 | + participant Pipeline | |
| 9 | + participant FrameExtractor | |
| 10 | + participant AudioExtractor | |
| 11 | + participant Provider | |
| 12 | + participant DiagramAnalyzer | |
| 13 | + participant KnowledgeGraph | |
| 14 | + | |
| 15 | + CLI->>Pipeli Pipeline->>FrameExtractor: extract_frames() | |
| 16 | + Pipeline->>AudioExtractor: extract_audio() | |
| 17 | + Pipeline->>ProvidPipeline->>Diagram | |
| 18 | + loop Each frame | |
| 19 | +classify (vision) | |
| 20 | + alt High confidence diagram | |
| 21 | + DiagramAnalyzer->>Provielse Medium confidence | |
| 22 | + DiagramAnalyzer-->>Pipeline: screengrab fallbacaph: register_source() | |
| 23 | + Pipeline->>KnowledgeGraph: process_transcript() | |
| 24 | +Pipeline->>Provider: extract key points | |
| 25 | + Pipeline->>Provider: extract action items | |
| 26 | + Pipeline->>Pipeline: generate reportStep 2: Filter people framee Step 1: Extract frames | |
| 27 | + ->>CLI: VideoManifest | |
| 28 | +```rocess_transcript() | |
| 29 | + Pipelincommandcript() | |
| 30 | + Pipeline->>Knowledge: | |
| 31 | + | |
| 32 | +1. ote over Pipeline: S for matching video `K@y0,R:()` with error handling | |
| 33 | +3. M@~~,3e: across all completed videos | |
| 34 | +4. Generate batch summary with aggregated stats | |
| 35 | +5. Write batch manifest | |
| 36 | + | |
| 37 | +## Error handling | |
| 38 | + | |
| 39 | +- Individual video failures don't stop the batch | |
| 40 | +- Failed videos are logged with error details in the manifest | |
| 41 | +-M@2Zx,z:ures fall back to screengrabs | |
| 42 | +- LLM extraction failures returnP@2ae,1: | |
| 43 | +1Et6n6; |
| --- a/docs/architecture/pipeline.md | |
| +++ b/docs/architecture/pipeline.md | |
| @@ -0,0 +1,43 @@ | |
| --- a/docs/architecture/pipeline.md | |
| +++ b/docs/architecture/pipeline.md | |
| @@ -0,0 +1,43 @@ | |
| 1 | # Processing Pipeline |
| 2 | |
| 3 | ## Single video pipeline |
| 4 | |
| 5 | ```mermaid |
| 6 | sequenceDiagram |
| 7 | participant CLI |
| 8 | participant Pipeline |
| 9 | participant FrameExtractor |
| 10 | participant AudioExtractor |
| 11 | participant Provider |
| 12 | participant DiagramAnalyzer |
| 13 | participant KnowledgeGraph |
| 14 | |
| 15 | CLI->>Pipeli Pipeline->>FrameExtractor: extract_frames() |
| 16 | Pipeline->>AudioExtractor: extract_audio() |
| 17 | Pipeline->>ProvidPipeline->>Diagram |
| 18 | loop Each frame |
| 19 | classify (vision) |
| 20 | alt High confidence diagram |
| 21 | DiagramAnalyzer->>Provielse Medium confidence |
| 22 | DiagramAnalyzer-->>Pipeline: screengrab fallbacaph: register_source() |
| 23 | Pipeline->>KnowledgeGraph: process_transcript() |
| 24 | Pipeline->>Provider: extract key points |
| 25 | Pipeline->>Provider: extract action items |
| 26 | Pipeline->>Pipeline: generate reportStep 2: Filter people framee Step 1: Extract frames |
| 27 | ->>CLI: VideoManifest |
| 28 | ```rocess_transcript() |
| 29 | Pipelincommandcript() |
| 30 | Pipeline->>Knowledge: |
| 31 | |
| 32 | 1. ote over Pipeline: S for matching video `K@y0,R:()` with error handling |
| 33 | 3. M@~~,3e: across all completed videos |
| 34 | 4. Generate batch summary with aggregated stats |
| 35 | 5. Write batch manifest |
| 36 | |
| 37 | ## Error handling |
| 38 | |
| 39 | - Individual video failures don't stop the batch |
| 40 | - Failed videos are logged with error details in the manifest |
| 41 | -M@2Zx,z:ures fall back to screengrabs |
| 42 | - LLM extraction failures returnP@2ae,1: |
| 43 | 1Et6n6; |
| --- a/docs/architecture/providers.md | ||
| +++ b/docs/architecture/providers.md | ||
| @@ -0,0 +1,21 @@ | ||
| 1 | +# Provider System | |
| 2 | + | |
| 3 | +## Overview | |
| 4 | + | |
| 5 | +PlanOpticon supports multiple AI providers through a | |
| 6 | + | |
| 7 | +## Supported providers | |
| 8 | + | |
| 9 | +| Provider | Chat | Vision | Transcription | | |
| 10 | +|----------|---- | |
| 11 | +| OpenAI | GPT-4o, GPT-4 |ider System | |
| 12 | + | |
| 13 | +## Overv# Provider System | |
| 14 | + | |
| 15 | +## Overview | |
| 16 | + | |
| 17 | +P | | |
| 18 | +| Google Gemini | Gemini Flash/Pro | Gemini Flash/Pro | Gemini Flash | | |
| 19 | +|| — | | `XAI_API_KEY` | | |
| 20 | +| Ollama (local) | Any installed model | llava, moondr and| | |
| 21 | +| Transcription | |
| --- a/docs/architecture/providers.md | |
| +++ b/docs/architecture/providers.md | |
| @@ -0,0 +1,21 @@ | |
| --- a/docs/architecture/providers.md | |
| +++ b/docs/architecture/providers.md | |
| @@ -0,0 +1,21 @@ | |
| 1 | # Provider System |
| 2 | |
| 3 | ## Overview |
| 4 | |
| 5 | PlanOpticon supports multiple AI providers through a |
| 6 | |
| 7 | ## Supported providers |
| 8 | |
| 9 | | Provider | Chat | Vision | Transcription | |
| 10 | |----------|---- |
| 11 | | OpenAI | GPT-4o, GPT-4 |ider System |
| 12 | |
| 13 | ## Overv# Provider System |
| 14 | |
| 15 | ## Overview |
| 16 | |
| 17 | P | |
| 18 | | Google Gemini | Gemini Flash/Pro | Gemini Flash/Pro | Gemini Flash | |
| 19 | || — | | `XAI_API_KEY` | |
| 20 | | Ollama (local) | Any installed model | llava, moondr and| |
| 21 | | Transcription | |
+20
| --- a/docs/cli-reference.md | ||
| +++ b/docs/cli-reference.md | ||
| @@ -0,0 +1,20 @@ | ||
| 1 | +# CLI Reference | |
| 2 | + | |
| 3 | +## `planopticon analyze` | |
| 4 | + | |
| 5 | +Analyze a single video and extract structured knowledge. | |
| 6 | + | |
| 7 | +```bash | |
| 8 | +planopticon analyze [OPTIONS] | |
| 9 | +``` | |
| 10 | + | |
| 11 | +| Option | Type | Default | Description | | |
| 12 | +|--------|------|---------|-------------| | |
| 13 | +| `-i`, `--input` | PATH | *required* | Input video file path | | |
| 14 | +| `-o`, `--output` | PATH | *required* | Output directory | | |
| 15 | +| `--depth` | `basic\|standard\|comprehensive` | `standard` | Processing depth | | |
| 16 | +| `--focus` | TEXT | all | Comma-separated focus areas | | |
| 17 | +| `--use-gpu` | FLAG | off | Enable GPU acceleration | | |
| 18 | +| `--sampling-rate` | FLOAT | 0.5 | Frame sampling rate (fps) | | |
| 19 | +| `--change-threshold` | FLOAT | 0.15 | Visutitle `--title` | TEXT | auto | Report title | | |
| 20 | +| `-p`, `--provider` | `auto\ |
| --- a/docs/cli-reference.md | |
| +++ b/docs/cli-reference.md | |
| @@ -0,0 +1,20 @@ | |
| --- a/docs/cli-reference.md | |
| +++ b/docs/cli-reference.md | |
| @@ -0,0 +1,20 @@ | |
| 1 | # CLI Reference |
| 2 | |
| 3 | ## `planopticon analyze` |
| 4 | |
| 5 | Analyze a single video and extract structured knowledge. |
| 6 | |
| 7 | ```bash |
| 8 | planopticon analyze [OPTIONS] |
| 9 | ``` |
| 10 | |
| 11 | | Option | Type | Default | Description | |
| 12 | |--------|------|---------|-------------| |
| 13 | | `-i`, `--input` | PATH | *required* | Input video file path | |
| 14 | | `-o`, `--output` | PATH | *required* | Output directory | |
| 15 | | `--depth` | `basic\|standard\|comprehensive` | `standard` | Processing depth | |
| 16 | | `--focus` | TEXT | all | Comma-separated focus areas | |
| 17 | | `--use-gpu` | FLAG | off | Enable GPU acceleration | |
| 18 | | `--sampling-rate` | FLOAT | 0.5 | Frame sampling rate (fps) | |
| 19 | | `--change-threshold` | FLOAT | 0.15 | Visutitle `--title` | TEXT | auto | Report title | |
| 20 | | `-p`, `--provider` | `auto\ |
+58
| --- a/docs/contributing.md | ||
| +++ b/docs/contributing.md | ||
| @@ -0,0 +1,58 @@ | ||
| 1 | +# Contributing | |
| 2 | + | |
| 3 | +## Development setup | |
| 4 | + | |
| 5 | +```bash | |
| 6 | +git clone https://github.com/conflict-llc/PlanOpticon.git | |
| 7 | +cd PlanOpticon | |
| 8 | +python -m venv .venv | |
| 9 | +source .venv/bin/activate | |
| 10 | +pip install -e ".[dev]" | |
| 11 | +``` | |
| 12 | + | |
| 13 | +## Running tests | |
| 14 | + | |
| 15 | +skills, and CLI commands. | |
| 16 | + | |
| 17 | +```bash | |
| 18 | +# Run all tests | |
| 19 | +pytest tests/ -v | |
| 20 | + | |
| 21 | +# Run with coverage | |
| 22 | +pytest tests/ --cov=video_processor --cov-report=html | |
| 23 | + | |
| 24 | +# Russert result == "linting | |
| 25 | +- **Black** forRuff** for bisort** for import sorting | |
| 26 | +- **mypy** for type checking | |
| 27 | + | |
| 28 | +```bashration tests) | |
| 29 | +pytest tests/ -blasts) | |
| 30 | +pytest tests/ -isort urce, typically | |
| 31 | +mypy urce, typically d `test_<module>.py` | |
| 32 | +- Use `pytes files to disk | |
| 33 | +- Fix base.py # Skill ABC, rethe module structure., `list_videos()`,provider if needed | |
| 34 | +6. Add tests and d� notes_export.py | |
| 35 | +│ │ ├── artifact_export.py | |
| 36 | +│ │ ─ requirements_chat.py | |
| 37 | +│ │ ├── cli_adapter.py | |
| 38 | +│ Registerlass to the lazy-impoproviders/discovery.py` | |
| 39 | +5│ ├── _var="YOUR_API_KEY") | |
| 40 | +``` | |
| 41 | + | |
| 42 | +## ia environment variables. | |
| 43 | + | |
| 44 | +Implement auth flow a`List[DocumentChunk]`) and `can_process()` | |
| 45 | +5. Call `register_processor()` at module level | |
| 46 | +6. Add the import to `video_processor/processors/__init__.py` | |
| 47 | +7. Add tests | |
| 48 | + | |
| 49 | +### Example processor skeleton | |
| 50 | + | |
| 51 | +```python | |
| 52 | +"""Your document processor.""" | |
| 53 | + | |
| 54 | +from pathlib import Path | |
| 55 | +from typing import List | |
| 56 | + | |
| 57 | +from video_processor.processors.base import ( | |
| 58 | + DocumentChunk, |
| --- a/docs/contributing.md | |
| +++ b/docs/contributing.md | |
| @@ -0,0 +1,58 @@ | |
| --- a/docs/contributing.md | |
| +++ b/docs/contributing.md | |
| @@ -0,0 +1,58 @@ | |
| 1 | # Contributing |
| 2 | |
| 3 | ## Development setup |
| 4 | |
| 5 | ```bash |
| 6 | git clone https://github.com/conflict-llc/PlanOpticon.git |
| 7 | cd PlanOpticon |
| 8 | python -m venv .venv |
| 9 | source .venv/bin/activate |
| 10 | pip install -e ".[dev]" |
| 11 | ``` |
| 12 | |
| 13 | ## Running tests |
| 14 | |
| 15 | skills, and CLI commands. |
| 16 | |
| 17 | ```bash |
| 18 | # Run all tests |
| 19 | pytest tests/ -v |
| 20 | |
| 21 | # Run with coverage |
| 22 | pytest tests/ --cov=video_processor --cov-report=html |
| 23 | |
| 24 | # Russert result == "linting |
| 25 | - **Black** forRuff** for bisort** for import sorting |
| 26 | - **mypy** for type checking |
| 27 | |
| 28 | ```bashration tests) |
| 29 | pytest tests/ -blasts) |
| 30 | pytest tests/ -isort urce, typically |
| 31 | mypy urce, typically d `test_<module>.py` |
| 32 | - Use `pytes files to disk |
| 33 | - Fix base.py # Skill ABC, rethe module structure., `list_videos()`,provider if needed |
| 34 | 6. Add tests and d� notes_export.py |
| 35 | │ │ ├── artifact_export.py |
| 36 | │ │ ─ requirements_chat.py |
| 37 | │ │ ├── cli_adapter.py |
| 38 | │ Registerlass to the lazy-impoproviders/discovery.py` |
| 39 | 5│ ├── _var="YOUR_API_KEY") |
| 40 | ``` |
| 41 | |
| 42 | ## ia environment variables. |
| 43 | |
| 44 | Implement auth flow a`List[DocumentChunk]`) and `can_process()` |
| 45 | 5. Call `register_processor()` at module level |
| 46 | 6. Add the import to `video_processor/processors/__init__.py` |
| 47 | 7. Add tests |
| 48 | |
| 49 | ### Example processor skeleton |
| 50 | |
| 51 | ```python |
| 52 | """Your document processor.""" |
| 53 | |
| 54 | from pathlib import Path |
| 55 | from typing import List |
| 56 | |
| 57 | from video_processor.processors.base import ( |
| 58 | DocumentChunk, |
| --- a/docs/getting-started/configuration.md | ||
| +++ b/docs/getting-started/configuration.md | ||
| @@ -0,0 +1,7 @@ | ||
| 1 | +omatically. | |
| 2 | + | |
| 3 | +```bash | |
| 4 | +planopticon auth google # Google Drive, Docs, Meet, YouTube | |
| 5 | +plano | |
| 6 | + | |
| 7 | +Credentials are stored in `~/.planopticon/`. Use `planopticon auth SERVICE --logout` to remo |
| --- a/docs/getting-started/configuration.md | |
| +++ b/docs/getting-started/configuration.md | |
| @@ -0,0 +1,7 @@ | |
| --- a/docs/getting-started/configuration.md | |
| +++ b/docs/getting-started/configuration.md | |
| @@ -0,0 +1,7 @@ | |
| 1 | omatically. |
| 2 | |
| 3 | ```bash |
| 4 | planopticon auth google # Google Drive, Docs, Meet, YouTube |
| 5 | plano |
| 6 | |
| 7 | Credentials are stored in `~/.planopticon/`. Use `planopticon auth SERVICE --logout` to remo |
| --- a/docs/getting-started/installation.md | ||
| +++ b/docs/getting-started/installation.md | ||
| @@ -0,0 +1,3 @@ | ||
| 1 | +# Installation | |
| 2 | + | |
| 3 | +## From conflict-llcconflict-llc |
| --- a/docs/getting-started/installation.md | |
| +++ b/docs/getting-started/installation.md | |
| @@ -0,0 +1,3 @@ | |
| --- a/docs/getting-started/installation.md | |
| +++ b/docs/getting-started/installation.md | |
| @@ -0,0 +1,3 @@ | |
| 1 | # Installation |
| 2 | |
| 3 | ## From conflict-llcconflict-llc |
| --- a/docs/getting-started/quickstart.md | ||
| +++ b/docs/getting-started/quickstart.md | ||
| @@ -0,0 +1,32 @@ | ||
| 1 | +# Quick Start | |
| 2 | + | |
| 3 | +## Analyze a single video | |
| 4 | + | |
| 5 | +```bash | |
| 6 | +planopticon analyze -i meeting.mp4 -o ./output | |
| 7 | +``` | |
| 8 | + | |
| 9 | +This runs the full pipeline: | |
| 10 | + | |
| 11 | +1. Extracts video frames (smart sampling, change detection) | |
| 12 | +2. Extracts and transcribes audio | |
| 13 | +3. Detects and analyzes diagrams, charts, whiteboards | |
| 14 | +4. Builds a knowledge graph of entities and relationships | |
| 15 | +5. Extracts key points and action items | |
| 16 | +6. Generates markdown, HTML, and PDF reports | |
| 17 | +7. Outputs a `manifest.json` with everything | |
| 18 | + | |
| 19 | +## Processing depth | |
| 20 | + | |
| 21 | +```bash | |
| 22 | +# Quick scan — transcription + key points only | |
| 23 | +planopticon analyze -i video.mp4 -o ./out --depth basic | |
| 24 | + | |
| 25 | +# Standard — includes diagram extraction (default) | |
| 26 | +planopticon analyze -i video.mp4 -o ./out --depth standard | |
| 27 | + | |
| 28 | +# Deep — more frames analyzed, richer extraction | |
| 29 | +planopticon analyze -i video.mp4 -o ./out --depth comprehensive | |
| 30 | +``` | |
| 31 | + | |
| 32 | +## Choose a provi |
| --- a/docs/getting-started/quickstart.md | |
| +++ b/docs/getting-started/quickstart.md | |
| @@ -0,0 +1,32 @@ | |
| --- a/docs/getting-started/quickstart.md | |
| +++ b/docs/getting-started/quickstart.md | |
| @@ -0,0 +1,32 @@ | |
| 1 | # Quick Start |
| 2 | |
| 3 | ## Analyze a single video |
| 4 | |
| 5 | ```bash |
| 6 | planopticon analyze -i meeting.mp4 -o ./output |
| 7 | ``` |
| 8 | |
| 9 | This runs the full pipeline: |
| 10 | |
| 11 | 1. Extracts video frames (smart sampling, change detection) |
| 12 | 2. Extracts and transcribes audio |
| 13 | 3. Detects and analyzes diagrams, charts, whiteboards |
| 14 | 4. Builds a knowledge graph of entities and relationships |
| 15 | 5. Extracts key points and action items |
| 16 | 6. Generates markdown, HTML, and PDF reports |
| 17 | 7. Outputs a `manifest.json` with everything |
| 18 | |
| 19 | ## Processing depth |
| 20 | |
| 21 | ```bash |
| 22 | # Quick scan — transcription + key points only |
| 23 | planopticon analyze -i video.mp4 -o ./out --depth basic |
| 24 | |
| 25 | # Standard — includes diagram extraction (default) |
| 26 | planopticon analyze -i video.mp4 -o ./out --depth standard |
| 27 | |
| 28 | # Deep — more frames analyzed, richer extraction |
| 29 | planopticon analyze -i video.mp4 -o ./out --depth comprehensive |
| 30 | ``` |
| 31 | |
| 32 | ## Choose a provi |
+65
| --- a/docs/guide/batch.md | ||
| +++ b/docs/guide/batch.md | ||
| @@ -0,0 +1,65 @@ | ||
| 1 | +# Batch Processing | |
| 2 | + | |
| 3 | +## Basic usage | |
| 4 | + | |
| 5 | +```bash | |
| 6 | +planopticon batch -i ./recordings -o ./output --title "Sprint Reviews" | |
| 7 | +``` | |
| 8 | + | |
| 9 | +## How it works | |
| 10 | + | |
| 11 | +Batch mode: | |
| 12 | + | |
| 13 | +1. Scans the input directory for video files matching the pattern | |
| 14 | +2. Processes each video through the full single-video pipeline | |
| 15 | +3. Merges knowledge graphs across all videos (case-insensitive entity dedup)ing and conflict resolution | |
| 16 | +4. Generates a batch summary with aggregated stats and action items | |
| 17 | +5. Writes a batch manifest linking to per-video results | |
| 18 | + | |
| 19 | +## File patterns | |
| 20 | + | |
| 21 | +```bash | |
| 22 | +# Default: common video formats | |
| 23 | +planopticon batch -i ./recordings -o ./output | |
| 24 | + | |
| 25 | +# Custom patterns | |
| 26 | +planopticon batch -i ./recordings -o ./output --pattern "*.mp4,*.mov" | |
| 27 | +``` | |
| 28 | + | |
| 29 | +## Output structure | |
| 30 | + | |
| 31 | +``` | |
| 32 | +output/ | |
| 33 | +├── batch_manifest.json # Batch-level manifest | |
| 34 | +├── batch_summary.md | |
| 35 | +├── kss all videos (JSON export) | |
| 36 | +└── videos/ | |
| 37 | + ├── meeting-01/ | |
| 38 | + │ ├── manifest.json | |
| 39 | + │ ├── transcript/ | |
| 40 | + │ ├└── results/└── action_items.json | |
| 41 | + └── meeting-02/ | |
| 42 | + ├── manifest.json | |
| 43 | + └── ... | |
| 44 | +``` | |
| 45 | + | |
| 46 | +## Knowledge graph merging | |
| 47 | + | |
| 48 | +When the same entity a: | |
| 49 | + | |
| 50 | +- Case-iDescriptions are unioned | |
| 51 | +- Occurrences are concatRelationship deduplication | |
| 52 | + | |
| 53 | +- Rel/ | |
| 54 | + │ ├── diagramandm��── knowledge_graph.db | |
| 55 | + │ ├── knowledge_graph.json | |
| 56 | + │ ├── key_points.json | |
| 57 | + │ └── action_items.json | |
| 58 | + └── meeting-02/ | |
| 59 | + ├── manifest.json | |
| 60 | + └── ... | |
| 61 | +``` | |
| 62 | + | |
| 63 | +## Knowledge graph merging | |
| 64 | + | |
| 65 | +When the same entit |
| --- a/docs/guide/batch.md | |
| +++ b/docs/guide/batch.md | |
| @@ -0,0 +1,65 @@ | |
| --- a/docs/guide/batch.md | |
| +++ b/docs/guide/batch.md | |
| @@ -0,0 +1,65 @@ | |
| 1 | # Batch Processing |
| 2 | |
| 3 | ## Basic usage |
| 4 | |
| 5 | ```bash |
| 6 | planopticon batch -i ./recordings -o ./output --title "Sprint Reviews" |
| 7 | ``` |
| 8 | |
| 9 | ## How it works |
| 10 | |
| 11 | Batch mode: |
| 12 | |
| 13 | 1. Scans the input directory for video files matching the pattern |
| 14 | 2. Processes each video through the full single-video pipeline |
| 15 | 3. Merges knowledge graphs across all videos (case-insensitive entity dedup)ing and conflict resolution |
| 16 | 4. Generates a batch summary with aggregated stats and action items |
| 17 | 5. Writes a batch manifest linking to per-video results |
| 18 | |
| 19 | ## File patterns |
| 20 | |
| 21 | ```bash |
| 22 | # Default: common video formats |
| 23 | planopticon batch -i ./recordings -o ./output |
| 24 | |
| 25 | # Custom patterns |
| 26 | planopticon batch -i ./recordings -o ./output --pattern "*.mp4,*.mov" |
| 27 | ``` |
| 28 | |
| 29 | ## Output structure |
| 30 | |
| 31 | ``` |
| 32 | output/ |
| 33 | ├── batch_manifest.json # Batch-level manifest |
| 34 | ├── batch_summary.md |
| 35 | ├── kss all videos (JSON export) |
| 36 | └── videos/ |
| 37 | ├── meeting-01/ |
| 38 | │ ├── manifest.json |
| 39 | │ ├── transcript/ |
| 40 | │ ├└── results/└── action_items.json |
| 41 | └── meeting-02/ |
| 42 | ├── manifest.json |
| 43 | └── ... |
| 44 | ``` |
| 45 | |
| 46 | ## Knowledge graph merging |
| 47 | |
| 48 | When the same entity a: |
| 49 | |
| 50 | - Case-iDescriptions are unioned |
| 51 | - Occurrences are concatRelationship deduplication |
| 52 | |
| 53 | - Rel/ |
| 54 | │ ├── diagramandm��── knowledge_graph.db |
| 55 | │ ├── knowledge_graph.json |
| 56 | │ ├── key_points.json |
| 57 | │ └── action_items.json |
| 58 | └── meeting-02/ |
| 59 | ├── manifest.json |
| 60 | └── ... |
| 61 | ``` |
| 62 | |
| 63 | ## Knowledge graph merging |
| 64 | |
| 65 | When the same entit |
| --- a/docs/guide/cloud-sources.md | ||
| +++ b/docs/guide/cloud-sources.md | ||
| @@ -0,0 +1,44 @@ | ||
| 1 | +# Cloud Sources | |
| 2 | + | |
| 3 | +!!! note "Coming soon" | |
| 4 | + Cloud source integration is under active development. | |
| 5 | + | |
| 6 | +PlanOpticon can fetch videos directl videos, documents, and notes. | |
| 7 | + | |
| 8 | +## Google Drive | |
| 9 | + | |
| 10 | +### Service account auth | |
| 11 | + | |
| 12 | +For automated/server-side usage: | |
| 13 | + | |
| 14 | +```bash | |
| 15 | +export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account.json" | |
| 16 | +planopticon batch --source gdrive --folder-id "abc123" -o ./output | |
| 17 | +``` | |
| 18 | + | |
| 19 | +### OAuth2 user auth | |
| 20 | + | |
| 21 | +For interactive usage with your own Google account: | |
| 22 | + | |
| 23 | +```bash | |
| 24 | +planopticon auth google | |
| 25 | +planopticon batch --source gdrive --folder-id "abc123" -o ./output | |
| 26 | +``` | |
| 27 | + | |
| 28 | +### Install | |
| 29 | + | |
| 30 | +```bash | |
| 31 | +pip install planopticon[gdrive] | |
| 32 | +``` | |
| 33 | + | |
| 34 | +## Google Workspace (gws) | |
| 35 | + | |
| 36 | +Full Google Workspace integration beyond just Drive. Access Docs, Sheets, Slides, and Meet recordings through the `gws` CLI group. | |
| 37 | + | |
| 38 | +### Setup | |
| 39 | + | |
| 40 | +```bash | |
| 41 | +planopticon auth google | |
| 42 | +``` | |
| 43 | + | |
| 44 | +A single Google OAuth sessi |
| --- a/docs/guide/cloud-sources.md | |
| +++ b/docs/guide/cloud-sources.md | |
| @@ -0,0 +1,44 @@ | |
| --- a/docs/guide/cloud-sources.md | |
| +++ b/docs/guide/cloud-sources.md | |
| @@ -0,0 +1,44 @@ | |
| 1 | # Cloud Sources |
| 2 | |
| 3 | !!! note "Coming soon" |
| 4 | Cloud source integration is under active development. |
| 5 | |
| 6 | PlanOpticon can fetch videos directl videos, documents, and notes. |
| 7 | |
| 8 | ## Google Drive |
| 9 | |
| 10 | ### Service account auth |
| 11 | |
| 12 | For automated/server-side usage: |
| 13 | |
| 14 | ```bash |
| 15 | export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account.json" |
| 16 | planopticon batch --source gdrive --folder-id "abc123" -o ./output |
| 17 | ``` |
| 18 | |
| 19 | ### OAuth2 user auth |
| 20 | |
| 21 | For interactive usage with your own Google account: |
| 22 | |
| 23 | ```bash |
| 24 | planopticon auth google |
| 25 | planopticon batch --source gdrive --folder-id "abc123" -o ./output |
| 26 | ``` |
| 27 | |
| 28 | ### Install |
| 29 | |
| 30 | ```bash |
| 31 | pip install planopticon[gdrive] |
| 32 | ``` |
| 33 | |
| 34 | ## Google Workspace (gws) |
| 35 | |
| 36 | Full Google Workspace integration beyond just Drive. Access Docs, Sheets, Slides, and Meet recordings through the `gws` CLI group. |
| 37 | |
| 38 | ### Setup |
| 39 | |
| 40 | ```bash |
| 41 | planopticon auth google |
| 42 | ``` |
| 43 | |
| 44 | A single Google OAuth sessi |
| --- a/docs/guide/output-formats.md | ||
| +++ b/docs/guide/output-formats.md | ||
| @@ -0,0 +1,40 @@ | ||
| 1 | +# Output For`speaker` fields. | | |
| 2 | +| Text | `transcript/transcript.txt` | Plain text transcript with no metadata. Suitable for feeding into other tools or reading directly. | | |
| 3 | +| SRT | `transcript/transcript.srt` | SubRip subtitle format with sequential numbering and `HH:MM:SS,mmm` timestamps. Can be loaded into video players or subtitle editors. | | |
| 4 | + | |
| 5 | +### Transcript JSON structure | |
| 6 | + | |
| 7 | +```json | |
| 8 | +{ | |
| 9 | + "segments": [ | |
| 10 | + { | |
| 11 | + "start": 0.0, | |
| 12 | + "end": 4.5, | |
| 13 | + "text": "Welcome to the sprint review.", | |
| 14 | + "speaker": "Alice" | |
| 15 | + } | |
| 16 | + ], | |
| 17 | + "text": "Welcome to the sprint review. ...", | |
| 18 | + "language": "en" | |
| 19 | +} | |
| 20 | +``` | |
| 21 | + | |
| 22 | +When the `--speakers` flag is provided (e.g., `--speakers "Alice,Bob,Carol"`), speaker diarization hints are passed to the transcription provider and speaker labels appear in the JSON segments. | |
| 23 | + | |
| 24 | +--- | |
| 25 | + | |
| 26 | +## Reports | |
| 27 | + | |
| 28 | +Analysis reports are generated from the combined transcript, diagrams, key points, action items, and knowledge graph. They live in the `results/` subdirectory. | |
| 29 | + | |
| 30 | +| Format | File | Description | | |
| 31 | +|--------|------|-------------| | |
| 32 | +| Markdown | `results/analysis.md` | Structured report with embedded Mermaid diagram blocks, tables, and cross-references. Works in any Markdown renderer. | | |
| 33 | +| HTML | `results/analysis.html` | Self-contained HTML page with inline CSS, embedded SVG diagrams, and a bundled mermaid.js script for rendering any unrendered Mermaid blocks. No external dependencies required to view. | | |
| 34 | +| PDF | `results/analysis.pdf` | Print-ready PDF. Requires the `planopticon[pdf]` extra (`pip install planopticon[pdf]`). Generated from the HTML report. | | |
| 35 | + | |
| 36 | +--- | |
| 37 | + | |
| 38 | +## Diagrams | |
| 39 | + | |
| 40 | +Each visual |
| --- a/docs/guide/output-formats.md | |
| +++ b/docs/guide/output-formats.md | |
| @@ -0,0 +1,40 @@ | |
| --- a/docs/guide/output-formats.md | |
| +++ b/docs/guide/output-formats.md | |
| @@ -0,0 +1,40 @@ | |
| 1 | # Output For`speaker` fields. | |
| 2 | | Text | `transcript/transcript.txt` | Plain text transcript with no metadata. Suitable for feeding into other tools or reading directly. | |
| 3 | | SRT | `transcript/transcript.srt` | SubRip subtitle format with sequential numbering and `HH:MM:SS,mmm` timestamps. Can be loaded into video players or subtitle editors. | |
| 4 | |
| 5 | ### Transcript JSON structure |
| 6 | |
| 7 | ```json |
| 8 | { |
| 9 | "segments": [ |
| 10 | { |
| 11 | "start": 0.0, |
| 12 | "end": 4.5, |
| 13 | "text": "Welcome to the sprint review.", |
| 14 | "speaker": "Alice" |
| 15 | } |
| 16 | ], |
| 17 | "text": "Welcome to the sprint review. ...", |
| 18 | "language": "en" |
| 19 | } |
| 20 | ``` |
| 21 | |
| 22 | When the `--speakers` flag is provided (e.g., `--speakers "Alice,Bob,Carol"`), speaker diarization hints are passed to the transcription provider and speaker labels appear in the JSON segments. |
| 23 | |
| 24 | --- |
| 25 | |
| 26 | ## Reports |
| 27 | |
| 28 | Analysis reports are generated from the combined transcript, diagrams, key points, action items, and knowledge graph. They live in the `results/` subdirectory. |
| 29 | |
| 30 | | Format | File | Description | |
| 31 | |--------|------|-------------| |
| 32 | | Markdown | `results/analysis.md` | Structured report with embedded Mermaid diagram blocks, tables, and cross-references. Works in any Markdown renderer. | |
| 33 | | HTML | `results/analysis.html` | Self-contained HTML page with inline CSS, embedded SVG diagrams, and a bundled mermaid.js script for rendering any unrendered Mermaid blocks. No external dependencies required to view. | |
| 34 | | PDF | `results/analysis.pdf` | Print-ready PDF. Requires the `planopticon[pdf]` extra (`pip install planopticon[pdf]`). Generated from the HTML report. | |
| 35 | |
| 36 | --- |
| 37 | |
| 38 | ## Diagrams |
| 39 | |
| 40 | Each visual |
| --- a/docs/guide/single-video.md | ||
| +++ b/docs/guide/single-video.md | ||
| @@ -0,0 +1,83 @@ | ||
| 1 | +# Single Video Analysis | |
| 2 | + | |
| 3 | +## Basic usage | |
| 4 | + | |
| 5 | +```bash | |
| 6 | +planopticon analyze -i recording.mp4 -o ./output | |
| 7 | +``` | |
| 8 | + | |
| 9 | +## What happens | |
| 10 | + | |
| 11 | +The pipeline runs these steps in order— | |
| 12 | +1. **Frame extraction** -- Samples frames from the video using change detection to avoid duplicates | |
| 13 | +2onfidence diagrams get full 3t, mermaid, chart data) | |
| 14 | +— Medium-confidence frames are saved as captione4 screenshots | |
| 15 | +8. **Knowledge graph** —wledge_graph.json` — LLM extracts main 5deo Analysis | |
| 16 | + | |
| 17 | +## Basic usage | |
| 18 | + | |
| 19 | +```bash | |
| 20 | +planopticon analyze -i recording.mp4 -o ./output#points and action items | |
| 21 | +- No diagram extraction | |
| 22 | + | |
| 23 | +### `standard` (default) | |
| 24 | +- Everything in basic | |
| 25 | +- Diagram extraction (up to 10 frames) | |
| 26 | +- Knowledge graph | |
| 27 | +- Full report generation | |
| 28 | + | |
| 29 | +### `comprehensive` | |
| 30 | +- Everything in standard | |
| 31 | +- More frames analyzed (up to 20) | |
| 32 | +- Deeper analysis | |
| 33 | + | |
| 34 | +## # Action items | |
| 35 | +``` | |
| 36 | + | |
| 37 | +## Output manifest | |
| 38 | + | |
| 39 | +Every run produces a `manifest.json` that is the single source of truth: | |
| 40 | + | |
| 41 | +```json | |
| 42 | +{ | |
| 43 | + "version": "1.0", | |
| 44 | + "video": { | |
| 45 | + "title": "Analysis of recording", | |
| 46 | + "source_path": "/path/to/recording.mp4", | |
| 47 | + "duration_seconds": 3600.0 | |
| 48 | + }, | |
| 49 | + "stats": { | |
| 50 | + "duration_seconds": 45.2, | |
| 51 | + "frames_extracted": 42, | |
| 52 | + "people_frames_filtered": 11, | |
| 53 | + "diagrams_detected": | |
| 54 | + }diagram_0.svg # Vector rendering | |
| 55 | +│ ├── diagram_0.pn7(default) | |
| 56 | +- Everything in basic | |
| 57 | +- Diagram extraction (up to 10 frames) | |
| 58 | +- Knowledge graph | |
| 59 | +8# `comprehensive` | |
| 60 | +- Everything9alyzed (up to 20) | |
| 61 | +- Deeper analysis | |
| 62 | + | |
| 63 | +## # Action items | |
| 64 | +``` | |
| 65 | + | |
| 66 | +## Ou0put manifest | |
| 67 | + | |
| 68 | +Every run pr1t is the single source of truth: | |
| 69 | + | |
| 70 | +```json | |
| 71 | +{ | |
| 72 | + "version": "1.0", | |
| 73 | + "video": { | |
| 74 | + "title": "Analysis of recording", | |
| 75 | + "source_path": "/path/to/recording.mp4", | |
| 76 | + "duration_seconds": 3600.0 | |
| 77 | + }, | |
| 78 | + "stats": { | |
| 79 | + "duration_seconds": 45.2, | |
| 80 | + "frames_extracted": 42, | |
| 81 | + "people_frames_filtered": 11, | |
| 82 | + "diagrams_detected": | |
| 83 | + }diagram_0.svg |
| --- a/docs/guide/single-video.md | |
| +++ b/docs/guide/single-video.md | |
| @@ -0,0 +1,83 @@ | |
| --- a/docs/guide/single-video.md | |
| +++ b/docs/guide/single-video.md | |
| @@ -0,0 +1,83 @@ | |
| 1 | # Single Video Analysis |
| 2 | |
| 3 | ## Basic usage |
| 4 | |
| 5 | ```bash |
| 6 | planopticon analyze -i recording.mp4 -o ./output |
| 7 | ``` |
| 8 | |
| 9 | ## What happens |
| 10 | |
| 11 | The pipeline runs these steps in order— |
| 12 | 1. **Frame extraction** -- Samples frames from the video using change detection to avoid duplicates |
| 13 | 2onfidence diagrams get full 3t, mermaid, chart data) |
| 14 | — Medium-confidence frames are saved as captione4 screenshots |
| 15 | 8. **Knowledge graph** —wledge_graph.json` — LLM extracts main 5deo Analysis |
| 16 | |
| 17 | ## Basic usage |
| 18 | |
| 19 | ```bash |
| 20 | planopticon analyze -i recording.mp4 -o ./output#points and action items |
| 21 | - No diagram extraction |
| 22 | |
| 23 | ### `standard` (default) |
| 24 | - Everything in basic |
| 25 | - Diagram extraction (up to 10 frames) |
| 26 | - Knowledge graph |
| 27 | - Full report generation |
| 28 | |
| 29 | ### `comprehensive` |
| 30 | - Everything in standard |
| 31 | - More frames analyzed (up to 20) |
| 32 | - Deeper analysis |
| 33 | |
| 34 | ## # Action items |
| 35 | ``` |
| 36 | |
| 37 | ## Output manifest |
| 38 | |
| 39 | Every run produces a `manifest.json` that is the single source of truth: |
| 40 | |
| 41 | ```json |
| 42 | { |
| 43 | "version": "1.0", |
| 44 | "video": { |
| 45 | "title": "Analysis of recording", |
| 46 | "source_path": "/path/to/recording.mp4", |
| 47 | "duration_seconds": 3600.0 |
| 48 | }, |
| 49 | "stats": { |
| 50 | "duration_seconds": 45.2, |
| 51 | "frames_extracted": 42, |
| 52 | "people_frames_filtered": 11, |
| 53 | "diagrams_detected": |
| 54 | }diagram_0.svg # Vector rendering |
| 55 | │ ├── diagram_0.pn7(default) |
| 56 | - Everything in basic |
| 57 | - Diagram extraction (up to 10 frames) |
| 58 | - Knowledge graph |
| 59 | 8# `comprehensive` |
| 60 | - Everything9alyzed (up to 20) |
| 61 | - Deeper analysis |
| 62 | |
| 63 | ## # Action items |
| 64 | ``` |
| 65 | |
| 66 | ## Ou0put manifest |
| 67 | |
| 68 | Every run pr1t is the single source of truth: |
| 69 | |
| 70 | ```json |
| 71 | { |
| 72 | "version": "1.0", |
| 73 | "video": { |
| 74 | "title": "Analysis of recording", |
| 75 | "source_path": "/path/to/recording.mp4", |
| 76 | "duration_seconds": 3600.0 |
| 77 | }, |
| 78 | "stats": { |
| 79 | "duration_seconds": 45.2, |
| 80 | "frames_extracted": 42, |
| 81 | "people_frames_filtered": 11, |
| 82 | "diagrams_detected": |
| 83 | }diagram_0.svg |
+18
| --- a/docs/index.md | ||
| +++ b/docs/index.md | ||
| @@ -0,0 +1,18 @@ | ||
| 1 | +# PlanOpticon | |
| 2 | + | |
| 3 | + and*AI-powered video ana.** | |
| 4 | + | |
| 5 | +PlanOpticon into structured knowledge — transcripts, diagrams, action items, key pointsauto-discoveOpenAI, Anthropic, and Gemini, and producion REPL and planning agent. | |
| 6 | + | |
| 7 | +--- | |
| 8 | + | |
| 9 | +## Features | |
| 10 | + | |
| 11 | +- **Multi-provider AI** — Automatically discovers and routes to the best available modeland Google Gemini | |
| 12 | +- **Smart frame extraction** — Change detection for transitions + periodic capture (every 30s) for slow-evolving content like document scedge graphs** — Extracts entities and relationships, bconflict-llc# PlanOpticon | |
| 13 | + | |
| 14 | + and*AI-powered video ana.** | |
| 15 | + | |
| 16 | +PlanOpticon into structured knowledge — transcripts, diagrams, action items, key pointsauto-discoveOpenAI, Anthropic, and Gemini, and producion REPL and planning agent. | |
| 17 | + | |
| 18 | +-n |
| --- a/docs/index.md | |
| +++ b/docs/index.md | |
| @@ -0,0 +1,18 @@ | |
| --- a/docs/index.md | |
| +++ b/docs/index.md | |
| @@ -0,0 +1,18 @@ | |
| 1 | # PlanOpticon |
| 2 | |
| 3 | and*AI-powered video ana.** |
| 4 | |
| 5 | PlanOpticon into structured knowledge — transcripts, diagrams, action items, key pointsauto-discoveOpenAI, Anthropic, and Gemini, and producion REPL and planning agent. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Features |
| 10 | |
| 11 | - **Multi-provider AI** — Automatically discovers and routes to the best available modeland Google Gemini |
| 12 | - **Smart frame extraction** — Change detection for transitions + periodic capture (every 30s) for slow-evolving content like document scedge graphs** — Extracts entities and relationships, bconflict-llc# PlanOpticon |
| 13 | |
| 14 | and*AI-powered video ana.** |
| 15 | |
| 16 | PlanOpticon into structured knowledge — transcripts, diagrams, action items, key pointsauto-discoveOpenAI, Anthropic, and Gemini, and producion REPL and planning agent. |
| 17 | |
| 18 | -n |
+26
| --- a/mkdocs.yml | ||
| +++ b/mkdocs.yml | ||
| @@ -0,0 +1,26 @@ | ||
| 1 | +site_name: PlanOpticon | |
| 2 | +site_url: https://planopticon.dev | |
| 3 | +site_description: AI-powered video analysis and knowledge extraction | |
| 4 | +site_author: CONFLICT LLC | |
| 5 | +reconflict-llcte_name: PlanOpticon | |
| 6 | +sitsite_name: P/PlanOpticon | |
| 7 | + | |
| 8 | +theme: | |
| 9 | + name: material | |
| 10 | + palette: | |
| 11 | + - media: "(prefers-color-scheme: light)" | |
| 12 | + scheme: default | |
| 13 | + primary: deep purple | |
| 14 | + accent: ambercustom | |
| 15 | + accent: custom | |
| 16 | + toggle: | |
| 17 | + icon: material/brightness-7 | |
| 18 | + n - media: "(prefers-color-scheme: dark)" | |
| 19 | + scheme: slate | |
| 20 | + primary: deep purple | |
| 21 | + accent: ambercustom | |
| 22 | + accent: c4icon: material/brightnesslight mode | |
| 23 | + features: | |
| 24 | + - navigation.instant | |
| 25 | + - navigation.tabs | |
| 26 | + - navigation.sectconflict-llcvi5 CONFLICT LLC |
| --- a/mkdocs.yml | |
| +++ b/mkdocs.yml | |
| @@ -0,0 +1,26 @@ | |
| --- a/mkdocs.yml | |
| +++ b/mkdocs.yml | |
| @@ -0,0 +1,26 @@ | |
| 1 | site_name: PlanOpticon |
| 2 | site_url: https://planopticon.dev |
| 3 | site_description: AI-powered video analysis and knowledge extraction |
| 4 | site_author: CONFLICT LLC |
| 5 | reconflict-llcte_name: PlanOpticon |
| 6 | sitsite_name: P/PlanOpticon |
| 7 | |
| 8 | theme: |
| 9 | name: material |
| 10 | palette: |
| 11 | - media: "(prefers-color-scheme: light)" |
| 12 | scheme: default |
| 13 | primary: deep purple |
| 14 | accent: ambercustom |
| 15 | accent: custom |
| 16 | toggle: |
| 17 | icon: material/brightness-7 |
| 18 | n - media: "(prefers-color-scheme: dark)" |
| 19 | scheme: slate |
| 20 | primary: deep purple |
| 21 | accent: ambercustom |
| 22 | accent: c4icon: material/brightnesslight mode |
| 23 | features: |
| 24 | - navigation.instant |
| 25 | - navigation.tabs |
| 26 | - navigation.sectconflict-llcvi5 CONFLICT LLC |
+33
| --- a/pyproject.toml | ||
| +++ b/pyproject.toml | ||
| @@ -0,0 +1,33 @@ | ||
| 1 | +[build-system] | |
| 2 | +requires = ["setuptools>=69.0", "wheel"] | |
| 3 | +build-backend = "setuptools.build_meta" | |
| 4 | + | |
| 5 | +[project] | |
| 6 | +name = "planopticon" | |
| 7 | +version = "0.2.0" | |
| 8 | +description = "AI-powered video analysis and knowledge extraction tool" | |
| 9 | +readme = "README.md" | |
| 10 | +license = "MIT" | |
| 11 | +requires-python = ">=3.10" | |
| 12 | +authors = [ | |
| 13 | + { name = "CONFLICT LLC" }, | |
| 14 | +] | |
| 15 | +keywords = ["video", "analysis", "ai", "knowledge-extraction", "transcription", "diagrams"] | |
| 16 | +classifiers = [ | |
| 17 | + "Development Status :: 4 - Beta", | |
| 18 | + "Intended Audience :: Developers", | |
| 19 | + "Intended Audience License :: udience :: Science/Research", | |
| 20 | + "Operating System :: OS Independent", | |
| 21 | + "Programming Language :: Python :: 3", | |
| 22 | + "Programming Language :: Python :: 3.10", | |
| 23 | + "Programming Language :: Python :: 3.11", | |
| 24 | + "Programming Language :: Python :: 3.12", | |
| 25 | + "Programming L | |
| 26 | + "Topic :: Scientific/Engineering :: Artificial Intelligence", | |
| 27 | +] | |
| 28 | + | |
| 29 | +dependencies = [ | |
| 30 | + "numpy>=1.24.0", | |
| 31 | + "opencv-python>=4.8.0", | |
| 32 | + "scipy>=1.10.0", | |
| 33 | + "pconflict-llcconflict-llc |
| --- a/pyproject.toml | |
| +++ b/pyproject.toml | |
| @@ -0,0 +1,33 @@ | |
| --- a/pyproject.toml | |
| +++ b/pyproject.toml | |
| @@ -0,0 +1,33 @@ | |
| 1 | [build-system] |
| 2 | requires = ["setuptools>=69.0", "wheel"] |
| 3 | build-backend = "setuptools.build_meta" |
| 4 | |
| 5 | [project] |
| 6 | name = "planopticon" |
| 7 | version = "0.2.0" |
| 8 | description = "AI-powered video analysis and knowledge extraction tool" |
| 9 | readme = "README.md" |
| 10 | license = "MIT" |
| 11 | requires-python = ">=3.10" |
| 12 | authors = [ |
| 13 | { name = "CONFLICT LLC" }, |
| 14 | ] |
| 15 | keywords = ["video", "analysis", "ai", "knowledge-extraction", "transcription", "diagrams"] |
| 16 | classifiers = [ |
| 17 | "Development Status :: 4 - Beta", |
| 18 | "Intended Audience :: Developers", |
| 19 | "Intended Audience License :: udience :: Science/Research", |
| 20 | "Operating System :: OS Independent", |
| 21 | "Programming Language :: Python :: 3", |
| 22 | "Programming Language :: Python :: 3.10", |
| 23 | "Programming Language :: Python :: 3.11", |
| 24 | "Programming Language :: Python :: 3.12", |
| 25 | "Programming L |
| 26 | "Topic :: Scientific/Engineering :: Artificial Intelligence", |
| 27 | ] |
| 28 | |
| 29 | dependencies = [ |
| 30 | "numpy>=1.24.0", |
| 31 | "opencv-python>=4.8.0", |
| 32 | "scipy>=1.10.0", |
| 33 | "pconflict-llcconflict-llc |
A
setup.py
+2
| --- a/setup.py | ||
| +++ b/setup.py | ||
| @@ -0,0 +1,2 @@ | ||
| 1 | +"""Backwards-compatible setup.py — all config lives in pyproject.toml.""" | |
| 2 | +from setupt |
| --- a/setup.py | |
| +++ b/setup.py | |
| @@ -0,0 +1,2 @@ | |
| --- a/setup.py | |
| +++ b/setup.py | |
| @@ -0,0 +1,2 @@ | |
| 1 | """Backwards-compatible setup.py — all config lives in pyproject.toml.""" |
| 2 | from setupt |