@sema-agent/server 7.43.0 → 7.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/USAGE.md +18 -0
  2. package/dist/adoption/plan.js +31 -192
  3. package/dist/adoption/quiesce.js +3 -86
  4. package/dist/adoption/runner.js +3 -140
  5. package/dist/adoption/sql.js +0 -74
  6. package/dist/adoption/wire.js +0 -80
  7. package/dist/approval-ask-machine.js +0 -75
  8. package/dist/approval-card.js +0 -323
  9. package/dist/approval-deny-reasons.js +0 -42
  10. package/dist/approval-hmac.js +0 -35
  11. package/dist/approval-reconciler.js +8 -166
  12. package/dist/approval.js +4 -67
  13. package/dist/audit.js +1 -44
  14. package/dist/auth-bridge.js +4 -47
  15. package/dist/auth-keys.js +0 -23
  16. package/dist/bake-runner/main.js +4 -65
  17. package/dist/bake-runner/protocol.js +3 -58
  18. package/dist/bake-runner/runner.js +5 -91
  19. package/dist/bench/l8/artifact.js +2 -61
  20. package/dist/bench/l8/escape.js +0 -25
  21. package/dist/bench/l8/index.js +0 -14
  22. package/dist/bench/l8/probes.js +0 -60
  23. package/dist/bench/l8/run-probes.js +2 -45
  24. package/dist/bench/s1/arms.js +14 -189
  25. package/dist/bench/s1/live-deps.js +11 -253
  26. package/dist/bench/s1/oracle.js +1 -36
  27. package/dist/bench/s1/repair-oracle-adapter.js +0 -30
  28. package/dist/bench/s1/reviewer.js +0 -34
  29. package/dist/bench/s1/row.js +0 -62
  30. package/dist/bench/s1/run-firm.js +4 -70
  31. package/dist/bench/s1/runner-ctx.js +0 -40
  32. package/dist/bench/s1/tasks.js +0 -115
  33. package/dist/boot/adoption.js +0 -20
  34. package/dist/boot/budget-tracing.js +3 -55
  35. package/dist/boot/config-center.js +43 -551
  36. package/dist/boot/coordinators.js +1 -69
  37. package/dist/boot/crash-last.js +0 -18
  38. package/dist/boot/deferred-sandbox-path-env.js +3 -119
  39. package/dist/boot/execution-env.js +5 -171
  40. package/dist/boot/governance-seams.js +0 -92
  41. package/dist/boot/leader.js +0 -69
  42. package/dist/boot/limit-sync.js +0 -2
  43. package/dist/boot/memory-boundary.js +3 -91
  44. package/dist/boot/org-memory.js +1 -25
  45. package/dist/boot/parked-revive-gate.js +0 -150
  46. package/dist/boot/permission-rules-audit.js +1 -56
  47. package/dist/boot/reapers.js +15 -273
  48. package/dist/boot/resolve-spec.js +9 -768
  49. package/dist/boot/retention-lane.js +4 -87
  50. package/dist/boot/runner-deps.js +3 -297
  51. package/dist/boot/runtime-caps.js +0 -40
  52. package/dist/boot/session-faces.js +2 -133
  53. package/dist/boot/shutdown.js +9 -83
  54. package/dist/boot/side-query-lane.js +2 -137
  55. package/dist/boot/stores.js +15 -215
  56. package/dist/boot/task-list-lane.js +0 -18
  57. package/dist/boot/webfetch-summarize-lane.js +0 -47
  58. package/dist/boot/workflow-orchestration.js +3 -99
  59. package/dist/boot-reclaim.js +0 -20
  60. package/dist/bounded-session-map.js +0 -19
  61. package/dist/brain.js +2 -139
  62. package/dist/budget.js +9 -244
  63. package/dist/capabilities/builtin-tools.js +0 -3
  64. package/dist/capabilities/center-plugins.js +6 -51
  65. package/dist/capabilities/center-prompts.js +6 -71
  66. package/dist/capabilities/code-review-council.js +7 -40
  67. package/dist/capabilities/collab-workflows.js +1 -44
  68. package/dist/capabilities/hands-lane.js +0 -65
  69. package/dist/capabilities/memory-notice.js +0 -70
  70. package/dist/capabilities/prompt.js +0 -14
  71. package/dist/capabilities/prompts/code-review.js +0 -14
  72. package/dist/capabilities/prompts/identity.js +0 -6
  73. package/dist/capabilities/prompts/team.js +0 -4
  74. package/dist/capabilities/repo-tools.js +0 -34
  75. package/dist/capabilities/sandbox-file-send.js +3 -92
  76. package/dist/capabilities/scenarios.d.ts +0 -1
  77. package/dist/capabilities/scenarios.js +18 -279
  78. package/dist/capabilities/select-environment-tool.js +0 -32
  79. package/dist/capabilities/send-user-file-tool.js +2 -66
  80. package/dist/capabilities/skills.d.ts +1 -2
  81. package/dist/capabilities/skills.js +3 -21
  82. package/dist/capabilities/team.d.ts +3 -11
  83. package/dist/capabilities/team.js +3 -51
  84. package/dist/capabilities/tool-defer.js +0 -3
  85. package/dist/config-center/apply-effective.js +15 -330
  86. package/dist/config-center/apply-ledger.js +5 -38
  87. package/dist/config-center/facade.js +0 -41
  88. package/dist/config-center/hot-keys-registry.js +0 -20
  89. package/dist/config-center/http-client.js +2 -125
  90. package/dist/config-center/mcp-revocation.js +2 -34
  91. package/dist/config-center/read-face.js +0 -59
  92. package/dist/config-center/restart-signal.js +1 -85
  93. package/dist/config-center/skills-mcp.d.ts +1 -1
  94. package/dist/config-center/skills-mcp.js +9 -76
  95. package/dist/config-center/stage-limits.js +8 -35
  96. package/dist/config-invariants.js +0 -16
  97. package/dist/config-lkg.js +0 -42
  98. package/dist/config-provider.js +3 -186
  99. package/dist/config-types.js +0 -5
  100. package/dist/config.js +107 -1145
  101. package/dist/degenerate-instrument.js +3 -67
  102. package/dist/deployment-governance.js +0 -124
  103. package/dist/digest-form.js +0 -12
  104. package/dist/elicitation.js +3 -86
  105. package/dist/env-facts.js +7 -75
  106. package/dist/fleet/fleet-bus.js +34 -507
  107. package/dist/fleet/fleet-reconciler.js +9 -149
  108. package/dist/fleet/fleet-terminal-window.js +10 -178
  109. package/dist/fleet/subagent-tail-bus.js +3 -72
  110. package/dist/fleet-client.js +10 -70
  111. package/dist/fleet-lease.js +5 -79
  112. package/dist/git-api-kind.js +0 -3
  113. package/dist/governance-ask-marks.js +2 -78
  114. package/dist/hooks/branch-transcript.js +0 -74
  115. package/dist/hooks/cc-agent-hook-prompt.js +0 -29
  116. package/dist/hooks/cc-stop-prompt.js +1 -46
  117. package/dist/hooks/hook-llm.js +1 -53
  118. package/dist/hooks/hook-runner.js +20 -414
  119. package/dist/http/active-run-conflict.js +4 -129
  120. package/dist/http/cursor-fingerprint.d.ts +5 -0
  121. package/dist/http/cursor-fingerprint.js +5 -0
  122. package/dist/http/idempotency.js +0 -37
  123. package/dist/http/principal-gate.js +3 -40
  124. package/dist/http/route-ctx.js +0 -9
  125. package/dist/http/routes/a2a-serve.js +7 -319
  126. package/dist/http/routes/admin-config-refresh.js +0 -4
  127. package/dist/http/routes/admin-drain.js +0 -10
  128. package/dist/http/routes/adoption.js +1 -29
  129. package/dist/http/routes/agents-roster.js +1 -47
  130. package/dist/http/routes/approvals-assistant.js +32 -395
  131. package/dist/http/routes/attachments.js +4 -22
  132. package/dist/http/routes/capabilities.js +3 -420
  133. package/dist/http/routes/diagnostics.js +1 -81
  134. package/dist/http/routes/fleet.js +9 -185
  135. package/dist/http/routes/images.js +14 -239
  136. package/dist/http/routes/leader.js +0 -13
  137. package/dist/http/routes/memory-bundle.js +1 -61
  138. package/dist/http/routes/memory-policy.js +9 -99
  139. package/dist/http/routes/notify-wake.js +3 -37
  140. package/dist/http/routes/observability.js +2 -19
  141. package/dist/http/routes/retention-ops.js +2 -34
  142. package/dist/http/routes/rules.js +1 -93
  143. package/dist/http/routes/runs.js +64 -873
  144. package/dist/http/routes/session-sync.js +19 -258
  145. package/dist/http/routes/sessions-list.js +17 -43
  146. package/dist/http/routes/sessions.js +34 -226
  147. package/dist/http/routes/shared-memory.js +5 -36
  148. package/dist/http/routes/side-query.js +1 -87
  149. package/dist/http/routes/tasks.js +52 -722
  150. package/dist/http/routes/trace-usage.js +32 -195
  151. package/dist/http/routes/workflows.js +19 -195
  152. package/dist/http/run-meta.js +0 -6
  153. package/dist/http/send.js +0 -32
  154. package/dist/http/server.js +92 -1597
  155. package/dist/http/sse-lifecycle.js +2 -13
  156. package/dist/http/sse-log.js +3 -48
  157. package/dist/http/tar.js +5 -21
  158. package/dist/http/verify-rounds.js +0 -5
  159. package/dist/http/wire-gate.js +0 -9
  160. package/dist/http/workspace-content.js +0 -10
  161. package/dist/images/bake-validate.js +1 -70
  162. package/dist/images/manifest.js +1 -6
  163. package/dist/index.js +0 -21
  164. package/dist/key-resolver.js +2 -17
  165. package/dist/leader/diffout.js +1 -20
  166. package/dist/leader/diffup.js +0 -47
  167. package/dist/leader/endpoint.js +2 -57
  168. package/dist/leader/fanout.js +3 -45
  169. package/dist/leader/grader-env-factory.js +3 -72
  170. package/dist/leader/leader.js +5 -156
  171. package/dist/leader/merge.js +8 -115
  172. package/dist/leader/planner.js +3 -54
  173. package/dist/leader/repair-oracle.js +1 -60
  174. package/dist/leader/repair-wire.js +2 -79
  175. package/dist/leader/wire.js +8 -307
  176. package/dist/lsp/e2b-bridge.js +4 -64
  177. package/dist/lsp/e2b-manager.js +6 -94
  178. package/dist/lsp/lsp-frames.js +0 -12
  179. package/dist/lsp/manager.js +4 -96
  180. package/dist/lsp/ws-transport.js +5 -55
  181. package/dist/lsp-evict.js +1 -15
  182. package/dist/main.js +57 -765
  183. package/dist/memory-bundle-engine.js +0 -55
  184. package/dist/memory-export.js +0 -4
  185. package/dist/memory-posture.js +1 -15
  186. package/dist/memory-scope.js +11 -148
  187. package/dist/memory-sync-client.js +2 -44
  188. package/dist/memory-sync.js +1 -80
  189. package/dist/model-select.js +3 -80
  190. package/dist/observability/cost-quota.js +1 -17
  191. package/dist/observability/cost-taxonomy.js +0 -34
  192. package/dist/observability/fail-open.js +7 -86
  193. package/dist/observability/logger.js +0 -6
  194. package/dist/observability/metrics.js +0 -94
  195. package/dist/observability/otel-exporter.js +3 -13
  196. package/dist/observability/principal-context.js +0 -9
  197. package/dist/observability/prompt-manifest.js +1 -37
  198. package/dist/observability/rate-limit.js +0 -4
  199. package/dist/observability/secret-env-scrub.js +2 -56
  200. package/dist/observability/tool-trace.js +1 -70
  201. package/dist/orchestration/hardened-vm-runner.js +4 -118
  202. package/dist/orchestration/hardened-vm-worker-runner.js +1 -26
  203. package/dist/orchestration/hardened-vm-worker.js +0 -27
  204. package/dist/orchestration/subagent-steer.js +1 -45
  205. package/dist/orchestration/workflow-agent-steer.js +1 -80
  206. package/dist/orchestration/workflow-completion-inbox.js +32 -285
  207. package/dist/orchestration/workflow-notify-journal.js +16 -259
  208. package/dist/org-memory-admission.js +3 -47
  209. package/dist/parent-watch.js +2 -48
  210. package/dist/parked-decide.js +1 -109
  211. package/dist/per-task-image.js +0 -57
  212. package/dist/plan-cache-probe.js +3 -27
  213. package/dist/plugins/adoption-log-sql.js +2 -119
  214. package/dist/plugins/approval-ask-store-memory.js +3 -38
  215. package/dist/plugins/approval-ask-store-sql.js +6 -188
  216. package/dist/plugins/approval-exemption-store.js +2 -28
  217. package/dist/plugins/background-agent-store-sql.js +4 -105
  218. package/dist/plugins/background-shell-support.js +14 -122
  219. package/dist/plugins/blob-backend.js +6 -169
  220. package/dist/plugins/breaker-state-sql.js +8 -46
  221. package/dist/plugins/caching-session-store.js +4 -106
  222. package/dist/plugins/checkpoint-store-sql.js +18 -505
  223. package/dist/plugins/e2b-orphan-reclaim.js +0 -45
  224. package/dist/plugins/file-outcome-sink.js +0 -9
  225. package/dist/plugins/file-resume-anchor-store.js +4 -43
  226. package/dist/plugins/file-run-store.js +26 -364
  227. package/dist/plugins/file-snapshot-store-sql.js +10 -181
  228. package/dist/plugins/fork-routing-session-store.js +8 -111
  229. package/dist/plugins/host-platform.js +2 -91
  230. package/dist/plugins/image-bake-store-sql.js +7 -250
  231. package/dist/plugins/image-index-sql.js +4 -123
  232. package/dist/plugins/k8s-bg-scripts.js +4 -88
  233. package/dist/plugins/k8s-exec-protocol.js +0 -41
  234. package/dist/plugins/leader-run-store-sql.js +0 -101
  235. package/dist/plugins/local-checkpoint-store.js +8 -128
  236. package/dist/plugins/local-session-store.js +34 -296
  237. package/dist/plugins/local-task-attachment-store.js +2 -16
  238. package/dist/plugins/mailbox-store-sql.js +8 -65
  239. package/dist/plugins/memory-embedder-fingerprint.js +5 -166
  240. package/dist/plugins/memory-embedder.js +4 -70
  241. package/dist/plugins/memory-engine-pg.js +6 -170
  242. package/dist/plugins/memory-engine-tidb.js +7 -155
  243. package/dist/plugins/memory-engine-vector-util.js +0 -10
  244. package/dist/plugins/memory-key-guards.js +0 -34
  245. package/dist/plugins/memory-origin-law.js +0 -187
  246. package/dist/plugins/memory-resume-anchor-store.js +0 -17
  247. package/dist/plugins/memory-run-store.js +12 -89
  248. package/dist/plugins/memory-session-policy-store.js +0 -17
  249. package/dist/plugins/memory-sync-store-pg.js +4 -49
  250. package/dist/plugins/memory-sync-store-tidb.js +3 -35
  251. package/dist/plugins/outcome-ledger-sql.js +3 -97
  252. package/dist/plugins/permission-rule-store-file.js +5 -133
  253. package/dist/plugins/permission-rule-store-sql.d.ts +3 -0
  254. package/dist/plugins/permission-rule-store-sql.js +50 -307
  255. package/dist/plugins/pg-cost-quota.js +0 -7
  256. package/dist/plugins/pg-pool.js +0 -92
  257. package/dist/plugins/pg-rate-limiter.js +2 -13
  258. package/dist/plugins/pg-safe-json.js +4 -40
  259. package/dist/plugins/pg-session-storage.js +25 -189
  260. package/dist/plugins/posix-shell-fs.js +1 -31
  261. package/dist/plugins/remote-env-adb.js +12 -101
  262. package/dist/plugins/remote-env-e2b.js +40 -371
  263. package/dist/plugins/remote-env-file-error.js +0 -37
  264. package/dist/plugins/remote-env-host.js +63 -483
  265. package/dist/plugins/remote-env-k8s.js +32 -326
  266. package/dist/plugins/remote-env-local-docker.js +24 -157
  267. package/dist/plugins/remote-env-ssh.js +20 -128
  268. package/dist/plugins/remote-scratchpad.js +2 -32
  269. package/dist/plugins/remote-shell.js +1 -32
  270. package/dist/plugins/resume-anchor-store-sql.js +0 -11
  271. package/dist/plugins/retention-lane-store-sql.js +0 -108
  272. package/dist/plugins/retention-store-sql.js +4 -383
  273. package/dist/plugins/roster-store-sql.js +0 -55
  274. package/dist/plugins/run-store-sql.js +14 -251
  275. package/dist/plugins/s3-presign.js +2 -49
  276. package/dist/plugins/scheduler-support.js +3 -80
  277. package/dist/plugins/send-file-ledger.js +4 -53
  278. package/dist/plugins/send-user-file.js +4 -94
  279. package/dist/plugins/session-placement.js +1 -89
  280. package/dist/plugins/session-policy-store-sql.js +3 -81
  281. package/dist/plugins/session-store.js +0 -57
  282. package/dist/plugins/shared-memory-store-sql.js +4 -167
  283. package/dist/plugins/sql-driver.js +0 -17
  284. package/dist/plugins/sql-errors.js +0 -7
  285. package/dist/plugins/sql-escape.js +0 -8
  286. package/dist/plugins/sql-row-helpers.js +0 -25
  287. package/dist/plugins/store-backend.js +42 -222
  288. package/dist/plugins/store-contracts.js +2 -46
  289. package/dist/plugins/task-attachment-store.js +3 -49
  290. package/dist/plugins/task-list-store-sql.js +0 -79
  291. package/dist/plugins/tidb-cost-quota.js +1 -4
  292. package/dist/plugins/tidb-pool.js +1 -207
  293. package/dist/plugins/tidb-rate-limiter.js +3 -9
  294. package/dist/plugins/tidb-session-storage.js +4 -70
  295. package/dist/plugins/tidb-session-store.js +19 -341
  296. package/dist/plugins/tool-result-store-sql.js +4 -179
  297. package/dist/plugins/usage-window-store-sql.js +0 -8
  298. package/dist/plugins/web-search.js +10 -132
  299. package/dist/plugins/workflow-journal-store-sql.js +2 -58
  300. package/dist/plugins/workflow-run-store-sql.js +6 -91
  301. package/dist/plugins/worktree-isolation.js +6 -126
  302. package/dist/plugins/write-behind-counter.js +16 -75
  303. package/dist/principal-jwt.js +5 -60
  304. package/dist/project-memory.js +15 -146
  305. package/dist/prompts-domain-validate.js +1 -51
  306. package/dist/question.js +2 -111
  307. package/dist/resource-suspend.js +0 -18
  308. package/dist/router/route-orchestration.js +0 -77
  309. package/dist/rules-consent.d.ts +44 -5
  310. package/dist/rules-consent.js +75 -215
  311. package/dist/run-local.js +14 -381
  312. package/dist/runs.js +29 -617
  313. package/dist/runtime-caps-resolver.js +6 -132
  314. package/dist/runtime-governance.js +1 -232
  315. package/dist/sandbox-pkg-source.js +0 -37
  316. package/dist/sealed-key.js +3 -68
  317. package/dist/security.js +6 -291
  318. package/dist/session-leaf-bus.js +0 -32
  319. package/dist/session-sync-content.js +1 -69
  320. package/dist/session-sync-kernel.js +3 -60
  321. package/dist/session-sync.js +3 -66
  322. package/dist/session-titler.js +7 -41
  323. package/dist/session-watch.js +9 -73
  324. package/dist/shared-memory-scope-authorizer.js +0 -18
  325. package/dist/sighup-idle.js +1 -12
  326. package/dist/spec-fields.js +4 -143
  327. package/dist/store-live-probe.js +3 -49
  328. package/dist/task-a2a.js +1 -126
  329. package/dist/task-cwd.js +1 -103
  330. package/dist/task-mcp.js +1 -89
  331. package/dist/task-settings.js +10 -300
  332. package/dist/task-workflow.js +8 -75
  333. package/dist/tool-approval.d.ts +28 -1
  334. package/dist/tool-approval.js +70 -1430
  335. package/dist/trace/artifacts.js +5 -20
  336. package/dist/trace/engine-notice-wire.js +6 -138
  337. package/dist/trace/ledger-sink.js +7 -96
  338. package/dist/trace/project.js +4 -448
  339. package/dist/trace/redact.js +9 -77
  340. package/dist/turn-activity.js +1 -27
  341. package/dist/usage-analytics.js +4 -34
  342. package/dist/wall-clock-jump-guard.js +1 -68
  343. package/package.json +3 -3
  344. package/dist/capabilities/scenario-alias.d.ts +0 -27
  345. package/dist/capabilities/scenario-alias.js +0 -61
@@ -1,8 +1,5 @@
1
1
  import { normalizeAgentName } from "@sema-agent/core";
2
2
  export const ROSTER_TABLE = "agent_roster";
3
- /** 行 → RosterEntry(缺席键省略,core 形逐字;session_scoped 数值/布尔双方言归一)。
4
- * core 1.365 BREAKING:owner/scope 升类型必填——两方言 CREATE 直接建成 NOT NULL(当年的「清死行 +
5
- * MODIFY/SET NOT NULL」运行期迁移腿已折进建表,由来见两 ensure 上方顶注 ①),故此处直取不条件展开。 */
6
3
  function rowToEntry(r) {
7
4
  return {
8
5
  name: String(r.name),
@@ -14,57 +11,14 @@ function rowToEntry(r) {
14
11
  ...(r.session_scoped !== null && r.session_scoped !== undefined ? { sessionScoped: Boolean(Number(r.session_scoped)) || r.session_scoped === true } : {}),
15
12
  ...(r.root_session_id !== null && r.root_session_id !== undefined ? { rootSessionId: String(r.root_session_id) } : {}),
16
13
  ...(r.model !== null && r.model !== undefined ? { model: String(r.model) } : {}),
17
- // core 5.10.0 additive:modelFallback(请求词未绑臂,子代跑在继承默认上)——现词表单成员;等值守卫
18
- // 而非裸 String cast:core 若扩成员,这里 tsc 先红(勿静默放行未知词进 RosterEntry 窄类型)。
19
14
  ...(r.model_fallback === "inherit_no_tier_binding" ? { modelFallback: "inherit_no_tier_binding" } : {}),
20
15
  createdAt: Number(r.created_at_ms),
21
16
  };
22
17
  }
23
- // F2(发版复审):TiDB 表级 COLLATE utf8mb4_bin / PG 授权列 COLLATE "C"——'=' 恢复字节等价(JS 严格
24
- // 相等同义),大小写/重音/PAD 近撞值不再穿过谓词;真库混合大小写+尾空格案钉住。
25
- /** resolve 的 access 谓词(两方言同形,占位符各自)——core 1.365 A-2 终态:**default-deny 双轴**
26
- * (entryAccessible 新极性,旧「缺轴=放行」两支已删)。scope 轴:`scope = :accessScope` 硬等——行值
27
- * NULL(前代残行)或 access.scope 缺席(参数 NULL,`= NULL` 恒假)都拒 ✓。owner 轴:相等,或
28
- * sessionScoped 显式真且 owner=access.sessionId;owner NULL 行两支 `= NULL` 恒假=拒 ✓。
29
- * 全部在查询内完成(语义条 1)。
30
- * ⚠️ 上面两处「行值 NULL」现在只是**推理留档**:两列自建表起 NOT NULL,行值侧 NULL 结构上不可能
31
- * (顶注 ③);仍然可达的是**参数侧** NULL —— access 缺 scope/owner 时 `= NULL` 恒假 = default-deny。 */
32
- // 数据列(owner/scope)仍是 VARCHAR——谓词一侧 CAST 为 BINARY 即整个比较按字节(残余过滤行数极小,
33
- // 无索引损耗;主过滤=VARBINARY name_key PK 前缀)。
34
18
  const RESOLVE_WHERE_TIDB = `name_key = ? AND BINARY scope = ? AND (BINARY owner = ? OR (session_scoped = 1 AND ? IS NOT NULL AND BINARY owner = ?))`;
35
19
  const RESOLVE_WHERE_PG = `name_key = $1 AND scope = $2 AND (owner = $3 OR (session_scoped = 1 AND $4::varchar IS NOT NULL AND owner = $5))`;
36
- // core 1.373 additive:RosterEntry.model(spawn 记录的解析后模型 id)——列投影型 store 必须显式接
37
- // (File/Memory 后端整对象持久化天然保住;列白名单剥键=SDK 0.0.72 中继剥键同族教训,发车复审抓获)。
38
20
  const COLS = "name, agent_id, session_id, tool_use_id, owner, scope, session_scoped, root_session_id, model, model_fallback, created_at_ms";
39
- /* ┌─ 历史:曾经的运行期迁移腿(已折进 CREATE,2026-07-26 clay 裁「删库重建」)────────────────────┐
40
- * 本文件的两个 ensure 曾在每次 boot 跑三族迁移语句,现已全部折叠为 CREATE TABLE 里的列定义。
41
- * 保留由来,因为它解释了这些列**为什么长这样**,以及当年为什么不能只写一条 CREATE:
42
- *
43
- * ① owner / scope 曾是 nullable(1.247 及更早的 `agent_roster`)。core 1.365 BREAKING(本仓
44
- * commit `1172f31`,[1509] 对表)把注册面改成 **default-deny 双轴**:缺轴行在新谓词下永不可达
45
- * (resolve 恒拒)= 死行。于是当年的 ensure 必须先 `DELETE … WHERE owner IS NULL OR scope IS NULL`
46
- * 再 `MODIFY/SET … NOT NULL`——带数据的收紧遇 NULL 会**砖 boot**,清完才幂等。
47
- * ⚠️ 该迁移腿有一个真实的**滚动升级窗**(当年复审 #1 如实记):共库上仍在跑的 1.247 旧副本此后写
48
- * 缺轴条目会撞 NOT NULL 约束错——core 调用侧 record 有 catch 兜底,窗内退化为该条 roster-miss、
49
- * 不崩;而 DELETE→ALTER 之间旧副本恰好插入一行 NULL,会砖**当次** ALTER(boot 失败),下次 boot
50
- * 再清即自愈。BREAKING 当年在 CHANGELOG 声明整队同拍升级。
51
- * → 删库重建口径下这个窗**消失**:两列自建表起即 NOT NULL,不存在「先有 NULL 行再收紧」的时刻;
52
- * 那条 DELETE 也结构上删不到任何行(NOT NULL 列不可能有 NULL 值),删之无损。
53
- *
54
- * ② root_session_id(core 1.367 δ)/ model(core 1.373)曾靠**探针式 ADD COLUMN** 补进存量表:
55
- * 先查 information_schema.COLUMNS、缺了才 ALTER。之所以不用 `ADD COLUMN IF NOT EXISTS`,是因为
56
- * MySQL 8 没有该语法(TiDB/MariaDB 才有),而本仓 MySQL-protocol 口径要求可移植
57
- * (tidb-pool.ts COLUMN_MIGRATIONS 同姿势;PG 腿则直接用 IF NOT EXISTS)。
58
- * → 新库 CREATE 已带列,探针恒 no-op,连同 ALTER 一并删。
59
- *
60
- * ③ 语义位:当年 `model IS NULL` 兼有「pre-1.373 行」一义。删库重建后**不再产生**这类行——NULL 只
61
- * 剩「该 spawn 没记录模型」一义(RosterEntry.model 本就可选)。读侧的条件展开分支({@link rowToEntry}
62
- * 里 root_session_id / model 两支)因此仍然可达,**不动**;同理 RESOLVE_WHERE_* 谓词里
63
- * 「行值 NULL ⇒ `= NULL` 恒假」那一层推理只对 **参数侧** NULL(access 缺轴)仍成立,行值侧已结构不可能。
64
- * └────────────────────────────────────────────────────────────────────────────────────────────┘ */
65
21
  export async function ensureTiDBRosterSchema(pool) {
66
- // VARBINARY 键列(F2 终形):`utf8mb4_bin` 仍是 PAD SPACE collation——VARCHAR '=' 尾空格填充,
67
- // 'x' 与 'x ' 同键/同谓词命中(真库红实测)。VARBINARY 比较=纯字节,upsert 域键与授权谓词双正。
68
22
  await pool.query(`CREATE TABLE IF NOT EXISTS ${ROSTER_TABLE} (
69
23
  name_key VARBINARY(190) NOT NULL,
70
24
  owner_key VARBINARY(190) NOT NULL,
@@ -90,8 +44,6 @@ export async function ensureTiDBRosterSchema(pool) {
90
44
  ) COLLATE utf8mb4_bin`);
91
45
  }
92
46
  export async function ensurePgRosterSchema(q) {
93
- // COLLATE "C"(F2 双方言对齐):授权谓词列的 '=' 必须是字节等价——数据库缺省 collation 若非确定性/
94
- // 大小写不敏感,近撞 scope/owner 会穿过 in-query access 过滤(信任边界弱化)。
95
47
  await q(`CREATE TABLE IF NOT EXISTS ${ROSTER_TABLE} (
96
48
  name_key VARCHAR(190) COLLATE "C" NOT NULL,
97
49
  owner_key VARCHAR(190) COLLATE "C" NOT NULL,
@@ -116,7 +68,6 @@ export async function ensurePgRosterSchema(q) {
116
68
  )`);
117
69
  await q(`CREATE INDEX IF NOT EXISTS idx_roster_agent ON ${ROSTER_TABLE} (agent_id)`);
118
70
  }
119
- /** upsert 参数序(两方言共用;core 1.365 起 owner/scope 类型必填——键列直取,与 core upsertKey 同键)。 */
120
71
  function upsertParams(entry, now) {
121
72
  return [
122
73
  normalizeAgentName(entry.name),
@@ -128,8 +79,6 @@ function upsertParams(entry, now) {
128
79
  entry.toolUseId ?? null,
129
80
  entry.owner,
130
81
  entry.scope,
131
- // TINYINT(1) 归一(clay 批 2026-07-26):写入参双方言统一 0/1(PG 列已 SMALLINT,裸 boolean 参数
132
- // 会在 'true'::smallint 上炸;MySQL TINYINT 本就收 0/1)。三态保留:undefined → NULL。
133
82
  entry.sessionScoped === undefined ? null : entry.sessionScoped ? 1 : 0,
134
83
  entry.rootSessionId ?? null,
135
84
  entry.model ?? null,
@@ -167,9 +116,6 @@ export class TiDBRosterStore {
167
116
  async releaseAgent(agentId) {
168
117
  await this.pool.query(`DELETE FROM ${ROSTER_TABLE} WHERE agent_id = ?`, [agentId]);
169
118
  }
170
- /** [1522] MED2(server 扩展,非 core 接口;core RB-23②③ 派给部署的清理半场):TTL 清理——
171
- * task-scoped 具名 spawn 的 owner=宿主 taskId=每 run 一新行,无清理=线性无界。按 recorded_at_ms
172
- * (最后一次 upsert 触碰)删,latest 语义不受影响(活跃名恒被新 spawn 刷新)。 */
173
119
  async reapOlderThan(cutoffMs) {
174
120
  const [res] = (await this.pool.query(`DELETE FROM ${ROSTER_TABLE} WHERE recorded_at_ms < ?`, [cutoffMs]));
175
121
  return res.affectedRows;
@@ -204,7 +150,6 @@ export class PgRosterStore {
204
150
  async releaseAgent(agentId) {
205
151
  await this.q(`DELETE FROM ${ROSTER_TABLE} WHERE agent_id = $1`, [agentId]);
206
152
  }
207
- /** [1522] MED2(TiDB twin 同案注)。 */
208
153
  async reapOlderThan(cutoffMs) {
209
154
  const { rows } = await this.q(`DELETE FROM ${ROSTER_TABLE} WHERE recorded_at_ms < $1 RETURNING agent_id`, [cutoffMs]);
210
155
  return rows.length;