LICENSE
MANIFEST.in
README.md
pyproject.toml
photokin/README.md
photokin/__init__.py
photokin/__main__.py
photokin/api.py
photokin/api_claude.py
photokin/api_gemini.py
photokin/api_openai.py
photokin/api_openai_compat.py
photokin/canonical.py
photokin/changeset.py
photokin/chunking.py
photokin/cli.py
photokin/cli_messages.py
photokin/core.py
photokin/doc_sidecar.py
photokin/errors.py
photokin/exiftool_apply.py
photokin/face_utils.py
photokin/merge.py
photokin/public.py
photokin/py.typed
photokin/rename.py
photokin/rename_apply.py
photokin/utils.py
photokin.egg-info/PKG-INFO
photokin.egg-info/SOURCES.txt
photokin.egg-info/dependency_links.txt
photokin.egg-info/entry_points.txt
photokin.egg-info/requires.txt
photokin.egg-info/top_level.txt
photokin/exiftool/README.md
photokin/exiftool/__init__.py
photokin/exiftool/__main__.py
photokin/exiftool/apply.py
photokin/exiftool/config.py
photokin/exiftool/fetch.py
photokin/exiftool/hydrate.py
photokin/exiftool/locate.py
photokin/exiftool/manifest.py
photokin/prompts_photo_ai/categories.txt
photokin/prompts_photo_ai/consolidation.txt
photokin/prompts_photo_ai/forbidden_inferences.txt
photokin/prompts_photo_ai/image_rules.txt
photokin/prompts_photo_ai/instructions_front_back.txt
photokin/prompts_photo_ai/metadata_forward.toml
photokin/prompts_photo_ai/output_format.txt
photokin/prompts_photo_ai/system_header.txt
photokin/prompts_photo_ai/vocab_keywords_examples.toml
photokin/prompts_photo_ai/schema/photo_analysis.schema.json
photokin/tests/test_canonical_tags_are_writable.py
photokin/tests/test_changeset.py
photokin/tests/test_chunked_groups.py
photokin/tests/test_chunking.py
photokin/tests/test_claude_output_extraction.py
photokin/tests/test_cli_input_surface.py
photokin/tests/test_cli_preflight.py
photokin/tests/test_doc_sidecar.py
photokin/tests/test_docs_alignment.py
photokin/tests/test_dry_run_streaming.py
photokin/tests/test_exiftool_fetch.py
photokin/tests/test_exiftool_wrapper.py
photokin/tests/test_folder_mode.py
photokin/tests/test_folder_routing.py
photokin/tests/test_group_analyzer_payload.py
photokin/tests/test_group_by.py
photokin/tests/test_group_usage_model.py
photokin/tests/test_hydrator_injection.py
photokin/tests/test_interactive_prompt.py
photokin/tests/test_json_cleanup.py
photokin/tests/test_llm_request_dump.py
photokin/tests/test_manifest_grouping.py
photokin/tests/test_merge_date_pattern.py
photokin/tests/test_message_style.py
photokin/tests/test_metadata_forwarding.py
photokin/tests/test_per_page_captions.py
photokin/tests/test_photo_context.py
photokin/tests/test_prompt_bundle.py
photokin/tests/test_provider_routing.py
photokin/tests/test_read_flag.py
photokin/tests/test_read_flag_hazards.py
photokin/tests/test_rename_apply.py
photokin/tests/test_rename_cli.py
photokin/tests/test_rename_grammar.py
photokin/tests/test_rename_planner.py
photokin/tests/test_review_regressions.py
photokin/tests/test_sidecar_md.py
photokin/tests/test_temperature_gating.py
photokin/tests/test_thinking_switch.py
photokin/tests/test_transcriptions_contract.py
photokin/tests/test_vocab_sections.py
photokin/tests/test_write_read_alignment.py
photokin/tests/fixtures/folder_routing/album-page1.jpg
photokin/tests/fixtures/folder_routing/album-page2-crop.jpg
photokin/tests/fixtures/folder_routing/album-page2.jpg
photokin/tests/fixtures/folder_routing/box3_025-back.jpg
photokin/tests/fixtures/folder_routing/box3_025-crop.jpg
photokin/tests/fixtures/folder_routing/box3_025.jpg
photokin/tests/fixtures/folder_routing/box3_025b-back.jpg
photokin/tests/fixtures/folder_routing/box3_025b.jpg
photokin/tests/fixtures/folder_routing/box3_026-negative.jpg
photokin/tests/fixtures/folder_routing/box3_027.png
photokin/tests/fixtures/folder_routing/notes.txt
photokin/tests/fixtures/manifests/folder_routing_grouping.json
photokin/tests/fixtures/manifests/folder_routing_manifest.json
photokin/tests/fixtures/manifests/read_flag_manifest.json
tests/test_exiftool_manifest.py
tests/test_face_utils.py