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.
Files changed (644) hide show
  1. package/dist/auth/snapshot.d.ts +24 -0
  2. package/dist/auth/snapshot.d.ts.map +1 -0
  3. package/dist/auth/snapshot.js +144 -0
  4. package/dist/auth/snapshot.js.map +1 -0
  5. package/dist/cli.js +3 -1
  6. package/dist/cli.js.map +1 -1
  7. package/dist/config/axon-md-parser.d.ts.map +1 -1
  8. package/dist/config/axon-md-parser.js +21 -4
  9. package/dist/config/axon-md-parser.js.map +1 -1
  10. package/dist/config/index.d.ts +39 -21
  11. package/dist/config/index.d.ts.map +1 -1
  12. package/dist/config/index.js +14 -2
  13. package/dist/config/index.js.map +1 -1
  14. package/dist/context/enhanced.d.ts.map +1 -1
  15. package/dist/context/enhanced.js +5 -0
  16. package/dist/context/enhanced.js.map +1 -1
  17. package/dist/core/client.d.ts +7 -2
  18. package/dist/core/client.d.ts.map +1 -1
  19. package/dist/core/client.js +50 -18
  20. package/dist/core/client.js.map +1 -1
  21. package/dist/core/loop.d.ts +47 -8
  22. package/dist/core/loop.d.ts.map +1 -1
  23. package/dist/core/loop.js +333 -149
  24. package/dist/core/loop.js.map +1 -1
  25. package/dist/core/max-tokens.d.ts +24 -0
  26. package/dist/core/max-tokens.d.ts.map +1 -0
  27. package/dist/core/max-tokens.js +69 -0
  28. package/dist/core/max-tokens.js.map +1 -0
  29. package/dist/core/session.d.ts.map +1 -1
  30. package/dist/core/session.js +7 -14
  31. package/dist/core/session.js.map +1 -1
  32. package/dist/daemon/config.d.ts +6 -6
  33. package/dist/daemon/executor.d.ts.map +1 -1
  34. package/dist/daemon/executor.js +24 -30
  35. package/dist/daemon/executor.js.map +1 -1
  36. package/dist/goals/goal-store.d.ts +1 -1
  37. package/dist/goals/goal-store.d.ts.map +1 -1
  38. package/dist/goals/goal-store.js.map +1 -1
  39. package/dist/hooks/auto-verify.d.ts +86 -0
  40. package/dist/hooks/auto-verify.d.ts.map +1 -0
  41. package/dist/hooks/auto-verify.js +297 -0
  42. package/dist/hooks/auto-verify.js.map +1 -0
  43. package/dist/mcp/config.d.ts +16 -16
  44. package/dist/media/index.d.ts +2 -1
  45. package/dist/media/index.d.ts.map +1 -1
  46. package/dist/media/index.js +5 -3
  47. package/dist/media/index.js.map +1 -1
  48. package/dist/media/office-visual.d.ts +66 -0
  49. package/dist/media/office-visual.d.ts.map +1 -0
  50. package/dist/media/office-visual.js +409 -0
  51. package/dist/media/office-visual.js.map +1 -0
  52. package/dist/media/office.d.ts +17 -0
  53. package/dist/media/office.d.ts.map +1 -1
  54. package/dist/media/office.js +227 -2
  55. package/dist/media/office.js.map +1 -1
  56. package/dist/memory/long-term-store.d.ts +6 -0
  57. package/dist/memory/long-term-store.d.ts.map +1 -1
  58. package/dist/memory/long-term-store.js +66 -48
  59. package/dist/memory/long-term-store.js.map +1 -1
  60. package/dist/memory/memory-search.d.ts +9 -3
  61. package/dist/memory/memory-search.d.ts.map +1 -1
  62. package/dist/memory/memory-search.js +58 -12
  63. package/dist/memory/memory-search.js.map +1 -1
  64. package/dist/memory/memory-sync.d.ts +7 -0
  65. package/dist/memory/memory-sync.d.ts.map +1 -1
  66. package/dist/memory/memory-sync.js +92 -0
  67. package/dist/memory/memory-sync.js.map +1 -1
  68. package/dist/memory/notebook.d.ts +7 -0
  69. package/dist/memory/notebook.d.ts.map +1 -1
  70. package/dist/memory/notebook.js +624 -24
  71. package/dist/memory/notebook.js.map +1 -1
  72. package/dist/models/config.d.ts.map +1 -1
  73. package/dist/models/config.js +7 -4
  74. package/dist/models/config.js.map +1 -1
  75. package/dist/models/index.d.ts +1 -0
  76. package/dist/models/index.d.ts.map +1 -1
  77. package/dist/models/index.js +1 -0
  78. package/dist/models/index.js.map +1 -1
  79. package/dist/models/model-limits.d.ts +13 -0
  80. package/dist/models/model-limits.d.ts.map +1 -0
  81. package/dist/models/model-limits.js +79 -0
  82. package/dist/models/model-limits.js.map +1 -0
  83. package/dist/network/discovery.d.ts +2 -0
  84. package/dist/network/discovery.d.ts.map +1 -1
  85. package/dist/network/discovery.js +10 -5
  86. package/dist/network/discovery.js.map +1 -1
  87. package/dist/network/global-proxy.d.ts +7 -0
  88. package/dist/network/global-proxy.d.ts.map +1 -1
  89. package/dist/network/global-proxy.js +67 -0
  90. package/dist/network/global-proxy.js.map +1 -1
  91. package/dist/network/index.d.ts +6 -1
  92. package/dist/network/index.d.ts.map +1 -1
  93. package/dist/network/index.js +16 -11
  94. package/dist/network/index.js.map +1 -1
  95. package/dist/network/transport.d.ts +41 -4
  96. package/dist/network/transport.d.ts.map +1 -1
  97. package/dist/network/transport.js +234 -61
  98. package/dist/network/transport.js.map +1 -1
  99. package/dist/network/types.d.ts +19 -1
  100. package/dist/network/types.d.ts.map +1 -1
  101. package/dist/network/types.js.map +1 -1
  102. package/dist/notifications/cmux.d.ts +115 -0
  103. package/dist/notifications/cmux.d.ts.map +1 -0
  104. package/dist/notifications/cmux.js +436 -0
  105. package/dist/notifications/cmux.js.map +1 -0
  106. package/dist/prompt/attachments.d.ts +8 -0
  107. package/dist/prompt/attachments.d.ts.map +1 -1
  108. package/dist/prompt/attachments.js +74 -2
  109. package/dist/prompt/attachments.js.map +1 -1
  110. package/dist/prompt/builder.js +1 -1
  111. package/dist/prompt/builder.js.map +1 -1
  112. package/dist/prompt/cache.d.ts +1 -6
  113. package/dist/prompt/cache.d.ts.map +1 -1
  114. package/dist/prompt/cache.js +37 -7
  115. package/dist/prompt/cache.js.map +1 -1
  116. package/dist/prompt/templates.d.ts +1 -1
  117. package/dist/prompt/templates.d.ts.map +1 -1
  118. package/dist/prompt/templates.js +4 -3
  119. package/dist/prompt/templates.js.map +1 -1
  120. package/dist/prompt/types.d.ts +3 -1
  121. package/dist/prompt/types.d.ts.map +1 -1
  122. package/dist/prompt/types.js.map +1 -1
  123. package/dist/proxy/server.d.ts.map +1 -1
  124. package/dist/proxy/server.js +32 -11
  125. package/dist/proxy/server.js.map +1 -1
  126. package/dist/search/ripgrep.d.ts.map +1 -1
  127. package/dist/search/ripgrep.js +11 -0
  128. package/dist/search/ripgrep.js.map +1 -1
  129. package/dist/session/index.d.ts +3 -0
  130. package/dist/session/index.d.ts.map +1 -1
  131. package/dist/session/index.js +1 -0
  132. package/dist/session/index.js.map +1 -1
  133. package/dist/skills/builtin/algorithmic-art/LICENSE.txt +202 -0
  134. package/dist/skills/builtin/algorithmic-art/SKILL.md +405 -0
  135. package/dist/skills/builtin/algorithmic-art/templates/generator_template.js +223 -0
  136. package/dist/skills/builtin/algorithmic-art/templates/viewer.html +599 -0
  137. package/dist/skills/builtin/analyze-logs/SKILL.md +75 -0
  138. package/dist/skills/builtin/audit-official/SKILL.md +81 -0
  139. package/dist/skills/builtin/brand-guidelines/LICENSE.txt +202 -0
  140. package/dist/skills/builtin/brand-guidelines/SKILL.md +73 -0
  141. package/dist/skills/builtin/build-portable/SKILL.md +53 -0
  142. package/dist/skills/builtin/canvas-design/SKILL.md +130 -0
  143. package/dist/skills/builtin/changelog/SKILL.md +65 -0
  144. package/dist/skills/builtin/code-review/SKILL.md +75 -0
  145. package/dist/skills/builtin/doc-coauthoring/SKILL.md +375 -0
  146. package/dist/skills/builtin/doctor/SKILL.md +166 -0
  147. package/dist/skills/builtin/docx/LICENSE.txt +30 -0
  148. package/dist/skills/builtin/docx/SKILL.md +590 -0
  149. package/dist/skills/builtin/docx/scripts/__init__.py +1 -0
  150. package/dist/skills/builtin/docx/scripts/accept_changes.py +135 -0
  151. package/dist/skills/builtin/docx/scripts/comment.py +318 -0
  152. package/dist/skills/builtin/docx/scripts/office/helpers/__init__.py +0 -0
  153. package/dist/skills/builtin/docx/scripts/office/helpers/merge_runs.py +199 -0
  154. package/dist/skills/builtin/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  155. package/dist/skills/builtin/docx/scripts/office/pack.py +159 -0
  156. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  157. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  158. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  159. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  160. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  161. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  162. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  163. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  164. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  165. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  166. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  167. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  168. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  169. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  170. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  171. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  172. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  173. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  174. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  175. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  176. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  177. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  178. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  179. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  180. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  181. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  182. package/dist/skills/builtin/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  183. package/dist/skills/builtin/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  184. package/dist/skills/builtin/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  185. package/dist/skills/builtin/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  186. package/dist/skills/builtin/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  187. package/dist/skills/builtin/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  188. package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  189. package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  190. package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  191. package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  192. package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  193. package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  194. package/dist/skills/builtin/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  195. package/dist/skills/builtin/docx/scripts/office/soffice.py +183 -0
  196. package/dist/skills/builtin/docx/scripts/office/unpack.py +132 -0
  197. package/dist/skills/builtin/docx/scripts/office/validate.py +111 -0
  198. package/dist/skills/builtin/docx/scripts/office/validators/__init__.py +15 -0
  199. package/dist/skills/builtin/docx/scripts/office/validators/base.py +847 -0
  200. package/dist/skills/builtin/docx/scripts/office/validators/docx.py +446 -0
  201. package/dist/skills/builtin/docx/scripts/office/validators/pptx.py +275 -0
  202. package/dist/skills/builtin/docx/scripts/office/validators/redlining.py +247 -0
  203. package/dist/skills/builtin/docx/scripts/templates/comments.xml +3 -0
  204. package/dist/skills/builtin/docx/scripts/templates/commentsExtended.xml +3 -0
  205. package/dist/skills/builtin/docx/scripts/templates/commentsExtensible.xml +3 -0
  206. package/dist/skills/builtin/docx/scripts/templates/commentsIds.xml +3 -0
  207. package/dist/skills/builtin/docx/scripts/templates/people.xml +3 -0
  208. package/dist/skills/builtin/frontend-design/LICENSE.txt +177 -0
  209. package/dist/skills/builtin/frontend-design/SKILL.md +42 -0
  210. package/dist/skills/builtin/i18n-check/SKILL.md +56 -0
  211. package/dist/skills/builtin/internal-comms/LICENSE.txt +202 -0
  212. package/dist/skills/builtin/internal-comms/SKILL.md +32 -0
  213. package/dist/skills/builtin/internal-comms/examples/3p-updates.md +47 -0
  214. package/dist/skills/builtin/internal-comms/examples/company-newsletter.md +65 -0
  215. package/dist/skills/builtin/internal-comms/examples/faq-answers.md +30 -0
  216. package/dist/skills/builtin/internal-comms/examples/general-comms.md +16 -0
  217. package/dist/skills/builtin/mcp-builder/LICENSE.txt +202 -0
  218. package/dist/skills/builtin/mcp-builder/SKILL.md +236 -0
  219. package/dist/skills/builtin/mcp-builder/reference/evaluation.md +602 -0
  220. package/dist/skills/builtin/mcp-builder/reference/mcp_best_practices.md +249 -0
  221. package/dist/skills/builtin/mcp-builder/reference/node_mcp_server.md +970 -0
  222. package/dist/skills/builtin/mcp-builder/reference/python_mcp_server.md +719 -0
  223. package/dist/skills/builtin/mcp-builder/scripts/connections.py +151 -0
  224. package/dist/skills/builtin/mcp-builder/scripts/evaluation.py +373 -0
  225. package/dist/skills/builtin/mcp-builder/scripts/example_evaluation.xml +22 -0
  226. package/dist/skills/builtin/mcp-builder/scripts/requirements.txt +2 -0
  227. package/dist/skills/builtin/pdf/LICENSE.txt +30 -0
  228. package/dist/skills/builtin/pdf/SKILL.md +314 -0
  229. package/dist/skills/builtin/pdf/forms.md +294 -0
  230. package/dist/skills/builtin/pdf/reference.md +612 -0
  231. package/dist/skills/builtin/pdf/scripts/check_bounding_boxes.py +65 -0
  232. package/dist/skills/builtin/pdf/scripts/check_fillable_fields.py +11 -0
  233. package/dist/skills/builtin/pdf/scripts/convert_pdf_to_images.py +33 -0
  234. package/dist/skills/builtin/pdf/scripts/create_validation_image.py +37 -0
  235. package/dist/skills/builtin/pdf/scripts/extract_form_field_info.py +122 -0
  236. package/dist/skills/builtin/pdf/scripts/extract_form_structure.py +115 -0
  237. package/dist/skills/builtin/pdf/scripts/fill_fillable_fields.py +98 -0
  238. package/dist/skills/builtin/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  239. package/dist/skills/builtin/pptx/LICENSE.txt +30 -0
  240. package/dist/skills/builtin/pptx/SKILL.md +232 -0
  241. package/dist/skills/builtin/pptx/editing.md +205 -0
  242. package/dist/skills/builtin/pptx/pptxgenjs.md +420 -0
  243. package/dist/skills/builtin/pptx/scripts/__init__.py +0 -0
  244. package/dist/skills/builtin/pptx/scripts/add_slide.py +195 -0
  245. package/dist/skills/builtin/pptx/scripts/clean.py +286 -0
  246. package/dist/skills/builtin/pptx/scripts/office/helpers/__init__.py +0 -0
  247. package/dist/skills/builtin/pptx/scripts/office/helpers/merge_runs.py +199 -0
  248. package/dist/skills/builtin/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
  249. package/dist/skills/builtin/pptx/scripts/office/pack.py +159 -0
  250. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  251. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  252. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  253. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  254. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  255. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  256. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  257. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  258. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  259. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  260. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  261. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  262. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  263. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  264. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  265. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  266. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  267. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  268. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  269. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  270. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  271. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  272. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  273. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  274. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  275. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  276. package/dist/skills/builtin/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  277. package/dist/skills/builtin/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  278. package/dist/skills/builtin/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  279. package/dist/skills/builtin/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  280. package/dist/skills/builtin/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  281. package/dist/skills/builtin/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  282. package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  283. package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  284. package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  285. package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  286. package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  287. package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  288. package/dist/skills/builtin/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  289. package/dist/skills/builtin/pptx/scripts/office/soffice.py +183 -0
  290. package/dist/skills/builtin/pptx/scripts/office/unpack.py +132 -0
  291. package/dist/skills/builtin/pptx/scripts/office/validate.py +111 -0
  292. package/dist/skills/builtin/pptx/scripts/office/validators/__init__.py +15 -0
  293. package/dist/skills/builtin/pptx/scripts/office/validators/base.py +847 -0
  294. package/dist/skills/builtin/pptx/scripts/office/validators/docx.py +446 -0
  295. package/dist/skills/builtin/pptx/scripts/office/validators/pptx.py +275 -0
  296. package/dist/skills/builtin/pptx/scripts/office/validators/redlining.py +247 -0
  297. package/dist/skills/builtin/pptx/scripts/thumbnail.py +289 -0
  298. package/dist/skills/builtin/promo-video/SKILL.md +124 -0
  299. package/dist/skills/builtin/promote/SKILL.md +77 -0
  300. package/dist/skills/builtin/skill-creator/LICENSE.txt +202 -0
  301. package/dist/skills/builtin/skill-creator/SKILL.md +598 -0
  302. package/dist/skills/builtin/skill-creator/agents/analyzer.md +274 -0
  303. package/dist/skills/builtin/skill-creator/agents/comparator.md +202 -0
  304. package/dist/skills/builtin/skill-creator/agents/grader.md +223 -0
  305. package/dist/skills/builtin/skill-creator/assets/eval_review.html +146 -0
  306. package/dist/skills/builtin/skill-creator/eval-viewer/generate_review.py +471 -0
  307. package/dist/skills/builtin/skill-creator/eval-viewer/viewer.html +1325 -0
  308. package/dist/skills/builtin/skill-creator/references/schemas.md +430 -0
  309. package/dist/skills/builtin/skill-creator/scripts/__init__.py +0 -0
  310. package/dist/skills/builtin/skill-creator/scripts/aggregate_benchmark.py +401 -0
  311. package/dist/skills/builtin/skill-creator/scripts/generate_report.py +326 -0
  312. package/dist/skills/builtin/skill-creator/scripts/improve_description.py +248 -0
  313. package/dist/skills/builtin/skill-creator/scripts/package_skill.py +136 -0
  314. package/dist/skills/builtin/skill-creator/scripts/quick_validate.py +103 -0
  315. package/dist/skills/builtin/skill-creator/scripts/run_eval.py +310 -0
  316. package/dist/skills/builtin/skill-creator/scripts/run_loop.py +332 -0
  317. package/dist/skills/builtin/skill-creator/scripts/utils.py +47 -0
  318. package/dist/skills/builtin/slack-gif-creator/LICENSE.txt +202 -0
  319. package/dist/skills/builtin/slack-gif-creator/SKILL.md +254 -0
  320. package/dist/skills/builtin/slack-gif-creator/core/easing.py +234 -0
  321. package/dist/skills/builtin/slack-gif-creator/core/frame_composer.py +176 -0
  322. package/dist/skills/builtin/slack-gif-creator/core/gif_builder.py +269 -0
  323. package/dist/skills/builtin/slack-gif-creator/core/validators.py +136 -0
  324. package/dist/skills/builtin/slack-gif-creator/requirements.txt +4 -0
  325. package/dist/skills/builtin/sync-version/SKILL.md +39 -0
  326. package/dist/skills/builtin/theme-factory/LICENSE.txt +202 -0
  327. package/dist/skills/builtin/theme-factory/SKILL.md +59 -0
  328. package/dist/skills/builtin/theme-factory/theme-showcase.pdf +0 -0
  329. package/dist/skills/builtin/theme-factory/themes/arctic-frost.md +19 -0
  330. package/dist/skills/builtin/theme-factory/themes/botanical-garden.md +19 -0
  331. package/dist/skills/builtin/theme-factory/themes/desert-rose.md +19 -0
  332. package/dist/skills/builtin/theme-factory/themes/forest-canopy.md +19 -0
  333. package/dist/skills/builtin/theme-factory/themes/golden-hour.md +19 -0
  334. package/dist/skills/builtin/theme-factory/themes/midnight-galaxy.md +19 -0
  335. package/dist/skills/builtin/theme-factory/themes/modern-minimalist.md +19 -0
  336. package/dist/skills/builtin/theme-factory/themes/ocean-depths.md +19 -0
  337. package/dist/skills/builtin/theme-factory/themes/sunset-boulevard.md +19 -0
  338. package/dist/skills/builtin/theme-factory/themes/tech-innovation.md +19 -0
  339. package/dist/skills/builtin/web-artifacts-builder/LICENSE.txt +202 -0
  340. package/dist/skills/builtin/web-artifacts-builder/SKILL.md +74 -0
  341. package/dist/skills/builtin/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  342. package/dist/skills/builtin/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  343. package/dist/skills/builtin/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  344. package/dist/skills/builtin/webapp-testing/LICENSE.txt +202 -0
  345. package/dist/skills/builtin/webapp-testing/SKILL.md +96 -0
  346. package/dist/skills/builtin/webapp-testing/examples/console_logging.py +35 -0
  347. package/dist/skills/builtin/webapp-testing/examples/element_discovery.py +40 -0
  348. package/dist/skills/builtin/webapp-testing/examples/static_html_automation.py +33 -0
  349. package/dist/skills/builtin/webapp-testing/scripts/with_server.py +106 -0
  350. package/dist/skills/builtin/xlsx/LICENSE.txt +30 -0
  351. package/dist/skills/builtin/xlsx/SKILL.md +292 -0
  352. package/dist/skills/builtin/xlsx/scripts/office/helpers/__init__.py +0 -0
  353. package/dist/skills/builtin/xlsx/scripts/office/helpers/merge_runs.py +199 -0
  354. package/dist/skills/builtin/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  355. package/dist/skills/builtin/xlsx/scripts/office/pack.py +159 -0
  356. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  357. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  358. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  359. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  360. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  361. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  362. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  363. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  364. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  365. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  366. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  367. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  368. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  369. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  370. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  371. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  372. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  373. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  374. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  375. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  376. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  377. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  378. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  379. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  380. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  381. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  382. package/dist/skills/builtin/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  383. package/dist/skills/builtin/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  384. package/dist/skills/builtin/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  385. package/dist/skills/builtin/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  386. package/dist/skills/builtin/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  387. package/dist/skills/builtin/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  388. package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  389. package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  390. package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  391. package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  392. package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  393. package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  394. package/dist/skills/builtin/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  395. package/dist/skills/builtin/xlsx/scripts/office/soffice.py +183 -0
  396. package/dist/skills/builtin/xlsx/scripts/office/unpack.py +132 -0
  397. package/dist/skills/builtin/xlsx/scripts/office/validate.py +111 -0
  398. package/dist/skills/builtin/xlsx/scripts/office/validators/__init__.py +15 -0
  399. package/dist/skills/builtin/xlsx/scripts/office/validators/base.py +847 -0
  400. package/dist/skills/builtin/xlsx/scripts/office/validators/docx.py +446 -0
  401. package/dist/skills/builtin/xlsx/scripts/office/validators/pptx.py +275 -0
  402. package/dist/skills/builtin/xlsx/scripts/office/validators/redlining.py +247 -0
  403. package/dist/skills/builtin/xlsx/scripts/recalc.py +184 -0
  404. package/dist/tools/agent.d.ts +8 -0
  405. package/dist/tools/agent.d.ts.map +1 -1
  406. package/dist/tools/agent.js +66 -2
  407. package/dist/tools/agent.js.map +1 -1
  408. package/dist/tools/base.d.ts +16 -0
  409. package/dist/tools/base.d.ts.map +1 -1
  410. package/dist/tools/base.js +32 -0
  411. package/dist/tools/base.js.map +1 -1
  412. package/dist/tools/bash.d.ts.map +1 -1
  413. package/dist/tools/bash.js +8 -0
  414. package/dist/tools/bash.js.map +1 -1
  415. package/dist/tools/file.d.ts +3 -1
  416. package/dist/tools/file.d.ts.map +1 -1
  417. package/dist/tools/file.js +176 -117
  418. package/dist/tools/file.js.map +1 -1
  419. package/dist/tools/generate-design.d.ts +5 -1
  420. package/dist/tools/generate-design.d.ts.map +1 -1
  421. package/dist/tools/generate-design.js +25 -3
  422. package/dist/tools/generate-design.js.map +1 -1
  423. package/dist/tools/goal.d.ts +1 -1
  424. package/dist/tools/goal.d.ts.map +1 -1
  425. package/dist/tools/goal.js +18 -9
  426. package/dist/tools/goal.js.map +1 -1
  427. package/dist/tools/index.d.ts +7 -0
  428. package/dist/tools/index.d.ts.map +1 -1
  429. package/dist/tools/index.js +74 -5
  430. package/dist/tools/index.js.map +1 -1
  431. package/dist/tools/mcp.d.ts.map +1 -1
  432. package/dist/tools/mcp.js +5 -0
  433. package/dist/tools/mcp.js.map +1 -1
  434. package/dist/tools/memory-search.d.ts +1 -1
  435. package/dist/tools/memory-search.d.ts.map +1 -1
  436. package/dist/tools/memory-search.js +1 -1
  437. package/dist/tools/memory-search.js.map +1 -1
  438. package/dist/tools/network-agent.js +2 -1
  439. package/dist/tools/network-agent.js.map +1 -1
  440. package/dist/tools/notebook-write.d.ts.map +1 -1
  441. package/dist/tools/notebook-write.js +3 -1
  442. package/dist/tools/notebook-write.js.map +1 -1
  443. package/dist/tools/schedule.d.ts.map +1 -1
  444. package/dist/tools/schedule.js +2 -26
  445. package/dist/tools/schedule.js.map +1 -1
  446. package/dist/tools/skill.d.ts +1 -7
  447. package/dist/tools/skill.d.ts.map +1 -1
  448. package/dist/tools/skill.js +225 -61
  449. package/dist/tools/skill.js.map +1 -1
  450. package/dist/types/messages.d.ts +1 -5
  451. package/dist/types/messages.d.ts.map +1 -1
  452. package/dist/web/server/api-manager.d.ts +9 -4
  453. package/dist/web/server/api-manager.d.ts.map +1 -1
  454. package/dist/web/server/api-manager.js +173 -63
  455. package/dist/web/server/api-manager.js.map +1 -1
  456. package/dist/web/server/app-manager.d.ts +71 -0
  457. package/dist/web/server/app-manager.d.ts.map +1 -0
  458. package/dist/web/server/app-manager.js +364 -0
  459. package/dist/web/server/app-manager.js.map +1 -0
  460. package/dist/web/server/channels/bridge.d.ts.map +1 -1
  461. package/dist/web/server/channels/bridge.js +2 -1
  462. package/dist/web/server/channels/bridge.js.map +1 -1
  463. package/dist/web/server/codex-auth-manager.d.ts +43 -0
  464. package/dist/web/server/codex-auth-manager.d.ts.map +1 -0
  465. package/dist/web/server/codex-auth-manager.js +429 -0
  466. package/dist/web/server/codex-auth-manager.js.map +1 -0
  467. package/dist/web/server/conversation.d.ts +34 -5
  468. package/dist/web/server/conversation.d.ts.map +1 -1
  469. package/dist/web/server/conversation.js +435 -142
  470. package/dist/web/server/conversation.js.map +1 -1
  471. package/dist/web/server/image-attachments.d.ts +23 -0
  472. package/dist/web/server/image-attachments.d.ts.map +1 -0
  473. package/dist/web/server/image-attachments.js +93 -0
  474. package/dist/web/server/image-attachments.js.map +1 -0
  475. package/dist/web/server/index.d.ts.map +1 -1
  476. package/dist/web/server/index.js +28 -0
  477. package/dist/web/server/index.js.map +1 -1
  478. package/dist/web/server/routes/__tests__/app-api.test.d.ts +5 -0
  479. package/dist/web/server/routes/__tests__/app-api.test.d.ts.map +1 -0
  480. package/dist/web/server/routes/__tests__/app-api.test.js +48 -0
  481. package/dist/web/server/routes/__tests__/app-api.test.js.map +1 -0
  482. package/dist/web/server/routes/__tests__/tunnel-api.test.d.ts +2 -0
  483. package/dist/web/server/routes/__tests__/tunnel-api.test.d.ts.map +1 -0
  484. package/dist/web/server/routes/__tests__/tunnel-api.test.js +96 -0
  485. package/dist/web/server/routes/__tests__/tunnel-api.test.js.map +1 -0
  486. package/dist/web/server/routes/ai-editor.d.ts.map +1 -1
  487. package/dist/web/server/routes/ai-editor.js +9 -45
  488. package/dist/web/server/routes/ai-editor.js.map +1 -1
  489. package/dist/web/server/routes/ai-hover.d.ts.map +1 -1
  490. package/dist/web/server/routes/ai-hover.js +6 -23
  491. package/dist/web/server/routes/ai-hover.js.map +1 -1
  492. package/dist/web/server/routes/api.d.ts.map +1 -1
  493. package/dist/web/server/routes/api.js +27 -23
  494. package/dist/web/server/routes/api.js.map +1 -1
  495. package/dist/web/server/routes/app-api.d.ts +8 -0
  496. package/dist/web/server/routes/app-api.d.ts.map +1 -0
  497. package/dist/web/server/routes/app-api.js +191 -0
  498. package/dist/web/server/routes/app-api.js.map +1 -0
  499. package/dist/web/server/routes/auth.d.ts.map +1 -1
  500. package/dist/web/server/routes/auth.js +306 -5
  501. package/dist/web/server/routes/auth.js.map +1 -1
  502. package/dist/web/server/routes/autocomplete-api.d.ts.map +1 -1
  503. package/dist/web/server/routes/autocomplete-api.js +5 -43
  504. package/dist/web/server/routes/autocomplete-api.js.map +1 -1
  505. package/dist/web/server/routes/axon-cloud.d.ts.map +1 -1
  506. package/dist/web/server/routes/axon-cloud.js +352 -1
  507. package/dist/web/server/routes/axon-cloud.js.map +1 -1
  508. package/dist/web/server/routes/config-api.d.ts.map +1 -1
  509. package/dist/web/server/routes/config-api.js +12 -20
  510. package/dist/web/server/routes/config-api.js.map +1 -1
  511. package/dist/web/server/routes/download-proxy.d.ts.map +1 -1
  512. package/dist/web/server/routes/download-proxy.js +234 -12
  513. package/dist/web/server/routes/download-proxy.js.map +1 -1
  514. package/dist/web/server/routes/network-api.d.ts +1 -0
  515. package/dist/web/server/routes/network-api.d.ts.map +1 -1
  516. package/dist/web/server/routes/network-api.js +36 -11
  517. package/dist/web/server/routes/network-api.js.map +1 -1
  518. package/dist/web/server/routes/port-forward.d.ts.map +1 -1
  519. package/dist/web/server/routes/port-forward.js +3 -2
  520. package/dist/web/server/routes/port-forward.js.map +1 -1
  521. package/dist/web/server/routes/schedule-api.d.ts.map +1 -1
  522. package/dist/web/server/routes/schedule-api.js +5 -1
  523. package/dist/web/server/routes/schedule-api.js.map +1 -1
  524. package/dist/web/server/routes/tunnel-api.d.ts +14 -0
  525. package/dist/web/server/routes/tunnel-api.d.ts.map +1 -0
  526. package/dist/web/server/routes/tunnel-api.js +52 -0
  527. package/dist/web/server/routes/tunnel-api.js.map +1 -0
  528. package/dist/web/server/runtime/api-connection-test.d.ts +18 -0
  529. package/dist/web/server/runtime/api-connection-test.d.ts.map +1 -0
  530. package/dist/web/server/runtime/api-connection-test.js +62 -0
  531. package/dist/web/server/runtime/api-connection-test.js.map +1 -0
  532. package/dist/web/server/runtime/codex-client.d.ts +35 -0
  533. package/dist/web/server/runtime/codex-client.d.ts.map +1 -0
  534. package/dist/web/server/runtime/codex-client.js +1202 -0
  535. package/dist/web/server/runtime/codex-client.js.map +1 -0
  536. package/dist/web/server/runtime/factory.d.ts +3 -0
  537. package/dist/web/server/runtime/factory.d.ts.map +1 -0
  538. package/dist/web/server/runtime/factory.js +16 -0
  539. package/dist/web/server/runtime/factory.js.map +1 -0
  540. package/dist/web/server/runtime/runtime-model-catalog.d.ts +10 -0
  541. package/dist/web/server/runtime/runtime-model-catalog.d.ts.map +1 -0
  542. package/dist/web/server/runtime/runtime-model-catalog.js +85 -0
  543. package/dist/web/server/runtime/runtime-model-catalog.js.map +1 -0
  544. package/dist/web/server/runtime/runtime-model-list.d.ts +24 -0
  545. package/dist/web/server/runtime/runtime-model-list.d.ts.map +1 -0
  546. package/dist/web/server/runtime/runtime-model-list.js +43 -0
  547. package/dist/web/server/runtime/runtime-model-list.js.map +1 -0
  548. package/dist/web/server/runtime/runtime-selection.d.ts +17 -0
  549. package/dist/web/server/runtime/runtime-selection.d.ts.map +1 -0
  550. package/dist/web/server/runtime/runtime-selection.js +35 -0
  551. package/dist/web/server/runtime/runtime-selection.js.map +1 -0
  552. package/dist/web/server/runtime/tool-input-normalizer.d.ts +3 -0
  553. package/dist/web/server/runtime/tool-input-normalizer.d.ts.map +1 -0
  554. package/dist/web/server/runtime/tool-input-normalizer.js +52 -0
  555. package/dist/web/server/runtime/tool-input-normalizer.js.map +1 -0
  556. package/dist/web/server/runtime/types.d.ts +102 -0
  557. package/dist/web/server/runtime/types.d.ts.map +1 -0
  558. package/dist/web/server/runtime/types.js +2 -0
  559. package/dist/web/server/runtime/types.js.map +1 -0
  560. package/dist/web/server/runtime/utility-client.d.ts +5 -0
  561. package/dist/web/server/runtime/utility-client.d.ts.map +1 -0
  562. package/dist/web/server/runtime/utility-client.js +68 -0
  563. package/dist/web/server/runtime/utility-client.js.map +1 -0
  564. package/dist/web/server/services/axon-cloud-service.d.ts +24 -0
  565. package/dist/web/server/services/axon-cloud-service.d.ts.map +1 -1
  566. package/dist/web/server/services/axon-cloud-service.js +93 -0
  567. package/dist/web/server/services/axon-cloud-service.js.map +1 -1
  568. package/dist/web/server/services/config-service.d.ts +8 -2
  569. package/dist/web/server/services/config-service.d.ts.map +1 -1
  570. package/dist/web/server/services/config-service.js +51 -0
  571. package/dist/web/server/services/config-service.js.map +1 -1
  572. package/dist/web/server/services/gemini-image-service.d.ts +20 -1
  573. package/dist/web/server/services/gemini-image-service.d.ts.map +1 -1
  574. package/dist/web/server/services/gemini-image-service.js +121 -13
  575. package/dist/web/server/services/gemini-image-service.js.map +1 -1
  576. package/dist/web/server/session-manager.d.ts +10 -0
  577. package/dist/web/server/session-manager.d.ts.map +1 -1
  578. package/dist/web/server/session-manager.js +39 -0
  579. package/dist/web/server/session-manager.js.map +1 -1
  580. package/dist/web/server/slash-commands.d.ts.map +1 -1
  581. package/dist/web/server/slash-commands.js +127 -25
  582. package/dist/web/server/slash-commands.js.map +1 -1
  583. package/dist/web/server/task-manager.d.ts +4 -15
  584. package/dist/web/server/task-manager.d.ts.map +1 -1
  585. package/dist/web/server/task-manager.js +11 -4
  586. package/dist/web/server/task-manager.js.map +1 -1
  587. package/dist/web/server/tunnel.d.ts +47 -0
  588. package/dist/web/server/tunnel.d.ts.map +1 -0
  589. package/dist/web/server/tunnel.js +165 -0
  590. package/dist/web/server/tunnel.js.map +1 -0
  591. package/dist/web/server/user-interaction.d.ts +10 -0
  592. package/dist/web/server/user-interaction.d.ts.map +1 -1
  593. package/dist/web/server/user-interaction.js +28 -0
  594. package/dist/web/server/user-interaction.js.map +1 -1
  595. package/dist/web/server/web-auth.d.ts +35 -3
  596. package/dist/web/server/web-auth.d.ts.map +1 -1
  597. package/dist/web/server/web-auth.js +302 -29
  598. package/dist/web/server/web-auth.js.map +1 -1
  599. package/dist/web/server/web-scheduler.d.ts.map +1 -1
  600. package/dist/web/server/web-scheduler.js +9 -0
  601. package/dist/web/server/web-scheduler.js.map +1 -1
  602. package/dist/web/server/websocket-git-handlers.d.ts.map +1 -1
  603. package/dist/web/server/websocket-git-handlers.js +5 -29
  604. package/dist/web/server/websocket-git-handlers.js.map +1 -1
  605. package/dist/web/server/websocket.d.ts.map +1 -1
  606. package/dist/web/server/websocket.js +246 -70
  607. package/dist/web/server/websocket.js.map +1 -1
  608. package/dist/web/shared/auth-summary.d.ts +28 -0
  609. package/dist/web/shared/auth-summary.d.ts.map +1 -0
  610. package/dist/web/shared/auth-summary.js +56 -0
  611. package/dist/web/shared/auth-summary.js.map +1 -0
  612. package/dist/web/shared/model-catalog.d.ts +31 -0
  613. package/dist/web/shared/model-catalog.d.ts.map +1 -0
  614. package/dist/web/shared/model-catalog.js +365 -0
  615. package/dist/web/shared/model-catalog.js.map +1 -0
  616. package/dist/web/shared/model-preferences.d.ts +5 -0
  617. package/dist/web/shared/model-preferences.d.ts.map +1 -0
  618. package/dist/web/shared/model-preferences.js +13 -0
  619. package/dist/web/shared/model-preferences.js.map +1 -0
  620. package/dist/web/shared/runtime-capabilities.d.ts +37 -0
  621. package/dist/web/shared/runtime-capabilities.d.ts.map +1 -0
  622. package/dist/web/shared/runtime-capabilities.js +101 -0
  623. package/dist/web/shared/runtime-capabilities.js.map +1 -0
  624. package/dist/web/shared/setup-runtime.d.ts +50 -0
  625. package/dist/web/shared/setup-runtime.d.ts.map +1 -0
  626. package/dist/web/shared/setup-runtime.js +214 -0
  627. package/dist/web/shared/setup-runtime.js.map +1 -0
  628. package/dist/web/shared/thinking-config.d.ts +20 -0
  629. package/dist/web/shared/thinking-config.d.ts.map +1 -0
  630. package/dist/web/shared/thinking-config.js +104 -0
  631. package/dist/web/shared/thinking-config.js.map +1 -0
  632. package/dist/web/shared/types.d.ts +30 -2
  633. package/dist/web/shared/types.d.ts.map +1 -1
  634. package/dist/web/shared/types.js.map +1 -1
  635. package/electron/main.cjs +15 -3
  636. package/package.json +6 -2
  637. package/src/web/client/dist/assets/index-B2M5Nr-5.js +736 -0
  638. package/src/web/client/dist/assets/index-COEqamS-.css +32 -0
  639. package/src/web/client/dist/icons/icon-192.png +0 -0
  640. package/src/web/client/dist/icons/icon-512.png +0 -0
  641. package/src/web/client/dist/index.html +31 -0
  642. package/src/web/client/dist/logo.png +0 -0
  643. package/src/web/client/dist/manifest.webmanifest +25 -0
  644. 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
- * 获取模型的最大输出 tokens
712
- * 对齐官方 kH0 函数
713
- * @param model 模型 ID
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
- // 构建 ClaudeClient 配置
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
- // autoRecall 已移除:信噪比太低,占 200-500 tokens 但回忆的碎片几乎没有参考价值。
2271
- // 真正有用的记忆已在 Notebook 中,需要搜索时用户可主动调用 MemorySearch 工具。
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 stopKeepalive = startCacheKeepalive({
2429
- client: this.client.getAnthropicClient(),
2430
- model: this.client.getModel(),
2431
- formattedSystem: formatSystemPrompt(systemPrompt, this.client.getIsOAuth(), promptBlocks),
2432
- debug: this.options.debug || this.options.verbose,
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 stopKeepalive = startCacheKeepalive({
2949
- client: this.client.getAnthropicClient(),
2950
- model: this.client.getModel(),
2951
- formattedSystem: formatSystemPrompt(systemPrompt, this.client.getIsOAuth(), promptBlocks),
2952
- debug: this.options.debug || this.options.verbose,
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
- // v4.3: 响应被截断(max_tokens),追加提醒让模型继续
3109
- // 对齐官方实现:当 LLM 返回数据不稳定/被截断时,不应该退出循环
3110
- // 这修复了 issue #84 中描述的问题
3111
- this.session.addMessage({
3112
- role: 'user',
3113
- content: '[system: Your response was truncated due to token limits. Please continue where you left off and complete the task using tools.]',
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
- // 对话太短(少于4条消息 = 2轮对话),没什么可提取的
3231
- if (messages.length < 4)
3232
- return;
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. experience 笔记本记录:用户偏好、工作模式、个人信息、跨项目经验教训
3248
- 3. project 笔记本记录:项目特有的陷阱、隐藏依赖、重要架构决策、踩过的坑
3249
- 4. 如果没有新信息值得记录,返回 NO_UPDATE
3250
- 5. 如果有更新,返回完整的笔记本内容(不是增量,是完整替换)
3251
- 6. experience 不超过 4000 tokens,project 不超过 8000 tokens
3252
- 7. 保留原有内容,只追加或修改有变化的部分
3253
- 8. 特别关注用户纠正你的内容(如用户说"不对""错了""不是这样"等),这些纠正意味着你之前的理解有误,是最高优先级的记忆
3254
- 9. 特别注意提取决策链——即"尝试了A方案→发现问题→最终选择B方案"这种过程。记录最终决策及其原因,而不是中间的探索过程
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 = messages
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
- if (typeof m.content === 'string') {
3278
- return `${role}: ${m.content.substring(0, m.role === 'user' ? 1000 : 800)}`;
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 response = await this.client.createMessage([
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
- return;
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
  /**