@te-river/opencode-team-mode 1.6.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +117 -118
- package/README.zh-CN.md +98 -100
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +89 -79
- package/dist/agents.js.map +1 -1
- package/dist/approval-gate.d.ts +8 -9
- package/dist/approval-gate.d.ts.map +1 -1
- package/dist/approval-gate.js +13 -14
- package/dist/approval-gate.js.map +1 -1
- package/dist/capabilities.d.ts +11 -37
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +11 -141
- package/dist/capabilities.js.map +1 -1
- package/dist/commands.js +1 -1
- package/dist/envprotect/hook.d.ts +12 -31
- package/dist/envprotect/hook.d.ts.map +1 -1
- package/dist/envprotect/hook.js +13 -91
- package/dist/envprotect/hook.js.map +1 -1
- package/dist/envprotect/patterns.d.ts +6 -4
- package/dist/envprotect/patterns.d.ts.map +1 -1
- package/dist/envprotect/patterns.js +6 -4
- package/dist/envprotect/patterns.js.map +1 -1
- package/dist/envprotect.d.ts +1 -1
- package/dist/envprotect.d.ts.map +1 -1
- package/dist/envprotect.js +1 -1
- package/dist/envprotect.js.map +1 -1
- package/dist/host/note.d.ts.map +1 -1
- package/dist/host/note.js +8 -5
- package/dist/host/note.js.map +1 -1
- package/dist/host/v2-browser-gate.d.ts +19 -1
- package/dist/host/v2-browser-gate.d.ts.map +1 -1
- package/dist/host/v2-browser-gate.js +47 -6
- package/dist/host/v2-browser-gate.js.map +1 -1
- package/dist/host/v2-capabilities.d.ts +43 -0
- package/dist/host/v2-capabilities.d.ts.map +1 -1
- package/dist/host/v2-capabilities.js +77 -1
- package/dist/host/v2-capabilities.js.map +1 -1
- package/dist/host/v2-compaction.d.ts +129 -0
- package/dist/host/v2-compaction.d.ts.map +1 -0
- package/dist/host/v2-compaction.js +346 -0
- package/dist/host/v2-compaction.js.map +1 -0
- package/dist/host/v2-default-agent.d.ts +37 -0
- package/dist/host/v2-default-agent.d.ts.map +1 -0
- package/dist/host/v2-default-agent.js +128 -0
- package/dist/host/v2-default-agent.js.map +1 -0
- package/dist/host/v2-events.d.ts +2 -0
- package/dist/host/v2-events.d.ts.map +1 -1
- package/dist/host/v2-events.js +27 -0
- package/dist/host/v2-events.js.map +1 -1
- package/dist/host/v2-guard.d.ts +178 -0
- package/dist/host/v2-guard.d.ts.map +1 -1
- package/dist/host/v2-guard.js +324 -8
- package/dist/host/v2-guard.js.map +1 -1
- package/dist/host/v2-offload.d.ts +1 -1
- package/dist/host/v2-offload.js +2 -2
- package/dist/host/v2-permissions.d.ts +45 -44
- package/dist/host/v2-permissions.d.ts.map +1 -1
- package/dist/host/v2-permissions.js +48 -49
- package/dist/host/v2-permissions.js.map +1 -1
- package/dist/host/v2-probe-chain.d.ts +93 -0
- package/dist/host/v2-probe-chain.d.ts.map +1 -0
- package/dist/host/v2-probe-chain.js +146 -0
- package/dist/host/v2-probe-chain.js.map +1 -0
- package/dist/host/v2-prune.d.ts +157 -0
- package/dist/host/v2-prune.d.ts.map +1 -0
- package/dist/host/v2-prune.js +507 -0
- package/dist/host/v2-prune.js.map +1 -0
- package/dist/host/v2-retry.d.ts +143 -0
- package/dist/host/v2-retry.d.ts.map +1 -0
- package/dist/host/v2-retry.js +315 -0
- package/dist/host/v2-retry.js.map +1 -0
- package/dist/host/v2-scope.d.ts.map +1 -1
- package/dist/host/v2-scope.js +14 -7
- package/dist/host/v2-scope.js.map +1 -1
- package/dist/host/v2-session-client.d.ts +62 -7
- package/dist/host/v2-session-client.d.ts.map +1 -1
- package/dist/host/v2-session-client.js +485 -26
- package/dist/host/v2-session-client.js.map +1 -1
- package/dist/host/v2-session.d.ts +72 -1
- package/dist/host/v2-session.d.ts.map +1 -1
- package/dist/host/v2-session.js +154 -10
- package/dist/host/v2-session.js.map +1 -1
- package/dist/host/v2-tool.d.ts +2 -3
- package/dist/host/v2-tool.d.ts.map +1 -1
- package/dist/host/v2-tool.js +2 -3
- package/dist/host/v2-tool.js.map +1 -1
- package/dist/host/v2-types.d.ts +25 -0
- package/dist/host/v2-types.d.ts.map +1 -1
- package/dist/host/v2.d.ts +14 -12
- package/dist/host/v2.d.ts.map +1 -1
- package/dist/host/v2.js +648 -74
- package/dist/host/v2.js.map +1 -1
- package/dist/identity.d.ts +27 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +34 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +9 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -27
- package/dist/index.js.map +1 -1
- package/dist/prompts/lead.d.ts +1 -1
- package/dist/prompts/lead.d.ts.map +1 -1
- package/dist/prompts/lead.js +44 -27
- package/dist/prompts/lead.js.map +1 -1
- package/dist/prompts/shared.d.ts +2 -2
- package/dist/prompts/shared.d.ts.map +1 -1
- package/dist/prompts/shared.js +74 -57
- package/dist/prompts/shared.js.map +1 -1
- package/dist/prompts/specialists.d.ts +2 -2
- package/dist/prompts/specialists.d.ts.map +1 -1
- package/dist/prompts/specialists.js +53 -83
- package/dist/prompts/specialists.js.map +1 -1
- package/dist/tm/args-schema.d.ts +7 -32
- package/dist/tm/args-schema.d.ts.map +1 -1
- package/dist/tm/args-schema.js +12 -153
- package/dist/tm/args-schema.js.map +1 -1
- package/dist/tm/board.d.ts +10 -9
- package/dist/tm/board.d.ts.map +1 -1
- package/dist/tm/board.js +11 -10
- package/dist/tm/board.js.map +1 -1
- package/dist/tm/config-files.d.ts +81 -0
- package/dist/tm/config-files.d.ts.map +1 -0
- package/dist/tm/config-files.js +209 -0
- package/dist/tm/config-files.js.map +1 -0
- package/dist/tm/config-layers.d.ts +117 -0
- package/dist/tm/config-layers.d.ts.map +1 -0
- package/dist/tm/config-layers.js +320 -0
- package/dist/tm/config-layers.js.map +1 -0
- package/dist/tm/config.d.ts +10 -101
- package/dist/tm/config.d.ts.map +1 -1
- package/dist/tm/config.js +17 -71
- package/dist/tm/config.js.map +1 -1
- package/dist/tm/dispatch.d.ts +154 -22
- package/dist/tm/dispatch.d.ts.map +1 -1
- package/dist/tm/dispatch.js +559 -80
- package/dist/tm/dispatch.js.map +1 -1
- package/dist/tm/egress.d.ts +19 -7
- package/dist/tm/egress.d.ts.map +1 -1
- package/dist/tm/egress.js +21 -9
- package/dist/tm/egress.js.map +1 -1
- package/dist/tm/index.d.ts +23 -20
- package/dist/tm/index.d.ts.map +1 -1
- package/dist/tm/index.js +117 -116
- package/dist/tm/index.js.map +1 -1
- package/dist/tm/ledger.d.ts +9 -2
- package/dist/tm/ledger.d.ts.map +1 -1
- package/dist/tm/ledger.js +4 -1
- package/dist/tm/ledger.js.map +1 -1
- package/dist/tm/perm-ask.d.ts +3 -3
- package/dist/tm/perm-ask.d.ts.map +1 -1
- package/dist/tm/perm-ask.js +3 -3
- package/dist/tm/perm-ask.js.map +1 -1
- package/dist/tm/pipelines.d.ts +12 -11
- package/dist/tm/pipelines.d.ts.map +1 -1
- package/dist/tm/pipelines.js +40 -207
- package/dist/tm/pipelines.js.map +1 -1
- package/dist/tm/preview.d.ts +1 -1
- package/dist/tm/preview.js +3 -3
- package/dist/tm/preview.js.map +1 -1
- package/dist/tm/refs.d.ts +31 -4
- package/dist/tm/refs.d.ts.map +1 -1
- package/dist/tm/refs.js +48 -4
- package/dist/tm/refs.js.map +1 -1
- package/dist/tm/result.d.ts +1 -1
- package/dist/tm/result.d.ts.map +1 -1
- package/dist/tm/result.js +4 -3
- package/dist/tm/result.js.map +1 -1
- package/dist/tm/search.d.ts +2 -2
- package/dist/tm/search.js +7 -7
- package/dist/tm/search.js.map +1 -1
- package/dist/tm/serp-loop.d.ts +19 -7
- package/dist/tm/serp-loop.d.ts.map +1 -1
- package/dist/tm/serp-loop.js +24 -9
- package/dist/tm/serp-loop.js.map +1 -1
- package/dist/tm/stats.d.ts +31 -27
- package/dist/tm/stats.d.ts.map +1 -1
- package/dist/tm/stats.js +170 -58
- package/dist/tm/stats.js.map +1 -1
- package/dist/tm/store.d.ts +18 -5
- package/dist/tm/store.d.ts.map +1 -1
- package/dist/tm/store.js +39 -9
- package/dist/tm/store.js.map +1 -1
- package/dist/tm/tools.d.ts +7 -5
- package/dist/tm/tools.d.ts.map +1 -1
- package/dist/tm/tools.js +10 -41
- package/dist/tm/tools.js.map +1 -1
- package/dist/tm/webfetch.d.ts +1 -1
- package/dist/tm/webfetch.d.ts.map +1 -1
- package/dist/tm/webfetch.js +38 -23
- package/dist/tm/webfetch.js.map +1 -1
- package/dist/types.d.ts +40 -123
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -21
- package/dist/types.js.map +1 -1
- package/docs/installation-v2.md +124 -39
- package/docs/installation.md +9 -0
- package/docs/research/browser-pane.md +5 -0
- package/docs/v2-port-notes.md +500 -315
- package/package.json +1 -1
- package/scripts/gen-v2-config.mjs +246 -94
- package/scripts/lib/fake-ctx.mjs +244 -146
package/dist/tm/board.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/tm/board.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;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,gwCAAgwC,CAAA;AAEpxC,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"}
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../src/tm/board.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,EA+E/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"}
|