@duckmind/deepquark-darwin-arm64 0.1.0
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/knowledge-graph/SKILL.md +385 -0
- package/.deepquark/skills/bundled/knowledge-graph/STANDARDS.md +461 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/cli.ts +588 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/config.ts +630 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/connection-profile.ts +629 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/container.ts +756 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/mcp-client.ts +1310 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/output-formatter.ts +997 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/token-metrics.ts +335 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/transformation-log.ts +137 -0
- package/.deepquark/skills/bundled/knowledge-graph/lib/wrapper-config.ts +113 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/.env.example +129 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/compare-embeddings.ts +175 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/config-falkordb.yaml +108 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/config-neo4j.yaml +111 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/diagnose.ts +483 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb-dev.yml +146 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb.yml +151 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev-local.yml +161 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev.yml +161 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j.yml +169 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-production.yml +128 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-test.yml +10 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose.yml +84 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/entrypoint.sh +40 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/install.ts +2054 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-falkordb.yml +78 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-neo4j.yml +88 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose.yml +83 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-all-llms-mcp.ts +387 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-models.ts +201 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-providers.ts +641 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-graphiti-model.ts +217 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-correct.ts +141 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-llms-mcp.ts +386 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-models.ts +173 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-llama-extraction.ts +188 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-final.ts +240 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-live.ts +187 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-session.ts +127 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-model-combinations.ts +316 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-ollama-models.ts +228 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-openrouter-models.ts +460 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-real-life-mcp.ts +311 -0
- package/.deepquark/skills/bundled/knowledge-graph/server/test-search-debug.ts +199 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/Install.md +104 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/README.md +120 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/knowledge-cli.ts +996 -0
- package/.deepquark/skills/bundled/knowledge-graph/tools/server-cli.ts +531 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/BulkImport.md +514 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/CaptureEpisode.md +242 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/ClearGraph.md +392 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/GetRecent.md +352 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/GetStatus.md +373 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/HealthReport.md +212 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/InvestigateEntity.md +142 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/OntologyManagement.md +201 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/RunMaintenance.md +302 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchByDate.md +255 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchFacts.md +382 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchKnowledge.md +374 -0
- package/.deepquark/skills/bundled/knowledge-graph/workflows/StixImport.md +212 -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/LICENSE +21 -0
- package/bin/deepquark +0 -0
- package/package.json +16 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Perplexity Search via LitLLM and OpenRouter
|
|
4
|
+
|
|
5
|
+
This script performs AI-powered web searches using Perplexity models through
|
|
6
|
+
LiteLLM and OpenRouter. It provides real-time, grounded answers with source citations.
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
python perplexity_search.py "search query" [options]
|
|
10
|
+
|
|
11
|
+
Requirements:
|
|
12
|
+
- OpenRouter API key set in OPENROUTER_API_KEY environment variable
|
|
13
|
+
- LiteLLM installed: uv pip install litellm
|
|
14
|
+
|
|
15
|
+
Author: Scientific Skills
|
|
16
|
+
License: MIT
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
import os
|
|
20
|
+
import sys
|
|
21
|
+
import json
|
|
22
|
+
import argparse
|
|
23
|
+
from typing import Optional, Dict, Any, List
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def check_dependencies():
|
|
27
|
+
"""Check if required packages are installed."""
|
|
28
|
+
try:
|
|
29
|
+
import litellm
|
|
30
|
+
return True
|
|
31
|
+
except ImportError:
|
|
32
|
+
print("Error: LiteLLM is not installed.", file=sys.stderr)
|
|
33
|
+
print("Install it with: uv pip install litellm", file=sys.stderr)
|
|
34
|
+
return False
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def check_api_key() -> Optional[str]:
|
|
38
|
+
"""Check if OpenRouter API key is configured."""
|
|
39
|
+
api_key = os.environ.get("OPENROUTER_API_KEY")
|
|
40
|
+
if not api_key:
|
|
41
|
+
print("Error: OPENROUTER_API_KEY environment variable is not set.", file=sys.stderr)
|
|
42
|
+
print("\nTo set up your API key:", file=sys.stderr)
|
|
43
|
+
print("1. Get an API key from https://openrouter.ai/keys", file=sys.stderr)
|
|
44
|
+
print("2. Set the environment variable:", file=sys.stderr)
|
|
45
|
+
print(" export OPENROUTER_API_KEY='your-api-key-here'", file=sys.stderr)
|
|
46
|
+
print("\nOr create a .env file with:", file=sys.stderr)
|
|
47
|
+
print(" OPENROUTER_API_KEY=your-api-key-here", file=sys.stderr)
|
|
48
|
+
return None
|
|
49
|
+
return api_key
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def search_with_perplexity(
|
|
53
|
+
query: str,
|
|
54
|
+
model: str = "openrouter/perplexity/sonar-pro",
|
|
55
|
+
max_tokens: int = 4000,
|
|
56
|
+
temperature: float = 0.2,
|
|
57
|
+
verbose: bool = False
|
|
58
|
+
) -> Dict[str, Any]:
|
|
59
|
+
"""
|
|
60
|
+
Perform a search using Perplexity models via LiteLLM and OpenRouter.
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
query: The search query
|
|
64
|
+
model: Model to use (default: sonar-pro)
|
|
65
|
+
max_tokens: Maximum tokens in response
|
|
66
|
+
temperature: Response temperature (0.0-1.0)
|
|
67
|
+
verbose: Print detailed information
|
|
68
|
+
|
|
69
|
+
Returns:
|
|
70
|
+
Dictionary containing the search results and metadata
|
|
71
|
+
"""
|
|
72
|
+
try:
|
|
73
|
+
from litellm import completion
|
|
74
|
+
except ImportError:
|
|
75
|
+
return {
|
|
76
|
+
"success": False,
|
|
77
|
+
"error": "LiteLLM not installed. Run: uv pip install litellm"
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
# Check API key
|
|
81
|
+
api_key = check_api_key()
|
|
82
|
+
if not api_key:
|
|
83
|
+
return {
|
|
84
|
+
"success": False,
|
|
85
|
+
"error": "OpenRouter API key not configured"
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if verbose:
|
|
89
|
+
print(f"Model: {model}", file=sys.stderr)
|
|
90
|
+
print(f"Query: {query}", file=sys.stderr)
|
|
91
|
+
print(f"Max tokens: {max_tokens}", file=sys.stderr)
|
|
92
|
+
print(f"Temperature: {temperature}", file=sys.stderr)
|
|
93
|
+
print("", file=sys.stderr)
|
|
94
|
+
|
|
95
|
+
try:
|
|
96
|
+
# Perform the search using LiteLLM
|
|
97
|
+
response = completion(
|
|
98
|
+
model=model,
|
|
99
|
+
messages=[{
|
|
100
|
+
"role": "user",
|
|
101
|
+
"content": query
|
|
102
|
+
}],
|
|
103
|
+
max_tokens=max_tokens,
|
|
104
|
+
temperature=temperature
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
# Extract the response
|
|
108
|
+
result = {
|
|
109
|
+
"success": True,
|
|
110
|
+
"query": query,
|
|
111
|
+
"model": model,
|
|
112
|
+
"answer": response.choices[0].message.content,
|
|
113
|
+
"usage": {
|
|
114
|
+
"prompt_tokens": response.usage.prompt_tokens,
|
|
115
|
+
"completion_tokens": response.usage.completion_tokens,
|
|
116
|
+
"total_tokens": response.usage.total_tokens
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
# Check if citations are available in the response
|
|
121
|
+
if hasattr(response.choices[0].message, 'citations'):
|
|
122
|
+
result["citations"] = response.choices[0].message.citations
|
|
123
|
+
|
|
124
|
+
return result
|
|
125
|
+
|
|
126
|
+
except Exception as e:
|
|
127
|
+
return {
|
|
128
|
+
"success": False,
|
|
129
|
+
"error": str(e),
|
|
130
|
+
"query": query,
|
|
131
|
+
"model": model
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def main():
|
|
136
|
+
"""Main entry point for the script."""
|
|
137
|
+
parser = argparse.ArgumentParser(
|
|
138
|
+
description="Perform AI-powered web searches using Perplexity via LiteLLM and OpenRouter",
|
|
139
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
140
|
+
epilog="""
|
|
141
|
+
Examples:
|
|
142
|
+
# Basic search
|
|
143
|
+
python perplexity_search.py "What are the latest developments in CRISPR?"
|
|
144
|
+
|
|
145
|
+
# Use Sonar Pro Search for deeper analysis
|
|
146
|
+
python perplexity_search.py "Compare mRNA and viral vector vaccines" --model sonar-pro-search
|
|
147
|
+
|
|
148
|
+
# Use Sonar Reasoning for complex queries
|
|
149
|
+
python perplexity_search.py "Explain quantum entanglement" --model sonar-reasoning-pro
|
|
150
|
+
|
|
151
|
+
# Save output to file
|
|
152
|
+
python perplexity_search.py "COVID-19 vaccine efficacy studies" --output results.json
|
|
153
|
+
|
|
154
|
+
# Verbose mode
|
|
155
|
+
python perplexity_search.py "Machine learning trends 2024" --verbose
|
|
156
|
+
|
|
157
|
+
Available Models:
|
|
158
|
+
- sonar-pro (default): General-purpose search with good balance
|
|
159
|
+
- sonar-pro-search: Most advanced agentic search with multi-step reasoning
|
|
160
|
+
- sonar: Standard model for basic searches
|
|
161
|
+
- sonar-reasoning-pro: Advanced reasoning capabilities
|
|
162
|
+
- sonar-reasoning: Basic reasoning model
|
|
163
|
+
"""
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
parser.add_argument(
|
|
167
|
+
"query",
|
|
168
|
+
help="The search query"
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
parser.add_argument(
|
|
172
|
+
"--model",
|
|
173
|
+
default="sonar-pro",
|
|
174
|
+
choices=[
|
|
175
|
+
"sonar-pro",
|
|
176
|
+
"sonar-pro-search",
|
|
177
|
+
"sonar",
|
|
178
|
+
"sonar-reasoning-pro",
|
|
179
|
+
"sonar-reasoning"
|
|
180
|
+
],
|
|
181
|
+
help="Perplexity model to use (default: sonar-pro)"
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
parser.add_argument(
|
|
185
|
+
"--max-tokens",
|
|
186
|
+
type=int,
|
|
187
|
+
default=4000,
|
|
188
|
+
help="Maximum tokens in response (default: 4000)"
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
parser.add_argument(
|
|
192
|
+
"--temperature",
|
|
193
|
+
type=float,
|
|
194
|
+
default=0.2,
|
|
195
|
+
help="Response temperature 0.0-1.0 (default: 0.2)"
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
parser.add_argument(
|
|
199
|
+
"--output",
|
|
200
|
+
help="Save results to JSON file"
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
parser.add_argument(
|
|
204
|
+
"--verbose",
|
|
205
|
+
action="store_true",
|
|
206
|
+
help="Print detailed information"
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
parser.add_argument(
|
|
210
|
+
"--check-setup",
|
|
211
|
+
action="store_true",
|
|
212
|
+
help="Check if dependencies and API key are configured"
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
args = parser.parse_args()
|
|
216
|
+
|
|
217
|
+
# Check setup if requested
|
|
218
|
+
if args.check_setup:
|
|
219
|
+
print("Checking setup...")
|
|
220
|
+
deps_ok = check_dependencies()
|
|
221
|
+
api_key_ok = check_api_key() is not None
|
|
222
|
+
|
|
223
|
+
if deps_ok and api_key_ok:
|
|
224
|
+
print("\n✓ Setup complete! Ready to search.")
|
|
225
|
+
return 0
|
|
226
|
+
else:
|
|
227
|
+
print("\n✗ Setup incomplete. Please fix the issues above.")
|
|
228
|
+
return 1
|
|
229
|
+
|
|
230
|
+
# Check dependencies
|
|
231
|
+
if not check_dependencies():
|
|
232
|
+
return 1
|
|
233
|
+
|
|
234
|
+
# Prepend openrouter/ to model name if not already present
|
|
235
|
+
model = args.model
|
|
236
|
+
if not model.startswith("openrouter/"):
|
|
237
|
+
model = f"openrouter/perplexity/{model}"
|
|
238
|
+
|
|
239
|
+
# Perform the search
|
|
240
|
+
result = search_with_perplexity(
|
|
241
|
+
query=args.query,
|
|
242
|
+
model=model,
|
|
243
|
+
max_tokens=args.max_tokens,
|
|
244
|
+
temperature=args.temperature,
|
|
245
|
+
verbose=args.verbose
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
# Handle results
|
|
249
|
+
if not result["success"]:
|
|
250
|
+
print(f"Error: {result['error']}", file=sys.stderr)
|
|
251
|
+
return 1
|
|
252
|
+
|
|
253
|
+
# Print answer
|
|
254
|
+
print("\n" + "="*80)
|
|
255
|
+
print("ANSWER")
|
|
256
|
+
print("="*80)
|
|
257
|
+
print(result["answer"])
|
|
258
|
+
print("="*80)
|
|
259
|
+
|
|
260
|
+
# Print usage stats if verbose
|
|
261
|
+
if args.verbose:
|
|
262
|
+
print(f"\nUsage:", file=sys.stderr)
|
|
263
|
+
print(f" Prompt tokens: {result['usage']['prompt_tokens']}", file=sys.stderr)
|
|
264
|
+
print(f" Completion tokens: {result['usage']['completion_tokens']}", file=sys.stderr)
|
|
265
|
+
print(f" Total tokens: {result['usage']['total_tokens']}", file=sys.stderr)
|
|
266
|
+
|
|
267
|
+
# Save to file if requested
|
|
268
|
+
if args.output:
|
|
269
|
+
with open(args.output, 'w') as f:
|
|
270
|
+
json.dump(result, f, indent=2)
|
|
271
|
+
print(f"\n✓ Results saved to {args.output}", file=sys.stderr)
|
|
272
|
+
|
|
273
|
+
return 0
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
if __name__ == "__main__":
|
|
277
|
+
sys.exit(main())
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Setup script for Perplexity Search environment configuration.
|
|
4
|
+
|
|
5
|
+
This script helps users configure their OpenRouter API key and validates the setup.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
python setup_env.py [--api-key YOUR_KEY] [--env-file .env]
|
|
9
|
+
|
|
10
|
+
Author: Scientific Skills
|
|
11
|
+
License: MIT
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import os
|
|
15
|
+
import sys
|
|
16
|
+
import argparse
|
|
17
|
+
from pathlib import Path
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def create_env_file(api_key: str, env_file: str = ".env") -> bool:
|
|
21
|
+
"""
|
|
22
|
+
Create or update .env file with OpenRouter API key.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
api_key: The OpenRouter API key
|
|
26
|
+
env_file: Path to .env file (default: .env)
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
True if successful, False otherwise
|
|
30
|
+
"""
|
|
31
|
+
try:
|
|
32
|
+
env_path = Path(env_file)
|
|
33
|
+
|
|
34
|
+
# Read existing content if file exists
|
|
35
|
+
existing_content = []
|
|
36
|
+
if env_path.exists():
|
|
37
|
+
with open(env_path, 'r') as f:
|
|
38
|
+
existing_content = [
|
|
39
|
+
line for line in f.readlines()
|
|
40
|
+
if not line.startswith('OPENROUTER_API_KEY=')
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
# Write new content
|
|
44
|
+
with open(env_path, 'w') as f:
|
|
45
|
+
# Write existing content (excluding old OPENROUTER_API_KEY)
|
|
46
|
+
f.writelines(existing_content)
|
|
47
|
+
|
|
48
|
+
# Add new API key
|
|
49
|
+
if existing_content and not existing_content[-1].endswith('\n'):
|
|
50
|
+
f.write('\n')
|
|
51
|
+
f.write(f'OPENROUTER_API_KEY={api_key}\n')
|
|
52
|
+
|
|
53
|
+
print(f"✓ API key saved to {env_file}")
|
|
54
|
+
return True
|
|
55
|
+
|
|
56
|
+
except Exception as e:
|
|
57
|
+
print(f"Error creating .env file: {e}", file=sys.stderr)
|
|
58
|
+
return False
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def validate_setup() -> bool:
|
|
62
|
+
"""
|
|
63
|
+
Validate that the environment is properly configured.
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
True if setup is valid, False otherwise
|
|
67
|
+
"""
|
|
68
|
+
print("Validating setup...")
|
|
69
|
+
print()
|
|
70
|
+
|
|
71
|
+
# Check for API key
|
|
72
|
+
api_key = os.environ.get("OPENROUTER_API_KEY")
|
|
73
|
+
if not api_key:
|
|
74
|
+
print("✗ OPENROUTER_API_KEY environment variable not set")
|
|
75
|
+
print()
|
|
76
|
+
print("To set up your API key:")
|
|
77
|
+
print("1. Get an API key from https://openrouter.ai/keys")
|
|
78
|
+
print("2. Run this script with --api-key flag:")
|
|
79
|
+
print(" python setup_env.py --api-key YOUR_KEY")
|
|
80
|
+
print()
|
|
81
|
+
return False
|
|
82
|
+
else:
|
|
83
|
+
# Mask the key for display
|
|
84
|
+
masked_key = api_key[:8] + "..." + api_key[-4:] if len(api_key) > 12 else "***"
|
|
85
|
+
print(f"✓ OPENROUTER_API_KEY is set ({masked_key})")
|
|
86
|
+
|
|
87
|
+
# Check for LiteLLM
|
|
88
|
+
try:
|
|
89
|
+
import litellm
|
|
90
|
+
print(f"✓ LiteLLM is installed (version {litellm.__version__})")
|
|
91
|
+
except ImportError:
|
|
92
|
+
print("✗ LiteLLM is not installed")
|
|
93
|
+
print()
|
|
94
|
+
print("Install LiteLLM with:")
|
|
95
|
+
print(" uv pip install litellm")
|
|
96
|
+
print()
|
|
97
|
+
return False
|
|
98
|
+
|
|
99
|
+
print()
|
|
100
|
+
print("✓ Setup is complete! You're ready to use Perplexity Search.")
|
|
101
|
+
return True
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def main():
|
|
105
|
+
"""Main entry point for the setup script."""
|
|
106
|
+
parser = argparse.ArgumentParser(
|
|
107
|
+
description="Setup Perplexity Search environment configuration",
|
|
108
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
109
|
+
epilog="""
|
|
110
|
+
Examples:
|
|
111
|
+
# Set up API key
|
|
112
|
+
python setup_env.py --api-key sk-or-v1-xxxxx
|
|
113
|
+
|
|
114
|
+
# Validate existing setup
|
|
115
|
+
python setup_env.py --validate
|
|
116
|
+
|
|
117
|
+
# Use custom .env file location
|
|
118
|
+
python setup_env.py --api-key sk-or-v1-xxxxx --env-file /path/to/.env
|
|
119
|
+
|
|
120
|
+
Get your OpenRouter API key from:
|
|
121
|
+
https://openrouter.ai/keys
|
|
122
|
+
"""
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
parser.add_argument(
|
|
126
|
+
"--api-key",
|
|
127
|
+
help="Your OpenRouter API key"
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
parser.add_argument(
|
|
131
|
+
"--env-file",
|
|
132
|
+
default=".env",
|
|
133
|
+
help="Path to .env file (default: .env)"
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
parser.add_argument(
|
|
137
|
+
"--validate",
|
|
138
|
+
action="store_true",
|
|
139
|
+
help="Validate existing setup"
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
args = parser.parse_args()
|
|
143
|
+
|
|
144
|
+
# If no arguments, show validation
|
|
145
|
+
if not args.api_key and not args.validate:
|
|
146
|
+
args.validate = True
|
|
147
|
+
|
|
148
|
+
# Handle API key setup
|
|
149
|
+
if args.api_key:
|
|
150
|
+
print("Setting up OpenRouter API key...")
|
|
151
|
+
if create_env_file(args.api_key, args.env_file):
|
|
152
|
+
print()
|
|
153
|
+
print("Next steps:")
|
|
154
|
+
print(f"1. Load the environment variables:")
|
|
155
|
+
print(f" source {args.env_file}")
|
|
156
|
+
print("2. Or export directly:")
|
|
157
|
+
print(f" export OPENROUTER_API_KEY={args.api_key}")
|
|
158
|
+
print("3. Test the setup:")
|
|
159
|
+
print(" python perplexity_search.py --check-setup")
|
|
160
|
+
print()
|
|
161
|
+
|
|
162
|
+
# Validate setup
|
|
163
|
+
if args.validate:
|
|
164
|
+
if not validate_setup():
|
|
165
|
+
return 1
|
|
166
|
+
|
|
167
|
+
return 0
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
if __name__ == "__main__":
|
|
171
|
+
sys.exit(main())
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
© 2025 Anthropic, PBC. All rights reserved.
|
|
2
|
+
|
|
3
|
+
LICENSE: Use of these materials (including all code, prompts, assets, files,
|
|
4
|
+
and other components of this Skill) is governed by your agreement with
|
|
5
|
+
Anthropic regarding use of Anthropic's services. If no separate agreement
|
|
6
|
+
exists, use is governed by Anthropic's Consumer Terms of Service or
|
|
7
|
+
Commercial Terms of Service, as applicable:
|
|
8
|
+
https://www.anthropic.com/legal/consumer-terms
|
|
9
|
+
https://www.anthropic.com/legal/commercial-terms
|
|
10
|
+
Your applicable agreement is referred to as the "Agreement." "Services" are
|
|
11
|
+
as defined in the Agreement.
|
|
12
|
+
|
|
13
|
+
ADDITIONAL RESTRICTIONS: Notwithstanding anything in the Agreement to the
|
|
14
|
+
contrary, users may not:
|
|
15
|
+
|
|
16
|
+
- Extract these materials from the Services or retain copies of these
|
|
17
|
+
materials outside the Services
|
|
18
|
+
- Reproduce or copy these materials, except for temporary copies created
|
|
19
|
+
automatically during authorized use of the Services
|
|
20
|
+
- Create derivative works based on these materials
|
|
21
|
+
- Distribute, sublicense, or transfer these materials to any third party
|
|
22
|
+
- Make, offer to sell, sell, or import any inventions embodied in these
|
|
23
|
+
materials
|
|
24
|
+
- Reverse engineer, decompile, or disassemble these materials
|
|
25
|
+
|
|
26
|
+
The receipt, viewing, or possession of these materials does not convey or
|
|
27
|
+
imply any license or right beyond those expressly granted above.
|
|
28
|
+
|
|
29
|
+
Anthropic retains all right, title, and interest in these materials,
|
|
30
|
+
including all copyrights, patents, and other intellectual property rights.
|