axon-code 2.4.0 → 2.6.1
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/dist/auth/snapshot.d.ts +24 -0
- package/dist/auth/snapshot.d.ts.map +1 -0
- package/dist/auth/snapshot.js +144 -0
- package/dist/auth/snapshot.js.map +1 -0
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/config/axon-md-parser.d.ts.map +1 -1
- package/dist/config/axon-md-parser.js +21 -4
- package/dist/config/axon-md-parser.js.map +1 -1
- package/dist/config/index.d.ts +39 -21
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +14 -2
- package/dist/config/index.js.map +1 -1
- package/dist/context/enhanced.d.ts.map +1 -1
- package/dist/context/enhanced.js +5 -0
- package/dist/context/enhanced.js.map +1 -1
- package/dist/core/client.d.ts +7 -2
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +50 -18
- package/dist/core/client.js.map +1 -1
- package/dist/core/loop.d.ts +47 -8
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +333 -149
- package/dist/core/loop.js.map +1 -1
- package/dist/core/max-tokens.d.ts +24 -0
- package/dist/core/max-tokens.d.ts.map +1 -0
- package/dist/core/max-tokens.js +69 -0
- package/dist/core/max-tokens.js.map +1 -0
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +7 -14
- package/dist/core/session.js.map +1 -1
- package/dist/daemon/config.d.ts +6 -6
- package/dist/daemon/executor.d.ts.map +1 -1
- package/dist/daemon/executor.js +24 -30
- package/dist/daemon/executor.js.map +1 -1
- package/dist/goals/goal-store.d.ts +1 -1
- package/dist/goals/goal-store.d.ts.map +1 -1
- package/dist/goals/goal-store.js.map +1 -1
- package/dist/hooks/auto-verify.d.ts +86 -0
- package/dist/hooks/auto-verify.d.ts.map +1 -0
- package/dist/hooks/auto-verify.js +297 -0
- package/dist/hooks/auto-verify.js.map +1 -0
- package/dist/mcp/config.d.ts +16 -16
- package/dist/media/index.d.ts +2 -1
- package/dist/media/index.d.ts.map +1 -1
- package/dist/media/index.js +5 -3
- package/dist/media/index.js.map +1 -1
- package/dist/media/office-visual.d.ts +66 -0
- package/dist/media/office-visual.d.ts.map +1 -0
- package/dist/media/office-visual.js +409 -0
- package/dist/media/office-visual.js.map +1 -0
- package/dist/media/office.d.ts +17 -0
- package/dist/media/office.d.ts.map +1 -1
- package/dist/media/office.js +227 -2
- package/dist/media/office.js.map +1 -1
- package/dist/memory/long-term-store.d.ts +6 -0
- package/dist/memory/long-term-store.d.ts.map +1 -1
- package/dist/memory/long-term-store.js +66 -48
- package/dist/memory/long-term-store.js.map +1 -1
- package/dist/memory/memory-search.d.ts +9 -3
- package/dist/memory/memory-search.d.ts.map +1 -1
- package/dist/memory/memory-search.js +58 -12
- package/dist/memory/memory-search.js.map +1 -1
- package/dist/memory/memory-sync.d.ts +7 -0
- package/dist/memory/memory-sync.d.ts.map +1 -1
- package/dist/memory/memory-sync.js +92 -0
- package/dist/memory/memory-sync.js.map +1 -1
- package/dist/memory/notebook.d.ts +7 -0
- package/dist/memory/notebook.d.ts.map +1 -1
- package/dist/memory/notebook.js +624 -24
- package/dist/memory/notebook.js.map +1 -1
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +7 -4
- package/dist/models/config.js.map +1 -1
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +1 -0
- package/dist/models/index.js.map +1 -1
- package/dist/models/model-limits.d.ts +13 -0
- package/dist/models/model-limits.d.ts.map +1 -0
- package/dist/models/model-limits.js +79 -0
- package/dist/models/model-limits.js.map +1 -0
- package/dist/network/discovery.d.ts +2 -0
- package/dist/network/discovery.d.ts.map +1 -1
- package/dist/network/discovery.js +10 -5
- package/dist/network/discovery.js.map +1 -1
- package/dist/network/global-proxy.d.ts +7 -0
- package/dist/network/global-proxy.d.ts.map +1 -1
- package/dist/network/global-proxy.js +67 -0
- package/dist/network/global-proxy.js.map +1 -1
- package/dist/network/index.d.ts +6 -1
- package/dist/network/index.d.ts.map +1 -1
- package/dist/network/index.js +16 -11
- package/dist/network/index.js.map +1 -1
- package/dist/network/transport.d.ts +41 -4
- package/dist/network/transport.d.ts.map +1 -1
- package/dist/network/transport.js +234 -61
- package/dist/network/transport.js.map +1 -1
- package/dist/network/types.d.ts +19 -1
- package/dist/network/types.d.ts.map +1 -1
- package/dist/network/types.js.map +1 -1
- package/dist/notifications/cmux.d.ts +115 -0
- package/dist/notifications/cmux.d.ts.map +1 -0
- package/dist/notifications/cmux.js +436 -0
- package/dist/notifications/cmux.js.map +1 -0
- package/dist/prompt/attachments.d.ts +8 -0
- package/dist/prompt/attachments.d.ts.map +1 -1
- package/dist/prompt/attachments.js +74 -2
- package/dist/prompt/attachments.js.map +1 -1
- package/dist/prompt/builder.js +1 -1
- package/dist/prompt/builder.js.map +1 -1
- package/dist/prompt/cache.d.ts +1 -6
- package/dist/prompt/cache.d.ts.map +1 -1
- package/dist/prompt/cache.js +37 -7
- package/dist/prompt/cache.js.map +1 -1
- package/dist/prompt/templates.d.ts +1 -1
- package/dist/prompt/templates.d.ts.map +1 -1
- package/dist/prompt/templates.js +4 -3
- package/dist/prompt/templates.js.map +1 -1
- package/dist/prompt/types.d.ts +3 -1
- package/dist/prompt/types.d.ts.map +1 -1
- package/dist/prompt/types.js.map +1 -1
- package/dist/proxy/server.d.ts.map +1 -1
- package/dist/proxy/server.js +32 -11
- package/dist/proxy/server.js.map +1 -1
- package/dist/search/ripgrep.d.ts.map +1 -1
- package/dist/search/ripgrep.js +11 -0
- package/dist/search/ripgrep.js.map +1 -1
- package/dist/session/index.d.ts +3 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +1 -0
- package/dist/session/index.js.map +1 -1
- package/dist/skills/builtin/algorithmic-art/LICENSE.txt +202 -0
- package/dist/skills/builtin/algorithmic-art/SKILL.md +405 -0
- package/dist/skills/builtin/algorithmic-art/templates/generator_template.js +223 -0
- package/dist/skills/builtin/algorithmic-art/templates/viewer.html +599 -0
- package/dist/skills/builtin/analyze-logs/SKILL.md +75 -0
- package/dist/skills/builtin/audit-official/SKILL.md +81 -0
- package/dist/skills/builtin/brand-guidelines/LICENSE.txt +202 -0
- package/dist/skills/builtin/brand-guidelines/SKILL.md +73 -0
- package/dist/skills/builtin/build-portable/SKILL.md +53 -0
- package/dist/skills/builtin/canvas-design/SKILL.md +130 -0
- package/dist/skills/builtin/changelog/SKILL.md +65 -0
- package/dist/skills/builtin/code-review/SKILL.md +75 -0
- package/dist/skills/builtin/doc-coauthoring/SKILL.md +375 -0
- package/dist/skills/builtin/doctor/SKILL.md +166 -0
- package/dist/skills/builtin/docx/LICENSE.txt +30 -0
- package/dist/skills/builtin/docx/SKILL.md +590 -0
- package/dist/skills/builtin/docx/scripts/__init__.py +1 -0
- package/dist/skills/builtin/docx/scripts/accept_changes.py +135 -0
- package/dist/skills/builtin/docx/scripts/comment.py +318 -0
- package/dist/skills/builtin/docx/scripts/office/helpers/__init__.py +0 -0
- package/dist/skills/builtin/docx/scripts/office/helpers/merge_runs.py +199 -0
- package/dist/skills/builtin/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/dist/skills/builtin/docx/scripts/office/pack.py +159 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/dist/skills/builtin/docx/scripts/office/soffice.py +183 -0
- package/dist/skills/builtin/docx/scripts/office/unpack.py +132 -0
- package/dist/skills/builtin/docx/scripts/office/validate.py +111 -0
- package/dist/skills/builtin/docx/scripts/office/validators/__init__.py +15 -0
- package/dist/skills/builtin/docx/scripts/office/validators/base.py +847 -0
- package/dist/skills/builtin/docx/scripts/office/validators/docx.py +446 -0
- package/dist/skills/builtin/docx/scripts/office/validators/pptx.py +275 -0
- package/dist/skills/builtin/docx/scripts/office/validators/redlining.py +247 -0
- package/dist/skills/builtin/docx/scripts/templates/comments.xml +3 -0
- package/dist/skills/builtin/docx/scripts/templates/commentsExtended.xml +3 -0
- package/dist/skills/builtin/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/dist/skills/builtin/docx/scripts/templates/commentsIds.xml +3 -0
- package/dist/skills/builtin/docx/scripts/templates/people.xml +3 -0
- package/dist/skills/builtin/frontend-design/LICENSE.txt +177 -0
- package/dist/skills/builtin/frontend-design/SKILL.md +42 -0
- package/dist/skills/builtin/i18n-check/SKILL.md +56 -0
- package/dist/skills/builtin/internal-comms/LICENSE.txt +202 -0
- package/dist/skills/builtin/internal-comms/SKILL.md +32 -0
- package/dist/skills/builtin/internal-comms/examples/3p-updates.md +47 -0
- package/dist/skills/builtin/internal-comms/examples/company-newsletter.md +65 -0
- package/dist/skills/builtin/internal-comms/examples/faq-answers.md +30 -0
- package/dist/skills/builtin/internal-comms/examples/general-comms.md +16 -0
- package/dist/skills/builtin/mcp-builder/LICENSE.txt +202 -0
- package/dist/skills/builtin/mcp-builder/SKILL.md +236 -0
- package/dist/skills/builtin/mcp-builder/reference/evaluation.md +602 -0
- package/dist/skills/builtin/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/dist/skills/builtin/mcp-builder/reference/node_mcp_server.md +970 -0
- package/dist/skills/builtin/mcp-builder/reference/python_mcp_server.md +719 -0
- package/dist/skills/builtin/mcp-builder/scripts/connections.py +151 -0
- package/dist/skills/builtin/mcp-builder/scripts/evaluation.py +373 -0
- package/dist/skills/builtin/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/dist/skills/builtin/mcp-builder/scripts/requirements.txt +2 -0
- package/dist/skills/builtin/pdf/LICENSE.txt +30 -0
- package/dist/skills/builtin/pdf/SKILL.md +314 -0
- package/dist/skills/builtin/pdf/forms.md +294 -0
- package/dist/skills/builtin/pdf/reference.md +612 -0
- package/dist/skills/builtin/pdf/scripts/check_bounding_boxes.py +65 -0
- package/dist/skills/builtin/pdf/scripts/check_fillable_fields.py +11 -0
- package/dist/skills/builtin/pdf/scripts/convert_pdf_to_images.py +33 -0
- package/dist/skills/builtin/pdf/scripts/create_validation_image.py +37 -0
- package/dist/skills/builtin/pdf/scripts/extract_form_field_info.py +122 -0
- package/dist/skills/builtin/pdf/scripts/extract_form_structure.py +115 -0
- package/dist/skills/builtin/pdf/scripts/fill_fillable_fields.py +98 -0
- package/dist/skills/builtin/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- package/dist/skills/builtin/pptx/LICENSE.txt +30 -0
- package/dist/skills/builtin/pptx/SKILL.md +232 -0
- package/dist/skills/builtin/pptx/editing.md +205 -0
- package/dist/skills/builtin/pptx/pptxgenjs.md +420 -0
- package/dist/skills/builtin/pptx/scripts/__init__.py +0 -0
- package/dist/skills/builtin/pptx/scripts/add_slide.py +195 -0
- package/dist/skills/builtin/pptx/scripts/clean.py +286 -0
- package/dist/skills/builtin/pptx/scripts/office/helpers/__init__.py +0 -0
- package/dist/skills/builtin/pptx/scripts/office/helpers/merge_runs.py +199 -0
- package/dist/skills/builtin/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/dist/skills/builtin/pptx/scripts/office/pack.py +159 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/dist/skills/builtin/pptx/scripts/office/soffice.py +183 -0
- package/dist/skills/builtin/pptx/scripts/office/unpack.py +132 -0
- package/dist/skills/builtin/pptx/scripts/office/validate.py +111 -0
- package/dist/skills/builtin/pptx/scripts/office/validators/__init__.py +15 -0
- package/dist/skills/builtin/pptx/scripts/office/validators/base.py +847 -0
- package/dist/skills/builtin/pptx/scripts/office/validators/docx.py +446 -0
- package/dist/skills/builtin/pptx/scripts/office/validators/pptx.py +275 -0
- package/dist/skills/builtin/pptx/scripts/office/validators/redlining.py +247 -0
- package/dist/skills/builtin/pptx/scripts/thumbnail.py +289 -0
- package/dist/skills/builtin/promo-video/SKILL.md +124 -0
- package/dist/skills/builtin/promote/SKILL.md +77 -0
- package/dist/skills/builtin/skill-creator/LICENSE.txt +202 -0
- package/dist/skills/builtin/skill-creator/SKILL.md +598 -0
- package/dist/skills/builtin/skill-creator/agents/analyzer.md +274 -0
- package/dist/skills/builtin/skill-creator/agents/comparator.md +202 -0
- package/dist/skills/builtin/skill-creator/agents/grader.md +223 -0
- package/dist/skills/builtin/skill-creator/assets/eval_review.html +146 -0
- package/dist/skills/builtin/skill-creator/eval-viewer/generate_review.py +471 -0
- package/dist/skills/builtin/skill-creator/eval-viewer/viewer.html +1325 -0
- package/dist/skills/builtin/skill-creator/references/schemas.md +430 -0
- package/dist/skills/builtin/skill-creator/scripts/__init__.py +0 -0
- package/dist/skills/builtin/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/dist/skills/builtin/skill-creator/scripts/generate_report.py +326 -0
- package/dist/skills/builtin/skill-creator/scripts/improve_description.py +248 -0
- package/dist/skills/builtin/skill-creator/scripts/package_skill.py +136 -0
- package/dist/skills/builtin/skill-creator/scripts/quick_validate.py +103 -0
- package/dist/skills/builtin/skill-creator/scripts/run_eval.py +310 -0
- package/dist/skills/builtin/skill-creator/scripts/run_loop.py +332 -0
- package/dist/skills/builtin/skill-creator/scripts/utils.py +47 -0
- package/dist/skills/builtin/slack-gif-creator/LICENSE.txt +202 -0
- package/dist/skills/builtin/slack-gif-creator/SKILL.md +254 -0
- package/dist/skills/builtin/slack-gif-creator/core/easing.py +234 -0
- package/dist/skills/builtin/slack-gif-creator/core/frame_composer.py +176 -0
- package/dist/skills/builtin/slack-gif-creator/core/gif_builder.py +269 -0
- package/dist/skills/builtin/slack-gif-creator/core/validators.py +136 -0
- package/dist/skills/builtin/slack-gif-creator/requirements.txt +4 -0
- package/dist/skills/builtin/sync-version/SKILL.md +39 -0
- package/dist/skills/builtin/theme-factory/LICENSE.txt +202 -0
- package/dist/skills/builtin/theme-factory/SKILL.md +59 -0
- package/dist/skills/builtin/theme-factory/theme-showcase.pdf +0 -0
- package/dist/skills/builtin/theme-factory/themes/arctic-frost.md +19 -0
- package/dist/skills/builtin/theme-factory/themes/botanical-garden.md +19 -0
- package/dist/skills/builtin/theme-factory/themes/desert-rose.md +19 -0
- package/dist/skills/builtin/theme-factory/themes/forest-canopy.md +19 -0
- package/dist/skills/builtin/theme-factory/themes/golden-hour.md +19 -0
- package/dist/skills/builtin/theme-factory/themes/midnight-galaxy.md +19 -0
- package/dist/skills/builtin/theme-factory/themes/modern-minimalist.md +19 -0
- package/dist/skills/builtin/theme-factory/themes/ocean-depths.md +19 -0
- package/dist/skills/builtin/theme-factory/themes/sunset-boulevard.md +19 -0
- package/dist/skills/builtin/theme-factory/themes/tech-innovation.md +19 -0
- package/dist/skills/builtin/web-artifacts-builder/LICENSE.txt +202 -0
- package/dist/skills/builtin/web-artifacts-builder/SKILL.md +74 -0
- package/dist/skills/builtin/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/dist/skills/builtin/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/dist/skills/builtin/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/dist/skills/builtin/webapp-testing/LICENSE.txt +202 -0
- package/dist/skills/builtin/webapp-testing/SKILL.md +96 -0
- package/dist/skills/builtin/webapp-testing/examples/console_logging.py +35 -0
- package/dist/skills/builtin/webapp-testing/examples/element_discovery.py +40 -0
- package/dist/skills/builtin/webapp-testing/examples/static_html_automation.py +33 -0
- package/dist/skills/builtin/webapp-testing/scripts/with_server.py +106 -0
- package/dist/skills/builtin/xlsx/LICENSE.txt +30 -0
- package/dist/skills/builtin/xlsx/SKILL.md +292 -0
- package/dist/skills/builtin/xlsx/scripts/office/helpers/__init__.py +0 -0
- package/dist/skills/builtin/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- package/dist/skills/builtin/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/dist/skills/builtin/xlsx/scripts/office/pack.py +159 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/dist/skills/builtin/xlsx/scripts/office/soffice.py +183 -0
- package/dist/skills/builtin/xlsx/scripts/office/unpack.py +132 -0
- package/dist/skills/builtin/xlsx/scripts/office/validate.py +111 -0
- package/dist/skills/builtin/xlsx/scripts/office/validators/__init__.py +15 -0
- package/dist/skills/builtin/xlsx/scripts/office/validators/base.py +847 -0
- package/dist/skills/builtin/xlsx/scripts/office/validators/docx.py +446 -0
- package/dist/skills/builtin/xlsx/scripts/office/validators/pptx.py +275 -0
- package/dist/skills/builtin/xlsx/scripts/office/validators/redlining.py +247 -0
- package/dist/skills/builtin/xlsx/scripts/recalc.py +184 -0
- package/dist/tools/agent.d.ts +8 -0
- package/dist/tools/agent.d.ts.map +1 -1
- package/dist/tools/agent.js +66 -2
- package/dist/tools/agent.js.map +1 -1
- package/dist/tools/base.d.ts +16 -0
- package/dist/tools/base.d.ts.map +1 -1
- package/dist/tools/base.js +32 -0
- package/dist/tools/base.js.map +1 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +8 -0
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/file.d.ts +3 -1
- package/dist/tools/file.d.ts.map +1 -1
- package/dist/tools/file.js +176 -117
- package/dist/tools/file.js.map +1 -1
- package/dist/tools/generate-design.d.ts +5 -1
- package/dist/tools/generate-design.d.ts.map +1 -1
- package/dist/tools/generate-design.js +25 -3
- package/dist/tools/generate-design.js.map +1 -1
- package/dist/tools/goal.d.ts +1 -1
- package/dist/tools/goal.d.ts.map +1 -1
- package/dist/tools/goal.js +18 -9
- package/dist/tools/goal.js.map +1 -1
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +74 -5
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp.d.ts.map +1 -1
- package/dist/tools/mcp.js +5 -0
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/memory-search.d.ts +1 -1
- package/dist/tools/memory-search.d.ts.map +1 -1
- package/dist/tools/memory-search.js +1 -1
- package/dist/tools/memory-search.js.map +1 -1
- package/dist/tools/network-agent.js +2 -1
- package/dist/tools/network-agent.js.map +1 -1
- package/dist/tools/notebook-write.d.ts.map +1 -1
- package/dist/tools/notebook-write.js +3 -1
- package/dist/tools/notebook-write.js.map +1 -1
- package/dist/tools/schedule.d.ts.map +1 -1
- package/dist/tools/schedule.js +2 -26
- package/dist/tools/schedule.js.map +1 -1
- package/dist/tools/skill.d.ts +1 -7
- package/dist/tools/skill.d.ts.map +1 -1
- package/dist/tools/skill.js +225 -61
- package/dist/tools/skill.js.map +1 -1
- package/dist/types/messages.d.ts +1 -5
- package/dist/types/messages.d.ts.map +1 -1
- package/dist/web/server/api-manager.d.ts +9 -4
- package/dist/web/server/api-manager.d.ts.map +1 -1
- package/dist/web/server/api-manager.js +173 -63
- package/dist/web/server/api-manager.js.map +1 -1
- package/dist/web/server/app-manager.d.ts +71 -0
- package/dist/web/server/app-manager.d.ts.map +1 -0
- package/dist/web/server/app-manager.js +364 -0
- package/dist/web/server/app-manager.js.map +1 -0
- package/dist/web/server/channels/bridge.d.ts.map +1 -1
- package/dist/web/server/channels/bridge.js +2 -1
- package/dist/web/server/channels/bridge.js.map +1 -1
- package/dist/web/server/codex-auth-manager.d.ts +43 -0
- package/dist/web/server/codex-auth-manager.d.ts.map +1 -0
- package/dist/web/server/codex-auth-manager.js +429 -0
- package/dist/web/server/codex-auth-manager.js.map +1 -0
- package/dist/web/server/conversation.d.ts +34 -5
- package/dist/web/server/conversation.d.ts.map +1 -1
- package/dist/web/server/conversation.js +435 -142
- package/dist/web/server/conversation.js.map +1 -1
- package/dist/web/server/image-attachments.d.ts +23 -0
- package/dist/web/server/image-attachments.d.ts.map +1 -0
- package/dist/web/server/image-attachments.js +93 -0
- package/dist/web/server/image-attachments.js.map +1 -0
- package/dist/web/server/index.d.ts.map +1 -1
- package/dist/web/server/index.js +28 -0
- package/dist/web/server/index.js.map +1 -1
- package/dist/web/server/routes/__tests__/app-api.test.d.ts +5 -0
- package/dist/web/server/routes/__tests__/app-api.test.d.ts.map +1 -0
- package/dist/web/server/routes/__tests__/app-api.test.js +48 -0
- package/dist/web/server/routes/__tests__/app-api.test.js.map +1 -0
- package/dist/web/server/routes/__tests__/tunnel-api.test.d.ts +2 -0
- package/dist/web/server/routes/__tests__/tunnel-api.test.d.ts.map +1 -0
- package/dist/web/server/routes/__tests__/tunnel-api.test.js +96 -0
- package/dist/web/server/routes/__tests__/tunnel-api.test.js.map +1 -0
- package/dist/web/server/routes/ai-editor.d.ts.map +1 -1
- package/dist/web/server/routes/ai-editor.js +9 -45
- package/dist/web/server/routes/ai-editor.js.map +1 -1
- package/dist/web/server/routes/ai-hover.d.ts.map +1 -1
- package/dist/web/server/routes/ai-hover.js +6 -23
- package/dist/web/server/routes/ai-hover.js.map +1 -1
- package/dist/web/server/routes/api.d.ts.map +1 -1
- package/dist/web/server/routes/api.js +27 -23
- package/dist/web/server/routes/api.js.map +1 -1
- package/dist/web/server/routes/app-api.d.ts +8 -0
- package/dist/web/server/routes/app-api.d.ts.map +1 -0
- package/dist/web/server/routes/app-api.js +191 -0
- package/dist/web/server/routes/app-api.js.map +1 -0
- package/dist/web/server/routes/auth.d.ts.map +1 -1
- package/dist/web/server/routes/auth.js +306 -5
- package/dist/web/server/routes/auth.js.map +1 -1
- package/dist/web/server/routes/autocomplete-api.d.ts.map +1 -1
- package/dist/web/server/routes/autocomplete-api.js +5 -43
- package/dist/web/server/routes/autocomplete-api.js.map +1 -1
- package/dist/web/server/routes/axon-cloud.d.ts.map +1 -1
- package/dist/web/server/routes/axon-cloud.js +352 -1
- package/dist/web/server/routes/axon-cloud.js.map +1 -1
- package/dist/web/server/routes/config-api.d.ts.map +1 -1
- package/dist/web/server/routes/config-api.js +12 -20
- package/dist/web/server/routes/config-api.js.map +1 -1
- package/dist/web/server/routes/download-proxy.d.ts.map +1 -1
- package/dist/web/server/routes/download-proxy.js +234 -12
- package/dist/web/server/routes/download-proxy.js.map +1 -1
- package/dist/web/server/routes/network-api.d.ts +1 -0
- package/dist/web/server/routes/network-api.d.ts.map +1 -1
- package/dist/web/server/routes/network-api.js +36 -11
- package/dist/web/server/routes/network-api.js.map +1 -1
- package/dist/web/server/routes/port-forward.d.ts.map +1 -1
- package/dist/web/server/routes/port-forward.js +3 -2
- package/dist/web/server/routes/port-forward.js.map +1 -1
- package/dist/web/server/routes/schedule-api.d.ts.map +1 -1
- package/dist/web/server/routes/schedule-api.js +5 -1
- package/dist/web/server/routes/schedule-api.js.map +1 -1
- package/dist/web/server/routes/tunnel-api.d.ts +14 -0
- package/dist/web/server/routes/tunnel-api.d.ts.map +1 -0
- package/dist/web/server/routes/tunnel-api.js +52 -0
- package/dist/web/server/routes/tunnel-api.js.map +1 -0
- package/dist/web/server/runtime/api-connection-test.d.ts +18 -0
- package/dist/web/server/runtime/api-connection-test.d.ts.map +1 -0
- package/dist/web/server/runtime/api-connection-test.js +62 -0
- package/dist/web/server/runtime/api-connection-test.js.map +1 -0
- package/dist/web/server/runtime/codex-client.d.ts +35 -0
- package/dist/web/server/runtime/codex-client.d.ts.map +1 -0
- package/dist/web/server/runtime/codex-client.js +1202 -0
- package/dist/web/server/runtime/codex-client.js.map +1 -0
- package/dist/web/server/runtime/factory.d.ts +3 -0
- package/dist/web/server/runtime/factory.d.ts.map +1 -0
- package/dist/web/server/runtime/factory.js +16 -0
- package/dist/web/server/runtime/factory.js.map +1 -0
- package/dist/web/server/runtime/runtime-model-catalog.d.ts +10 -0
- package/dist/web/server/runtime/runtime-model-catalog.d.ts.map +1 -0
- package/dist/web/server/runtime/runtime-model-catalog.js +85 -0
- package/dist/web/server/runtime/runtime-model-catalog.js.map +1 -0
- package/dist/web/server/runtime/runtime-model-list.d.ts +24 -0
- package/dist/web/server/runtime/runtime-model-list.d.ts.map +1 -0
- package/dist/web/server/runtime/runtime-model-list.js +43 -0
- package/dist/web/server/runtime/runtime-model-list.js.map +1 -0
- package/dist/web/server/runtime/runtime-selection.d.ts +17 -0
- package/dist/web/server/runtime/runtime-selection.d.ts.map +1 -0
- package/dist/web/server/runtime/runtime-selection.js +35 -0
- package/dist/web/server/runtime/runtime-selection.js.map +1 -0
- package/dist/web/server/runtime/tool-input-normalizer.d.ts +3 -0
- package/dist/web/server/runtime/tool-input-normalizer.d.ts.map +1 -0
- package/dist/web/server/runtime/tool-input-normalizer.js +52 -0
- package/dist/web/server/runtime/tool-input-normalizer.js.map +1 -0
- package/dist/web/server/runtime/types.d.ts +102 -0
- package/dist/web/server/runtime/types.d.ts.map +1 -0
- package/dist/web/server/runtime/types.js +2 -0
- package/dist/web/server/runtime/types.js.map +1 -0
- package/dist/web/server/runtime/utility-client.d.ts +5 -0
- package/dist/web/server/runtime/utility-client.d.ts.map +1 -0
- package/dist/web/server/runtime/utility-client.js +68 -0
- package/dist/web/server/runtime/utility-client.js.map +1 -0
- package/dist/web/server/services/axon-cloud-service.d.ts +24 -0
- package/dist/web/server/services/axon-cloud-service.d.ts.map +1 -1
- package/dist/web/server/services/axon-cloud-service.js +93 -0
- package/dist/web/server/services/axon-cloud-service.js.map +1 -1
- package/dist/web/server/services/config-service.d.ts +8 -2
- package/dist/web/server/services/config-service.d.ts.map +1 -1
- package/dist/web/server/services/config-service.js +51 -0
- package/dist/web/server/services/config-service.js.map +1 -1
- package/dist/web/server/services/gemini-image-service.d.ts +20 -1
- package/dist/web/server/services/gemini-image-service.d.ts.map +1 -1
- package/dist/web/server/services/gemini-image-service.js +121 -13
- package/dist/web/server/services/gemini-image-service.js.map +1 -1
- package/dist/web/server/session-manager.d.ts +10 -0
- package/dist/web/server/session-manager.d.ts.map +1 -1
- package/dist/web/server/session-manager.js +39 -0
- package/dist/web/server/session-manager.js.map +1 -1
- package/dist/web/server/slash-commands.d.ts.map +1 -1
- package/dist/web/server/slash-commands.js +127 -25
- package/dist/web/server/slash-commands.js.map +1 -1
- package/dist/web/server/task-manager.d.ts +4 -15
- package/dist/web/server/task-manager.d.ts.map +1 -1
- package/dist/web/server/task-manager.js +11 -4
- package/dist/web/server/task-manager.js.map +1 -1
- package/dist/web/server/tunnel.d.ts +47 -0
- package/dist/web/server/tunnel.d.ts.map +1 -0
- package/dist/web/server/tunnel.js +165 -0
- package/dist/web/server/tunnel.js.map +1 -0
- package/dist/web/server/user-interaction.d.ts +10 -0
- package/dist/web/server/user-interaction.d.ts.map +1 -1
- package/dist/web/server/user-interaction.js +28 -0
- package/dist/web/server/user-interaction.js.map +1 -1
- package/dist/web/server/web-auth.d.ts +35 -3
- package/dist/web/server/web-auth.d.ts.map +1 -1
- package/dist/web/server/web-auth.js +302 -29
- package/dist/web/server/web-auth.js.map +1 -1
- package/dist/web/server/web-scheduler.d.ts.map +1 -1
- package/dist/web/server/web-scheduler.js +9 -0
- package/dist/web/server/web-scheduler.js.map +1 -1
- package/dist/web/server/websocket-git-handlers.d.ts.map +1 -1
- package/dist/web/server/websocket-git-handlers.js +5 -29
- package/dist/web/server/websocket-git-handlers.js.map +1 -1
- package/dist/web/server/websocket.d.ts.map +1 -1
- package/dist/web/server/websocket.js +246 -70
- package/dist/web/server/websocket.js.map +1 -1
- package/dist/web/shared/auth-summary.d.ts +28 -0
- package/dist/web/shared/auth-summary.d.ts.map +1 -0
- package/dist/web/shared/auth-summary.js +56 -0
- package/dist/web/shared/auth-summary.js.map +1 -0
- package/dist/web/shared/model-catalog.d.ts +31 -0
- package/dist/web/shared/model-catalog.d.ts.map +1 -0
- package/dist/web/shared/model-catalog.js +365 -0
- package/dist/web/shared/model-catalog.js.map +1 -0
- package/dist/web/shared/model-preferences.d.ts +5 -0
- package/dist/web/shared/model-preferences.d.ts.map +1 -0
- package/dist/web/shared/model-preferences.js +13 -0
- package/dist/web/shared/model-preferences.js.map +1 -0
- package/dist/web/shared/runtime-capabilities.d.ts +37 -0
- package/dist/web/shared/runtime-capabilities.d.ts.map +1 -0
- package/dist/web/shared/runtime-capabilities.js +101 -0
- package/dist/web/shared/runtime-capabilities.js.map +1 -0
- package/dist/web/shared/setup-runtime.d.ts +50 -0
- package/dist/web/shared/setup-runtime.d.ts.map +1 -0
- package/dist/web/shared/setup-runtime.js +214 -0
- package/dist/web/shared/setup-runtime.js.map +1 -0
- package/dist/web/shared/thinking-config.d.ts +20 -0
- package/dist/web/shared/thinking-config.d.ts.map +1 -0
- package/dist/web/shared/thinking-config.js +104 -0
- package/dist/web/shared/thinking-config.js.map +1 -0
- package/dist/web/shared/types.d.ts +30 -2
- package/dist/web/shared/types.d.ts.map +1 -1
- package/dist/web/shared/types.js.map +1 -1
- package/electron/main.cjs +15 -3
- package/package.json +6 -2
- package/src/web/client/dist/assets/index-B2M5Nr-5.js +736 -0
- package/src/web/client/dist/assets/index-COEqamS-.css +32 -0
- package/src/web/client/dist/icons/icon-192.png +0 -0
- package/src/web/client/dist/icons/icon-512.png +0 -0
- package/src/web/client/dist/index.html +31 -0
- package/src/web/client/dist/logo.png +0 -0
- package/src/web/client/dist/manifest.webmanifest +25 -0
- package/src/web/client/dist/sw.js +78 -0
package/dist/core/loop.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* 主对话循环
|
|
3
3
|
* 处理用户输入、工具调用和响应
|
|
4
4
|
*/
|
|
5
|
-
import { ClaudeClient, formatSystemPrompt } from './client.js';
|
|
5
|
+
import { ClaudeClient, createClientWithModel, formatSystemPrompt } from './client.js';
|
|
6
6
|
import { Session, setCurrentSessionId } from './session.js';
|
|
7
7
|
import { toolRegistry } from '../tools/index.js';
|
|
8
8
|
import { runWithCwd, runGeneratorWithCwd } from './cwd-context.js';
|
|
@@ -40,7 +40,9 @@ import { configManager } from '../config/index.js';
|
|
|
40
40
|
import { accountUsageManager } from '../ratelimit/index.js';
|
|
41
41
|
import { initNotebookManager, getNotebookManager } from '../memory/notebook.js';
|
|
42
42
|
import { initMemorySearchManager, getMemorySearchManager } from '../memory/memory-search.js';
|
|
43
|
+
import { getResolvedModelContextWindow } from '../models/model-limits.js';
|
|
43
44
|
import { startCacheKeepalive } from './cache-keepalive.js';
|
|
45
|
+
import { createConversationClient } from '../web/server/runtime/factory.js';
|
|
44
46
|
import { estimateTokens } from '../utils/token-estimate.js';
|
|
45
47
|
import { loadActiveGoals } from '../goals/index.js';
|
|
46
48
|
import { isSessionMemoryEnabled as checkSessionMemoryEnabled, SESSION_MEMORY_TEMPLATE, isEmptyTemplate, readSessionMemory, waitForWrite as waitForSessionMemoryWrite, } from '../context/session-memory.js';
|
|
@@ -700,6 +702,10 @@ function calculateTotalTokens(messages) {
|
|
|
700
702
|
* @returns 上下文窗口大小(tokens)
|
|
701
703
|
*/
|
|
702
704
|
export function getContextWindowSize(model) {
|
|
705
|
+
const resolvedContextWindow = getResolvedModelContextWindow(model);
|
|
706
|
+
if (resolvedContextWindow !== undefined) {
|
|
707
|
+
return resolvedContextWindow;
|
|
708
|
+
}
|
|
703
709
|
// 检查是否是 1M 模型(带 [1m] 标记)
|
|
704
710
|
if (model.includes('[1m]')) {
|
|
705
711
|
return 1000000;
|
|
@@ -707,37 +713,10 @@ export function getContextWindowSize(model) {
|
|
|
707
713
|
// 默认 200K 上下文窗口
|
|
708
714
|
return 200000;
|
|
709
715
|
}
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
* @returns 最大输出 tokens
|
|
715
|
-
*/
|
|
716
|
-
export function getMaxOutputTokens(model) {
|
|
717
|
-
let defaultMax;
|
|
718
|
-
// 根据模型类型确定默认最大输出 tokens
|
|
719
|
-
if (model.includes('opus-4-5')) {
|
|
720
|
-
defaultMax = 64000;
|
|
721
|
-
}
|
|
722
|
-
else if (model.includes('opus-4')) {
|
|
723
|
-
defaultMax = 32000;
|
|
724
|
-
}
|
|
725
|
-
else if (model.includes('sonnet-4') || model.includes('haiku-4')) {
|
|
726
|
-
defaultMax = 64000;
|
|
727
|
-
}
|
|
728
|
-
else {
|
|
729
|
-
defaultMax = 32000;
|
|
730
|
-
}
|
|
731
|
-
// settings.json maxTokens 可以覆盖(但不能超过默认最大值)
|
|
732
|
-
try {
|
|
733
|
-
const configMax = configManager.get('maxTokens');
|
|
734
|
-
if (configMax && configMax > 0) {
|
|
735
|
-
return Math.min(configMax, defaultMax);
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
catch { }
|
|
739
|
-
return defaultMax;
|
|
740
|
-
}
|
|
716
|
+
// getMaxOutputTokens / getModelOutputTokenLimits 已移至 max-tokens.ts(避免 client ↔ loop 循环依赖)
|
|
717
|
+
// import + re-export 保持向后兼容,同时允许本地使用
|
|
718
|
+
import { getMaxOutputTokens, getModelOutputTokenLimits } from './max-tokens.js';
|
|
719
|
+
export { getMaxOutputTokens, getModelOutputTokenLimits };
|
|
741
720
|
/**
|
|
742
721
|
* 计算可用的输入 token 空间
|
|
743
722
|
* 对齐官方 EHA 函数(官方 N91: IG(A, iP()) - Math.min(zh8(A), _QY))
|
|
@@ -1527,6 +1506,12 @@ export class ConversationLoop {
|
|
|
1527
1506
|
static TOOL_LOOP_CIRCUIT_BREAKER = 20; // 全局熔断阈值
|
|
1528
1507
|
/** 是否通过构造函数传入了认证信息(跳过 ensureAuthenticated) */
|
|
1529
1508
|
hasExternalAuth = false;
|
|
1509
|
+
/** 自动记忆后台任务,避免同一时刻重复提取 */
|
|
1510
|
+
autoMemorizePromise = null;
|
|
1511
|
+
/** 最近一次尝试提取时看到的可记忆对话消息数,避免同一批消息重复调度 */
|
|
1512
|
+
lastAutoMemorizeAttemptedMessageCount = 0;
|
|
1513
|
+
/** 最近一次成功处理完成的可记忆对话消息数,作为增量提取游标 */
|
|
1514
|
+
lastAutoMemorizedMessageCount = 0;
|
|
1530
1515
|
/**
|
|
1531
1516
|
* 获取当前权限模式 - 官方 v2.1.2 响应式实现
|
|
1532
1517
|
*
|
|
@@ -1608,6 +1593,58 @@ export class ConversationLoop {
|
|
|
1608
1593
|
resetToolCallHistory() {
|
|
1609
1594
|
this.toolCallHistory = [];
|
|
1610
1595
|
}
|
|
1596
|
+
createLoopClient(resolvedModel, options) {
|
|
1597
|
+
if (options.conversationClientConfig) {
|
|
1598
|
+
if (options.conversationClientConfig.apiKey || options.conversationClientConfig.authToken) {
|
|
1599
|
+
this.hasExternalAuth = true;
|
|
1600
|
+
}
|
|
1601
|
+
return createConversationClient({
|
|
1602
|
+
...options.conversationClientConfig,
|
|
1603
|
+
model: options.conversationClientConfig.model || resolvedModel,
|
|
1604
|
+
});
|
|
1605
|
+
}
|
|
1606
|
+
const clientConfig = {
|
|
1607
|
+
model: resolvedModel,
|
|
1608
|
+
maxTokens: options.maxTokens,
|
|
1609
|
+
fallbackModel: options.fallbackModel,
|
|
1610
|
+
thinking: options.thinking,
|
|
1611
|
+
debug: options.debug,
|
|
1612
|
+
timeout: 300000,
|
|
1613
|
+
};
|
|
1614
|
+
if (options.apiKey || options.authToken) {
|
|
1615
|
+
this.hasExternalAuth = true;
|
|
1616
|
+
if (options.apiKey) {
|
|
1617
|
+
clientConfig.apiKey = options.apiKey;
|
|
1618
|
+
}
|
|
1619
|
+
if (options.authToken) {
|
|
1620
|
+
clientConfig.authToken = options.authToken;
|
|
1621
|
+
}
|
|
1622
|
+
if (options.baseUrl) {
|
|
1623
|
+
clientConfig.baseUrl = options.baseUrl;
|
|
1624
|
+
}
|
|
1625
|
+
}
|
|
1626
|
+
else {
|
|
1627
|
+
initAuth();
|
|
1628
|
+
const auth = getAuth();
|
|
1629
|
+
if (auth) {
|
|
1630
|
+
if (auth.type === 'api_key' && auth.apiKey) {
|
|
1631
|
+
clientConfig.apiKey = auth.apiKey;
|
|
1632
|
+
}
|
|
1633
|
+
else if (auth.type === 'oauth') {
|
|
1634
|
+
const scopes = auth.scopes || auth.scope || [];
|
|
1635
|
+
const hasInferenceScope = scopes.includes('user:inference');
|
|
1636
|
+
const oauthToken = auth.authToken || auth.accessToken;
|
|
1637
|
+
if (hasInferenceScope && oauthToken) {
|
|
1638
|
+
clientConfig.authToken = oauthToken;
|
|
1639
|
+
}
|
|
1640
|
+
else if (auth.oauthApiKey) {
|
|
1641
|
+
clientConfig.apiKey = auth.oauthApiKey;
|
|
1642
|
+
}
|
|
1643
|
+
}
|
|
1644
|
+
}
|
|
1645
|
+
}
|
|
1646
|
+
return new ClaudeClient(clientConfig);
|
|
1647
|
+
}
|
|
1611
1648
|
/**
|
|
1612
1649
|
* 处理权限请求(询问用户是否允许工具执行)
|
|
1613
1650
|
* @param toolName 工具名称
|
|
@@ -1734,59 +1771,13 @@ export class ConversationLoop {
|
|
|
1734
1771
|
}
|
|
1735
1772
|
constructor(options = {}) {
|
|
1736
1773
|
// 解析模型别名
|
|
1737
|
-
const resolvedModel = modelConfig.resolveAlias(options.model || 'sonnet');
|
|
1774
|
+
const resolvedModel = options.conversationClientConfig?.model || modelConfig.resolveAlias(options.model || 'sonnet');
|
|
1738
1775
|
// 只有在没有明确指定 isSubAgent 的情况下才设置父模型上下文
|
|
1739
1776
|
// Sub-agent 不应该覆盖全局的父模型上下文
|
|
1740
1777
|
if (!options.isSubAgent) {
|
|
1741
1778
|
setParentModelContext(resolvedModel);
|
|
1742
1779
|
}
|
|
1743
|
-
|
|
1744
|
-
const clientConfig = {
|
|
1745
|
-
model: resolvedModel,
|
|
1746
|
-
maxTokens: options.maxTokens,
|
|
1747
|
-
fallbackModel: options.fallbackModel,
|
|
1748
|
-
thinking: options.thinking,
|
|
1749
|
-
debug: options.debug,
|
|
1750
|
-
timeout: 300000, // 5分钟 API 请求超时
|
|
1751
|
-
};
|
|
1752
|
-
// 如果外部传入了认证信息(如 WebUI 子 agent 复用主 agent 的认证),直接使用
|
|
1753
|
-
if (options.apiKey || options.authToken) {
|
|
1754
|
-
this.hasExternalAuth = true; // 标记为外部认证,跳过 ensureAuthenticated
|
|
1755
|
-
if (options.apiKey) {
|
|
1756
|
-
clientConfig.apiKey = options.apiKey;
|
|
1757
|
-
}
|
|
1758
|
-
if (options.authToken) {
|
|
1759
|
-
clientConfig.authToken = options.authToken;
|
|
1760
|
-
}
|
|
1761
|
-
if (options.baseUrl) {
|
|
1762
|
-
clientConfig.baseUrl = options.baseUrl;
|
|
1763
|
-
}
|
|
1764
|
-
}
|
|
1765
|
-
else {
|
|
1766
|
-
// 默认路径:从本地凭证文件/环境变量初始化认证
|
|
1767
|
-
initAuth();
|
|
1768
|
-
const auth = getAuth();
|
|
1769
|
-
// 根据认证类型设置凭据
|
|
1770
|
-
if (auth) {
|
|
1771
|
-
if (auth.type === 'api_key' && auth.apiKey) {
|
|
1772
|
-
clientConfig.apiKey = auth.apiKey;
|
|
1773
|
-
}
|
|
1774
|
-
else if (auth.type === 'oauth') {
|
|
1775
|
-
// 检查是否有 user:inference scope (Claude.ai 订阅用户)
|
|
1776
|
-
const scopes = auth.scopes || auth.scope || [];
|
|
1777
|
-
const hasInferenceScope = scopes.includes('user:inference');
|
|
1778
|
-
// 获取 OAuth token(可能是 authToken 或 accessToken)
|
|
1779
|
-
const oauthToken = auth.authToken || auth.accessToken;
|
|
1780
|
-
if (hasInferenceScope && oauthToken) {
|
|
1781
|
-
clientConfig.authToken = oauthToken;
|
|
1782
|
-
}
|
|
1783
|
-
else if (auth.oauthApiKey) {
|
|
1784
|
-
clientConfig.apiKey = auth.oauthApiKey;
|
|
1785
|
-
}
|
|
1786
|
-
}
|
|
1787
|
-
}
|
|
1788
|
-
}
|
|
1789
|
-
this.client = new ClaudeClient(clientConfig);
|
|
1780
|
+
this.client = this.createLoopClient(resolvedModel, options);
|
|
1790
1781
|
this.session = new Session();
|
|
1791
1782
|
this.options = options;
|
|
1792
1783
|
this.promptBuilder = systemPromptBuilder;
|
|
@@ -2110,6 +2101,61 @@ export class ConversationLoop {
|
|
|
2110
2101
|
return enrichedInput;
|
|
2111
2102
|
}
|
|
2112
2103
|
}
|
|
2104
|
+
/**
|
|
2105
|
+
* 从用户输入中提取可用于长期记忆召回的自然语言查询
|
|
2106
|
+
*/
|
|
2107
|
+
extractRecallQuery(userInput) {
|
|
2108
|
+
if (typeof userInput === 'string') {
|
|
2109
|
+
const text = userInput.trim();
|
|
2110
|
+
return text.length > 0 ? text : null;
|
|
2111
|
+
}
|
|
2112
|
+
if (!Array.isArray(userInput)) {
|
|
2113
|
+
return null;
|
|
2114
|
+
}
|
|
2115
|
+
const text = userInput
|
|
2116
|
+
.filter((block) => block?.type === 'text' && typeof block.text === 'string')
|
|
2117
|
+
.map((block) => block.text.trim())
|
|
2118
|
+
.filter(Boolean)
|
|
2119
|
+
.join('\n')
|
|
2120
|
+
.trim();
|
|
2121
|
+
return text.length > 0 ? text : null;
|
|
2122
|
+
}
|
|
2123
|
+
/**
|
|
2124
|
+
* 刷新 prompt 里依赖长期记忆的动态上下文
|
|
2125
|
+
*/
|
|
2126
|
+
async refreshPromptMemoryContext(userInput) {
|
|
2127
|
+
try {
|
|
2128
|
+
const notebookMgr = getNotebookManager() || initNotebookManager(this.promptContext.workingDir);
|
|
2129
|
+
const freshSummary = notebookMgr.getNotebookSummaryForPrompt();
|
|
2130
|
+
this.promptContext.notebookSummary = freshSummary || undefined;
|
|
2131
|
+
}
|
|
2132
|
+
catch {
|
|
2133
|
+
// 笔记本加载失败不影响主流程
|
|
2134
|
+
}
|
|
2135
|
+
const recallQuery = this.extractRecallQuery(userInput);
|
|
2136
|
+
if (!recallQuery || recallQuery.trim().length < 3) {
|
|
2137
|
+
this.promptContext.memoryRecall = undefined;
|
|
2138
|
+
return;
|
|
2139
|
+
}
|
|
2140
|
+
try {
|
|
2141
|
+
const memSearchMgr = getMemorySearchManager();
|
|
2142
|
+
if (!memSearchMgr) {
|
|
2143
|
+
this.promptContext.memoryRecall = undefined;
|
|
2144
|
+
return;
|
|
2145
|
+
}
|
|
2146
|
+
const memoryRecall = await memSearchMgr.recall(recallQuery, 3, {
|
|
2147
|
+
source: 'notebook',
|
|
2148
|
+
mode: 'keyword',
|
|
2149
|
+
});
|
|
2150
|
+
this.promptContext.memoryRecall = memoryRecall || undefined;
|
|
2151
|
+
}
|
|
2152
|
+
catch (error) {
|
|
2153
|
+
if (this.options.debug || process.env.AXON_DEBUG) {
|
|
2154
|
+
console.warn('[MemoryRecall] Failed to refresh prompt memory context:', error);
|
|
2155
|
+
}
|
|
2156
|
+
this.promptContext.memoryRecall = undefined;
|
|
2157
|
+
}
|
|
2158
|
+
}
|
|
2113
2159
|
/**
|
|
2114
2160
|
* 检查是否为 Git 仓库
|
|
2115
2161
|
*/
|
|
@@ -2267,9 +2313,8 @@ export class ConversationLoop {
|
|
|
2267
2313
|
let finalResponse = '';
|
|
2268
2314
|
// 解析模型别名(在循环外部,避免重复解析)
|
|
2269
2315
|
const resolvedModel = modelConfig.resolveAlias(this.options.model || 'sonnet');
|
|
2270
|
-
//
|
|
2271
|
-
|
|
2272
|
-
this.promptContext.memoryRecall = undefined;
|
|
2316
|
+
// 在构建 prompt 前刷新 notebook / recall,确保上一轮刚写入的长期记忆能立刻生效
|
|
2317
|
+
await this.refreshPromptMemoryContext(userInput);
|
|
2273
2318
|
// 构建系统提示词
|
|
2274
2319
|
let systemPrompt;
|
|
2275
2320
|
let promptBlocks;
|
|
@@ -2292,20 +2337,6 @@ export class ConversationLoop {
|
|
|
2292
2337
|
systemPrompt = this.getDefaultSystemPrompt();
|
|
2293
2338
|
}
|
|
2294
2339
|
}
|
|
2295
|
-
// Agent 笔记本:每轮刷新笔记本内容到 promptContext
|
|
2296
|
-
// 确保 agent 在对话中写入的笔记能在下一轮 system prompt 中体现
|
|
2297
|
-
try {
|
|
2298
|
-
const nbMgr = getNotebookManager();
|
|
2299
|
-
if (nbMgr) {
|
|
2300
|
-
const freshSummary = nbMgr.getNotebookSummaryForPrompt();
|
|
2301
|
-
if (freshSummary) {
|
|
2302
|
-
this.promptContext.notebookSummary = freshSummary;
|
|
2303
|
-
}
|
|
2304
|
-
}
|
|
2305
|
-
}
|
|
2306
|
-
catch {
|
|
2307
|
-
// 笔记本加载失败不影响主流程
|
|
2308
|
-
}
|
|
2309
2340
|
while (turns < maxTurns) {
|
|
2310
2341
|
turns++;
|
|
2311
2342
|
// v2.1.34: 每个 turn 开始时重置工具调用历史
|
|
@@ -2425,12 +2456,15 @@ export class ConversationLoop {
|
|
|
2425
2456
|
// 并行执行所有工具(对齐官方 KM5 函数:Promise.all(toolUseBlocks.map(...)))
|
|
2426
2457
|
if (toolUseBlocks.length > 0) {
|
|
2427
2458
|
// Cache Keepalive:工具执行期间保持 prompt cache 活跃
|
|
2428
|
-
const
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2459
|
+
const anthropicClient = this.client.getAnthropicClient();
|
|
2460
|
+
const stopKeepalive = anthropicClient
|
|
2461
|
+
? startCacheKeepalive({
|
|
2462
|
+
client: anthropicClient,
|
|
2463
|
+
model: this.client.getModel(),
|
|
2464
|
+
formattedSystem: formatSystemPrompt(systemPrompt, this.client.getIsOAuth(), promptBlocks),
|
|
2465
|
+
debug: this.options.debug || this.options.verbose,
|
|
2466
|
+
})
|
|
2467
|
+
: () => { };
|
|
2434
2468
|
const execResults = await Promise.all(toolUseBlocks.map(async (block) => {
|
|
2435
2469
|
const toolBlock = block;
|
|
2436
2470
|
const toolName = toolBlock.name || '';
|
|
@@ -2599,6 +2633,90 @@ Guidelines:
|
|
|
2599
2633
|
console.error('Failed to auto-save session:', err);
|
|
2600
2634
|
}
|
|
2601
2635
|
}
|
|
2636
|
+
this.scheduleAutoMemorize();
|
|
2637
|
+
}
|
|
2638
|
+
/**
|
|
2639
|
+
* 提取单条消息中的自然语言文本,用于自动记忆。
|
|
2640
|
+
* 跳过 tool_use/tool_result 等结构化块,避免把工具噪音当成用户画像。
|
|
2641
|
+
*/
|
|
2642
|
+
extractAutoMemoryText(message) {
|
|
2643
|
+
if (message.isMeta)
|
|
2644
|
+
return null;
|
|
2645
|
+
if (message.role !== 'user' && message.role !== 'assistant')
|
|
2646
|
+
return null;
|
|
2647
|
+
if (typeof message.content === 'string') {
|
|
2648
|
+
const text = message.content.trim();
|
|
2649
|
+
return text ? text : null;
|
|
2650
|
+
}
|
|
2651
|
+
if (Array.isArray(message.content)) {
|
|
2652
|
+
const texts = message.content
|
|
2653
|
+
.filter((block) => block.type === 'text' && typeof block.text === 'string' && block.text.trim())
|
|
2654
|
+
.map((block) => block.text.trim());
|
|
2655
|
+
return texts.length > 0 ? texts.join(' ') : null;
|
|
2656
|
+
}
|
|
2657
|
+
return null;
|
|
2658
|
+
}
|
|
2659
|
+
/**
|
|
2660
|
+
* 统计适合自动记忆的对话消息数。
|
|
2661
|
+
* 只统计真正的人类/助手自然语言内容,不统计工具结果。
|
|
2662
|
+
*/
|
|
2663
|
+
getAutoMemorizeMessageCount() {
|
|
2664
|
+
return this.session.getMessages().reduce((count, message) => {
|
|
2665
|
+
return this.extractAutoMemoryText(message) ? count + 1 : count;
|
|
2666
|
+
}, 0);
|
|
2667
|
+
}
|
|
2668
|
+
/**
|
|
2669
|
+
* 后台调度自动记忆,避免阻塞用户拿到回复。
|
|
2670
|
+
*/
|
|
2671
|
+
scheduleAutoMemorize() {
|
|
2672
|
+
if (this.options.isSubAgent || this.autoMemorizePromise) {
|
|
2673
|
+
return;
|
|
2674
|
+
}
|
|
2675
|
+
const messageCount = this.getAutoMemorizeMessageCount();
|
|
2676
|
+
if (messageCount < 4 || messageCount <= this.lastAutoMemorizeAttemptedMessageCount) {
|
|
2677
|
+
return;
|
|
2678
|
+
}
|
|
2679
|
+
const startMessageCount = this.lastAutoMemorizedMessageCount;
|
|
2680
|
+
const endMessageCount = messageCount;
|
|
2681
|
+
this.autoMemorizePromise = this.maybeAutoMemorize(startMessageCount, endMessageCount)
|
|
2682
|
+
.catch((error) => {
|
|
2683
|
+
console.error(chalk.gray('[AutoMemory] Background scheduling failed:', error instanceof Error ? error.message : String(error)));
|
|
2684
|
+
})
|
|
2685
|
+
.finally(() => {
|
|
2686
|
+
this.autoMemorizePromise = null;
|
|
2687
|
+
});
|
|
2688
|
+
}
|
|
2689
|
+
/**
|
|
2690
|
+
* 仅对新增对话消息执行一次自动记忆。
|
|
2691
|
+
*/
|
|
2692
|
+
async maybeAutoMemorize(startMessageCount, endMessageCount) {
|
|
2693
|
+
if (endMessageCount <= this.lastAutoMemorizeAttemptedMessageCount) {
|
|
2694
|
+
return;
|
|
2695
|
+
}
|
|
2696
|
+
this.lastAutoMemorizeAttemptedMessageCount = endMessageCount;
|
|
2697
|
+
await this.autoMemorize({
|
|
2698
|
+
startMessageCount,
|
|
2699
|
+
endMessageCount,
|
|
2700
|
+
updateSuccessCursor: true,
|
|
2701
|
+
});
|
|
2702
|
+
}
|
|
2703
|
+
/**
|
|
2704
|
+
* 为自动记忆创建轻量客户端,尽量使用 Haiku 降本。
|
|
2705
|
+
*/
|
|
2706
|
+
createAutoMemoryClient() {
|
|
2707
|
+
const haikuModel = modelConfig.resolveAlias('haiku');
|
|
2708
|
+
if (this.options.apiKey || this.options.authToken || this.options.baseUrl) {
|
|
2709
|
+
return new ClaudeClient({
|
|
2710
|
+
model: haikuModel,
|
|
2711
|
+
apiKey: this.options.apiKey,
|
|
2712
|
+
authToken: this.options.authToken,
|
|
2713
|
+
baseUrl: this.options.baseUrl,
|
|
2714
|
+
timeout: 120000,
|
|
2715
|
+
maxTokens: 4096,
|
|
2716
|
+
debug: this.options.debug,
|
|
2717
|
+
});
|
|
2718
|
+
}
|
|
2719
|
+
return createClientWithModel(haikuModel);
|
|
2602
2720
|
}
|
|
2603
2721
|
/**
|
|
2604
2722
|
* 流式处理用户消息
|
|
@@ -2642,6 +2760,8 @@ Guidelines:
|
|
|
2642
2760
|
// 使用响应式状态获取最新的权限模式
|
|
2643
2761
|
const currentMode = this.getCurrentPermissionMode();
|
|
2644
2762
|
this.promptContext.permissionMode = currentMode;
|
|
2763
|
+
// 每个 turn 开始前刷新 notebook / recall,确保工具刚写入的长期记忆能进入下一轮推理
|
|
2764
|
+
await this.refreshPromptMemoryContext(userInput);
|
|
2645
2765
|
// 每个 turn 重新构建系统提示词 - 支持运行时权限模式切换 (官方 v2.1.2 Shift+Tab)
|
|
2646
2766
|
let systemPrompt;
|
|
2647
2767
|
let promptBlocks;
|
|
@@ -2762,6 +2882,13 @@ Guidelines:
|
|
|
2762
2882
|
tool.input += event.input || '';
|
|
2763
2883
|
}
|
|
2764
2884
|
}
|
|
2885
|
+
else if (event.type === 'tool_use_complete') {
|
|
2886
|
+
const completedToolId = event.id || currentToolId;
|
|
2887
|
+
const tool = toolCalls.get(completedToolId);
|
|
2888
|
+
if (tool && !tool.isServerTool) {
|
|
2889
|
+
tool.input = JSON.stringify(event.input || {});
|
|
2890
|
+
}
|
|
2891
|
+
}
|
|
2765
2892
|
else if (event.type === 'web_search_result') {
|
|
2766
2893
|
// web_search_tool_result 从 finalMessage 中提取,收集搜索结果
|
|
2767
2894
|
const resultBlock = event.data;
|
|
@@ -2945,12 +3072,15 @@ Guidelines:
|
|
|
2945
3072
|
}
|
|
2946
3073
|
// 第三步:并行执行所有工具(核心修复)
|
|
2947
3074
|
// Cache Keepalive:工具执行期间保持 prompt cache 活跃
|
|
2948
|
-
const
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
3075
|
+
const anthropicClient = this.client.getAnthropicClient();
|
|
3076
|
+
const stopKeepalive = anthropicClient
|
|
3077
|
+
? startCacheKeepalive({
|
|
3078
|
+
client: anthropicClient,
|
|
3079
|
+
model: this.client.getModel(),
|
|
3080
|
+
formattedSystem: formatSystemPrompt(systemPrompt, this.client.getIsOAuth(), promptBlocks),
|
|
3081
|
+
debug: this.options.debug || this.options.verbose,
|
|
3082
|
+
})
|
|
3083
|
+
: () => { };
|
|
2954
3084
|
const execPromises = [];
|
|
2955
3085
|
for (const [id, tool] of clientToolCalls) {
|
|
2956
3086
|
const input = parsedInputs.get(id);
|
|
@@ -3105,13 +3235,18 @@ Guidelines:
|
|
|
3105
3235
|
}
|
|
3106
3236
|
}
|
|
3107
3237
|
else if (streamStopReason === 'max_tokens') {
|
|
3108
|
-
//
|
|
3109
|
-
//
|
|
3110
|
-
//
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3238
|
+
// 对齐官方:max_tokens 截断时,yield 错误消息并停止,不尝试继续
|
|
3239
|
+
// 官方行为:输出 "Claude's response exceeded the N output token maximum.
|
|
3240
|
+
// Set CLAUDE_CODE_MAX_OUTPUT_TOKENS env var to configure."
|
|
3241
|
+
// 之前的 "continue" 方案会导致截断的 tool_use JSON 无法解析 → orphaned tool_use → 崩溃
|
|
3242
|
+
const resolvedModelForLimit = modelConfig.resolveAlias(this.options.model || 'sonnet');
|
|
3243
|
+
const currentMax = getMaxOutputTokens(resolvedModelForLimit);
|
|
3244
|
+
yield {
|
|
3245
|
+
type: 'text',
|
|
3246
|
+
content: `Claude's response exceeded the ${currentMax} output token maximum. ` +
|
|
3247
|
+
`Set CLAUDE_CODE_MAX_OUTPUT_TOKENS environment variable to a higher value to configure.`,
|
|
3248
|
+
};
|
|
3249
|
+
break;
|
|
3115
3250
|
}
|
|
3116
3251
|
else if (this.options.isSubAgent && turns === 1) {
|
|
3117
3252
|
// v3.4: Worker 子任务模式下,第一轮没有工具调用时不直接退出
|
|
@@ -3140,6 +3275,9 @@ Guidelines:
|
|
|
3140
3275
|
}
|
|
3141
3276
|
setSession(session) {
|
|
3142
3277
|
this.session = session;
|
|
3278
|
+
this.lastAutoMemorizeAttemptedMessageCount = 0;
|
|
3279
|
+
this.lastAutoMemorizedMessageCount = 0;
|
|
3280
|
+
this.autoMemorizePromise = null;
|
|
3143
3281
|
// v2.1.27: 设置全局会话 ID 以供工具使用(如 gh pr create 自动链接)
|
|
3144
3282
|
setCurrentSessionId(session.sessionId);
|
|
3145
3283
|
}
|
|
@@ -3221,20 +3359,31 @@ Guidelines:
|
|
|
3221
3359
|
* - 使用 haiku 模型降低成本,只提取结构化信息
|
|
3222
3360
|
* - 静默失败,不影响退出流程
|
|
3223
3361
|
*/
|
|
3224
|
-
async autoMemorize() {
|
|
3362
|
+
async autoMemorize(options) {
|
|
3225
3363
|
try {
|
|
3226
3364
|
const nbMgr = getNotebookManager();
|
|
3227
3365
|
if (!nbMgr)
|
|
3228
|
-
return;
|
|
3366
|
+
return false;
|
|
3229
3367
|
const messages = this.session.getMessages();
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3368
|
+
const meaningfulMessages = messages.filter((message) => this.extractAutoMemoryText(message));
|
|
3369
|
+
const endMessageCount = Math.min(options?.endMessageCount ?? meaningfulMessages.length, meaningfulMessages.length);
|
|
3370
|
+
const startMessageCount = Math.max(0, Math.min(options?.startMessageCount ?? this.lastAutoMemorizedMessageCount, endMessageCount));
|
|
3371
|
+
const messagesToSummarize = meaningfulMessages.slice(startMessageCount, endMessageCount);
|
|
3372
|
+
const shouldAdvanceSuccessCursor = options?.updateSuccessCursor ?? true;
|
|
3373
|
+
// 对话太短(少于4条有效文本消息 = 2轮对话),没什么可提取的
|
|
3374
|
+
if (endMessageCount < 4 || messagesToSummarize.length === 0)
|
|
3375
|
+
return false;
|
|
3233
3376
|
// 读取当前笔记本内容
|
|
3377
|
+
const currentProfile = nbMgr.read('profile');
|
|
3234
3378
|
const currentExperience = nbMgr.read('experience');
|
|
3235
3379
|
const currentProject = nbMgr.read('project');
|
|
3380
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
3236
3381
|
// 构造提取 prompt
|
|
3237
3382
|
const extractionPrompt = `你是一个记忆提取器。分析以下对话,提取值得跨会话记住的信息。
|
|
3383
|
+
今天日期:${today}
|
|
3384
|
+
|
|
3385
|
+
当前 profile 笔记本内容:
|
|
3386
|
+
${currentProfile || '(空)'}
|
|
3238
3387
|
|
|
3239
3388
|
当前 experience 笔记本内容:
|
|
3240
3389
|
${currentExperience || '(空)'}
|
|
@@ -3244,19 +3393,45 @@ ${currentProject || '(空)'}
|
|
|
3244
3393
|
|
|
3245
3394
|
规则:
|
|
3246
3395
|
1. 只提取真正有长期价值的信息,忽略一次性的技术细节
|
|
3247
|
-
2.
|
|
3248
|
-
3.
|
|
3249
|
-
4.
|
|
3250
|
-
5.
|
|
3251
|
-
6.
|
|
3252
|
-
7.
|
|
3253
|
-
8.
|
|
3254
|
-
9.
|
|
3396
|
+
2. profile 笔记本记录:稳定的用户画像,如身份背景、长期偏好、表达风格、沟通习惯、价值取向
|
|
3397
|
+
3. experience 笔记本记录:如何与用户协作更顺畅的跨项目经验,如工作模式、常见要求、反复纠正点、偏好的做事方式
|
|
3398
|
+
4. project 笔记本记录:项目特有的陷阱、隐藏依赖、重要架构决策、踩过的坑
|
|
3399
|
+
5. profile 只记“相对稳定、以后大概率还成立”的信息;短期状态、临时任务、一次性情绪不要写进 profile
|
|
3400
|
+
6. 如果用户明确纠正了你对他/她的理解,这类纠正优先写入 profile 或 experience
|
|
3401
|
+
7. 如果没有新信息值得记录,返回 NO_UPDATE
|
|
3402
|
+
8. 如果有更新,返回完整的笔记本内容(不是增量,是完整替换)
|
|
3403
|
+
9. profile 不超过 2000 tokens,experience 不超过 4000 tokens,project 不超过 8000 tokens
|
|
3404
|
+
10. 保留原有内容,但要主动合并同义 bullet;如果新证据推翻旧理解,必须改写或删除旧 bullet,不能把互相冲突的理解一起保留
|
|
3405
|
+
11. 不要编造用户信息;必须来自对话证据。没有证据支撑的内容,不要写进事实 section
|
|
3406
|
+
12. 特别注意提取决策链,即“偏好什么 / 讨厌什么 / 会如何表达不满 / 遇到什么最在意”
|
|
3407
|
+
13. 不要输出解释,不要输出 markdown code fence,只输出指定格式
|
|
3408
|
+
14. 如需更新 profile,必须使用以下固定结构和标题,顺序不要变;未知 section 可以留空,但不要删除标题:
|
|
3409
|
+
# User Profile
|
|
3410
|
+
|
|
3411
|
+
## Basic Info
|
|
3412
|
+
## Stable Preferences
|
|
3413
|
+
## Communication Style
|
|
3414
|
+
## Working Style
|
|
3415
|
+
## Decision Signals
|
|
3416
|
+
## Values & Motivations
|
|
3417
|
+
## Do Not Assume / Open Questions
|
|
3418
|
+
15. profile 里的每条 bullet 尽量只表达一个稳定信号,避免把多种偏好揉成一条长句
|
|
3419
|
+
16. profile 的 bullet 优先使用这个轻量格式:- 信号 [updated: YYYY-MM-DD; evidence: 简短证据]
|
|
3420
|
+
17. evidence 只需简短说明证据来源,例如 “user stated directly” / “explicit correction about tone” / “repeatedly requested concise Chinese replies”
|
|
3421
|
+
18. 优先修改已有 bullet,避免同义重复和越写越散
|
|
3422
|
+
19. “Do Not Assume / Open Questions” 只放高相关但仍未确认的信息;一旦对话里已确认,就从 open questions 里删掉,不要继续保留
|
|
3423
|
+
20. experience 更偏“怎么配合这个用户工作”,不要重复 profile 里的稳定画像
|
|
3424
|
+
21. project 只写当前项目相关内容,不要把通用人格特征写进 project
|
|
3255
3425
|
|
|
3256
3426
|
输出格式(严格遵守):
|
|
3257
3427
|
如果无需更新:
|
|
3258
3428
|
NO_UPDATE
|
|
3259
3429
|
|
|
3430
|
+
如果需要更新 profile:
|
|
3431
|
+
===PROFILE===
|
|
3432
|
+
(完整的 profile 笔记本内容)
|
|
3433
|
+
===END_PROFILE===
|
|
3434
|
+
|
|
3260
3435
|
如果需要更新 experience:
|
|
3261
3436
|
===EXPERIENCE===
|
|
3262
3437
|
(完整的 experience 笔记本内容)
|
|
@@ -3267,33 +3442,25 @@ NO_UPDATE
|
|
|
3267
3442
|
(完整的 project 笔记本内容)
|
|
3268
3443
|
===END_PROJECT===
|
|
3269
3444
|
|
|
3270
|
-
|
|
3271
|
-
8. 在笔记本末尾维护一行统计:"<!-- autoMemorize: 更新于 {YYYY-MM-DD}, 累计 N 次 -->",每次更新时 N+1`;
|
|
3445
|
+
可以同时更新三个,也可以只更新其中一个或两个。`;
|
|
3272
3446
|
// 将对话消息精简为文本摘要(只取用户和助手的文本内容,忽略工具调用细节)
|
|
3273
|
-
const conversationSummary =
|
|
3274
|
-
.filter((m) => m.role === 'user' || m.role === 'assistant')
|
|
3447
|
+
const conversationSummary = messagesToSummarize
|
|
3275
3448
|
.map((m) => {
|
|
3449
|
+
const text = this.extractAutoMemoryText(m);
|
|
3450
|
+
if (!text)
|
|
3451
|
+
return null;
|
|
3276
3452
|
const role = m.role === 'user' ? '用户' : '助手';
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
}
|
|
3280
|
-
if (Array.isArray(m.content)) {
|
|
3281
|
-
const textBlocks = m.content
|
|
3282
|
-
.filter((b) => b.type === 'text' && b.text)
|
|
3283
|
-
.map((b) => b.text.substring(0, m.role === 'user' ? 1000 : 800));
|
|
3284
|
-
if (textBlocks.length > 0) {
|
|
3285
|
-
return `${role}: ${textBlocks.join(' ')}`;
|
|
3286
|
-
}
|
|
3287
|
-
}
|
|
3288
|
-
return null;
|
|
3453
|
+
const limit = m.role === 'user' ? 1000 : 800;
|
|
3454
|
+
return `${role}: ${text.substring(0, limit)}`;
|
|
3289
3455
|
})
|
|
3290
3456
|
.filter(Boolean)
|
|
3291
3457
|
.join('\n');
|
|
3292
3458
|
// 如果对话内容太少,跳过
|
|
3293
3459
|
if (conversationSummary.length < 100)
|
|
3294
|
-
return;
|
|
3460
|
+
return false;
|
|
3295
3461
|
// 使用轻量模型调用 API
|
|
3296
|
-
const
|
|
3462
|
+
const autoMemoryClient = this.createAutoMemoryClient();
|
|
3463
|
+
const response = await autoMemoryClient.createMessage([
|
|
3297
3464
|
{ role: 'user', content: `${extractionPrompt}\n\n===对话内容===\n${conversationSummary.substring(0, 20000)}` },
|
|
3298
3465
|
], [], // 不需要工具
|
|
3299
3466
|
'你是记忆提取器,只输出指定格式,不输出其他内容。');
|
|
@@ -3302,8 +3469,20 @@ NO_UPDATE
|
|
|
3302
3469
|
.filter((b) => b.type === 'text' && b.text)
|
|
3303
3470
|
.map((b) => b.text)
|
|
3304
3471
|
.join('');
|
|
3305
|
-
if (!responseText || responseText.includes('NO_UPDATE'))
|
|
3306
|
-
|
|
3472
|
+
if (!responseText || responseText.includes('NO_UPDATE')) {
|
|
3473
|
+
if (shouldAdvanceSuccessCursor) {
|
|
3474
|
+
this.lastAutoMemorizedMessageCount = endMessageCount;
|
|
3475
|
+
}
|
|
3476
|
+
return true;
|
|
3477
|
+
}
|
|
3478
|
+
// 提取并写入 profile
|
|
3479
|
+
const profileMatch = responseText.match(/===PROFILE===\n([\s\S]*?)\n===END_PROFILE===/);
|
|
3480
|
+
if (profileMatch && profileMatch[1].trim()) {
|
|
3481
|
+
const result = nbMgr.write('profile', profileMatch[1].trim());
|
|
3482
|
+
if (result.success) {
|
|
3483
|
+
console.error(chalk.gray('[AutoMemory] profile notebook updated'));
|
|
3484
|
+
}
|
|
3485
|
+
}
|
|
3307
3486
|
// 提取并写入 experience
|
|
3308
3487
|
const expMatch = responseText.match(/===EXPERIENCE===\n([\s\S]*?)\n===END_EXPERIENCE===/);
|
|
3309
3488
|
if (expMatch && expMatch[1].trim()) {
|
|
@@ -3325,10 +3504,15 @@ NO_UPDATE
|
|
|
3325
3504
|
if (memSearchMgr) {
|
|
3326
3505
|
memSearchMgr.markDirty();
|
|
3327
3506
|
}
|
|
3507
|
+
if (shouldAdvanceSuccessCursor) {
|
|
3508
|
+
this.lastAutoMemorizedMessageCount = endMessageCount;
|
|
3509
|
+
}
|
|
3510
|
+
return true;
|
|
3328
3511
|
}
|
|
3329
3512
|
catch (error) {
|
|
3330
3513
|
// 非静默失败,记录错误信息
|
|
3331
3514
|
console.error(chalk.gray('[AutoMemory] Memory extraction failed:', error instanceof Error ? error.message : String(error)));
|
|
3515
|
+
return false;
|
|
3332
3516
|
}
|
|
3333
3517
|
}
|
|
3334
3518
|
/**
|