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
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ jobs:

- name: Validate public examples
run: |
python -m aigc_director_kit verify-examples --json
python -m aigc_director_kit validate-plan examples/shot_plan.json --json
python -m aigc_director_kit validate-plan examples/one_take_previs_case.json --json
python -m aigc_director_kit validate-plan examples/film_contract_handoff_case.json --json
Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# CineThread Changelog

## [0.2.1] - 2026-08-12

- Added `verify-examples`, a cross-platform, privacy-safe one-command verification report for every public example.
- Updated the Windows launcher, quick start, contribution guide, feedback template, and CI to use the new verification path.

## [0.2.0] - 2026-08-12

- Added the `aigc-director-skill-workflow` handoff contract and schema.
Expand Down
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
## 开始

```powershell
python -m aigc_director_kit verify-examples --json
python -m unittest discover -s tests -v
python -m aigc_director_kit validate-plan examples/shot_plan.json
python -m aigc_director_kit list-actions --library examples/action_library.json --query 跑
Expand Down
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,26 @@
versioned JSON contract identifiers remain `aigc-director-kit` in the 0.x
series for compatibility.

## Verify a checkout in one command

After cloning or extracting this repository, run the verification from the
repository folder:

```powershell
# Windows terminal (when the Python launcher is installed)
py -3 -m aigc_director_kit verify-examples --json

# macOS or Linux
python3 -m aigc_director_kit verify-examples --json
```

It checks every public plan, workflow, prompt-pack, QC-boundary, action, and
runtime-handoff example, and returns a privacy-safe report with relative paths
only. It does not render or generate media. For a real bug report, review the
output first and use the [verified feedback template](docs/feedback-template.md).
Windows users who do not know which Python command to use can instead double-click
[`run_examples.bat`](run_examples.bat); it detects common Python installations.

## Skill workflow handoff

Local AIGC Skills can hand a sanitized workflow packet to this repository:
Expand Down Expand Up @@ -94,6 +114,7 @@ Windows 用户也可以直接双击 [`run_examples.bat`](run_examples.bat) 查
命令行方式:

```powershell
python -m aigc_director_kit verify-examples --json
python -m aigc_director_kit validate-plan examples/shot_plan.json
python -m aigc_director_kit list-actions --library examples/action_library.json --query 跑
python -m aigc_director_kit compile-action `
Expand Down
8 changes: 8 additions & 0 deletions docs/feedback-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

只填写实际运行过的结果,不要为了活动申请制造反馈、Stars、Issue 或 PR。

建议先在克隆或解压后的仓库目录运行:

```powershell
python -m aigc_director_kit verify-examples --json
```

它只输出相对路径和通用环境信息;在公开前仍请自行检查输出,删除不应公开的内容。

```text
版本/commit:
运行环境:
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "aigc-director-kit"
version = "0.2.0"
version = "0.2.1"
description = "CineThread: deterministic creative handoffs for AI animation, storyboards, and previs."
readme = "README.md"
requires-python = ">=3.10"
Expand Down
34 changes: 2 additions & 32 deletions run_examples.bat
Original file line number Diff line number Diff line change
Expand Up @@ -39,38 +39,8 @@ if errorlevel 1 goto :missing_python

set "PYTHONPATH=%CD%\src"

echo === Validate shot plan ===
%PYTHON_CMD% -m aigc_director_kit validate-plan examples\shot_plan.json
if errorlevel 1 goto :failed

echo.
echo === Search action catalog ===
%PYTHON_CMD% -m aigc_director_kit list-actions --library examples\action_library.json --query run
if errorlevel 1 goto :failed

echo.
echo === Compile bounded action request ===
%PYTHON_CMD% -m aigc_director_kit compile-action --library examples\action_library.json --text "run quick stop, blend 0.2s, fast, in place"
if errorlevel 1 goto :failed

echo.
echo === Validate Skill workflow handoff ===
%PYTHON_CMD% -m aigc_director_kit validate-workflow examples\skill_workflow_case.json --library examples\action_library.json
if errorlevel 1 goto :failed

echo.
echo === Validate prompt pack ===
%PYTHON_CMD% -m aigc_director_kit validate-prompt-pack examples\prompt_pack_case.json --plan examples\one_take_previs_case.json
if errorlevel 1 goto :failed

echo.
echo === Validate QC evidence boundary ===
%PYTHON_CMD% -m aigc_director_kit validate-qc-report examples\qc_report_unverified_case.json
if errorlevel 1 goto :failed

echo.
echo === Build runtime adapter handoff ===
%PYTHON_CMD% -m aigc_director_kit build-runtime-handoff examples\skill_workflow_case.json --library examples\action_library.json --adapter optional-runtime-adapter
echo === Verify public CineThread examples ===
%PYTHON_CMD% -m aigc_director_kit verify-examples --root .
if errorlevel 1 goto :failed

echo.
Expand Down
5 changes: 4 additions & 1 deletion src/aigc_director_kit/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,17 @@
from .prompt import validate_prompt_pack, validate_prompt_pack_file
from .qc import validate_qc_report, validate_qc_report_file
from .runtime import build_runtime_handoff, build_runtime_handoff_file
from .verification import find_project_root, run_public_example_verification
from .workflow import validate_workflow, validate_workflow_file

__all__ = [
"ValidationResult",
"compile_action_request",
"find_project_root",
"list_actions",
"load_action_library",
"load_plan",
"run_public_example_verification",
"validate_plan",
"validate_plan_file",
"validate_prompt_pack",
Expand All @@ -25,4 +28,4 @@
"validate_workflow_file",
]

__version__ = "0.2.0"
__version__ = "0.2.1"
29 changes: 29 additions & 0 deletions src/aigc_director_kit/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from .prompt import validate_prompt_pack_file
from .qc import validate_qc_report_file
from .runtime import build_runtime_handoff_file
from .verification import run_public_example_verification
from .workflow import validate_workflow_file


Expand Down Expand Up @@ -61,6 +62,17 @@ def _build_parser() -> argparse.ArgumentParser:
handoff.add_argument("--output", type=Path)
handoff.add_argument("--json", action="store_true", dest="as_json")

verify = subparsers.add_parser(
"verify-examples",
help="Run a privacy-safe, cross-platform verification of the public examples.",
)
verify.add_argument(
"--root",
type=Path,
help="CineThread source checkout; defaults to the current directory or a parent.",
)
verify.add_argument("--json", action="store_true", dest="as_json")

search = subparsers.add_parser("list-actions", help="Search an action catalog.")
search.add_argument("--library", required=True, type=Path)
search.add_argument("--query", default="")
Expand Down Expand Up @@ -163,6 +175,23 @@ def main(argv: list[str] | None = None) -> int:
print(f"mode: {packet['runtime']['mode']}")
return 0 if packet["valid"] else 2

if args.command == "verify-examples":
report = run_public_example_verification(args.root)
if args.as_json:
_dump(report)
else:
print(f"valid: {'yes' if report['valid'] else 'no'}")
print(f"checks: {report['summary']['check_count']}")
print(f"passed_checks: {report['summary']['passed_check_count']}")
for check in report["checks"]:
print(f"{'ok' if check['valid'] else 'error'}: {check['id']}")
for error in check["errors"]:
print(f"error: {error}")
for warning in check["warnings"]:
print(f"warning: {warning}")
print(f"boundary: {report['boundary']}")
return 0 if report["valid"] else 2

if args.command == "list-actions":
library = load_action_library(args.library)
_dump(list_actions(library, args.query, category=args.category, limit=args.limit))
Expand Down
Loading