@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,78 @@
|
|
|
1
|
+
# Podman Compose configuration for Madeinoz Knowledge System with FalkorDB backend
|
|
2
|
+
# Uses a shared public network for both services
|
|
3
|
+
|
|
4
|
+
name: madeinoz-knowledge-system
|
|
5
|
+
#
|
|
6
|
+
# Services:
|
|
7
|
+
# - falkordb: Redis-based graph database
|
|
8
|
+
# - graphiti-mcp: MCP server (exposed to host)
|
|
9
|
+
#
|
|
10
|
+
# Madeinoz Patches APPLIED:
|
|
11
|
+
# 1. entrypoint.sh - Selects appropriate config based on DATABASE_TYPE
|
|
12
|
+
#
|
|
13
|
+
# Usage from pack directory:
|
|
14
|
+
# 1. Copy config/.env.example to ~/.claude/.env and configure your API keys
|
|
15
|
+
# 2. Run: bun run src/server/start.sh (handles .env generation automatically)
|
|
16
|
+
# 3. MCP server uses HTTP transport at: http://localhost:8000/mcp
|
|
17
|
+
# 4. Access FalkorDB web UI at: http://localhost:3000
|
|
18
|
+
|
|
19
|
+
networks:
|
|
20
|
+
madeinoz-knowledge-net:
|
|
21
|
+
external: true # Use existing public network created by install script
|
|
22
|
+
|
|
23
|
+
volumes:
|
|
24
|
+
madeinoz-knowledge-falkordb-data:
|
|
25
|
+
external: true # Use existing volume with persisted data
|
|
26
|
+
|
|
27
|
+
services:
|
|
28
|
+
# FalkorDB Graph Database
|
|
29
|
+
# Redis-based graph database
|
|
30
|
+
falkordb:
|
|
31
|
+
image: falkordb/falkordb:latest
|
|
32
|
+
container_name: madeinoz-knowledge-falkordb
|
|
33
|
+
restart: unless-stopped
|
|
34
|
+
networks:
|
|
35
|
+
- madeinoz-knowledge-net
|
|
36
|
+
ports:
|
|
37
|
+
- "3000:3000" # FalkorDB web UI
|
|
38
|
+
volumes:
|
|
39
|
+
- madeinoz-knowledge-falkordb-data:/data
|
|
40
|
+
environment:
|
|
41
|
+
- FALKORDB_PASSWORD=
|
|
42
|
+
healthcheck:
|
|
43
|
+
test: ["CMD", "redis-cli", "ping"]
|
|
44
|
+
interval: 10s
|
|
45
|
+
timeout: 5s
|
|
46
|
+
retries: 5
|
|
47
|
+
start_period: 20s
|
|
48
|
+
|
|
49
|
+
# Graphiti MCP Server (FalkorDB backend)
|
|
50
|
+
# Uses falkordb/graphiti-knowledge-graph-mcp:latest image
|
|
51
|
+
# Environment variables provided via env_file generated by start.sh
|
|
52
|
+
graphiti-mcp:
|
|
53
|
+
image: ghcr.io/madeinoz67/madeinoz-knowledge-system:latest
|
|
54
|
+
container_name: madeinoz-knowledge-graph-mcp
|
|
55
|
+
restart: unless-stopped
|
|
56
|
+
networks:
|
|
57
|
+
- madeinoz-knowledge-net
|
|
58
|
+
ports:
|
|
59
|
+
- "8000:8000" # MCP HTTP endpoint
|
|
60
|
+
volumes:
|
|
61
|
+
# Config files for database selection
|
|
62
|
+
- ./config-neo4j.yaml:/tmp/config-neo4j.yaml:ro
|
|
63
|
+
- ./config-falkordb.yaml:/tmp/config-falkordb.yaml:ro
|
|
64
|
+
# Madeinoz Patch: Entrypoint - Selects config based on DATABASE_TYPE
|
|
65
|
+
- ./entrypoint.sh:/entrypoint.sh:ro
|
|
66
|
+
entrypoint: ["/bin/sh", "/entrypoint.sh"]
|
|
67
|
+
env_file:
|
|
68
|
+
# Generated by start.sh from MADEINOZ_KNOWLEDGE_* prefixed variables
|
|
69
|
+
- /tmp/madeinoz-knowledge-mcp.env
|
|
70
|
+
depends_on:
|
|
71
|
+
falkordb:
|
|
72
|
+
condition: service_healthy
|
|
73
|
+
healthcheck:
|
|
74
|
+
test: ["CMD", "curl", "-sf", "--max-time", "5", "http://localhost:8000/health"]
|
|
75
|
+
interval: 30s
|
|
76
|
+
timeout: 10s
|
|
77
|
+
retries: 3
|
|
78
|
+
start_period: 40s
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Podman Compose configuration for Madeinoz Knowledge System with Neo4j backend
|
|
2
|
+
# Uses a shared public network for both services
|
|
3
|
+
|
|
4
|
+
name: madeinoz-knowledge-system
|
|
5
|
+
#
|
|
6
|
+
# Services:
|
|
7
|
+
# - neo4j: Graph database backend (Cypher queries)
|
|
8
|
+
# - graphiti-mcp: MCP server (exposed to host)
|
|
9
|
+
#
|
|
10
|
+
# Madeinoz Patches APPLIED:
|
|
11
|
+
# 1. entrypoint.sh - Selects appropriate config based on DATABASE_TYPE
|
|
12
|
+
#
|
|
13
|
+
# Usage from pack directory:
|
|
14
|
+
# 1. Copy config/.env.example to ~/.claude/.env and configure your API keys
|
|
15
|
+
# 2. Set MADEINOZ_KNOWLEDGE_DATABASE_TYPE=neo4j in your .env
|
|
16
|
+
# 3. Run: bun run src/server/start.sh (handles .env generation automatically)
|
|
17
|
+
# 4. MCP server uses HTTP transport at: http://localhost:8000/mcp
|
|
18
|
+
# 5. Access Neo4j Browser at: http://localhost:7474
|
|
19
|
+
|
|
20
|
+
networks:
|
|
21
|
+
madeinoz-knowledge-net:
|
|
22
|
+
external: true # Use existing public network created by install script
|
|
23
|
+
|
|
24
|
+
volumes:
|
|
25
|
+
madeinoz-knowledge-neo4j-data:
|
|
26
|
+
external: true # Use existing volume with persisted data
|
|
27
|
+
madeinoz-knowledge-neo4j-logs:
|
|
28
|
+
external: true # Use existing volume with persisted logs
|
|
29
|
+
|
|
30
|
+
services:
|
|
31
|
+
# Neo4j Graph Database
|
|
32
|
+
# Native graph database with Cypher query language
|
|
33
|
+
neo4j:
|
|
34
|
+
image: neo4j:latest
|
|
35
|
+
container_name: madeinoz-knowledge-neo4j
|
|
36
|
+
restart: unless-stopped
|
|
37
|
+
networks:
|
|
38
|
+
- madeinoz-knowledge-net
|
|
39
|
+
ports:
|
|
40
|
+
- "7474:7474" # Neo4j Browser HTTP
|
|
41
|
+
- "7687:7687" # Bolt protocol
|
|
42
|
+
volumes:
|
|
43
|
+
- madeinoz-knowledge-neo4j-data:/data
|
|
44
|
+
- madeinoz-knowledge-neo4j-logs:/logs
|
|
45
|
+
environment:
|
|
46
|
+
- NEO4J_AUTH=neo4j/madeinozknowledge
|
|
47
|
+
- NEO4J_server_memory_heap_initial__size=512m
|
|
48
|
+
- NEO4J_server_memory_heap_max__size=1G
|
|
49
|
+
- NEO4J_server_memory_pagecache_size=512m
|
|
50
|
+
- NEO4J_dbms_usage__report_enabled=false
|
|
51
|
+
healthcheck:
|
|
52
|
+
test: ["CMD", "wget", "-O", "/dev/null", "http://localhost:7474"]
|
|
53
|
+
interval: 10s
|
|
54
|
+
timeout: 5s
|
|
55
|
+
retries: 5
|
|
56
|
+
start_period: 30s
|
|
57
|
+
|
|
58
|
+
# Graphiti MCP Server (Neo4j backend)
|
|
59
|
+
# Uses zepai/knowledge-graph-mcp:standalone image for Neo4j support
|
|
60
|
+
# Environment variables provided via env_file generated by start.sh
|
|
61
|
+
graphiti-mcp:
|
|
62
|
+
image: ghcr.io/madeinoz67/madeinoz-knowledge-system:latest
|
|
63
|
+
container_name: madeinoz-knowledge-graph-mcp
|
|
64
|
+
restart: unless-stopped
|
|
65
|
+
networks:
|
|
66
|
+
- madeinoz-knowledge-net
|
|
67
|
+
ports:
|
|
68
|
+
- "8000:8000" # MCP HTTP endpoint
|
|
69
|
+
volumes:
|
|
70
|
+
# Config files for database selection
|
|
71
|
+
- ./config-neo4j.yaml:/tmp/config-neo4j.yaml:ro
|
|
72
|
+
- ./config-falkordb.yaml:/tmp/config-falkordb.yaml:ro
|
|
73
|
+
# Madeinoz Patch: Entrypoint - Selects config based on DATABASE_TYPE
|
|
74
|
+
- ./entrypoint.sh:/entrypoint.sh:ro
|
|
75
|
+
entrypoint: ["/bin/sh", "/entrypoint.sh"]
|
|
76
|
+
env_file:
|
|
77
|
+
# Generated by start.sh from MADEINOZ_KNOWLEDGE_* prefixed variables
|
|
78
|
+
- /tmp/madeinoz-knowledge-mcp.env
|
|
79
|
+
depends_on:
|
|
80
|
+
neo4j:
|
|
81
|
+
condition: service_healthy
|
|
82
|
+
healthcheck:
|
|
83
|
+
test: ["CMD", "curl", "-sf", "--max-time", "5", "http://localhost:8000/health"]
|
|
84
|
+
interval: 30s
|
|
85
|
+
timeout: 10s
|
|
86
|
+
retries: 3
|
|
87
|
+
start_period: 40s
|
|
88
|
+
command: ["uv", "run", "main.py"]
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Podman Compose configuration for Madeinoz Knowledge System (Neo4j - default)
|
|
2
|
+
#
|
|
3
|
+
# This is a symlink/alias to podman-compose-neo4j.yml for convenience.
|
|
4
|
+
# Neo4j is the recommended default backend.
|
|
5
|
+
#
|
|
6
|
+
# For FalkorDB backend, use: podman-compose-falkordb.yml
|
|
7
|
+
#
|
|
8
|
+
# To use a specific backend, run:
|
|
9
|
+
# podman-compose -f src/server/podman-compose-neo4j.yml up -d
|
|
10
|
+
# podman-compose -f src/server/podman-compose-falkordb.yml up -d
|
|
11
|
+
|
|
12
|
+
name: madeinoz-knowledge-system
|
|
13
|
+
|
|
14
|
+
networks:
|
|
15
|
+
madeinoz-knowledge-net:
|
|
16
|
+
external: true
|
|
17
|
+
|
|
18
|
+
volumes:
|
|
19
|
+
madeinoz-knowledge-neo4j-data:
|
|
20
|
+
external: true
|
|
21
|
+
madeinoz-knowledge-neo4j-logs:
|
|
22
|
+
external: true
|
|
23
|
+
|
|
24
|
+
services:
|
|
25
|
+
neo4j:
|
|
26
|
+
image: neo4j:latest
|
|
27
|
+
container_name: madeinoz-knowledge-neo4j
|
|
28
|
+
restart: unless-stopped
|
|
29
|
+
networks:
|
|
30
|
+
- madeinoz-knowledge-net
|
|
31
|
+
ports:
|
|
32
|
+
- "7474:7474"
|
|
33
|
+
- "7687:7687"
|
|
34
|
+
volumes:
|
|
35
|
+
- madeinoz-knowledge-neo4j-data:/data
|
|
36
|
+
- madeinoz-knowledge-neo4j-logs:/logs
|
|
37
|
+
environment:
|
|
38
|
+
- NEO4J_AUTH=neo4j/madeinozknowledge
|
|
39
|
+
- NEO4J_server_memory_heap_initial__size=512m
|
|
40
|
+
- NEO4J_server_memory_heap_max__size=1G
|
|
41
|
+
- NEO4J_server_memory_pagecache_size=512m
|
|
42
|
+
- NEO4J_dbms_usage__report_enabled=false
|
|
43
|
+
healthcheck:
|
|
44
|
+
test: ["CMD", "wget", "-O", "/dev/null", "http://localhost:7474"]
|
|
45
|
+
interval: 10s
|
|
46
|
+
timeout: 5s
|
|
47
|
+
retries: 5
|
|
48
|
+
start_period: 30s
|
|
49
|
+
|
|
50
|
+
graphiti-mcp:
|
|
51
|
+
image: ghcr.io/madeinoz67/madeinoz-knowledge-system:latest
|
|
52
|
+
container_name: madeinoz-knowledge-graph-mcp
|
|
53
|
+
restart: unless-stopped
|
|
54
|
+
networks:
|
|
55
|
+
- madeinoz-knowledge-net
|
|
56
|
+
ports:
|
|
57
|
+
- "8000:8000"
|
|
58
|
+
environment:
|
|
59
|
+
- NEO4J_URI=bolt://neo4j:7687
|
|
60
|
+
- NEO4J_USER=neo4j
|
|
61
|
+
- NEO4J_PASSWORD=madeinozknowledge
|
|
62
|
+
- NEO4J_DATABASE=neo4j
|
|
63
|
+
- GRAPHITI_GROUP_ID=main
|
|
64
|
+
- SEMAPHORE_LIMIT=10
|
|
65
|
+
- CONFIG_PATH=/app/mcp/config/config.yaml
|
|
66
|
+
- GRAPHITI_TELEMETRY_ENABLED=false
|
|
67
|
+
- MADEINOZ_KNOWLEDGE_SEARCH_ALL_GROUPS=true
|
|
68
|
+
volumes:
|
|
69
|
+
- ./config-neo4j.yaml:/app/mcp/config/config.yaml:ro
|
|
70
|
+
- ./entrypoint.sh:/entrypoint.sh:ro
|
|
71
|
+
entrypoint: ["/bin/sh", "/entrypoint.sh"]
|
|
72
|
+
env_file:
|
|
73
|
+
- /tmp/madeinoz-knowledge-mcp.env
|
|
74
|
+
depends_on:
|
|
75
|
+
neo4j:
|
|
76
|
+
condition: service_healthy
|
|
77
|
+
healthcheck:
|
|
78
|
+
test: ["CMD", "curl", "-sf", "--max-time", "5", "http://localhost:8000/health"]
|
|
79
|
+
interval: 30s
|
|
80
|
+
timeout: 10s
|
|
81
|
+
retries: 3
|
|
82
|
+
start_period: 40s
|
|
83
|
+
command: ["uv", "run", "main.py"]
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
/**
|
|
3
|
+
* Comprehensive MCP LLM Test
|
|
4
|
+
* Tests ALL benchmark models for real-life entity extraction via Graphiti
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { $ } from 'bun';
|
|
8
|
+
|
|
9
|
+
const MCP_URL = 'http://localhost:8000/mcp';
|
|
10
|
+
const ACCEPT = 'application/json, text/event-stream';
|
|
11
|
+
const ENV_FILE = '../../config/.env';
|
|
12
|
+
|
|
13
|
+
// All models from benchmark with 100% pass rate (sorted by cost)
|
|
14
|
+
const LLM_MODELS = [
|
|
15
|
+
{ name: 'Llama 3.1 8B', model: 'meta-llama/llama-3.1-8b-instruct', cost: 0.0145 },
|
|
16
|
+
{ name: 'Mistral 7B', model: 'mistralai/mistral-7b-instruct', cost: 0.0167 },
|
|
17
|
+
{ name: 'DeepSeek V3', model: 'deepseek/deepseek-chat', cost: 0.0585 },
|
|
18
|
+
{ name: 'Llama 3.3 70B', model: 'meta-llama/llama-3.3-70b-instruct', cost: 0.114 },
|
|
19
|
+
{ name: 'Gemini 2.0 Flash', model: 'google/gemini-2.0-flash-001', cost: 0.125 },
|
|
20
|
+
{ name: 'Qwen 2.5 72B', model: 'qwen/qwen-2.5-72b-instruct', cost: 0.126 },
|
|
21
|
+
{ name: 'GPT-4o Mini', model: 'openai/gpt-4o-mini', cost: 0.129 },
|
|
22
|
+
{ name: 'Claude 3.5 Haiku', model: 'anthropic/claude-3.5-haiku', cost: 0.816 },
|
|
23
|
+
{ name: 'GPT-4o', model: 'openai/gpt-4o', cost: 2.155 },
|
|
24
|
+
{ name: 'Claude Sonnet 4', model: 'anthropic/claude-sonnet-4', cost: 4.215 },
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const OPENROUTER_API_KEY = process.env.OPENROUTER_API_KEY;
|
|
28
|
+
if (!OPENROUTER_API_KEY) {
|
|
29
|
+
console.error('โ OPENROUTER_API_KEY required');
|
|
30
|
+
console.log('\nUsage: OPENROUTER_API_KEY=sk-or-v1-... bun test-all-llms-mcp.ts');
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Test episode - complex enough to test extraction quality
|
|
35
|
+
const TEST_EPISODE = {
|
|
36
|
+
name: 'LLM Test Episode',
|
|
37
|
+
body: "During the Q4 planning meeting at TechCorp headquarters in Austin, CEO Sarah Martinez announced a strategic partnership with CloudBase Inc. The $50 million deal, facilitated by Morgan Stanley, will integrate CloudBase's AI platform into TechCorp's enterprise suite by March 2026.",
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Expected entities to find
|
|
41
|
+
const EXPECTED_ENTITIES = ['TechCorp', 'Sarah Martinez', 'CloudBase', 'Morgan Stanley', 'Austin'];
|
|
42
|
+
|
|
43
|
+
let sessionId: string | null = null;
|
|
44
|
+
|
|
45
|
+
async function mcpRequest(method: string, params: any = {}): Promise<any> {
|
|
46
|
+
const headers: Record<string, string> = {
|
|
47
|
+
'Content-Type': 'application/json',
|
|
48
|
+
Accept: ACCEPT,
|
|
49
|
+
};
|
|
50
|
+
if (sessionId) headers['mcp-session-id'] = sessionId;
|
|
51
|
+
|
|
52
|
+
try {
|
|
53
|
+
const res = await fetch(MCP_URL, {
|
|
54
|
+
method: 'POST',
|
|
55
|
+
headers,
|
|
56
|
+
body: JSON.stringify({ jsonrpc: '2.0', id: Date.now(), method, params }),
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const newSessionId = res.headers.get('mcp-session-id');
|
|
60
|
+
if (newSessionId) sessionId = newSessionId;
|
|
61
|
+
|
|
62
|
+
const text = await res.text();
|
|
63
|
+
let result: any = null;
|
|
64
|
+
let error: any = null;
|
|
65
|
+
|
|
66
|
+
for (const line of text.split('\n')) {
|
|
67
|
+
if (line.startsWith('data: ')) {
|
|
68
|
+
try {
|
|
69
|
+
const data = JSON.parse(line.slice(6));
|
|
70
|
+
if (data.result) result = data.result;
|
|
71
|
+
if (data.error) error = data.error;
|
|
72
|
+
} catch {}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (!result && !error) {
|
|
77
|
+
try {
|
|
78
|
+
const json = JSON.parse(text);
|
|
79
|
+
result = json.result;
|
|
80
|
+
error = json.error;
|
|
81
|
+
} catch {}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return { result, error };
|
|
85
|
+
} catch (e: any) {
|
|
86
|
+
return { error: { message: e.message } };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async function callTool(
|
|
91
|
+
name: string,
|
|
92
|
+
args: any
|
|
93
|
+
): Promise<{ success: boolean; data: any; duration: number }> {
|
|
94
|
+
const start = Date.now();
|
|
95
|
+
const { result, error } = await mcpRequest('tools/call', { name, arguments: args });
|
|
96
|
+
const duration = Date.now() - start;
|
|
97
|
+
|
|
98
|
+
if (error) return { success: false, data: error, duration };
|
|
99
|
+
|
|
100
|
+
let data: any = result;
|
|
101
|
+
try {
|
|
102
|
+
if (result?.content?.[0]?.text) {
|
|
103
|
+
data = JSON.parse(result.content[0].text);
|
|
104
|
+
}
|
|
105
|
+
} catch {}
|
|
106
|
+
|
|
107
|
+
return { success: true, data, duration };
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async function waitForHealth(maxWait = 60000): Promise<boolean> {
|
|
111
|
+
const start = Date.now();
|
|
112
|
+
while (Date.now() - start < maxWait) {
|
|
113
|
+
try {
|
|
114
|
+
const res = await fetch('http://localhost:8000/health', {
|
|
115
|
+
signal: AbortSignal.timeout(2000),
|
|
116
|
+
});
|
|
117
|
+
if (res.ok) return true;
|
|
118
|
+
} catch {}
|
|
119
|
+
await Bun.sleep(2000);
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
async function updateEnvAndRestart(modelName: string): Promise<boolean> {
|
|
125
|
+
// Read current env
|
|
126
|
+
const envPath = Bun.file(ENV_FILE);
|
|
127
|
+
let envContent = await envPath.text();
|
|
128
|
+
|
|
129
|
+
// Update MODEL_NAME lines
|
|
130
|
+
envContent = envContent.replace(
|
|
131
|
+
/MADEINOZ_KNOWLEDGE_MODEL_NAME=.*/g,
|
|
132
|
+
`MADEINOZ_KNOWLEDGE_MODEL_NAME=${modelName}`
|
|
133
|
+
);
|
|
134
|
+
envContent = envContent.replace(/^MODEL_NAME=.*/gm, `MODEL_NAME=${modelName}`);
|
|
135
|
+
|
|
136
|
+
// Write updated env
|
|
137
|
+
await Bun.write(ENV_FILE, envContent);
|
|
138
|
+
|
|
139
|
+
// Restart container
|
|
140
|
+
try {
|
|
141
|
+
await $`docker-compose -f docker-compose-neo4j.yml up -d --force-recreate graphiti-mcp`.quiet();
|
|
142
|
+
await Bun.sleep(5000); // Initial wait
|
|
143
|
+
return await waitForHealth();
|
|
144
|
+
} catch (e: any) {
|
|
145
|
+
console.log(` โ Restart failed: ${e.message}`);
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
async function checkExtractedEntities(groupId: string): Promise<string[]> {
|
|
151
|
+
try {
|
|
152
|
+
const result =
|
|
153
|
+
await $`docker exec madeinoz-knowledge-neo4j cypher-shell -u neo4j -p madeinozknowledge "MATCH (n:Entity {group_id: '${groupId}'}) RETURN n.name as name"`.text();
|
|
154
|
+
|
|
155
|
+
// Parse cypher-shell output
|
|
156
|
+
const lines = result.split('\n').slice(1); // Skip header
|
|
157
|
+
const entities: string[] = [];
|
|
158
|
+
for (const line of lines) {
|
|
159
|
+
const name = line.replace(/"/g, '').trim();
|
|
160
|
+
if (name && name !== 'name') entities.push(name);
|
|
161
|
+
}
|
|
162
|
+
return entities;
|
|
163
|
+
} catch {
|
|
164
|
+
return [];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
async function checkLogs(): Promise<{ success: boolean; error?: string }> {
|
|
169
|
+
try {
|
|
170
|
+
const logs =
|
|
171
|
+
await $`docker-compose -f docker-compose-neo4j.yml logs --tail=30 graphiti-mcp`.text();
|
|
172
|
+
|
|
173
|
+
if (logs.includes('Successfully processed episode')) {
|
|
174
|
+
return { success: true };
|
|
175
|
+
}
|
|
176
|
+
if (logs.includes('Failed to process episode')) {
|
|
177
|
+
const match = logs.match(/Failed to process episode.*?: (.+)/);
|
|
178
|
+
return { success: false, error: match?.[1] || 'Unknown error' };
|
|
179
|
+
}
|
|
180
|
+
return { success: false, error: 'Processing not completed' };
|
|
181
|
+
} catch {
|
|
182
|
+
return { success: false, error: 'Could not read logs' };
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
async function testModel(model: (typeof LLM_MODELS)[0], index: number): Promise<any> {
|
|
187
|
+
const groupId = `llm-test-${index}`;
|
|
188
|
+
sessionId = null;
|
|
189
|
+
|
|
190
|
+
const result = {
|
|
191
|
+
name: model.name,
|
|
192
|
+
model: model.model,
|
|
193
|
+
cost: model.cost,
|
|
194
|
+
works: false,
|
|
195
|
+
entitiesFound: 0,
|
|
196
|
+
expectedFound: 0,
|
|
197
|
+
error: null as string | null,
|
|
198
|
+
extractionTimeMs: 0,
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
// Initialize MCP session
|
|
202
|
+
const initRes = await mcpRequest('initialize', {
|
|
203
|
+
protocolVersion: '2024-11-05',
|
|
204
|
+
capabilities: {},
|
|
205
|
+
clientInfo: { name: 'llm-test', version: '1.0' },
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
if (initRes.error) {
|
|
209
|
+
result.error = `Init failed: ${initRes.error.message}`;
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
await mcpRequest('notifications/initialized', {});
|
|
214
|
+
|
|
215
|
+
// Add test episode
|
|
216
|
+
const addStart = Date.now();
|
|
217
|
+
const addRes = await callTool('add_memory', {
|
|
218
|
+
name: TEST_EPISODE.name,
|
|
219
|
+
episode_body: TEST_EPISODE.body,
|
|
220
|
+
source: 'text',
|
|
221
|
+
group_id: groupId,
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
if (!addRes.success) {
|
|
225
|
+
result.error = `add_memory failed: ${JSON.stringify(addRes.data).slice(0, 100)}`;
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Wait for async processing (up to 30 seconds)
|
|
230
|
+
console.log(' โณ Waiting for extraction...');
|
|
231
|
+
let processed = false;
|
|
232
|
+
for (let i = 0; i < 15; i++) {
|
|
233
|
+
await Bun.sleep(2000);
|
|
234
|
+
const logCheck = await checkLogs();
|
|
235
|
+
if (logCheck.success) {
|
|
236
|
+
processed = true;
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
if (logCheck.error?.includes('validation error')) {
|
|
240
|
+
result.error = logCheck.error;
|
|
241
|
+
return result;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
result.extractionTimeMs = Date.now() - addStart;
|
|
246
|
+
|
|
247
|
+
if (!processed) {
|
|
248
|
+
// Check logs for error
|
|
249
|
+
const logCheck = await checkLogs();
|
|
250
|
+
if (!logCheck.success) {
|
|
251
|
+
result.error = logCheck.error || 'Extraction timeout';
|
|
252
|
+
return result;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// Check extracted entities
|
|
257
|
+
const entities = await checkExtractedEntities(groupId);
|
|
258
|
+
result.entitiesFound = entities.length;
|
|
259
|
+
|
|
260
|
+
// Count how many expected entities were found
|
|
261
|
+
for (const expected of EXPECTED_ENTITIES) {
|
|
262
|
+
const found = entities.some(
|
|
263
|
+
(e) =>
|
|
264
|
+
e.toLowerCase().includes(expected.toLowerCase()) ||
|
|
265
|
+
expected.toLowerCase().includes(e.toLowerCase())
|
|
266
|
+
);
|
|
267
|
+
if (found) result.expectedFound++;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
result.works = result.entitiesFound >= 3 && result.expectedFound >= 3;
|
|
271
|
+
|
|
272
|
+
return result;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
async function main() {
|
|
276
|
+
console.log('โ'.repeat(70));
|
|
277
|
+
console.log('๐งช Comprehensive MCP LLM Test - All Benchmark Models');
|
|
278
|
+
console.log('โ'.repeat(70));
|
|
279
|
+
console.log(`\nTest Episode: "${TEST_EPISODE.body.slice(0, 80)}..."`);
|
|
280
|
+
console.log(`Expected Entities: ${EXPECTED_ENTITIES.join(', ')}`);
|
|
281
|
+
console.log(`\nModels to test: ${LLM_MODELS.length}`);
|
|
282
|
+
|
|
283
|
+
const results: any[] = [];
|
|
284
|
+
|
|
285
|
+
for (let i = 0; i < LLM_MODELS.length; i++) {
|
|
286
|
+
const model = LLM_MODELS[i];
|
|
287
|
+
console.log(`\n${'โ'.repeat(70)}`);
|
|
288
|
+
console.log(`[${i + 1}/${LLM_MODELS.length}] ${model.name} ($${model.cost}/1K)`);
|
|
289
|
+
console.log(`${'โ'.repeat(70)}`);
|
|
290
|
+
|
|
291
|
+
// Update config and restart
|
|
292
|
+
console.log(` ๐ Configuring ${model.model}...`);
|
|
293
|
+
const started = await updateEnvAndRestart(model.model);
|
|
294
|
+
|
|
295
|
+
if (!started) {
|
|
296
|
+
console.log(' โ Container failed to start');
|
|
297
|
+
results.push({
|
|
298
|
+
name: model.name,
|
|
299
|
+
model: model.model,
|
|
300
|
+
cost: model.cost,
|
|
301
|
+
works: false,
|
|
302
|
+
error: 'Container failed',
|
|
303
|
+
});
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// Verify model is configured
|
|
308
|
+
const logs =
|
|
309
|
+
await $`docker-compose -f docker-compose-neo4j.yml logs --tail=5 graphiti-mcp`.text();
|
|
310
|
+
if (!logs.includes(model.model)) {
|
|
311
|
+
console.log(' โ ๏ธ Model not reflected in logs, continuing anyway...');
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
console.log(' โ
Container ready');
|
|
315
|
+
console.log(' ๐ฅ Testing entity extraction...');
|
|
316
|
+
|
|
317
|
+
const result = await testModel(model, i);
|
|
318
|
+
results.push(result);
|
|
319
|
+
|
|
320
|
+
if (result.works) {
|
|
321
|
+
console.log(
|
|
322
|
+
` โ
PASS - ${result.entitiesFound} entities, ${result.expectedFound}/${EXPECTED_ENTITIES.length} expected (${result.extractionTimeMs}ms)`
|
|
323
|
+
);
|
|
324
|
+
} else {
|
|
325
|
+
console.log(
|
|
326
|
+
` โ FAIL - ${result.error || `Only ${result.expectedFound}/${EXPECTED_ENTITIES.length} expected entities`}`
|
|
327
|
+
);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// Summary
|
|
332
|
+
console.log(`\n${'โ'.repeat(70)}`);
|
|
333
|
+
console.log('๐ COMPREHENSIVE RESULTS');
|
|
334
|
+
console.log(`${'โ'.repeat(70)}`);
|
|
335
|
+
|
|
336
|
+
const working = results.filter((r) => r.works);
|
|
337
|
+
const failed = results.filter((r) => !r.works);
|
|
338
|
+
|
|
339
|
+
console.log(`\nโ
WORKING MODELS (${working.length}/${results.length}):`);
|
|
340
|
+
console.log('| Model | Cost/1K | Entities | Time |');
|
|
341
|
+
console.log('|-------|---------|----------|------|');
|
|
342
|
+
for (const r of working.sort((a, b) => a.cost - b.cost)) {
|
|
343
|
+
console.log(
|
|
344
|
+
`| ${r.name.padEnd(20)} | $${r.cost.toFixed(4).padStart(6)} | ${r.entitiesFound}/${r.expectedFound} | ${r.extractionTimeMs}ms |`
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
if (failed.length > 0) {
|
|
349
|
+
console.log(`\nโ FAILED MODELS (${failed.length}/${results.length}):`);
|
|
350
|
+
console.log('| Model | Cost/1K | Error |');
|
|
351
|
+
console.log('|-------|---------|-------|');
|
|
352
|
+
for (const r of failed) {
|
|
353
|
+
const error = (r.error || 'Unknown').slice(0, 50);
|
|
354
|
+
console.log(`| ${r.name.padEnd(20)} | $${r.cost.toFixed(4).padStart(6)} | ${error} |`);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// Save results
|
|
359
|
+
await Bun.write(
|
|
360
|
+
'llm-mcp-comprehensive-results.json',
|
|
361
|
+
JSON.stringify(
|
|
362
|
+
{
|
|
363
|
+
results,
|
|
364
|
+
summary: {
|
|
365
|
+
total: results.length,
|
|
366
|
+
working: working.length,
|
|
367
|
+
failed: failed.length,
|
|
368
|
+
workingModels: working.map((r) => r.model),
|
|
369
|
+
cheapestWorking: working.sort((a, b) => a.cost - b.cost)[0]?.name || 'None',
|
|
370
|
+
},
|
|
371
|
+
testEpisode: TEST_EPISODE,
|
|
372
|
+
expectedEntities: EXPECTED_ENTITIES,
|
|
373
|
+
timestamp: new Date().toISOString(),
|
|
374
|
+
},
|
|
375
|
+
null,
|
|
376
|
+
2
|
|
377
|
+
)
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
console.log('\n๐ Results saved to llm-mcp-comprehensive-results.json');
|
|
381
|
+
|
|
382
|
+
// Restore to GPT-4o-mini (known working)
|
|
383
|
+
console.log('\n๐ Restoring GPT-4o-mini configuration...');
|
|
384
|
+
await updateEnvAndRestart('openai/gpt-4o-mini');
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
main().catch(console.error);
|