mira-engine 0.0.0__tar.gz
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.
- mira_engine-0.0.0/.gitignore +5 -0
- mira_engine-0.0.0/LICENSE +11 -0
- mira_engine-0.0.0/PKG-INFO +250 -0
- mira_engine-0.0.0/README.md +192 -0
- mira_engine-0.0.0/bridge/package.json +26 -0
- mira_engine-0.0.0/bridge/src/index.ts +56 -0
- mira_engine-0.0.0/bridge/src/server.ts +155 -0
- mira_engine-0.0.0/bridge/src/types.d.ts +3 -0
- mira_engine-0.0.0/bridge/src/whatsapp.ts +293 -0
- mira_engine-0.0.0/bridge/tsconfig.json +16 -0
- mira_engine-0.0.0/mira_engine/__init__.py +16 -0
- mira_engine-0.0.0/mira_engine/__main__.py +8 -0
- mira_engine-0.0.0/mira_engine/agent/__init__.py +8 -0
- mira_engine-0.0.0/mira_engine/agent/context.py +312 -0
- mira_engine-0.0.0/mira_engine/agent/filesystem.py +255 -0
- mira_engine-0.0.0/mira_engine/agent/hook.py +103 -0
- mira_engine-0.0.0/mira_engine/agent/loop.py +2073 -0
- mira_engine-0.0.0/mira_engine/agent/memory.py +869 -0
- mira_engine-0.0.0/mira_engine/agent/routing.py +456 -0
- mira_engine-0.0.0/mira_engine/agent/runner.py +723 -0
- mira_engine-0.0.0/mira_engine/agent/shell.py +166 -0
- mira_engine-0.0.0/mira_engine/agent/skill_plugins.py +858 -0
- mira_engine-0.0.0/mira_engine/agent/skills.py +438 -0
- mira_engine-0.0.0/mira_engine/agent/subagent.py +258 -0
- mira_engine-0.0.0/mira_engine/agent/tools/__init__.py +27 -0
- mira_engine-0.0.0/mira_engine/agent/tools/base.py +259 -0
- mira_engine-0.0.0/mira_engine/agent/tools/cron.py +218 -0
- mira_engine-0.0.0/mira_engine/agent/tools/filesystem.py +444 -0
- mira_engine-0.0.0/mira_engine/agent/tools/mcp.py +441 -0
- mira_engine-0.0.0/mira_engine/agent/tools/message.py +109 -0
- mira_engine-0.0.0/mira_engine/agent/tools/registry.py +74 -0
- mira_engine-0.0.0/mira_engine/agent/tools/sandbox.py +55 -0
- mira_engine-0.0.0/mira_engine/agent/tools/schema.py +232 -0
- mira_engine-0.0.0/mira_engine/agent/tools/search.py +555 -0
- mira_engine-0.0.0/mira_engine/agent/tools/shell.py +282 -0
- mira_engine-0.0.0/mira_engine/agent/tools/spawn.py +63 -0
- mira_engine-0.0.0/mira_engine/agent/tools/web.py +337 -0
- mira_engine-0.0.0/mira_engine/api/__init__.py +1 -0
- mira_engine-0.0.0/mira_engine/api/server.py +195 -0
- mira_engine-0.0.0/mira_engine/bus/__init__.py +6 -0
- mira_engine-0.0.0/mira_engine/bus/events.py +38 -0
- mira_engine-0.0.0/mira_engine/bus/queue.py +44 -0
- mira_engine-0.0.0/mira_engine/channels/__init__.py +6 -0
- mira_engine-0.0.0/mira_engine/channels/base.py +138 -0
- mira_engine-0.0.0/mira_engine/channels/dingtalk.py +550 -0
- mira_engine-0.0.0/mira_engine/channels/discord.py +376 -0
- mira_engine-0.0.0/mira_engine/channels/email.py +477 -0
- mira_engine-0.0.0/mira_engine/channels/feishu.py +1421 -0
- mira_engine-0.0.0/mira_engine/channels/manager.py +275 -0
- mira_engine-0.0.0/mira_engine/channels/matrix.py +783 -0
- mira_engine-0.0.0/mira_engine/channels/mochat.py +895 -0
- mira_engine-0.0.0/mira_engine/channels/qq.py +226 -0
- mira_engine-0.0.0/mira_engine/channels/registry.py +71 -0
- mira_engine-0.0.0/mira_engine/channels/slack.py +300 -0
- mira_engine-0.0.0/mira_engine/channels/telegram.py +929 -0
- mira_engine-0.0.0/mira_engine/channels/web.py +2083 -0
- mira_engine-0.0.0/mira_engine/channels/web_assets/AGENTS_UI.md +158 -0
- mira_engine-0.0.0/mira_engine/channels/web_assets/SKILL_UI.md +181 -0
- mira_engine-0.0.0/mira_engine/channels/wecom.py +371 -0
- mira_engine-0.0.0/mira_engine/channels/weixin.py +1380 -0
- mira_engine-0.0.0/mira_engine/channels/whatsapp.py +280 -0
- mira_engine-0.0.0/mira_engine/cli/__init__.py +1 -0
- mira_engine-0.0.0/mira_engine/cli/agent_service.py +722 -0
- mira_engine-0.0.0/mira_engine/cli/commands.py +1615 -0
- mira_engine-0.0.0/mira_engine/cli/models.py +31 -0
- mira_engine-0.0.0/mira_engine/cli/onboard.py +1094 -0
- mira_engine-0.0.0/mira_engine/cli/stream.py +132 -0
- mira_engine-0.0.0/mira_engine/command/__init__.py +11 -0
- mira_engine-0.0.0/mira_engine/command/builtin.py +344 -0
- mira_engine-0.0.0/mira_engine/command/router.py +84 -0
- mira_engine-0.0.0/mira_engine/config/__init__.py +30 -0
- mira_engine-0.0.0/mira_engine/config/loader.py +129 -0
- mira_engine-0.0.0/mira_engine/config/paths.py +66 -0
- mira_engine-0.0.0/mira_engine/config/schema.py +626 -0
- mira_engine-0.0.0/mira_engine/cron/__init__.py +6 -0
- mira_engine-0.0.0/mira_engine/cron/service.py +455 -0
- mira_engine-0.0.0/mira_engine/cron/types.py +70 -0
- mira_engine-0.0.0/mira_engine/heartbeat/__init__.py +5 -0
- mira_engine-0.0.0/mira_engine/heartbeat/service.py +184 -0
- mira_engine-0.0.0/mira_engine/mira_engine.py +136 -0
- mira_engine-0.0.0/mira_engine/providers/__init__.py +39 -0
- mira_engine-0.0.0/mira_engine/providers/anthropic_provider.py +536 -0
- mira_engine-0.0.0/mira_engine/providers/azure_openai_provider.py +193 -0
- mira_engine-0.0.0/mira_engine/providers/base.py +651 -0
- mira_engine-0.0.0/mira_engine/providers/custom_provider.py +74 -0
- mira_engine-0.0.0/mira_engine/providers/factory.py +74 -0
- mira_engine-0.0.0/mira_engine/providers/github_copilot_provider.py +257 -0
- mira_engine-0.0.0/mira_engine/providers/litellm_provider.py +341 -0
- mira_engine-0.0.0/mira_engine/providers/openai_codex_provider.py +330 -0
- mira_engine-0.0.0/mira_engine/providers/openai_compat_provider.py +936 -0
- mira_engine-0.0.0/mira_engine/providers/openai_responses/__init__.py +29 -0
- mira_engine-0.0.0/mira_engine/providers/openai_responses/converters.py +110 -0
- mira_engine-0.0.0/mira_engine/providers/openai_responses/parsing.py +297 -0
- mira_engine-0.0.0/mira_engine/providers/registry.py +594 -0
- mira_engine-0.0.0/mira_engine/providers/transcription.py +64 -0
- mira_engine-0.0.0/mira_engine/security/__init__.py +1 -0
- mira_engine-0.0.0/mira_engine/security/network.py +120 -0
- mira_engine-0.0.0/mira_engine/session/__init__.py +5 -0
- mira_engine-0.0.0/mira_engine/session/manager.py +518 -0
- mira_engine-0.0.0/mira_engine/skills/README.md +31 -0
- mira_engine-0.0.0/mira_engine/skills/clawhub/SKILL.md +53 -0
- mira_engine-0.0.0/mira_engine/skills/cron/SKILL.md +57 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/LICENSE.txt +30 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/SKILL.md +590 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/__init__.py +1 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/accept_changes.py +135 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/comment.py +318 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/helpers/__init__.py +0 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/helpers/merge_runs.py +199 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/pack.py +159 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/mce/mc.xsd +75 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/soffice.py +183 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/unpack.py +132 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/validate.py +111 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/validators/__init__.py +15 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/validators/base.py +847 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/validators/docx.py +446 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/validators/pptx.py +275 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/office/validators/redlining.py +247 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/templates/comments.xml +3 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/templates/commentsExtended.xml +3 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/templates/commentsExtensible.xml +3 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/templates/commentsIds.xml +3 -0
- mira_engine-0.0.0/mira_engine/skills/documents/docx/scripts/templates/people.xml +3 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/LICENSE.txt +30 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/SKILL.md +314 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/forms.md +294 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/reference.md +612 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/scripts/check_bounding_boxes.py +65 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/scripts/check_fillable_fields.py +11 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/scripts/convert_pdf_to_images.py +33 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/scripts/create_validation_image.py +37 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/scripts/extract_form_field_info.py +122 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/scripts/extract_form_structure.py +115 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/scripts/fill_fillable_fields.py +98 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/LICENSE.txt +30 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/SKILL.md +294 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/forms.md +205 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/reference.md +612 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/scripts/check_bounding_boxes.py +70 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/scripts/check_bounding_boxes_test.py +226 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/scripts/check_fillable_fields.py +12 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/scripts/convert_pdf_to_images.py +35 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/scripts/create_validation_image.py +41 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/scripts/extract_form_field_info.py +152 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/scripts/fill_fillable_fields.py +114 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pdf-anthropic/scripts/fill_pdf_form_with_annotations.py +108 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/LICENSE.txt +30 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/SKILL.md +232 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/editing.md +205 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/pptxgenjs.md +420 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/__init__.py +0 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/add_slide.py +195 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/clean.py +286 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/helpers/__init__.py +0 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/helpers/merge_runs.py +199 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/pack.py +159 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/soffice.py +183 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/unpack.py +132 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/validate.py +111 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/validators/__init__.py +15 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/validators/base.py +847 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/validators/docx.py +446 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/validators/pptx.py +275 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/office/validators/redlining.py +247 -0
- mira_engine-0.0.0/mira_engine/skills/documents/pptx/scripts/thumbnail.py +289 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/LICENSE.txt +30 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/SKILL.md +292 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/helpers/__init__.py +0 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/pack.py +159 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/soffice.py +183 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/unpack.py +132 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/validate.py +111 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/validators/__init__.py +15 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/validators/base.py +847 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/validators/docx.py +446 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/validators/pptx.py +275 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/office/validators/redlining.py +247 -0
- mira_engine-0.0.0/mira_engine/skills/documents/xlsx/scripts/recalc.py +184 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/LICENSE.txt +202 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/SKILL.md +479 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/agents/analyzer.md +274 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/agents/comparator.md +202 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/agents/grader.md +223 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/assets/eval_review.html +146 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/eval-viewer/generate_review.py +471 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/eval-viewer/viewer.html +1325 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/references/schemas.md +430 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/scripts/__init__.py +0 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/scripts/aggregate_benchmark.py +401 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/scripts/generate_report.py +326 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/scripts/improve_description.py +248 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/scripts/package_skill.py +136 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/scripts/quick_validate.py +103 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/scripts/run_eval.py +310 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/scripts/run_loop.py +332 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/skill-creator/scripts/utils.py +47 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/task_plan/SKILL.md +69 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/test-driven-development/SKILL.md +371 -0
- mira_engine-0.0.0/mira_engine/skills/engineering/test-driven-development/testing-anti-patterns.md +299 -0
- mira_engine-0.0.0/mira_engine/skills/github/SKILL.md +48 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/dicom2nifti/SKILL.md +102 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/dicom2nifti/references/conversion_logic.md +27 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/dicom2nifti/references/troubleshooting_conversions.md +34 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/dicom2nifti/scripts/batch_convert.py +43 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-image-dl-pipeline/SKILL.md +35 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-image-dl-pipeline/agents/agent_0_planning.md +66 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-image-dl-pipeline/agents/agent_1_data_preprocessing.md +89 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-image-dl-pipeline/agents/agent_2_architecture.md +61 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-image-dl-pipeline/agents/agent_3_training.md +73 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-image-dl-pipeline/agents/agent_4_testing.md +50 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-image-dl-pipeline/scripts/templates/dataset_index_template.json +30 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-image-dl-pipeline/scripts/templates/pipeline_plan_template.yaml +65 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-image-dl-pipeline/scripts/templates/testing_report_template.md +34 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-imaging-review/SKILL.md +170 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-imaging-review/references/DOMAINS.md +171 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-imaging-review/references/MCP_SETUP.md +122 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-imaging-review/references/QUALITY_CHECKLIST.md +88 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-imaging-review/references/TEMPLATES.md +216 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/medical-imaging-review/references/WORKFLOW.md +166 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/monai/SKILL.md +26 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/monai/references/datasets.md +13 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/monai/references/inferers.md +21 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/monai/references/losses_and_metrics.md +13 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/monai/references/networks.md +13 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/monai/references/transforms.md +14 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/monai/scripts/template_dataset.py +41 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/monai/scripts/template_training_pipeline.py +71 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/monai/scripts/template_transforms.py +62 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/nibabel/SKILL.md +107 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/nibabel/references/affine_transformations.md +62 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/nibabel/references/nifti_format.md +55 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/nibabel/scripts/basic_operations.py +53 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/pydicom/SKILL.md +428 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/pydicom/references/common_tags.md +228 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/pydicom/references/transfer_syntaxes.md +352 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/pydicom/scripts/anonymize_dicom.py +137 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/pydicom/scripts/dicom_to_image.py +172 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/pydicom/scripts/extract_metadata.py +173 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/pyradiomics/SKILL.md +132 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/pyradiomics/references/configuration.md +70 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/pyradiomics/references/feature-extraction.md +60 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/pyradiomics/references/troubleshooting.md +44 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/radiomics/SKILL.md +32 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/radiomics/agents/agent_0_planning.md +28 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/radiomics/agents/agent_1_data_curation.md +8 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/radiomics/agents/agent_2_feature_extraction.md +8 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/radiomics/agents/agent_3_feature_selection.md +9 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/radiomics/agents/agent_4_modeling_testing.md +8 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/radiomics/references/feature_extraction.md +13 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/radiomics/scripts/batch_extract.py +57 -0
- mira_engine-0.0.0/mira_engine/skills/medical-imaging/radiomics/scripts/templates/radiomics_plan_template.yaml +25 -0
- mira_engine-0.0.0/mira_engine/skills/memory/SKILL.md +36 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-learn/SKILL.md +515 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-learn/references/model_evaluation.md +592 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-learn/references/pipelines_and_composition.md +612 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-learn/references/preprocessing.md +606 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-learn/references/quick_reference.md +433 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-learn/references/supervised_learning.md +378 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-learn/references/unsupervised_learning.md +505 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-learn/scripts/classification_pipeline.py +257 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-learn/scripts/clustering_analysis.py +386 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-survival/SKILL.md +393 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-survival/references/competing-risks.md +397 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-survival/references/cox-models.md +182 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-survival/references/data-handling.md +494 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-survival/references/ensemble-models.md +327 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-survival/references/evaluation-metrics.md +378 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/scikit-survival/references/svm-models.md +411 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/statistical-analysis/SKILL.md +626 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/statistical-analysis/references/assumptions_and_diagnostics.md +369 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/statistical-analysis/references/bayesian_statistics.md +661 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/statistical-analysis/references/effect_sizes_and_power.md +581 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/statistical-analysis/references/reporting_standards.md +469 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/statistical-analysis/references/test_selection_guide.md +129 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/statistical-analysis/scripts/assumption_checks.py +539 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/survival-analysis/SKILL.md +32 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/survival-analysis/agents/agent_0_planning.md +29 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/survival-analysis/agents/agent_1_data_preprocessing.md +12 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/survival-analysis/agents/agent_2_km_analysis.md +8 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/survival-analysis/agents/agent_3_modeling.md +11 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/survival-analysis/agents/agent_4_evaluation.md +8 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/survival-analysis/references/survival_math.md +17 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/survival-analysis/scripts/survival_pipeline.py +74 -0
- mira_engine-0.0.0/mira_engine/skills/ml-statistics/survival-analysis/scripts/templates/survival_plan_template.yaml +14 -0
- mira_engine-0.0.0/mira_engine/skills/research/agent-browser/SKILL.md +159 -0
- mira_engine-0.0.0/mira_engine/skills/research/deep-research/SKILL.md +111 -0
- mira_engine-0.0.0/mira_engine/skills/research/find-skills/SKILL.md +133 -0
- mira_engine-0.0.0/mira_engine/skills/research/multi-search-engine/CHANGELOG.md +15 -0
- mira_engine-0.0.0/mira_engine/skills/research/multi-search-engine/CHANNELLOG.md +48 -0
- mira_engine-0.0.0/mira_engine/skills/research/multi-search-engine/SKILL.md +110 -0
- mira_engine-0.0.0/mira_engine/skills/research/multi-search-engine/_meta.json +6 -0
- mira_engine-0.0.0/mira_engine/skills/research/multi-search-engine/config.json +22 -0
- mira_engine-0.0.0/mira_engine/skills/research/multi-search-engine/metadata.json +7 -0
- mira_engine-0.0.0/mira_engine/skills/research/multi-search-engine/references/international-search.md +651 -0
- mira_engine-0.0.0/mira_engine/skills/research/peer-review/SKILL.md +565 -0
- mira_engine-0.0.0/mira_engine/skills/research/peer-review/references/common_issues.md +552 -0
- mira_engine-0.0.0/mira_engine/skills/research/peer-review/references/reporting_standards.md +290 -0
- mira_engine-0.0.0/mira_engine/skills/research/pubmed-search/SKILL.md +103 -0
- mira_engine-0.0.0/mira_engine/skills/research/scientific-method/SKILL.md +300 -0
- mira_engine-0.0.0/mira_engine/skills/skill-creator/SKILL.md +374 -0
- mira_engine-0.0.0/mira_engine/skills/skill-creator/scripts/init_skill.py +378 -0
- mira_engine-0.0.0/mira_engine/skills/skill-creator/scripts/package_skill.py +154 -0
- mira_engine-0.0.0/mira_engine/skills/skill-creator/scripts/quick_validate.py +213 -0
- mira_engine-0.0.0/mira_engine/skills/summarize/SKILL.md +67 -0
- mira_engine-0.0.0/mira_engine/skills/tmux/SKILL.md +121 -0
- mira_engine-0.0.0/mira_engine/skills/tmux/scripts/find-sessions.sh +112 -0
- mira_engine-0.0.0/mira_engine/skills/tmux/scripts/wait-for-text.sh +83 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/matplotlib/SKILL.md +359 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/matplotlib/references/api_reference.md +412 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/matplotlib/references/common_issues.md +563 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/matplotlib/references/plot_types.md +476 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/matplotlib/references/styling_guide.md +589 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/matplotlib/scripts/plot_template.py +401 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/matplotlib/scripts/style_configurator.py +409 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-schematics/SKILL.md +619 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-schematics/references/QUICK_REFERENCE.md +207 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-schematics/references/README.md +327 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-schematics/references/best_practices.md +560 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-schematics/scripts/example_usage.sh +89 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-schematics/scripts/generate_schematic.py +139 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-schematics/scripts/generate_schematic_ai.py +844 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/SKILL.md +1154 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/assets/beamer_template_conference.tex +407 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/assets/beamer_template_defense.tex +906 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/assets/beamer_template_seminar.tex +870 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/assets/powerpoint_design_guide.md +662 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/assets/timing_guidelines.md +597 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/references/beamer_guide.md +1019 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/references/data_visualization_slides.md +708 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/references/presentation_structure.md +642 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/references/slide_design_principles.md +849 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/references/talk_types_guide.md +687 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/references/visual_review_workflow.md +775 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/scripts/generate_slide_image.py +140 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/scripts/generate_slide_image_ai.py +763 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/scripts/pdf_to_images.py +221 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/scripts/slides_to_pdf.py +235 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-slides/scripts/validate_presentation.py +403 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-visualization/SKILL.md +773 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-visualization/assets/color_palettes.py +197 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-visualization/assets/nature.mplstyle +63 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-visualization/assets/presentation.mplstyle +61 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-visualization/assets/publication.mplstyle +68 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-visualization/references/color_palettes.md +348 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-visualization/references/journal_requirements.md +320 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-visualization/references/matplotlib_examples.md +620 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-visualization/references/publication_guidelines.md +205 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-visualization/scripts/figure_export.py +343 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/scientific-visualization/scripts/style_presets.py +416 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/seaborn/SKILL.md +671 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/seaborn/references/examples.md +822 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/seaborn/references/function_reference.md +770 -0
- mira_engine-0.0.0/mira_engine/skills/visualization/seaborn/references/objects_interface.md +964 -0
- mira_engine-0.0.0/mira_engine/skills/weather/SKILL.md +49 -0
- mira_engine-0.0.0/mira_engine/task_plan/__init__.py +15 -0
- mira_engine-0.0.0/mira_engine/task_plan/guardrails.py +928 -0
- mira_engine-0.0.0/mira_engine/templates/AGENTS.md +174 -0
- mira_engine-0.0.0/mira_engine/templates/AGENTS_EG.md +100 -0
- mira_engine-0.0.0/mira_engine/templates/AGENTS_RS.md +146 -0
- mira_engine-0.0.0/mira_engine/templates/HEARTBEAT.md +16 -0
- mira_engine-0.0.0/mira_engine/templates/SOUL.md +53 -0
- mira_engine-0.0.0/mira_engine/templates/TOOLS.md +36 -0
- mira_engine-0.0.0/mira_engine/templates/USER.md +56 -0
- mira_engine-0.0.0/mira_engine/templates/__init__.py +0 -0
- mira_engine-0.0.0/mira_engine/templates/agent/_snippets/untrusted_content.md +2 -0
- mira_engine-0.0.0/mira_engine/templates/agent/consolidator_archive.md +13 -0
- mira_engine-0.0.0/mira_engine/templates/agent/dream_phase1.md +23 -0
- mira_engine-0.0.0/mira_engine/templates/agent/dream_phase2.md +24 -0
- mira_engine-0.0.0/mira_engine/templates/agent/evaluator.md +15 -0
- mira_engine-0.0.0/mira_engine/templates/agent/identity.md +44 -0
- mira_engine-0.0.0/mira_engine/templates/agent/max_iterations_message.md +1 -0
- mira_engine-0.0.0/mira_engine/templates/agent/platform_policy.md +10 -0
- mira_engine-0.0.0/mira_engine/templates/agent/skills_section.md +6 -0
- mira_engine-0.0.0/mira_engine/templates/agent/subagent_announce.md +8 -0
- mira_engine-0.0.0/mira_engine/templates/agent/subagent_system.md +19 -0
- mira_engine-0.0.0/mira_engine/templates/memory/MEMORY.md +23 -0
- mira_engine-0.0.0/mira_engine/templates/memory/__init__.py +0 -0
- mira_engine-0.0.0/mira_engine/utils/__init__.py +5 -0
- mira_engine-0.0.0/mira_engine/utils/env.py +33 -0
- mira_engine-0.0.0/mira_engine/utils/evaluator.py +83 -0
- mira_engine-0.0.0/mira_engine/utils/gitstore.py +264 -0
- mira_engine-0.0.0/mira_engine/utils/helpers.py +477 -0
- mira_engine-0.0.0/mira_engine/utils/migration.py +93 -0
- mira_engine-0.0.0/mira_engine/utils/path.py +107 -0
- mira_engine-0.0.0/mira_engine/utils/prompt_templates.py +35 -0
- mira_engine-0.0.0/mira_engine/utils/restart.py +58 -0
- mira_engine-0.0.0/mira_engine/utils/runtime.py +97 -0
- mira_engine-0.0.0/mira_engine/utils/searchusage.py +168 -0
- mira_engine-0.0.0/mira_engine/utils/tool_hints.py +137 -0
- mira_engine-0.0.0/pyproject.toml +135 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
GNU GENERAL PUBLIC LICENSE
|
|
2
|
+
Version 3, 29 June 2007
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2026 MIRA Intelligence contributors
|
|
5
|
+
|
|
6
|
+
This project is licensed under the GNU General Public License v3.0 or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
You should have received a copy of the GNU General Public License
|
|
10
|
+
along with this program. If not, see:
|
|
11
|
+
https://www.gnu.org/licenses/gpl-3.0.txt
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mira-engine
|
|
3
|
+
Version: 0.0.0
|
|
4
|
+
Summary: A lightweight personal AI assistant framework
|
|
5
|
+
Author: mira contributors
|
|
6
|
+
License: GPL-3.0-or-later
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Keywords: agent,ai,chatbot
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Requires-Python: >=3.11
|
|
15
|
+
Requires-Dist: chardet<6.0.0,>=3.0.2
|
|
16
|
+
Requires-Dist: croniter<7.0.0,>=6.0.0
|
|
17
|
+
Requires-Dist: ddgs<10.0.0,>=9.0.0
|
|
18
|
+
Requires-Dist: dingtalk-stream<1.0.0,>=0.24.0
|
|
19
|
+
Requires-Dist: httpx<1.0.0,>=0.28.0
|
|
20
|
+
Requires-Dist: json-repair<1.0.0,>=0.57.0
|
|
21
|
+
Requires-Dist: lark-oapi<2.0.0,>=1.5.0
|
|
22
|
+
Requires-Dist: litellm<2.0.0,>=1.81.5
|
|
23
|
+
Requires-Dist: loguru<1.0.0,>=0.7.3
|
|
24
|
+
Requires-Dist: mcp<2.0.0,>=1.26.0
|
|
25
|
+
Requires-Dist: msgpack<2.0.0,>=1.1.0
|
|
26
|
+
Requires-Dist: oauth-cli-kit<1.0.0,>=0.1.3
|
|
27
|
+
Requires-Dist: openai>=2.8.0
|
|
28
|
+
Requires-Dist: prompt-toolkit<4.0.0,>=3.0.50
|
|
29
|
+
Requires-Dist: psutil>=6.0.0
|
|
30
|
+
Requires-Dist: pydantic-settings<3.0.0,>=2.12.0
|
|
31
|
+
Requires-Dist: pydantic<3.0.0,>=2.12.0
|
|
32
|
+
Requires-Dist: python-socketio<6.0.0,>=5.16.0
|
|
33
|
+
Requires-Dist: python-socks[asyncio]<3.0.0,>=2.8.0
|
|
34
|
+
Requires-Dist: python-telegram-bot[socks]<23.0,>=22.6
|
|
35
|
+
Requires-Dist: qq-botpy<2.0.0,>=1.2.0
|
|
36
|
+
Requires-Dist: readability-lxml<1.0.0,>=0.8.4
|
|
37
|
+
Requires-Dist: rich<15.0.0,>=14.0.0
|
|
38
|
+
Requires-Dist: slack-sdk<4.0.0,>=3.39.0
|
|
39
|
+
Requires-Dist: slackify-markdown<1.0.0,>=0.2.0
|
|
40
|
+
Requires-Dist: socksio<2.0.0,>=1.0.0
|
|
41
|
+
Requires-Dist: typer<1.0.0,>=0.20.0
|
|
42
|
+
Requires-Dist: websocket-client<2.0.0,>=1.9.0
|
|
43
|
+
Requires-Dist: websockets<17.0,>=16.0
|
|
44
|
+
Provides-Extra: dev
|
|
45
|
+
Requires-Dist: aiohttp<4.0.0,>=3.9.0; extra == 'dev'
|
|
46
|
+
Requires-Dist: matrix-nio[e2e]>=0.25.2; extra == 'dev'
|
|
47
|
+
Requires-Dist: mistune<4.0.0,>=3.0.0; extra == 'dev'
|
|
48
|
+
Requires-Dist: nh3<1.0.0,>=0.2.17; extra == 'dev'
|
|
49
|
+
Requires-Dist: pytest-asyncio<2.0.0,>=1.3.0; extra == 'dev'
|
|
50
|
+
Requires-Dist: pytest-cov>=6.0.0; extra == 'dev'
|
|
51
|
+
Requires-Dist: pytest<10.0.0,>=9.0.0; extra == 'dev'
|
|
52
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
53
|
+
Provides-Extra: matrix
|
|
54
|
+
Requires-Dist: matrix-nio[e2e]>=0.25.2; extra == 'matrix'
|
|
55
|
+
Requires-Dist: mistune<4.0.0,>=3.0.0; extra == 'matrix'
|
|
56
|
+
Requires-Dist: nh3<1.0.0,>=0.2.17; extra == 'matrix'
|
|
57
|
+
Description-Content-Type: text/markdown
|
|
58
|
+
|
|
59
|
+
# <img src="icon.ico" width="40" height="40" align="top"> Mira
|
|
60
|
+
|
|
61
|
+
[](https://github.com/MIRA-Intelligence/mira/actions/workflows/tests.yml)
|
|
62
|
+
[](https://codecov.io/gh/MIRA-Intelligence/mira)
|
|
63
|
+
|
|
64
|
+
An open-source, ultra-lightweight AI assistant tailored specifically for **Medical AI Research**.
|
|
65
|
+
|
|
66
|
+
Powered by an underlying micro-agent framework, Mira is designed to execute complex medical imaging pipelines, from raw DICOM data processing to deep learning tasks, traditional radiomics, and survival analysis.
|
|
67
|
+
|
|
68
|
+
## 🔬 Built-in Medical Skills
|
|
69
|
+
|
|
70
|
+
Mira comes pre-loaded with specialized medical skills:
|
|
71
|
+
1. **`medical-image-dl-pipeline`**: End-to-end deep learning pipeline (classification, segmentation, detection) built on MONAI and PyTorch. Features robust 5-Fold Cross-Validation and early stopping.
|
|
72
|
+
2. **`radiomics`**: High-dimensional radiomic feature extraction using PyRadiomics, combined with LASSO/mRMR feature selection.
|
|
73
|
+
3. **`survival-analysis`**: Time-to-event statistical modeling, Kaplan-Meier curves, and Cox Proportional Hazards models via lifelines.
|
|
74
|
+
|
|
75
|
+
*Mira can also be leveraged for comprehensive literature reviews and academic manuscript writing.*
|
|
76
|
+
|
|
77
|
+
## 🛡️ Core Agent Features
|
|
78
|
+
|
|
79
|
+
Mira goes beyond standard AI wrappers by implementing a robust, production-ready agent architecture:
|
|
80
|
+
- **Intelligent Model Routing**: Dynamically routes sub-tasks, agent reasoning, and tool calls to the most appropriate AI models based on task complexity and context, ensuring optimal performance and cost-efficiency.
|
|
81
|
+
- **Strict Workspace Sandboxing (Read/Write Separation)**: The agent operates within a highly secure, confined workspace directory. Built-in filesystem and shell execution guards actively block path traversals (e.g., `cd ..`, `../`) and unauthorized updates to external paths, guaranteeing the safety of the host system. Crucially, it employs a sophisticated Read/Write separation model—allowing the agent securely to read system-level built-in skills without permitting any unauthorized edits to framework source code.
|
|
82
|
+
|
|
83
|
+
## 🚀 Quick Start
|
|
84
|
+
|
|
85
|
+
**1. Install**
|
|
86
|
+
```bash
|
|
87
|
+
git clone https://github.com/MIRA-Intelligence/mira.git
|
|
88
|
+
cd Mira
|
|
89
|
+
pip install -e .
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**2. Configure**
|
|
93
|
+
Run `mira onboard` to initialize the `config.json` and your workspace (defaults to `~/.mira`).
|
|
94
|
+
```bash
|
|
95
|
+
mira onboard
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Then, configure your model settings and API keys in `~/.mira/config.json`:
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"agents": {
|
|
102
|
+
"defaults": {
|
|
103
|
+
"workspace": "~/.mira/",
|
|
104
|
+
"model": "",
|
|
105
|
+
"provider": "custom",
|
|
106
|
+
"maxTokens": 8192,
|
|
107
|
+
"temperature": 0.6,
|
|
108
|
+
"maxToolIterations": 40,
|
|
109
|
+
"memoryWindow": 100,
|
|
110
|
+
"reasoningEffort": null
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"providers": {
|
|
114
|
+
"custom": {
|
|
115
|
+
"apiKey": "",
|
|
116
|
+
"apiBase": null,
|
|
117
|
+
"extraHeaders": null
|
|
118
|
+
},
|
|
119
|
+
"azureOpenai": {
|
|
120
|
+
"apiKey": "",
|
|
121
|
+
"apiBase": null,
|
|
122
|
+
"extraHeaders": null
|
|
123
|
+
},
|
|
124
|
+
"anthropic": {
|
|
125
|
+
"apiKey": "",
|
|
126
|
+
"apiBase": null,
|
|
127
|
+
"extraHeaders": null
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## 💻 CLI Commands Reference
|
|
134
|
+
|
|
135
|
+
Mira provides a comprehensive CLI for managing your sessions and configurations:
|
|
136
|
+
|
|
137
|
+
- **`mira onboard`**
|
|
138
|
+
Initialize your configuration file and local workspace directory (`~/.mira` by default). This is the first command you should run after installation.
|
|
139
|
+
|
|
140
|
+
- **`mira agent`**
|
|
141
|
+
Start an interactive AI chat session directly in your terminal. You can optionally pass a prompt instantly via the `-m` flag:
|
|
142
|
+
```bash
|
|
143
|
+
mira agent -m "I have 77 MRI Dixon cases. Please set up a 3D classification pipeline to predict expiration vs. inspiration."
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
- **`mira status`**
|
|
147
|
+
Check the current status of your Mira configuration, agent defaults, and workspace environment.
|
|
148
|
+
|
|
149
|
+
- OAuth providers (e.g., `openai-codex`, `github-copilot`) are now configured directly inside `mira onboard`.
|
|
150
|
+
|
|
151
|
+
- **`mira gateway`**
|
|
152
|
+
Launch the background gateway service. This enables external API endpoints and multi-channel traffic.
|
|
153
|
+
|
|
154
|
+
### Local Engine Service CLI
|
|
155
|
+
|
|
156
|
+
For desktop/local deployment workflows, use `mira-engine`:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
mira-engine install-service
|
|
160
|
+
mira-engine start
|
|
161
|
+
mira-engine status
|
|
162
|
+
mira-engine logs
|
|
163
|
+
mira-engine doctor
|
|
164
|
+
mira-engine doctor --export
|
|
165
|
+
mira-engine upgrade --package mira
|
|
166
|
+
mira-engine stop
|
|
167
|
+
mira-engine uninstall-service
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
On macOS, `install-service` registers a user LaunchAgent at:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
~/Library/LaunchAgents/com.projectmira.engine.plist
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
On Linux, `install-service` registers a user systemd unit:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
~/.config/systemd/user/mira-engine.service
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
On Windows, `install-service` registers service name:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
MiraEngine
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Local engine logs and diagnostics:
|
|
189
|
+
|
|
190
|
+
- Logs: `~/.mira/logs/agent-service.log` (+ rotated files)
|
|
191
|
+
- Diagnostics bundles: `~/.mira/runtime/diagnostics/`
|
|
192
|
+
|
|
193
|
+
## 🔗 Release Compatibility Mapping
|
|
194
|
+
|
|
195
|
+
Mira tracks UI/Agent release compatibility in `compatibility.json`.
|
|
196
|
+
|
|
197
|
+
- `release_train`: release window in `YYYY.MM` format
|
|
198
|
+
- `ui`: supported UI minor range (e.g. `0.1.x`)
|
|
199
|
+
- `agent`: supported agent minor range (e.g. `0.1.x`)
|
|
200
|
+
- `api_contract`: API contract version (e.g. `v1`)
|
|
201
|
+
- `min_agent_for_ui`: minimum compatible agent patch version
|
|
202
|
+
|
|
203
|
+
Validate updates locally before opening a PR:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
python scripts/validate_compatibility.py --file compatibility.json
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## 📦 Agent Release Pipeline
|
|
210
|
+
|
|
211
|
+
Tagging `v*` triggers `.github/workflows/agent-release.yml` to:
|
|
212
|
+
|
|
213
|
+
- build/test the project on Linux/macOS/Windows
|
|
214
|
+
- publish `mira` package artifacts (wheel/sdist)
|
|
215
|
+
- build standalone `mira-engine` executables with checksums
|
|
216
|
+
|
|
217
|
+
Use `.github/workflows/release-train.yml` (`workflow_dispatch`) to validate an
|
|
218
|
+
`agent_tag + ui_tag` pair and run smoke checks before announcing a combined release.
|
|
219
|
+
|
|
220
|
+
## 🏗️ Optional Self-hosted Path
|
|
221
|
+
|
|
222
|
+
Docker-related files are in `deploy/`:
|
|
223
|
+
|
|
224
|
+
- `deploy/docker-compose.yml`
|
|
225
|
+
- `deploy/Dockerfile`
|
|
226
|
+
- `deploy/entrypoint.sh`
|
|
227
|
+
- `deploy/.env.example`
|
|
228
|
+
|
|
229
|
+
Compose services include:
|
|
230
|
+
- local build/run services: `mira-gateway`, `mira-api`, `mira-cli`
|
|
231
|
+
- self-hosted release services (profile `self-hosted`): `mira-engine`, `mira-ui`
|
|
232
|
+
|
|
233
|
+
Operator guide:
|
|
234
|
+
|
|
235
|
+
- `docs/self-hosted-docker.md`
|
|
236
|
+
|
|
237
|
+
## 💬 Multi-Channel Deployment (Coming Soon)
|
|
238
|
+
Features to deploy Mira seamlessly to platforms like Telegram, Discord, Feishu, or Slack to assist your research team in real-time are in active development.
|
|
239
|
+
|
|
240
|
+
## 🤝 Contributing / CLA
|
|
241
|
+
|
|
242
|
+
All external contributions require acceptance of the Contributor License Agreement.
|
|
243
|
+
See `CLA.md` for details. By submitting a PR, you confirm acceptance of this CLA.
|
|
244
|
+
|
|
245
|
+
## 🙏 Acknowledgments
|
|
246
|
+
|
|
247
|
+
The foundational CLI framework of Mira is built heavily upon the [mira](https://github.com/MIRA-Intelligence/mira). We sincerely thank the HKUDS team for their excellent open-source contribution to the community.
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
*Developed for researchers, by ECNU SKMR Lab.*
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# <img src="icon.ico" width="40" height="40" align="top"> Mira
|
|
2
|
+
|
|
3
|
+
[](https://github.com/MIRA-Intelligence/mira/actions/workflows/tests.yml)
|
|
4
|
+
[](https://codecov.io/gh/MIRA-Intelligence/mira)
|
|
5
|
+
|
|
6
|
+
An open-source, ultra-lightweight AI assistant tailored specifically for **Medical AI Research**.
|
|
7
|
+
|
|
8
|
+
Powered by an underlying micro-agent framework, Mira is designed to execute complex medical imaging pipelines, from raw DICOM data processing to deep learning tasks, traditional radiomics, and survival analysis.
|
|
9
|
+
|
|
10
|
+
## 🔬 Built-in Medical Skills
|
|
11
|
+
|
|
12
|
+
Mira comes pre-loaded with specialized medical skills:
|
|
13
|
+
1. **`medical-image-dl-pipeline`**: End-to-end deep learning pipeline (classification, segmentation, detection) built on MONAI and PyTorch. Features robust 5-Fold Cross-Validation and early stopping.
|
|
14
|
+
2. **`radiomics`**: High-dimensional radiomic feature extraction using PyRadiomics, combined with LASSO/mRMR feature selection.
|
|
15
|
+
3. **`survival-analysis`**: Time-to-event statistical modeling, Kaplan-Meier curves, and Cox Proportional Hazards models via lifelines.
|
|
16
|
+
|
|
17
|
+
*Mira can also be leveraged for comprehensive literature reviews and academic manuscript writing.*
|
|
18
|
+
|
|
19
|
+
## 🛡️ Core Agent Features
|
|
20
|
+
|
|
21
|
+
Mira goes beyond standard AI wrappers by implementing a robust, production-ready agent architecture:
|
|
22
|
+
- **Intelligent Model Routing**: Dynamically routes sub-tasks, agent reasoning, and tool calls to the most appropriate AI models based on task complexity and context, ensuring optimal performance and cost-efficiency.
|
|
23
|
+
- **Strict Workspace Sandboxing (Read/Write Separation)**: The agent operates within a highly secure, confined workspace directory. Built-in filesystem and shell execution guards actively block path traversals (e.g., `cd ..`, `../`) and unauthorized updates to external paths, guaranteeing the safety of the host system. Crucially, it employs a sophisticated Read/Write separation model—allowing the agent securely to read system-level built-in skills without permitting any unauthorized edits to framework source code.
|
|
24
|
+
|
|
25
|
+
## 🚀 Quick Start
|
|
26
|
+
|
|
27
|
+
**1. Install**
|
|
28
|
+
```bash
|
|
29
|
+
git clone https://github.com/MIRA-Intelligence/mira.git
|
|
30
|
+
cd Mira
|
|
31
|
+
pip install -e .
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**2. Configure**
|
|
35
|
+
Run `mira onboard` to initialize the `config.json` and your workspace (defaults to `~/.mira`).
|
|
36
|
+
```bash
|
|
37
|
+
mira onboard
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Then, configure your model settings and API keys in `~/.mira/config.json`:
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"agents": {
|
|
44
|
+
"defaults": {
|
|
45
|
+
"workspace": "~/.mira/",
|
|
46
|
+
"model": "",
|
|
47
|
+
"provider": "custom",
|
|
48
|
+
"maxTokens": 8192,
|
|
49
|
+
"temperature": 0.6,
|
|
50
|
+
"maxToolIterations": 40,
|
|
51
|
+
"memoryWindow": 100,
|
|
52
|
+
"reasoningEffort": null
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"providers": {
|
|
56
|
+
"custom": {
|
|
57
|
+
"apiKey": "",
|
|
58
|
+
"apiBase": null,
|
|
59
|
+
"extraHeaders": null
|
|
60
|
+
},
|
|
61
|
+
"azureOpenai": {
|
|
62
|
+
"apiKey": "",
|
|
63
|
+
"apiBase": null,
|
|
64
|
+
"extraHeaders": null
|
|
65
|
+
},
|
|
66
|
+
"anthropic": {
|
|
67
|
+
"apiKey": "",
|
|
68
|
+
"apiBase": null,
|
|
69
|
+
"extraHeaders": null
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 💻 CLI Commands Reference
|
|
76
|
+
|
|
77
|
+
Mira provides a comprehensive CLI for managing your sessions and configurations:
|
|
78
|
+
|
|
79
|
+
- **`mira onboard`**
|
|
80
|
+
Initialize your configuration file and local workspace directory (`~/.mira` by default). This is the first command you should run after installation.
|
|
81
|
+
|
|
82
|
+
- **`mira agent`**
|
|
83
|
+
Start an interactive AI chat session directly in your terminal. You can optionally pass a prompt instantly via the `-m` flag:
|
|
84
|
+
```bash
|
|
85
|
+
mira agent -m "I have 77 MRI Dixon cases. Please set up a 3D classification pipeline to predict expiration vs. inspiration."
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
- **`mira status`**
|
|
89
|
+
Check the current status of your Mira configuration, agent defaults, and workspace environment.
|
|
90
|
+
|
|
91
|
+
- OAuth providers (e.g., `openai-codex`, `github-copilot`) are now configured directly inside `mira onboard`.
|
|
92
|
+
|
|
93
|
+
- **`mira gateway`**
|
|
94
|
+
Launch the background gateway service. This enables external API endpoints and multi-channel traffic.
|
|
95
|
+
|
|
96
|
+
### Local Engine Service CLI
|
|
97
|
+
|
|
98
|
+
For desktop/local deployment workflows, use `mira-engine`:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
mira-engine install-service
|
|
102
|
+
mira-engine start
|
|
103
|
+
mira-engine status
|
|
104
|
+
mira-engine logs
|
|
105
|
+
mira-engine doctor
|
|
106
|
+
mira-engine doctor --export
|
|
107
|
+
mira-engine upgrade --package mira
|
|
108
|
+
mira-engine stop
|
|
109
|
+
mira-engine uninstall-service
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
On macOS, `install-service` registers a user LaunchAgent at:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
~/Library/LaunchAgents/com.projectmira.engine.plist
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
On Linux, `install-service` registers a user systemd unit:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
~/.config/systemd/user/mira-engine.service
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
On Windows, `install-service` registers service name:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
MiraEngine
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Local engine logs and diagnostics:
|
|
131
|
+
|
|
132
|
+
- Logs: `~/.mira/logs/agent-service.log` (+ rotated files)
|
|
133
|
+
- Diagnostics bundles: `~/.mira/runtime/diagnostics/`
|
|
134
|
+
|
|
135
|
+
## 🔗 Release Compatibility Mapping
|
|
136
|
+
|
|
137
|
+
Mira tracks UI/Agent release compatibility in `compatibility.json`.
|
|
138
|
+
|
|
139
|
+
- `release_train`: release window in `YYYY.MM` format
|
|
140
|
+
- `ui`: supported UI minor range (e.g. `0.1.x`)
|
|
141
|
+
- `agent`: supported agent minor range (e.g. `0.1.x`)
|
|
142
|
+
- `api_contract`: API contract version (e.g. `v1`)
|
|
143
|
+
- `min_agent_for_ui`: minimum compatible agent patch version
|
|
144
|
+
|
|
145
|
+
Validate updates locally before opening a PR:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
python scripts/validate_compatibility.py --file compatibility.json
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## 📦 Agent Release Pipeline
|
|
152
|
+
|
|
153
|
+
Tagging `v*` triggers `.github/workflows/agent-release.yml` to:
|
|
154
|
+
|
|
155
|
+
- build/test the project on Linux/macOS/Windows
|
|
156
|
+
- publish `mira` package artifacts (wheel/sdist)
|
|
157
|
+
- build standalone `mira-engine` executables with checksums
|
|
158
|
+
|
|
159
|
+
Use `.github/workflows/release-train.yml` (`workflow_dispatch`) to validate an
|
|
160
|
+
`agent_tag + ui_tag` pair and run smoke checks before announcing a combined release.
|
|
161
|
+
|
|
162
|
+
## 🏗️ Optional Self-hosted Path
|
|
163
|
+
|
|
164
|
+
Docker-related files are in `deploy/`:
|
|
165
|
+
|
|
166
|
+
- `deploy/docker-compose.yml`
|
|
167
|
+
- `deploy/Dockerfile`
|
|
168
|
+
- `deploy/entrypoint.sh`
|
|
169
|
+
- `deploy/.env.example`
|
|
170
|
+
|
|
171
|
+
Compose services include:
|
|
172
|
+
- local build/run services: `mira-gateway`, `mira-api`, `mira-cli`
|
|
173
|
+
- self-hosted release services (profile `self-hosted`): `mira-engine`, `mira-ui`
|
|
174
|
+
|
|
175
|
+
Operator guide:
|
|
176
|
+
|
|
177
|
+
- `docs/self-hosted-docker.md`
|
|
178
|
+
|
|
179
|
+
## 💬 Multi-Channel Deployment (Coming Soon)
|
|
180
|
+
Features to deploy Mira seamlessly to platforms like Telegram, Discord, Feishu, or Slack to assist your research team in real-time are in active development.
|
|
181
|
+
|
|
182
|
+
## 🤝 Contributing / CLA
|
|
183
|
+
|
|
184
|
+
All external contributions require acceptance of the Contributor License Agreement.
|
|
185
|
+
See `CLA.md` for details. By submitting a PR, you confirm acceptance of this CLA.
|
|
186
|
+
|
|
187
|
+
## 🙏 Acknowledgments
|
|
188
|
+
|
|
189
|
+
The foundational CLI framework of Mira is built heavily upon the [mira](https://github.com/MIRA-Intelligence/mira). We sincerely thank the HKUDS team for their excellent open-source contribution to the community.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
*Developed for researchers, by ECNU SKMR Lab.*
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mira-whatsapp-bridge",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "WhatsApp bridge for mira using Baileys",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"start": "node dist/index.js",
|
|
10
|
+
"dev": "tsc && node dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@whiskeysockets/baileys": "7.0.0-rc.9",
|
|
14
|
+
"ws": "^8.17.1",
|
|
15
|
+
"qrcode-terminal": "^0.12.0",
|
|
16
|
+
"pino": "^9.0.0"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/node": "^20.14.0",
|
|
20
|
+
"@types/ws": "^8.5.10",
|
|
21
|
+
"typescript": "^5.4.0"
|
|
22
|
+
},
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=20.0.0"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* mira WhatsApp Bridge
|
|
4
|
+
*
|
|
5
|
+
* This bridge connects WhatsApp Web to mira's Python backend
|
|
6
|
+
* via WebSocket. It handles authentication, message forwarding,
|
|
7
|
+
* and reconnection logic.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* npm run build && npm start
|
|
11
|
+
*
|
|
12
|
+
* Or with custom settings:
|
|
13
|
+
* BRIDGE_PORT=3001 AUTH_DIR=~/.mira/whatsapp npm start
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
// Polyfill crypto for Baileys in ESM
|
|
17
|
+
import { webcrypto } from 'crypto';
|
|
18
|
+
if (!globalThis.crypto) {
|
|
19
|
+
(globalThis as any).crypto = webcrypto;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
import { BridgeServer } from './server.js';
|
|
23
|
+
import { homedir } from 'os';
|
|
24
|
+
import { join } from 'path';
|
|
25
|
+
|
|
26
|
+
const PORT = parseInt(process.env.BRIDGE_PORT || '3001', 10);
|
|
27
|
+
const AUTH_DIR = process.env.AUTH_DIR || join(homedir(), '.mira', 'whatsapp-auth');
|
|
28
|
+
const TOKEN = process.env.BRIDGE_TOKEN?.trim();
|
|
29
|
+
|
|
30
|
+
if (!TOKEN) {
|
|
31
|
+
console.error('BRIDGE_TOKEN is required. Start the bridge via mira so it can provision a local secret automatically.');
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
console.log('🐈 mira WhatsApp Bridge');
|
|
36
|
+
console.log('========================\n');
|
|
37
|
+
|
|
38
|
+
const server = new BridgeServer(PORT, AUTH_DIR, TOKEN);
|
|
39
|
+
|
|
40
|
+
// Handle graceful shutdown
|
|
41
|
+
process.on('SIGINT', async () => {
|
|
42
|
+
console.log('\n\nShutting down...');
|
|
43
|
+
await server.stop();
|
|
44
|
+
process.exit(0);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
process.on('SIGTERM', async () => {
|
|
48
|
+
await server.stop();
|
|
49
|
+
process.exit(0);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// Start the server
|
|
53
|
+
server.start().catch((error) => {
|
|
54
|
+
console.error('Failed to start bridge:', error);
|
|
55
|
+
process.exit(1);
|
|
56
|
+
});
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSocket server for Python-Node.js bridge communication.
|
|
3
|
+
* Security: binds to 127.0.0.1 only; requires BRIDGE_TOKEN auth; rejects browser Origin headers.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { WebSocketServer, WebSocket } from 'ws';
|
|
7
|
+
import { WhatsAppClient, InboundMessage } from './whatsapp.js';
|
|
8
|
+
|
|
9
|
+
interface SendCommand {
|
|
10
|
+
type: 'send';
|
|
11
|
+
to: string;
|
|
12
|
+
text: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface SendMediaCommand {
|
|
16
|
+
type: 'send_media';
|
|
17
|
+
to: string;
|
|
18
|
+
filePath: string;
|
|
19
|
+
mimetype: string;
|
|
20
|
+
caption?: string;
|
|
21
|
+
fileName?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
type BridgeCommand = SendCommand | SendMediaCommand;
|
|
25
|
+
|
|
26
|
+
interface BridgeMessage {
|
|
27
|
+
type: 'message' | 'status' | 'qr' | 'error';
|
|
28
|
+
[key: string]: unknown;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export class BridgeServer {
|
|
32
|
+
private wss: WebSocketServer | null = null;
|
|
33
|
+
private wa: WhatsAppClient | null = null;
|
|
34
|
+
private clients: Set<WebSocket> = new Set();
|
|
35
|
+
|
|
36
|
+
constructor(private port: number, private authDir: string, private token: string) {}
|
|
37
|
+
|
|
38
|
+
async start(): Promise<void> {
|
|
39
|
+
if (!this.token.trim()) {
|
|
40
|
+
throw new Error('BRIDGE_TOKEN is required');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Bind to localhost only — never expose to external network
|
|
44
|
+
this.wss = new WebSocketServer({
|
|
45
|
+
host: '127.0.0.1',
|
|
46
|
+
port: this.port,
|
|
47
|
+
verifyClient: (info, done) => {
|
|
48
|
+
const origin = info.origin || info.req.headers.origin;
|
|
49
|
+
if (origin) {
|
|
50
|
+
console.warn(`Rejected WebSocket connection with Origin header: ${origin}`);
|
|
51
|
+
done(false, 403, 'Browser-originated WebSocket connections are not allowed');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
done(true);
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
console.log(`🌉 Bridge server listening on ws://127.0.0.1:${this.port}`);
|
|
58
|
+
console.log('🔒 Token authentication enabled');
|
|
59
|
+
|
|
60
|
+
// Initialize WhatsApp client
|
|
61
|
+
this.wa = new WhatsAppClient({
|
|
62
|
+
authDir: this.authDir,
|
|
63
|
+
onMessage: (msg) => this.broadcast({ type: 'message', ...msg }),
|
|
64
|
+
onQR: (qr) => this.broadcast({ type: 'qr', qr }),
|
|
65
|
+
onStatus: (status) => this.broadcast({ type: 'status', status }),
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// Handle WebSocket connections
|
|
69
|
+
this.wss.on('connection', (ws) => {
|
|
70
|
+
// Require auth handshake as first message
|
|
71
|
+
const timeout = setTimeout(() => ws.close(4001, 'Auth timeout'), 5000);
|
|
72
|
+
ws.once('message', (data) => {
|
|
73
|
+
clearTimeout(timeout);
|
|
74
|
+
try {
|
|
75
|
+
const msg = JSON.parse(data.toString());
|
|
76
|
+
if (msg.type === 'auth' && msg.token === this.token) {
|
|
77
|
+
console.log('🔗 Python client authenticated');
|
|
78
|
+
this.setupClient(ws);
|
|
79
|
+
} else {
|
|
80
|
+
ws.close(4003, 'Invalid token');
|
|
81
|
+
}
|
|
82
|
+
} catch {
|
|
83
|
+
ws.close(4003, 'Invalid auth message');
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// Connect to WhatsApp
|
|
89
|
+
await this.wa.connect();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
private setupClient(ws: WebSocket): void {
|
|
93
|
+
this.clients.add(ws);
|
|
94
|
+
|
|
95
|
+
ws.on('message', async (data) => {
|
|
96
|
+
try {
|
|
97
|
+
const cmd = JSON.parse(data.toString()) as BridgeCommand;
|
|
98
|
+
await this.handleCommand(cmd);
|
|
99
|
+
ws.send(JSON.stringify({ type: 'sent', to: cmd.to }));
|
|
100
|
+
} catch (error) {
|
|
101
|
+
console.error('Error handling command:', error);
|
|
102
|
+
ws.send(JSON.stringify({ type: 'error', error: String(error) }));
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
ws.on('close', () => {
|
|
107
|
+
console.log('🔌 Python client disconnected');
|
|
108
|
+
this.clients.delete(ws);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
ws.on('error', (error) => {
|
|
112
|
+
console.error('WebSocket error:', error);
|
|
113
|
+
this.clients.delete(ws);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
private async handleCommand(cmd: BridgeCommand): Promise<void> {
|
|
118
|
+
if (!this.wa) return;
|
|
119
|
+
|
|
120
|
+
if (cmd.type === 'send') {
|
|
121
|
+
await this.wa.sendMessage(cmd.to, cmd.text);
|
|
122
|
+
} else if (cmd.type === 'send_media') {
|
|
123
|
+
await this.wa.sendMedia(cmd.to, cmd.filePath, cmd.mimetype, cmd.caption, cmd.fileName);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
private broadcast(msg: BridgeMessage): void {
|
|
128
|
+
const data = JSON.stringify(msg);
|
|
129
|
+
for (const client of this.clients) {
|
|
130
|
+
if (client.readyState === WebSocket.OPEN) {
|
|
131
|
+
client.send(data);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
async stop(): Promise<void> {
|
|
137
|
+
// Close all client connections
|
|
138
|
+
for (const client of this.clients) {
|
|
139
|
+
client.close();
|
|
140
|
+
}
|
|
141
|
+
this.clients.clear();
|
|
142
|
+
|
|
143
|
+
// Close WebSocket server
|
|
144
|
+
if (this.wss) {
|
|
145
|
+
this.wss.close();
|
|
146
|
+
this.wss = null;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Disconnect WhatsApp
|
|
150
|
+
if (this.wa) {
|
|
151
|
+
await this.wa.disconnect();
|
|
152
|
+
this.wa = null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|