@te-river/opencode-team-mode 1.6.2 → 1.7.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 (198) hide show
  1. package/README.md +114 -118
  2. package/README.zh-CN.md +95 -100
  3. package/dist/agents.d.ts.map +1 -1
  4. package/dist/agents.js +89 -79
  5. package/dist/agents.js.map +1 -1
  6. package/dist/approval-gate.d.ts +8 -9
  7. package/dist/approval-gate.d.ts.map +1 -1
  8. package/dist/approval-gate.js +13 -14
  9. package/dist/approval-gate.js.map +1 -1
  10. package/dist/capabilities.d.ts +11 -37
  11. package/dist/capabilities.d.ts.map +1 -1
  12. package/dist/capabilities.js +11 -141
  13. package/dist/capabilities.js.map +1 -1
  14. package/dist/commands.js +1 -1
  15. package/dist/envprotect/hook.d.ts +12 -31
  16. package/dist/envprotect/hook.d.ts.map +1 -1
  17. package/dist/envprotect/hook.js +13 -91
  18. package/dist/envprotect/hook.js.map +1 -1
  19. package/dist/envprotect/patterns.d.ts +6 -4
  20. package/dist/envprotect/patterns.d.ts.map +1 -1
  21. package/dist/envprotect/patterns.js +6 -4
  22. package/dist/envprotect/patterns.js.map +1 -1
  23. package/dist/envprotect.d.ts +1 -1
  24. package/dist/envprotect.d.ts.map +1 -1
  25. package/dist/envprotect.js +1 -1
  26. package/dist/envprotect.js.map +1 -1
  27. package/dist/host/v2-browser-gate.d.ts +19 -1
  28. package/dist/host/v2-browser-gate.d.ts.map +1 -1
  29. package/dist/host/v2-browser-gate.js +47 -6
  30. package/dist/host/v2-browser-gate.js.map +1 -1
  31. package/dist/host/v2-capabilities.d.ts +16 -0
  32. package/dist/host/v2-capabilities.d.ts.map +1 -1
  33. package/dist/host/v2-capabilities.js +22 -1
  34. package/dist/host/v2-capabilities.js.map +1 -1
  35. package/dist/host/v2-default-agent.d.ts +37 -0
  36. package/dist/host/v2-default-agent.d.ts.map +1 -0
  37. package/dist/host/v2-default-agent.js +128 -0
  38. package/dist/host/v2-default-agent.js.map +1 -0
  39. package/dist/host/v2-events.d.ts +1 -0
  40. package/dist/host/v2-events.d.ts.map +1 -1
  41. package/dist/host/v2-events.js +14 -0
  42. package/dist/host/v2-events.js.map +1 -1
  43. package/dist/host/v2-guard.d.ts +178 -0
  44. package/dist/host/v2-guard.d.ts.map +1 -1
  45. package/dist/host/v2-guard.js +324 -8
  46. package/dist/host/v2-guard.js.map +1 -1
  47. package/dist/host/v2-offload.d.ts +1 -1
  48. package/dist/host/v2-offload.js +2 -2
  49. package/dist/host/v2-permissions.d.ts +45 -44
  50. package/dist/host/v2-permissions.d.ts.map +1 -1
  51. package/dist/host/v2-permissions.js +48 -49
  52. package/dist/host/v2-permissions.js.map +1 -1
  53. package/dist/host/v2-probe-chain.d.ts +93 -0
  54. package/dist/host/v2-probe-chain.d.ts.map +1 -0
  55. package/dist/host/v2-probe-chain.js +146 -0
  56. package/dist/host/v2-probe-chain.js.map +1 -0
  57. package/dist/host/v2-prune.d.ts +157 -0
  58. package/dist/host/v2-prune.d.ts.map +1 -0
  59. package/dist/host/v2-prune.js +507 -0
  60. package/dist/host/v2-prune.js.map +1 -0
  61. package/dist/host/v2-retry.d.ts +143 -0
  62. package/dist/host/v2-retry.d.ts.map +1 -0
  63. package/dist/host/v2-retry.js +315 -0
  64. package/dist/host/v2-retry.js.map +1 -0
  65. package/dist/host/v2-scope.d.ts.map +1 -1
  66. package/dist/host/v2-scope.js +14 -7
  67. package/dist/host/v2-scope.js.map +1 -1
  68. package/dist/host/v2-session-client.d.ts +24 -0
  69. package/dist/host/v2-session-client.d.ts.map +1 -1
  70. package/dist/host/v2-session-client.js +243 -3
  71. package/dist/host/v2-session-client.js.map +1 -1
  72. package/dist/host/v2-session.d.ts +72 -1
  73. package/dist/host/v2-session.d.ts.map +1 -1
  74. package/dist/host/v2-session.js +154 -10
  75. package/dist/host/v2-session.js.map +1 -1
  76. package/dist/host/v2-tool.d.ts +2 -3
  77. package/dist/host/v2-tool.d.ts.map +1 -1
  78. package/dist/host/v2-tool.js +2 -3
  79. package/dist/host/v2-tool.js.map +1 -1
  80. package/dist/host/v2-types.d.ts +30 -0
  81. package/dist/host/v2-types.d.ts.map +1 -1
  82. package/dist/host/v2-usage.d.ts +50 -0
  83. package/dist/host/v2-usage.d.ts.map +1 -0
  84. package/dist/host/v2-usage.js +82 -0
  85. package/dist/host/v2-usage.js.map +1 -0
  86. package/dist/host/v2.d.ts +14 -12
  87. package/dist/host/v2.d.ts.map +1 -1
  88. package/dist/host/v2.js +430 -73
  89. package/dist/host/v2.js.map +1 -1
  90. package/dist/identity.d.ts +27 -0
  91. package/dist/identity.d.ts.map +1 -0
  92. package/dist/identity.js +34 -0
  93. package/dist/identity.js.map +1 -0
  94. package/dist/index.d.ts +9 -24
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +17 -27
  97. package/dist/index.js.map +1 -1
  98. package/dist/prompts/lead.d.ts +1 -1
  99. package/dist/prompts/lead.d.ts.map +1 -1
  100. package/dist/prompts/lead.js +38 -25
  101. package/dist/prompts/lead.js.map +1 -1
  102. package/dist/prompts/shared.d.ts +2 -2
  103. package/dist/prompts/shared.d.ts.map +1 -1
  104. package/dist/prompts/shared.js +66 -56
  105. package/dist/prompts/shared.js.map +1 -1
  106. package/dist/prompts/specialists.d.ts +2 -2
  107. package/dist/prompts/specialists.d.ts.map +1 -1
  108. package/dist/prompts/specialists.js +53 -83
  109. package/dist/prompts/specialists.js.map +1 -1
  110. package/dist/tm/args-schema.d.ts +7 -32
  111. package/dist/tm/args-schema.d.ts.map +1 -1
  112. package/dist/tm/args-schema.js +12 -153
  113. package/dist/tm/args-schema.js.map +1 -1
  114. package/dist/tm/board.d.ts +10 -9
  115. package/dist/tm/board.d.ts.map +1 -1
  116. package/dist/tm/board.js +11 -10
  117. package/dist/tm/board.js.map +1 -1
  118. package/dist/tm/config-files.d.ts +81 -0
  119. package/dist/tm/config-files.d.ts.map +1 -0
  120. package/dist/tm/config-files.js +209 -0
  121. package/dist/tm/config-files.js.map +1 -0
  122. package/dist/tm/config-layers.d.ts +117 -0
  123. package/dist/tm/config-layers.d.ts.map +1 -0
  124. package/dist/tm/config-layers.js +317 -0
  125. package/dist/tm/config-layers.js.map +1 -0
  126. package/dist/tm/config.d.ts +10 -101
  127. package/dist/tm/config.d.ts.map +1 -1
  128. package/dist/tm/config.js +17 -71
  129. package/dist/tm/config.js.map +1 -1
  130. package/dist/tm/dispatch.d.ts +115 -21
  131. package/dist/tm/dispatch.d.ts.map +1 -1
  132. package/dist/tm/dispatch.js +424 -67
  133. package/dist/tm/dispatch.js.map +1 -1
  134. package/dist/tm/egress.d.ts +19 -7
  135. package/dist/tm/egress.d.ts.map +1 -1
  136. package/dist/tm/egress.js +21 -9
  137. package/dist/tm/egress.js.map +1 -1
  138. package/dist/tm/index.d.ts +23 -20
  139. package/dist/tm/index.d.ts.map +1 -1
  140. package/dist/tm/index.js +117 -116
  141. package/dist/tm/index.js.map +1 -1
  142. package/dist/tm/ledger.d.ts +9 -2
  143. package/dist/tm/ledger.d.ts.map +1 -1
  144. package/dist/tm/ledger.js +4 -1
  145. package/dist/tm/ledger.js.map +1 -1
  146. package/dist/tm/perm-ask.d.ts +3 -3
  147. package/dist/tm/perm-ask.d.ts.map +1 -1
  148. package/dist/tm/perm-ask.js +3 -3
  149. package/dist/tm/perm-ask.js.map +1 -1
  150. package/dist/tm/pipelines.d.ts +12 -11
  151. package/dist/tm/pipelines.d.ts.map +1 -1
  152. package/dist/tm/pipelines.js +40 -207
  153. package/dist/tm/pipelines.js.map +1 -1
  154. package/dist/tm/preview.d.ts +1 -1
  155. package/dist/tm/preview.js +3 -3
  156. package/dist/tm/preview.js.map +1 -1
  157. package/dist/tm/refs.d.ts +31 -4
  158. package/dist/tm/refs.d.ts.map +1 -1
  159. package/dist/tm/refs.js +48 -4
  160. package/dist/tm/refs.js.map +1 -1
  161. package/dist/tm/result.d.ts +1 -1
  162. package/dist/tm/result.d.ts.map +1 -1
  163. package/dist/tm/result.js +4 -3
  164. package/dist/tm/result.js.map +1 -1
  165. package/dist/tm/search.d.ts +2 -2
  166. package/dist/tm/search.js +7 -7
  167. package/dist/tm/search.js.map +1 -1
  168. package/dist/tm/serp-loop.d.ts +19 -7
  169. package/dist/tm/serp-loop.d.ts.map +1 -1
  170. package/dist/tm/serp-loop.js +24 -9
  171. package/dist/tm/serp-loop.js.map +1 -1
  172. package/dist/tm/stats.d.ts +12 -27
  173. package/dist/tm/stats.d.ts.map +1 -1
  174. package/dist/tm/stats.js +43 -45
  175. package/dist/tm/stats.js.map +1 -1
  176. package/dist/tm/store.d.ts +18 -5
  177. package/dist/tm/store.d.ts.map +1 -1
  178. package/dist/tm/store.js +39 -9
  179. package/dist/tm/store.js.map +1 -1
  180. package/dist/tm/tools.d.ts +7 -5
  181. package/dist/tm/tools.d.ts.map +1 -1
  182. package/dist/tm/tools.js +10 -41
  183. package/dist/tm/tools.js.map +1 -1
  184. package/dist/tm/webfetch.d.ts +1 -1
  185. package/dist/tm/webfetch.d.ts.map +1 -1
  186. package/dist/tm/webfetch.js +38 -23
  187. package/dist/tm/webfetch.js.map +1 -1
  188. package/dist/types.d.ts +40 -123
  189. package/dist/types.d.ts.map +1 -1
  190. package/dist/types.js +7 -21
  191. package/dist/types.js.map +1 -1
  192. package/docs/installation-v2.md +133 -33
  193. package/docs/installation.md +9 -0
  194. package/docs/research/browser-pane.md +5 -0
  195. package/docs/v2-port-notes.md +133 -0
  196. package/package.json +1 -1
  197. package/scripts/gen-v2-config.mjs +246 -94
  198. package/scripts/lib/fake-ctx.mjs +67 -0
@@ -1 +1 @@
1
- {"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/tm/board.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/tm/board.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGnD;yDACyD;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAA;AAC9C;oEACoE;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAA;AAC9C,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAA;AAE7C;;4EAE4E;AAC5E,MAAM,UAAU,eAAe,CAAC,MAAY,IAAI,IAAI,EAAE;IACpD,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACnD,OAAO,CACL,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE;QACjE,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,CACpE,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,GAAG,GAAG,EAAE;IACjD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;SAClC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAChB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AACzC,CAAC;AAED;yDACyD;AACzD,MAAM,UAAU,WAAW,CAAC,KAAwB;IAClD,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,CAAC;YAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,CAAA;AAChB,CAAC;AAED;;iCAEiC;AACjC,MAAM,UAAU,WAAW,CAAC,KAAwB,EAAE,IAAY;IAChE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC5C,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;QAAE,CAAC,EAAE,CAAA;IAC9C,OAAO,KAAK,CAAC,EAAE,CAAA;AACjB,CAAC;AAED;;;;gEAIgE;AAChE,MAAM,UAAU,UAAU,CACxB,KAAwB,EACxB,IAAY,EACZ,KAAa;IAEb,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;IACnE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;IAClF,IAAI,EAAE,GAAG,CAAC,CAAA;IACV,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,CAAC,CAAC;YAAE,SAAQ;QAChB,IAAI,CAAC,EAAE;YAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC;IACD,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IACpB,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAA;AAChG,CAAC;AASD;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAO9B;IACC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC1C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,OAAO,CAAA;IACnD,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,mDAAmD,EAAE,CAAA;IACvE,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IACnD,yEAAyE;IACzE,IAAI,QAAgB,CAAA;IACpB,IAAI,iBAAyB,CAAA;IAC7B,IAAI,CAAC;QACH,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YAC/C,IAAI,iBAAiB,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;gBACvD,OAAO,EAAE,KAAK,EAAE,QAAQ,OAAO,yBAAyB,EAAE,CAAA;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClC,iBAAiB,GAAG,EAAE,CAAA;IACxB,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,IAAI,YAAY,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9E,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAA;IAC3C,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAA;IAC/F,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACxD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAAA;AACjH,CAAC;AAED;;yBAEyB;AACzB,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,OAAe;IACxD,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACtF,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAQ;YAClC,KAAK,EAAE,CAAA;YACP,IAAI,CAAC;gBACH,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA;YACvG,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;IAC/B,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AACzB,CAAC;AAED;;;oDAGoD;AACpD,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY;IACrD,MAAM,GAAG,GAAG,GAAG,IAAI,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAA;IACxC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACnC,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QACD,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAUnC;IAKC,MAAM,IAAI,GAAG,gBAAgB,CAAA;IAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;IAC1B,MAAM,IAAI,GAAG,CAAC,CAA0B,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IAC7F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,uBAAuB,CAAC,CAAA;IAC3F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,2BAA2B,CAAC,CAAA;IAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAEzC,MAAM,OAAO,GAAG,KAAK,EAAE,OAAgC,EAAE,GAAY,EAAuB,EAAE;QAC5F,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,CAAA;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QACvD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpB,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,+BAA+B,CAAC,CAAC,CAAA;QAC7E,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC9B,OAAO,YAAY,CACjB,OAAO,CACL,IAAI,EACJ,MAAM,EACN,WAAW,OAAO,CAAC,MAAM,WAAW,QAAQ,mEAAmE,CAChH,CACF,CAAA;QACH,CAAC;QACD,yEAAyE;QACzE,4EAA4E;QAC5E,yDAAyD;QACzD,MAAM,IAAI,GAAG,MAAM,CAAE,GAA8C,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,CAAA;QACnG,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAA;QACjG,MAAM,OAAO,GAAG,cAAc,CAAC;YAC7B,IAAI;YACJ,OAAO;YACP,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YAC7B,IAAI;YACJ,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/B,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;gBACZ,IAAI,CAAC;oBACH,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBAC5B,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,CAAA;gBACX,CAAC;YACH,CAAC;SACF,CAAC,CAAA;QACF,IAAI,OAAO,IAAI,OAAO;YAAE,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QACjF,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;QAC3D,IAAI,KAAK,CAAC,KAAK,IAAI,2BAA2B,IAAI,KAAK,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC1E,OAAO,YAAY,CACjB,OAAO,CACL,IAAI,EACJ,YAAY,EACZ,QAAQ,OAAO,OAAO,KAAK,CAAC,KAAK,UAAU,KAAK,CAAC,KAAK,aAAa,QAAQ,MAAM,2BAA2B,UAAU;gBACpH,sEAAsE,CACzE,CACF,CAAA;QACH,CAAC;QACD,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC9C,0EAA0E;YAC1E,4EAA4E;YAC5E,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACzC,IAAI,IAAI,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9D,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;gBAC3F,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC,CAAA;YAC1E,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,sEAAsE;gBACtE,kEAAkE;gBAClE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;gBACnF,OAAO,YAAY,CACjB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,iDAAiD,CAAC,CACvF,CAAA;YACH,CAAC;YACD,MAAM,MAAM,GAAG,yBAAyB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,IAAI,cAAc,OAAO,QAAQ,CAAA;YAC5G,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC,CAAA;YACzD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAA;YACpC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;YAC5I,OAAO,YAAY,CACjB,SAAS,IAAI,MAAM,KAAK,SAAS,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,WAAW,IAAI,GAAG;gBACjG,sDAAsD,CACzD,CAAA;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,MAAM,CAAE,CAAW,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC1D,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;YACrD,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC,CAAA;IAED,OAAO;QACL,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;QAChC,OAAO;KACR,CAAA;AACH,CAAC;AAED,MAAM,WAAW,GAAG,oxCAAoxC,CAAA;AAExyC,MAAM,aAAa,GAA4B;IAC7C,IAAI,EAAE,EAAE,UAAU,EAAE,qDAAqD,EAAE;IAC3E,KAAK,EAAE,EAAE,UAAU,EAAE,sDAAsD,EAAE;IAC7E,OAAO,EAAE,EAAE,UAAU,EAAE,sCAAsC,EAAE;IAC/D,OAAO,EAAE,EAAE,UAAU,EAAE,yFAAyF,EAAE;CACnH,CAAA"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Layered `team-mode` configuration — the FILE READER + runtime wiring
3
+ * (package ②, 2026-10-06).
4
+ *
5
+ * Package ① (`config-layers.ts`) is the PURE layer: it takes raw JSONC text
6
+ * and returns the merged view. This module is the IO half — it LOCATES and
7
+ * READS the two file layers, then feeds them to the pure resolver and folds
8
+ * the result back into an env record so `resolveTmConfig` (which only speaks
9
+ * env strings) sees the file values.
10
+ *
11
+ * Two layers only, low→high: `env < 全局 < 项目`. There is NO session layer
12
+ * (the host's own config has none either — `opencode.ai/v2/docs/config`).
13
+ *
14
+ * The project layer MIRRORS the host's layering semantics: search from the
15
+ * current directory up to the filesystem root; merge the DIRECT files
16
+ * farthest→closest, then the `.opencode/` files in the same order, and every
17
+ * `.opencode/` file overrides every direct file. Within each group the
18
+ * ancestor files are merged (closer wins) into ONE text so the pure layer's
19
+ * two project slots (`project` / `project:.opencode`) keep their meaning.
20
+ *
21
+ * `TM_CONFIG_ENV_ONLY=1` is evaluated BEFORE any file is read, so the escape
22
+ * valve costs zero IO and cannot be defeated by a file that fails to parse.
23
+ *
24
+ * Every root is INJECTABLE (`ConfigFileRoots`) so tests point at a temp dir
25
+ * and never touch the user's real `~/.config/opencode`.
26
+ */
27
+ import { type EnvLike, type LayeredConfigResult } from "./config-layers.js";
28
+ import { type TmConfig } from "./config.js";
29
+ /** The file name both layers use. */
30
+ export declare const CONFIG_FILE_NAME = "team-mode.jsonc";
31
+ export interface ConfigFileRoots {
32
+ /** Directory holding the GLOBAL file (default `~/.config/opencode`). */
33
+ globalDir?: string;
34
+ /** Directory the PROJECT search starts from (default `process.cwd()`). */
35
+ projectDir?: string;
36
+ /** Home dir used to derive the default global dir (default `os.homedir()`). */
37
+ home?: string;
38
+ }
39
+ export interface ConfigFileRead {
40
+ /** Global file raw JSONC, or null when it does not exist / is unreadable. */
41
+ globalLayer: string | null;
42
+ /** Absolute path of the global file when it was read. */
43
+ globalPath: string | null;
44
+ /** Project layers low→high: `[direct-merged, .opencode-merged]`. */
45
+ projectLayer: Array<string | null>;
46
+ /** Every project file that was read, in the order they were merged. */
47
+ projectPaths: string[];
48
+ /** The `.opencode/` subset of `projectPaths` (for the report). */
49
+ opencodePaths: string[];
50
+ /** Files dropped WHOLE because they failed to parse (never half-applied). */
51
+ skipped: Array<{
52
+ name: string;
53
+ reason: string;
54
+ }>;
55
+ }
56
+ /** Locate and read both file layers. Pure IO — no env, no globals beyond the
57
+ * injected roots. */
58
+ export declare function readConfigFiles(roots?: ConfigFileRoots): ConfigFileRead;
59
+ export interface LayeredTmConfig {
60
+ /** The resolved runtime config (file values folded in). */
61
+ cfg: TmConfig;
62
+ /** The pure layer's full view — sources, red-line ignores, unknown keys. */
63
+ layered: LayeredConfigResult;
64
+ /** What the reader actually found on disk. */
65
+ files: ConfigFileRead;
66
+ }
67
+ /**
68
+ * Resolve the runtime config through the layered pipeline: read the files
69
+ * (unless `TM_CONFIG_ENV_ONLY`), merge with the pure resolver, fold the
70
+ * file-sourced values back into an env record, then hand that to
71
+ * `resolveTmConfig`. The returned `layered`/`files` are what `tm_stats`
72
+ * renders so the user can see WHERE each key came from.
73
+ */
74
+ export declare function resolveLayeredTmConfig(env?: EnvLike, roots?: ConfigFileRoots): LayeredTmConfig;
75
+ /**
76
+ * The `tm_stats` config section. Renders the per-key source, the red-line
77
+ * keys a file tried to set, the unknown keys (warned, never applied) and the
78
+ * env-only flag — the four facts that make "which layer won" checkable.
79
+ */
80
+ export declare function renderConfigSection(layered: LayeredConfigResult, files: ConfigFileRead): string;
81
+ //# sourceMappingURL=config-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-files.d.ts","sourceRoot":"","sources":["../../src/tm/config-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAKH,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE5D,qCAAqC;AACrC,eAAO,MAAM,gBAAgB,oBAAoB,CAAA;AAEjD,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,yDAAyD;IACzD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,oEAAoE;IACpE,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAClC,uEAAuE;IACvE,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,kEAAkE;IAClE,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,6EAA6E;IAC7E,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACjD;AAmDD;sBACsB;AACtB,wBAAgB,eAAe,CAAC,KAAK,GAAE,eAAoB,GAAG,cAAc,CAqC3E;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,GAAG,EAAE,QAAQ,CAAA;IACb,4EAA4E;IAC5E,OAAO,EAAE,mBAAmB,CAAA;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,cAAc,CAAA;CACtB;AAwBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,GAAE,OAAqB,EAC1B,KAAK,GAAE,eAAoB,GAC1B,eAAe,CAoCjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAyB/F"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Layered `team-mode` configuration — the FILE READER + runtime wiring
3
+ * (package ②, 2026-10-06).
4
+ *
5
+ * Package ① (`config-layers.ts`) is the PURE layer: it takes raw JSONC text
6
+ * and returns the merged view. This module is the IO half — it LOCATES and
7
+ * READS the two file layers, then feeds them to the pure resolver and folds
8
+ * the result back into an env record so `resolveTmConfig` (which only speaks
9
+ * env strings) sees the file values.
10
+ *
11
+ * Two layers only, low→high: `env < 全局 < 项目`. There is NO session layer
12
+ * (the host's own config has none either — `opencode.ai/v2/docs/config`).
13
+ *
14
+ * The project layer MIRRORS the host's layering semantics: search from the
15
+ * current directory up to the filesystem root; merge the DIRECT files
16
+ * farthest→closest, then the `.opencode/` files in the same order, and every
17
+ * `.opencode/` file overrides every direct file. Within each group the
18
+ * ancestor files are merged (closer wins) into ONE text so the pure layer's
19
+ * two project slots (`project` / `project:.opencode`) keep their meaning.
20
+ *
21
+ * `TM_CONFIG_ENV_ONLY=1` is evaluated BEFORE any file is read, so the escape
22
+ * valve costs zero IO and cannot be defeated by a file that fails to parse.
23
+ *
24
+ * Every root is INJECTABLE (`ConfigFileRoots`) so tests point at a temp dir
25
+ * and never touch the user's real `~/.config/opencode`.
26
+ */
27
+ import * as fs from "node:fs";
28
+ import * as os from "node:os";
29
+ import * as path from "node:path";
30
+ import { CONFIG_KEYS, parseJsonc, resolveLayeredConfig, } from "./config-layers.js";
31
+ import { resolveTmConfig } from "./config.js";
32
+ /** The file name both layers use. */
33
+ export const CONFIG_FILE_NAME = "team-mode.jsonc";
34
+ function readTextFile(p) {
35
+ try {
36
+ if (!fs.statSync(p).isFile())
37
+ return null;
38
+ return fs.readFileSync(p, "utf8");
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }
44
+ /** Directories from the filesystem root DOWN to `dir` (farthest first). */
45
+ function ancestorDirs(dir) {
46
+ const out = [];
47
+ let cur = path.resolve(dir);
48
+ for (;;) {
49
+ out.push(cur);
50
+ const parent = path.dirname(cur);
51
+ if (parent === cur)
52
+ break;
53
+ cur = parent;
54
+ }
55
+ return out.reverse();
56
+ }
57
+ /** Merge a group of ancestor files (farthest→closest, closer wins) into ONE
58
+ * JSON text. A file that fails to parse is dropped WHOLE and reported — the
59
+ * same "skip the layer, never half-apply" rule the pure layer uses. */
60
+ function mergeTexts(entries, skipped) {
61
+ const merged = {};
62
+ let any = false;
63
+ for (const { name, text } of entries) {
64
+ let obj;
65
+ try {
66
+ obj = parseJsonc(text);
67
+ }
68
+ catch (e) {
69
+ skipped.push({ name, reason: e instanceof Error ? e.message : String(e) });
70
+ continue;
71
+ }
72
+ if (!obj || typeof obj !== "object" || Array.isArray(obj)) {
73
+ skipped.push({ name, reason: "顶层不是 JSON 对象" });
74
+ continue;
75
+ }
76
+ Object.assign(merged, obj);
77
+ any = true;
78
+ }
79
+ return any ? JSON.stringify(merged) : null;
80
+ }
81
+ /** Locate and read both file layers. Pure IO — no env, no globals beyond the
82
+ * injected roots. */
83
+ export function readConfigFiles(roots = {}) {
84
+ const home = roots.home ?? os.homedir();
85
+ const globalDir = roots.globalDir ?? path.join(home, ".config", "opencode");
86
+ const projectDir = roots.projectDir ?? process.cwd();
87
+ const skipped = [];
88
+ const globalPath = path.join(globalDir, CONFIG_FILE_NAME);
89
+ const globalLayer = readTextFile(globalPath);
90
+ const directEntries = [];
91
+ const opencodeEntries = [];
92
+ const projectPaths = [];
93
+ const opencodePaths = [];
94
+ for (const d of ancestorDirs(projectDir)) {
95
+ const direct = path.join(d, CONFIG_FILE_NAME);
96
+ const t1 = readTextFile(direct);
97
+ if (t1 !== null) {
98
+ directEntries.push({ name: "project", text: t1 });
99
+ projectPaths.push(direct);
100
+ }
101
+ const oc = path.join(d, ".opencode", CONFIG_FILE_NAME);
102
+ const t2 = readTextFile(oc);
103
+ if (t2 !== null) {
104
+ opencodeEntries.push({ name: "project:.opencode", text: t2 });
105
+ projectPaths.push(oc);
106
+ opencodePaths.push(oc);
107
+ }
108
+ }
109
+ return {
110
+ globalLayer,
111
+ globalPath: globalLayer !== null ? globalPath : null,
112
+ projectLayer: [mergeTexts(directEntries, skipped), mergeTexts(opencodeEntries, skipped)],
113
+ projectPaths,
114
+ opencodePaths,
115
+ skipped,
116
+ };
117
+ }
118
+ function envOnlyFromEnv(env) {
119
+ const raw = env.TM_CONFIG_ENV_ONLY;
120
+ return typeof raw === "string" && /^(1|true|on|yes)$/i.test(raw.trim());
121
+ }
122
+ /** A file value back to the env STRING `resolveTmConfig` parses. Only
123
+ * FILE-sourced values go through here — an env-sourced value is already the
124
+ * raw string and must not be re-encoded (a `record` env string would iterate
125
+ * its characters). */
126
+ function stringifyForEnv(type, value) {
127
+ if (type === "string[]")
128
+ return Array.isArray(value) ? value.map(String).join(",") : String(value);
129
+ if (type === "record") {
130
+ if (value && typeof value === "object" && !Array.isArray(value)) {
131
+ return Object.entries(value)
132
+ .map(([k, v]) => `${k}=${v}`)
133
+ .join(",");
134
+ }
135
+ return String(value);
136
+ }
137
+ return String(value);
138
+ }
139
+ /**
140
+ * Resolve the runtime config through the layered pipeline: read the files
141
+ * (unless `TM_CONFIG_ENV_ONLY`), merge with the pure resolver, fold the
142
+ * file-sourced values back into an env record, then hand that to
143
+ * `resolveTmConfig`. The returned `layered`/`files` are what `tm_stats`
144
+ * renders so the user can see WHERE each key came from.
145
+ */
146
+ export function resolveLayeredTmConfig(env = process.env, roots = {}) {
147
+ const envOnly = envOnlyFromEnv(env);
148
+ // The host's global config dir is `~/.config/opencode`, overridable by
149
+ // OPENCODE_CONFIG_DIR — the global `team-mode.jsonc` lives beside the host's
150
+ // own global config, so honor the same override (and it keeps a test that
151
+ // redirects OPENCODE_CONFIG_DIR hermetic).
152
+ const configDirOverride = typeof env.OPENCODE_CONFIG_DIR === "string" && env.OPENCODE_CONFIG_DIR.trim()
153
+ ? env.OPENCODE_CONFIG_DIR.trim()
154
+ : undefined;
155
+ const effectiveRoots = {
156
+ ...roots,
157
+ globalDir: roots.globalDir ?? configDirOverride,
158
+ };
159
+ const files = envOnly
160
+ ? { globalLayer: null, globalPath: null, projectLayer: [null, null], projectPaths: [], opencodePaths: [], skipped: [] }
161
+ : readConfigFiles(effectiveRoots);
162
+ const base = resolveLayeredConfig({
163
+ env,
164
+ globalLayer: files.globalLayer,
165
+ projectLayer: files.projectLayer,
166
+ envOnly,
167
+ });
168
+ const layered = {
169
+ ...base,
170
+ skippedLayers: [...files.skipped, ...base.skippedLayers],
171
+ };
172
+ const specByKey = new Map(CONFIG_KEYS.map((k) => [k.key, k]));
173
+ const synthetic = { ...env };
174
+ for (const [key, source] of Object.entries(layered.perKeySource)) {
175
+ if (source === "env")
176
+ continue;
177
+ const spec = specByKey.get(key);
178
+ if (!spec)
179
+ continue;
180
+ synthetic[spec.env] = stringifyForEnv(spec.type, layered.values[key]);
181
+ }
182
+ return { cfg: resolveTmConfig(synthetic), layered, files };
183
+ }
184
+ /**
185
+ * The `tm_stats` config section. Renders the per-key source, the red-line
186
+ * keys a file tried to set, the unknown keys (warned, never applied) and the
187
+ * env-only flag — the four facts that make "which layer won" checkable.
188
+ */
189
+ export function renderConfigSection(layered, files) {
190
+ const lines = ["", "### 分层配置(team-mode.jsonc)", ""];
191
+ lines.push(`- 层序 env < 全局 < 项目 · 全局文件 ${files.globalPath ? "有" : "无"} · ` +
192
+ `项目文件 ${files.projectPaths.length} 个(其中 .opencode ${files.opencodePaths.length} 个)· ` +
193
+ `TM_CONFIG_ENV_ONLY ${layered.envOnlyActive ? "开(文件层已全部忽略)" : "关"}`);
194
+ const sources = Object.entries(layered.perKeySource);
195
+ lines.push(sources.length
196
+ ? `- 每键来源:${sources.map(([k, s]) => `${k}=${s}`).join(" · ")}`
197
+ : "- 每键来源:(没有任何键来自 env 或文件,全部走默认)");
198
+ if (layered.ignoredRedLineKeys.length) {
199
+ lines.push(`- 红线豁免(文件不得改写,已忽略):${layered.ignoredRedLineKeys.map((r) => `${r.key}(${r.layer})`).join(" · ")}`);
200
+ }
201
+ if (layered.unknownKeys.length) {
202
+ lines.push(`- 未知键(告警不应用):${layered.unknownKeys.map((u) => `${u.key}(${u.layer})`).join(" · ")}`);
203
+ }
204
+ if (layered.skippedLayers.length) {
205
+ lines.push(`- 整层跳过(解析失败):${layered.skippedLayers.map((s) => `${s.name}:${s.reason}`).join(" · ")}`);
206
+ }
207
+ return lines.join("\n");
208
+ }
209
+ //# sourceMappingURL=config-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-files.js","sourceRoot":"","sources":["../../src/tm/config-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Layered `team-mode` configuration — the PURE layer (package ①, 2026-10-06).
3
+ *
4
+ * Two file layers only, per the user's decision (2026-10-06): the host's own
5
+ * config has NO session layer (opencode.ai/v2/docs/config), so neither do we.
6
+ *
7
+ * env < global < project
8
+ *
9
+ * A file WINS over env for the same key. Within the project layer the
10
+ * `.opencode/` file wins over the direct one, mirroring the host's own
11
+ * discovery order (direct files merged farthest→closest, then `.opencode/`
12
+ * dirs in the same order — every discovered `.opencode` config overrides
13
+ * every direct config).
14
+ *
15
+ * This module is deliberately IO-free: it takes raw JSONC text (or null when
16
+ * a file does not exist) and returns a resolved view. Reading the files,
17
+ * the scope gate and the trajectory line are package ②'s job.
18
+ *
19
+ * Three rules the design pins, each implemented here:
20
+ * - a layer that fails to PARSE is skipped WHOLE and reported — never a
21
+ * half-applied config (a syntax error in a project file must not take the
22
+ * global layer down with it, and must not apply "the keys that happened to
23
+ * parse");
24
+ * - a single key with the WRONG TYPE is dropped from that layer only, and
25
+ * the next layer down answers for it;
26
+ * - a RED-LINE key written in a file is IGNORED outright and always resolves
27
+ * from env/default (see RED_LINE_EXEMPT_KEYS).
28
+ */
29
+ /** Env-like record — kept local so this module has no import cycle with config.ts. */
30
+ export type EnvLike = Record<string, string | undefined>;
31
+ export type ConfigValueType = "number" | "string" | "string[]" | "record";
32
+ /** One honored knob: its canonical file key, the env var it mirrors, and the
33
+ * JSON type a file value must have. The registry IS the "known key" set —
34
+ * a key absent here is reported as unknown (warned, never applied). */
35
+ export interface ConfigKeySpec {
36
+ /** Canonical file key (camelCase; matches the TmConfig field where one exists). */
37
+ key: string;
38
+ /** The env var this key mirrors. */
39
+ env: string;
40
+ type: ConfigValueType;
41
+ /** Red-line: a file value is ignored, the key always resolves from env/default. */
42
+ redLine?: boolean;
43
+ /** Why the file may not override it (shown in the ignored-key report). */
44
+ redLineReason?: string;
45
+ }
46
+ /**
47
+ * The honored-key registry. Extend it when a new knob is wired — an
48
+ * unlisted real knob would be reported as "unknown", a false positive.
49
+ *
50
+ * The first block mirrors `resolveTmConfig` (src/tm/config.ts) one-for-one;
51
+ * the red-line block adds the three knobs that live OUTSIDE TmConfig
52
+ * (envProtect / r6FineAsk / privateSpace) plus the four the design names as
53
+ * file-overridable but that are read directly from process.env.
54
+ */
55
+ export declare const CONFIG_KEYS: readonly ConfigKeySpec[];
56
+ /** The red-line keys, derived from the registry (single source of truth). */
57
+ export declare const RED_LINE_EXEMPT_KEYS: readonly string[];
58
+ /** Standard layer names, low→high. */
59
+ export type LayerSource = "env" | "global" | "project" | "project:.opencode";
60
+ export interface SkippedLayer {
61
+ name: string;
62
+ reason: string;
63
+ }
64
+ export interface IgnoredRedLineKey {
65
+ key: string;
66
+ layer: string;
67
+ value: unknown;
68
+ }
69
+ export interface UnknownKey {
70
+ key: string;
71
+ layer: string;
72
+ }
73
+ export interface LayeredConfigResult {
74
+ /** Final merged value per canonical key. An env-sourced value is the raw
75
+ * env STRING; a file-sourced value is the parsed JSON value. Keys absent
76
+ * everywhere are not listed (the caller applies its own defaults). */
77
+ values: Record<string, unknown>;
78
+ /** For every key present in env or a file layer: which layer it came from. */
79
+ perKeySource: Record<string, LayerSource>;
80
+ /** Layers dropped whole because they failed to parse. */
81
+ skippedLayers: SkippedLayer[];
82
+ /** Red-line keys a file tried to set (ignored; env/default still answers). */
83
+ ignoredRedLineKeys: IgnoredRedLineKey[];
84
+ /** Keys not in the registry (warned, never applied). */
85
+ unknownKeys: UnknownKey[];
86
+ /** True when TM_CONFIG_ENV_ONLY removed every file layer. */
87
+ envOnlyActive: boolean;
88
+ }
89
+ export interface ResolveLayeredConfigInput {
90
+ env: EnvLike;
91
+ /** Global file raw JSONC, or null/undefined when it does not exist. */
92
+ globalLayer?: string | null;
93
+ /** Project file(s). A single raw text, or an array ordered low→high
94
+ * (`[direct, .opencode]`) so the `.opencode/` file wins. */
95
+ projectLayer?: string | null | Array<string | null>;
96
+ /** Override the red-line exempt set (defaults to RED_LINE_EXEMPT_KEYS). */
97
+ exempt?: readonly string[];
98
+ /** Override the env-only escape valve (defaults to env.TM_CONFIG_ENV_ONLY). */
99
+ envOnly?: boolean;
100
+ }
101
+ /**
102
+ * Mask `//` and block comments to spaces at IDENTICAL offsets, so a
103
+ * commented-out key can never be mistaken for a live one. String contents
104
+ * (including a `//` inside a string) are preserved byte-for-byte. Ported
105
+ * from scripts/lib/config-surgery.cjs:19 — deliberately re-implemented here
106
+ * rather than imported, so the pure layer carries no CJS dependency.
107
+ */
108
+ export declare function maskJsoncComments(src: string): string;
109
+ /** Parse JSONC (comments + trailing commas) into a value. Throws on a real
110
+ * syntax error — the caller turns that into a whole-layer skip. */
111
+ export declare function parseJsonc(src: string): unknown;
112
+ /**
113
+ * Resolve the layered config. Pure: no IO, no globals read except the `env`
114
+ * record handed in. See the module header for the three rules.
115
+ */
116
+ export declare function resolveLayeredConfig(input: ResolveLayeredConfigInput): LayeredConfigResult;
117
+ //# sourceMappingURL=config-layers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-layers.d.ts","sourceRoot":"","sources":["../../src/tm/config-layers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,sFAAsF;AACtF,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;AAExD,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAA;AAEzE;;wEAEwE;AACxE,MAAM,WAAW,aAAa;IAC5B,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAA;IACX,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,eAAe,CAAA;IACrB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,aAAa,EA4E/C,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAA2D,CAAA;AAI7G,sCAAsC;AACtC,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,mBAAmB,CAAA;AAE5E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC;;2EAEuE;IACvE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACzC,yDAAyD;IACzD,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,8EAA8E;IAC9E,kBAAkB,EAAE,iBAAiB,EAAE,CAAA;IACvC,wDAAwD;IACxD,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,6DAA6D;IAC7D,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,OAAO,CAAA;IACZ,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;iEAC6D;IAC7D,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACnD,2EAA2E;IAC3E,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAMD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAyCrD;AAuCD;oEACoE;AACpE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAwCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,mBAAmB,CA6D1F"}