diffsplain 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +20 -4
  2. package/dist/assets/{angular-html-m_m91ZYB.js → angular-html-2u-u5H-N.js} +1 -1
  3. package/dist/assets/{angular-ts-CO5Z--Rb.js → angular-ts-4_HVGlKp.js} +1 -1
  4. package/dist/assets/{apl-ogYYgLUu.js → apl-icaNWZX3.js} +1 -1
  5. package/dist/assets/{astro-DAfY3cNR.js → astro-HvIOE4vz.js} +1 -1
  6. package/dist/assets/{blade-E6RzsLUV.js → blade-BpKJV8ev.js} +1 -1
  7. package/dist/assets/{c-kKdxhtHF.js → c-BNvtxyRQ.js} +1 -1
  8. package/dist/assets/{cobol-3oDDyFNf.js → cobol-8js4hfxa.js} +1 -1
  9. package/dist/assets/{coffee-dsiILuWe.js → coffee-DXg_piQ9.js} +1 -1
  10. package/dist/assets/{cpp-DYyNFq__.js → cpp-BZDFAjyh.js} +1 -1
  11. package/dist/assets/{crystal-B7dVp9TF.js → crystal-aCF3ira4.js} +1 -1
  12. package/dist/assets/{css-DlxJ0aex.js → css-DfRtUkhE.js} +1 -1
  13. package/dist/assets/{edge-BjEVphkC.js → edge-vS6_AmQv.js} +1 -1
  14. package/dist/assets/{elixir-0xTOtMcM.js → elixir-Ce0nUHSq.js} +1 -1
  15. package/dist/assets/{elm-iQk_Wrxq.js → elm-DmaeyizZ.js} +1 -1
  16. package/dist/assets/{erb-BO74ztiE.js → erb-DD6OUyvt.js} +1 -1
  17. package/dist/assets/{git-rebase-BN667QRY.js → git-rebase-HbJMn7iS.js} +1 -1
  18. package/dist/assets/{glimmer-js-DTGUIHeS.js → glimmer-js-BRuqbNaV.js} +1 -1
  19. package/dist/assets/{glimmer-ts-BU3oQn2d.js → glimmer-ts-ZBpkdEEA.js} +1 -1
  20. package/dist/assets/{glsl-KLiqLJi2.js → glsl-CrQ4GScf.js} +1 -1
  21. package/dist/assets/{graphql-D_idcsoJ.js → graphql-Tn6PBdQY.js} +1 -1
  22. package/dist/assets/{hack-BXlsgPIr.js → hack-CoApvrbo.js} +1 -1
  23. package/dist/assets/{haml-fP0aUg4-.js → haml-COKq8Xjp.js} +1 -1
  24. package/dist/assets/{handlebars-C1ZEaot-.js → handlebars-CAna2DTA.js} +1 -1
  25. package/dist/assets/{html-D04qIuup.js → html-Ch4xJ7YF.js} +1 -1
  26. package/dist/assets/{html-derivative-C6ai-9QL.js → html-derivative-0ITK-MAI.js} +1 -1
  27. package/dist/assets/{http-C7bz3ZvQ.js → http-DiMWQ8Qr.js} +1 -1
  28. package/dist/assets/{hurl-jL6B6Ahr.js → hurl-OcXymC0J.js} +1 -1
  29. package/dist/assets/{index-BPaJGi-m.js → index-BmcCug2M.js} +4 -4
  30. package/dist/assets/{index-VAyBpb3u.css → index-CADUNiTy.css} +1 -1
  31. package/dist/assets/{java-BVzvLCON.js → java-CFb3qN4r.js} +1 -1
  32. package/dist/assets/{javascript-UDbZHxCI.js → javascript-CRmk2JrF.js} +1 -1
  33. package/dist/assets/{jinja-DB-QKo2A.js → jinja-Da6lDTEy.js} +1 -1
  34. package/dist/assets/{jison-B1ZbR2FF.js → jison-Bnivzmtu.js} +1 -1
  35. package/dist/assets/{json-DV4WwJzT.js → json-m8vJP_KK.js} +1 -1
  36. package/dist/assets/{jsx-DS6_VTvW.js → jsx-C3HX_Sbu.js} +1 -1
  37. package/dist/assets/{julia-C4tevET0.js → julia-Ckg-wSHA.js} +1 -1
  38. package/dist/assets/{just-CWMjefzB.js → just-DCjIAyvO.js} +1 -1
  39. package/dist/assets/{latex-tyEFf_Af.js → latex-CrYSm4pl.js} +1 -1
  40. package/dist/assets/{liquid-C3d1X1rL.js → liquid-MQUFSPYU.js} +1 -1
  41. package/dist/assets/{lua-sXvrzLQY.js → lua-DcuzJJ77.js} +1 -1
  42. package/dist/assets/{marko-CQweucif.js → marko-4JNmQaB4.js} +1 -1
  43. package/dist/assets/{mdc-TrxLWF7s.js → mdc-C_j8HvRL.js} +1 -1
  44. package/dist/assets/{nginx-ChE2nSNJ.js → nginx-ta3Gn1HE.js} +1 -1
  45. package/dist/assets/{nim-BY1CTRfx.js → nim-BwWLst9M.js} +1 -1
  46. package/dist/assets/{perl-Cvj2PQQH.js → perl-DfW7Uq5O.js} +1 -1
  47. package/dist/assets/{php-CGmHp8HW.js → php-DGf5G3Cf.js} +1 -1
  48. package/dist/assets/{pug-DM4S0bRr.js → pug-CWI-NaYz.js} +1 -1
  49. package/dist/assets/{qml-DI89Al9K.js → qml-Csblgh7U.js} +1 -1
  50. package/dist/assets/{r-Bs5_4yYh.js → r-QGooaGDI.js} +1 -1
  51. package/dist/assets/{razor-DimzayhZ.js → razor-Dp9ihLYf.js} +1 -1
  52. package/dist/assets/{regexp-BLACz0cx.js → regexp-DwUnLcVr.js} +1 -1
  53. package/dist/assets/{rst-DcWzxQh2.js → rst-BY8GIwDJ.js} +1 -1
  54. package/dist/assets/{ruby-Dlat5E8d.js → ruby-VgzI9htT.js} +1 -1
  55. package/dist/assets/{sas-CCDmMaBY.js → sas-DYLsm-0j.js} +1 -1
  56. package/dist/assets/{scss-BPiU2nu6.js → scss-tIFkeUQX.js} +1 -1
  57. package/dist/assets/{shellscript-CKinVNrN.js → shellscript-CHjuQ4Pl.js} +1 -1
  58. package/dist/assets/{shellsession-Cea8Pu5d.js → shellsession-Bv0S0hj9.js} +1 -1
  59. package/dist/assets/{soy--BRAPY4-.js → soy-D6U1tZod.js} +1 -1
  60. package/dist/assets/{sql-DjKiCyWK.js → sql-CGz8kjKv.js} +1 -1
  61. package/dist/assets/{stata-CDvo3J6y.js → stata-C9ytERUq.js} +1 -1
  62. package/dist/assets/{surrealql-C7b7E5sh.js → surrealql-DRfRnaYu.js} +1 -1
  63. package/dist/assets/{svelte-DO0tKtiK.js → svelte-wYnk_1sI.js} +1 -1
  64. package/dist/assets/{templ-DhhmR_rv.js → templ-DWrGVE0u.js} +1 -1
  65. package/dist/assets/{tex-Cn_V-Gg4.js → tex-CYTzoUJh.js} +1 -1
  66. package/dist/assets/{ts-tags-B6c-FTmA.js → ts-tags-1TIXEGea.js} +1 -1
  67. package/dist/assets/{tsx-Cvtt2sJ-.js → tsx-a3BoAoOh.js} +1 -1
  68. package/dist/assets/{twig-B7ZbCUmB.js → twig-e3dvNv6o.js} +1 -1
  69. package/dist/assets/{typescript-i3C6um2B.js → typescript-BBhnpnTf.js} +1 -1
  70. package/dist/assets/{vue-DyPX0Vum.js → vue-DzzVbu9q.js} +1 -1
  71. package/dist/assets/{vue-html-D362KpK3.js → vue-html-quBNv38K.js} +1 -1
  72. package/dist/assets/{vue-vine-D34cBbwO.js → vue-vine-CDuR69FE.js} +1 -1
  73. package/dist/assets/{xml-DJEk7u4n.js → xml-DMifOLSe.js} +1 -1
  74. package/dist/assets/{xsl-CoTtf90f.js → xsl-D8Ef-5HK.js} +1 -1
  75. package/dist/assets/{yaml-Cv5epQ4-.js → yaml-5c38gpmA.js} +1 -1
  76. package/dist/index.html +2 -2
  77. package/package.json +3 -2
  78. package/scripts/agent-config.mjs +184 -0
  79. package/scripts/cli-args.mjs +29 -2
  80. package/scripts/coding-agents.mjs +57 -6
  81. package/scripts/generate-summaries.mjs +11 -4
  82. package/scripts/present.mjs +140 -57
  83. package/scripts/review-chat-controller.mjs +137 -14
  84. package/scripts/review-chat-provider.mjs +14 -3
  85. package/scripts/serve-built.mjs +39 -3
@@ -1 +1 @@
1
- import{t as e}from"./index-BPaJGi-m.js";import{t}from"./java-BVzvLCON.js";var n=e({default:()=>i}),r=Object.freeze(JSON.parse(`{"displayName":"XML","name":"xml","patterns":[{"begin":"(<\\\\?)\\\\s*([-0-9A-Z_a-z]+)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.xml"}},"end":"(\\\\?>)","name":"meta.tag.preprocessor.xml","patterns":[{"match":" ([-A-Za-z]+)","name":"entity.other.attribute-name.xml"},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},{"begin":"(<!)(DOCTYPE)\\\\s+([:A-Z_a-z][-.0-:A-Z_a-z]*)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"keyword.other.doctype.xml"},"3":{"name":"variable.language.documentroot.xml"}},"end":"\\\\s*(>)","name":"meta.tag.sgml.doctype.xml","patterns":[{"include":"#internalSubset"}]},{"include":"#comments"},{"begin":"(<)((?:([-0-9A-Z_a-z]+)(:))?([-0-:A-Z_a-z]+))(?=(\\\\s[^>]*)?></\\\\2>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.xml"},"3":{"name":"entity.name.tag.namespace.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(>)(</)((?:([-0-9A-Z_a-z]+)(:))?([-0-:A-Z_a-z]+))(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"punctuation.definition.tag.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"entity.name.tag.namespace.xml"},"5":{"name":"punctuation.separator.namespace.xml"},"6":{"name":"entity.name.tag.localname.xml"},"7":{"name":"punctuation.definition.tag.xml"}},"name":"meta.tag.no-content.xml","patterns":[{"include":"#tagStuff"}]},{"begin":"(</?)(?:([-.\\\\w]+)((:)))?([-.:\\\\w]+)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.namespace.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(/?>)","name":"meta.tag.xml","patterns":[{"include":"#tagStuff"}]},{"include":"#entity"},{"include":"#bare-ampersand"},{"begin":"<%@","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.xml"}},"end":"%>","endCaptures":{"0":{"name":"punctuation.section.embedded.end.xml"}},"name":"source.java-props.embedded.xml","patterns":[{"match":"page|include|taglib","name":"keyword.other.page-props.xml"}]},{"begin":"<%[!=]?(?!--)","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.xml"}},"end":"(?!--)%>","endCaptures":{"0":{"name":"punctuation.section.embedded.end.xml"}},"name":"source.java.embedded.xml","patterns":[{"include":"source.java"}]},{"begin":"<!\\\\[CDATA\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"]]>","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.unquoted.cdata.xml"}],"repository":{"EntityDecl":{"begin":"(<!)(ENTITY)\\\\s+(%\\\\s+)?([:A-Z_a-z][-.0-:A-Z_a-z]*)(\\\\s+(?:SYSTEM|PUBLIC)\\\\s+)?","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"keyword.other.entity.xml"},"3":{"name":"punctuation.definition.entity.xml"},"4":{"name":"variable.language.entity.xml"},"5":{"name":"keyword.other.entitytype.xml"}},"end":"(>)","patterns":[{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},"bare-ampersand":{"match":"&","name":"invalid.illegal.bad-ampersand.xml"},"comments":{"patterns":[{"begin":"<%--","captures":{"0":{"name":"punctuation.definition.comment.xml"},"end":"--%>","name":"comment.block.xml"}},{"begin":"<!--","captures":{"0":{"name":"punctuation.definition.comment.xml"}},"end":"-->","name":"comment.block.xml","patterns":[{"begin":"--(?!>)","captures":{"0":{"name":"invalid.illegal.bad-comments-or-CDATA.xml"}}}]}]},"doublequotedString":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.double.xml","patterns":[{"include":"#entity"},{"include":"#bare-ampersand"}]},"entity":{"captures":{"1":{"name":"punctuation.definition.constant.xml"},"3":{"name":"punctuation.definition.constant.xml"}},"match":"(&)([:A-Z_a-z][-.0-:A-Z_a-z]*|#[0-9]+|#x\\\\h+)(;)","name":"constant.character.entity.xml"},"internalSubset":{"begin":"(\\\\[)","captures":{"1":{"name":"punctuation.definition.constant.xml"}},"end":"(])","name":"meta.internalsubset.xml","patterns":[{"include":"#EntityDecl"},{"include":"#parameterEntity"},{"include":"#comments"}]},"parameterEntity":{"captures":{"1":{"name":"punctuation.definition.constant.xml"},"3":{"name":"punctuation.definition.constant.xml"}},"match":"(%)([:A-Z_a-z][-.0-:A-Z_a-z]*)(;)","name":"constant.character.parameter-entity.xml"},"singlequotedString":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.single.xml","patterns":[{"include":"#entity"},{"include":"#bare-ampersand"}]},"tagStuff":{"patterns":[{"captures":{"1":{"name":"entity.other.attribute-name.namespace.xml"},"2":{"name":"entity.other.attribute-name.xml"},"3":{"name":"punctuation.separator.namespace.xml"},"4":{"name":"entity.other.attribute-name.localname.xml"}},"match":"(?:^|\\\\s+)(?:([-.\\\\w]+)((:)))?([-.:\\\\w]+)\\\\s*="},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]}},"scopeName":"text.xml","embeddedLangs":["java"]}`)),i=[...t,r];export{n,i as t};
1
+ import{t as e}from"./index-BmcCug2M.js";import{t}from"./java-CFb3qN4r.js";var n=e({default:()=>i}),r=Object.freeze(JSON.parse(`{"displayName":"XML","name":"xml","patterns":[{"begin":"(<\\\\?)\\\\s*([-0-9A-Z_a-z]+)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.xml"}},"end":"(\\\\?>)","name":"meta.tag.preprocessor.xml","patterns":[{"match":" ([-A-Za-z]+)","name":"entity.other.attribute-name.xml"},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},{"begin":"(<!)(DOCTYPE)\\\\s+([:A-Z_a-z][-.0-:A-Z_a-z]*)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"keyword.other.doctype.xml"},"3":{"name":"variable.language.documentroot.xml"}},"end":"\\\\s*(>)","name":"meta.tag.sgml.doctype.xml","patterns":[{"include":"#internalSubset"}]},{"include":"#comments"},{"begin":"(<)((?:([-0-9A-Z_a-z]+)(:))?([-0-:A-Z_a-z]+))(?=(\\\\s[^>]*)?></\\\\2>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.xml"},"3":{"name":"entity.name.tag.namespace.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(>)(</)((?:([-0-9A-Z_a-z]+)(:))?([-0-:A-Z_a-z]+))(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"punctuation.definition.tag.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"entity.name.tag.namespace.xml"},"5":{"name":"punctuation.separator.namespace.xml"},"6":{"name":"entity.name.tag.localname.xml"},"7":{"name":"punctuation.definition.tag.xml"}},"name":"meta.tag.no-content.xml","patterns":[{"include":"#tagStuff"}]},{"begin":"(</?)(?:([-.\\\\w]+)((:)))?([-.:\\\\w]+)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.namespace.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(/?>)","name":"meta.tag.xml","patterns":[{"include":"#tagStuff"}]},{"include":"#entity"},{"include":"#bare-ampersand"},{"begin":"<%@","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.xml"}},"end":"%>","endCaptures":{"0":{"name":"punctuation.section.embedded.end.xml"}},"name":"source.java-props.embedded.xml","patterns":[{"match":"page|include|taglib","name":"keyword.other.page-props.xml"}]},{"begin":"<%[!=]?(?!--)","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.xml"}},"end":"(?!--)%>","endCaptures":{"0":{"name":"punctuation.section.embedded.end.xml"}},"name":"source.java.embedded.xml","patterns":[{"include":"source.java"}]},{"begin":"<!\\\\[CDATA\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"]]>","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.unquoted.cdata.xml"}],"repository":{"EntityDecl":{"begin":"(<!)(ENTITY)\\\\s+(%\\\\s+)?([:A-Z_a-z][-.0-:A-Z_a-z]*)(\\\\s+(?:SYSTEM|PUBLIC)\\\\s+)?","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"keyword.other.entity.xml"},"3":{"name":"punctuation.definition.entity.xml"},"4":{"name":"variable.language.entity.xml"},"5":{"name":"keyword.other.entitytype.xml"}},"end":"(>)","patterns":[{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},"bare-ampersand":{"match":"&","name":"invalid.illegal.bad-ampersand.xml"},"comments":{"patterns":[{"begin":"<%--","captures":{"0":{"name":"punctuation.definition.comment.xml"},"end":"--%>","name":"comment.block.xml"}},{"begin":"<!--","captures":{"0":{"name":"punctuation.definition.comment.xml"}},"end":"-->","name":"comment.block.xml","patterns":[{"begin":"--(?!>)","captures":{"0":{"name":"invalid.illegal.bad-comments-or-CDATA.xml"}}}]}]},"doublequotedString":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.double.xml","patterns":[{"include":"#entity"},{"include":"#bare-ampersand"}]},"entity":{"captures":{"1":{"name":"punctuation.definition.constant.xml"},"3":{"name":"punctuation.definition.constant.xml"}},"match":"(&)([:A-Z_a-z][-.0-:A-Z_a-z]*|#[0-9]+|#x\\\\h+)(;)","name":"constant.character.entity.xml"},"internalSubset":{"begin":"(\\\\[)","captures":{"1":{"name":"punctuation.definition.constant.xml"}},"end":"(])","name":"meta.internalsubset.xml","patterns":[{"include":"#EntityDecl"},{"include":"#parameterEntity"},{"include":"#comments"}]},"parameterEntity":{"captures":{"1":{"name":"punctuation.definition.constant.xml"},"3":{"name":"punctuation.definition.constant.xml"}},"match":"(%)([:A-Z_a-z][-.0-:A-Z_a-z]*)(;)","name":"constant.character.parameter-entity.xml"},"singlequotedString":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.single.xml","patterns":[{"include":"#entity"},{"include":"#bare-ampersand"}]},"tagStuff":{"patterns":[{"captures":{"1":{"name":"entity.other.attribute-name.namespace.xml"},"2":{"name":"entity.other.attribute-name.xml"},"3":{"name":"punctuation.separator.namespace.xml"},"4":{"name":"entity.other.attribute-name.localname.xml"}},"match":"(?:^|\\\\s+)(?:([-.\\\\w]+)((:)))?([-.:\\\\w]+)\\\\s*="},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]}},"scopeName":"text.xml","embeddedLangs":["java"]}`)),i=[...t,r];export{n,i as t};
@@ -1 +1 @@
1
- import{t as e}from"./xml-DJEk7u4n.js";var t=Object.freeze(JSON.parse(`{"displayName":"XSL","name":"xsl","patterns":[{"begin":"(<)(xsl)((:))(template)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.namespace.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(>)","name":"meta.tag.xml.template","patterns":[{"captures":{"1":{"name":"entity.other.attribute-name.namespace.xml"},"2":{"name":"entity.other.attribute-name.xml"},"3":{"name":"punctuation.separator.namespace.xml"},"4":{"name":"entity.other.attribute-name.localname.xml"}},"match":" (?:([-0-9A-Z_a-z]+)((:)))?([-A-Za-z]+)"},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},{"include":"text.xml"}],"repository":{"doublequotedString":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.double.xml"},"singlequotedString":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.single.xml"}},"scopeName":"text.xml.xsl","embeddedLangs":["xml"]}`)),n=[...e,t];export{n as default};
1
+ import{t as e}from"./xml-DMifOLSe.js";var t=Object.freeze(JSON.parse(`{"displayName":"XSL","name":"xsl","patterns":[{"begin":"(<)(xsl)((:))(template)","captures":{"1":{"name":"punctuation.definition.tag.xml"},"2":{"name":"entity.name.tag.namespace.xml"},"3":{"name":"entity.name.tag.xml"},"4":{"name":"punctuation.separator.namespace.xml"},"5":{"name":"entity.name.tag.localname.xml"}},"end":"(>)","name":"meta.tag.xml.template","patterns":[{"captures":{"1":{"name":"entity.other.attribute-name.namespace.xml"},"2":{"name":"entity.other.attribute-name.xml"},"3":{"name":"punctuation.separator.namespace.xml"},"4":{"name":"entity.other.attribute-name.localname.xml"}},"match":" (?:([-0-9A-Z_a-z]+)((:)))?([-A-Za-z]+)"},{"include":"#doublequotedString"},{"include":"#singlequotedString"}]},{"include":"text.xml"}],"repository":{"doublequotedString":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.double.xml"},"singlequotedString":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.xml"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.xml"}},"name":"string.quoted.single.xml"}},"scopeName":"text.xml.xsl","embeddedLangs":["xml"]}`)),n=[...e,t];export{n as default};
@@ -1 +1 @@
1
- import{t as e}from"./index-BPaJGi-m.js";var t=e({default:()=>n}),n=[Object.freeze(JSON.parse(`{"displayName":"YAML","fileTypes":["yaml","yml","rviz","reek","clang-format","yaml-tmlanguage","syntax","sublime-syntax"],"firstLineMatch":"^%YAML( ?1.\\\\d+)?","name":"yaml","patterns":[{"include":"#comment"},{"include":"#property"},{"include":"#directive"},{"match":"^---","name":"entity.other.document.begin.yaml"},{"match":"^\\\\.{3}","name":"entity.other.document.end.yaml"},{"include":"#node"}],"repository":{"block-collection":{"patterns":[{"include":"#block-sequence"},{"include":"#block-mapping"}]},"block-mapping":{"patterns":[{"include":"#block-pair"}]},"block-node":{"patterns":[{"include":"#prototype"},{"include":"#block-scalar"},{"include":"#block-collection"},{"include":"#flow-scalar-plain-out"},{"include":"#flow-node"}]},"block-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"1":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=\\\\?)|^ *(:)|(:)","endCaptures":{"1":{"name":"punctuation.separator.key-value.mapping.yaml"},"2":{"name":"invalid.illegal.expected-newline.yaml"}},"name":"meta.block-mapping.yaml","patterns":[{"include":"#block-node"}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S)([^:\\\\s]|:\\\\S|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},{"match":":(?=\\\\s|$)","name":"punctuation.separator.key-value.mapping.yaml"}]},"block-scalar":{"begin":"(?:(\\\\|)|(>))([1-9])?([-+])?(.*\\\\n?)","beginCaptures":{"1":{"name":"keyword.control.flow.block-scalar.literal.yaml"},"2":{"name":"keyword.control.flow.block-scalar.folded.yaml"},"3":{"name":"constant.numeric.indentation-indicator.yaml"},"4":{"name":"storage.modifier.chomping-indicator.yaml"},"5":{"patterns":[{"include":"#comment"},{"match":".+","name":"invalid.illegal.expected-comment-or-newline.yaml"}]}},"end":"^(?=\\\\S)|(?!\\\\G)","patterns":[{"begin":"^( +)(?! )","end":"^(?!\\\\1|\\\\s*$)","name":"string.unquoted.block.yaml"}]},"block-sequence":{"match":"(-)(?!\\\\S)","name":"punctuation.definition.block.sequence.item.yaml"},"comment":{"begin":"(?:^([\\\\t ]*)|[\\\\t ]+)(?=#\\\\p{print}*$)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.yaml"}},"end":"(?!\\\\G)","patterns":[{"begin":"#","beginCaptures":{"0":{"name":"punctuation.definition.comment.yaml"}},"end":"\\\\n","name":"comment.line.number-sign.yaml"}]},"directive":{"begin":"^%","beginCaptures":{"0":{"name":"punctuation.definition.directive.begin.yaml"}},"end":"(?=$|[\\\\t ]+($|#))","name":"meta.directive.yaml","patterns":[{"captures":{"1":{"name":"keyword.other.directive.yaml.yaml"},"2":{"name":"constant.numeric.yaml-version.yaml"}},"match":"\\\\G(YAML)[\\\\t ]+(\\\\d+\\\\.\\\\d+)"},{"captures":{"1":{"name":"keyword.other.directive.tag.yaml"},"2":{"name":"storage.type.tag-handle.yaml"},"3":{"name":"support.type.tag-prefix.yaml"}},"match":"\\\\G(TAG)(?:[\\\\t ]+(!(?:[-0-9A-Za-z]*!)?)(?:[\\\\t ]+(!(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])*|(?![]!,\\\\[{}])(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+))?)?"},{"captures":{"1":{"name":"support.other.directive.reserved.yaml"},"2":{"name":"string.unquoted.directive-name.yaml"},"3":{"name":"string.unquoted.directive-parameter.yaml"}},"match":"\\\\G(\\\\w+)(?:[\\\\t ]+(\\\\w+)(?:[\\\\t ]+(\\\\w+))?)?"},{"match":"\\\\S+","name":"invalid.illegal.unrecognized.yaml"}]},"flow-alias":{"captures":{"1":{"name":"keyword.control.flow.alias.yaml"},"2":{"name":"punctuation.definition.alias.yaml"},"3":{"name":"variable.other.alias.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"((\\\\*))([^],/\\\\[{}\\\\s]+)([^],}\\\\s]\\\\S*)?"},"flow-collection":{"patterns":[{"include":"#flow-sequence"},{"include":"#flow-mapping"}]},"flow-mapping":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.mapping.begin.yaml"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.mapping.end.yaml"}},"name":"meta.flow-mapping.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.mapping.yaml"},{"include":"#flow-pair"}]},"flow-node":{"patterns":[{"include":"#prototype"},{"include":"#flow-alias"},{"include":"#flow-collection"},{"include":"#flow-scalar"}]},"flow-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.explicit.yaml","patterns":[{"include":"#prototype"},{"include":"#flow-pair"},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","beginCaptures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","patterns":[{"include":"#flow-value"}]}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s])([^],:\\\\[{}\\\\s]|:[^],\\\\[{}\\\\s]|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"meta.flow-pair.key.yaml","patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","captures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.yaml","patterns":[{"include":"#flow-value"}]}]},"flow-scalar":{"patterns":[{"include":"#flow-scalar-double-quoted"},{"include":"#flow-scalar-single-quoted"},{"include":"#flow-scalar-plain-in"}]},"flow-scalar-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.double.yaml","patterns":[{"match":"\\\\\\\\([ \\"/0LN\\\\\\\\_abefnprtv]|x\\\\d\\\\d|u\\\\d{4}|U\\\\d{8})","name":"constant.character.escape.yaml"},{"match":"\\\\\\\\\\\\n","name":"constant.character.escape.double-quoted.newline.yaml"}]},"flow-scalar-plain-in":{"patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},"flow-scalar-plain-in-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])"}]},"flow-scalar-plain-out":{"patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},"flow-scalar-plain-out-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))"}]},"flow-scalar-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"'(?!')","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.single.yaml","patterns":[{"match":"''","name":"constant.character.escape.single-quoted.yaml"}]},"flow-sequence":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.sequence.begin.yaml"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.sequence.end.yaml"}},"name":"meta.flow-sequence.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.sequence.yaml"},{"include":"#flow-pair"},{"include":"#flow-node"}]},"flow-value":{"patterns":[{"begin":"\\\\G(?![],}])","end":"(?=[],}])","name":"meta.flow-pair.value.yaml","patterns":[{"include":"#flow-node"}]}]},"node":{"patterns":[{"include":"#block-node"}]},"property":{"begin":"(?=[!\\\\&])","end":"(?!\\\\G)","name":"meta.property.yaml","patterns":[{"captures":{"1":{"name":"keyword.control.property.anchor.yaml"},"2":{"name":"punctuation.definition.anchor.yaml"},"3":{"name":"entity.name.type.anchor.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"\\\\G((&))([^],/\\\\[{}\\\\s]+)(\\\\S+)?"},{"match":"\\\\G!(?:<(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+>|(?:[-0-9A-Za-z]*!)?(?:%\\\\h{2}|[#$\\\\&-+\\\\--;=?-Z_a-z~])+|)(?=[\\\\t ]|$)","name":"storage.type.tag-handle.yaml"},{"match":"\\\\S+","name":"invalid.illegal.tag-handle.yaml"}]},"prototype":{"patterns":[{"include":"#comment"},{"include":"#property"}]}},"scopeName":"source.yaml","aliases":["yml"]}`))];export{t as n,n as t};
1
+ import{t as e}from"./index-BmcCug2M.js";var t=e({default:()=>n}),n=[Object.freeze(JSON.parse(`{"displayName":"YAML","fileTypes":["yaml","yml","rviz","reek","clang-format","yaml-tmlanguage","syntax","sublime-syntax"],"firstLineMatch":"^%YAML( ?1.\\\\d+)?","name":"yaml","patterns":[{"include":"#comment"},{"include":"#property"},{"include":"#directive"},{"match":"^---","name":"entity.other.document.begin.yaml"},{"match":"^\\\\.{3}","name":"entity.other.document.end.yaml"},{"include":"#node"}],"repository":{"block-collection":{"patterns":[{"include":"#block-sequence"},{"include":"#block-mapping"}]},"block-mapping":{"patterns":[{"include":"#block-pair"}]},"block-node":{"patterns":[{"include":"#prototype"},{"include":"#block-scalar"},{"include":"#block-collection"},{"include":"#flow-scalar-plain-out"},{"include":"#flow-node"}]},"block-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"1":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=\\\\?)|^ *(:)|(:)","endCaptures":{"1":{"name":"punctuation.separator.key-value.mapping.yaml"},"2":{"name":"invalid.illegal.expected-newline.yaml"}},"name":"meta.block-mapping.yaml","patterns":[{"include":"#block-node"}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S)([^:\\\\s]|:\\\\S|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},{"match":":(?=\\\\s|$)","name":"punctuation.separator.key-value.mapping.yaml"}]},"block-scalar":{"begin":"(?:(\\\\|)|(>))([1-9])?([-+])?(.*\\\\n?)","beginCaptures":{"1":{"name":"keyword.control.flow.block-scalar.literal.yaml"},"2":{"name":"keyword.control.flow.block-scalar.folded.yaml"},"3":{"name":"constant.numeric.indentation-indicator.yaml"},"4":{"name":"storage.modifier.chomping-indicator.yaml"},"5":{"patterns":[{"include":"#comment"},{"match":".+","name":"invalid.illegal.expected-comment-or-newline.yaml"}]}},"end":"^(?=\\\\S)|(?!\\\\G)","patterns":[{"begin":"^( +)(?! )","end":"^(?!\\\\1|\\\\s*$)","name":"string.unquoted.block.yaml"}]},"block-sequence":{"match":"(-)(?!\\\\S)","name":"punctuation.definition.block.sequence.item.yaml"},"comment":{"begin":"(?:^([\\\\t ]*)|[\\\\t ]+)(?=#\\\\p{print}*$)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.yaml"}},"end":"(?!\\\\G)","patterns":[{"begin":"#","beginCaptures":{"0":{"name":"punctuation.definition.comment.yaml"}},"end":"\\\\n","name":"comment.line.number-sign.yaml"}]},"directive":{"begin":"^%","beginCaptures":{"0":{"name":"punctuation.definition.directive.begin.yaml"}},"end":"(?=$|[\\\\t ]+($|#))","name":"meta.directive.yaml","patterns":[{"captures":{"1":{"name":"keyword.other.directive.yaml.yaml"},"2":{"name":"constant.numeric.yaml-version.yaml"}},"match":"\\\\G(YAML)[\\\\t ]+(\\\\d+\\\\.\\\\d+)"},{"captures":{"1":{"name":"keyword.other.directive.tag.yaml"},"2":{"name":"storage.type.tag-handle.yaml"},"3":{"name":"support.type.tag-prefix.yaml"}},"match":"\\\\G(TAG)(?:[\\\\t ]+(!(?:[-0-9A-Za-z]*!)?)(?:[\\\\t ]+(!(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])*|(?![]!,\\\\[{}])(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+))?)?"},{"captures":{"1":{"name":"support.other.directive.reserved.yaml"},"2":{"name":"string.unquoted.directive-name.yaml"},"3":{"name":"string.unquoted.directive-parameter.yaml"}},"match":"\\\\G(\\\\w+)(?:[\\\\t ]+(\\\\w+)(?:[\\\\t ]+(\\\\w+))?)?"},{"match":"\\\\S+","name":"invalid.illegal.unrecognized.yaml"}]},"flow-alias":{"captures":{"1":{"name":"keyword.control.flow.alias.yaml"},"2":{"name":"punctuation.definition.alias.yaml"},"3":{"name":"variable.other.alias.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"((\\\\*))([^],/\\\\[{}\\\\s]+)([^],}\\\\s]\\\\S*)?"},"flow-collection":{"patterns":[{"include":"#flow-sequence"},{"include":"#flow-mapping"}]},"flow-mapping":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.mapping.begin.yaml"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.mapping.end.yaml"}},"name":"meta.flow-mapping.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.mapping.yaml"},{"include":"#flow-pair"}]},"flow-node":{"patterns":[{"include":"#prototype"},{"include":"#flow-alias"},{"include":"#flow-collection"},{"include":"#flow-scalar"}]},"flow-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.explicit.yaml","patterns":[{"include":"#prototype"},{"include":"#flow-pair"},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","beginCaptures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","patterns":[{"include":"#flow-value"}]}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s])([^],:\\\\[{}\\\\s]|:[^],\\\\[{}\\\\s]|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"meta.flow-pair.key.yaml","patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","captures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.yaml","patterns":[{"include":"#flow-value"}]}]},"flow-scalar":{"patterns":[{"include":"#flow-scalar-double-quoted"},{"include":"#flow-scalar-single-quoted"},{"include":"#flow-scalar-plain-in"}]},"flow-scalar-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.double.yaml","patterns":[{"match":"\\\\\\\\([ \\"/0LN\\\\\\\\_abefnprtv]|x\\\\d\\\\d|u\\\\d{4}|U\\\\d{8})","name":"constant.character.escape.yaml"},{"match":"\\\\\\\\\\\\n","name":"constant.character.escape.double-quoted.newline.yaml"}]},"flow-scalar-plain-in":{"patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},"flow-scalar-plain-in-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])"}]},"flow-scalar-plain-out":{"patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},"flow-scalar-plain-out-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))"}]},"flow-scalar-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"'(?!')","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.single.yaml","patterns":[{"match":"''","name":"constant.character.escape.single-quoted.yaml"}]},"flow-sequence":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.sequence.begin.yaml"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.sequence.end.yaml"}},"name":"meta.flow-sequence.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.sequence.yaml"},{"include":"#flow-pair"},{"include":"#flow-node"}]},"flow-value":{"patterns":[{"begin":"\\\\G(?![],}])","end":"(?=[],}])","name":"meta.flow-pair.value.yaml","patterns":[{"include":"#flow-node"}]}]},"node":{"patterns":[{"include":"#block-node"}]},"property":{"begin":"(?=[!\\\\&])","end":"(?!\\\\G)","name":"meta.property.yaml","patterns":[{"captures":{"1":{"name":"keyword.control.property.anchor.yaml"},"2":{"name":"punctuation.definition.anchor.yaml"},"3":{"name":"entity.name.type.anchor.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"\\\\G((&))([^],/\\\\[{}\\\\s]+)(\\\\S+)?"},{"match":"\\\\G!(?:<(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+>|(?:[-0-9A-Za-z]*!)?(?:%\\\\h{2}|[#$\\\\&-+\\\\--;=?-Z_a-z~])+|)(?=[\\\\t ]|$)","name":"storage.type.tag-handle.yaml"},{"match":"\\\\S+","name":"invalid.illegal.tag-handle.yaml"}]},"prototype":{"patterns":[{"include":"#comment"},{"include":"#property"}]}},"scopeName":"source.yaml","aliases":["yml"]}`))];export{t as n,n as t};
package/dist/index.html CHANGED
@@ -10,8 +10,8 @@
10
10
  <meta name="theme-color" content="#e9e2d5" />
11
11
  <link rel="icon" href="./favicon.svg" type="image/svg+xml" />
12
12
  <title>Diffsplain</title>
13
- <script type="module" crossorigin src="./assets/index-BPaJGi-m.js"></script>
14
- <link rel="stylesheet" crossorigin href="./assets/index-VAyBpb3u.css">
13
+ <script type="module" crossorigin src="./assets/index-BmcCug2M.js"></script>
14
+ <link rel="stylesheet" crossorigin href="./assets/index-CADUNiTy.css">
15
15
  </head>
16
16
  <body>
17
17
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "diffsplain",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "Review Git diffs one file at a time with coding agent notes beside each patch.",
5
5
  "keywords": [
6
6
  "codex",
@@ -28,6 +28,7 @@
28
28
  "files": [
29
29
  "dist",
30
30
  "scripts/access-token.mjs",
31
+ "scripts/agent-config.mjs",
31
32
  "scripts/agent-exclusions.mjs",
32
33
  "scripts/agent-review.mjs",
33
34
  "scripts/build-diff-data.mjs",
@@ -103,7 +104,7 @@
103
104
  "setup": "pnpm install --frozen-lockfile",
104
105
  "setup:smoke": "node scripts/setup-smoke.mjs",
105
106
  "test": "pnpm run test:unit && pnpm run test:integration && pnpm run test:coverage && pnpm run test:browser && pnpm run test:platform",
106
- "test:unit": "node --test tests/access-token.test.mjs tests/agent-exclusions.test.mjs tests/agent-review.test.mjs tests/automation-trust.test.mjs tests/cache.test.mjs tests/cli-args.test.mjs tests/cli-docs.test.mjs tests/coding-agents.test.mjs tests/data-contract.test.mjs tests/doctor.test.mjs tests/landing-demo.test.mjs tests/package-manifest.test.mjs tests/plan-ledger.test.mjs tests/presenter-runtime.test.mjs tests/product-gate.test.mjs tests/release.test.mjs tests/review-chat.test.mjs tests/summary-path.test.mjs tests/support-record.test.mjs tests/test-lanes.test.mjs tests/tool-profiles.test.mjs",
107
+ "test:unit": "node --test tests/access-token.test.mjs tests/agent-config.test.mjs tests/agent-exclusions.test.mjs tests/agent-review.test.mjs tests/automation-trust.test.mjs tests/cache.test.mjs tests/cli-args.test.mjs tests/cli-docs.test.mjs tests/coding-agents.test.mjs tests/data-contract.test.mjs tests/doctor.test.mjs tests/landing-demo.test.mjs tests/package-manifest.test.mjs tests/plan-ledger.test.mjs tests/presenter-runtime.test.mjs tests/product-gate.test.mjs tests/release.test.mjs tests/review-chat.test.mjs tests/summary-path.test.mjs tests/support-record.test.mjs tests/test-lanes.test.mjs tests/tool-profiles.test.mjs",
107
108
  "test:integration": "pnpm run build && node --test --test-concurrency=1 tests/dev.test.mjs tests/generate-summaries.test.mjs tests/live-update-speed.test.mjs tests/performance-gate.test.mjs tests/present-agent.test.mjs tests/present-help.test.mjs tests/present-instances.test.mjs tests/presenter-recovery.test.mjs tests/remote-targets.test.mjs tests/rendered-html.test.mjs tests/serve-built.test.mjs tests/setup-environments.test.mjs",
108
109
  "test:coverage": "pnpm run build && c8 node --test --test-concurrency=1 tests/cli-args.test.mjs tests/generate-summaries.test.mjs tests/present-agent.test.mjs tests/present-help.test.mjs tests/present-instances.test.mjs tests/remote-targets.test.mjs tests/serve-built.test.mjs",
109
110
  "test:browser": "pnpm run build && node --test tests/browser/*.test.mjs",
@@ -0,0 +1,184 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import {
3
+ existsSync,
4
+ mkdirSync,
5
+ readFileSync,
6
+ renameSync,
7
+ rmSync,
8
+ writeFileSync,
9
+ } from 'node:fs';
10
+ import { homedir } from 'node:os';
11
+ import { dirname, posix, win32 } from 'node:path';
12
+
13
+ function configError(file, detail) {
14
+ return new Error(
15
+ `Diffsplain agent configuration at "${file}" is damaged: ${detail}`,
16
+ );
17
+ }
18
+
19
+ function windowsConfigPath(paths, env, homeDirectory) {
20
+ if (env.APPDATA) {
21
+ return paths.join(env.APPDATA, 'diffsplain', 'config.json');
22
+ }
23
+ const profile = env.USERPROFILE || homeDirectory;
24
+ return paths.join(
25
+ profile,
26
+ 'AppData',
27
+ 'Roaming',
28
+ 'diffsplain',
29
+ 'config.json',
30
+ );
31
+ }
32
+
33
+ function unixConfigPath(paths, env, homeDirectory, platform) {
34
+ if (paths.isAbsolute(env.XDG_CONFIG_HOME || '')) {
35
+ return paths.join(env.XDG_CONFIG_HOME, 'diffsplain', 'config.json');
36
+ }
37
+ const base = platform === 'darwin'
38
+ ? paths.join(homeDirectory, 'Library', 'Application Support')
39
+ : paths.join(homeDirectory, '.config');
40
+ return paths.join(base, 'diffsplain', 'config.json');
41
+ }
42
+
43
+ export function agentConfigPath({
44
+ env = process.env,
45
+ homeDirectory = homedir(),
46
+ platform = process.platform,
47
+ } = {}) {
48
+ const paths = platform === 'win32' ? win32 : posix;
49
+ if (platform === 'win32') {
50
+ return windowsConfigPath(paths, env, homeDirectory);
51
+ }
52
+ return unixConfigPath(paths, env, homeDirectory, platform);
53
+ }
54
+
55
+ function readConfigContents(file) {
56
+ try {
57
+ return readFileSync(file, 'utf8');
58
+ } catch (error) {
59
+ if (error?.code === 'ENOENT') return undefined;
60
+ throw new Error(
61
+ `Could not read Diffsplain agent configuration at "${file}": ${error.message}`,
62
+ );
63
+ }
64
+ }
65
+
66
+ function parseConfigContents(file, contents) {
67
+ try {
68
+ return JSON.parse(contents);
69
+ } catch {
70
+ throw configError(file, 'the file is not valid JSON.');
71
+ }
72
+ }
73
+
74
+ function assertConfigRecord(file, parsed) {
75
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
76
+ throw configError(file, 'the top-level value must be a JSON object.');
77
+ }
78
+ }
79
+
80
+ function assertAgentValue(file, parsed) {
81
+ if (!Object.hasOwn(parsed, 'agent')) return;
82
+ if (typeof parsed.agent !== 'string') {
83
+ throw configError(file, '"agent" must be a string.');
84
+ }
85
+ }
86
+
87
+ function readConfigRecord(file) {
88
+ const contents = readConfigContents(file);
89
+ if (contents === undefined) return undefined;
90
+ const parsed = parseConfigContents(file, contents);
91
+ assertConfigRecord(file, parsed);
92
+ assertAgentValue(file, parsed);
93
+ return parsed;
94
+ }
95
+
96
+ export function readConfiguredAgent({
97
+ file = agentConfigPath(),
98
+ } = {}) {
99
+ return readConfigRecord(file)?.agent;
100
+ }
101
+
102
+ function discardFile(file) {
103
+ try {
104
+ rmSync(file, { force: true });
105
+ } catch {
106
+ return;
107
+ }
108
+ }
109
+
110
+ function moveExistingConfig(file, backup) {
111
+ if (!existsSync(file)) return false;
112
+ renameSync(file, backup);
113
+ return true;
114
+ }
115
+
116
+ function restoreConfigFile(file, backup, movedExisting, originalError) {
117
+ if (!movedExisting) return;
118
+ if (existsSync(file)) return;
119
+ try {
120
+ renameSync(backup, file);
121
+ } catch (restoreError) {
122
+ originalError.cause = restoreError;
123
+ }
124
+ }
125
+
126
+ function replaceConfigFile(file, record) {
127
+ const directory = dirname(file);
128
+ mkdirSync(directory, { recursive: true, mode: 0o700 });
129
+ const suffix = `${process.pid}-${randomBytes(8).toString('hex')}`;
130
+ const temporary = `${file}.${suffix}.tmp`;
131
+ const backup = `${file}.${suffix}.bak`;
132
+ let movedExisting = false;
133
+
134
+ try {
135
+ writeFileSync(temporary, `${JSON.stringify(record, null, 2)}\n`, {
136
+ encoding: 'utf8',
137
+ flag: 'wx',
138
+ mode: 0o600,
139
+ });
140
+ movedExisting = moveExistingConfig(file, backup);
141
+ renameSync(temporary, file);
142
+ } catch (error) {
143
+ discardFile(temporary);
144
+ restoreConfigFile(file, backup, movedExisting, error);
145
+ throw error;
146
+ }
147
+ discardFile(backup);
148
+ }
149
+
150
+ function showAgentConfig(_operation, current) {
151
+ return { kind: 'show', agent: current?.agent };
152
+ }
153
+
154
+ function setAgentConfig(operation, current, file) {
155
+ replaceConfigFile(file, { ...(current || {}), agent: operation.agent });
156
+ return { kind: 'set', agent: operation.agent };
157
+ }
158
+
159
+ function unsetAgentConfig(_operation, current, file) {
160
+ if (!current) return { kind: 'unset' };
161
+ if (!Object.hasOwn(current, 'agent')) return { kind: 'unset' };
162
+ const next = { ...current };
163
+ delete next.agent;
164
+ replaceConfigFile(file, next);
165
+ return { kind: 'unset' };
166
+ }
167
+
168
+ const CONFIG_OPERATIONS = {
169
+ set: setAgentConfig,
170
+ show: showAgentConfig,
171
+ unset: unsetAgentConfig,
172
+ };
173
+
174
+ export function applyAgentConfigOperation(
175
+ operation,
176
+ { file = agentConfigPath() } = {},
177
+ ) {
178
+ const current = readConfigRecord(file);
179
+ const applyOperation = CONFIG_OPERATIONS[operation.kind];
180
+ if (!applyOperation) {
181
+ throw new Error(`Unknown agent configuration operation: ${operation.kind}`);
182
+ }
183
+ return applyOperation(operation, current, file);
184
+ }
@@ -82,6 +82,8 @@ Commands:
82
82
  doctor [--json] [--deep]
83
83
  Check review, agent, and pull request capabilities
84
84
  cache Show or prune saved agent notes
85
+ config agent [NAME|--unset]
86
+ Show, set, or unset the default coding agent
85
87
 
86
88
  Targets:
87
89
  --branch NAME Show a remote branch against its default branch
@@ -118,8 +120,8 @@ Options:
118
120
  -v, --version Show the installed version
119
121
 
120
122
  Agent choice:
121
- Without --agent, an interactive terminal lists usable agents. In scripts,
122
- pass --agent NAME or --no-agent.
123
+ Choice order is --no-agent, --agent, then the configured default.
124
+ Without any choice, an interactive terminal lists usable agents.
123
125
 
124
126
  Cursor:
125
127
  Requires Cursor Agent 2026.08.11 or newer. Uses the signed-in CLI in the
@@ -195,6 +197,31 @@ export function parseCliArgs(
195
197
  pathExists = existsSync,
196
198
  } = {},
197
199
  ) {
200
+ if (rawArgs[0] === 'config') {
201
+ if (rawArgs[1] !== 'agent') {
202
+ fail('Use: diffsplain config agent [NAME|--unset]');
203
+ }
204
+ if (rawArgs.length === 2) {
205
+ return { config: { kind: 'show' } };
206
+ }
207
+ if (rawArgs.length !== 3) {
208
+ fail('Use: diffsplain config agent [NAME|--unset]');
209
+ }
210
+ const value = rawArgs[2];
211
+ if (value === '--unset') {
212
+ return { config: { kind: 'unset' } };
213
+ }
214
+ if (value.startsWith('--')) {
215
+ fail('Use: diffsplain config agent [NAME|--unset]');
216
+ }
217
+ if (!codingAgents.includes(value)) {
218
+ fail(
219
+ `Unsupported agent "${value}". Choose ${enabledCodingAgents.join(', ')}.`,
220
+ );
221
+ }
222
+ return { config: { kind: 'set', agent: value } };
223
+ }
224
+
198
225
  if (rawArgs[0] === 'doctor') {
199
226
  const options = new Set(rawArgs.slice(1));
200
227
  for (const option of options) {
@@ -8,6 +8,7 @@ import {
8
8
  isAbsolute,
9
9
  join,
10
10
  } from 'node:path';
11
+ import { readConfiguredAgent } from './agent-config.mjs';
11
12
 
12
13
  export const codingAgentCapabilities = {
13
14
  codex: { binary: 'codex', model: true, reasoning: true },
@@ -263,15 +264,57 @@ function nonInteractiveSelectionError() {
263
264
  );
264
265
  }
265
266
 
266
- async function selectRequestedCodingAgent(requested, available) {
267
- if (!codingAgents.includes(requested)) {
268
- throw new Error(
269
- `Unsupported agent "${requested}". Choose ${enabledCodingAgents.join(', ')}.`,
267
+ class CodingAgentSelectionError extends Error {
268
+ constructor(agent, message) {
269
+ super(message);
270
+ this.agent = agent;
271
+ }
272
+ }
273
+
274
+ export function codingAgentFromSelectionError(error) {
275
+ return error instanceof CodingAgentSelectionError
276
+ ? error.agent
277
+ : undefined;
278
+ }
279
+
280
+ function unsupportedSelectionError(requested, configured) {
281
+ if (configured) {
282
+ return new CodingAgentSelectionError(
283
+ requested,
284
+ `Configured coding agent "${requested}" is unsupported. Choose ${enabledCodingAgents.join(', ')} with diffsplain config agent NAME, or use --agent NAME for this run.`,
285
+ );
286
+ }
287
+ return new CodingAgentSelectionError(
288
+ requested,
289
+ `Unsupported agent "${requested}". Choose ${enabledCodingAgents.join(', ')}.`,
290
+ );
291
+ }
292
+
293
+ function unavailableSelectionError(requested, result, configured) {
294
+ if (!configured) {
295
+ return new CodingAgentSelectionError(
296
+ requested,
297
+ unavailableAgentError(requested, result).message,
270
298
  );
271
299
  }
300
+ const reason = typeof result === 'object' ? result.reason : undefined;
301
+ return new CodingAgentSelectionError(
302
+ requested,
303
+ `Configured coding agent "${requested}" is not available.${reason ? ` ${reason}` : ''} Change it with diffsplain config agent NAME, or use --agent NAME for this run.`,
304
+ );
305
+ }
306
+
307
+ async function selectRequestedCodingAgent(
308
+ requested,
309
+ available,
310
+ { configured = false } = {},
311
+ ) {
312
+ if (!codingAgents.includes(requested)) {
313
+ throw unsupportedSelectionError(requested, configured);
314
+ }
272
315
  const result = await available(requested);
273
316
  if (!availableResult(result)) {
274
- throw unavailableAgentError(requested, result);
317
+ throw unavailableSelectionError(requested, result, configured);
275
318
  }
276
319
  return requested;
277
320
  }
@@ -340,15 +383,23 @@ export async function selectCodingAgent(
340
383
  requested,
341
384
  {
342
385
  available = commandAvailable,
386
+ configuredAgent = readConfiguredAgent,
343
387
  input = process.stdin,
344
388
  output = process.stderr,
345
389
  signal,
346
390
  } = {},
347
391
  ) {
348
- if (requested) {
392
+ if (requested !== undefined) {
349
393
  return selectRequestedCodingAgent(requested, available);
350
394
  }
351
395
 
396
+ const configured = await configuredAgent();
397
+ if (configured !== undefined) {
398
+ return selectRequestedCodingAgent(configured, available, {
399
+ configured: true,
400
+ });
401
+ }
402
+
352
403
  if (!input?.isTTY || !output?.isTTY) {
353
404
  throw nonInteractiveSelectionError();
354
405
  }
@@ -16,6 +16,7 @@ import {
16
16
  agentCommand,
17
17
  agentReadOnlyWarning,
18
18
  assertReasoningSupported,
19
+ codingAgentFromSelectionError,
19
20
  codingAgentAvailability,
20
21
  codingAgentBinary,
21
22
  parseAgentResponse,
@@ -135,7 +136,7 @@ Options:
135
136
  --cache-dir PATH Bare cache for fetched Git objects
136
137
  --agent NAME Use codex, claude, copilot, cursor, or opencode
137
138
  Cursor needs version 2026.08.11 or newer
138
- Without --agent, choose from usable agents in a terminal
139
+ Overrides the configured default for this run
139
140
  --codex-bin FILE Codex CLI path (default: codex)
140
141
  --model NAME Model passed to the coding agent
141
142
  --reasoning LEVEL Agent reasoning effort when supported
@@ -148,8 +149,9 @@ Options:
148
149
  --no-checkout-access
149
150
  Limit notes to the supplied snapshot
150
151
 
151
- Without --agent, an interactive terminal is required. In scripts, pass
152
- --agent NAME. Use diffsplain --no-agent for a plain review.`);
152
+ Without --agent or a configured default, an interactive terminal is required.
153
+ Use diffsplain config agent NAME to set a default. Use diffsplain --no-agent
154
+ for a plain review.`);
153
155
  process.exit(0);
154
156
  }
155
157
 
@@ -1213,7 +1215,12 @@ async function selectAgentForNotes() {
1213
1215
  safeCommandVersion(selectedAgent, agentBinary),
1214
1216
  );
1215
1217
  } catch (error) {
1216
- supportRecorder?.setProvider(requestedAgent || 'unknown');
1218
+ supportRecorder?.setProvider(
1219
+ codingAgentFromSelectionError(error) ||
1220
+ selectedAgent ||
1221
+ requestedAgent ||
1222
+ 'unknown',
1223
+ );
1217
1224
  if (error instanceof Error) error.exitCode = 2;
1218
1225
  throw error;
1219
1226
  }