@te-river/opencode-team-mode 1.5.15 → 1.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 (196) hide show
  1. package/README.md +853 -690
  2. package/README.zh-CN.md +761 -631
  3. package/dist/agents.d.ts +5 -3
  4. package/dist/agents.d.ts.map +1 -1
  5. package/dist/agents.js +19 -8
  6. package/dist/agents.js.map +1 -1
  7. package/dist/capabilities.d.ts +1 -1
  8. package/dist/capabilities.js +2 -2
  9. package/dist/capabilities.js.map +1 -1
  10. package/dist/host/note.d.ts +7 -0
  11. package/dist/host/note.d.ts.map +1 -0
  12. package/dist/host/note.js +28 -0
  13. package/dist/host/note.js.map +1 -0
  14. package/dist/host/v1.d.ts +14 -0
  15. package/dist/host/v1.d.ts.map +1 -0
  16. package/dist/host/v1.js +340 -0
  17. package/dist/host/v1.js.map +1 -0
  18. package/dist/host/v2-browser-gate.d.ts +45 -0
  19. package/dist/host/v2-browser-gate.d.ts.map +1 -0
  20. package/dist/host/v2-browser-gate.js +319 -0
  21. package/dist/host/v2-browser-gate.js.map +1 -0
  22. package/dist/host/v2-capabilities.d.ts +68 -0
  23. package/dist/host/v2-capabilities.d.ts.map +1 -0
  24. package/dist/host/v2-capabilities.js +146 -0
  25. package/dist/host/v2-capabilities.js.map +1 -0
  26. package/dist/host/v2-client.d.ts +53 -0
  27. package/dist/host/v2-client.d.ts.map +1 -0
  28. package/dist/host/v2-client.js +193 -0
  29. package/dist/host/v2-client.js.map +1 -0
  30. package/dist/host/v2-events.d.ts +56 -0
  31. package/dist/host/v2-events.d.ts.map +1 -0
  32. package/dist/host/v2-events.js +158 -0
  33. package/dist/host/v2-events.js.map +1 -0
  34. package/dist/host/v2-guard.d.ts +101 -0
  35. package/dist/host/v2-guard.d.ts.map +1 -0
  36. package/dist/host/v2-guard.js +199 -0
  37. package/dist/host/v2-guard.js.map +1 -0
  38. package/dist/host/v2-offload.d.ts +148 -0
  39. package/dist/host/v2-offload.d.ts.map +1 -0
  40. package/dist/host/v2-offload.js +288 -0
  41. package/dist/host/v2-offload.js.map +1 -0
  42. package/dist/host/v2-permissions.d.ts +123 -0
  43. package/dist/host/v2-permissions.d.ts.map +1 -0
  44. package/dist/host/v2-permissions.js +190 -0
  45. package/dist/host/v2-permissions.js.map +1 -0
  46. package/dist/host/v2-probe.d.ts +85 -0
  47. package/dist/host/v2-probe.d.ts.map +1 -0
  48. package/dist/host/v2-probe.js +268 -0
  49. package/dist/host/v2-probe.js.map +1 -0
  50. package/dist/host/v2-scope.d.ts +51 -0
  51. package/dist/host/v2-scope.d.ts.map +1 -0
  52. package/dist/host/v2-scope.js +58 -0
  53. package/dist/host/v2-scope.js.map +1 -0
  54. package/dist/host/v2-session-client.d.ts +74 -0
  55. package/dist/host/v2-session-client.d.ts.map +1 -0
  56. package/dist/host/v2-session-client.js +171 -0
  57. package/dist/host/v2-session-client.js.map +1 -0
  58. package/dist/host/v2-session.d.ts +85 -0
  59. package/dist/host/v2-session.d.ts.map +1 -0
  60. package/dist/host/v2-session.js +171 -0
  61. package/dist/host/v2-session.js.map +1 -0
  62. package/dist/host/v2-subagent.d.ts +157 -0
  63. package/dist/host/v2-subagent.d.ts.map +1 -0
  64. package/dist/host/v2-subagent.js +286 -0
  65. package/dist/host/v2-subagent.js.map +1 -0
  66. package/dist/host/v2-tool.d.ts +67 -0
  67. package/dist/host/v2-tool.d.ts.map +1 -0
  68. package/dist/host/v2-tool.js +209 -0
  69. package/dist/host/v2-tool.js.map +1 -0
  70. package/dist/host/v2-transcript.d.ts +73 -0
  71. package/dist/host/v2-transcript.d.ts.map +1 -0
  72. package/dist/host/v2-transcript.js +151 -0
  73. package/dist/host/v2-transcript.js.map +1 -0
  74. package/dist/host/v2-types.d.ts +229 -0
  75. package/dist/host/v2-types.d.ts.map +1 -0
  76. package/dist/host/v2-types.js +17 -0
  77. package/dist/host/v2-types.js.map +1 -0
  78. package/dist/host/v2.d.ts +42 -0
  79. package/dist/host/v2.d.ts.map +1 -0
  80. package/dist/host/v2.js +706 -0
  81. package/dist/host/v2.js.map +1 -0
  82. package/dist/host-hooks.d.ts +13 -2
  83. package/dist/host-hooks.d.ts.map +1 -1
  84. package/dist/host-hooks.js +18 -5
  85. package/dist/host-hooks.js.map +1 -1
  86. package/dist/index.d.ts +23 -17
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +29 -326
  89. package/dist/index.js.map +1 -1
  90. package/dist/prompts/lead.d.ts +1 -1
  91. package/dist/prompts/lead.d.ts.map +1 -1
  92. package/dist/prompts/lead.js +452 -359
  93. package/dist/prompts/lead.js.map +1 -1
  94. package/dist/prompts/shared.d.ts +2 -2
  95. package/dist/prompts/shared.d.ts.map +1 -1
  96. package/dist/prompts/shared.js +89 -17
  97. package/dist/prompts/shared.js.map +1 -1
  98. package/dist/prompts/specialists.d.ts +2 -2
  99. package/dist/prompts/specialists.d.ts.map +1 -1
  100. package/dist/prompts/specialists.js +44 -10
  101. package/dist/prompts/specialists.js.map +1 -1
  102. package/dist/task-offload.d.ts +83 -0
  103. package/dist/task-offload.d.ts.map +1 -0
  104. package/dist/task-offload.js +174 -0
  105. package/dist/task-offload.js.map +1 -0
  106. package/dist/tm/args-schema.d.ts +4 -0
  107. package/dist/tm/args-schema.d.ts.map +1 -1
  108. package/dist/tm/args-schema.js +36 -3
  109. package/dist/tm/args-schema.js.map +1 -1
  110. package/dist/tm/board.d.ts +113 -0
  111. package/dist/tm/board.d.ts.map +1 -0
  112. package/dist/tm/board.js +275 -0
  113. package/dist/tm/board.js.map +1 -0
  114. package/dist/tm/browser.d.ts +325 -6
  115. package/dist/tm/browser.d.ts.map +1 -1
  116. package/dist/tm/browser.js +1360 -135
  117. package/dist/tm/browser.js.map +1 -1
  118. package/dist/tm/config.d.ts +36 -25
  119. package/dist/tm/config.d.ts.map +1 -1
  120. package/dist/tm/config.js +29 -7
  121. package/dist/tm/config.js.map +1 -1
  122. package/dist/tm/dispatch.d.ts +133 -53
  123. package/dist/tm/dispatch.d.ts.map +1 -1
  124. package/dist/tm/dispatch.js +481 -279
  125. package/dist/tm/dispatch.js.map +1 -1
  126. package/dist/tm/dupe-guard.d.ts +16 -3
  127. package/dist/tm/dupe-guard.d.ts.map +1 -1
  128. package/dist/tm/dupe-guard.js +27 -7
  129. package/dist/tm/dupe-guard.js.map +1 -1
  130. package/dist/tm/egress.d.ts +44 -0
  131. package/dist/tm/egress.d.ts.map +1 -0
  132. package/dist/tm/egress.js +191 -0
  133. package/dist/tm/egress.js.map +1 -0
  134. package/dist/tm/guard.js +1 -1
  135. package/dist/tm/guard.js.map +1 -1
  136. package/dist/tm/index.d.ts +67 -2
  137. package/dist/tm/index.d.ts.map +1 -1
  138. package/dist/tm/index.js +228 -20
  139. package/dist/tm/index.js.map +1 -1
  140. package/dist/tm/ledger.d.ts +114 -0
  141. package/dist/tm/ledger.d.ts.map +1 -0
  142. package/dist/tm/ledger.js +308 -0
  143. package/dist/tm/ledger.js.map +1 -0
  144. package/dist/tm/perm-ask.d.ts +45 -5
  145. package/dist/tm/perm-ask.d.ts.map +1 -1
  146. package/dist/tm/perm-ask.js +107 -7
  147. package/dist/tm/perm-ask.js.map +1 -1
  148. package/dist/tm/pipelines.d.ts.map +1 -1
  149. package/dist/tm/pipelines.js +24 -2
  150. package/dist/tm/pipelines.js.map +1 -1
  151. package/dist/tm/preview.d.ts +55 -0
  152. package/dist/tm/preview.d.ts.map +1 -1
  153. package/dist/tm/preview.js +225 -0
  154. package/dist/tm/preview.js.map +1 -1
  155. package/dist/tm/ptc/tool.d.ts.map +1 -1
  156. package/dist/tm/ptc/tool.js +2 -4
  157. package/dist/tm/ptc/tool.js.map +1 -1
  158. package/dist/tm/pty.d.ts.map +1 -1
  159. package/dist/tm/pty.js +6 -3
  160. package/dist/tm/pty.js.map +1 -1
  161. package/dist/tm/search.d.ts +5 -0
  162. package/dist/tm/search.d.ts.map +1 -1
  163. package/dist/tm/search.js +40 -8
  164. package/dist/tm/search.js.map +1 -1
  165. package/dist/tm/serp-loop.d.ts +45 -0
  166. package/dist/tm/serp-loop.d.ts.map +1 -0
  167. package/dist/tm/serp-loop.js +80 -0
  168. package/dist/tm/serp-loop.js.map +1 -0
  169. package/dist/tm/stats.d.ts +26 -0
  170. package/dist/tm/stats.d.ts.map +1 -1
  171. package/dist/tm/stats.js +194 -4
  172. package/dist/tm/stats.js.map +1 -1
  173. package/dist/tm/webfetch.d.ts +56 -0
  174. package/dist/tm/webfetch.d.ts.map +1 -1
  175. package/dist/tm/webfetch.js +187 -19
  176. package/dist/tm/webfetch.js.map +1 -1
  177. package/dist/tool-coerce.d.ts +24 -0
  178. package/dist/tool-coerce.d.ts.map +1 -0
  179. package/dist/tool-coerce.js +63 -0
  180. package/dist/tool-coerce.js.map +1 -0
  181. package/dist/types.d.ts +7 -1
  182. package/dist/types.d.ts.map +1 -1
  183. package/docs/installation-v2.md +436 -0
  184. package/docs/installation.md +81 -2
  185. package/docs/research/agent-data-exchange.md +117 -0
  186. package/docs/research/browser-pane.md +89 -0
  187. package/docs/research/host-http-api.md +132 -0
  188. package/docs/research/host-subagent-injection.md +187 -0
  189. package/docs/research/plugin-loader-contract.md +261 -0
  190. package/docs/research/v2-builtin-tools.md +447 -0
  191. package/docs/v2-port-notes.md +315 -0
  192. package/index.js +7 -0
  193. package/package.json +4 -1
  194. package/scripts/gen-v2-config.mjs +304 -0
  195. package/scripts/lib/config-surgery.cjs +239 -0
  196. package/scripts/lib/fake-ctx.mjs +146 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2.js","sourceRoot":"","sources":["../../src/host/v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAsB,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAG7F;;;;;kEAKkE;AAClE,MAAM,CAAC,MAAM,iBAAiB,GAC5B,iDAAiD;IACjD,oCAAoC;IACpC,+CAA+C,CAAA;AAEjD,SAAS,WAAW,CAAC,GAAc;IACjC,MAAM,GAAG,GAAG,GAAG,EAAE,QAAkF,CAAA;IACnG,IAAI,OAAO,GAAG,EAAE,SAAS,KAAK,QAAQ,IAAI,GAAG,CAAC,SAAS;QAAE,OAAO,GAAG,CAAC,SAAS,CAAA;IAC7E,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,SAAS,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,CAAA;IACtG,OAAO,OAAO,CAAC,GAAG,EAAE,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAa;IACrC,EAAE,EAAE,WAAW;IAEf,KAAK,CAAC,KAAK,CAAC,GAAc;QACxB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC;YACtD,oEAAoE;YACpE,yEAAyE;YACzE,2DAA2D;YAC3D,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAA;YACzF,OAAM;QACR,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QAClC,sFAAsF;QACtF,6EAA6E;QAC7E,2EAA2E;QAC3E,+EAA+E;QAC/E,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAClD,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;QAExC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAA;QAC9D,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACrG,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;QAE7E,gFAAgF;QAChF,4EAA4E;QAC5E,iFAAiF;QACjF,gFAAgF;QAChF,+EAA+E;QAC/E,4EAA4E;QAC5E,gFAAgF;QAChF,mFAAmF;QACnF,0EAA0E;QAC1E,8EAA8E;QAC9E,6EAA6E;QAC7E,4EAA4E;QAC5E,uEAAuE;QACvE,+EAA+E;QAC/E,uEAAuE;QACvE,gDAAgD;QAChD,MAAM,KAAK,GAAuC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACpE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,2BAA2B,GAAG,GAAG,CAAA;QACpG,+EAA+E;QAC/E,4EAA4E;QAC5E,2EAA2E;QAC3E,gFAAgF;QAChF,kFAAkF;QAClF,qEAAqE;QACrE,mFAAmF;QACnF,kEAAkE;QAClE,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,CAAA;QAEjG,sFAAsF;QACtF,gFAAgF;QAChF,iFAAiF;QACjF,8EAA8E;QAC9E,+EAA+E;QAC/E,gFAAgF;QAChF,gFAAgF;QAChF,4EAA4E;QAC5E,gFAAgF;QAChF,2EAA2E;QAC3E,+DAA+D;QAC/D,iFAAiF;QACjF,gFAAgF;QAChF,8EAA8E;QAC9E,4EAA4E;QAC5E,kFAAkF;QAClF,gFAAgF;QAChF,sDAAsD;QACtD,gFAAgF;QAChF,mFAAmF;QACnF,mFAAmF;QACnF,iFAAiF;QACjF,iFAAiF;QACjF,gFAAgF;QAChF,qFAAqF;QACrF,yEAAyE;QACzE,oEAAoE;QACpE,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAEpG,kFAAkF;QAClF,iFAAiF;QACjF,kFAAkF;QAClF,uEAAuE;QACvE,8EAA8E;QAC9E,2EAA2E;QAC3E,gFAAgF;QAChF,4EAA4E;QAC5E,kFAAkF;QAClF,iFAAiF;QACjF,iEAAiE;QACjE,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;QAChD,MAAM,SAAS,GAAG,MAAM,aAAa,CACnC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,EAA4B,EAChG;YACE,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,eAAe;YACtB,GAAG,EAAE,KAAK;YACV,2EAA2E;YAC3E,wEAAwE;YACxE,yEAAyE;YACzE,wEAAwE;YACxE,mBAAmB;YACnB,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE;YAC9B,qEAAqE;YACrE,sEAAsE;YACtE,0EAA0E;YAC1E,yEAAyE;YACzE,sDAAsD;YACtD,WAAW,EAAE,wBAAwB,CAAE,GAA6B,CAAC,OAAO,CAAC;YAC7E,mBAAmB,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM;SAChD,CACF,CAAA;QACD,IAAI,QAAQ,GAA8C,GAAG,EAAE,CAAC,EAAE,CAAA;QAElE,MAAM,aAAa,GAAqB,EAAE,CAAA;QAC1C,MAAM,KAAK,GAAa,EAAE,CAAA;QAE1B,oDAAoD;QACpD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAuC,CAAC,CAAA;QACjF,0EAA0E;QAC1E,6EAA6E;QAC7E,0EAA0E;QAC1E,wEAAwE;QACxE,uEAAuE;QACvE,2EAA2E;QAC3E,yEAAyE;QACzE,MAAM,eAAe,GAAG,aAAa,CAAA;QACrC,MAAM,QAAQ,GAAoB,EAAE,CAAA;QACpC,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;YAClC,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAQ;YACvC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;gBACxG,cAAc,EAAE,gBAAgB;aACjC,CAAC,CAAA;YACF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAA;gBACrC,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,UAAU;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,YAAY,KAAK,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAA;iBACxE,IAAI,KAAK,CAAC,WAAW,KAAK,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC/D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;QACD,6EAA6E;QAC7E,wEAAwE;QACxE,yEAAyE;QACzE,2DAA2D;QAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACnF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,4EAA4E;YAC5E,2EAA2E;YAC3E,4CAA4C;YAC5C,KAAK,CAAC,IAAI,CACR,UAAU,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,4EAA4E,CACxG,CAAA;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,0DAA0D,CAC/E,CAAA;QACH,CAAC;QACD,0EAA0E;QAC1E,2EAA2E;QAC3E,6EAA6E;QAC7E,kFAAkF;QAClF,6EAA6E;QAC7E,0DAA0D;QAC1D,KAAK,CAAC,IAAI,CACR,gBAAgB;YACd,CAAC,CAAC,8IAA8I;YAChJ,CAAC,CAAC,0KAA0K,CAC/K,CAAA;QACD,aAAa,CAAC,IAAI,CAChB,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAClC,KAAK,MAAM,CAAC,IAAI,QAAQ;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC,CAAC,CACH,CAAA;QAED,0EAA0E;QAC1E,yEAAyE;QACzE,oCAAoC;QACpC,IAAI,eAAe,GAAa,EAAE,CAAA;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAgD,CAAA;YACnF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAE,CAAqB,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACvF,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,gBAAiB,GAA6B,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACtF,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAE5F,iEAAiE;QACjE,gFAAgF;QAChF,8EAA8E;QAC9E,yEAAyE;QACzE,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAA;QAC5E,4EAA4E;QAC5E,+EAA+E;QAC/E,+EAA+E;QAC/E,KAAK,CAAC,IAAI,CACR,oJAAoJ,CACrJ,CAAA;QACD,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;QAC3C,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC5D,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;QAC5C,+EAA+E;QAC/E,wEAAwE;QACxE,+EAA+E;QAC/E,2EAA2E;QAC3E,6CAA6C;QAC7C,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QAC1F,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACjE,0EAA0E;QAC1E,oFAAoF;QACpF,2EAA2E;QAC3E,iFAAiF;QACjF,yEAAyE;QACzE,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,EAAE;YAChD,QAAQ,EAAE,SAAS,CAAC,iBAAiB;YACrC,KAAK;SACN,CAAC,CAAA;QACF,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACtE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAA;QAC7E,CAAC;QACD,oFAAoF;QACpF,sFAAsF;QACtF,oFAAoF;QACpF,uFAAuF;QACvF,MAAM,UAAU,GAAG,sBAAsB,CAAC,GAAG,EAAE;YAC7C,MAAM,EAAE,SAAS,CAAC,eAAe;YACjC,OAAO,EAAE,SAAS,CAAC,gBAAgB;YACnC,KAAK;SACN,CAAC,CAAA;QACF,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACpE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAA;QAC5E,CAAC;QACD,6EAA6E;QAC7E,8EAA8E;QAC9E,sCAAsC;QACtC,kFAAkF;QAClF,iFAAiF;QACjF,gFAAgF;QAChF,sEAAsE;QACtE,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,EAAE;YAC1C,SAAS,EAAE,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC;YACvE,KAAK;YACL,GAAG,EAAE,KAAK;SACX,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAA;QAC/F,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE;YACpC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACrB,IAAI,CAAC;oBACH,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;wBACzC,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,YAAY;wBACrB,KAAK,EAAE,aAAa;wBACpB,GAAG,EAAE,CAAC;wBACN,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;wBAChC,mEAAmE;wBACnE,qEAAqE;wBACrE,gEAAgE;wBAChE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;wBAChC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS;wBAC1C,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS;wBAC1C,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS;wBAC1C,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW;wBAC/C,qBAAqB,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;wBACzE,kBAAkB,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI;wBAC5C,wBAAwB,EAAE,YAAY,CAAC,MAAM,CAAC,UAAU;wBACxD,sBAAsB,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ;wBACpD,8EAA8E;wBAC9E,0EAA0E;wBAC1E,0EAA0E;wBAC1E,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS;wBACpD,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,QAAQ;wBAC7D,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ;wBACnD,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS;wBAClD,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;wBAChE,wBAAwB,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY;wBACxD,kBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO;wBAC7C,kBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO;wBAC7C,GAAG,OAAO;qBACX,CAAC,CAAA;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,2BAA2B;gBAC7B,CAAC;YACH,CAAC;SACF,CAAC,CAAA;QACF,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAA;QAC1C,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChE,CAAC;QACD,2EAA2E;QAC3E,0EAA0E;QAC1E,mCAAmC;QACnC,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAA;QAC3F,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;QACrE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;QAC9E,CAAC;QAED,MAAM,aAAa,GAAa,EAAE,CAAA;QAClC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAA;QACzC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAiC,CAAC,CAAA;QAChE,2EAA2E;QAC3E,wEAAwE;QACxE,gFAAgF;QAChF,+EAA+E;QAC/E,mEAAmE;QACnE,sEAAsE;QACtE,MAAM,gBAAgB,GACpB,cAAc,KAAK,KAAK,IAAI,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;QAChF,wEAAwE;QACxE,2EAA2E;QAC3E,2EAA2E;QAC3E,uEAAuE;QACvE,qDAAqD;QACrD,MAAM,kBAAkB,GAAG,OAAO,CAAC,YAAY,KAAK,KAAK,CAAA;QACzD,IAAI,eAAe,GAAmB,IAAI,CAAA;QAC1C,IAAI,gBAAgB,GAAG,eAAe,CAAA;QACtC,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC;YAC/C,aAAa,CAAC,IAAI,CAChB,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;gBACnC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;oBAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wBACtB,SAAQ;oBACV,CAAC;oBACD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,0BAA0B,CACrD,MAAmE,CAAC,EAAE,CAAC,EAAE,UAAU,EACpF,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,EAAE,CACpC,CAAA;oBACD,KAAK,MAAM,CAAC,IAAI,QAAQ;wBAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;oBAChD,mEAAmE;oBACnE,qEAAqE;oBACrE,oEAAoE;oBACpE,mDAAmD;oBACnD,MAAM,MAAM,GAAG,YAAY,CAAE,QAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;oBAC1F,IAAI,MAAM,CAAC,OAAO;wBAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAA,CAAC,CAAC,CAAC,CAAA;gBAClF,CAAC;gBACD,IAAI,kBAAkB,EAAE,CAAC;oBACvB,uEAAuE;oBACvE,0EAA0E;oBAC1E,0EAA0E;oBAC1E,iEAAiE;oBACjE,sEAAsE;oBACtE,uEAAuE;oBACvE,wCAAwC;oBACxC,IAAI,EAAE,GAAG,IAAI,CAAA;oBACb,IAAI,CAAC;wBACH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;oBACxB,CAAC;oBAAC,MAAM,CAAC;wBACP,EAAE,GAAG,KAAK,CAAA;oBACZ,CAAC;oBACD,eAAe,GAAG,EAAE,CAAA;oBACpB,gBAAgB,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAA;gBAC5E,CAAC;gBACD,qEAAqE;gBACrE,yDAAyD;gBACzD,0EAA0E;gBAC1E,0EAA0E;gBAC1E,0EAA0E;gBAC1E,0DAA0D;gBAC1D,IAAI,CAAC;oBACH,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;wBACzC,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,WAAW;wBACpB,KAAK,EAAE,aAAa;wBACpB,GAAG,EAAE,CAAC;wBACN,cAAc,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;wBACvC,cAAc,EAAE,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,KAAK,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB;wBAC1H,eAAe,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;wBAC/C,iBAAiB,EAAE,IAAI;wBACvB,mBAAmB,EAAE,gBAAgB;wBACrC,iEAAiE;wBACjE,oEAAoE;wBACpE,uEAAuE;wBACvE,uBAAuB;wBACvB,gBAAgB,EAAE,CAAC,GAAG,EAAE;4BACtB,IAAI,CAAC;gCACH,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAA;4BACvC,CAAC;4BAAC,MAAM,CAAC;gCACP,OAAO,CAAC,CAAC,CAAA;4BACX,CAAC;wBACH,CAAC,CAAC,EAAE;wBACJ,iBAAiB,EAAE,CAAC,GAAG,EAAE;4BACvB,IAAI,CAAC;gCACH,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;qCAC3B,GAAG,CAAC,CAAC,CAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC;qCACjD,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,MAAM,CAAC;qCAC7E,IAAI,CAAC,GAAG,CAAC,CAAA;4BACd,CAAC;4BAAC,MAAM,CAAC;gCACP,OAAO,YAAY,CAAA;4BACrB,CAAC;wBACH,CAAC,CAAC,EAAE;qBACL,CAAC,CAAA;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,kEAAkE;gBACpE,CAAC;YACH,CAAC,CAAC,CACH,CAAA;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;QAClD,CAAC;QACD,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;QACxD,CAAC;aAAM,IAAI,eAAe,IAAI,gBAAgB,KAAK,eAAe,EAAE,CAAC;YACnE,6EAA6E;YAC7E,kEAAkE;YAClE,8EAA8E;YAC9E,2EAA2E;YAC3E,4EAA4E;YAC5E,0EAA0E;YAC1E,2DAA2D;YAC3D,KAAK,CAAC,IAAI,CACR,mKAAmK,CACpK,CAAA;QACH,CAAC;QACD,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1E,CAAC;QACD,IAAI,gBAAgB,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,SAAS;gBACd,CAAC,CAAC,yFAAyF;gBAC3F,CAAC,CAAC,kFAAkF,CACvF,CAAA;QACH,CAAC;QAED,0CAA0C;QAC1C,wEAAwE;QACxE,wEAAwE;QACxE,0EAA0E;QAC1E,sEAAsE;QACtE,yEAAyE;QACzE,uEAAuE;QACvE,4EAA4E;QAC5E,uEAAuE;QACvE,0EAA0E;QAC1E,mBAAmB;QACnB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAgB,CAAC,CAAA;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,gBAAgB,CAAA;QAC7E,MAAM,IAAI,GAAG,cAAc,CAAC,0BAA0B,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAA;QAClF,MAAM,WAAW,GACf,OAAO,CAAC,WAAW,KAAK,KAAK;YAC3B,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;gBACvC,CAAC,CAAC,OAAO,CAAC,WAAW;gBACrB,CAAC,CAAC,GAAG,CAAA;QACX,MAAM,IAAI,GAAG,WAAW,CAAC,MAA6E,CAAC,CAAA;QACvG,8DAA8D;QAC9D,6EAA6E;QAC7E,2EAA2E;QAC3E,+EAA+E;QAC/E,wDAAwD;QACxD,MAAM,YAAY,GAAuC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;QAC5E,CAAC;YACC,MAAM,EAAE,GAAI,GAAkE,EAAE,OAAO,CAAA;YACvF,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC,GAAG,KAAK,UAAU,IAAI,OAAO,EAAE,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;gBACvE,MAAM,GAAG,GAAG,qBAAqB,CAAA;gBACjC,MAAM,MAAM,GAAG,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAA;gBACpC,IAAI,CAAC;oBACH,MAAO,EAAE,CAAC,GAA0C,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;oBACrF,MAAM,IAAI,GAAG,MAAO,EAAE,CAAC,GAA8B,CAAC,GAAG,CAAC,CAAA;oBAC1D,MAAM,GAAG,GAAI,IAAgD,EAAE,KAAK,EAAE,MAAM,IAAK,IAAoC,EAAE,MAAM,CAAA;oBAC7H,YAAY,CAAC,KAAK,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB,CAAA;oBACzE,IAAI,GAAG,KAAK,MAAM;wBAAE,YAAY,CAAC,MAAM,GAAG,oBAAoB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAA;gBACpG,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,YAAY,CAAC,KAAK,GAAG,OAAO,CAAA;oBAC5B,YAAY,CAAC,MAAM,GAAG,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAC3E,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QACxG,6EAA6E;QAC7E,oCAAoC;QACpC,QAAQ,GAAG,GAAG,EAAE,CACd,gBAAgB,CAAC;YACf,GAAG;YACH,KAAK;YACL,eAAe,EAAE,MAAM,CAAC,SAAS;YACjC,gBAAgB,EAAE,IAAI;YACtB,OAAO;YACP,YAAY,EAAE,CAAC;YACf,WAAW;YACX,0EAA0E;YAC1E,qEAAqE;YACrE,kEAAkE;YAClE,2EAA2E;YAC3E,4EAA4E;YAC5E,qEAAqE;YACrE,4DAA4D;YAC5D,SAAS,EAAE,IAAI,CAAC,MAAM;YACtB,WAAW,EAAE,OAAQ,GAAwC,CAAC,OAAO,EAAE,IAAI,KAAK,UAAU;YAC1F,MAAM,EAAE,OAAQ,GAA0B,CAAC,IAAI,KAAK,UAAU;YAC9D,YAAY,EAAE,YAAY,CAAC,KAAK;YAChC,KAAK;SACN,CAAC,CAAA;QACJ,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;QAC5C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAC9D,CAAC;QACD,2EAA2E;QAC3E,gFAAgF;QAChF,6EAA6E;QAC7E,+EAA+E;QAC/E,+EAA+E;QAC/E,qEAAqE;QACrE,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACjG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,2CAA2C,CAAC,CAAA;QAChG,CAAC;QACD,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAE9F,IAAI,CAAC;YACH,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBACzC,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE,aAAa;gBACpB,GAAG,EAAE,CAAC;gBACN,SAAS;gBACT,gBAAgB,EAAE,eAAe,CAAC,MAAM;gBACxC,aAAa,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC7C,WAAW,EAAE,QAAQ,CAAC,MAAM;gBAC5B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBAChC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACtG,cAAc,EAAE,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc;gBAC5H,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM;gBAC3C,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM;gBACxC,aAAa,EAAE,YAAY,CAAC,KAAK;gBACjC,oBAAoB,EAAE,YAAY,CAAC,MAAM,IAAI,EAAE;gBAC/C,0EAA0E;gBAC1E,6EAA6E;gBAC7E,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;gBAC7B,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;gBACnC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;gBACnC,YAAY,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;gBACnE,aAAa,EAAE,YAAY;gBAC3B,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACvD,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc;gBACnD,mBAAmB,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;gBAC7E,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ;gBACxD,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;gBAC5C,kBAAkB,EAAE,gBAAgB;gBACpC,mBAAmB,EAAE,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW;gBAChE,oBAAoB,EAAE,gBAAgB;gBACtC,cAAc,EAAE,OAAO;gBACvB,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;aACxB,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;QACxE,CAAC;QAED,2EAA2E;QAC3E,0EAA0E;QAC1E,iBAAiB;QACjB,IAAI,aAAa,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3D,MAAM,MAAM,GAAG;gBACb,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;gBAClF,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBACvD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;aACtC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC3B,OAAO,CAAC,IAAI,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAA;QACrD,CAAC;QAED,OAAO,KAAK,IAAI,EAAE;YAChB,2EAA2E;YAC3E,qEAAqE;YACrE,0EAA0E;YAC1E,wEAAwE;YACxE,4CAA4C;YAC5C,IAAI,CAAC;gBACH,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;oBACzC,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,aAAa;oBACtB,KAAK,EAAE,aAAa;oBACpB,GAAG,EAAE,CAAC;oBACN,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;oBAC9B,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC5F,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY;oBAC/C,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU;oBAC1C,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;oBAClC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;oBAClC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;oBACtC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC5F,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU;oBACtC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe;oBAChD,kEAAkE;oBAClE,0EAA0E;oBAC1E,wEAAwE;oBACxE,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;oBACpC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;oBACtC,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC/F,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;oBACxC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI;oBAC1C,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO;oBAChD,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM;oBAC9C,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI;oBAC1C,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC;oBACzD,wEAAwE;oBACxE,4DAA4D;oBAC5D,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc;oBACtF,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;oBACpC,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY;oBACjD,2EAA2E;oBAC3E,4EAA4E;oBAC5E,6DAA6D;oBAC7D,kBAAkB,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI;oBAC5C,wBAAwB,EAAE,YAAY,CAAC,MAAM,CAAC,UAAU;oBACxD,sBAAsB,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ;oBACpD,mBAAmB,EAAE,YAAY,CAAC,MAAM,CAAC,SAAS;oBAClD,6BAA6B,EAAE,YAAY,CAAC,MAAM,CAAC,aAAa;oBAChE,gFAAgF;oBAChF,+EAA+E;oBAC/E,2DAA2D;oBAC3D,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS;oBACpD,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,QAAQ;oBAC7D,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ;oBACnD,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS;oBAClD,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;oBAChE,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,aAAa,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE;oBAC5F,wBAAwB,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY;oBACxD,uBAAuB,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW;oBACtD,kBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO;oBAC7C,oBAAoB,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;oBAC5C,kBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO;oBAC7C,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;iBAC9B,CAAC,CAAA;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;YACnE,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,CAAC,CAAC,OAAO,EAAE,CAAA;gBACnB,CAAC;gBAAC,MAAM,CAAC;oBACP,6EAA6E;gBAC/E,CAAC;YACH,CAAC;YACD,iFAAiF;YACjF,MAAM,SAAS,CAAC,OAAO,EAAE,CAAA;QAC3B,CAAC,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -47,13 +47,24 @@ export declare function hookSwitches(env?: EnvLike): {
47
47
  * the model reads it at the call site, not thousands of tokens earlier.
48
48
  */
49
49
  export declare const TOOL_HINTS: Record<string, string>;
50
+ /**
51
+ * The `task` footer when the operator has the host's background sub-agents
52
+ * enabled (OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS). Without the flag the
53
+ * hint above only explains the block; with it, `background:true` becomes the
54
+ * route for parallel work the lead will keep following up on — the host's own
55
+ * card links to the live child session and the host wakes the parent on
56
+ * completion, neither of which a plugin tool can do. TeamMode keeps the
57
+ * injected text out of the context window (see src/task-offload.ts), so
58
+ * visibility no longer costs tokens.
59
+ */
60
+ export declare const TASK_HINT_BACKGROUND: Partial<typeof TOOL_HINTS>;
50
61
  /**
51
62
  * The `tool.definition` adapter. Returns true when it appended (so the
52
63
  * caller can log it). Idempotent: a re-issued description that already
53
64
  * carries the marker is left byte-exact, and the host description is never
54
65
  * replaced — only extended.
55
66
  */
56
- export declare function applyToolDefinition(input: unknown, output: unknown, enabled?: boolean): boolean;
67
+ export declare function applyToolDefinition(input: unknown, output: unknown, enabled?: boolean, overrides?: Partial<typeof TOOL_HINTS>): boolean;
57
68
  /**
58
69
  * Sampling per role, ONLY when the operator opts in. architect is the one
59
70
  * role whose job (design alternatives) genuinely suffers at 0.2; the
@@ -83,7 +94,7 @@ export declare function applyChatParams(input: unknown, output: unknown, env?: E
83
94
  * lead's machine check fail for the rest of the session;
84
95
  * - offload handles (ref/access_token/expire_at) — they are the ONLY
85
96
  * window onto a payload that never entered context;
86
- * - child session ids from tm_dispatch — an uncollected dispatch is
97
+ * - sub-agent child session ids (host `task`, leftovers of the old
87
98
  * running work, and after a summary it looks indistinguishably like done
88
99
  * work;
89
100
  * - provenance (file:line / URL + confidence) — without it a finding
@@ -1 +1 @@
1
- {"version":3,"file":"host-hooks.d.ts","sourceRoot":"","sources":["../src/host-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,eAAO,MAAM,iBAAiB;;;;;;CAMpB,CAAA;AAEV,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;AAOjD,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,GAAG,GAAE,OAAqB,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAA;CAAE,CAK3G;AAID;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7C,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,OAAO,EACf,OAAO,UAAO,GACb,OAAO,CAeT;AAID;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOrD,CAAA;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,GAAE,OAAqB,GAAG,MAAM,GAAG,IAAI,CAkBjG;AAED;kCACkC;AAClC,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAE,OAAqB,GAAG,OAAO,CAWpG;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,UAO9B,CAAA;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,UAAO,GAAG,OAAO,CAkB/E;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAE,OAAqB,GAAG,OAAO,CAUhG;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,OAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBlF;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAE,OAAqB,GAAG,OAAO,CAkBlF"}
1
+ {"version":3,"file":"host-hooks.d.ts","sourceRoot":"","sources":["../src/host-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,eAAO,MAAM,iBAAiB;;;;;;CAMpB,CAAA;AAEV,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;AAOjD,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,GAAG,GAAE,OAAqB,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAA;CAAE,CAK3G;AAID;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK7C,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,OAAO,UAAU,CAG3D,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,OAAO,EACf,OAAO,UAAO,EACd,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,UAAU,CAAC,GACrC,OAAO,CAeT;AAID;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOrD,CAAA;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,GAAE,OAAqB,GAAG,MAAM,GAAG,IAAI,CAkBjG;AAED;kCACkC;AAClC,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAE,OAAqB,GAAG,OAAO,CAWpG;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,UAO9B,CAAA;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,UAAO,GAAG,OAAO,CAkB/E;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAE,OAAqB,GAAG,OAAO,CAUhG;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,OAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBlF;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAE,OAAqB,GAAG,OAAO,CAkBlF"}
@@ -56,7 +56,20 @@ export function hookSwitches(env = process.env) {
56
56
  */
57
57
  export const TOOL_HINTS = {
58
58
  bash: "\n\n[OpenCode TeamMode] Time discipline: leave `timeout` out unless this step is genuinely slow — the default kill is 120 s and a bigger number only lengthens the silence, a read-only probe (ls/grep/rg/cat/Get-ChildItem) is never a 120-second command (values above the probe ceiling are clamped before the command runs). Independent steps do NOT belong chained with `;` into one call — separate calls, or one tm_ptc_run program.",
59
- task: "\n\n[OpenCode TeamMode] This blocks your session until the child returns. For independent work that must overlap your own, prefer tm_dispatch (returns at once) + tm_join (collect) and keep the brief self-contained.",
59
+ task: "\n\n[OpenCode TeamMode] This blocks your session until the child returns — the right shape for one task whose answer you need next. For several independent tasks you will keep following up on, pass `background: true` (needs the operator flag OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS) so the user can watch the child and the host wakes you when it lands. Keep every brief self-contained: the child sees none of this conversation.",
60
+ };
61
+ /**
62
+ * The `task` footer when the operator has the host's background sub-agents
63
+ * enabled (OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS). Without the flag the
64
+ * hint above only explains the block; with it, `background:true` becomes the
65
+ * route for parallel work the lead will keep following up on — the host's own
66
+ * card links to the live child session and the host wakes the parent on
67
+ * completion, neither of which a plugin tool can do. TeamMode keeps the
68
+ * injected text out of the context window (see src/task-offload.ts), so
69
+ * visibility no longer costs tokens.
70
+ */
71
+ export const TASK_HINT_BACKGROUND = {
72
+ task: "\n\n[OpenCode TeamMode] Delegating: `background:true` frees this session at once, the user can open the child's card to watch it, and the host wakes you with the result — TeamMode keeps that finished text OUT of your context (you get a preview). Use it when several children run at once and you will keep working meanwhile; a plain `task` call is right when your very next step needs the answer in hand. To pull a finished child's whole reply back deliberately: `tm_join { ids: [\"<child session>\"] }` — it comes through the offload pipeline as a handle + preview instead of kilotokens inline.",
60
73
  };
61
74
  /**
62
75
  * The `tool.definition` adapter. Returns true when it appended (so the
@@ -64,7 +77,7 @@ export const TOOL_HINTS = {
64
77
  * carries the marker is left byte-exact, and the host description is never
65
78
  * replaced — only extended.
66
79
  */
67
- export function applyToolDefinition(input, output, enabled = true) {
80
+ export function applyToolDefinition(input, output, enabled = true, overrides) {
68
81
  if (!enabled)
69
82
  return false;
70
83
  try {
@@ -78,7 +91,7 @@ export function applyToolDefinition(input, output, enabled = true) {
78
91
  const marker = "[OpenCode TeamMode]";
79
92
  if (out.description.includes(marker))
80
93
  return false;
81
- out.description = out.description + TOOL_HINTS[key];
94
+ out.description = out.description + (overrides?.[key] ?? TOOL_HINTS[key]);
82
95
  return true;
83
96
  }
84
97
  catch {
@@ -159,7 +172,7 @@ export function applyChatParams(input, output, env = process.env) {
159
172
  * lead's machine check fail for the rest of the session;
160
173
  * - offload handles (ref/access_token/expire_at) — they are the ONLY
161
174
  * window onto a payload that never entered context;
162
- * - child session ids from tm_dispatch — an uncollected dispatch is
175
+ * - sub-agent child session ids (host `task`, leftovers of the old
163
176
  * running work, and after a summary it looks indistinguishably like done
164
177
  * work;
165
178
  * - provenance (file:line / URL + confidence) — without it a finding
@@ -170,7 +183,7 @@ export const COMPACTION_CONTEXT = [
170
183
  "The GOAL directive survives compaction: the user's own ask (GOAL + its ACCEPTANCE criteria) is the contract for this run — carry it verbatim, keep working while a criterion lacks EVIDENCE, and never let a summarized transcript quietly redefine or shrink what they asked for.",
171
184
  "OpenCode TeamMode contract survives compaction: every specialist reply keeps the STATUS / CHANGES / FINDINGS / EVIDENCE / HANDOFF skeleton and the lead machine-checks it — never summarize a reply into prose without those keys.",
172
185
  "Offloaded payloads are addressed by handle (ref + access_token + expire_at) from tm_* results. Carry the handles forward VERBATIM; never re-run a tool to rediscover a payload a handle already names.",
173
- "Async dispatches (tm_dispatch) and their child session ids must survive: an uncollected child is still-running work, not finished work.",
186
+ "Sub-agent children (the host's task tool, including background tasks) must survive with their session ids: an uncollected child is still-running work, not finished work — and a turn that ends with children open does NOT mean the task is done. After this summary, keep waiting/collecting before reporting anything as delivered.",
174
187
  "Every finding keeps its source (file:line or URL) and confidence tag after compaction, otherwise it is unverifiable memory.",
175
188
  "The todo list and the blackboard files are the state, not the transcript: keep task items and board paths, drop chit-chat and raw command echo.",
176
189
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"host-hooks.js","sourceRoot":"","sources":["../src/host-hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-hooks.js","sourceRoot":"","sources":["../src/host-hooks.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,24 +1,29 @@
1
1
  /**
2
- * opencode-team-mode — OpenCode plugin entry point.
2
+ * opencode-team-mode — plugin entry point: the DUAL-PERSONALITY export.
3
3
  *
4
- * Contract with the SHIPPED OpenCode Desktop loader (1.18.x, verified by
5
- * reading the binary's own applyPlugin/readV1Plugin code):
4
+ * One module, two host generations. Which one runs is the host's choice, and
5
+ * the two never overlap:
6
6
  *
7
- * export default {
8
- * id: "team-mode", → Desktop plugin display name
9
- * server: async (input, options) => ({
10
- * config(cfg) { ...inject agents/commands... },
11
- * "tool.execute.before"(...) { ...R6 env protection... },
12
- * tool: { tm_read, tm_grep, tm_bash, tm_fetch }, → JIT layer-2 tools
13
- * })
14
- * }
7
+ * OpenCode 1.18.x (v1 loader, verified against the desktop binary's own
8
+ * applyPlugin/readV1Plugin code) calls ONLY
9
+ * default.server(input, options) → v1 Hooks
10
+ * and silently ignores any other property — that is what killed v1.1-v1.3,
11
+ * which shipped a `setup` and no `server` (see the project memory on the
12
+ * loader contract).
15
13
  *
16
- * `server()` is the ONLY function the loader calls; a `setup` property is
17
- * silently ignored (root cause of v1.1-v1.3 not appearing in the picker).
18
- * The v1 `config` hook receives the merged opencode config and is the
19
- * supported way to add agents/commands.
14
+ * OpenCode 2.x (v2) reads
15
+ * default.{id, setup(ctx)} → Plugin.define() is the identity function in
16
+ * @opencode/plugin@2.0.16, so the plain object IS the definition and the v2
17
+ * SDK is never a runtime dependency. It ignores `server()`.
20
18
  *
21
- * Options (via the tuple plugin form):
19
+ * "V1 plugin implementations do not run in V2" is the official statement, so
20
+ * both halves have to be present in the published package or a user upgrading
21
+ * their host simply loses the team.
22
+ *
23
+ * The v1 half lives in `src/host/v1.ts` unchanged from 1.6.0 — a v1 host must
24
+ * not observe one behavioural difference, and test-*.mjs is the oracle.
25
+ *
26
+ * Options (via the tuple plugin form, v1):
22
27
  * "plugin": [["@te-river/opencode-team-mode@latest", { "ttlDays": 7 }]]
23
28
  * - `ttlDays` → blackboard auto-cleanup TTL; default 5.
24
29
  * - `defaultAgent` → Team is the default agent (opt-out: set `false`).
@@ -29,6 +34,7 @@
29
34
  * mutually exclusive by the server's sort).
30
35
  */
31
36
  import type { OpenCodePlugin } from "./types.js";
32
- declare const plugin: OpenCodePlugin;
37
+ import type { V2Plugin } from "./host/v2-types.js";
38
+ declare const plugin: OpenCodePlugin & Pick<V2Plugin, "setup">;
33
39
  export default plugin;
34
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA8C,MAAM,YAAY,CAAA;AAoD5F,QAAA,MAAM,MAAM,EAAE,cA4Sb,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAIlD,QAAA,MAAM,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAQpD,CAAA;AAED,eAAe,MAAM,CAAA"}
package/dist/index.js CHANGED
@@ -1,24 +1,29 @@
1
1
  /**
2
- * opencode-team-mode — OpenCode plugin entry point.
2
+ * opencode-team-mode — plugin entry point: the DUAL-PERSONALITY export.
3
3
  *
4
- * Contract with the SHIPPED OpenCode Desktop loader (1.18.x, verified by
5
- * reading the binary's own applyPlugin/readV1Plugin code):
4
+ * One module, two host generations. Which one runs is the host's choice, and
5
+ * the two never overlap:
6
6
  *
7
- * export default {
8
- * id: "team-mode", → Desktop plugin display name
9
- * server: async (input, options) => ({
10
- * config(cfg) { ...inject agents/commands... },
11
- * "tool.execute.before"(...) { ...R6 env protection... },
12
- * tool: { tm_read, tm_grep, tm_bash, tm_fetch }, → JIT layer-2 tools
13
- * })
14
- * }
7
+ * OpenCode 1.18.x (v1 loader, verified against the desktop binary's own
8
+ * applyPlugin/readV1Plugin code) calls ONLY
9
+ * default.server(input, options) → v1 Hooks
10
+ * and silently ignores any other property — that is what killed v1.1-v1.3,
11
+ * which shipped a `setup` and no `server` (see the project memory on the
12
+ * loader contract).
15
13
  *
16
- * `server()` is the ONLY function the loader calls; a `setup` property is
17
- * silently ignored (root cause of v1.1-v1.3 not appearing in the picker).
18
- * The v1 `config` hook receives the merged opencode config and is the
19
- * supported way to add agents/commands.
14
+ * OpenCode 2.x (v2) reads
15
+ * default.{id, setup(ctx)} → Plugin.define() is the identity function in
16
+ * @opencode/plugin@2.0.16, so the plain object IS the definition and the v2
17
+ * SDK is never a runtime dependency. It ignores `server()`.
20
18
  *
21
- * Options (via the tuple plugin form):
19
+ * "V1 plugin implementations do not run in V2" is the official statement, so
20
+ * both halves have to be present in the published package or a user upgrading
21
+ * their host simply loses the team.
22
+ *
23
+ * The v1 half lives in `src/host/v1.ts` unchanged from 1.6.0 — a v1 host must
24
+ * not observe one behavioural difference, and test-*.mjs is the oracle.
25
+ *
26
+ * Options (via the tuple plugin form, v1):
22
27
  * "plugin": [["@te-river/opencode-team-mode@latest", { "ttlDays": 7 }]]
23
28
  * - `ttlDays` → blackboard auto-cleanup TTL; default 5.
24
29
  * - `defaultAgent` → Team is the default agent (opt-out: set `false`).
@@ -28,318 +33,16 @@
28
33
  * alphabetical slot: build, plan, team (the two are
29
34
  * mutually exclusive by the server's sort).
30
35
  */
31
- import { agents } from "./agents.js";
32
- import { commands } from "./commands.js";
33
- import { startBlackboardMaintenance, resolveTtlMs, DEFAULT_TTL_DAYS, } from "./blackboard.js";
34
- import { createEnvProtectHook, parseExtraDeny, resolveEnvProtectMode, bashAskPatterns, } from "./envprotect.js";
35
- import { createApprovalGate, resolveAskTimeoutMs, hasPermissionReplyCapability, } from "./approval-gate.js";
36
- import { createTmTools } from "./tm/index.js";
37
- import { createBashTimeoutHook } from "./tm/bash-timeout.js";
38
- import { createCapabilityProbe } from "./capabilities.js";
39
- import { setAskBridgeObserver } from "./tm/perm-ask.js";
40
- import { applyToolDefinition, applyChatParams, applySessionCompacting, applyCompactionAutoContinue, applyShellEnv, hookSwitches, } from "./host-hooks.js";
41
- /** Runtime addendum to the team prompt: concrete board + TTL (hybrid mode). */
42
- function blackboardNote(root, ttlDays) {
43
- return [
44
- "",
45
- "",
46
- "## Team Blackboard — resolved for this workspace",
47
- `Root directory: \`${root}\``,
48
- `- Hybrid channel: specialist replies (the STATUS/CHANGES/FINDINGS/EVIDENCE/HANDOFF`,
49
- ` skeleton) are the PRIMARY transport — normal work needs no files at all.`,
50
- `- Board files exist ONLY for oversized deliverables (>~50 lines):`,
51
- ` \`<root>/<session-key>/<task-slug>/NN-<role>-<topic>[-rN].md\`. On the FIRST`,
52
- ` board write of this conversation create the session folder with a compact clock`,
53
- ` timestamp (PowerShell: \`Get-Date -Format yyyyMMdd-HHmmss\`; POSIX:`,
54
- ` \`date +%Y%m%d-%H%M%S\`) and reuse it; never write into another conversation's`,
55
- ` session folder.`,
56
- `- Auto-cleanup: the plugin sweeps task directories idle for more than ${ttlDays} days (at startup and hourly).`,
57
- ` This is the ONLY cleanup path — never delete task or session directories yourself.`,
58
- ].join("\n");
59
- }
36
+ import { createV1Personality } from "./host/v1.js";
37
+ import { v2Personality } from "./host/v2.js";
60
38
  const plugin = {
61
39
  id: "team-mode",
62
- server: async (input, options) => {
63
- // ---------- blackboard maintenance (code-level TTL sweeper) ----------
64
- const directory = typeof input?.directory === "string" && input.directory.length > 0
65
- ? input.directory
66
- : process.cwd();
67
- const ttlMs = resolveTtlMs(options);
68
- const ttlDays = Math.round(ttlMs / (24 * 60 * 60 * 1000)) || DEFAULT_TTL_DAYS;
69
- const boardRoot = startBlackboardMaintenance(directory, ttlMs);
70
- const note = blackboardNote(boardRoot, ttlDays);
71
- // ---------- R6 env protection (code-level interception) ----------
72
- // Plugin option envProtect (default false): opt-in env protection.
73
- // When disabled, R6 hook is not installed at all — no interception,
74
- // no approval gate, no audit logging for env reads.
75
- // When enabled, TM_ENV_PROTECT / TM_ENV_PROTECT_EXTRA_DENY still apply.
76
- const envProtectMode = options?.envProtect
77
- ? resolveEnvProtectMode(process.env.TM_ENV_PROTECT)
78
- : "off";
79
- const envProtectExtra = parseExtraDeny(process.env.TM_ENV_PROTECT_EXTRA_DENY);
80
- // ---------- unified approval gate (R6 env face + R2 danger face) ----------
81
- // Layer 2: ONE timer that auto-REJECTS unanswered official-dialog requests
82
- // after TM_ASK_TIMEOUT_MIN and (Layer 3) fails closed if the SDK reply is
83
- // broken. Armed ONLY when R6 is not off AND the client exposes a
84
- // permission-reply path — otherwise there is no live auto-reject and the
85
- // R6 hook must keep hard-throwing every env read (fail-closed).
86
- // Attention hook for EVERY official dialog the plugin observes (bash R2/R6
87
- // asks AND the tm_* ctx.ask web dialogs): the host's `tui.showToast` RPC
88
- // (verified 1.18.30 route: payload { title?, message, variant, duration })
89
- // surfaces a toast so a user not staring at the screen still learns a
90
- // confirmation is waiting. Best-effort — never breaks the gate.
91
- const notifyAsk = (message) => {
92
- try {
93
- const tui = input?.client
94
- ?.tui;
95
- if (typeof tui?.showToast === "function") {
96
- const r = tui.showToast({
97
- title: "OpenCode TeamMode",
98
- message,
99
- variant: "warning",
100
- duration: 15_000,
101
- });
102
- if (r && typeof r.catch === "function") {
103
- ;
104
- r.catch(() => { });
105
- }
106
- }
107
- }
108
- catch {
109
- /* notification is best-effort */
110
- }
111
- };
112
- const approvalGate = envProtectMode !== "off" && hasPermissionReplyCapability(input?.client)
113
- ? createApprovalGate({
114
- client: input?.client,
115
- timeoutMs: resolveAskTimeoutMs(process.env),
116
- notify: notifyAsk,
117
- })
118
- : null;
119
- if (approvalGate)
120
- approvalGate.start();
121
- // Sessions are only allowed to DEFER expressible env reads to the dialog
122
- // once the gate registered them as carrying our injected bash ask set
123
- // (reviewer C1: a global isArmed() deferral let stock build/plan agents
124
- // run printenv silently). The authoritative source of that fact is the
125
- // config hook below: it records exactly which agents got the escalated
126
- // ask object, and a `message.updated`/`chat.message` user prompt routed
127
- // to one of those agents registers its session (live-proven ordering:
128
- // the user message event arrives before the session's first
129
- // tool.execute.before, while permission.asked arrives AFTER it).
130
- const injectedExecAgents = new Set();
131
- const envProtectHook = createEnvProtectHook(input?.client, envProtectMode, envProtectExtra, { deferToApproval: (sessionID) => approvalGate?.canDefer(sessionID) ?? false,
132
- envApproved: (sessionID) => approvalGate?.isEnvApproved(sessionID) ?? false });
133
- // ---------- JIT layer-2 tools (tm_read / tm_grep / tm_bash / tm_fetch) ----------
134
- // T0.4-verified static registration: server() hooks gain a `tool` segment.
135
- // The R6 mode/extra resolved above are passed in so the tm_* pipelines
136
- // share the SAME interception source as the built-in tools (anti-backdoor:
137
- // the global hook ALSO aliases tm_* onto read/grep/bash — see envprotect).
138
- // ---------- host-capability probe (see src/capabilities.ts) ----------
139
- // The plugin's features degrade quietly when a host surface disappears;
140
- // this records what is actually present and says so once, at startup,
141
- // instead of letting an OpenCode upgrade surface as an agent working
142
- // around something the user never agreed to lose.
143
- let capabilityProbe = null;
144
- const tmRuntime = await createTmTools(input, {
145
- mode: envProtectMode,
146
- extra: envProtectExtra,
147
- notify: notifyAsk,
148
- // The capability probe is built from the tm runtime (it needs the run
149
- // store to log into), and tm_stats needs the probe back — a declaration
150
- // before construction breaks the cycle without weakening either side.
151
- capabilities: () => capabilityProbe?.snapshot() ?? [],
152
- // A tm_dispatch child is registered the moment it is created (the
153
- // message.updated route below re-confirms it): an exec-role sub-agent
154
- // whose session were NOT registered would hard-throw its own protected
155
- // reads instead of opening the dialog.
156
- onChildSession: (sessionID, agent) => {
157
- if (approvalGate && injectedExecAgents.has(agent))
158
- approvalGate.registerExecSession(sessionID);
159
- },
160
- });
161
- // ---------- host-hook switches (TM_TOOL_HINTS / TM_COMPACTION_*) ------
162
- const hostSwitches = hookSwitches(process.env);
163
- capabilityProbe = createCapabilityProbe({
164
- client: input?.client,
165
- hasShellBridge: typeof input?.$ === "function",
166
- hasPermissionReply: hasPermissionReplyCapability(input?.client),
167
- trajectory: (event) => tmRuntime.pipelines.store.appendTrajectory(event),
168
- notify: notifyAsk,
169
- });
170
- // ctx.ask is only observable from inside a tool call — perm-ask reports
171
- // every lookup it makes, which is how this row ever reaches 已验证.
172
- setAskBridgeObserver((present) => capabilityProbe?.observeAskBridge(present));
173
- // Startup report: one trajectory line always, one toast ONLY when a
174
- // required surface is gone (a missing 待观察 row is not an alarm).
175
- capabilityProbe.report();
176
- // ---------- bash timeout clamp (issue #6, see tm/bash-timeout.ts) ------
177
- const bashTimeoutHook = createBashTimeoutHook({
178
- probeMs: tmRuntime.config.bashTimeoutProbeMs,
179
- maxMs: tmRuntime.config.bashTimeoutMaxMs,
180
- readonlyAllowed: tmRuntime.config.bashReadonlyAllowed,
181
- onClamp: (info) => {
182
- try {
183
- tmRuntime.pipelines.store.appendTrajectory({
184
- tool: "bash",
185
- step_id: "timeout-clamp",
186
- event: info.via,
187
- from_ms: info.from,
188
- to_ms: info.to,
189
- });
190
- }
191
- catch {
192
- /* observability only */
193
- }
194
- },
195
- });
196
- return {
197
- // ---------- v1 config hook: inject agents & commands ----------
198
- config(cfg) {
199
- if (!cfg.agent)
200
- cfg.agent = {};
201
- // Execution roles carry permission.bash === "allow"; escalate it to a
202
- // pattern object so the host opens its official confirmation dialog
203
- // for the R6 env face + R2 danger face (default `*` stays allow). A
204
- // shallow copy keeps the module-level `agents` object pristine. The
205
- // R6 env face is only injected while the approval gate can arm: with
206
- // no arming client the R6 hook hard-throws env reads BEFORE any
207
- // dialog could be satisfied, so those patterns would be dead popups.
208
- const bashAsk = bashAskPatterns(envProtectMode, approvalGate !== null);
209
- for (const [name, def] of Object.entries(agents)) {
210
- // Respect user-defined overrides: never clobber an existing entry.
211
- if (cfg.agent[name])
212
- continue;
213
- const permission = def.permission
214
- ? {
215
- ...def.permission,
216
- ...(def.permission.bash === "allow" ? { bash: bashAsk } : null),
217
- }
218
- : def.permission;
219
- cfg.agent[name] = {
220
- ...def,
221
- permission,
222
- prompt: name === "team" ? (def.prompt ?? "") + note : def.prompt,
223
- };
224
- // deferral-registry seed: agents that ACTUALLY carry our escalated
225
- // bash ask object (user-overridden agents never get added)
226
- if (def.permission && def.permission.bash === "allow")
227
- injectedExecAgents.add(name);
228
- }
229
- if (!cfg.command)
230
- cfg.command = {};
231
- for (const [name, def] of Object.entries(commands)) {
232
- if (cfg.command[name])
233
- continue;
234
- cfg.command[name] = def;
235
- }
236
- // ---------- make Team the default agent (opt-out: defaultAgent:false)
237
- const promote = options?.defaultAgent !== false;
238
- if (promote && (!cfg.default_agent || cfg.default_agent === "build")) {
239
- cfg.default_agent = "team";
240
- }
241
- },
242
- // ---------- R6: block the model's env-var read paths in code ----------
243
- // ONE hook, two independent jobs (the host calls the single
244
- // `tool.execute.before` slot per plugin): first clamp a wasteful
245
- // model-set bash timeout, then run the R6 interception. The clamp
246
- // runs BEFORE R6 so a blocked call is never also a slow one.
247
- "tool.execute.before": async (input, output) => {
248
- capabilityProbe?.observeHook("tool.execute.before");
249
- bashTimeoutHook(input, output);
250
- await envProtectHook(input, output);
251
- },
252
- // ---------- host-hook leverage beyond the tool surface (audit #2) ----
253
- // Every one of these rides a published hook and mutates ONLY the
254
- // fields whose shape is verified; each is independently switchable,
255
- // because this host's d.ts has shipped surfaces the runtime never
256
- // fires (permission.ask), so adapters must fail soft, not assume.
257
- // The `observeHook` calls are that "not assume" made observable: a row
258
- // stays 待观察 until the host actually calls the hook, and tm_stats
259
- // reports it either way.
260
- "tool.definition": (input, output) => {
261
- capabilityProbe?.observeHook("tool.definition");
262
- applyToolDefinition(input, output, hostSwitches.toolHints);
263
- },
264
- "chat.params": (input, output) => {
265
- capabilityProbe?.observeHook("chat.params");
266
- applyChatParams(input, output, process.env);
267
- },
268
- "experimental.session.compacting": (input, output) => {
269
- capabilityProbe?.observeHook("session.compacting");
270
- applySessionCompacting(output, hostSwitches.compactionContext);
271
- },
272
- "experimental.compaction.autocontinue": (input, output) => {
273
- capabilityProbe?.observeHook("compaction.autocontinue");
274
- applyCompactionAutoContinue(output, process.env);
275
- },
276
- "shell.env": (input, output) => {
277
- capabilityProbe?.observeHook("shell.env");
278
- applyShellEnv(output, process.env);
279
- },
280
- // ---------- unified approval gate: watch the host permission dialog ---
281
- event: ({ event }) => {
282
- capabilityProbe?.observeEvent(event?.type ?? "");
283
- // Async dispatch bookkeeping runs FIRST and independently of R6:
284
- // session.idle / .error are what tell the lead its children settled.
285
- tmRuntime.observeDispatchEvent(event);
286
- if (!approvalGate)
287
- return;
288
- // Pre-tool session registration: the live host emits message.updated
289
- // with the full UserMessage ({ sessionID, role:"user", agent }) when
290
- // a prompt enters a session — BEFORE any tool.execute.before of that
291
- // turn, which is exactly when the R6 hook needs to know the session
292
- // carries our injected ask set (permission.asked only fires AFTER
293
- // the hook, so it can never be the first-command registration).
294
- if (event?.type === "message.updated") {
295
- const info = event.properties?.info;
296
- if (info &&
297
- info.role === "user" &&
298
- typeof info.agent === "string" &&
299
- typeof info.sessionID === "string") {
300
- // UserMessage.agent is a REQUIRED string in the host schema
301
- // (verified in the desktop binary), so a user prompt always names
302
- // its agent. Deferral stays live only while the CURRENT prompt
303
- // runs an exec-role agent: a prompt routed to any other agent
304
- // revokes the registration (stock agents' sessions would never
305
- // open our dialogs, so a stale registration = silent env reads).
306
- if (injectedExecAgents.has(info.agent)) {
307
- approvalGate.registerExecSession(info.sessionID);
308
- }
309
- else {
310
- approvalGate.revokeExecSession(info.sessionID);
311
- }
312
- }
313
- return;
314
- }
315
- approvalGate.handleEvent(event);
316
- },
317
- // secondary registration channel (official 1.18.x contract; the event
318
- // route above is the one verified against the live 1.18.29 bus)
319
- "chat.message": (input) => {
320
- if (!approvalGate)
321
- return;
322
- if (input &&
323
- typeof input.sessionID === "string" &&
324
- typeof input.agent === "string") {
325
- if (injectedExecAgents.has(input.agent)) {
326
- approvalGate.registerExecSession(input.sessionID);
327
- }
328
- else {
329
- approvalGate.revokeExecSession(input.sessionID);
330
- }
331
- }
332
- },
333
- dispose: async () => {
334
- approvalGate?.dispose();
335
- // tm_browser owns a browser child process — kill it on teardown and
336
- // WAIT, or the process can exit with the window still on screen.
337
- await tmRuntime.dispose();
338
- },
339
- // ---------- JIT layer-2: tm_read / tm_grep / tm_bash / tm_fetch ----------
340
- tool: tmRuntime.tools,
341
- };
342
- },
40
+ // read by an OpenCode 1.18.x host
41
+ server: createV1Personality,
42
+ // read by an OpenCode 2.x host; `Plugin.define` is the identity function, so
43
+ // handing over the plain {id, setup} pair IS the definition — no v2 SDK at
44
+ // runtime, which is what keeps this package installable by v1 users.
45
+ setup: v2Personality.setup,
343
46
  };
344
47
  export default plugin;
345
48
  //# sourceMappingURL=index.js.map