@duckmind/deepquark-darwin-arm64 0.9.78 → 0.9.81
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.
- package/.deepquark/skills/bundled/data-storytelling/SKILL.md +453 -0
- package/.deepquark/skills/bundled/docx/LICENSE.txt +30 -0
- package/.deepquark/skills/bundled/docx/SKILL.md +481 -0
- package/.deepquark/skills/bundled/docx/scripts/__init__.py +1 -0
- package/.deepquark/skills/bundled/docx/scripts/accept_changes.py +135 -0
- package/.deepquark/skills/bundled/docx/scripts/comment.py +318 -0
- package/.deepquark/skills/bundled/docx/scripts/office/helpers/__init__.py +0 -0
- package/.deepquark/skills/bundled/docx/scripts/office/helpers/merge_runs.py +199 -0
- package/.deepquark/skills/bundled/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/.deepquark/skills/bundled/docx/scripts/office/pack.py +159 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/.deepquark/skills/bundled/docx/scripts/office/soffice.py +183 -0
- package/.deepquark/skills/bundled/docx/scripts/office/unpack.py +132 -0
- package/.deepquark/skills/bundled/docx/scripts/office/validate.py +111 -0
- package/.deepquark/skills/bundled/docx/scripts/office/validators/__init__.py +15 -0
- package/.deepquark/skills/bundled/docx/scripts/office/validators/base.py +847 -0
- package/.deepquark/skills/bundled/docx/scripts/office/validators/docx.py +446 -0
- package/.deepquark/skills/bundled/docx/scripts/office/validators/pptx.py +275 -0
- package/.deepquark/skills/bundled/docx/scripts/office/validators/redlining.py +247 -0
- package/.deepquark/skills/bundled/docx/scripts/templates/comments.xml +3 -0
- package/.deepquark/skills/bundled/docx/scripts/templates/commentsExtended.xml +3 -0
- package/.deepquark/skills/bundled/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/.deepquark/skills/bundled/docx/scripts/templates/commentsIds.xml +3 -0
- package/.deepquark/skills/bundled/docx/scripts/templates/people.xml +3 -0
- package/.deepquark/skills/bundled/drawio-architect/SKILL.md +300 -0
- package/.deepquark/skills/bundled/drawio-architect/references/architecture-patterns.md +236 -0
- package/.deepquark/skills/bundled/drawio-architect/references/branding.md +180 -0
- package/.deepquark/skills/bundled/drawio-architect/references/cloud-icons.md +493 -0
- package/.deepquark/skills/bundled/drawio-architect/references/style-guide.md +268 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/ARCHITECTURE_REVIEW.md +495 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/AUTONOMY_VERIFICATION.md +420 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/COMPETITIVE_ANALYSIS.md +179 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/CONTEXT_OPTIMIZATION.md +293 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/QUICK_START.md +167 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/README.md +259 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/SKILL.md +754 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/WORD_PRECISION_AUDIT.md +476 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/reference/methodology.md +384 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/requirements.txt +10 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/scripts/citation_manager.py +177 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/scripts/md_to_html.py +330 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/scripts/research_engine.py +578 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/scripts/source_evaluator.py +292 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/scripts/validate_report.py +354 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/scripts/verify_citations.py +430 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/scripts/verify_html.py +220 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/templates/mckinsey_report_template.html +443 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/templates/report_template.md +414 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/tests/fixtures/invalid_report.md +27 -0
- package/.deepquark/skills/bundled/duckmind-deep-research/tests/fixtures/valid_report.md +114 -0
- package/.deepquark/skills/bundled/duckmind-multimodal/SKILL.md +171 -0
- package/.deepquark/skills/bundled/duckmind-multimodal/references/image-generation.md +131 -0
- package/.deepquark/skills/bundled/duckmind-multimodal/references/pdf-processing.md +120 -0
- package/.deepquark/skills/bundled/duckmind-transcribe/SKILL.md +70 -0
- package/.deepquark/skills/bundled/duckmind-transcribe/scripts/transcribe.sh +134 -0
- package/.deepquark/skills/bundled/excel-analysis/SKILL.md +247 -0
- package/.deepquark/skills/bundled/ge-payroll/SKILL.md +153 -0
- package/.deepquark/skills/bundled/ge-payroll/evals/evals.json +23 -0
- package/.deepquark/skills/bundled/ge-payroll/references/pain-points-improvements.md +106 -0
- package/.deepquark/skills/bundled/ge-payroll/references/process-detail.md +217 -0
- package/.deepquark/skills/bundled/ge-payroll/references/raci-stakeholders.md +85 -0
- package/.deepquark/skills/bundled/ge-payroll/references/timeline-mandays.md +64 -0
- package/.deepquark/skills/bundled/pdf/LICENSE.txt +30 -0
- package/.deepquark/skills/bundled/pdf/SKILL.md +314 -0
- package/.deepquark/skills/bundled/pdf/forms.md +294 -0
- package/.deepquark/skills/bundled/pdf/reference.md +612 -0
- package/.deepquark/skills/bundled/pdf/scripts/check_bounding_boxes.py +65 -0
- package/.deepquark/skills/bundled/pdf/scripts/check_fillable_fields.py +11 -0
- package/.deepquark/skills/bundled/pdf/scripts/convert_pdf_to_images.py +33 -0
- package/.deepquark/skills/bundled/pdf/scripts/create_validation_image.py +37 -0
- package/.deepquark/skills/bundled/pdf/scripts/extract_form_field_info.py +122 -0
- package/.deepquark/skills/bundled/pdf/scripts/extract_form_structure.py +115 -0
- package/.deepquark/skills/bundled/pdf/scripts/fill_fillable_fields.py +98 -0
- package/.deepquark/skills/bundled/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- package/.deepquark/skills/bundled/perplexity-search/SKILL.md +447 -0
- package/.deepquark/skills/bundled/perplexity-search/assets/.env.example +16 -0
- package/.deepquark/skills/bundled/perplexity-search/references/model_comparison.md +386 -0
- package/.deepquark/skills/bundled/perplexity-search/references/openrouter_setup.md +454 -0
- package/.deepquark/skills/bundled/perplexity-search/references/search_strategies.md +258 -0
- package/.deepquark/skills/bundled/perplexity-search/scripts/perplexity_search.py +277 -0
- package/.deepquark/skills/bundled/perplexity-search/scripts/setup_env.py +171 -0
- package/.deepquark/skills/bundled/pptx/LICENSE.txt +30 -0
- package/.deepquark/skills/bundled/pptx/SKILL.md +232 -0
- package/.deepquark/skills/bundled/pptx/editing.md +205 -0
- package/.deepquark/skills/bundled/pptx/pptxgenjs.md +420 -0
- package/.deepquark/skills/bundled/pptx/scripts/__init__.py +0 -0
- package/.deepquark/skills/bundled/pptx/scripts/add_slide.py +195 -0
- package/.deepquark/skills/bundled/pptx/scripts/clean.py +286 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/helpers/__init__.py +0 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/helpers/merge_runs.py +199 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/pack.py +159 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/soffice.py +183 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/unpack.py +132 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/validate.py +111 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/validators/__init__.py +15 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/validators/base.py +847 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/validators/docx.py +446 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/validators/pptx.py +275 -0
- package/.deepquark/skills/bundled/pptx/scripts/office/validators/redlining.py +247 -0
- package/.deepquark/skills/bundled/pptx/scripts/thumbnail.py +289 -0
- package/.deepquark/skills/bundled/text-to-pdf-automation/SKILL.md +91 -0
- package/.deepquark/skills/bundled/web-fetch/SKILL.md +56 -0
- package/.deepquark/skills/bundled/web-fetch/scripts/fetch.sh +54 -0
- package/.deepquark/skills/bundled/xlsx/LICENSE.txt +30 -0
- package/.deepquark/skills/bundled/xlsx/SKILL.md +292 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/helpers/__init__.py +0 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/pack.py +159 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/soffice.py +183 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/unpack.py +132 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/validate.py +111 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/validators/__init__.py +15 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/validators/base.py +847 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/validators/docx.py +446 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/validators/pptx.py +275 -0
- package/.deepquark/skills/bundled/xlsx/scripts/office/validators/redlining.py +247 -0
- package/.deepquark/skills/bundled/xlsx/scripts/recalc.py +184 -0
- package/.deepquark/skills/bundled/youtube-downloader/SKILL.md +99 -0
- package/.deepquark/skills/bundled/youtube-downloader/scripts/download_video.py +145 -0
- package/.deepquark/skills/bundled/youtube-transcribe-skill/SKILL.md +116 -0
- package/bin/deepquark +0 -0
- package/package.json +4 -3
|
@@ -0,0 +1,578 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Deep Research Engine for Claude Code
|
|
4
|
+
Orchestrates comprehensive research across multiple sources with verification and synthesis
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import argparse
|
|
8
|
+
import json
|
|
9
|
+
import sys
|
|
10
|
+
import time
|
|
11
|
+
from datetime import datetime
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
from typing import Dict, List, Optional, Any
|
|
14
|
+
from dataclasses import dataclass, asdict
|
|
15
|
+
from enum import Enum
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class ResearchPhase(Enum):
|
|
19
|
+
"""Research pipeline phases"""
|
|
20
|
+
SCOPE = "scope"
|
|
21
|
+
PLAN = "plan"
|
|
22
|
+
RETRIEVE = "retrieve"
|
|
23
|
+
TRIANGULATE = "triangulate"
|
|
24
|
+
SYNTHESIZE = "synthesize"
|
|
25
|
+
CRITIQUE = "critique"
|
|
26
|
+
REFINE = "refine"
|
|
27
|
+
PACKAGE = "package"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class ResearchMode(Enum):
|
|
31
|
+
"""Research depth modes"""
|
|
32
|
+
QUICK = "quick" # 3 phases: scope, retrieve, package
|
|
33
|
+
STANDARD = "standard" # 6 phases: skip refine and critique
|
|
34
|
+
DEEP = "deep" # Full 8 phases
|
|
35
|
+
ULTRADEEP = "ultradeep" # 8 phases + extended iterations
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@dataclass
|
|
39
|
+
class Source:
|
|
40
|
+
"""Represents a research source"""
|
|
41
|
+
url: str
|
|
42
|
+
title: str
|
|
43
|
+
snippet: str
|
|
44
|
+
retrieved_at: str
|
|
45
|
+
credibility_score: float = 0.0
|
|
46
|
+
source_type: str = "web" # web, academic, documentation, code
|
|
47
|
+
verification_status: str = "unverified" # unverified, verified, conflicted
|
|
48
|
+
|
|
49
|
+
def to_citation(self, index: int) -> str:
|
|
50
|
+
"""Generate citation string"""
|
|
51
|
+
return f"[{index}] {self.title} - {self.url} (Retrieved: {self.retrieved_at})"
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
@dataclass
|
|
55
|
+
class ResearchState:
|
|
56
|
+
"""Maintains research state across phases"""
|
|
57
|
+
query: str
|
|
58
|
+
mode: ResearchMode
|
|
59
|
+
phase: ResearchPhase
|
|
60
|
+
scope: Dict[str, Any]
|
|
61
|
+
plan: Dict[str, Any]
|
|
62
|
+
sources: List[Source]
|
|
63
|
+
findings: List[Dict[str, Any]]
|
|
64
|
+
synthesis: Dict[str, Any]
|
|
65
|
+
critique: Dict[str, Any]
|
|
66
|
+
report: str
|
|
67
|
+
metadata: Dict[str, Any]
|
|
68
|
+
|
|
69
|
+
def save(self, filepath: Path):
|
|
70
|
+
"""Save research state to file with retry logic"""
|
|
71
|
+
max_retries = 3
|
|
72
|
+
for attempt in range(max_retries):
|
|
73
|
+
try:
|
|
74
|
+
with open(filepath, 'w') as f:
|
|
75
|
+
json.dump(self._serialize(), f, indent=2)
|
|
76
|
+
return # Success
|
|
77
|
+
except (IOError, OSError) as e:
|
|
78
|
+
if attempt == max_retries - 1:
|
|
79
|
+
# Final attempt failed
|
|
80
|
+
raise IOError(f"Failed to save state after {max_retries} attempts: {e}")
|
|
81
|
+
# Wait with exponential backoff before retry
|
|
82
|
+
wait_time = (attempt + 1) * 0.5 # 0.5s, 1s, 1.5s
|
|
83
|
+
time.sleep(wait_time)
|
|
84
|
+
|
|
85
|
+
def _serialize(self) -> dict:
|
|
86
|
+
"""Convert to serializable dict"""
|
|
87
|
+
return {
|
|
88
|
+
'query': self.query,
|
|
89
|
+
'mode': self.mode.value,
|
|
90
|
+
'phase': self.phase.value,
|
|
91
|
+
'scope': self.scope,
|
|
92
|
+
'plan': self.plan,
|
|
93
|
+
'sources': [asdict(s) for s in self.sources],
|
|
94
|
+
'findings': self.findings,
|
|
95
|
+
'synthesis': self.synthesis,
|
|
96
|
+
'critique': self.critique,
|
|
97
|
+
'report': self.report,
|
|
98
|
+
'metadata': self.metadata
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@classmethod
|
|
102
|
+
def load(cls, filepath: Path) -> 'ResearchState':
|
|
103
|
+
"""Load research state from file"""
|
|
104
|
+
with open(filepath, 'r') as f:
|
|
105
|
+
data = json.load(f)
|
|
106
|
+
|
|
107
|
+
return cls(
|
|
108
|
+
query=data['query'],
|
|
109
|
+
mode=ResearchMode(data['mode']),
|
|
110
|
+
phase=ResearchPhase(data['phase']),
|
|
111
|
+
scope=data['scope'],
|
|
112
|
+
plan=data['plan'],
|
|
113
|
+
sources=[Source(**s) for s in data['sources']],
|
|
114
|
+
findings=data['findings'],
|
|
115
|
+
synthesis=data['synthesis'],
|
|
116
|
+
critique=data['critique'],
|
|
117
|
+
report=data['report'],
|
|
118
|
+
metadata=data['metadata']
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class ResearchEngine:
|
|
123
|
+
"""Main research orchestration engine"""
|
|
124
|
+
|
|
125
|
+
def __init__(self, mode: ResearchMode = ResearchMode.STANDARD):
|
|
126
|
+
self.mode = mode
|
|
127
|
+
self.state: Optional[ResearchState] = None
|
|
128
|
+
self.output_dir = Path.home() / ".claude" / "research_output"
|
|
129
|
+
self.output_dir.mkdir(parents=True, exist_ok=True)
|
|
130
|
+
|
|
131
|
+
def initialize_research(self, query: str) -> ResearchState:
|
|
132
|
+
"""Initialize new research session"""
|
|
133
|
+
self.state = ResearchState(
|
|
134
|
+
query=query,
|
|
135
|
+
mode=self.mode,
|
|
136
|
+
phase=ResearchPhase.SCOPE,
|
|
137
|
+
scope={},
|
|
138
|
+
plan={},
|
|
139
|
+
sources=[],
|
|
140
|
+
findings=[],
|
|
141
|
+
synthesis={},
|
|
142
|
+
critique={},
|
|
143
|
+
report="",
|
|
144
|
+
metadata={
|
|
145
|
+
'started_at': datetime.now().isoformat(),
|
|
146
|
+
'version': '1.0'
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
return self.state
|
|
150
|
+
|
|
151
|
+
def get_phase_instructions(self, phase: ResearchPhase) -> str:
|
|
152
|
+
"""Get instructions for current phase"""
|
|
153
|
+
instructions = {
|
|
154
|
+
ResearchPhase.SCOPE: """
|
|
155
|
+
# Phase 1: SCOPE
|
|
156
|
+
|
|
157
|
+
Your task: Define research boundaries and success criteria
|
|
158
|
+
|
|
159
|
+
## Execute:
|
|
160
|
+
1. Decompose the question into 3-5 core components
|
|
161
|
+
2. Identify 2-4 key stakeholder perspectives
|
|
162
|
+
3. Define what's IN scope and what's OUT of scope
|
|
163
|
+
4. List 3-5 success criteria for this research
|
|
164
|
+
5. Document 3-5 assumptions that need validation
|
|
165
|
+
|
|
166
|
+
## Output Format:
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"core_components": ["component1", "component2", ...],
|
|
170
|
+
"stakeholder_perspectives": ["perspective1", "perspective2", ...],
|
|
171
|
+
"in_scope": ["item1", "item2", ...],
|
|
172
|
+
"out_of_scope": ["item1", "item2", ...],
|
|
173
|
+
"success_criteria": ["criteria1", "criteria2", ...],
|
|
174
|
+
"assumptions": ["assumption1", "assumption2", ...]
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Use extended reasoning to explore multiple framings before finalizing scope.
|
|
179
|
+
""",
|
|
180
|
+
ResearchPhase.PLAN: """
|
|
181
|
+
# Phase 2: PLAN
|
|
182
|
+
|
|
183
|
+
Your task: Create intelligent research roadmap
|
|
184
|
+
|
|
185
|
+
## Execute:
|
|
186
|
+
1. Identify 5-10 primary sources to investigate
|
|
187
|
+
2. List 5-10 secondary/backup sources
|
|
188
|
+
3. Map knowledge dependencies (what must be understood first)
|
|
189
|
+
4. Create 10-15 search query variations
|
|
190
|
+
5. Plan triangulation approach (how to verify claims)
|
|
191
|
+
6. Define 3-5 quality gates
|
|
192
|
+
|
|
193
|
+
## Output Format:
|
|
194
|
+
```json
|
|
195
|
+
{
|
|
196
|
+
"primary_sources": ["source_type1", "source_type2", ...],
|
|
197
|
+
"secondary_sources": ["source_type1", "source_type2", ...],
|
|
198
|
+
"knowledge_dependencies": {"concept1": ["prerequisite1", "prerequisite2"], ...},
|
|
199
|
+
"search_queries": ["query1", "query2", ...],
|
|
200
|
+
"triangulation_strategy": "description of verification approach",
|
|
201
|
+
"quality_gates": ["gate1", "gate2", ...]
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Use Graph-of-Thoughts: branch into 3-4 potential research paths, evaluate, then converge on optimal strategy.
|
|
206
|
+
""",
|
|
207
|
+
ResearchPhase.RETRIEVE: """
|
|
208
|
+
# Phase 3: RETRIEVE
|
|
209
|
+
|
|
210
|
+
Your task: Systematically collect information from multiple sources
|
|
211
|
+
|
|
212
|
+
## Execute:
|
|
213
|
+
1. Use WebSearch with iterative query refinement (minimum 10 searches)
|
|
214
|
+
2. Use WebFetch to deep-dive into 5-10 most promising sources
|
|
215
|
+
3. Extract key passages with metadata
|
|
216
|
+
4. Track information gaps
|
|
217
|
+
5. Follow 2-3 promising tangents
|
|
218
|
+
6. Ensure source diversity (different domains, perspectives)
|
|
219
|
+
|
|
220
|
+
## Tools to Use:
|
|
221
|
+
- WebSearch: For current information and broad coverage
|
|
222
|
+
- WebFetch: For detailed extraction from specific URLs
|
|
223
|
+
- Grep/Read: For local documentation if relevant
|
|
224
|
+
- Task: Spawn 2-3 parallel retrieval agents for efficiency
|
|
225
|
+
|
|
226
|
+
## Output:
|
|
227
|
+
Store all sources with metadata. Each source should include:
|
|
228
|
+
- URL/location
|
|
229
|
+
- Title
|
|
230
|
+
- Key excerpts
|
|
231
|
+
- Relevance score
|
|
232
|
+
- Source type
|
|
233
|
+
- Retrieved timestamp
|
|
234
|
+
|
|
235
|
+
Aim for 15-30 distinct sources minimum.
|
|
236
|
+
""",
|
|
237
|
+
ResearchPhase.TRIANGULATE: """
|
|
238
|
+
# Phase 4: TRIANGULATE
|
|
239
|
+
|
|
240
|
+
Your task: Validate information across multiple independent sources
|
|
241
|
+
|
|
242
|
+
## Execute:
|
|
243
|
+
1. List all major claims from retrieved information
|
|
244
|
+
2. For each claim, find 3+ independent confirmatory sources
|
|
245
|
+
3. Flag any contradictions or uncertainties
|
|
246
|
+
4. Assess source credibility (domain expertise, recency, bias)
|
|
247
|
+
5. Document consensus areas vs. debate areas
|
|
248
|
+
6. Mark verification status for each claim
|
|
249
|
+
|
|
250
|
+
## Quality Standards:
|
|
251
|
+
- Core claims MUST have 3+ independent sources
|
|
252
|
+
- Flag any single-source claims as "unverified"
|
|
253
|
+
- Note information recency
|
|
254
|
+
- Identify potential biases
|
|
255
|
+
|
|
256
|
+
## Output Format:
|
|
257
|
+
```json
|
|
258
|
+
{
|
|
259
|
+
"verified_claims": [
|
|
260
|
+
{
|
|
261
|
+
"claim": "statement",
|
|
262
|
+
"sources": ["source1", "source2", "source3"],
|
|
263
|
+
"confidence": "high|medium|low"
|
|
264
|
+
}
|
|
265
|
+
],
|
|
266
|
+
"unverified_claims": [...],
|
|
267
|
+
"contradictions": [
|
|
268
|
+
{
|
|
269
|
+
"topic": "what's contradicted",
|
|
270
|
+
"viewpoint1": {"claim": "...", "sources": [...]},
|
|
271
|
+
"viewpoint2": {"claim": "...", "sources": [...]}
|
|
272
|
+
}
|
|
273
|
+
]
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
""",
|
|
277
|
+
ResearchPhase.SYNTHESIZE: """
|
|
278
|
+
# Phase 5: SYNTHESIZE
|
|
279
|
+
|
|
280
|
+
Your task: Connect insights and generate novel understanding
|
|
281
|
+
|
|
282
|
+
## Execute:
|
|
283
|
+
1. Identify 5-10 key patterns across sources
|
|
284
|
+
2. Map relationships between concepts
|
|
285
|
+
3. Generate 3-5 insights that go beyond source material
|
|
286
|
+
4. Create conceptual frameworks or mental models
|
|
287
|
+
5. Build argument structures
|
|
288
|
+
6. Develop evidence hierarchies
|
|
289
|
+
|
|
290
|
+
## Use Extended Reasoning:
|
|
291
|
+
- Explore non-obvious connections
|
|
292
|
+
- Consider second-order implications
|
|
293
|
+
- Think about what sources might be missing
|
|
294
|
+
- Generate novel hypotheses
|
|
295
|
+
|
|
296
|
+
## Output Format:
|
|
297
|
+
```json
|
|
298
|
+
{
|
|
299
|
+
"patterns": ["pattern1", "pattern2", ...],
|
|
300
|
+
"concept_relationships": {"concept1": ["related_to1", "related_to2"], ...},
|
|
301
|
+
"novel_insights": ["insight1", "insight2", ...],
|
|
302
|
+
"frameworks": ["framework_description1", ...],
|
|
303
|
+
"key_arguments": [
|
|
304
|
+
{
|
|
305
|
+
"argument": "main claim",
|
|
306
|
+
"supporting_evidence": ["evidence1", "evidence2"],
|
|
307
|
+
"strength": "strong|moderate|weak"
|
|
308
|
+
}
|
|
309
|
+
]
|
|
310
|
+
}
|
|
311
|
+
```
|
|
312
|
+
""",
|
|
313
|
+
ResearchPhase.CRITIQUE: """
|
|
314
|
+
# Phase 6: CRITIQUE
|
|
315
|
+
|
|
316
|
+
Your task: Rigorously evaluate research quality
|
|
317
|
+
|
|
318
|
+
## Execute Red Team Analysis:
|
|
319
|
+
1. Check logical consistency
|
|
320
|
+
2. Verify citation completeness
|
|
321
|
+
3. Identify gaps or weaknesses
|
|
322
|
+
4. Assess balance and objectivity
|
|
323
|
+
5. Test alternative interpretations
|
|
324
|
+
6. Challenge assumptions
|
|
325
|
+
|
|
326
|
+
## Red Team Questions:
|
|
327
|
+
- What's missing from this research?
|
|
328
|
+
- What could be wrong?
|
|
329
|
+
- What alternative explanations exist?
|
|
330
|
+
- What biases might be present?
|
|
331
|
+
- What counterfactuals should be considered?
|
|
332
|
+
- What would a skeptic say?
|
|
333
|
+
|
|
334
|
+
## Output Format:
|
|
335
|
+
```json
|
|
336
|
+
{
|
|
337
|
+
"strengths": ["strength1", "strength2", ...],
|
|
338
|
+
"weaknesses": ["weakness1", "weakness2", ...],
|
|
339
|
+
"gaps": ["gap1", "gap2", ...],
|
|
340
|
+
"biases": ["bias1", "bias2", ...],
|
|
341
|
+
"improvements_needed": [
|
|
342
|
+
{
|
|
343
|
+
"issue": "description",
|
|
344
|
+
"recommendation": "how to fix",
|
|
345
|
+
"priority": "high|medium|low"
|
|
346
|
+
}
|
|
347
|
+
]
|
|
348
|
+
}
|
|
349
|
+
```
|
|
350
|
+
""",
|
|
351
|
+
ResearchPhase.REFINE: """
|
|
352
|
+
# Phase 7: REFINE
|
|
353
|
+
|
|
354
|
+
Your task: Address gaps and strengthen weak areas
|
|
355
|
+
|
|
356
|
+
## Execute:
|
|
357
|
+
1. Conduct additional research for identified gaps
|
|
358
|
+
2. Strengthen weak arguments with more evidence
|
|
359
|
+
3. Add missing perspectives
|
|
360
|
+
4. Resolve contradictions where possible
|
|
361
|
+
5. Enhance clarity and structure
|
|
362
|
+
6. Verify all revised content
|
|
363
|
+
|
|
364
|
+
## Focus On:
|
|
365
|
+
- High priority improvements from critique
|
|
366
|
+
- Missing stakeholder perspectives
|
|
367
|
+
- Weak evidence chains
|
|
368
|
+
- Unclear explanations
|
|
369
|
+
|
|
370
|
+
## Output:
|
|
371
|
+
Updated findings, sources, and synthesis with improvements documented.
|
|
372
|
+
""",
|
|
373
|
+
ResearchPhase.PACKAGE: """
|
|
374
|
+
# Phase 8: PACKAGE
|
|
375
|
+
|
|
376
|
+
Your task: Deliver professional, actionable research report
|
|
377
|
+
|
|
378
|
+
## Generate Complete Report:
|
|
379
|
+
|
|
380
|
+
```markdown
|
|
381
|
+
# Research Report: [Topic]
|
|
382
|
+
|
|
383
|
+
## Executive Summary
|
|
384
|
+
[3-5 key findings bullets]
|
|
385
|
+
[Primary recommendation]
|
|
386
|
+
[Confidence level: High/Medium/Low]
|
|
387
|
+
|
|
388
|
+
## Introduction
|
|
389
|
+
### Research Question
|
|
390
|
+
[Original question]
|
|
391
|
+
|
|
392
|
+
### Scope & Methodology
|
|
393
|
+
[What was investigated and how]
|
|
394
|
+
|
|
395
|
+
### Key Assumptions
|
|
396
|
+
[Important assumptions made]
|
|
397
|
+
|
|
398
|
+
## Main Analysis
|
|
399
|
+
|
|
400
|
+
### Finding 1: [Title]
|
|
401
|
+
[Detailed explanation with evidence]
|
|
402
|
+
[Citations: [1], [2], [3]]
|
|
403
|
+
|
|
404
|
+
### Finding 2: [Title]
|
|
405
|
+
[Detailed explanation with evidence]
|
|
406
|
+
[Citations: [4], [5], [6]]
|
|
407
|
+
|
|
408
|
+
[Continue for all findings...]
|
|
409
|
+
|
|
410
|
+
## Synthesis & Insights
|
|
411
|
+
[Patterns and connections]
|
|
412
|
+
[Novel insights]
|
|
413
|
+
[Implications]
|
|
414
|
+
|
|
415
|
+
## Limitations & Caveats
|
|
416
|
+
[Known gaps]
|
|
417
|
+
[Assumptions]
|
|
418
|
+
[Areas of uncertainty]
|
|
419
|
+
|
|
420
|
+
## Recommendations
|
|
421
|
+
[Action items]
|
|
422
|
+
[Next steps]
|
|
423
|
+
[Further research needs]
|
|
424
|
+
|
|
425
|
+
## Bibliography
|
|
426
|
+
[1] Source 1 full citation
|
|
427
|
+
[2] Source 2 full citation
|
|
428
|
+
...
|
|
429
|
+
|
|
430
|
+
## Appendix: Methodology
|
|
431
|
+
[Research process]
|
|
432
|
+
[Sources consulted]
|
|
433
|
+
[Verification approach]
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
Save report to file with timestamp.
|
|
437
|
+
"""
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
return instructions.get(phase, "No instructions available for this phase")
|
|
441
|
+
|
|
442
|
+
def execute_phase(self, phase: ResearchPhase) -> Dict[str, Any]:
|
|
443
|
+
"""Execute a research phase"""
|
|
444
|
+
print(f"\n{'='*80}")
|
|
445
|
+
print(f"PHASE {phase.value.upper()}: Starting...")
|
|
446
|
+
print(f"{'='*80}\n")
|
|
447
|
+
|
|
448
|
+
instructions = self.get_phase_instructions(phase)
|
|
449
|
+
print(instructions)
|
|
450
|
+
|
|
451
|
+
# In real usage, Claude will execute these instructions
|
|
452
|
+
# This returns a structured result that Claude should populate
|
|
453
|
+
result = {
|
|
454
|
+
'phase': phase.value,
|
|
455
|
+
'status': 'instructions_displayed',
|
|
456
|
+
'timestamp': datetime.now().isoformat()
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
return result
|
|
460
|
+
|
|
461
|
+
def run_pipeline(self, query: str) -> str:
|
|
462
|
+
"""Run complete research pipeline"""
|
|
463
|
+
print(f"\n{'#'*80}")
|
|
464
|
+
print(f"# DEEP RESEARCH ENGINE")
|
|
465
|
+
print(f"# Query: {query}")
|
|
466
|
+
print(f"# Mode: {self.mode.value}")
|
|
467
|
+
print(f"{'#'*80}\n")
|
|
468
|
+
|
|
469
|
+
# Initialize research
|
|
470
|
+
self.initialize_research(query)
|
|
471
|
+
|
|
472
|
+
# Determine phases based on mode
|
|
473
|
+
phases = self._get_phases_for_mode()
|
|
474
|
+
|
|
475
|
+
# Execute each phase
|
|
476
|
+
for phase in phases:
|
|
477
|
+
self.state.phase = phase
|
|
478
|
+
result = self.execute_phase(phase)
|
|
479
|
+
|
|
480
|
+
# Save state after each phase
|
|
481
|
+
state_file = self.output_dir / f"research_state_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
|
|
482
|
+
self.state.save(state_file)
|
|
483
|
+
print(f"\n✓ Phase {phase.value} complete. State saved to: {state_file}\n")
|
|
484
|
+
|
|
485
|
+
# Generate report path
|
|
486
|
+
report_file = self.output_dir / f"research_report_{datetime.now().strftime('%Y%m%d_%H%M%S')}.md"
|
|
487
|
+
|
|
488
|
+
print(f"\n{'='*80}")
|
|
489
|
+
print(f"RESEARCH PIPELINE COMPLETE")
|
|
490
|
+
print(f"Report will be saved to: {report_file}")
|
|
491
|
+
print(f"{'='*80}\n")
|
|
492
|
+
|
|
493
|
+
return str(report_file)
|
|
494
|
+
|
|
495
|
+
def _get_phases_for_mode(self) -> List[ResearchPhase]:
|
|
496
|
+
"""Get phases based on research mode"""
|
|
497
|
+
if self.mode == ResearchMode.QUICK:
|
|
498
|
+
return [
|
|
499
|
+
ResearchPhase.SCOPE,
|
|
500
|
+
ResearchPhase.RETRIEVE,
|
|
501
|
+
ResearchPhase.PACKAGE
|
|
502
|
+
]
|
|
503
|
+
elif self.mode == ResearchMode.STANDARD:
|
|
504
|
+
return [
|
|
505
|
+
ResearchPhase.SCOPE,
|
|
506
|
+
ResearchPhase.PLAN,
|
|
507
|
+
ResearchPhase.RETRIEVE,
|
|
508
|
+
ResearchPhase.TRIANGULATE,
|
|
509
|
+
ResearchPhase.SYNTHESIZE,
|
|
510
|
+
ResearchPhase.PACKAGE
|
|
511
|
+
]
|
|
512
|
+
elif self.mode == ResearchMode.DEEP:
|
|
513
|
+
return list(ResearchPhase)
|
|
514
|
+
elif self.mode == ResearchMode.ULTRADEEP:
|
|
515
|
+
# In ultradeep, we might iterate some phases
|
|
516
|
+
return list(ResearchPhase)
|
|
517
|
+
|
|
518
|
+
return list(ResearchPhase)
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
def main():
|
|
522
|
+
"""CLI entry point"""
|
|
523
|
+
parser = argparse.ArgumentParser(
|
|
524
|
+
description="Deep Research Engine for Claude Code",
|
|
525
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
526
|
+
epilog="""
|
|
527
|
+
Examples:
|
|
528
|
+
python research_engine.py --query "state of quantum computing 2025" --mode deep
|
|
529
|
+
python research_engine.py --query "PostgreSQL vs Supabase comparison" --mode standard
|
|
530
|
+
python research_engine.py -q "longevity biotech funding trends" -m ultradeep
|
|
531
|
+
"""
|
|
532
|
+
)
|
|
533
|
+
|
|
534
|
+
parser.add_argument(
|
|
535
|
+
'--query', '-q',
|
|
536
|
+
type=str,
|
|
537
|
+
required=True,
|
|
538
|
+
help='Research question or topic'
|
|
539
|
+
)
|
|
540
|
+
|
|
541
|
+
parser.add_argument(
|
|
542
|
+
'--mode', '-m',
|
|
543
|
+
type=str,
|
|
544
|
+
choices=['quick', 'standard', 'deep', 'ultradeep'],
|
|
545
|
+
default='standard',
|
|
546
|
+
help='Research depth mode (default: standard)'
|
|
547
|
+
)
|
|
548
|
+
|
|
549
|
+
parser.add_argument(
|
|
550
|
+
'--resume',
|
|
551
|
+
type=str,
|
|
552
|
+
help='Resume from saved state file'
|
|
553
|
+
)
|
|
554
|
+
|
|
555
|
+
args = parser.parse_args()
|
|
556
|
+
|
|
557
|
+
# Initialize engine
|
|
558
|
+
mode = ResearchMode(args.mode)
|
|
559
|
+
engine = ResearchEngine(mode=mode)
|
|
560
|
+
|
|
561
|
+
if args.resume:
|
|
562
|
+
# Load previous state
|
|
563
|
+
state_file = Path(args.resume)
|
|
564
|
+
if not state_file.exists():
|
|
565
|
+
print(f"Error: State file not found: {state_file}", file=sys.stderr)
|
|
566
|
+
sys.exit(1)
|
|
567
|
+
engine.state = ResearchState.load(state_file)
|
|
568
|
+
print(f"Resumed research from: {state_file}")
|
|
569
|
+
|
|
570
|
+
# Run pipeline
|
|
571
|
+
report_path = engine.run_pipeline(args.query)
|
|
572
|
+
|
|
573
|
+
print(f"\nResearch complete! Report path: {report_path}")
|
|
574
|
+
print(f"\nNow Claude should execute each phase using the displayed instructions.")
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
if __name__ == '__main__':
|
|
578
|
+
main()
|