Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "pixelml-av"
version = "0.1.0"
version = "0.2.0"
description = "Index once, search many — agentic video memory CLI by Pixel ML"
readme = "README.md"
requires-python = ">=3.11"
Expand Down Expand Up @@ -37,5 +37,21 @@ build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/av"]

[tool.hatch.build.targets.wheel.force-include]
"prompts/dense_caption.md" = "av/prompts/dense_caption.md"

[tool.hatch.build.targets.sdist]
include = [
"/src",
"/tests",
"/cookbook",
"/prompts",
"/skills",
"/README.md",
"/LICENSE",
"/pyproject.toml",
"/uv.lock",
]

[tool.pytest.ini_options]
testpaths = ["tests"]
4 changes: 2 additions & 2 deletions skills/agentic-video-memory/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: agentic-video-memory
version: 0.1.0
version: 0.2.0
description: Video memory for AI agents. Ingest, search, and ask questions over video content.
homepage: https://agentic.video
---
Expand Down Expand Up @@ -382,7 +382,7 @@ Print version info.
**Output (stdout, JSON):**

```json
{"version": "0.1.0", "package": "pixelml-av"}
{"version": "0.2.0", "package": "pixelml-av"}
```

## Agent Integration Patterns
Expand Down
2 changes: 1 addition & 1 deletion src/av/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"""av — Agentic Video CLI by Pixel ML. Index once, search many."""

__version__ = "0.1.0"
__version__ = "0.2.0"
9 changes: 8 additions & 1 deletion src/av/cli/ask.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,14 @@ def ask_cmd(
help="Skip configured Jev relevance and scene refinement",
),
) -> None:
"""Ask a question about indexed video content (RAG)."""
"""Ask a question about indexed video content (RAG).

When configured, Jev filters source relevance, bounds scene context, and
checks answer support. Optional stronger selected-frame inspection runs
only with explicit AV_STRONG_VISION_API_BASE_URL and
AV_STRONG_VISION_MODEL settings; AV_STRONG_VISION_API_KEY is used when
the endpoint requires authentication.
"""
config = get_config(db_path=Path(db) if db else None)
repo = Repository(config.db_path)

Expand Down
11 changes: 10 additions & 1 deletion src/av/pipeline/ingest.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,15 @@
from av.utils.principles import load_principles


def _dense_caption_template_path() -> Path:
current = Path(__file__).resolve()
candidates = (
current.parents[1] / "prompts" / "dense_caption.md",
current.parents[3] / "prompts" / "dense_caption.md",
)
return next((candidate for candidate in candidates if candidate.is_file()), candidates[-1])


def _chunk_seconds_for_audio(audio_path: Path, target_bytes: int = MAX_AUDIO_CHUNK_BYTES - (1 * 1024 * 1024)) -> int:
size = audio_path.stat().st_size
if size <= 0:
Expand Down Expand Up @@ -387,7 +396,7 @@ def ingest_video(
)

principles = load_principles(principles_path)
template_path = Path(__file__).resolve().parents[3] / "prompts" / "dense_caption.md"
template_path = _dense_caption_template_path()
prompt = render_dense_prompt(template_path, principles)

if frames:
Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading