@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.
Files changed (297) hide show
  1. package/.deepquark/skills/bundled/data-storytelling/SKILL.md +453 -0
  2. package/.deepquark/skills/bundled/docx/LICENSE.txt +30 -0
  3. package/.deepquark/skills/bundled/docx/SKILL.md +481 -0
  4. package/.deepquark/skills/bundled/docx/scripts/__init__.py +1 -0
  5. package/.deepquark/skills/bundled/docx/scripts/accept_changes.py +135 -0
  6. package/.deepquark/skills/bundled/docx/scripts/comment.py +318 -0
  7. package/.deepquark/skills/bundled/docx/scripts/office/helpers/__init__.py +0 -0
  8. package/.deepquark/skills/bundled/docx/scripts/office/helpers/merge_runs.py +199 -0
  9. package/.deepquark/skills/bundled/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  10. package/.deepquark/skills/bundled/docx/scripts/office/pack.py +159 -0
  11. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  12. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  13. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  14. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  15. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  16. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  17. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  18. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  19. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  20. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  21. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  22. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  23. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  24. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  25. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  26. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  27. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  28. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  29. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  30. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  31. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  32. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  33. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  34. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  35. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  36. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  37. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  38. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  39. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  40. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  41. package/.deepquark/skills/bundled/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  42. package/.deepquark/skills/bundled/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  43. package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  44. package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  45. package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  46. package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  47. package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  48. package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  49. package/.deepquark/skills/bundled/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  50. package/.deepquark/skills/bundled/docx/scripts/office/soffice.py +183 -0
  51. package/.deepquark/skills/bundled/docx/scripts/office/unpack.py +132 -0
  52. package/.deepquark/skills/bundled/docx/scripts/office/validate.py +111 -0
  53. package/.deepquark/skills/bundled/docx/scripts/office/validators/__init__.py +15 -0
  54. package/.deepquark/skills/bundled/docx/scripts/office/validators/base.py +847 -0
  55. package/.deepquark/skills/bundled/docx/scripts/office/validators/docx.py +446 -0
  56. package/.deepquark/skills/bundled/docx/scripts/office/validators/pptx.py +275 -0
  57. package/.deepquark/skills/bundled/docx/scripts/office/validators/redlining.py +247 -0
  58. package/.deepquark/skills/bundled/docx/scripts/templates/comments.xml +3 -0
  59. package/.deepquark/skills/bundled/docx/scripts/templates/commentsExtended.xml +3 -0
  60. package/.deepquark/skills/bundled/docx/scripts/templates/commentsExtensible.xml +3 -0
  61. package/.deepquark/skills/bundled/docx/scripts/templates/commentsIds.xml +3 -0
  62. package/.deepquark/skills/bundled/docx/scripts/templates/people.xml +3 -0
  63. package/.deepquark/skills/bundled/drawio-architect/SKILL.md +300 -0
  64. package/.deepquark/skills/bundled/drawio-architect/references/architecture-patterns.md +236 -0
  65. package/.deepquark/skills/bundled/drawio-architect/references/branding.md +180 -0
  66. package/.deepquark/skills/bundled/drawio-architect/references/cloud-icons.md +493 -0
  67. package/.deepquark/skills/bundled/drawio-architect/references/style-guide.md +268 -0
  68. package/.deepquark/skills/bundled/duckmind-deep-research/ARCHITECTURE_REVIEW.md +495 -0
  69. package/.deepquark/skills/bundled/duckmind-deep-research/AUTONOMY_VERIFICATION.md +420 -0
  70. package/.deepquark/skills/bundled/duckmind-deep-research/COMPETITIVE_ANALYSIS.md +179 -0
  71. package/.deepquark/skills/bundled/duckmind-deep-research/CONTEXT_OPTIMIZATION.md +293 -0
  72. package/.deepquark/skills/bundled/duckmind-deep-research/QUICK_START.md +167 -0
  73. package/.deepquark/skills/bundled/duckmind-deep-research/README.md +259 -0
  74. package/.deepquark/skills/bundled/duckmind-deep-research/SKILL.md +754 -0
  75. package/.deepquark/skills/bundled/duckmind-deep-research/WORD_PRECISION_AUDIT.md +476 -0
  76. package/.deepquark/skills/bundled/duckmind-deep-research/reference/methodology.md +384 -0
  77. package/.deepquark/skills/bundled/duckmind-deep-research/requirements.txt +10 -0
  78. package/.deepquark/skills/bundled/duckmind-deep-research/scripts/citation_manager.py +177 -0
  79. package/.deepquark/skills/bundled/duckmind-deep-research/scripts/md_to_html.py +330 -0
  80. package/.deepquark/skills/bundled/duckmind-deep-research/scripts/research_engine.py +578 -0
  81. package/.deepquark/skills/bundled/duckmind-deep-research/scripts/source_evaluator.py +292 -0
  82. package/.deepquark/skills/bundled/duckmind-deep-research/scripts/validate_report.py +354 -0
  83. package/.deepquark/skills/bundled/duckmind-deep-research/scripts/verify_citations.py +430 -0
  84. package/.deepquark/skills/bundled/duckmind-deep-research/scripts/verify_html.py +220 -0
  85. package/.deepquark/skills/bundled/duckmind-deep-research/templates/mckinsey_report_template.html +443 -0
  86. package/.deepquark/skills/bundled/duckmind-deep-research/templates/report_template.md +414 -0
  87. package/.deepquark/skills/bundled/duckmind-deep-research/tests/fixtures/invalid_report.md +27 -0
  88. package/.deepquark/skills/bundled/duckmind-deep-research/tests/fixtures/valid_report.md +114 -0
  89. package/.deepquark/skills/bundled/duckmind-multimodal/SKILL.md +171 -0
  90. package/.deepquark/skills/bundled/duckmind-multimodal/references/image-generation.md +131 -0
  91. package/.deepquark/skills/bundled/duckmind-multimodal/references/pdf-processing.md +120 -0
  92. package/.deepquark/skills/bundled/duckmind-transcribe/SKILL.md +70 -0
  93. package/.deepquark/skills/bundled/duckmind-transcribe/scripts/transcribe.sh +134 -0
  94. package/.deepquark/skills/bundled/excel-analysis/SKILL.md +247 -0
  95. package/.deepquark/skills/bundled/knowledge-graph/SKILL.md +385 -0
  96. package/.deepquark/skills/bundled/knowledge-graph/STANDARDS.md +461 -0
  97. package/.deepquark/skills/bundled/knowledge-graph/lib/cli.ts +588 -0
  98. package/.deepquark/skills/bundled/knowledge-graph/lib/config.ts +630 -0
  99. package/.deepquark/skills/bundled/knowledge-graph/lib/connection-profile.ts +629 -0
  100. package/.deepquark/skills/bundled/knowledge-graph/lib/container.ts +756 -0
  101. package/.deepquark/skills/bundled/knowledge-graph/lib/mcp-client.ts +1310 -0
  102. package/.deepquark/skills/bundled/knowledge-graph/lib/output-formatter.ts +997 -0
  103. package/.deepquark/skills/bundled/knowledge-graph/lib/token-metrics.ts +335 -0
  104. package/.deepquark/skills/bundled/knowledge-graph/lib/transformation-log.ts +137 -0
  105. package/.deepquark/skills/bundled/knowledge-graph/lib/wrapper-config.ts +113 -0
  106. package/.deepquark/skills/bundled/knowledge-graph/server/.env.example +129 -0
  107. package/.deepquark/skills/bundled/knowledge-graph/server/compare-embeddings.ts +175 -0
  108. package/.deepquark/skills/bundled/knowledge-graph/server/config-falkordb.yaml +108 -0
  109. package/.deepquark/skills/bundled/knowledge-graph/server/config-neo4j.yaml +111 -0
  110. package/.deepquark/skills/bundled/knowledge-graph/server/diagnose.ts +483 -0
  111. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb-dev.yml +146 -0
  112. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-falkordb.yml +151 -0
  113. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev-local.yml +161 -0
  114. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j-dev.yml +161 -0
  115. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-neo4j.yml +169 -0
  116. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-production.yml +128 -0
  117. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose-test.yml +10 -0
  118. package/.deepquark/skills/bundled/knowledge-graph/server/docker-compose.yml +84 -0
  119. package/.deepquark/skills/bundled/knowledge-graph/server/entrypoint.sh +40 -0
  120. package/.deepquark/skills/bundled/knowledge-graph/server/install.ts +2054 -0
  121. package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-falkordb.yml +78 -0
  122. package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose-neo4j.yml +88 -0
  123. package/.deepquark/skills/bundled/knowledge-graph/server/podman-compose.yml +83 -0
  124. package/.deepquark/skills/bundled/knowledge-graph/server/test-all-llms-mcp.ts +387 -0
  125. package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-models.ts +201 -0
  126. package/.deepquark/skills/bundled/knowledge-graph/server/test-embedding-providers.ts +641 -0
  127. package/.deepquark/skills/bundled/knowledge-graph/server/test-graphiti-model.ts +217 -0
  128. package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-correct.ts +141 -0
  129. package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-llms-mcp.ts +386 -0
  130. package/.deepquark/skills/bundled/knowledge-graph/server/test-grok-models.ts +173 -0
  131. package/.deepquark/skills/bundled/knowledge-graph/server/test-llama-extraction.ts +188 -0
  132. package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-final.ts +240 -0
  133. package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-live.ts +187 -0
  134. package/.deepquark/skills/bundled/knowledge-graph/server/test-mcp-session.ts +127 -0
  135. package/.deepquark/skills/bundled/knowledge-graph/server/test-model-combinations.ts +316 -0
  136. package/.deepquark/skills/bundled/knowledge-graph/server/test-ollama-models.ts +228 -0
  137. package/.deepquark/skills/bundled/knowledge-graph/server/test-openrouter-models.ts +460 -0
  138. package/.deepquark/skills/bundled/knowledge-graph/server/test-real-life-mcp.ts +311 -0
  139. package/.deepquark/skills/bundled/knowledge-graph/server/test-search-debug.ts +199 -0
  140. package/.deepquark/skills/bundled/knowledge-graph/tools/Install.md +104 -0
  141. package/.deepquark/skills/bundled/knowledge-graph/tools/README.md +120 -0
  142. package/.deepquark/skills/bundled/knowledge-graph/tools/knowledge-cli.ts +996 -0
  143. package/.deepquark/skills/bundled/knowledge-graph/tools/server-cli.ts +531 -0
  144. package/.deepquark/skills/bundled/knowledge-graph/workflows/BulkImport.md +514 -0
  145. package/.deepquark/skills/bundled/knowledge-graph/workflows/CaptureEpisode.md +242 -0
  146. package/.deepquark/skills/bundled/knowledge-graph/workflows/ClearGraph.md +392 -0
  147. package/.deepquark/skills/bundled/knowledge-graph/workflows/GetRecent.md +352 -0
  148. package/.deepquark/skills/bundled/knowledge-graph/workflows/GetStatus.md +373 -0
  149. package/.deepquark/skills/bundled/knowledge-graph/workflows/HealthReport.md +212 -0
  150. package/.deepquark/skills/bundled/knowledge-graph/workflows/InvestigateEntity.md +142 -0
  151. package/.deepquark/skills/bundled/knowledge-graph/workflows/OntologyManagement.md +201 -0
  152. package/.deepquark/skills/bundled/knowledge-graph/workflows/RunMaintenance.md +302 -0
  153. package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchByDate.md +255 -0
  154. package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchFacts.md +382 -0
  155. package/.deepquark/skills/bundled/knowledge-graph/workflows/SearchKnowledge.md +374 -0
  156. package/.deepquark/skills/bundled/knowledge-graph/workflows/StixImport.md +212 -0
  157. package/.deepquark/skills/bundled/pdf/LICENSE.txt +30 -0
  158. package/.deepquark/skills/bundled/pdf/SKILL.md +314 -0
  159. package/.deepquark/skills/bundled/pdf/forms.md +294 -0
  160. package/.deepquark/skills/bundled/pdf/reference.md +612 -0
  161. package/.deepquark/skills/bundled/pdf/scripts/check_bounding_boxes.py +65 -0
  162. package/.deepquark/skills/bundled/pdf/scripts/check_fillable_fields.py +11 -0
  163. package/.deepquark/skills/bundled/pdf/scripts/convert_pdf_to_images.py +33 -0
  164. package/.deepquark/skills/bundled/pdf/scripts/create_validation_image.py +37 -0
  165. package/.deepquark/skills/bundled/pdf/scripts/extract_form_field_info.py +122 -0
  166. package/.deepquark/skills/bundled/pdf/scripts/extract_form_structure.py +115 -0
  167. package/.deepquark/skills/bundled/pdf/scripts/fill_fillable_fields.py +98 -0
  168. package/.deepquark/skills/bundled/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  169. package/.deepquark/skills/bundled/perplexity-search/SKILL.md +447 -0
  170. package/.deepquark/skills/bundled/perplexity-search/assets/.env.example +16 -0
  171. package/.deepquark/skills/bundled/perplexity-search/references/model_comparison.md +386 -0
  172. package/.deepquark/skills/bundled/perplexity-search/references/openrouter_setup.md +454 -0
  173. package/.deepquark/skills/bundled/perplexity-search/references/search_strategies.md +258 -0
  174. package/.deepquark/skills/bundled/perplexity-search/scripts/perplexity_search.py +277 -0
  175. package/.deepquark/skills/bundled/perplexity-search/scripts/setup_env.py +171 -0
  176. package/.deepquark/skills/bundled/pptx/LICENSE.txt +30 -0
  177. package/.deepquark/skills/bundled/pptx/SKILL.md +232 -0
  178. package/.deepquark/skills/bundled/pptx/editing.md +205 -0
  179. package/.deepquark/skills/bundled/pptx/pptxgenjs.md +420 -0
  180. package/.deepquark/skills/bundled/pptx/scripts/__init__.py +0 -0
  181. package/.deepquark/skills/bundled/pptx/scripts/add_slide.py +195 -0
  182. package/.deepquark/skills/bundled/pptx/scripts/clean.py +286 -0
  183. package/.deepquark/skills/bundled/pptx/scripts/office/helpers/__init__.py +0 -0
  184. package/.deepquark/skills/bundled/pptx/scripts/office/helpers/merge_runs.py +199 -0
  185. package/.deepquark/skills/bundled/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
  186. package/.deepquark/skills/bundled/pptx/scripts/office/pack.py +159 -0
  187. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  188. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  189. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  190. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  191. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  192. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  193. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  194. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  195. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  196. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  197. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  198. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  199. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  200. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  201. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  202. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  203. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  204. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  205. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  206. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  207. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  208. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  209. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  210. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  211. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  212. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  213. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  214. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  215. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  216. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  217. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  218. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  219. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  220. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  221. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  222. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  223. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  224. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  225. package/.deepquark/skills/bundled/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  226. package/.deepquark/skills/bundled/pptx/scripts/office/soffice.py +183 -0
  227. package/.deepquark/skills/bundled/pptx/scripts/office/unpack.py +132 -0
  228. package/.deepquark/skills/bundled/pptx/scripts/office/validate.py +111 -0
  229. package/.deepquark/skills/bundled/pptx/scripts/office/validators/__init__.py +15 -0
  230. package/.deepquark/skills/bundled/pptx/scripts/office/validators/base.py +847 -0
  231. package/.deepquark/skills/bundled/pptx/scripts/office/validators/docx.py +446 -0
  232. package/.deepquark/skills/bundled/pptx/scripts/office/validators/pptx.py +275 -0
  233. package/.deepquark/skills/bundled/pptx/scripts/office/validators/redlining.py +247 -0
  234. package/.deepquark/skills/bundled/pptx/scripts/thumbnail.py +289 -0
  235. package/.deepquark/skills/bundled/text-to-pdf-automation/SKILL.md +91 -0
  236. package/.deepquark/skills/bundled/web-fetch/SKILL.md +56 -0
  237. package/.deepquark/skills/bundled/web-fetch/scripts/fetch.sh +54 -0
  238. package/.deepquark/skills/bundled/xlsx/LICENSE.txt +30 -0
  239. package/.deepquark/skills/bundled/xlsx/SKILL.md +292 -0
  240. package/.deepquark/skills/bundled/xlsx/scripts/office/helpers/__init__.py +0 -0
  241. package/.deepquark/skills/bundled/xlsx/scripts/office/helpers/merge_runs.py +199 -0
  242. package/.deepquark/skills/bundled/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  243. package/.deepquark/skills/bundled/xlsx/scripts/office/pack.py +159 -0
  244. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  245. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  246. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  247. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  248. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  249. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  250. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  251. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  252. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  253. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  254. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  255. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  256. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  257. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  258. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  259. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  260. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  261. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  262. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  263. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  264. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  265. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  266. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  267. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  268. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  269. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  270. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  271. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  272. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  273. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  274. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  275. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  276. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  277. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  278. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  279. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  280. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  281. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  282. package/.deepquark/skills/bundled/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  283. package/.deepquark/skills/bundled/xlsx/scripts/office/soffice.py +183 -0
  284. package/.deepquark/skills/bundled/xlsx/scripts/office/unpack.py +132 -0
  285. package/.deepquark/skills/bundled/xlsx/scripts/office/validate.py +111 -0
  286. package/.deepquark/skills/bundled/xlsx/scripts/office/validators/__init__.py +15 -0
  287. package/.deepquark/skills/bundled/xlsx/scripts/office/validators/base.py +847 -0
  288. package/.deepquark/skills/bundled/xlsx/scripts/office/validators/docx.py +446 -0
  289. package/.deepquark/skills/bundled/xlsx/scripts/office/validators/pptx.py +275 -0
  290. package/.deepquark/skills/bundled/xlsx/scripts/office/validators/redlining.py +247 -0
  291. package/.deepquark/skills/bundled/xlsx/scripts/recalc.py +184 -0
  292. package/.deepquark/skills/bundled/youtube-downloader/SKILL.md +99 -0
  293. package/.deepquark/skills/bundled/youtube-downloader/scripts/download_video.py +145 -0
  294. package/.deepquark/skills/bundled/youtube-transcribe-skill/SKILL.md +116 -0
  295. package/LICENSE +21 -0
  296. package/bin/deepquark +0 -0
  297. 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);