minimal-agent 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +148 -0
- package/README.md +287 -0
- package/dist/main.js +4140 -0
- package/package.json +66 -0
- package/skills/algorithmic-art/LICENSE.txt +202 -0
- package/skills/algorithmic-art/SKILL.md +405 -0
- package/skills/algorithmic-art/templates/generator_template.js +223 -0
- package/skills/algorithmic-art/templates/viewer.html +599 -0
- package/skills/batch/SKILL.md +39 -0
- package/skills/canvas-design/LICENSE.txt +202 -0
- package/skills/canvas-design/SKILL.md +130 -0
- package/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/commit/SKILL.md +46 -0
- package/skills/compact/SKILL.md +27 -0
- package/skills/config/SKILL.md +94 -0
- package/skills/diff/SKILL.md +30 -0
- package/skills/docx/LICENSE.txt +30 -0
- package/skills/docx/SKILL.md +660 -0
- package/skills/docx/scripts/__init__.py +1 -0
- package/skills/docx/scripts/accept_changes.py +135 -0
- package/skills/docx/scripts/comment.py +318 -0
- package/skills/docx/scripts/convert_to_docx.py +140 -0
- package/skills/docx/scripts/office/__init__.py +1 -0
- package/skills/docx/scripts/office/helpers/__init__.py +0 -0
- package/skills/docx/scripts/office/helpers/__pycache__/__init__.cpython-314.pyc +0 -0
- package/skills/docx/scripts/office/helpers/__pycache__/merge_runs.cpython-314.pyc +0 -0
- package/skills/docx/scripts/office/helpers/__pycache__/simplify_redlines.cpython-314.pyc +0 -0
- package/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills/docx/scripts/office/pack.py +159 -0
- package/skills/docx/scripts/office/schemas/__init__.py +1 -0
- package/skills/docx/scripts/office/soffice.py +183 -0
- package/skills/docx/scripts/office/unpack.py +132 -0
- package/skills/docx/scripts/office/validate.py +111 -0
- package/skills/docx/scripts/office/validators/__init__.py +15 -0
- package/skills/docx/scripts/office/validators/__pycache__/__init__.cpython-314.pyc +0 -0
- package/skills/docx/scripts/office/validators/__pycache__/base.cpython-314.pyc +0 -0
- package/skills/docx/scripts/office/validators/__pycache__/docx.cpython-314.pyc +0 -0
- package/skills/docx/scripts/office/validators/__pycache__/pptx.cpython-314.pyc +0 -0
- package/skills/docx/scripts/office/validators/__pycache__/redlining.cpython-314.pyc +0 -0
- package/skills/docx/scripts/office/validators/base.py +847 -0
- package/skills/docx/scripts/office/validators/docx.py +446 -0
- package/skills/docx/scripts/office/validators/pptx.py +275 -0
- package/skills/docx/scripts/office/validators/redlining.py +247 -0
- package/skills/docx/scripts/templates/comments.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/docx/scripts/templates/people.xml +3 -0
- package/skills/frontend-design/LICENSE.txt +177 -0
- package/skills/frontend-design/SKILL.md +42 -0
- package/skills/init/SKILL.md +238 -0
- package/skills/init/evals/evals.json +28 -0
- package/skills/mcp-builder/LICENSE.txt +202 -0
- package/skills/mcp-builder/SKILL.md +236 -0
- package/skills/mcp-builder/reference/evaluation.md +602 -0
- package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/skills/mcp-builder/scripts/connections.py +151 -0
- package/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/pdf/LICENSE.txt +30 -0
- package/skills/pdf/SKILL.md +314 -0
- package/skills/pdf/forms.md +294 -0
- package/skills/pdf/reference.md +612 -0
- package/skills/pdf/scripts/check_bounding_boxes.py +65 -0
- package/skills/pdf/scripts/check_fillable_fields.py +11 -0
- package/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
- package/skills/pdf/scripts/create_validation_image.py +37 -0
- package/skills/pdf/scripts/extract_form_field_info.py +122 -0
- package/skills/pdf/scripts/extract_form_structure.py +115 -0
- package/skills/pdf/scripts/fill_fillable_fields.py +98 -0
- package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- package/skills/pptx/LICENSE.txt +30 -0
- package/skills/pptx/SKILL.md +232 -0
- package/skills/pptx/editing.md +205 -0
- package/skills/pptx/pptxgenjs.md +420 -0
- package/skills/pptx/scripts/__init__.py +0 -0
- package/skills/pptx/scripts/add_slide.py +195 -0
- package/skills/pptx/scripts/clean.py +286 -0
- package/skills/pptx/scripts/office/helpers/__init__.py +0 -0
- package/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills/pptx/scripts/office/pack.py +159 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/ECMA-376_3rd_edition.zip +1 -0
- package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/README.md +1 -0
- package/skills/pptx/scripts/office/schemas/mce/mce-core.xsd +1 -0
- package/skills/pptx/scripts/office/schemas/mce/mce-override.xsd +1 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/pptx/scripts/office/soffice.py +183 -0
- package/skills/pptx/scripts/office/unpack.py +132 -0
- package/skills/pptx/scripts/office/validate.py +111 -0
- package/skills/pptx/scripts/office/validators/__init__.py +15 -0
- package/skills/pptx/scripts/office/validators/base.py +847 -0
- package/skills/pptx/scripts/office/validators/docx.py +446 -0
- package/skills/pptx/scripts/office/validators/pptx.py +275 -0
- package/skills/pptx/scripts/office/validators/redlining.py +247 -0
- package/skills/pptx/scripts/thumbnail.py +289 -0
- package/skills/simplify/SKILL.md +52 -0
- package/skills/skill-creator/LICENSE.txt +202 -0
- package/skills/skill-creator/SKILL.md +485 -0
- package/skills/skill-creator/agents/analyzer.md +274 -0
- package/skills/skill-creator/agents/comparator.md +202 -0
- package/skills/skill-creator/agents/grader.md +223 -0
- package/skills/skill-creator/assets/eval_review.html +146 -0
- package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/skill-creator/references/schemas.md +430 -0
- package/skills/skill-creator/scripts/__init__.py +0 -0
- package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/skill-creator/scripts/generate_report.py +326 -0
- package/skills/skill-creator/scripts/improve_description.py +247 -0
- package/skills/skill-creator/scripts/package_skill.py +136 -0
- package/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/skills/skill-creator/scripts/run_eval.py +310 -0
- package/skills/skill-creator/scripts/run_loop.py +328 -0
- package/skills/skill-creator/scripts/utils.py +47 -0
- package/skills/theme-factory/LICENSE.txt +202 -0
- package/skills/theme-factory/SKILL.md +59 -0
- package/skills/theme-factory/theme-showcase.pdf +0 -0
- package/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/skills/theme-factory/themes/desert-rose.md +19 -0
- package/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/skills/theme-factory/themes/golden-hour.md +19 -0
- package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/skills/web-artifacts-builder/LICENSE.txt +202 -0
- package/skills/web-artifacts-builder/SKILL.md +79 -0
- package/skills/web-artifacts-builder/scripts/bundle-artifact.sh +53 -0
- package/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills/webapp-testing/LICENSE.txt +202 -0
- package/skills/webapp-testing/SKILL.md +96 -0
- package/skills/webapp-testing/examples/console_logging.py +35 -0
- package/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/webapp-testing/scripts/with_server.py +106 -0
- package/skills/xlsx/LICENSE.txt +30 -0
- package/skills/xlsx/SKILL.md +292 -0
- package/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
- package/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills/xlsx/scripts/office/pack.py +159 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/ECMA-376_3rd_edition.zip +1 -0
- package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/README.md +1 -0
- package/skills/xlsx/scripts/office/schemas/mce/mce-core.xsd +1 -0
- package/skills/xlsx/scripts/office/schemas/mce/mce-override.xsd +1 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/xlsx/scripts/office/soffice.py +183 -0
- package/skills/xlsx/scripts/office/unpack.py +132 -0
- package/skills/xlsx/scripts/office/validate.py +111 -0
- package/skills/xlsx/scripts/office/validators/__init__.py +15 -0
- package/skills/xlsx/scripts/office/validators/base.py +847 -0
- package/skills/xlsx/scripts/office/validators/docx.py +446 -0
- package/skills/xlsx/scripts/office/validators/pptx.py +275 -0
- package/skills/xlsx/scripts/office/validators/redlining.py +247 -0
- package/skills/xlsx/scripts/recalc.py +184 -0
- package/vendor/ripgrep/COPYING +3 -0
- package/vendor/ripgrep/README.md +34 -0
- package/vendor/ripgrep/arm64-darwin/rg +0 -0
- package/vendor/ripgrep/arm64-linux/rg +0 -0
- package/vendor/ripgrep/arm64-win32/rg.exe +0 -0
- package/vendor/ripgrep/x64-darwin/rg +0 -0
- package/vendor/ripgrep/x64-linux/rg +0 -0
- package/vendor/ripgrep/x64-win32/rg.exe +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
Copyright (c) 2026 billsoft
|
|
2
|
+
|
|
3
|
+
Licensed under the PolyForm Noncommercial License 1.0.0.
|
|
4
|
+
|
|
5
|
+
PolyForm Noncommercial License 1.0.0
|
|
6
|
+
====================================
|
|
7
|
+
|
|
8
|
+
<https://polyformproject.org/licenses/noncommercial/1.0.0>
|
|
9
|
+
|
|
10
|
+
Acceptance
|
|
11
|
+
----------
|
|
12
|
+
|
|
13
|
+
In order to get any license under these terms, you must agree to them as
|
|
14
|
+
both strict obligations and conditions to all your licenses.
|
|
15
|
+
|
|
16
|
+
Copyright License
|
|
17
|
+
-----------------
|
|
18
|
+
|
|
19
|
+
The licensor grants you a copyright license for the software to do
|
|
20
|
+
everything you might do with the software that would otherwise infringe
|
|
21
|
+
the licensor's copyright in it for any permitted purpose. However, you
|
|
22
|
+
may only distribute the software according to Distribution License and
|
|
23
|
+
make changes or new works based on the software according to Changes
|
|
24
|
+
and New Works License.
|
|
25
|
+
|
|
26
|
+
Distribution License
|
|
27
|
+
--------------------
|
|
28
|
+
|
|
29
|
+
The licensor grants you an additional copyright license to distribute
|
|
30
|
+
copies of the software. Your license to distribute covers distributing
|
|
31
|
+
the software with changes and new works permitted by Changes and New
|
|
32
|
+
Works License.
|
|
33
|
+
|
|
34
|
+
Notices
|
|
35
|
+
-------
|
|
36
|
+
|
|
37
|
+
You must ensure that anyone who gets a copy of any part of the software
|
|
38
|
+
from you also gets a copy of these terms or the URL for them above, as
|
|
39
|
+
well as copies of any plain-text lines beginning with `Required Notice:`
|
|
40
|
+
that the licensor provided with the software. For example:
|
|
41
|
+
|
|
42
|
+
> Required Notice: Copyright (c) 2026 billsoft
|
|
43
|
+
|
|
44
|
+
Changes and New Works License
|
|
45
|
+
-----------------------------
|
|
46
|
+
|
|
47
|
+
The licensor grants you an additional copyright license to make changes
|
|
48
|
+
and new works based on the software for any permitted purpose.
|
|
49
|
+
|
|
50
|
+
Patent License
|
|
51
|
+
--------------
|
|
52
|
+
|
|
53
|
+
The licensor grants you a patent license for the software that covers
|
|
54
|
+
patent claims the licensor can license, or becomes able to license, that
|
|
55
|
+
you would infringe by using the software.
|
|
56
|
+
|
|
57
|
+
Noncommercial Purposes
|
|
58
|
+
----------------------
|
|
59
|
+
|
|
60
|
+
Any noncommercial purpose is a permitted purpose.
|
|
61
|
+
|
|
62
|
+
Personal Uses
|
|
63
|
+
-------------
|
|
64
|
+
|
|
65
|
+
Personal use for research, experiment, and testing for the benefit of
|
|
66
|
+
public knowledge, personal study, private entertainment, hobby projects,
|
|
67
|
+
amateur pursuits, or religious observance, without any anticipated
|
|
68
|
+
commercial application, is use for a permitted purpose.
|
|
69
|
+
|
|
70
|
+
Noncommercial Organizations
|
|
71
|
+
---------------------------
|
|
72
|
+
|
|
73
|
+
Use by any charitable organization, educational institution, public
|
|
74
|
+
research organization, public safety or health organization,
|
|
75
|
+
environmental protection organization, or government institution is use
|
|
76
|
+
for a permitted purpose regardless of the source of funding or
|
|
77
|
+
obligations resulting from the funding.
|
|
78
|
+
|
|
79
|
+
Fair Use
|
|
80
|
+
--------
|
|
81
|
+
|
|
82
|
+
You may have "fair use" rights for the software under the law. These
|
|
83
|
+
terms do not limit them.
|
|
84
|
+
|
|
85
|
+
No Other Rights
|
|
86
|
+
---------------
|
|
87
|
+
|
|
88
|
+
These terms do not allow you to sublicense or transfer any of your
|
|
89
|
+
licenses to anyone else, or prevent the licensor from granting licenses
|
|
90
|
+
to anyone else. These terms do not imply any other licenses.
|
|
91
|
+
|
|
92
|
+
Patent Defense
|
|
93
|
+
--------------
|
|
94
|
+
|
|
95
|
+
If you make any written claim that the software infringes or contributes
|
|
96
|
+
to infringement of any patent, your patent license for the software
|
|
97
|
+
granted under these terms ends immediately. If your company makes such
|
|
98
|
+
a claim, your patent license ends immediately for work on behalf of
|
|
99
|
+
your company.
|
|
100
|
+
|
|
101
|
+
Violations
|
|
102
|
+
----------
|
|
103
|
+
|
|
104
|
+
The first time you are notified in writing that you have violated any
|
|
105
|
+
of these terms, or done anything with the software not covered by your
|
|
106
|
+
licenses, your licenses can nonetheless continue if you come into full
|
|
107
|
+
compliance with these terms, and take practical steps to correct past
|
|
108
|
+
violations, within 32 days of receiving notice. Otherwise, all your
|
|
109
|
+
licenses end immediately.
|
|
110
|
+
|
|
111
|
+
No Liability
|
|
112
|
+
------------
|
|
113
|
+
|
|
114
|
+
***As far as the law allows, the software comes as is, without any
|
|
115
|
+
warranty or condition, and the licensor will not be liable to you for
|
|
116
|
+
any damages arising out of these terms or the use or nature of the
|
|
117
|
+
software, under any kind of legal claim.***
|
|
118
|
+
|
|
119
|
+
Definitions
|
|
120
|
+
-----------
|
|
121
|
+
|
|
122
|
+
The **licensor** is the individual or entity offering these terms, and
|
|
123
|
+
the **software** is the software the licensor makes available under
|
|
124
|
+
these terms.
|
|
125
|
+
|
|
126
|
+
**You** refers to the individual or entity agreeing to these terms.
|
|
127
|
+
|
|
128
|
+
**Your company** is any legal entity, sole proprietorship, or other
|
|
129
|
+
kind of organization that you work for, plus all organizations that
|
|
130
|
+
have control over, are under the control of, or are under common
|
|
131
|
+
control with that organization. **Control** means ownership of
|
|
132
|
+
substantially all the assets of an entity, or the power to direct its
|
|
133
|
+
management and policies by vote, contract, or otherwise. Control can be
|
|
134
|
+
direct or indirect.
|
|
135
|
+
|
|
136
|
+
**Your licenses** are all the licenses granted to you for the software
|
|
137
|
+
under these terms.
|
|
138
|
+
|
|
139
|
+
**Use** means anything you do with the software requiring one of your
|
|
140
|
+
licenses.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
Required Notice: Copyright (c) 2026 billsoft
|
|
145
|
+
|
|
146
|
+
`vendor/ripgrep/` 内的二进制为上游 ripgrep 项目的原始 MIT / Unlicense
|
|
147
|
+
双重许可,不受本项目 PolyForm Noncommercial License 约束。详见
|
|
148
|
+
`vendor/ripgrep/COPYING`。
|
package/README.md
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
# minimal-agent
|
|
2
|
+
|
|
3
|
+
> 最小化的 AI 编程助手 —— 单对话 · 9 个内置工具 · 自动压缩 · OpenAI 兼容协议 · Ink TUI
|
|
4
|
+
|
|
5
|
+
一个用于**学习和教学**的 Agent 项目,从 [kakadeai](../) 主仓库的 Claude Code 源码中抽取并简化而来,把"一个能调工具、能自动压缩上下文、能流式输出的 agent"在 ~3000 行 TypeScript 内讲清楚。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 特性
|
|
10
|
+
|
|
11
|
+
| 模块 | 说明 |
|
|
12
|
+
|---|---|
|
|
13
|
+
| 🧠 主循环 | `runQuery` 用 AsyncGenerator 把"调 LLM → 跑工具 → 喂回去"串成一条流 |
|
|
14
|
+
| 🔧 内置工具 | Read / Write / Edit / Glob / Grep / Bash / WebSearch / WebFetch / WebBrowser |
|
|
15
|
+
| 📦 自动压缩 | 接近 context window 时自动摘要历史(auto / micro / reactive 三层) |
|
|
16
|
+
| 💾 单上下文 | `~/.minimal-agent/last-context.json` 自动保存/恢复,无 session 概念 |
|
|
17
|
+
| 🎨 双模式 | Ink TUI 交互模式 + `-p` 非交互 CLI 模式(管道友好) |
|
|
18
|
+
| 🌐 多 provider | 走 OpenAI Chat Completions 协议,配 .env 即可切换 MiniMax / DeepSeek / Kimi / OpenAI |
|
|
19
|
+
| 🧰 Skills 系统 | 扫描 `skills/<name>/SKILL.md` frontmatter,按需懒加载完整 prompt |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 系统要求
|
|
24
|
+
|
|
25
|
+
- **Bun ≥ 1.1**(推荐,主运行时);Node.js ≥ 20 需要走 build 流程,见末尾的[发布到 npm](#发布到-npm未来) 章节
|
|
26
|
+
- 一个 OpenAI 兼容的 LLM API(MiniMax / OpenAI / DeepSeek / Kimi / 自建 vLLM 均可)
|
|
27
|
+
- *可选*:[Tavily](https://tavily.com) API key(开启 WebSearch)
|
|
28
|
+
- *可选*:`playwright-core` + chromium(开启 WebBrowser;不装会自动降级到 WebFetch)
|
|
29
|
+
- *无需安装 ripgrep* —— 项目自带 `vendor/ripgrep/` 6 个平台二进制(arm64/x64 × win32/darwin/linux)
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 快速开始
|
|
34
|
+
|
|
35
|
+
支持两种配置方式,**任选其一**即可:
|
|
36
|
+
|
|
37
|
+
### 方式 A:手写 .env(适合开发者 / `-p` 非交互模式)
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# 1. 安装依赖
|
|
41
|
+
bun install
|
|
42
|
+
|
|
43
|
+
# 2. 配置 .env(参考 .env.example)
|
|
44
|
+
cp .env.example .env
|
|
45
|
+
# 编辑 .env 填入 BASE_URL / API_KEY / MODEL
|
|
46
|
+
|
|
47
|
+
# 3. 启动 TUI
|
|
48
|
+
bun run start
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 方式 B:首次启动配置向导(适合零配置上手)
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
bun install
|
|
55
|
+
bun run start # 没检测到任何配置 → 自动弹 Ink 向导
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
向导步骤:选 provider 预设(MiniMax / DeepSeek / OpenAI / Kimi / 自定义)→ 填 baseURL → 填 API key(掩码显示)→ 选 model → 自动做一次连通性测试 → 通过后写入 `~/.minimal-agent/config.json` 并直接进入对话界面。
|
|
59
|
+
|
|
60
|
+
> 测试不通过或中途 ESC 退出 → **不写文件** → 下次启动继续走向导,直到成功为止。
|
|
61
|
+
|
|
62
|
+
### 运行示例
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
bun run src/main.tsx -p "帮我写个 hello world" # 一次性问答
|
|
66
|
+
echo "解释这段代码" | bun run src/main.tsx -p # 管道输入
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 配置优先级
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
process.env > ~/.minimal-agent/config.json > 弹向导
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
env 永远盖过 JSON,**逐字段**生效(可以只用 env 临时覆盖单个字段做调试)。`-p` 模式不会弹向导(没 TTY),缺配置直接 stderr 报错退出。
|
|
76
|
+
|
|
77
|
+
### .env 字段
|
|
78
|
+
|
|
79
|
+
```env
|
|
80
|
+
# 必需
|
|
81
|
+
MINIMAL_AGENT_BASE_URL=https://api.minimax.chat/v1
|
|
82
|
+
MINIMAL_AGENT_API_KEY=your-api-key
|
|
83
|
+
MINIMAL_AGENT_MODEL=MiniMax-M2.7
|
|
84
|
+
|
|
85
|
+
# 可选
|
|
86
|
+
MINIMAL_AGENT_PROVIDER=minimax # 仅作显示用,默认 "env"
|
|
87
|
+
MINIMAL_AGENT_CONTEXT_WINDOW=204800 # 模型上下文窗口,默认 128000
|
|
88
|
+
TAVILY_API_KEY= # 启用 WebSearch
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 重新配置
|
|
92
|
+
|
|
93
|
+
在 TUI 内直接输入 `/config`(不带任何其他内容),LLM 会按 `skills/config/SKILL.md` 流程逐项询问后用 Write 工具更新 `~/.minimal-agent/config.json`,提示重启生效。
|
|
94
|
+
|
|
95
|
+
> `/config` 是 **LLM 驱动的 skill**(同 `/init`),不是硬编码命令(不同于 `/new` / `/compact`)—— 必须**单独输入 `/config`**,带其他内容(如 `/config 帮我看看`)不会触发。
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 命令行参数
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
minimal-agent [选项] [提示...]
|
|
103
|
+
echo "提示" | minimal-agent [选项]
|
|
104
|
+
|
|
105
|
+
选项:
|
|
106
|
+
-p, --print 非交互模式,问答一次后退出
|
|
107
|
+
-v, --verbose 显示工具调用 / 压缩详情
|
|
108
|
+
-h, --help 帮助
|
|
109
|
+
-V, --version 版本号
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
TUI 内部支持:
|
|
113
|
+
|
|
114
|
+
| 输入 | 效果 |
|
|
115
|
+
|---|---|
|
|
116
|
+
| `/new` | 清空历史,重建 system prompt(带最新 skills + 项目指令) |
|
|
117
|
+
| `/compact` | 手动压缩当前对话 |
|
|
118
|
+
| `/config` | 重新配置 LLM provider(LLM 驱动 skill,单独输入才触发) |
|
|
119
|
+
| `Alt+Enter` | 输入框换行(教学/多行 prompt 友好) |
|
|
120
|
+
| `ESC` / `Ctrl+C` | 中断当前任务 |
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 内置工具
|
|
125
|
+
|
|
126
|
+
| 名称 | 用途 | 实现 |
|
|
127
|
+
|---|---|---|
|
|
128
|
+
| `Read` | 读文件(支持 offset / limit / 二进制嗅探) | `node:fs/promises` |
|
|
129
|
+
| `Write` | 整体写文件(覆盖前要先 Read) | `node:fs/promises` |
|
|
130
|
+
| `Edit` | 字符串精确替换(old_string 必须唯一) | `node:fs/promises` |
|
|
131
|
+
| `Glob` | 文件名模式匹配 | `fast-glob` |
|
|
132
|
+
| `Grep` | 文件内容搜索 | spawn vendor 内置 ripgrep |
|
|
133
|
+
| `Bash` | 终端命令执行(黑名单 + 超时双保险) | `node:child_process` |
|
|
134
|
+
| `WebSearch` | Web 搜索(自动注入当前日期) | Tavily API |
|
|
135
|
+
| `WebFetch` | 抓网页 → HTML→Markdown(LRU 缓存) | `fetch` + `turndown` |
|
|
136
|
+
| `WebBrowser` | 浏览器交互(点击/填表单/截图/JS 渲染) | playwright-core(**可选依赖**) |
|
|
137
|
+
|
|
138
|
+
工具入口:`src/tools/index.ts` 的 `ALL_TOOLS` 数组和 `executeTool()` 函数。
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 项目结构
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
minimal-agent/
|
|
146
|
+
├── src/
|
|
147
|
+
│ ├── main.tsx # 入口:CLI 参数解析 + 模式分发
|
|
148
|
+
│ ├── loop.ts # Agent 主循环(runQuery)
|
|
149
|
+
│ ├── config.ts # .env 加载
|
|
150
|
+
│ ├── types.ts # 核心类型(Message / Tool / LoopEvent)
|
|
151
|
+
│ ├── cli/print.ts # -p 非交互模式
|
|
152
|
+
│ ├── llm/client.ts # OpenAI 兼容流式客户端
|
|
153
|
+
│ ├── context/ # 压缩 / 持久化 / token 计数
|
|
154
|
+
│ │ ├── compact.ts # auto + force 压缩
|
|
155
|
+
│ │ ├── reactiveCompact.ts # 上下文撑爆时的自救
|
|
156
|
+
│ │ ├── microCompactLite.ts # 工具回填 inline 压缩
|
|
157
|
+
│ │ └── persistContext.ts # ~/.minimal-agent/last-context.json
|
|
158
|
+
│ ├── prompts/ # system prompt 拼装
|
|
159
|
+
│ │ ├── system.ts # 主 prompt + 项目指令注入
|
|
160
|
+
│ │ ├── projectInstructions.ts # 项目根 minimal-agent.md 加载
|
|
161
|
+
│ │ └── skillList.ts # 扫描 skills/ 生成 skill 列表
|
|
162
|
+
│ ├── tools/ # 9 个内置工具(见上表)
|
|
163
|
+
│ └── ui/ # Ink TUI 组件
|
|
164
|
+
├── skills/ # Skill 库(每个子目录一个 SKILL.md)
|
|
165
|
+
├── vendor/ripgrep/ # 自带的 ripgrep 二进制(6 个平台)
|
|
166
|
+
├── test/ # bun test 用例
|
|
167
|
+
├── examples/ # Ink 教学示例
|
|
168
|
+
└── minimal-agent.md # 项目指令(类似 CLAUDE.md,会被自动注入 system prompt)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 工作原理(一句话版)
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
用户输入
|
|
177
|
+
│
|
|
178
|
+
▼
|
|
179
|
+
runQuery (loop.ts)
|
|
180
|
+
│
|
|
181
|
+
├── autoCompactIfNeeded # 接近上限就压缩
|
|
182
|
+
├── chat(LLM) # 流式 token + tool_calls
|
|
183
|
+
├── yield {text, ...} # → UI 显示
|
|
184
|
+
│
|
|
185
|
+
├── if 没工具 → return # 任务完成
|
|
186
|
+
│
|
|
187
|
+
├── for each tool_call:
|
|
188
|
+
│ executeTool # zod 校验 → tool.call(args)
|
|
189
|
+
│ append tool result # 写回 history
|
|
190
|
+
│
|
|
191
|
+
└── continue # 下一轮
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
详见 `src/loop.ts` 的注释。
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 开发命令
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
bun run start # 跑 TUI
|
|
202
|
+
bun run dev # 热重载
|
|
203
|
+
bun test # 跑全部测试(test/*)
|
|
204
|
+
bun test test/llm.live.test.ts # 跑单个测试文件
|
|
205
|
+
tsc --noEmit # 类型检查
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## 与 [kakadeai](../) 主项目的关系
|
|
211
|
+
|
|
212
|
+
minimal-agent 是 Claude Code 源码的**教学版**:
|
|
213
|
+
|
|
214
|
+
| 维度 | kakadeai/Claude Code | minimal-agent |
|
|
215
|
+
|---|---|---|
|
|
216
|
+
| 代码量 | 数十万行 | ~3000 行 |
|
|
217
|
+
| 主循环 | QueryEngine + 状态机 | 单层 while + AsyncGenerator |
|
|
218
|
+
| Tool 数 | 60+(含 MCP / Agent / Notebook 等) | 9 个内置 |
|
|
219
|
+
| Skill 加载 | `registerBundledSkill()` 注册 | 扫描目录 + frontmatter 解析 |
|
|
220
|
+
| Provider | Anthropic SDK | OpenAI Chat Completions(多家兼容) |
|
|
221
|
+
| UI | 完整 Ink 框架 + 主题系统 | 基础 Ink 组件 |
|
|
222
|
+
|
|
223
|
+
设计目标是**砍掉一切非必要的抽象**,把"AI agent 是什么"暴露在你眼前。
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 故障排查
|
|
228
|
+
|
|
229
|
+
| 现象 | 原因 / 处理 |
|
|
230
|
+
|---|---|
|
|
231
|
+
| `-p` 模式报 `缺少必需的环境变量` | `-p` 不弹向导。先用 `bun run start` 走向导,或手动写 `.env` |
|
|
232
|
+
| TUI 启动就弹向导,但我已经写了 .env | 检查 .env 是否在项目根(`bun run` 当前目录),三项变量名拼写无误 |
|
|
233
|
+
| 向导测试卡 `HTTP 401` / `HTTP 404` | 401 = API key 错;404 = baseURL 没拼 `/v1` 或 model id 不对 |
|
|
234
|
+
| 改完 `~/.minimal-agent/config.json` 没生效 | 当前进程仍持有旧配置;Ctrl+C 退出后重新 `bun run start` |
|
|
235
|
+
| `rg: command not found` | 不该出现——项目自带 ripgrep;若出现说明 vendor 目录未随项目复制 |
|
|
236
|
+
| `WebBrowser 报"无法启动浏览器"` | 需要 `npm install playwright-core && npx playwright install chromium`;或改用 WebFetch |
|
|
237
|
+
| 历史"被吃掉"了 | 上次进程崩溃前未保存;`~/.minimal-agent/last-context.json` 是最后写入的一次 |
|
|
238
|
+
| 模型回复说"我没法访问外部 API" | 检查 `MINIMAL_AGENT_BASE_URL` 是否拼了 `/v1`,model id 是否对 |
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 发布到 npm(未来)
|
|
243
|
+
|
|
244
|
+
**当前状态:不能直接 `npm install -g minimal-agent`** —— `package.json` 里 `"private": true`,也没有 `bin` 字段和构建产物。
|
|
245
|
+
|
|
246
|
+
如果要发布到 npm 让 Node.js 用户也能用,至少要做:
|
|
247
|
+
|
|
248
|
+
1. **改 `package.json`**
|
|
249
|
+
- 去掉 `"private": true`
|
|
250
|
+
- 加 `"bin": { "minimal-agent": "dist/main.js" }`
|
|
251
|
+
- 加 `"files": ["dist", "vendor", "skills"]`(控制 npm tarball 内容)
|
|
252
|
+
- 加 `"engines": { "node": ">=20" }`
|
|
253
|
+
2. **加构建步骤**:用 tsup / esbuild 把 `src/main.tsx` bundle 成单文件 CJS+ESM,输出到 `dist/main.js`
|
|
254
|
+
3. **shebang**:构建产物首行加 `#!/usr/bin/env node`,发布前 `chmod +x`
|
|
255
|
+
4. **`.env` 不打包**:在 `.npmignore` 里排除 `.env*`、`vendor/ripgrep/test/`,依赖**配置向导**让用户首次跑 `npx minimal-agent` 时填配置(这正是本项目 Mode B 的设计目的)
|
|
256
|
+
5. **vendor ripgrep**:6 个平台二进制(~30MB)会进 tarball;如想瘦身可拆成 `optionalDependencies` 按平台下载
|
|
257
|
+
6. **首发流程**:`npm whoami` → `npm publish --dry-run` 验证 tarball → `npm publish`
|
|
258
|
+
|
|
259
|
+
发布后用户体验:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
npm install -g minimal-agent
|
|
263
|
+
minimal-agent # 没配置 → 弹向导 → 测试通过 → 直接进 TUI
|
|
264
|
+
minimal-agent -p "..." # 配置完成后可直接 -p
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**本项目尚未做这步**,本仓库定位为学习/教学版,主要面向 `bun run start` / `bun run dev` 本地运行的用户。
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## License
|
|
272
|
+
|
|
273
|
+
本项目使用 **PolyForm Noncommercial License 1.0.0**(详见根目录 `LICENSE` 文件)。
|
|
274
|
+
|
|
275
|
+
**允许**:
|
|
276
|
+
- 个人学习、教学、研究、非商业实验用途
|
|
277
|
+
- 修改源代码、本地构建、自托管运行
|
|
278
|
+
- 在非商业项目中引用 / fork
|
|
279
|
+
- 慈善机构、教育机构、公共研究组织等非营利组织使用
|
|
280
|
+
|
|
281
|
+
**禁止**:
|
|
282
|
+
- 任何形式的商业使用(包括但不限于:销售本软件、用于公司内部生产环境、作为商业产品的组件、提供付费服务)
|
|
283
|
+
- 未经授权的再分发(必须保留 LICENSE 与版权声明)
|
|
284
|
+
|
|
285
|
+
如需商业授权,请联系作者另行洽谈。
|
|
286
|
+
|
|
287
|
+
`vendor/ripgrep/` 内的二进制为上游 ripgrep 项目的 MIT / Unlicense 双重许可,**不受**本项目 PolyForm Noncommercial License 约束。
|