@te-river/opencode-team-mode 1.7.1 → 1.7.3

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 (167) hide show
  1. package/README.md +1009 -849
  2. package/README.zh-CN.md +906 -756
  3. package/dist/host/v2-browser-gate.d.ts +4 -1
  4. package/dist/host/v2-browser-gate.d.ts.map +1 -1
  5. package/dist/host/v2-browser-gate.js +1 -1
  6. package/dist/host/v2-browser-gate.js.map +1 -1
  7. package/dist/host/v2-capabilities.js +1 -1
  8. package/dist/host/v2-capabilities.js.map +1 -1
  9. package/dist/host/v2-guard.d.ts +3 -1
  10. package/dist/host/v2-guard.d.ts.map +1 -1
  11. package/dist/host/v2-guard.js +2 -2
  12. package/dist/host/v2-guard.js.map +1 -1
  13. package/dist/host/v2-offload.d.ts +12 -2
  14. package/dist/host/v2-offload.d.ts.map +1 -1
  15. package/dist/host/v2-offload.js +9 -9
  16. package/dist/host/v2-offload.js.map +1 -1
  17. package/dist/host/v2-probe-chain.d.ts +5 -1
  18. package/dist/host/v2-probe-chain.d.ts.map +1 -1
  19. package/dist/host/v2-probe-chain.js +4 -6
  20. package/dist/host/v2-probe-chain.js.map +1 -1
  21. package/dist/host/v2-probe.d.ts.map +1 -1
  22. package/dist/host/v2-probe.js +2 -1
  23. package/dist/host/v2-probe.js.map +1 -1
  24. package/dist/host/v2-prune.d.ts +5 -1
  25. package/dist/host/v2-prune.d.ts.map +1 -1
  26. package/dist/host/v2-prune.js +8 -14
  27. package/dist/host/v2-prune.js.map +1 -1
  28. package/dist/host/v2-retry.d.ts +9 -2
  29. package/dist/host/v2-retry.d.ts.map +1 -1
  30. package/dist/host/v2-retry.js +13 -15
  31. package/dist/host/v2-retry.js.map +1 -1
  32. package/dist/host/v2-session.d.ts +6 -2
  33. package/dist/host/v2-session.d.ts.map +1 -1
  34. package/dist/host/v2-session.js +7 -13
  35. package/dist/host/v2-session.js.map +1 -1
  36. package/dist/host/v2.d.ts +7 -2
  37. package/dist/host/v2.d.ts.map +1 -1
  38. package/dist/host/v2.js +38 -35
  39. package/dist/host/v2.js.map +1 -1
  40. package/dist/prompts/lead.d.ts +1 -1
  41. package/dist/prompts/lead.d.ts.map +1 -1
  42. package/dist/prompts/lead.js +23 -7
  43. package/dist/prompts/lead.js.map +1 -1
  44. package/dist/prompts/specialists.d.ts +1 -1
  45. package/dist/prompts/specialists.d.ts.map +1 -1
  46. package/dist/prompts/specialists.js +1 -1
  47. package/dist/tm/args-schema.d.ts +1 -1
  48. package/dist/tm/args-schema.js +6 -6
  49. package/dist/tm/args-schema.js.map +1 -1
  50. package/dist/tm/board.js +2 -2
  51. package/dist/tm/board.js.map +1 -1
  52. package/dist/tm/config-files.d.ts +41 -17
  53. package/dist/tm/config-files.d.ts.map +1 -1
  54. package/dist/tm/config-files.js +68 -73
  55. package/dist/tm/config-files.js.map +1 -1
  56. package/dist/tm/config-layers.d.ts +65 -33
  57. package/dist/tm/config-layers.d.ts.map +1 -1
  58. package/dist/tm/config-layers.js +165 -81
  59. package/dist/tm/config-layers.js.map +1 -1
  60. package/dist/tm/config-template.d.ts +32 -0
  61. package/dist/tm/config-template.d.ts.map +1 -0
  62. package/dist/tm/config-template.js +74 -0
  63. package/dist/tm/config-template.js.map +1 -0
  64. package/dist/tm/config.d.ts +115 -140
  65. package/dist/tm/config.d.ts.map +1 -1
  66. package/dist/tm/config.js +100 -200
  67. package/dist/tm/config.js.map +1 -1
  68. package/dist/tm/index.d.ts +11 -3
  69. package/dist/tm/index.d.ts.map +1 -1
  70. package/dist/tm/index.js +46 -16
  71. package/dist/tm/index.js.map +1 -1
  72. package/dist/tm/ledger.d.ts +7 -3
  73. package/dist/tm/ledger.d.ts.map +1 -1
  74. package/dist/tm/ledger.js +5 -4
  75. package/dist/tm/ledger.js.map +1 -1
  76. package/dist/tm/memory.js +3 -3
  77. package/dist/tm/pipelines.js +1 -1
  78. package/dist/tm/search.js +6 -6
  79. package/dist/tm/search.js.map +1 -1
  80. package/dist/tm/stats.js +2 -2
  81. package/dist/tm/stats.js.map +1 -1
  82. package/dist/tm/tools.js +2 -2
  83. package/dist/tm/webfetch.d.ts +5 -2
  84. package/dist/tm/webfetch.d.ts.map +1 -1
  85. package/dist/tm/webfetch.js +24 -18
  86. package/dist/tm/webfetch.js.map +1 -1
  87. package/docs/installation-v2.md +61 -38
  88. package/docs/installation.md +4 -4
  89. package/docs/v2-port-notes.md +31 -0
  90. package/package.json +1 -1
  91. package/scripts/gen-v2-config.mjs +40 -4
  92. package/dist/approval-gate.d.ts +0 -205
  93. package/dist/approval-gate.d.ts.map +0 -1
  94. package/dist/approval-gate.js +0 -627
  95. package/dist/approval-gate.js.map +0 -1
  96. package/dist/host/v1.d.ts +0 -14
  97. package/dist/host/v1.d.ts.map +0 -1
  98. package/dist/host/v1.js +0 -340
  99. package/dist/host/v1.js.map +0 -1
  100. package/dist/host/v2-client.d.ts +0 -53
  101. package/dist/host/v2-client.d.ts.map +0 -1
  102. package/dist/host/v2-client.js +0 -193
  103. package/dist/host/v2-client.js.map +0 -1
  104. package/dist/host/v2-transcript.d.ts +0 -73
  105. package/dist/host/v2-transcript.d.ts.map +0 -1
  106. package/dist/host/v2-transcript.js +0 -151
  107. package/dist/host/v2-transcript.js.map +0 -1
  108. package/dist/host-hooks.d.ts +0 -126
  109. package/dist/host-hooks.d.ts.map +0 -1
  110. package/dist/host-hooks.js +0 -284
  111. package/dist/host-hooks.js.map +0 -1
  112. package/dist/tm/bash-timeout.d.ts +0 -72
  113. package/dist/tm/bash-timeout.d.ts.map +0 -1
  114. package/dist/tm/bash-timeout.js +0 -100
  115. package/dist/tm/bash-timeout.js.map +0 -1
  116. package/dist/tm/browser.d.ts +0 -642
  117. package/dist/tm/browser.d.ts.map +0 -1
  118. package/dist/tm/browser.js +0 -2836
  119. package/dist/tm/browser.js.map +0 -1
  120. package/dist/tm/ptc/budgets.d.ts +0 -59
  121. package/dist/tm/ptc/budgets.d.ts.map +0 -1
  122. package/dist/tm/ptc/budgets.js +0 -138
  123. package/dist/tm/ptc/budgets.js.map +0 -1
  124. package/dist/tm/ptc/contract.d.ts +0 -171
  125. package/dist/tm/ptc/contract.d.ts.map +0 -1
  126. package/dist/tm/ptc/contract.js +0 -85
  127. package/dist/tm/ptc/contract.js.map +0 -1
  128. package/dist/tm/ptc/driver.d.ts +0 -40
  129. package/dist/tm/ptc/driver.d.ts.map +0 -1
  130. package/dist/tm/ptc/driver.js +0 -213
  131. package/dist/tm/ptc/driver.js.map +0 -1
  132. package/dist/tm/ptc/engines.d.ts +0 -43
  133. package/dist/tm/ptc/engines.d.ts.map +0 -1
  134. package/dist/tm/ptc/engines.js +0 -454
  135. package/dist/tm/ptc/engines.js.map +0 -1
  136. package/dist/tm/ptc/gate.d.ts +0 -28
  137. package/dist/tm/ptc/gate.d.ts.map +0 -1
  138. package/dist/tm/ptc/gate.js +0 -130
  139. package/dist/tm/ptc/gate.js.map +0 -1
  140. package/dist/tm/ptc/index.d.ts +0 -19
  141. package/dist/tm/ptc/index.d.ts.map +0 -1
  142. package/dist/tm/ptc/index.js +0 -15
  143. package/dist/tm/ptc/index.js.map +0 -1
  144. package/dist/tm/ptc/pscan.d.ts +0 -30
  145. package/dist/tm/ptc/pscan.d.ts.map +0 -1
  146. package/dist/tm/ptc/pscan.js +0 -341
  147. package/dist/tm/ptc/pscan.js.map +0 -1
  148. package/dist/tm/ptc/summary.d.ts +0 -17
  149. package/dist/tm/ptc/summary.d.ts.map +0 -1
  150. package/dist/tm/ptc/summary.js +0 -134
  151. package/dist/tm/ptc/summary.js.map +0 -1
  152. package/dist/tm/ptc/tool.d.ts +0 -66
  153. package/dist/tm/ptc/tool.d.ts.map +0 -1
  154. package/dist/tm/ptc/tool.js +0 -231
  155. package/dist/tm/ptc/tool.js.map +0 -1
  156. package/dist/tm/ptc.d.ts +0 -298
  157. package/dist/tm/ptc.d.ts.map +0 -1
  158. package/dist/tm/ptc.js +0 -865
  159. package/dist/tm/ptc.js.map +0 -1
  160. package/dist/tm/pty.d.ts +0 -70
  161. package/dist/tm/pty.d.ts.map +0 -1
  162. package/dist/tm/pty.js +0 -245
  163. package/dist/tm/pty.js.map +0 -1
  164. package/dist/tool-coerce.d.ts +0 -24
  165. package/dist/tool-coerce.d.ts.map +0 -1
  166. package/dist/tool-coerce.js +0 -63
  167. package/dist/tool-coerce.js.map +0 -1
@@ -1,16 +1,20 @@
1
1
  /**
2
2
  * Layered `team-mode` configuration — the PURE layer (package ①, 2026-10-06).
3
3
  *
4
+ * `team-mode.jsonc` is the ONLY configuration source. There is no `TM_*`
5
+ * config env var any more: the registry below carries each key's default and
6
+ * its one-line doc, and the template generator (`config-template.ts`) renders
7
+ * the global file straight from it, so a comment and a key can never drift.
8
+ *
4
9
  * Two file layers only, per the user's decision (2026-10-06): the host's own
5
10
  * config has NO session layer (opencode.ai/v2/docs/config), so neither do we.
6
11
  *
7
- * env < global < project
12
+ * global < project
8
13
  *
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
+ * Within the project layer the `.opencode/` file wins over the direct one,
15
+ * mirroring the host's own discovery order (direct files merged
16
+ * farthest→closest, then `.opencode/` dirs in the same order — every
17
+ * discovered `.opencode` config overrides every direct config).
14
18
  *
15
19
  * This module is deliberately IO-free: it takes raw JSONC text (or null when
16
20
  * a file does not exist) and returns a resolved view. Reading the files,
@@ -23,93 +27,186 @@
23
27
  * parse");
24
28
  * - a single key with the WRONG TYPE is dropped from that layer only, and
25
29
  * 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).
30
+ * - a RED-LINE key is honored ONLY in the GLOBAL file (D1). Written in a
31
+ * project file it is IGNORED outright and reported (see RED_LINE_EXEMPT_KEYS).
28
32
  */
33
+ /** Default tm_bash read-only allowlist (P3, command-level). The PS
34
+ * -Object entries are pure pipeline formatters — no write capability. */
35
+ export const DEFAULT_BASH_READONLY_ALLOWED = [
36
+ "ls", "cat", "head", "tail", "grep", "rg", "find", "awk", "sort", "uniq",
37
+ "wc", "cut", "dir", "Get-Content", "Get-ChildItem", "Select-String",
38
+ "Measure-Object", "Select-Object", "Where-Object", "Sort-Object",
39
+ "Group-Object", "Test-Path",
40
+ // Process LISTING, read-only and write-free. An agent verifying that a
41
+ // process really exited (a leftover browser, a stray server) had no allowed
42
+ // way to ask the OS, and a claim the user cannot check is worth less than one
43
+ // they can. findstr joins it for the same reason: `tasklist | findstr /i
44
+ // msedge` is the natural Windows spelling of that check, and refusing it only
45
+ // turned one call into two (live evidence: refused, then re-run with
46
+ // Select-String).
47
+ "tasklist", "ps", "findstr",
48
+ ];
29
49
  /**
30
- * The honored-key registry. Extend it when a new knob is wired — an
31
- * unlisted real knob would be reported as "unknown", a false positive.
50
+ * Seeded tm_webfetch / tm_search domain allowlist — every host the search
51
+ * engines and data sources ride (all reachable from mainland China without
52
+ * API keys): wiki term / bilibili search / bing CN + international / baidu /
53
+ * sogou / 360, the npm registry (JSON search + package metadata) and the
54
+ * GitHub (search API + repo pages + raw/gist content), its ghproxy.net
55
+ * mainland mirror, and PARENT domains for baidu/moegirl so every sibling
56
+ * subdomain (baike./tieba./mzh./mobile.) is covered. A site's OWN asset CDN
57
+ * on a brand-unrelated domain has to be seeded too — same-site cannot infer it,
58
+ * and blocking it is what makes a page render blank (bdimg.com below is that
59
+ * case, measured). Subdomains of an entry are included; a lone "*" opens
60
+ * every host.
61
+ */
62
+ export const DEFAULT_WEBFETCH_DOMAINS = [
63
+ // CN search engines + content (parent domains cover every sibling subdomain)
64
+ "baidu.com", // www. search / baike. encyclopedia / tieba. — real sessions hit baike.baidu.com
65
+ // Baidu's OWN static + anti-spam CDN. Not a subdomain of baidu.com, so a
66
+ // same-site subresource policy can never infer it, and a page whose own
67
+ // bundle we block is a blank page we then report as "no content" — that is
68
+ // the bug this seed closes (measured 2026-09-23: baike.baidu.com/ rendered 0
69
+ // addressable nodes while the identical client with this host allowed
70
+ // rendered 260).
71
+ "bdimg.com", // bkssl. challenge scripts / resource. / static. asset bundles
72
+ "moegirl.org.cn", // mobile. term / mzh. main site — real sessions hit mzh
73
+ "bilibili.com", // search. / www. video pages / space.
74
+ "www.sogou.com",
75
+ "www.so.com",
76
+ "cn.bing.com",
77
+ "www.bing.com",
78
+ "zhihu.com", // CN Q&A
79
+ "juejin.cn", // CN dev community
80
+ "csdn.net", // CN dev blogs
81
+ "cnblogs.com", // CN dev blogs
82
+ "gitee.com", // CN code hosting
83
+ // international dev sources (reachable from CN, no API keys)
84
+ "github.com",
85
+ "api.github.com",
86
+ "raw.githubusercontent.com",
87
+ "gist.githubusercontent.com",
88
+ "ghproxy.net", // mainland mirror for github raw
89
+ "stackoverflow.com",
90
+ "npmjs.org", // registry. + www. package pages
91
+ "pypi.org",
92
+ "learn.microsoft.com",
93
+ ];
94
+ /**
95
+ * The honored-key registry — the single source of truth for keys, types,
96
+ * defaults and docs. Extend it when a new knob is wired: an unlisted real
97
+ * knob would be reported as "unknown" (a false positive), and a key missing
98
+ * here is missing from the generated template too.
32
99
  *
33
- * The first block mirrors `resolveTmConfig` (src/tm/config.ts) one-for-one;
34
- * the red-line block adds the three knobs that live OUTSIDE TmConfig
35
- * (envProtect / r6FineAsk / privateSpace) plus the four the design names as
36
- * file-overridable but that are read directly from process.env.
100
+ * `default` is the ONLY default source; `resolveConfig` (src/tm/config.ts)
101
+ * fills it and clamps `number` values to `min`/`max`. A `number` whose
102
+ * default is an integer is truncated to an integer; a fractional default
103
+ * (searchRelevanceFloor, retryJitter) keeps its fraction.
37
104
  */
38
105
  export const CONFIG_KEYS = [
39
- // ---- resolveTmConfig surface (src/tm/config.ts:379) ----
40
- { key: "offloadThreshold", env: "TM_OFFLOAD_THRESHOLD", type: "number" },
41
- { key: "previewLines", env: "TM_PREVIEW_LINES", type: "number" },
42
- { key: "previewMaxTokens", env: "TM_PREVIEW_MAX_TOKENS", type: "number" },
43
- { key: "fetchMaxLines", env: "TM_FETCH_MAX_LINES", type: "number" },
44
- { key: "blackboardDir", env: "TM_BLACKBOARD_DIR", type: "string" },
45
- { key: "trajectoryDir", env: "TM_TRAJECTORY_DIR", type: "string" },
46
- { key: "blackboardTtlDays", env: "TM_BLACKBOARD_TTL", type: "number" },
47
- { key: "bashReadonlyAllowed", env: "TM_BASH_READONLY_ALLOWED", type: "string[]" },
48
- { key: "webfetchAllowedDomains", env: "TM_WEBFETCH_ALLOWED_DOMAINS", type: "string[]" },
49
- { key: "memoryGlobalDir", env: "TM_MEMORY_GLOBAL_DIR", type: "string" },
50
- { key: "memorySessionTtlMin", env: "TM_MEMORY_SESSION_TTL_MIN", type: "number" },
51
- { key: "memoryMaxEntries", env: "TM_MEMORY_MAX_ENTRIES", type: "number" },
52
- { key: "memoryStaleDays", env: "TM_MEMORY_STALE_DAYS", type: "number" },
53
- { key: "memorySessionPersist", env: "TM_MEMORY_SESSION_PERSIST", type: "string" },
54
- { key: "searchDefaultEngine", env: "TM_SEARCH_DEFAULT_ENGINE", type: "string" },
55
- { key: "searchMaxHits", env: "TM_SEARCH_MAX_HITS", type: "number" },
56
- { key: "searchWeights", env: "TM_SEARCH_WEIGHTS", type: "record" },
57
- { key: "searchDisabledEngines", env: "TM_SEARCH_DISABLED_ENGINES", type: "string[]" },
58
- { key: "searchRelevanceFloor", env: "TM_SEARCH_RELEVANCE_FLOOR", type: "number" },
59
- { key: "offloadThresholdText", env: "TM_OFFLOAD_THRESHOLD_TEXT", type: "number" },
60
- { key: "offloadThresholdData", env: "TM_OFFLOAD_THRESHOLD_DATA", type: "number" },
61
- { key: "webCacheTtlSec", env: "TM_WEB_CACHE_TTL_SEC", type: "number" },
62
- { key: "joinMaxWaitMs", env: "TM_JOIN_MAX_WAIT_MS", type: "number" },
63
- { key: "boardMaxChars", env: "TM_BOARD_MAX_CHARS", type: "number" },
64
- { key: "boardMaxFiles", env: "TM_BOARD_MAX_FILES", type: "number" },
65
- { key: "taskOffload", env: "TM_TASK_OFFLOAD", type: "string" },
66
- { key: "storeReclaim", env: "TM_STORE_RECLAIM", type: "string" },
67
- { key: "askTimeoutFloorMin", env: "TM_ASK_TIMEOUT_FLOOR_MIN", type: "number" },
68
- { key: "bashTimeoutMaxMs", env: "TM_BASH_TIMEOUT_MAX_MS", type: "number" },
69
- { key: "bashTimeoutProbeMs", env: "TM_BASH_TIMEOUT_PROBE_MS", type: "number" },
70
- // ---- knobs read directly from process.env (design §4 names them file-overridable) ----
71
- { key: "nativeOffload", env: "TM_NATIVE_OFFLOAD", type: "string" },
72
- { key: "ptcWebBridge", env: "TM_PTC_WEB_BRIDGE", type: "string" },
73
- { key: "hitBlacklist", env: "TM_HIT_BLACKLIST", type: "string[]" },
74
- { key: "envProtectExtraDeny", env: "TM_ENV_PROTECT_EXTRA_DENY", type: "string" },
75
- { key: "shellEnv", env: "TM_SHELL_ENV", type: "string" },
76
- { key: "agentTemperature", env: "TM_AGENT_TEMPERATURE", type: "string" },
77
- { key: "compactionContext", env: "TM_COMPACTION_CONTEXT", type: "string" },
78
- // ---- RED-LINE knobs: a file value is ignored, always env/default ----
106
+ // ---- offload / preview / store ----
107
+ { key: "offloadThreshold", type: "number", default: 2000, min: 0, max: 10_000_000, doc: "卸载阈值(估算 token;等于阈值也卸载)。" },
108
+ { key: "previewLines", type: "number", default: 20, min: 1, max: 1000, doc: "预览构建器最多扫描的原始行数。" },
109
+ { key: "previewMaxTokens", type: "number", default: 80, min: 10, max: 100_000, doc: "预览的硬上限(估算 token)。" },
110
+ { key: "fetchMaxLines", type: "number", default: 2000, min: 1, max: 1_000_000, doc: "tm_fetch 单段最多返回的行数。" },
111
+ { key: "blackboardDir", type: "string", default: "", doc: "运行载荷存储目录;空 = 自动(<repo>/.git/opencode-team/blackboard)。" },
112
+ { key: "trajectoryDir", type: "string", default: "", doc: "轨迹存储目录;空 = 自动(<repo>/.git/opencode-team/trajectory)。" },
113
+ { key: "blackboardTtlDays", type: "number", default: 7, min: 1, max: 365, doc: "句柄 TTL(天),也是过期运行目录的清理周期。" },
114
+ { key: "memoryGlobalDir", type: "string", default: "", doc: "tm_memory 全局作用域目录;空 = 自动(~/.opencode-team/memories/global)。" },
115
+ { key: "memorySessionTtlMin", type: "number", default: 240, min: 1, max: 100_000, doc: "tm_memory 会话作用域条目 TTL(分钟)。" },
116
+ { key: "memoryMaxEntries", type: "number", default: 200, min: 1, max: 100_000, doc: "tm_memory 每个作用域的最大条目数;超限时 add 报错并提示 compact/forget。" },
117
+ { key: "memoryStaleDays", type: "number", default: 30, min: 0, max: 3650, doc: "tm_memory 陈旧标记天数;0 = 关闭 [stale Nd] 标记。" },
118
+ { key: "memorySessionPersist", type: "string", default: "", doc: "tm_memory 会话持久化:空 = 仅进程内;\"1\" = 同时落盘。" },
119
+ // ---- search ----
120
+ { key: "searchDefaultEngine", type: "string", default: "auto", doc: "tm_search 默认引擎;auto = 按查询分类并行扇出。" },
121
+ { key: "searchMaxHits", type: "number", default: 10, min: 3, max: 30, doc: "每个引擎腿与最终融合列表保留的命中数。" },
122
+ { key: "searchWeights", type: "record", default: {}, doc: "按引擎覆盖融合权重,如 {\"bing\": 0.2};未列出的沿用内置表。" },
123
+ { key: "searchDisabledEngines", type: "string[]", default: [], doc: "从引擎名册与所有 auto 路由中移除的引擎名。" },
124
+ { key: "searchRelevanceFloor", type: "number", default: 0.35, min: 0, max: 1, doc: "零重叠命中的权重系数(降权保留,不删除)。" },
125
+ { key: "hitBlacklist", type: "string[]", default: [], doc: "搜索结果里额外屏蔽的域名(与内置 maimai.cn 合并)。" },
126
+ // ---- offload tiering / web cache ----
127
+ { key: "offloadThresholdText", type: "number", default: 4000, min: 0, max: 10_000_000, doc: "文本/日志类卸载阈值;全局阈值显式设置且本键未设时继承全局。" },
128
+ { key: "offloadThresholdData", type: "number", default: 2000, min: 0, max: 10_000_000, doc: "json/csv/代码/二进制类卸载阈值;继承规则同上。" },
129
+ { key: "webCacheTtlSec", type: "number", default: 300, min: 0, max: 86_400, doc: "URL 级缓存 TTL(秒);0 = 关闭。" },
130
+ // ---- join / board ----
131
+ { key: "joinMaxWaitMs", type: "number", default: 60_000, min: 0, max: 600_000, doc: "tm_join 单次有界等待的上限(毫秒)。" },
132
+ { key: "boardMaxChars", type: "number", default: 200_000, min: 1_000, max: 2_000_000, doc: "tm_board_write 单个文件的字符上限。" },
133
+ { key: "boardMaxFiles", type: "number", default: 200, min: 4, max: 2_000, doc: "tm_board_write 每个会话目录的文件数上限。" },
134
+ // ---- task offload / store reclaim ----
135
+ { key: "taskOffload", type: "string", default: "on", enum: ["on", "off"], doc: "宿主后台子代理的大回复是否卸载为预览 + tm_join 指针;off = 原样注入。" },
136
+ { key: "storeReclaim", type: "string", default: "on", enum: ["on", "off"], doc: "启动时回收升级遗留的存储分片;off = 保留磁盘现状(测试用)。" },
137
+ // ---- bash timeout ----
138
+ { key: "bashTimeoutMaxMs", type: "number", default: 0, min: 0, max: 3_600_000, doc: "内置 shell 工具 timeout 参数的全局上限(毫秒);0 = 不限。" },
139
+ { key: "bashTimeoutProbeMs", type: "number", default: 60_000, min: 0, max: 600_000, doc: "只读探针命令的 timeout 上限(毫秒);0 = 关闭。" },
140
+ // ---- orphaned (kept so an existing config still parses) ----
141
+ { key: "askTimeoutFloorMin", type: "number", default: 1, min: 1, max: 1440, doc: "(已孤儿)v1 审批门 ask 超时的下限(分钟);保留以便旧配置继续解析。" },
142
+ // ---- v1-only knobs (listed + parseable; no v2 reader) ----
143
+ { key: "agentTemperature", type: "string", default: "", doc: "(v1-only)按角色覆盖 temperature,如 reviewer=0.05;team=0.4。" },
144
+ { key: "compactionContext", type: "string", default: "on", enum: ["on", "off"], doc: "(v1-only)压缩时推送必须存活的上下文清单。" },
145
+ { key: "shellEnv", type: "string", default: "", doc: "(v1-only)注入 shell 的 K=V;K2=V2 白名单透传。" },
146
+ { key: "ptcWebBridge", type: "string", default: "on", enum: ["on", "off"], doc: "(v1-only)tm_ptc_run 的 web 桥。" },
147
+ // ---- native offload / probe chain ----
148
+ { key: "nativeOffload", type: "string", default: "on", enum: ["on", "off"], doc: "宿主原生工具(read/grep/shell…)的大结果是否按 JIT 治理卸载;off = 原样进上下文。" },
149
+ { key: "nativeSnapshotMaxTokens", type: "number", default: 1200, min: 100, max: 20_000, doc: "原生浏览器快照按寻址行保留的 token 预算。" },
150
+ { key: "nativeReportMaxTokens", type: "number", default: 1600, min: 200, max: 20_000, doc: "原生报告形结果按表格保留的 token 预算。" },
151
+ { key: "probeChain", type: "string", default: "on", enum: ["on", "off"], doc: "连续原生 read/grep/glob/shell 后追加一行 Code Mode 采用提示;off = 关闭。" },
152
+ { key: "probeChainAfter", type: "number", default: 3, min: 0, max: 1000, doc: "连续多少次原生调用后开始提示;0 = 关闭。" },
153
+ // ---- v2 request layers ----
154
+ { key: "maxConcurrentSubagents", type: "number", default: 3, min: 0, max: 100, doc: "并发 subagent 上限;0 = 不限(关闭);负数按 0 处理。" },
155
+ { key: "v2CodeMode", type: "string", default: "", doc: "v2 工具交付:direct = 发送 options.codemode=false;空 = 目录模式。" },
156
+ { key: "prune", type: "string", default: "on", enum: ["on", "off"], doc: "上下文裁剪(已结算消息替换为指针);off = 关闭。" },
157
+ { key: "pruneAtPercent", type: "number", default: 70, min: 40, max: 90, doc: "上下文裁剪启动的窗口占比(%)。" },
158
+ { key: "pruneKeepTailPercent", type: "number", default: 40, min: 0, max: 90, doc: "裁剪时尾部逐字保留的窗口占比(%)。" },
159
+ { key: "retry", type: "string", default: "on", enum: ["on", "off"], doc: "错峰重试(识别限流 + 注入等待 + 冷却);off = 关闭。" },
160
+ { key: "retryBaseMs", type: "number", default: 5000, min: 1, max: 3_600_000, doc: "重试退避基数(毫秒)。" },
161
+ { key: "retryMaxMs", type: "number", default: 60_000, min: 1, max: 3_600_000, doc: "重试退避上限(毫秒)。" },
162
+ { key: "retryJitter", type: "number", default: 0.3, min: 0, max: 0.95, doc: "重试退避抖动比例。" },
163
+ { key: "retryBreakAfter", type: "number", default: 5, min: 1, max: 1000, doc: "连续多少次错误后触发断路器。" },
164
+ { key: "retryCooldownMs", type: "number", default: 60_000, min: 0, max: 3_600_000, doc: "断路器冷却时长(毫秒)。" },
165
+ { key: "splitAdvice", type: "string", default: "on", enum: ["on", "off"], doc: "派发 brief 过大时注入拆分建议;off = 关闭。" },
166
+ { key: "splitBriefTokens", type: "number", default: 4000, min: 200, max: 200_000, doc: "触发拆分建议的 brief token 阈值。" },
167
+ { key: "splitMaxCriteria", type: "number", default: 3, min: 1, max: 50, doc: "拆分建议里每条交付的验收标准上限。" },
168
+ { key: "v2BrowserGate", type: "string", default: "on", enum: ["on", "off"], doc: "原生 browser_* 目录的域名/地址/R6 门禁;off = 关闭。" },
169
+ { key: "ledgerMaxItems", type: "number", default: 200, min: 10, max: 100_000, doc: "tm_ledger 每个会话的最大条目数。" },
170
+ // ---- RED-LINE knobs: honored ONLY in the global file (D1) ----
79
171
  {
80
172
  key: "envProtect",
81
- env: "TM_ENV_PROTECT",
82
173
  type: "string",
174
+ default: "strict",
83
175
  redLine: true,
84
176
  redLineReason: "R6 判定模式,off 即关掉环境防护;项目文件可被提交共享,不得关掉红线",
177
+ doc: "R6 环境防护模式(strict/standard/off)。",
85
178
  },
86
179
  {
87
180
  key: "r6FineAsk",
88
- env: "TM_R6_FINE_ASK",
89
181
  type: "string",
182
+ default: "",
90
183
  redLine: true,
91
184
  redLineReason: "R6 ask 策略,决定每条命令是否走细粒度判定;文件不得放宽",
185
+ doc: "R6 细粒度 ask 策略;off = 每条 shell 命令都升为 ask。",
92
186
  },
93
187
  {
94
188
  key: "privateSpace",
95
- env: "TM_PRIVATE_SPACE",
96
189
  type: "string",
190
+ default: "deny",
97
191
  redLine: true,
98
192
  redLineReason: "地址红线门,allow 会放开整段私网;文件不得放宽",
193
+ doc: "私网地址策略(allow/deny/ask)。",
99
194
  },
100
195
  {
101
196
  key: "webfetchAllowedDomains",
102
- env: "TM_WEBFETCH_ALLOWED_DOMAINS",
103
197
  type: "string[]",
198
+ default: DEFAULT_WEBFETCH_DOMAINS,
104
199
  redLine: true,
105
200
  redLineReason: "网络出网白名单;项目文件可被提交共享,不得放宽",
201
+ doc: "网络出网白名单(含子域;\"*\" = 任意主机)。",
106
202
  },
107
203
  {
108
204
  key: "bashReadonlyAllowed",
109
- env: "TM_BASH_READONLY_ALLOWED",
110
205
  type: "string[]",
206
+ default: DEFAULT_BASH_READONLY_ALLOWED,
111
207
  redLine: true,
112
208
  redLineReason: "P3 只读门;放宽即扩大可执行命令面",
209
+ doc: "P3 只读命令白名单(tm_bash / shell 探针)。",
113
210
  },
114
211
  ];
115
212
  /** The red-line keys, derived from the registry (single source of truth). */
@@ -218,7 +315,7 @@ export function parseJsonc(src) {
218
315
  // ---------------------------------------------------------------------------
219
316
  // Merge
220
317
  // ---------------------------------------------------------------------------
221
- function isPlainObject(v) {
318
+ export function isPlainObject(v) {
222
319
  return typeof v === "object" && v !== null && !Array.isArray(v);
223
320
  }
224
321
  function typeOk(type, v) {
@@ -233,11 +330,6 @@ function typeOk(type, v) {
233
330
  return isPlainObject(v) && Object.values(v).every((x) => typeof x === "number");
234
331
  }
235
332
  }
236
- /** `TM_CONFIG_ENV_ONLY` is truthy on 1/true/on/yes (case-insensitive). */
237
- function envOnlyFromEnv(env) {
238
- const raw = env.TM_CONFIG_ENV_ONLY;
239
- return typeof raw === "string" && /^(1|true|on|yes)$/i.test(raw.trim());
240
- }
241
333
  function projectLayerList(projectLayer) {
242
334
  if (projectLayer == null)
243
335
  return [];
@@ -251,13 +343,12 @@ function projectLayerList(projectLayer) {
251
343
  return out;
252
344
  }
253
345
  /**
254
- * Resolve the layered config. Pure: no IO, no globals read except the `env`
255
- * record handed in. See the module header for the three rules.
346
+ * Resolve the layered config. Pure: no IO, no globals. See the module
347
+ * header for the three rules.
256
348
  */
257
349
  export function resolveLayeredConfig(input) {
258
- const { env } = input;
259
350
  const exempt = new Set(input.exempt ?? RED_LINE_EXEMPT_KEYS);
260
- const envOnlyActive = input.envOnly ?? envOnlyFromEnv(env);
351
+ const envOnlyActive = input.envOnly ?? false;
261
352
  // Ordered low→high. envOnly removes every file layer BEFORE any parse.
262
353
  const fileLayers = [];
263
354
  if (!envOnlyActive) {
@@ -284,30 +375,23 @@ export function resolveLayeredConfig(input) {
284
375
  continue;
285
376
  }
286
377
  for (const [key, value] of Object.entries(obj)) {
287
- if (exempt.has(key)) {
288
- ignoredRedLineKeys.push({ key, layer: layer.name, value });
289
- continue;
290
- }
291
378
  const spec = KEY_BY_NAME.get(key);
292
379
  if (!spec) {
293
380
  unknownKeys.push({ key, layer: layer.name });
294
381
  continue;
295
382
  }
383
+ // D1: a red-line key is honored ONLY in the global file.
384
+ if (spec.redLine && layer.name !== "global") {
385
+ ignoredRedLineKeys.push({ key, layer: layer.name, value });
386
+ continue;
387
+ }
296
388
  if (!typeOk(spec.type, value))
297
389
  continue; // drop this key from THIS layer only
298
390
  fileValues.set(key, { value, source: layer.name });
299
391
  }
300
392
  }
301
- // env is the lowest layer; files override it.
302
393
  const values = {};
303
394
  const perKeySource = {};
304
- for (const spec of CONFIG_KEYS) {
305
- const raw = env[spec.env];
306
- if (typeof raw === "string" && raw.trim() !== "") {
307
- values[spec.key] = raw;
308
- perKeySource[spec.key] = "env";
309
- }
310
- }
311
395
  for (const [key, { value, source }] of fileValues) {
312
396
  values[key] = value;
313
397
  perKeySource[key] = source;
@@ -1 +1 @@
1
- {"version":3,"file":"config-layers.js","sourceRoot":"","sources":["../../src/tm/config-layers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-layers.js","sourceRoot":"","sources":["../../src/tm/config-layers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The global `team-mode.jsonc` template + its idempotent writer.
3
+ *
4
+ * `renderConfigTemplate()` walks `CONFIG_KEYS` and nothing else, so a comment,
5
+ * a key and its default can never drift from the registry. `ensureGlobalConfig`
6
+ * writes it ATOMICALLY (tmp + rename) and ONLY when the file is absent — an
7
+ * existing file is never overwritten (the user's edits are theirs).
8
+ *
9
+ * The plugin calls this at boot (see `createTmTools`), so a fresh install gets
10
+ * a fully-commented config listing every key. `TM_CONFIG_AUTOCREATE=off` (an
11
+ * internal/test switch) or the plugin option `autoCreate:false` turns it off.
12
+ */
13
+ /** Render the full global config file (JSONC, every registry key listed).
14
+ *
15
+ * Every key is written as a COMMENT, so the auto-created file sets NOTHING:
16
+ * the registry defaults answer, and a personality's `configDefaults` (v2's
17
+ * `webfetchAllowedDomains: ["*"]`) is not shadowed by a file nobody edited.
18
+ * A user uncomments the keys they want to change. The file is valid JSONC
19
+ * (`{}` once the comments are masked). */
20
+ export declare function renderConfigTemplate(): string;
21
+ export type AutoCreateState = "created" | "present" | "off" | "failed";
22
+ /**
23
+ * Ensure the global config file exists. `autoCreate:false` writes nothing
24
+ * and reports `off`. An existing file is left byte-for-byte untouched
25
+ * (`present`). A missing one is written atomically (`created`). A write
26
+ * that THROWS reports `failed` — distinct from `present`, so the boot row
27
+ * does not claim a file exists when the write never landed.
28
+ */
29
+ export declare function ensureGlobalConfig(globalDir: string, opts?: {
30
+ autoCreate?: boolean;
31
+ }): AutoCreateState;
32
+ //# sourceMappingURL=config-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-template.d.ts","sourceRoot":"","sources":["../../src/tm/config-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH;;;;;;2CAM2C;AAC3C,wBAAgB,oBAAoB,IAAI,MAAM,CAU7C;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAA;AAEtE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,eAAe,CAoB1G"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * The global `team-mode.jsonc` template + its idempotent writer.
3
+ *
4
+ * `renderConfigTemplate()` walks `CONFIG_KEYS` and nothing else, so a comment,
5
+ * a key and its default can never drift from the registry. `ensureGlobalConfig`
6
+ * writes it ATOMICALLY (tmp + rename) and ONLY when the file is absent — an
7
+ * existing file is never overwritten (the user's edits are theirs).
8
+ *
9
+ * The plugin calls this at boot (see `createTmTools`), so a fresh install gets
10
+ * a fully-commented config listing every key. `TM_CONFIG_AUTOCREATE=off` (an
11
+ * internal/test switch) or the plugin option `autoCreate:false` turns it off.
12
+ */
13
+ import * as fs from "node:fs";
14
+ import * as path from "node:path";
15
+ import { CONFIG_KEYS } from "./config-layers.js";
16
+ import { CONFIG_FILE_NAME } from "./config-files.js";
17
+ /** The file header — Chinese, and the only prose the template carries. */
18
+ const HEADER = [
19
+ "// team-mode.jsonc — TeamMode 唯一配置源",
20
+ "// 本文件由插件首次启动时自动生成;删除后下次启动会重新生成。",
21
+ "// 层序:全局(本文件) < 项目(<repo>/team-mode.jsonc 或 <repo>/.opencode/team-mode.jsonc)",
22
+ "// 红线键(redLine)只能在本全局文件里设置;项目文件设置会被忽略。",
23
+ ].join("\n");
24
+ /** Render the full global config file (JSONC, every registry key listed).
25
+ *
26
+ * Every key is written as a COMMENT, so the auto-created file sets NOTHING:
27
+ * the registry defaults answer, and a personality's `configDefaults` (v2's
28
+ * `webfetchAllowedDomains: ["*"]`) is not shadowed by a file nobody edited.
29
+ * A user uncomments the keys they want to change. The file is valid JSONC
30
+ * (`{}` once the comments are masked). */
31
+ export function renderConfigTemplate() {
32
+ const lines = [HEADER, "{"];
33
+ CONFIG_KEYS.forEach((spec, i) => {
34
+ const doc = spec.redLine ? `${spec.doc}(红线:仅全局)` : spec.doc;
35
+ lines.push(` // ${doc}`);
36
+ const comma = i === CONFIG_KEYS.length - 1 ? "" : ",";
37
+ lines.push(` // ${JSON.stringify(spec.key)}: ${JSON.stringify(spec.default)}${comma}`);
38
+ });
39
+ lines.push("}");
40
+ return lines.join("\n") + "\n";
41
+ }
42
+ /**
43
+ * Ensure the global config file exists. `autoCreate:false` writes nothing
44
+ * and reports `off`. An existing file is left byte-for-byte untouched
45
+ * (`present`). A missing one is written atomically (`created`). A write
46
+ * that THROWS reports `failed` — distinct from `present`, so the boot row
47
+ * does not claim a file exists when the write never landed.
48
+ */
49
+ export function ensureGlobalConfig(globalDir, opts = {}) {
50
+ if (opts.autoCreate === false)
51
+ return "off";
52
+ const file = path.join(globalDir, CONFIG_FILE_NAME);
53
+ try {
54
+ if (fs.existsSync(file))
55
+ return "present";
56
+ }
57
+ catch {
58
+ /* fall through to the write attempt */
59
+ }
60
+ try {
61
+ fs.mkdirSync(globalDir, { recursive: true });
62
+ const tmp = `${file}.tmp-${process.pid}-${Date.now()}`;
63
+ fs.writeFileSync(tmp, renderConfigTemplate(), "utf8");
64
+ fs.renameSync(tmp, file);
65
+ return "created";
66
+ }
67
+ catch {
68
+ // A read-only config dir must not cost the session its tools; the file
69
+ // simply stays absent and the registry defaults answer. Reported as
70
+ // `failed` so the boot row does not read as "a file is there".
71
+ return "failed";
72
+ }
73
+ }
74
+ //# sourceMappingURL=config-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-template.js","sourceRoot":"","sources":["../../src/tm/config-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,0EAA0E;AAC1E,MAAM,MAAM,GAAG;IACb,qCAAqC;IACrC,kCAAkC;IAClC,+EAA+E;IAC/E,wCAAwC;CACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ;;;;;;2CAM2C;AAC3C,MAAM,UAAU,oBAAoB;IAClC,MAAM,KAAK,GAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA;QAC3D,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAA;QACzB,MAAM,KAAK,GAAG,CAAC,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QACrD,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC,CAAA;IACzF,CAAC,CAAC,CAAA;IACF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAChC,CAAC;AAID;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,OAAiC,EAAE;IACvF,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;IACnD,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;IACD,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC5C,MAAM,GAAG,GAAG,GAAG,IAAI,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QACtD,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,oBAAoB,EAAE,EAAE,MAAM,CAAC,CAAA;QACrD,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACxB,OAAO,SAAS,CAAA;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,qEAAqE;QACrE,+DAA+D;QAC/D,OAAO,QAAQ,CAAA;IACjB,CAAC;AACH,CAAC"}