docagent-cli 0.0.40__tar.gz → 0.0.42__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/CHANGELOG.md +12 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/PKG-INFO +1 -1
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/_version.py +1 -1
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/agent.py +3 -3
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/accept_changes.py +2 -2
- {docagent_cli-0.0.40/docagent_cli/built_in_skills/pptx → docagent_cli-0.0.42/docagent_cli/built_in_skills/docx}/scripts/office/soffice.py +1 -1
- docagent_cli-0.0.42/docagent_cli/built_in_skills/long-doc-writing/SKILL.md +137 -0
- {docagent_cli-0.0.40/docagent_cli/built_in_skills/docx → docagent_cli-0.0.42/docagent_cli/built_in_skills/pptx}/scripts/office/soffice.py +1 -1
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/eval-viewer/generate_review.py +95 -27
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/scripts/generate_report.py +2 -2
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/scripts/improve_description.py +64 -30
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/scripts/quick_validate.py +1 -1
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/scripts/run_eval.py +2 -2
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/scripts/run_loop.py +6 -6
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/scripts/utils.py +1 -1
- docagent_cli-0.0.42/docagent_cli/built_in_skills/typst/SKILL.md +242 -0
- docagent_cli-0.0.42/docagent_cli/built_in_skills/typst/references/math.md +206 -0
- docagent_cli-0.0.42/docagent_cli/built_in_skills/typst/references/scripting.md +255 -0
- docagent_cli-0.0.42/docagent_cli/built_in_skills/typst/references/styling.md +231 -0
- docagent_cli-0.0.42/docagent_cli/built_in_skills/typst/references/syntax.md +125 -0
- docagent_cli-0.0.42/docagent_cli/built_in_skills/typst/references/templates.md +254 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/soffice.py +1 -1
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/recalc.py +2 -2
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/config.py +1 -1
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/hooks.py +1 -1
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/server.py +2 -2
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/server_manager.py +2 -2
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/skills/commands.py +1 -1
- docagent_cli-0.0.42/docs/[/346/213/233/346/240/207/346/226/207/344/273/266]/345/215/227/344/272/254/346/231/223/345/272/204/345/255/246/351/231/242/351/231/266/350/241/214/347/237/245RAG/346/243/200/347/264/242/345/242/236/345/274/272/345/274/200/345/217/221/347/256/241/347/220/206/345/271/263/345/217/260.docx +0 -0
- docagent_cli-0.0.42/docs//346/212/200/346/234/257/346/226/271/346/241/210/346/250/241/346/235/277.docx +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/examples/skills/skill-creator/scripts/init_skill.py +4 -4
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/examples/skills/skill-creator/scripts/quick_validate.py +1 -1
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/pyproject.toml +6 -1
- docagent_cli-0.0.42/technical_proposal/charts/01_rag_architecture.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/02_platform_modules.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/03_knowledge_flow.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/04_ai_app_dev_flow.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/05_model_evolution_cycle.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/06_user_persona_system.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/07_system_integration.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/08_technical_architecture.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/09_implementation_gantt.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/10_monitoring_architecture.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/11_retrieval_metrics.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/12_answer_style_selection.png +0 -0
- docagent_cli-0.0.42/technical_proposal/charts/__init__.py +5 -0
- docagent_cli-0.0.42/technical_proposal/charts/charts.py +806 -0
- docagent_cli-0.0.42/technical_proposal/generate_doc.py +625 -0
- docagent_cli-0.0.42/technical_proposal/sections/__init__.py +14 -0
- docagent_cli-0.0.42/technical_proposal/sections/s02.py +84 -0
- docagent_cli-0.0.42/technical_proposal/sections/s03.py +84 -0
- docagent_cli-0.0.42/technical_proposal/sections/s04.py +57 -0
- docagent_cli-0.0.42/technical_proposal/sections/s05.py +57 -0
- docagent_cli-0.0.42/technical_proposal/sections/s06.py +38 -0
- docagent_cli-0.0.42/technical_proposal/sections/section_01.py +197 -0
- docagent_cli-0.0.42/technical_proposal/sections/section_02.py +84 -0
- docagent_cli-0.0.42/technical_proposal/sections/section_03.py +84 -0
- docagent_cli-0.0.42/technical_proposal/sections/section_04.py +57 -0
- docagent_cli-0.0.42/technical_proposal/sections/section_05.py +57 -0
- docagent_cli-0.0.42/technical_proposal/sections/section_06.py +38 -0
- docagent_cli-0.0.42/technical_proposal/utils/__init__.py +1 -0
- docagent_cli-0.0.42/technical_proposal//345/215/227/344/272/254/346/231/223/345/272/204/345/255/246/351/231/242/351/231/266/350/241/214/347/237/245RAG/346/243/200/347/264/242/345/242/236/345/274/272/345/274/200/345/217/221/347/256/241/347/220/206/345/271/263/345/217/260_/346/212/200/346/234/257/346/226/271/346/241/210.docx +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/uv.lock +445 -1
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/.gitignore +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/DEV.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/Makefile +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/README.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/THREAT_MODEL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/__main__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/_ask_user_types.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/_cli_context.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/_debug.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/_env_vars.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/_server_config.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/_session_stats.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/_testing_models.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/app.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/app.tcss +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/ask_user.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/doc-coauthoring/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/LICENSE.txt +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/comment.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/helpers/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/helpers/merge_runs.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/helpers/simplify_redlines.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/pack.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/mce/mc.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/unpack.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/validate.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/validators/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/validators/base.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/validators/docx.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/validators/pptx.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/office/validators/redlining.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/templates/comments.xml +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/templates/commentsExtended.xml +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/templates/commentsExtensible.xml +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/templates/commentsIds.xml +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/docx/scripts/templates/people.xml +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/LICENSE.txt +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/forms.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/reference.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/scripts/check_bounding_boxes.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/scripts/check_fillable_fields.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/scripts/convert_pdf_to_images.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/scripts/create_validation_image.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/scripts/extract_form_field_info.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/scripts/extract_form_structure.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/scripts/fill_fillable_fields.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/LICENSE.txt +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/editing.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/pptxgenjs.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/add_slide.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/clean.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/helpers/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/helpers/merge_runs.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/helpers/simplify_redlines.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/pack.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/mce/mc.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/unpack.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/validate.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/validators/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/validators/base.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/validators/docx.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/validators/pptx.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/office/validators/redlining.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/pptx/scripts/thumbnail.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/remember/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/LICENSE.txt +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/agents/analyzer.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/agents/comparator.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/agents/grader.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/assets/eval_review.html +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/eval-viewer/viewer.html +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/references/schemas.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/scripts/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/scripts/aggregate_benchmark.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/skill-creator/scripts/package_skill.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/LICENSE.txt +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/theme-showcase.pdf +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/themes/arctic-frost.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/themes/botanical-garden.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/themes/desert-rose.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/themes/forest-canopy.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/themes/golden-hour.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/themes/midnight-galaxy.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/themes/modern-minimalist.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/themes/ocean-depths.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/themes/sunset-boulevard.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/theme-factory/themes/tech-innovation.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/LICENSE.txt +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/helpers/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/helpers/merge_runs.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/helpers/simplify_redlines.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/pack.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/mce/mc.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/unpack.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/validate.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/validators/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/validators/base.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/validators/docx.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/validators/pptx.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/built_in_skills/xlsx/scripts/office/validators/redlining.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/clipboard.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/command_registry.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/configurable_model.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/default_agent_prompt.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/editor.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/file_ops.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/formatting.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/input.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/integrations/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/integrations/sandbox_factory.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/integrations/sandbox_provider.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/local_context.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/main.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/mcp_tools.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/mcp_trust.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/media_utils.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/model_config.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/non_interactive.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/offload.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/output.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/project_utils.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/py.typed +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/remote_client.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/server_graph.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/sessions.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/skills/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/skills/load.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/subagents.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/system_prompt.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/textual_adapter.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/theme.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/token_state.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/tool_display.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/tools.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/ui.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/unicode_security.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/update_check.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/_links.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/approval.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/ask_user.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/autocomplete.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/chat_input.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/diff.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/history.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/loading.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/mcp_viewer.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/message_store.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/messages.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/model_selector.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/status.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/theme_selector.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/thread_selector.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/tool_renderers.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/tool_widgets.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/docagent_cli/widgets/welcome.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/examples/skills/arxiv-search/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/examples/skills/arxiv-search/arxiv_search.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/examples/skills/langgraph-docs/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/examples/skills/skill-creator/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/examples/skills/web-research/SKILL.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/images/cli.png +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/scripts/check_imports.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/scripts/install.sh +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/README.md +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/integration_tests/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/integration_tests/benchmarks/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/integration_tests/benchmarks/test_startup_benchmarks.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/integration_tests/conftest.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/integration_tests/test_acp_mode.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/integration_tests/test_compact_resume.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/integration_tests/test_sandbox_factory.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/integration_tests/test_sandbox_operations.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/conftest.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/skills/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/skills/test_commands.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/skills/test_load.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/skills/test_skills_json.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_agent.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_agent_friendly.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_app.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_approval.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_args.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_ask_user.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_ask_user_middleware.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_autocomplete.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_charset.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_chat_input.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_command_registry.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_compact_tool.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_config.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_configurable_model.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_debug.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_editor.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_end_to_end.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_env_vars.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_exception_handling.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_file_ops.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_history.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_hooks.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_imports.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_input_parsing.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_links.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_local_context.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_main.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_main_acp_mode.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_main_args.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_mcp_tools.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_mcp_trust.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_mcp_viewer.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_media_utils.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_message_store.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_messages.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_model_config.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_model_selector.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_model_switch.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_non_interactive.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_offload.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_output.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_reload.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_remote_client.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_sandbox_factory.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_server.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_server_config.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_server_graph.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_server_helpers.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_server_manager.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_sessions.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_shell_allow_list.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_skill_invocation.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_status.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_subagents.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_textual_adapter.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_theme.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_thread_selector.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_token_tracker.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_ui.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_unicode_security.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_update_check.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_version.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/test_welcome.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/tools/__init__.py +0 -0
- {docagent_cli-0.0.40 → docagent_cli-0.0.42}/tests/unit_tests/tools/test_fetch_url.py +0 -0
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.42](https://github.com/langchain-ai/docagent/compare/docagent-cli==0.0.41...docagent-cli==0.0.42) (2026-04-10)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* Fix `JSONEncoder` crash caused by `encoding="utf-8"` being incorrectly injected into `json.dumps()` calls instead of `write_text()` during the 0.0.41 encoding fix
|
|
8
|
+
|
|
9
|
+
## [0.0.41](https://github.com/langchain-ai/docagent/compare/docagent-cli==0.0.40...docagent-cli==0.0.41) (2026-04-10)
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* Fix `UnicodeDecodeError` on Chinese Windows systems (GBK locale) by explicitly specifying `encoding="utf-8"` on all `read_text()` and `write_text()` file operations ([#fix-gbk-encoding](https://github.com/langchain-ai/docagent/issues/fix-gbk-encoding))
|
|
14
|
+
|
|
3
15
|
## [0.0.34](https://github.com/langchain-ai/docagent/compare/docagent-cli==0.0.33...docagent-cli==0.0.34) (2026-03-17)
|
|
4
16
|
|
|
5
17
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docagent-cli
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.42
|
|
4
4
|
Summary: Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities.
|
|
5
5
|
Project-URL: Homepage, https://docs.langchain.com/oss/python/docagent/overview
|
|
6
6
|
Project-URL: Documentation, https://reference.langchain.com/python/docagent/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Version information and lightweight constants for `docagent-cli`."""
|
|
2
2
|
|
|
3
|
-
__version__ = "0.0.
|
|
3
|
+
__version__ = "0.0.42" # x-release-please-version
|
|
4
4
|
|
|
5
5
|
DOCS_URL = "https://docs.langchain.com/oss/python/docagent/cli"
|
|
6
6
|
"""URL for `docagent-cli` documentation."""
|
|
@@ -365,7 +365,7 @@ def reset_agent(
|
|
|
365
365
|
)
|
|
366
366
|
raise SystemExit(1)
|
|
367
367
|
|
|
368
|
-
source_content = source_md.read_text()
|
|
368
|
+
source_content = source_md.read_text(encoding="utf-8")
|
|
369
369
|
action_desc = f"contents of agent '{source_agent}'"
|
|
370
370
|
else:
|
|
371
371
|
source_content = get_default_coding_instructions()
|
|
@@ -399,7 +399,7 @@ def reset_agent(
|
|
|
399
399
|
|
|
400
400
|
agent_dir.mkdir(parents=True, exist_ok=True)
|
|
401
401
|
agent_md = agent_dir / "AGENTS.md"
|
|
402
|
-
agent_md.write_text(source_content)
|
|
402
|
+
agent_md.write_text(source_content, encoding="utf-8")
|
|
403
403
|
|
|
404
404
|
if output_format == "json":
|
|
405
405
|
from docagent_cli.output import write_json
|
|
@@ -504,7 +504,7 @@ def get_system_prompt(
|
|
|
504
504
|
... {CONDITIONAL SECTIONS} ...
|
|
505
505
|
```
|
|
506
506
|
"""
|
|
507
|
-
template = (Path(__file__).parent / "system_prompt.md").read_text()
|
|
507
|
+
template = (Path(__file__).parent / "system_prompt.md").read_text(encoding="utf-8")
|
|
508
508
|
|
|
509
509
|
skills_path = f"~/.docagent/{assistant_id}/skills"
|
|
510
510
|
|
|
@@ -92,7 +92,7 @@ def _setup_libreoffice_macro() -> bool:
|
|
|
92
92
|
macro_dir = Path(MACRO_DIR)
|
|
93
93
|
macro_file = macro_dir / "Module1.xba"
|
|
94
94
|
|
|
95
|
-
if macro_file.exists() and "AcceptAllTrackedChanges" in macro_file.read_text():
|
|
95
|
+
if macro_file.exists() and "AcceptAllTrackedChanges" in macro_file.read_text(encoding="utf-8"):
|
|
96
96
|
return True
|
|
97
97
|
|
|
98
98
|
if not macro_dir.exists():
|
|
@@ -111,7 +111,7 @@ def _setup_libreoffice_macro() -> bool:
|
|
|
111
111
|
macro_dir.mkdir(parents=True, exist_ok=True)
|
|
112
112
|
|
|
113
113
|
try:
|
|
114
|
-
macro_file.write_text(ACCEPT_CHANGES_MACRO)
|
|
114
|
+
macro_file.write_text(ACCEPT_CHANGES_MACRO, encoding="utf-8")
|
|
115
115
|
return True
|
|
116
116
|
except Exception as e:
|
|
117
117
|
logger.warning(f"Failed to setup LibreOffice macro: {e}")
|
|
@@ -55,7 +55,7 @@ def _ensure_shim() -> Path:
|
|
|
55
55
|
return _SHIM_SO
|
|
56
56
|
|
|
57
57
|
src = Path(tempfile.gettempdir()) / "lo_socket_shim.c"
|
|
58
|
-
src.write_text(_SHIM_SOURCE)
|
|
58
|
+
src.write_text(_SHIM_SOURCE, encoding="utf-8")
|
|
59
59
|
subprocess.run(
|
|
60
60
|
["gcc", "-shared", "-fPIC", "-o", str(_SHIM_SO), str(src), "-ldl"],
|
|
61
61
|
check=True,
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: long-doc-writing
|
|
3
|
+
description: Guide for writing long-form documents — research papers, technical reports, literature reviews, methodology sections — with natural prose style. Use this skill when the user asks to write, draft, expand, or polish any substantial document section, especially academic or research writing. Trigger whenever the user wants to write about evaluation metrics, methodology, results, related work, or any multi-paragraph research content. Strongly prefer this skill over plain generation whenever the user mentions writing that should feel natural, narrative, or scholarly rather than bullet-pointed or template-driven.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Long-Form Document Writing
|
|
7
|
+
|
|
8
|
+
This skill guides the production of long-form documents — research papers, technical reports, literature reviews, methodology sections, and similar scholarly or professional writing — with a focus on prose quality over mechanical structure.
|
|
9
|
+
|
|
10
|
+
The core philosophy: good long-form writing reads like a senior researcher thinking through a problem out loud, not like a checklist being filled in. Every section should have a clear reason for existing, every sentence should carry information, and the transitions between ideas should feel earned.
|
|
11
|
+
|
|
12
|
+
## Foundational Principles
|
|
13
|
+
|
|
14
|
+
### Prose Over Lists
|
|
15
|
+
|
|
16
|
+
When content appears as a list — bullet points, numbered items, isolated definitions — convert it into flowing paragraphs. This is not cosmetic. Lists fragment reasoning; paragraphs let ideas build on each other and reveal relationships that bullets obscure.
|
|
17
|
+
|
|
18
|
+
**Instead of:**
|
|
19
|
+
> The evaluation metrics include:
|
|
20
|
+
> - BLEU score: measures n-gram overlap
|
|
21
|
+
> - ROUGE-L: measures longest common subsequence
|
|
22
|
+
> - BERTScore: measures semantic similarity
|
|
23
|
+
|
|
24
|
+
**Write:**
|
|
25
|
+
> To assess generation quality across its different dimensions, we rely on three metrics that together capture what simple accuracy cannot. BLEU score grounds the evaluation in surface-level fidelity — if the model's output shares n-gram patterns with the reference, it is at minimum producing plausible text. But n-gram overlap alone misses the forest for the trees, which is why we pair it with ROUGE-L: the longest common subsequence it tracks tends to surface whether the model captured the right information in roughly the right order, even if the phrasing differs. Neither metric, however, can tell us whether two semantically equivalent sentences are actually equivalent — for that, BERTScore fills the gap, using contextual embeddings to measure meaning-level similarity rather than surface form.
|
|
26
|
+
|
|
27
|
+
This example illustrates the key moves: each metric gets a *reason*, not just a definition, and the paragraph builds from one idea to the next rather than presenting three isolated facts.
|
|
28
|
+
|
|
29
|
+
### Narrative Integration of Technical Content
|
|
30
|
+
|
|
31
|
+
Every technical element — a metric, a design choice, a baseline, a dataset — should be introduced with a brief explanation of *why it belongs in this document*. Not "Metric X is defined as Y", but "We chose metric X because it captures Z, which matters here because..."
|
|
32
|
+
|
|
33
|
+
This is especially important for:
|
|
34
|
+
- **Evaluation metrics**: Explain what each metric is designed to detect and why that matters for your specific task.
|
|
35
|
+
- **Baselines and comparisons**: Explain why each comparison is informative, not just what it is.
|
|
36
|
+
- **Datasets**: Explain what properties make the dataset appropriate, not just its size and source.
|
|
37
|
+
- **Model components**: Explain what problem each component solves, not just what it does.
|
|
38
|
+
|
|
39
|
+
### Active Voice and Researcher's Tone
|
|
40
|
+
|
|
41
|
+
Write as if a knowledgeable colleague is explaining their thinking — confident, direct, sometimes opinionated. Favor active constructions:
|
|
42
|
+
|
|
43
|
+
| Passive (avoid) | Active (prefer) |
|
|
44
|
+
|---|---|
|
|
45
|
+
| "BLEU score was used to evaluate..." | "We evaluate using BLEU score because..." |
|
|
46
|
+
| "It can be observed that..." | "We find that..." |
|
|
47
|
+
| "The model was trained on..." | "We trained the model on..." |
|
|
48
|
+
| "Results are presented in Table 2" | "Table 2 shows..." |
|
|
49
|
+
|
|
50
|
+
This is not about being casual; it is about being clear. Active voice is also shorter and harder to misread.
|
|
51
|
+
|
|
52
|
+
### No Template Boilerplate
|
|
53
|
+
|
|
54
|
+
Avoid clichéd academic openers and transitions that carry no information:
|
|
55
|
+
|
|
56
|
+
**Phrases to eliminate:**
|
|
57
|
+
- "The evaluation metrics include..."
|
|
58
|
+
- "In this section, we present..."
|
|
59
|
+
- "It is worth noting that..."
|
|
60
|
+
- "As can be seen from the results..."
|
|
61
|
+
- "We now turn to..."
|
|
62
|
+
- "For the purpose of this study..."
|
|
63
|
+
- "It is important to mention that..."
|
|
64
|
+
- "This paper is organized as follows..."
|
|
65
|
+
|
|
66
|
+
When you catch yourself writing one of these, ask: what am I actually trying to say? Then say that instead.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Section-Specific Guidance
|
|
71
|
+
|
|
72
|
+
### Evaluation / Metrics Sections
|
|
73
|
+
|
|
74
|
+
This is where mechanical writing is most common and most damaging. The typical failure mode: list each metric with a one-line definition and a formula. The reader learns what the metrics are but not *why this paper uses them* or *what the results actually mean*.
|
|
75
|
+
|
|
76
|
+
**Structure to aim for:**
|
|
77
|
+
1. Open by naming the core question the evaluation is trying to answer — not "we evaluate the model" but "we want to know whether the model preserves factual accuracy while improving fluency."
|
|
78
|
+
2. Introduce metrics in the order they address that question, explaining the gap each one fills.
|
|
79
|
+
3. Note limitations of your metrics honestly — this shows methodological awareness and actually strengthens the paper.
|
|
80
|
+
4. Connect metrics to results in the same breath where possible: "We track ROUGE-L because it captures order-sensitive recall — and as Table 3 shows, this is precisely where our model most consistently outperforms baselines."
|
|
81
|
+
|
|
82
|
+
### Methodology / Approach Sections
|
|
83
|
+
|
|
84
|
+
The goal is to let readers reconstruct your work, but also to understand your reasoning. Every major decision should come with its rationale:
|
|
85
|
+
|
|
86
|
+
- Why this architecture over alternatives?
|
|
87
|
+
- Why this training split?
|
|
88
|
+
- Why this preprocessing step?
|
|
89
|
+
|
|
90
|
+
Anticipate the skeptical reader. If you made a choice that might seem arbitrary, explain why it was not.
|
|
91
|
+
|
|
92
|
+
### Related Work Sections
|
|
93
|
+
|
|
94
|
+
The most common failure: a list of papers with one-sentence summaries, no synthesis. Good related work sections tell a story about the field:
|
|
95
|
+
|
|
96
|
+
- What problem was everyone trying to solve?
|
|
97
|
+
- How did approaches evolve?
|
|
98
|
+
- Where does your work fit in that trajectory?
|
|
99
|
+
- What does your work do that prior work cannot?
|
|
100
|
+
|
|
101
|
+
Group papers by *what they do* or *what gap they address*, not by chronology or who wrote them.
|
|
102
|
+
|
|
103
|
+
### Results and Discussion Sections
|
|
104
|
+
|
|
105
|
+
Do not just describe tables — analyze them. "Table 2 shows our method achieves 87.3 BLEU" is a caption, not an analysis. A results section should answer:
|
|
106
|
+
|
|
107
|
+
- What do the numbers mean, qualitatively?
|
|
108
|
+
- Where does the method succeed and why?
|
|
109
|
+
- Where does it fall short and why?
|
|
110
|
+
- What surprising or counterintuitive result emerged, and what does it tell you?
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Editing Pass Checklist
|
|
115
|
+
|
|
116
|
+
After drafting, run through these questions before finalizing any section:
|
|
117
|
+
|
|
118
|
+
1. **Is there a list that could be a paragraph?** Convert it.
|
|
119
|
+
2. **Does every metric / baseline / dataset have a reason for being here?** Add it if not.
|
|
120
|
+
3. **Does any sentence start with "It is" or "There are"?** Revise to lead with the subject.
|
|
121
|
+
4. **Are there transition phrases that add no information?** Delete them.
|
|
122
|
+
5. **Does each paragraph have a clear point?** If you cannot summarize a paragraph in one sentence, it probably needs restructuring.
|
|
123
|
+
6. **Is the reader told not just *what* but *why*?** Wherever the answer is no, add the reasoning.
|
|
124
|
+
7. **Could a colleague from a neighboring field understand the stakes?** If not, the motivation is probably buried in jargon.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Working With the User
|
|
129
|
+
|
|
130
|
+
When the user provides content to write or rewrite:
|
|
131
|
+
|
|
132
|
+
1. **Identify the core argument or finding** that the section is trying to communicate. If it is unclear, ask.
|
|
133
|
+
2. **Draft in prose**, applying the principles above. Do not produce bullet points unless the user explicitly asks for them.
|
|
134
|
+
3. **Surface one or two decisions** you made that the user might want to revisit — e.g., "I grouped metrics by what they measure rather than the order you listed them; let me know if you'd prefer a different organization."
|
|
135
|
+
4. **Invite targeted feedback** rather than asking "does this look good?" — e.g., "Does the tone feel right for your venue? Should the metrics section lead with the primary metric or with the research question it answers?"
|
|
136
|
+
|
|
137
|
+
If the user provides a list of points they want covered, treat it as raw material, not a structure. Your job is to find the narrative thread and write toward it.
|
|
@@ -55,7 +55,7 @@ def _ensure_shim() -> Path:
|
|
|
55
55
|
return _SHIM_SO
|
|
56
56
|
|
|
57
57
|
src = Path(tempfile.gettempdir()) / "lo_socket_shim.c"
|
|
58
|
-
src.write_text(_SHIM_SOURCE)
|
|
58
|
+
src.write_text(_SHIM_SOURCE, encoding="utf-8")
|
|
59
59
|
subprocess.run(
|
|
60
60
|
["gcc", "-shared", "-fPIC", "-o", str(_SHIM_SO), str(src), "-ldl"],
|
|
61
61
|
check=True,
|
|
@@ -24,7 +24,7 @@ import sys
|
|
|
24
24
|
import time
|
|
25
25
|
import webbrowser
|
|
26
26
|
from functools import partial
|
|
27
|
-
from http.server import
|
|
27
|
+
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
28
28
|
from pathlib import Path
|
|
29
29
|
|
|
30
30
|
# Files to exclude from output listings
|
|
@@ -32,9 +32,32 @@ METADATA_FILES = {"transcript.md", "user_notes.md", "metrics.json"}
|
|
|
32
32
|
|
|
33
33
|
# Extensions we render as inline text
|
|
34
34
|
TEXT_EXTENSIONS = {
|
|
35
|
-
".txt",
|
|
36
|
-
".
|
|
37
|
-
".
|
|
35
|
+
".txt",
|
|
36
|
+
".md",
|
|
37
|
+
".json",
|
|
38
|
+
".csv",
|
|
39
|
+
".py",
|
|
40
|
+
".js",
|
|
41
|
+
".ts",
|
|
42
|
+
".tsx",
|
|
43
|
+
".jsx",
|
|
44
|
+
".yaml",
|
|
45
|
+
".yml",
|
|
46
|
+
".xml",
|
|
47
|
+
".html",
|
|
48
|
+
".css",
|
|
49
|
+
".sh",
|
|
50
|
+
".rb",
|
|
51
|
+
".go",
|
|
52
|
+
".rs",
|
|
53
|
+
".java",
|
|
54
|
+
".c",
|
|
55
|
+
".cpp",
|
|
56
|
+
".h",
|
|
57
|
+
".hpp",
|
|
58
|
+
".sql",
|
|
59
|
+
".r",
|
|
60
|
+
".toml",
|
|
38
61
|
}
|
|
39
62
|
|
|
40
63
|
# Extensions we render as inline images
|
|
@@ -88,10 +111,13 @@ def build_run(root: Path, run_dir: Path) -> dict | None:
|
|
|
88
111
|
eval_id = None
|
|
89
112
|
|
|
90
113
|
# Try eval_metadata.json
|
|
91
|
-
for candidate in [
|
|
114
|
+
for candidate in [
|
|
115
|
+
run_dir / "eval_metadata.json",
|
|
116
|
+
run_dir.parent / "eval_metadata.json",
|
|
117
|
+
]:
|
|
92
118
|
if candidate.exists():
|
|
93
119
|
try:
|
|
94
|
-
metadata = json.loads(candidate.read_text())
|
|
120
|
+
metadata = json.loads(candidate.read_text(encoding="utf-8"))
|
|
95
121
|
prompt = metadata.get("prompt", "")
|
|
96
122
|
eval_id = metadata.get("eval_id")
|
|
97
123
|
except (json.JSONDecodeError, OSError):
|
|
@@ -101,10 +127,13 @@ def build_run(root: Path, run_dir: Path) -> dict | None:
|
|
|
101
127
|
|
|
102
128
|
# Fall back to transcript.md
|
|
103
129
|
if not prompt:
|
|
104
|
-
for candidate in [
|
|
130
|
+
for candidate in [
|
|
131
|
+
run_dir / "transcript.md",
|
|
132
|
+
run_dir / "outputs" / "transcript.md",
|
|
133
|
+
]:
|
|
105
134
|
if candidate.exists():
|
|
106
135
|
try:
|
|
107
|
-
text = candidate.read_text()
|
|
136
|
+
text = candidate.read_text(encoding="utf-8")
|
|
108
137
|
match = re.search(r"## Eval Prompt\n\n([\s\S]*?)(?=\n##|$)", text)
|
|
109
138
|
if match:
|
|
110
139
|
prompt = match.group(1).strip()
|
|
@@ -131,7 +160,7 @@ def build_run(root: Path, run_dir: Path) -> dict | None:
|
|
|
131
160
|
for candidate in [run_dir / "grading.json", run_dir.parent / "grading.json"]:
|
|
132
161
|
if candidate.exists():
|
|
133
162
|
try:
|
|
134
|
-
grading = json.loads(candidate.read_text())
|
|
163
|
+
grading = json.loads(candidate.read_text(encoding="utf-8"))
|
|
135
164
|
except (json.JSONDecodeError, OSError):
|
|
136
165
|
pass
|
|
137
166
|
if grading:
|
|
@@ -166,7 +195,11 @@ def embed_file(path: Path) -> dict:
|
|
|
166
195
|
raw = path.read_bytes()
|
|
167
196
|
b64 = base64.b64encode(raw).decode("ascii")
|
|
168
197
|
except OSError:
|
|
169
|
-
return {
|
|
198
|
+
return {
|
|
199
|
+
"name": path.name,
|
|
200
|
+
"type": "error",
|
|
201
|
+
"content": "(Error reading file)",
|
|
202
|
+
}
|
|
170
203
|
return {
|
|
171
204
|
"name": path.name,
|
|
172
205
|
"type": "image",
|
|
@@ -178,7 +211,11 @@ def embed_file(path: Path) -> dict:
|
|
|
178
211
|
raw = path.read_bytes()
|
|
179
212
|
b64 = base64.b64encode(raw).decode("ascii")
|
|
180
213
|
except OSError:
|
|
181
|
-
return {
|
|
214
|
+
return {
|
|
215
|
+
"name": path.name,
|
|
216
|
+
"type": "error",
|
|
217
|
+
"content": "(Error reading file)",
|
|
218
|
+
}
|
|
182
219
|
return {
|
|
183
220
|
"name": path.name,
|
|
184
221
|
"type": "pdf",
|
|
@@ -189,7 +226,11 @@ def embed_file(path: Path) -> dict:
|
|
|
189
226
|
raw = path.read_bytes()
|
|
190
227
|
b64 = base64.b64encode(raw).decode("ascii")
|
|
191
228
|
except OSError:
|
|
192
|
-
return {
|
|
229
|
+
return {
|
|
230
|
+
"name": path.name,
|
|
231
|
+
"type": "error",
|
|
232
|
+
"content": "(Error reading file)",
|
|
233
|
+
}
|
|
193
234
|
return {
|
|
194
235
|
"name": path.name,
|
|
195
236
|
"type": "xlsx",
|
|
@@ -201,7 +242,11 @@ def embed_file(path: Path) -> dict:
|
|
|
201
242
|
raw = path.read_bytes()
|
|
202
243
|
b64 = base64.b64encode(raw).decode("ascii")
|
|
203
244
|
except OSError:
|
|
204
|
-
return {
|
|
245
|
+
return {
|
|
246
|
+
"name": path.name,
|
|
247
|
+
"type": "error",
|
|
248
|
+
"content": "(Error reading file)",
|
|
249
|
+
}
|
|
205
250
|
return {
|
|
206
251
|
"name": path.name,
|
|
207
252
|
"type": "binary",
|
|
@@ -222,7 +267,7 @@ def load_previous_iteration(workspace: Path) -> dict[str, dict]:
|
|
|
222
267
|
feedback_path = workspace / "feedback.json"
|
|
223
268
|
if feedback_path.exists():
|
|
224
269
|
try:
|
|
225
|
-
data = json.loads(feedback_path.read_text())
|
|
270
|
+
data = json.loads(feedback_path.read_text(encoding="utf-8"))
|
|
226
271
|
feedback_map = {
|
|
227
272
|
r["run_id"]: r["feedback"]
|
|
228
273
|
for r in data.get("reviews", [])
|
|
@@ -255,7 +300,7 @@ def generate_html(
|
|
|
255
300
|
) -> str:
|
|
256
301
|
"""Generate the complete standalone HTML page with embedded data."""
|
|
257
302
|
template_path = Path(__file__).parent / "viewer.html"
|
|
258
|
-
template = template_path.read_text()
|
|
303
|
+
template = template_path.read_text(encoding="utf-8")
|
|
259
304
|
|
|
260
305
|
# Build previous_feedback and previous_outputs maps for the template
|
|
261
306
|
previous_feedback: dict[str, str] = {}
|
|
@@ -278,19 +323,24 @@ def generate_html(
|
|
|
278
323
|
|
|
279
324
|
data_json = json.dumps(embedded)
|
|
280
325
|
|
|
281
|
-
return template.replace(
|
|
326
|
+
return template.replace(
|
|
327
|
+
"/*__EMBEDDED_DATA__*/", f"const EMBEDDED_DATA = {data_json};"
|
|
328
|
+
)
|
|
282
329
|
|
|
283
330
|
|
|
284
331
|
# ---------------------------------------------------------------------------
|
|
285
332
|
# HTTP server (stdlib only, zero dependencies)
|
|
286
333
|
# ---------------------------------------------------------------------------
|
|
287
334
|
|
|
335
|
+
|
|
288
336
|
def _kill_port(port: int) -> None:
|
|
289
337
|
"""Kill any process listening on the given port."""
|
|
290
338
|
try:
|
|
291
339
|
result = subprocess.run(
|
|
292
340
|
["lsof", "-ti", f":{port}"],
|
|
293
|
-
capture_output=True,
|
|
341
|
+
capture_output=True,
|
|
342
|
+
text=True,
|
|
343
|
+
timeout=5,
|
|
294
344
|
)
|
|
295
345
|
for pid_str in result.stdout.strip().split("\n"):
|
|
296
346
|
if pid_str.strip():
|
|
@@ -305,6 +355,7 @@ def _kill_port(port: int) -> None:
|
|
|
305
355
|
except FileNotFoundError:
|
|
306
356
|
print("Note: lsof not found, cannot check if port is in use", file=sys.stderr)
|
|
307
357
|
|
|
358
|
+
|
|
308
359
|
class ReviewHandler(BaseHTTPRequestHandler):
|
|
309
360
|
"""Serves the review HTML and handles feedback saves.
|
|
310
361
|
|
|
@@ -336,7 +387,9 @@ class ReviewHandler(BaseHTTPRequestHandler):
|
|
|
336
387
|
benchmark = None
|
|
337
388
|
if self.benchmark_path and self.benchmark_path.exists():
|
|
338
389
|
try:
|
|
339
|
-
benchmark = json.loads(
|
|
390
|
+
benchmark = json.loads(
|
|
391
|
+
self.benchmark_path.read_text(encoding="utf-8")
|
|
392
|
+
)
|
|
340
393
|
except (json.JSONDecodeError, OSError):
|
|
341
394
|
pass
|
|
342
395
|
html = generate_html(runs, self.skill_name, self.previous, benchmark)
|
|
@@ -366,7 +419,9 @@ class ReviewHandler(BaseHTTPRequestHandler):
|
|
|
366
419
|
data = json.loads(body)
|
|
367
420
|
if not isinstance(data, dict) or "reviews" not in data:
|
|
368
421
|
raise ValueError("Expected JSON object with 'reviews' key")
|
|
369
|
-
self.feedback_path.write_text(
|
|
422
|
+
self.feedback_path.write_text(
|
|
423
|
+
json.dumps(data, indent=2) + "\n", encoding="utf-8"
|
|
424
|
+
)
|
|
370
425
|
resp = b'{"ok":true}'
|
|
371
426
|
self.send_response(200)
|
|
372
427
|
except (json.JSONDecodeError, OSError, ValueError) as e:
|
|
@@ -387,18 +442,29 @@ class ReviewHandler(BaseHTTPRequestHandler):
|
|
|
387
442
|
def main() -> None:
|
|
388
443
|
parser = argparse.ArgumentParser(description="Generate and serve eval review")
|
|
389
444
|
parser.add_argument("workspace", type=Path, help="Path to workspace directory")
|
|
390
|
-
parser.add_argument("--port", "-p", type=int, default=3117, help="Server port (default: 3117)")
|
|
391
|
-
parser.add_argument("--skill-name", "-n", type=str, default=None, help="Skill name for header")
|
|
392
445
|
parser.add_argument(
|
|
393
|
-
"--
|
|
446
|
+
"--port", "-p", type=int, default=3117, help="Server port (default: 3117)"
|
|
447
|
+
)
|
|
448
|
+
parser.add_argument(
|
|
449
|
+
"--skill-name", "-n", type=str, default=None, help="Skill name for header"
|
|
450
|
+
)
|
|
451
|
+
parser.add_argument(
|
|
452
|
+
"--previous-workspace",
|
|
453
|
+
type=Path,
|
|
454
|
+
default=None,
|
|
394
455
|
help="Path to previous iteration's workspace (shows old outputs and feedback as context)",
|
|
395
456
|
)
|
|
396
457
|
parser.add_argument(
|
|
397
|
-
"--benchmark",
|
|
458
|
+
"--benchmark",
|
|
459
|
+
type=Path,
|
|
460
|
+
default=None,
|
|
398
461
|
help="Path to benchmark.json to show in the Benchmark tab",
|
|
399
462
|
)
|
|
400
463
|
parser.add_argument(
|
|
401
|
-
"--static",
|
|
464
|
+
"--static",
|
|
465
|
+
"-s",
|
|
466
|
+
type=Path,
|
|
467
|
+
default=None,
|
|
402
468
|
help="Write standalone HTML to this path instead of starting a server",
|
|
403
469
|
)
|
|
404
470
|
args = parser.parse_args()
|
|
@@ -424,21 +490,23 @@ def main() -> None:
|
|
|
424
490
|
benchmark = None
|
|
425
491
|
if benchmark_path and benchmark_path.exists():
|
|
426
492
|
try:
|
|
427
|
-
benchmark = json.loads(benchmark_path.read_text())
|
|
493
|
+
benchmark = json.loads(benchmark_path.read_text(encoding="utf-8"))
|
|
428
494
|
except (json.JSONDecodeError, OSError):
|
|
429
495
|
pass
|
|
430
496
|
|
|
431
497
|
if args.static:
|
|
432
498
|
html = generate_html(runs, skill_name, previous, benchmark)
|
|
433
499
|
args.static.parent.mkdir(parents=True, exist_ok=True)
|
|
434
|
-
args.static.write_text(html)
|
|
500
|
+
args.static.write_text(html, encoding="utf-8")
|
|
435
501
|
print(f"\n Static viewer written to: {args.static}\n")
|
|
436
502
|
sys.exit(0)
|
|
437
503
|
|
|
438
504
|
# Kill any existing process on the target port
|
|
439
505
|
port = args.port
|
|
440
506
|
_kill_port(port)
|
|
441
|
-
handler = partial(
|
|
507
|
+
handler = partial(
|
|
508
|
+
ReviewHandler, workspace, skill_name, feedback_path, previous, benchmark_path
|
|
509
|
+
)
|
|
442
510
|
try:
|
|
443
511
|
server = HTTPServer(("127.0.0.1", port), handler)
|
|
444
512
|
except OSError:
|
|
@@ -311,12 +311,12 @@ def main():
|
|
|
311
311
|
if args.input == "-":
|
|
312
312
|
data = json.load(sys.stdin)
|
|
313
313
|
else:
|
|
314
|
-
data = json.loads(Path(args.input).read_text())
|
|
314
|
+
data = json.loads(Path(args.input).read_text(encoding="utf-8"))
|
|
315
315
|
|
|
316
316
|
html_output = generate_html(data, skill_name=args.skill_name)
|
|
317
317
|
|
|
318
318
|
if args.output:
|
|
319
|
-
Path(args.output).write_text(html_output)
|
|
319
|
+
Path(args.output).write_text(html_output, encoding="utf-8")
|
|
320
320
|
print(f"Report written to {args.output}", file=sys.stderr)
|
|
321
321
|
else:
|
|
322
322
|
print(html_output)
|