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
|
@@ -3,17 +3,22 @@
|
|
|
3
3
|
* 处理 AI 向用户提问并等待回答
|
|
4
4
|
*/
|
|
5
5
|
import { randomUUID } from 'crypto';
|
|
6
|
+
import { getCmuxBridge } from '../../notifications/cmux.js';
|
|
6
7
|
/**
|
|
7
8
|
* 用户交互处理器
|
|
8
9
|
*/
|
|
9
10
|
export class UserInteractionHandler {
|
|
10
11
|
pendingQuestions = new Map();
|
|
11
12
|
ws = null;
|
|
13
|
+
wsVersion = 0;
|
|
12
14
|
sessionId = null;
|
|
13
15
|
/**
|
|
14
16
|
* 设置 WebSocket 连接
|
|
15
17
|
*/
|
|
16
18
|
setWebSocket(ws) {
|
|
19
|
+
if (this.ws !== ws) {
|
|
20
|
+
this.wsVersion += 1;
|
|
21
|
+
}
|
|
17
22
|
this.ws = ws;
|
|
18
23
|
}
|
|
19
24
|
/**
|
|
@@ -45,6 +50,7 @@ export class UserInteractionHandler {
|
|
|
45
50
|
resolve,
|
|
46
51
|
reject,
|
|
47
52
|
payload,
|
|
53
|
+
deliveredWebSocketVersion: null,
|
|
48
54
|
};
|
|
49
55
|
// 设置超时
|
|
50
56
|
if (config.timeout && config.timeout > 0) {
|
|
@@ -58,7 +64,10 @@ export class UserInteractionHandler {
|
|
|
58
64
|
type: 'user_question',
|
|
59
65
|
payload: { ...payload, sessionId: this.sessionId },
|
|
60
66
|
}));
|
|
67
|
+
pending.deliveredWebSocketVersion = this.wsVersion;
|
|
61
68
|
console.log(`[UserInteraction] Sending question: ${config.header} (${requestId}), session: ${this.sessionId}`);
|
|
69
|
+
// cmux 集成:Agent 等待用户输入时通知 cmux 终端
|
|
70
|
+
getCmuxBridge().onWaitingForInput(config.question);
|
|
62
71
|
}
|
|
63
72
|
catch (error) {
|
|
64
73
|
this.cleanup(requestId);
|
|
@@ -129,5 +138,24 @@ export class UserInteractionHandler {
|
|
|
129
138
|
getPendingPayloads() {
|
|
130
139
|
return Array.from(this.pendingQuestions.values()).map(p => p.payload);
|
|
131
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* 获取当前 ws 还未收到的待处理问题。
|
|
143
|
+
* 用于会话恢复时补发,避免把已经实时送达当前连接的问题再发一遍。
|
|
144
|
+
*/
|
|
145
|
+
getUndeliveredPayloadsForCurrentWebSocket() {
|
|
146
|
+
return Array.from(this.pendingQuestions.values())
|
|
147
|
+
.filter((pending) => pending.deliveredWebSocketVersion !== this.wsVersion)
|
|
148
|
+
.map((pending) => pending.payload);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* 标记某个问题已经送达当前 ws。
|
|
152
|
+
*/
|
|
153
|
+
markDeliveredToCurrentWebSocket(requestId) {
|
|
154
|
+
const pending = this.pendingQuestions.get(requestId);
|
|
155
|
+
if (!pending) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
pending.deliveredWebSocketVersion = this.wsVersion;
|
|
159
|
+
}
|
|
132
160
|
}
|
|
133
161
|
//# sourceMappingURL=user-interaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-interaction.js","sourceRoot":"","sources":["../../../src/web/server/user-interaction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"user-interaction.js","sourceRoot":"","sources":["../../../src/web/server/user-interaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,11 +18,25 @@
|
|
|
18
18
|
* 不读:环境变量、.credentials.json、config.json、Keychain、内置代理。
|
|
19
19
|
* CLI 模式不受影响(CLI 继续用 src/auth/index.ts 的 initAuth/getAuth)。
|
|
20
20
|
*/
|
|
21
|
+
import { type CodexAuthConfig } from './codex-auth-manager.js';
|
|
21
22
|
import type { AuthStatus } from '../shared/types.js';
|
|
23
|
+
import { type WebRuntimeBackend, type WebRuntimeProvider } from '../shared/model-catalog.js';
|
|
22
24
|
export interface WebAuthCredentials {
|
|
23
25
|
apiKey?: string;
|
|
24
26
|
authToken?: string;
|
|
25
27
|
baseUrl?: string;
|
|
28
|
+
accountId?: string;
|
|
29
|
+
}
|
|
30
|
+
interface WebUiSettings {
|
|
31
|
+
apiKey?: string;
|
|
32
|
+
authPriority: 'apiKey' | 'oauth' | 'auto';
|
|
33
|
+
apiBaseUrl?: string;
|
|
34
|
+
apiProvider?: string;
|
|
35
|
+
customModelName?: string;
|
|
36
|
+
runtimeBackend?: WebRuntimeBackend;
|
|
37
|
+
runtimeProvider?: 'anthropic' | 'codex';
|
|
38
|
+
defaultModelByBackend?: Partial<Record<WebRuntimeBackend, string>>;
|
|
39
|
+
customModelCatalogByBackend?: Partial<Record<WebRuntimeBackend, string[]>>;
|
|
26
40
|
}
|
|
27
41
|
declare class WebAuthProvider {
|
|
28
42
|
/**
|
|
@@ -31,6 +45,9 @@ declare class WebAuthProvider {
|
|
|
31
45
|
* 这样 Railway/Docker 等容器化部署只需设置环境变量,无需持久化 settings.json。
|
|
32
46
|
*/
|
|
33
47
|
private readSettings;
|
|
48
|
+
private inferRuntimeBackend;
|
|
49
|
+
private getStoredModelForBackend;
|
|
50
|
+
private getNormalizedModelMap;
|
|
34
51
|
/** 防止并发刷新 */
|
|
35
52
|
private refreshPromise;
|
|
36
53
|
/**
|
|
@@ -43,16 +60,16 @@ declare class WebAuthProvider {
|
|
|
43
60
|
*
|
|
44
61
|
* 返回 true 表示 token 有效或已刷新成功
|
|
45
62
|
*/
|
|
46
|
-
ensureValidToken(): Promise<boolean>;
|
|
63
|
+
ensureValidToken(runtimeBackend?: WebRuntimeBackend): Promise<boolean>;
|
|
47
64
|
/**
|
|
48
65
|
* 获取当前应使用的认证凭证(同步版本)
|
|
49
66
|
* 注意:此方法不做 token 过期检查,调用方应先 await ensureValidToken()
|
|
50
67
|
*/
|
|
51
|
-
getCredentials(): WebAuthCredentials;
|
|
68
|
+
getCredentials(runtimeBackend?: WebRuntimeBackend): WebAuthCredentials;
|
|
52
69
|
/**
|
|
53
70
|
* 是否已认证
|
|
54
71
|
*/
|
|
55
|
-
isAuthenticated(): boolean;
|
|
72
|
+
isAuthenticated(runtimeBackend?: WebRuntimeBackend): boolean;
|
|
56
73
|
/**
|
|
57
74
|
* 判断当前用户是否通过 Axon Cloud 认证(apiBaseUrl 包含 chatbi.site)
|
|
58
75
|
*/
|
|
@@ -96,6 +113,7 @@ declare class WebAuthProvider {
|
|
|
96
113
|
* 清除所有认证(API Key + OAuth)
|
|
97
114
|
*/
|
|
98
115
|
clearAll(): void;
|
|
116
|
+
activateCodexLogin(config?: Partial<CodexAuthConfig>): Promise<void>;
|
|
99
117
|
/**
|
|
100
118
|
* 验证 API Key 是否有效
|
|
101
119
|
*/
|
|
@@ -108,6 +126,12 @@ declare class WebAuthProvider {
|
|
|
108
126
|
* 获取 WebUI 的自定义模型名
|
|
109
127
|
*/
|
|
110
128
|
getCustomModelName(): string | undefined;
|
|
129
|
+
getCodexModelName(): string | undefined;
|
|
130
|
+
getCodexBaseUrl(settings?: WebUiSettings): string;
|
|
131
|
+
getRuntimeBackend(): WebRuntimeBackend;
|
|
132
|
+
getRuntimeProvider(): WebRuntimeProvider;
|
|
133
|
+
getDefaultModelByBackend(): Partial<Record<WebRuntimeBackend, string>>;
|
|
134
|
+
getCustomModelCatalogByBackend(): Partial<Record<WebRuntimeBackend, string[]>>;
|
|
111
135
|
/**
|
|
112
136
|
* 获取认证提供商
|
|
113
137
|
*/
|
|
@@ -119,6 +143,14 @@ declare class WebAuthProvider {
|
|
|
119
143
|
* - 否则降级为 authToken(让 API 返回真实错误)
|
|
120
144
|
*/
|
|
121
145
|
private getOAuthCredentials;
|
|
146
|
+
private getCodexCredentials;
|
|
147
|
+
getCodexStatus(): {
|
|
148
|
+
authenticated: boolean;
|
|
149
|
+
displayName?: string;
|
|
150
|
+
email?: string;
|
|
151
|
+
accountId?: string;
|
|
152
|
+
expiresAt?: number;
|
|
153
|
+
};
|
|
122
154
|
}
|
|
123
155
|
export declare const webAuth: WebAuthProvider;
|
|
124
156
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-auth.d.ts","sourceRoot":"","sources":["../../../src/web/server/web-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"web-auth.d.ts","sourceRoot":"","sources":["../../../src/web/server/web-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,52 @@
|
|
|
21
21
|
import * as fs from 'fs';
|
|
22
22
|
import { configManager } from '../../config/index.js';
|
|
23
23
|
import { oauthManager } from './oauth-manager.js';
|
|
24
|
+
import { codexAuthManager } from './codex-auth-manager.js';
|
|
24
25
|
import Anthropic from '@anthropic-ai/sdk';
|
|
26
|
+
import { getProviderForRuntimeBackend, supportsDynamicModelCatalogForBackend, } from '../shared/model-catalog.js';
|
|
27
|
+
import { getDefaultBaseUrlForRuntimeBackend, getRuntimeOAuthRefreshStrategy, } from '../shared/runtime-capabilities.js';
|
|
28
|
+
import { normalizeRuntimeConfigShape, } from '../shared/setup-runtime.js';
|
|
29
|
+
function isCodexCompatibleModel(model) {
|
|
30
|
+
if (!model)
|
|
31
|
+
return false;
|
|
32
|
+
const normalized = model.trim();
|
|
33
|
+
if (!normalized)
|
|
34
|
+
return false;
|
|
35
|
+
return /^(gpt-|o\d(?:$|[-_])|codex)/i.test(normalized) || normalized.toLowerCase().includes('codex');
|
|
36
|
+
}
|
|
37
|
+
function isCodexChatGptBaseUrlCandidate(baseUrl) {
|
|
38
|
+
try {
|
|
39
|
+
const parsed = new URL(baseUrl);
|
|
40
|
+
const normalizedPath = parsed.pathname.replace(/\/+$/, '');
|
|
41
|
+
if (parsed.hostname === 'chatgpt.com' && normalizedPath === '/backend-api/codex') {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
return /\/backend-api\/codex$/i.test(normalizedPath);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function isCodexApiKeyBaseUrlCandidate(baseUrl) {
|
|
51
|
+
try {
|
|
52
|
+
const parsed = new URL(baseUrl);
|
|
53
|
+
const normalizedPath = parsed.pathname.replace(/\/+$/, '');
|
|
54
|
+
if (normalizedPath === '/v1') {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return isCodexChatGptBaseUrlCandidate(baseUrl);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function isRuntimeConfigApiProvider(value) {
|
|
64
|
+
return value === 'anthropic'
|
|
65
|
+
|| value === 'openai-compatible'
|
|
66
|
+
|| value === 'axon-cloud'
|
|
67
|
+
|| value === 'bedrock'
|
|
68
|
+
|| value === 'vertex';
|
|
69
|
+
}
|
|
25
70
|
// ============ WebAuthProvider ============
|
|
26
71
|
class WebAuthProvider {
|
|
27
72
|
// ---------- 读取 settings.json ----------
|
|
@@ -39,7 +84,12 @@ class WebAuthProvider {
|
|
|
39
84
|
apiKey: raw.apiKey,
|
|
40
85
|
authPriority: raw.authPriority || 'auto',
|
|
41
86
|
apiBaseUrl: raw.apiBaseUrl,
|
|
87
|
+
apiProvider: raw.apiProvider,
|
|
42
88
|
customModelName: raw.customModelName,
|
|
89
|
+
runtimeBackend: raw.runtimeBackend,
|
|
90
|
+
runtimeProvider: raw.runtimeProvider || 'anthropic',
|
|
91
|
+
defaultModelByBackend: raw.defaultModelByBackend,
|
|
92
|
+
customModelCatalogByBackend: raw.customModelCatalogByBackend,
|
|
43
93
|
};
|
|
44
94
|
// settings.json 没有 apiKey 时,回退到环境变量
|
|
45
95
|
if (!result.apiKey) {
|
|
@@ -68,7 +118,61 @@ class WebAuthProvider {
|
|
|
68
118
|
apiKey: envKey,
|
|
69
119
|
authPriority: 'auto',
|
|
70
120
|
apiBaseUrl: envBaseUrl,
|
|
121
|
+
apiProvider: undefined,
|
|
122
|
+
runtimeBackend: undefined,
|
|
123
|
+
runtimeProvider: 'anthropic',
|
|
124
|
+
defaultModelByBackend: undefined,
|
|
125
|
+
customModelCatalogByBackend: undefined,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
inferRuntimeBackend(settings) {
|
|
129
|
+
const oauthConfig = oauthManager.getOAuthConfig();
|
|
130
|
+
if (settings.authPriority === 'oauth'
|
|
131
|
+
&& oauthConfig?.subscriptionType === 'console'
|
|
132
|
+
&& settings.runtimeProvider !== 'codex'
|
|
133
|
+
&& (!settings.runtimeBackend || settings.runtimeBackend === 'claude-subscription')) {
|
|
134
|
+
return 'claude-compatible-api';
|
|
135
|
+
}
|
|
136
|
+
if (settings.apiBaseUrl?.includes('chatbi.site')) {
|
|
137
|
+
return 'axon-cloud';
|
|
138
|
+
}
|
|
139
|
+
return normalizeRuntimeConfigShape({
|
|
140
|
+
updates: {
|
|
141
|
+
runtimeBackend: settings.runtimeBackend,
|
|
142
|
+
runtimeProvider: settings.runtimeProvider,
|
|
143
|
+
apiProvider: isRuntimeConfigApiProvider(settings.apiProvider) ? settings.apiProvider : undefined,
|
|
144
|
+
authPriority: settings.authPriority,
|
|
145
|
+
},
|
|
146
|
+
}).runtimeBackend;
|
|
147
|
+
}
|
|
148
|
+
getStoredModelForBackend(backend, settings = this.readSettings()) {
|
|
149
|
+
const mapped = settings.defaultModelByBackend?.[backend]?.trim();
|
|
150
|
+
if (mapped) {
|
|
151
|
+
return mapped;
|
|
152
|
+
}
|
|
153
|
+
const legacyModel = settings.customModelName?.trim();
|
|
154
|
+
if (!legacyModel) {
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
if (supportsDynamicModelCatalogForBackend(backend)) {
|
|
158
|
+
return legacyModel;
|
|
159
|
+
}
|
|
160
|
+
const provider = getProviderForRuntimeBackend(backend);
|
|
161
|
+
if (provider === 'codex') {
|
|
162
|
+
return isCodexCompatibleModel(legacyModel) ? legacyModel : undefined;
|
|
163
|
+
}
|
|
164
|
+
return !isCodexCompatibleModel(legacyModel) ? legacyModel : undefined;
|
|
165
|
+
}
|
|
166
|
+
getNormalizedModelMap(settings = this.readSettings()) {
|
|
167
|
+
const runtimeBackend = this.inferRuntimeBackend(settings);
|
|
168
|
+
const models = {
|
|
169
|
+
...(settings.defaultModelByBackend || {}),
|
|
71
170
|
};
|
|
171
|
+
const currentModel = this.getStoredModelForBackend(runtimeBackend, settings);
|
|
172
|
+
if (currentModel) {
|
|
173
|
+
models[runtimeBackend] = currentModel;
|
|
174
|
+
}
|
|
175
|
+
return models;
|
|
72
176
|
}
|
|
73
177
|
// ---------- Token 有效性保障(对齐官方 NM() 语义) ----------
|
|
74
178
|
/** 防止并发刷新 */
|
|
@@ -83,12 +187,38 @@ class WebAuthProvider {
|
|
|
83
187
|
*
|
|
84
188
|
* 返回 true 表示 token 有效或已刷新成功
|
|
85
189
|
*/
|
|
86
|
-
async ensureValidToken() {
|
|
190
|
+
async ensureValidToken(runtimeBackend = this.inferRuntimeBackend(this.readSettings())) {
|
|
87
191
|
const settings = this.readSettings();
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (
|
|
192
|
+
const refreshStrategy = getRuntimeOAuthRefreshStrategy(runtimeBackend, {
|
|
193
|
+
authPriority: settings.authPriority,
|
|
194
|
+
});
|
|
195
|
+
if (refreshStrategy === 'codex') {
|
|
196
|
+
const codexConfig = codexAuthManager.getAuthConfig();
|
|
197
|
+
if (!codexConfig?.accessToken)
|
|
198
|
+
return true;
|
|
199
|
+
if (!codexAuthManager.isTokenExpired())
|
|
200
|
+
return true;
|
|
201
|
+
if (this.refreshPromise) {
|
|
202
|
+
return this.refreshPromise;
|
|
203
|
+
}
|
|
204
|
+
this.refreshPromise = (async () => {
|
|
205
|
+
try {
|
|
206
|
+
console.log('[WebAuth] Codex token expiring soon, auto-refreshing...');
|
|
207
|
+
await codexAuthManager.refreshToken();
|
|
208
|
+
console.log('[WebAuth] Codex token refreshed successfully');
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
console.error('[WebAuth] Codex token refresh failed:', err.message);
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
finally {
|
|
216
|
+
this.refreshPromise = null;
|
|
217
|
+
}
|
|
218
|
+
})();
|
|
219
|
+
return this.refreshPromise;
|
|
220
|
+
}
|
|
221
|
+
if (refreshStrategy !== 'anthropic')
|
|
92
222
|
return true;
|
|
93
223
|
// 检查是否有 OAuth 配置
|
|
94
224
|
const config = oauthManager.getOAuthConfig();
|
|
@@ -125,38 +255,40 @@ class WebAuthProvider {
|
|
|
125
255
|
* 获取当前应使用的认证凭证(同步版本)
|
|
126
256
|
* 注意:此方法不做 token 过期检查,调用方应先 await ensureValidToken()
|
|
127
257
|
*/
|
|
128
|
-
getCredentials() {
|
|
258
|
+
getCredentials(runtimeBackend = this.inferRuntimeBackend(this.readSettings())) {
|
|
129
259
|
const settings = this.readSettings();
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
260
|
+
if (runtimeBackend === 'codex-subscription') {
|
|
261
|
+
const codexCreds = this.getCodexCredentials();
|
|
262
|
+
return {
|
|
263
|
+
apiKey: codexCreds.apiKey,
|
|
264
|
+
authToken: codexCreds.authToken,
|
|
265
|
+
accountId: codexCreds.accountId,
|
|
266
|
+
baseUrl: this.getCodexBaseUrl(settings),
|
|
267
|
+
};
|
|
136
268
|
}
|
|
137
|
-
|
|
269
|
+
const result = {};
|
|
270
|
+
const isAnthropicOAuthMode = settings.authPriority === 'oauth'
|
|
271
|
+
&& (runtimeBackend === 'claude-subscription' || runtimeBackend === 'claude-compatible-api');
|
|
272
|
+
if (isAnthropicOAuthMode) {
|
|
273
|
+
// OAuth 凭据由 Anthropic 官方颁发,必须发到 api.anthropic.com
|
|
274
|
+
// 不能使用用户之前配置的自定义 apiBaseUrl(可能是代理,不认 OAuth key)
|
|
138
275
|
const oauthCreds = this.getOAuthCredentials();
|
|
139
276
|
result.apiKey = oauthCreds.apiKey;
|
|
140
277
|
result.authToken = oauthCreds.authToken;
|
|
141
278
|
}
|
|
142
279
|
else {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
result.apiKey = settings.apiKey;
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
const oauthCreds = this.getOAuthCredentials();
|
|
149
|
-
result.apiKey = oauthCreds.apiKey;
|
|
150
|
-
result.authToken = oauthCreds.authToken;
|
|
280
|
+
if (settings.apiBaseUrl) {
|
|
281
|
+
result.baseUrl = settings.apiBaseUrl;
|
|
151
282
|
}
|
|
283
|
+
result.apiKey = settings.apiKey;
|
|
152
284
|
}
|
|
153
285
|
return result;
|
|
154
286
|
}
|
|
155
287
|
/**
|
|
156
288
|
* 是否已认证
|
|
157
289
|
*/
|
|
158
|
-
isAuthenticated() {
|
|
159
|
-
const creds = this.getCredentials();
|
|
290
|
+
isAuthenticated(runtimeBackend) {
|
|
291
|
+
const creds = this.getCredentials(runtimeBackend);
|
|
160
292
|
return !!(creds.apiKey || creds.authToken);
|
|
161
293
|
}
|
|
162
294
|
// ---------- 状态查询(给前端显示用) ----------
|
|
@@ -165,32 +297,53 @@ class WebAuthProvider {
|
|
|
165
297
|
*/
|
|
166
298
|
isAxonCloudUser() {
|
|
167
299
|
const settings = this.readSettings();
|
|
168
|
-
return
|
|
300
|
+
return this.inferRuntimeBackend(settings) === 'axon-cloud'
|
|
301
|
+
|| (!!settings.apiBaseUrl && settings.apiBaseUrl.includes('chatbi.site'));
|
|
169
302
|
}
|
|
170
303
|
/**
|
|
171
304
|
* 获取认证状态(给 /api/auth/status 和 websocket 用)
|
|
172
305
|
*/
|
|
173
306
|
getStatus() {
|
|
174
307
|
const settings = this.readSettings();
|
|
308
|
+
const runtimeBackend = this.inferRuntimeBackend(settings);
|
|
309
|
+
if (runtimeBackend === 'codex-subscription') {
|
|
310
|
+
const codexConfig = codexAuthManager.getAuthConfig();
|
|
311
|
+
if (codexConfig?.accessToken || codexConfig?.apiKey || codexConfig?.authMethod === 'api_key') {
|
|
312
|
+
return { authenticated: true, type: 'oauth', provider: 'codex', runtimeBackend };
|
|
313
|
+
}
|
|
314
|
+
}
|
|
175
315
|
// apiKey 优先检查
|
|
176
316
|
if (settings.apiKey && settings.authPriority !== 'oauth') {
|
|
177
|
-
return { authenticated: true, type: 'api_key', provider: this.getProvider() };
|
|
317
|
+
return { authenticated: true, type: 'api_key', provider: this.getProvider(), runtimeBackend };
|
|
178
318
|
}
|
|
179
319
|
// OAuth 检查
|
|
180
320
|
const oauthConfig = oauthManager.getOAuthConfig();
|
|
181
321
|
if (oauthConfig?.accessToken) {
|
|
182
|
-
return { authenticated: true, type: 'oauth', provider: this.getProvider() };
|
|
322
|
+
return { authenticated: true, type: 'oauth', provider: this.getProvider(), runtimeBackend };
|
|
183
323
|
}
|
|
184
324
|
// auto 模式回退到 apiKey
|
|
185
325
|
if (settings.apiKey) {
|
|
186
|
-
return { authenticated: true, type: 'api_key', provider: this.getProvider() };
|
|
326
|
+
return { authenticated: true, type: 'api_key', provider: this.getProvider(), runtimeBackend };
|
|
187
327
|
}
|
|
188
|
-
return { authenticated: false, type: 'none', provider: 'anthropic' };
|
|
328
|
+
return { authenticated: false, type: 'none', provider: 'anthropic', runtimeBackend };
|
|
189
329
|
}
|
|
190
330
|
/**
|
|
191
331
|
* 获取 OAuth 详细状态(给前端认证状态接口用)
|
|
192
332
|
*/
|
|
193
333
|
getOAuthStatus() {
|
|
334
|
+
if (this.getRuntimeBackend() === 'codex-subscription') {
|
|
335
|
+
const codexStatus = this.getCodexStatus();
|
|
336
|
+
if (!codexStatus.authenticated) {
|
|
337
|
+
return { authenticated: false };
|
|
338
|
+
}
|
|
339
|
+
return {
|
|
340
|
+
authenticated: true,
|
|
341
|
+
displayName: codexStatus.displayName,
|
|
342
|
+
subscriptionType: 'chatgpt',
|
|
343
|
+
expiresAt: codexStatus.expiresAt,
|
|
344
|
+
scopes: ['openid', 'profile', 'email', 'offline_access'],
|
|
345
|
+
};
|
|
346
|
+
}
|
|
194
347
|
const oauthConfig = oauthManager.getOAuthConfig();
|
|
195
348
|
if (!oauthConfig?.accessToken) {
|
|
196
349
|
return { authenticated: false };
|
|
@@ -208,6 +361,26 @@ class WebAuthProvider {
|
|
|
208
361
|
*/
|
|
209
362
|
getTokenStatus() {
|
|
210
363
|
const settings = this.readSettings();
|
|
364
|
+
const runtimeBackend = this.inferRuntimeBackend(settings);
|
|
365
|
+
if (runtimeBackend === 'codex-subscription') {
|
|
366
|
+
const codexConfig = codexAuthManager.getAuthConfig();
|
|
367
|
+
if (codexConfig?.accessToken) {
|
|
368
|
+
const isExpired = codexConfig.expiresAt ? Date.now() > codexConfig.expiresAt : false;
|
|
369
|
+
return {
|
|
370
|
+
type: 'oauth',
|
|
371
|
+
valid: !isExpired,
|
|
372
|
+
expiresAt: codexConfig.expiresAt,
|
|
373
|
+
scope: ['openid', 'profile', 'email', 'offline_access'],
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
if (codexConfig?.apiKey || codexConfig?.authMethod === 'api_key') {
|
|
377
|
+
return {
|
|
378
|
+
type: 'api_key',
|
|
379
|
+
valid: true,
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
return { type: 'none', valid: false };
|
|
383
|
+
}
|
|
211
384
|
// API Key
|
|
212
385
|
if (settings.apiKey && settings.authPriority !== 'oauth') {
|
|
213
386
|
return { type: 'api_key', valid: true };
|
|
@@ -254,6 +427,8 @@ class WebAuthProvider {
|
|
|
254
427
|
try {
|
|
255
428
|
configManager.set('apiKey', key);
|
|
256
429
|
configManager.set('authPriority', 'apiKey');
|
|
430
|
+
configManager.set('runtimeBackend', 'claude-compatible-api');
|
|
431
|
+
configManager.set('runtimeProvider', 'anthropic');
|
|
257
432
|
return true;
|
|
258
433
|
}
|
|
259
434
|
catch (error) {
|
|
@@ -278,6 +453,17 @@ class WebAuthProvider {
|
|
|
278
453
|
clearAll() {
|
|
279
454
|
this.clearApiKey();
|
|
280
455
|
oauthManager.clearOAuthConfig();
|
|
456
|
+
codexAuthManager.clearAuthConfig();
|
|
457
|
+
configManager.set('runtimeBackend', 'claude-subscription');
|
|
458
|
+
configManager.set('runtimeProvider', 'anthropic');
|
|
459
|
+
}
|
|
460
|
+
async activateCodexLogin(config) {
|
|
461
|
+
if (config) {
|
|
462
|
+
await codexAuthManager.saveAuthConfig(config);
|
|
463
|
+
}
|
|
464
|
+
configManager.set('runtimeBackend', 'codex-subscription');
|
|
465
|
+
configManager.set('runtimeProvider', 'codex');
|
|
466
|
+
configManager.set('authPriority', 'oauth');
|
|
281
467
|
}
|
|
282
468
|
// ---------- 验证 ----------
|
|
283
469
|
/**
|
|
@@ -319,12 +505,69 @@ class WebAuthProvider {
|
|
|
319
505
|
* 获取 WebUI 的自定义模型名
|
|
320
506
|
*/
|
|
321
507
|
getCustomModelName() {
|
|
322
|
-
return this.
|
|
508
|
+
return this.getStoredModelForBackend(this.getRuntimeBackend());
|
|
509
|
+
}
|
|
510
|
+
getCodexModelName() {
|
|
511
|
+
const customModel = this.getStoredModelForBackend(this.getRuntimeBackend());
|
|
512
|
+
return isCodexCompatibleModel(customModel) ? customModel : undefined;
|
|
513
|
+
}
|
|
514
|
+
getCodexBaseUrl(settings = this.readSettings()) {
|
|
515
|
+
const envBaseUrl = process.env.OPENAI_CODEX_BASE_URL?.trim();
|
|
516
|
+
if (envBaseUrl) {
|
|
517
|
+
return envBaseUrl.replace(/\/+$/, '');
|
|
518
|
+
}
|
|
519
|
+
const codexConfig = codexAuthManager.getAuthConfig();
|
|
520
|
+
const usesApiKey = !codexConfig?.accessToken && !!(codexConfig?.apiKey || codexConfig?.authMethod === 'api_key');
|
|
521
|
+
const configuredBaseUrl = settings.apiBaseUrl?.trim();
|
|
522
|
+
const isSupportedConfiguredBaseUrl = configuredBaseUrl
|
|
523
|
+
&& (usesApiKey
|
|
524
|
+
? isCodexApiKeyBaseUrlCandidate(configuredBaseUrl)
|
|
525
|
+
: isCodexChatGptBaseUrlCandidate(configuredBaseUrl));
|
|
526
|
+
if (configuredBaseUrl && isSupportedConfiguredBaseUrl) {
|
|
527
|
+
return configuredBaseUrl.replace(/\/+$/, '');
|
|
528
|
+
}
|
|
529
|
+
return getDefaultBaseUrlForRuntimeBackend('codex-subscription', {
|
|
530
|
+
useApiKey: usesApiKey,
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
getRuntimeBackend() {
|
|
534
|
+
return this.inferRuntimeBackend(this.readSettings());
|
|
535
|
+
}
|
|
536
|
+
getRuntimeProvider() {
|
|
537
|
+
const runtimeBackend = this.getRuntimeBackend();
|
|
538
|
+
const runtimeModel = this.getStoredModelForBackend(runtimeBackend);
|
|
539
|
+
return getProviderForRuntimeBackend(runtimeBackend, runtimeModel);
|
|
540
|
+
}
|
|
541
|
+
getDefaultModelByBackend() {
|
|
542
|
+
return this.getNormalizedModelMap();
|
|
543
|
+
}
|
|
544
|
+
getCustomModelCatalogByBackend() {
|
|
545
|
+
return this.readSettings().customModelCatalogByBackend || {};
|
|
323
546
|
}
|
|
324
547
|
/**
|
|
325
548
|
* 获取认证提供商
|
|
326
549
|
*/
|
|
327
550
|
getProvider() {
|
|
551
|
+
const runtimeBackend = this.getRuntimeBackend();
|
|
552
|
+
if (runtimeBackend === 'codex-subscription') {
|
|
553
|
+
return 'codex';
|
|
554
|
+
}
|
|
555
|
+
if (runtimeBackend === 'axon-cloud') {
|
|
556
|
+
return 'axon-cloud';
|
|
557
|
+
}
|
|
558
|
+
if (runtimeBackend === 'claude-subscription') {
|
|
559
|
+
return 'anthropic';
|
|
560
|
+
}
|
|
561
|
+
if (runtimeBackend === 'claude-compatible-api') {
|
|
562
|
+
const apiProvider = configManager.get('apiProvider');
|
|
563
|
+
if (apiProvider === 'bedrock' || apiProvider === 'vertex' || apiProvider === 'anthropic') {
|
|
564
|
+
return apiProvider;
|
|
565
|
+
}
|
|
566
|
+
return 'anthropic';
|
|
567
|
+
}
|
|
568
|
+
if (runtimeBackend === 'openai-compatible-api') {
|
|
569
|
+
return 'openai-compatible';
|
|
570
|
+
}
|
|
328
571
|
const apiProvider = configManager.get('apiProvider');
|
|
329
572
|
if (apiProvider)
|
|
330
573
|
return apiProvider;
|
|
@@ -358,6 +601,36 @@ class WebAuthProvider {
|
|
|
358
601
|
// fallback:token 没推理权限也没 API key,原样返回让 API 报错
|
|
359
602
|
return { authToken: oauthConfig.accessToken };
|
|
360
603
|
}
|
|
604
|
+
getCodexCredentials() {
|
|
605
|
+
const codexConfig = codexAuthManager.getAuthConfig();
|
|
606
|
+
if (!codexConfig)
|
|
607
|
+
return {};
|
|
608
|
+
if (codexConfig.accessToken) {
|
|
609
|
+
return {
|
|
610
|
+
authToken: codexConfig.accessToken,
|
|
611
|
+
accountId: codexConfig.accountId,
|
|
612
|
+
};
|
|
613
|
+
}
|
|
614
|
+
if (codexConfig.apiKey) {
|
|
615
|
+
return {
|
|
616
|
+
apiKey: codexConfig.apiKey,
|
|
617
|
+
};
|
|
618
|
+
}
|
|
619
|
+
return {};
|
|
620
|
+
}
|
|
621
|
+
getCodexStatus() {
|
|
622
|
+
const config = codexAuthManager.getAuthConfig();
|
|
623
|
+
if (!config?.accessToken && !config?.apiKey) {
|
|
624
|
+
return { authenticated: false };
|
|
625
|
+
}
|
|
626
|
+
return {
|
|
627
|
+
authenticated: true,
|
|
628
|
+
displayName: config.displayName || config.email || (config.apiKey ? 'API Key' : undefined),
|
|
629
|
+
email: config.email,
|
|
630
|
+
accountId: config.accountId,
|
|
631
|
+
expiresAt: config.expiresAt,
|
|
632
|
+
};
|
|
633
|
+
}
|
|
361
634
|
}
|
|
362
635
|
// 导出单例
|
|
363
636
|
export const webAuth = new WebAuthProvider();
|