docagent-cli 0.0.35__py3-none-any.whl
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/__init__.py +36 -0
- docagent_cli/__main__.py +6 -0
- docagent_cli/_ask_user_types.py +90 -0
- docagent_cli/_cli_context.py +27 -0
- docagent_cli/_debug.py +52 -0
- docagent_cli/_env_vars.py +56 -0
- docagent_cli/_server_config.py +352 -0
- docagent_cli/_session_stats.py +114 -0
- docagent_cli/_testing_models.py +144 -0
- docagent_cli/_version.py +17 -0
- docagent_cli/agent.py +1193 -0
- docagent_cli/app.py +4979 -0
- docagent_cli/app.tcss +283 -0
- docagent_cli/ask_user.py +301 -0
- docagent_cli/built_in_skills/__init__.py +5 -0
- docagent_cli/built_in_skills/doc-coauthoring/SKILL.md +375 -0
- docagent_cli/built_in_skills/docx/LICENSE.txt +30 -0
- docagent_cli/built_in_skills/docx/SKILL.md +590 -0
- docagent_cli/built_in_skills/docx/scripts/__init__.py +1 -0
- docagent_cli/built_in_skills/docx/scripts/accept_changes.py +135 -0
- docagent_cli/built_in_skills/docx/scripts/comment.py +318 -0
- docagent_cli/built_in_skills/docx/scripts/office/helpers/__init__.py +0 -0
- docagent_cli/built_in_skills/docx/scripts/office/helpers/merge_runs.py +199 -0
- docagent_cli/built_in_skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- docagent_cli/built_in_skills/docx/scripts/office/pack.py +159 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- docagent_cli/built_in_skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- docagent_cli/built_in_skills/docx/scripts/office/soffice.py +183 -0
- docagent_cli/built_in_skills/docx/scripts/office/unpack.py +132 -0
- docagent_cli/built_in_skills/docx/scripts/office/validate.py +111 -0
- docagent_cli/built_in_skills/docx/scripts/office/validators/__init__.py +15 -0
- docagent_cli/built_in_skills/docx/scripts/office/validators/base.py +847 -0
- docagent_cli/built_in_skills/docx/scripts/office/validators/docx.py +446 -0
- docagent_cli/built_in_skills/docx/scripts/office/validators/pptx.py +275 -0
- docagent_cli/built_in_skills/docx/scripts/office/validators/redlining.py +247 -0
- docagent_cli/built_in_skills/docx/scripts/templates/comments.xml +3 -0
- docagent_cli/built_in_skills/docx/scripts/templates/commentsExtended.xml +3 -0
- docagent_cli/built_in_skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- docagent_cli/built_in_skills/docx/scripts/templates/commentsIds.xml +3 -0
- docagent_cli/built_in_skills/docx/scripts/templates/people.xml +3 -0
- docagent_cli/built_in_skills/pdf/LICENSE.txt +30 -0
- docagent_cli/built_in_skills/pdf/SKILL.md +314 -0
- docagent_cli/built_in_skills/pdf/forms.md +294 -0
- docagent_cli/built_in_skills/pdf/reference.md +612 -0
- docagent_cli/built_in_skills/pdf/scripts/check_bounding_boxes.py +65 -0
- docagent_cli/built_in_skills/pdf/scripts/check_fillable_fields.py +11 -0
- docagent_cli/built_in_skills/pdf/scripts/convert_pdf_to_images.py +33 -0
- docagent_cli/built_in_skills/pdf/scripts/create_validation_image.py +37 -0
- docagent_cli/built_in_skills/pdf/scripts/extract_form_field_info.py +122 -0
- docagent_cli/built_in_skills/pdf/scripts/extract_form_structure.py +115 -0
- docagent_cli/built_in_skills/pdf/scripts/fill_fillable_fields.py +98 -0
- docagent_cli/built_in_skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- docagent_cli/built_in_skills/pptx/LICENSE.txt +30 -0
- docagent_cli/built_in_skills/pptx/SKILL.md +232 -0
- docagent_cli/built_in_skills/pptx/editing.md +205 -0
- docagent_cli/built_in_skills/pptx/pptxgenjs.md +420 -0
- docagent_cli/built_in_skills/pptx/scripts/__init__.py +0 -0
- docagent_cli/built_in_skills/pptx/scripts/add_slide.py +195 -0
- docagent_cli/built_in_skills/pptx/scripts/clean.py +286 -0
- docagent_cli/built_in_skills/pptx/scripts/office/helpers/__init__.py +0 -0
- docagent_cli/built_in_skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
- docagent_cli/built_in_skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
- docagent_cli/built_in_skills/pptx/scripts/office/pack.py +159 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- docagent_cli/built_in_skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- docagent_cli/built_in_skills/pptx/scripts/office/soffice.py +183 -0
- docagent_cli/built_in_skills/pptx/scripts/office/unpack.py +132 -0
- docagent_cli/built_in_skills/pptx/scripts/office/validate.py +111 -0
- docagent_cli/built_in_skills/pptx/scripts/office/validators/__init__.py +15 -0
- docagent_cli/built_in_skills/pptx/scripts/office/validators/base.py +847 -0
- docagent_cli/built_in_skills/pptx/scripts/office/validators/docx.py +446 -0
- docagent_cli/built_in_skills/pptx/scripts/office/validators/pptx.py +275 -0
- docagent_cli/built_in_skills/pptx/scripts/office/validators/redlining.py +247 -0
- docagent_cli/built_in_skills/pptx/scripts/thumbnail.py +289 -0
- docagent_cli/built_in_skills/remember/SKILL.md +118 -0
- docagent_cli/built_in_skills/skill-creator/LICENSE.txt +202 -0
- docagent_cli/built_in_skills/skill-creator/SKILL.md +485 -0
- docagent_cli/built_in_skills/skill-creator/agents/analyzer.md +274 -0
- docagent_cli/built_in_skills/skill-creator/agents/comparator.md +202 -0
- docagent_cli/built_in_skills/skill-creator/agents/grader.md +223 -0
- docagent_cli/built_in_skills/skill-creator/assets/eval_review.html +146 -0
- docagent_cli/built_in_skills/skill-creator/eval-viewer/generate_review.py +471 -0
- docagent_cli/built_in_skills/skill-creator/eval-viewer/viewer.html +1325 -0
- docagent_cli/built_in_skills/skill-creator/references/schemas.md +430 -0
- docagent_cli/built_in_skills/skill-creator/scripts/__init__.py +0 -0
- docagent_cli/built_in_skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- docagent_cli/built_in_skills/skill-creator/scripts/generate_report.py +326 -0
- docagent_cli/built_in_skills/skill-creator/scripts/improve_description.py +247 -0
- docagent_cli/built_in_skills/skill-creator/scripts/package_skill.py +136 -0
- docagent_cli/built_in_skills/skill-creator/scripts/quick_validate.py +103 -0
- docagent_cli/built_in_skills/skill-creator/scripts/run_eval.py +310 -0
- docagent_cli/built_in_skills/skill-creator/scripts/run_loop.py +328 -0
- docagent_cli/built_in_skills/skill-creator/scripts/utils.py +47 -0
- docagent_cli/built_in_skills/theme-factory/LICENSE.txt +202 -0
- docagent_cli/built_in_skills/theme-factory/SKILL.md +59 -0
- docagent_cli/built_in_skills/theme-factory/theme-showcase.pdf +0 -0
- docagent_cli/built_in_skills/theme-factory/themes/arctic-frost.md +19 -0
- docagent_cli/built_in_skills/theme-factory/themes/botanical-garden.md +19 -0
- docagent_cli/built_in_skills/theme-factory/themes/desert-rose.md +19 -0
- docagent_cli/built_in_skills/theme-factory/themes/forest-canopy.md +19 -0
- docagent_cli/built_in_skills/theme-factory/themes/golden-hour.md +19 -0
- docagent_cli/built_in_skills/theme-factory/themes/midnight-galaxy.md +19 -0
- docagent_cli/built_in_skills/theme-factory/themes/modern-minimalist.md +19 -0
- docagent_cli/built_in_skills/theme-factory/themes/ocean-depths.md +19 -0
- docagent_cli/built_in_skills/theme-factory/themes/sunset-boulevard.md +19 -0
- docagent_cli/built_in_skills/theme-factory/themes/tech-innovation.md +19 -0
- docagent_cli/built_in_skills/xlsx/LICENSE.txt +30 -0
- docagent_cli/built_in_skills/xlsx/SKILL.md +292 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/helpers/__init__.py +0 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/pack.py +159 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/soffice.py +183 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/unpack.py +132 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/validate.py +111 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/validators/__init__.py +15 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/validators/base.py +847 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/validators/docx.py +446 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/validators/pptx.py +275 -0
- docagent_cli/built_in_skills/xlsx/scripts/office/validators/redlining.py +247 -0
- docagent_cli/built_in_skills/xlsx/scripts/recalc.py +184 -0
- docagent_cli/clipboard.py +128 -0
- docagent_cli/command_registry.py +284 -0
- docagent_cli/config.py +2418 -0
- docagent_cli/configurable_model.py +162 -0
- docagent_cli/default_agent_prompt.md +12 -0
- docagent_cli/editor.py +142 -0
- docagent_cli/file_ops.py +473 -0
- docagent_cli/formatting.py +28 -0
- docagent_cli/hooks.py +206 -0
- docagent_cli/input.py +787 -0
- docagent_cli/integrations/__init__.py +1 -0
- docagent_cli/integrations/sandbox_factory.py +873 -0
- docagent_cli/integrations/sandbox_provider.py +71 -0
- docagent_cli/local_context.py +718 -0
- docagent_cli/main.py +1641 -0
- docagent_cli/mcp_tools.py +707 -0
- docagent_cli/mcp_trust.py +168 -0
- docagent_cli/media_utils.py +478 -0
- docagent_cli/model_config.py +1620 -0
- docagent_cli/non_interactive.py +948 -0
- docagent_cli/offload.py +371 -0
- docagent_cli/output.py +69 -0
- docagent_cli/project_utils.py +188 -0
- docagent_cli/py.typed +0 -0
- docagent_cli/remote_client.py +515 -0
- docagent_cli/server.py +520 -0
- docagent_cli/server_graph.py +196 -0
- docagent_cli/server_manager.py +365 -0
- docagent_cli/sessions.py +1262 -0
- docagent_cli/skills/__init__.py +18 -0
- docagent_cli/skills/commands.py +1090 -0
- docagent_cli/skills/load.py +192 -0
- docagent_cli/subagents.py +173 -0
- docagent_cli/system_prompt.md +247 -0
- docagent_cli/textual_adapter.py +1352 -0
- docagent_cli/theme.py +842 -0
- docagent_cli/token_state.py +31 -0
- docagent_cli/tool_display.py +298 -0
- docagent_cli/tools.py +236 -0
- docagent_cli/ui.py +420 -0
- docagent_cli/unicode_security.py +516 -0
- docagent_cli/update_check.py +454 -0
- docagent_cli/widgets/__init__.py +9 -0
- docagent_cli/widgets/_links.py +63 -0
- docagent_cli/widgets/approval.py +442 -0
- docagent_cli/widgets/ask_user.py +398 -0
- docagent_cli/widgets/autocomplete.py +691 -0
- docagent_cli/widgets/chat_input.py +1827 -0
- docagent_cli/widgets/diff.py +248 -0
- docagent_cli/widgets/history.py +188 -0
- docagent_cli/widgets/loading.py +177 -0
- docagent_cli/widgets/mcp_viewer.py +362 -0
- docagent_cli/widgets/message_store.py +675 -0
- docagent_cli/widgets/messages.py +1751 -0
- docagent_cli/widgets/model_selector.py +964 -0
- docagent_cli/widgets/status.py +372 -0
- docagent_cli/widgets/theme_selector.py +164 -0
- docagent_cli/widgets/thread_selector.py +1905 -0
- docagent_cli/widgets/tool_renderers.py +148 -0
- docagent_cli/widgets/tool_widgets.py +274 -0
- docagent_cli/widgets/welcome.py +339 -0
- docagent_cli-0.0.35.data/data/docagent_cli/default_agent_prompt.md +12 -0
- docagent_cli-0.0.35.dist-info/METADATA +200 -0
- docagent_cli-0.0.35.dist-info/RECORD +300 -0
- docagent_cli-0.0.35.dist-info/WHEEL +4 -0
- docagent_cli-0.0.35.dist-info/entry_points.txt +3 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"""CLI middleware for runtime model selection via LangGraph runtime context.
|
|
2
|
+
|
|
3
|
+
Allows switching the model per invocation by passing a `CLIContext` via
|
|
4
|
+
`context=` on `agent.astream()` / `agent.invoke()` without recompiling
|
|
5
|
+
the graph.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
from typing import TYPE_CHECKING, Any
|
|
12
|
+
|
|
13
|
+
from deepagents._models import model_matches_spec # noqa: PLC2701
|
|
14
|
+
from langchain.agents.middleware.types import (
|
|
15
|
+
AgentMiddleware,
|
|
16
|
+
ModelRequest,
|
|
17
|
+
ModelResponse,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
from collections.abc import Awaitable, Callable
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
logger = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _is_anthropic_model(model: object) -> bool:
|
|
28
|
+
"""Check whether a resolved model reports `'anthropic'` as its provider.
|
|
29
|
+
|
|
30
|
+
Uses `_get_ls_params` from `BaseChatModel` to read the provider name.
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
`True` if the model's `ls_provider` is `'anthropic'`.
|
|
34
|
+
"""
|
|
35
|
+
try:
|
|
36
|
+
ls_params = model._get_ls_params() # type: ignore[attr-defined]
|
|
37
|
+
except (AttributeError, TypeError, RuntimeError):
|
|
38
|
+
logger.debug(
|
|
39
|
+
"_get_ls_params raised for %s; assuming non-Anthropic",
|
|
40
|
+
type(model).__name__,
|
|
41
|
+
)
|
|
42
|
+
return False
|
|
43
|
+
return isinstance(ls_params, dict) and ls_params.get("ls_provider") == "anthropic"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
_ANTHROPIC_ONLY_SETTINGS: set[str] = {"cache_control"}
|
|
47
|
+
"""Keys injected by Anthropic-specific middleware (e.g.
|
|
48
|
+
`AnthropicPromptCachingMiddleware`) that are not accepted by other providers and
|
|
49
|
+
must be stripped on cross-provider swap."""
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _apply_overrides(request: ModelRequest) -> ModelRequest:
|
|
53
|
+
"""Apply model/param overrides from `CLIContext` on the runtime.
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
The original request unchanged when no `CLIContext` is present or it
|
|
57
|
+
contains no overrides, otherwise a new request with overrides.
|
|
58
|
+
"""
|
|
59
|
+
runtime = request.runtime
|
|
60
|
+
if runtime is None:
|
|
61
|
+
return request
|
|
62
|
+
|
|
63
|
+
ctx = runtime.context
|
|
64
|
+
if not isinstance(ctx, dict):
|
|
65
|
+
return request
|
|
66
|
+
|
|
67
|
+
overrides: dict[str, Any] = {}
|
|
68
|
+
|
|
69
|
+
# Model swap
|
|
70
|
+
new_model = None
|
|
71
|
+
model = ctx.get("model")
|
|
72
|
+
if model and not model_matches_spec(request.model, model):
|
|
73
|
+
from docagent_cli.config import create_model
|
|
74
|
+
from docagent_cli.model_config import ModelConfigError
|
|
75
|
+
|
|
76
|
+
logger.debug("Overriding model to %s", model)
|
|
77
|
+
try:
|
|
78
|
+
model_result = create_model(model)
|
|
79
|
+
new_model = model_result.model
|
|
80
|
+
except ModelConfigError:
|
|
81
|
+
logger.exception(
|
|
82
|
+
"Failed to resolve runtime model override '%s'; "
|
|
83
|
+
"continuing with current model",
|
|
84
|
+
model,
|
|
85
|
+
)
|
|
86
|
+
return request
|
|
87
|
+
overrides["model"] = new_model
|
|
88
|
+
|
|
89
|
+
# Param merge
|
|
90
|
+
model_params = ctx.get("model_params", {})
|
|
91
|
+
if model_params:
|
|
92
|
+
overrides["model_settings"] = {**request.model_settings, **model_params}
|
|
93
|
+
|
|
94
|
+
if not overrides:
|
|
95
|
+
return request
|
|
96
|
+
|
|
97
|
+
# When switching away from Anthropic, strip provider-specific settings
|
|
98
|
+
# that would cause errors on other providers (e.g. cache_control passed
|
|
99
|
+
# to the OpenAI SDK raises TypeError).
|
|
100
|
+
if new_model is not None and not _is_anthropic_model(new_model):
|
|
101
|
+
settings = overrides.get("model_settings", request.model_settings)
|
|
102
|
+
dropped = settings.keys() & _ANTHROPIC_ONLY_SETTINGS
|
|
103
|
+
if dropped:
|
|
104
|
+
logger.debug(
|
|
105
|
+
"Stripped Anthropic-only settings %s for non-Anthropic model",
|
|
106
|
+
dropped,
|
|
107
|
+
)
|
|
108
|
+
overrides["model_settings"] = {
|
|
109
|
+
k: v for k, v in settings.items() if k not in dropped
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
# Patch the Model Identity section in the system prompt so the new model
|
|
113
|
+
# sees its own name/provider/context-limit, not the original's.
|
|
114
|
+
# We read metadata from model_result (not the CLI settings singleton)
|
|
115
|
+
# because the middleware runs in the server subprocess where settings
|
|
116
|
+
# are never updated by /model.
|
|
117
|
+
if new_model is not None and request.system_prompt:
|
|
118
|
+
from docagent_cli.agent import (
|
|
119
|
+
MODEL_IDENTITY_RE,
|
|
120
|
+
build_model_identity_section,
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
prompt = request.system_prompt
|
|
124
|
+
new_identity = build_model_identity_section(
|
|
125
|
+
model_result.model_name,
|
|
126
|
+
provider=model_result.provider,
|
|
127
|
+
context_limit=model_result.context_limit,
|
|
128
|
+
unsupported_modalities=model_result.unsupported_modalities,
|
|
129
|
+
)
|
|
130
|
+
patched = MODEL_IDENTITY_RE.sub(new_identity, prompt, count=1)
|
|
131
|
+
if patched != prompt:
|
|
132
|
+
overrides["system_prompt"] = patched
|
|
133
|
+
elif "### Model Identity" in prompt:
|
|
134
|
+
logger.warning(
|
|
135
|
+
"System prompt contains '### Model Identity' but regex "
|
|
136
|
+
"did not match; identity section was NOT updated for "
|
|
137
|
+
"model '%s'. The regex may be out of sync with the "
|
|
138
|
+
"prompt template.",
|
|
139
|
+
model_result.model_name,
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
return request.override(**overrides)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
class ConfigurableModelMiddleware(AgentMiddleware):
|
|
146
|
+
"""Swap the model or per-call settings from `runtime.context`."""
|
|
147
|
+
|
|
148
|
+
def wrap_model_call( # noqa: PLR6301
|
|
149
|
+
self,
|
|
150
|
+
request: ModelRequest,
|
|
151
|
+
handler: Callable[[ModelRequest], ModelResponse],
|
|
152
|
+
) -> ModelResponse:
|
|
153
|
+
"""Apply runtime overrides and delegate to the next handler.""" # noqa: DOC201
|
|
154
|
+
return handler(_apply_overrides(request))
|
|
155
|
+
|
|
156
|
+
async def awrap_model_call( # noqa: PLR6301
|
|
157
|
+
self,
|
|
158
|
+
request: ModelRequest,
|
|
159
|
+
handler: Callable[[ModelRequest], Awaitable[ModelResponse]],
|
|
160
|
+
) -> ModelResponse:
|
|
161
|
+
"""Apply runtime overrides and delegate to the next async handler.""" # noqa: DOC201
|
|
162
|
+
return await handler(_apply_overrides(request))
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Project Notes
|
|
2
|
+
|
|
3
|
+
This file is for tracking project-specific context as you work.
|
|
4
|
+
You can update this file to remember decisions, patterns, and context about this project.
|
|
5
|
+
|
|
6
|
+
## Architecture Notes
|
|
7
|
+
|
|
8
|
+
(Add notes about project structure, key files, patterns as you discover them)
|
|
9
|
+
|
|
10
|
+
## Decisions
|
|
11
|
+
|
|
12
|
+
(Track important decisions and their rationale)
|
docagent_cli/editor.py
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"""External editor support for composing prompts."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import contextlib
|
|
6
|
+
import logging
|
|
7
|
+
import os
|
|
8
|
+
import shlex
|
|
9
|
+
import subprocess # noqa: S404
|
|
10
|
+
import sys
|
|
11
|
+
import tempfile
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
|
|
14
|
+
logger = logging.getLogger(__name__)
|
|
15
|
+
|
|
16
|
+
GUI_WAIT_FLAG: dict[str, str] = {
|
|
17
|
+
"code": "--wait",
|
|
18
|
+
"cursor": "--wait",
|
|
19
|
+
"zed": "--wait",
|
|
20
|
+
"atom": "--wait",
|
|
21
|
+
"subl": "-w",
|
|
22
|
+
"windsurf": "--wait",
|
|
23
|
+
}
|
|
24
|
+
"""Mapping of GUI editor base names to their blocking flag."""
|
|
25
|
+
|
|
26
|
+
VIM_EDITORS = {"vi", "vim", "nvim"}
|
|
27
|
+
"""Set of vim-family editor base names that receive the `-i NONE` flag."""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def resolve_editor() -> list[str] | None:
|
|
31
|
+
"""Resolve editor command from environment.
|
|
32
|
+
|
|
33
|
+
Checks $VISUAL, then $EDITOR, then falls back to platform default.
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
Tokenized command list, or `None` if the env var was set but empty after
|
|
37
|
+
tokenization.
|
|
38
|
+
"""
|
|
39
|
+
editor = os.environ.get("VISUAL") or os.environ.get("EDITOR")
|
|
40
|
+
if not editor:
|
|
41
|
+
if sys.platform == "win32":
|
|
42
|
+
return ["notepad"]
|
|
43
|
+
return ["vi"]
|
|
44
|
+
tokens = shlex.split(editor)
|
|
45
|
+
return tokens or None
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _prepare_command(cmd: list[str], filepath: str) -> list[str]:
|
|
49
|
+
"""Build the full command list with appropriate flags.
|
|
50
|
+
|
|
51
|
+
Adds --wait/-w for GUI editors and `-i NONE` for vim-family editors.
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
The complete command list with flags and filepath appended.
|
|
55
|
+
"""
|
|
56
|
+
cmd = list(cmd) # copy
|
|
57
|
+
exe = Path(cmd[0]).stem.lower()
|
|
58
|
+
|
|
59
|
+
# Auto-inject wait flag for GUI editors
|
|
60
|
+
if exe in GUI_WAIT_FLAG:
|
|
61
|
+
flag = GUI_WAIT_FLAG[exe]
|
|
62
|
+
if flag not in cmd:
|
|
63
|
+
cmd.insert(1, flag)
|
|
64
|
+
|
|
65
|
+
# Vim workaround: avoid viminfo errors in temp environments
|
|
66
|
+
if exe in VIM_EDITORS and "-i" not in cmd:
|
|
67
|
+
cmd.extend(["-i", "NONE"])
|
|
68
|
+
|
|
69
|
+
cmd.append(filepath)
|
|
70
|
+
return cmd
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def open_in_editor(current_text: str) -> str | None:
|
|
74
|
+
"""Open current_text in an external editor.
|
|
75
|
+
|
|
76
|
+
Creates a temp .md file, launches the editor, and reads back the result.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
current_text: The text to pre-populate in the editor.
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
The edited text with normalized line endings, or `None` if the editor
|
|
83
|
+
exited with a non-zero status, was not found, or the result was
|
|
84
|
+
empty/whitespace-only.
|
|
85
|
+
"""
|
|
86
|
+
cmd = resolve_editor()
|
|
87
|
+
if cmd is None:
|
|
88
|
+
return None
|
|
89
|
+
|
|
90
|
+
tmp_path: str | None = None
|
|
91
|
+
try:
|
|
92
|
+
with tempfile.NamedTemporaryFile(
|
|
93
|
+
suffix=".md",
|
|
94
|
+
prefix="docagent-edit-",
|
|
95
|
+
delete=False,
|
|
96
|
+
mode="w",
|
|
97
|
+
encoding="utf-8",
|
|
98
|
+
) as tmp:
|
|
99
|
+
tmp_path = tmp.name
|
|
100
|
+
tmp.write(current_text)
|
|
101
|
+
|
|
102
|
+
full_cmd = _prepare_command(cmd, tmp_path)
|
|
103
|
+
|
|
104
|
+
# S603: editor command comes from user's own $EDITOR env var
|
|
105
|
+
result = subprocess.run( # noqa: S603
|
|
106
|
+
full_cmd,
|
|
107
|
+
stdin=sys.stdin,
|
|
108
|
+
stdout=sys.stdout,
|
|
109
|
+
stderr=sys.stderr,
|
|
110
|
+
check=False,
|
|
111
|
+
)
|
|
112
|
+
if result.returncode != 0:
|
|
113
|
+
logger.warning(
|
|
114
|
+
"Editor exited with code %d: %s", result.returncode, full_cmd
|
|
115
|
+
)
|
|
116
|
+
return None
|
|
117
|
+
|
|
118
|
+
edited = Path(tmp_path).read_text(encoding="utf-8")
|
|
119
|
+
|
|
120
|
+
# Normalize line endings
|
|
121
|
+
edited = edited.replace("\r\n", "\n").replace("\r", "\n")
|
|
122
|
+
|
|
123
|
+
# Most editors append a final newline on save (POSIX convention).
|
|
124
|
+
# Strip exactly one so the cursor lands on content, not a blank line,
|
|
125
|
+
# while preserving any intentional trailing newlines the user added.
|
|
126
|
+
edited = edited.removesuffix("\n")
|
|
127
|
+
|
|
128
|
+
# Treat empty result as cancellation
|
|
129
|
+
if not edited.strip():
|
|
130
|
+
return None
|
|
131
|
+
|
|
132
|
+
except FileNotFoundError:
|
|
133
|
+
return None
|
|
134
|
+
except Exception:
|
|
135
|
+
logger.warning("Editor failed", exc_info=True)
|
|
136
|
+
return None
|
|
137
|
+
else:
|
|
138
|
+
return edited
|
|
139
|
+
finally:
|
|
140
|
+
if tmp_path is not None:
|
|
141
|
+
with contextlib.suppress(OSError):
|
|
142
|
+
Path(tmp_path).unlink(missing_ok=True)
|