@sema-agent/core 7.54.1 → 7.55.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 (399) hide show
  1. package/CHANGELOG.md +437 -0
  2. package/dist/agents/agent-transcript-tool.js +2 -1
  3. package/dist/agents/builtin-agents.d.ts +12 -14
  4. package/dist/agents/cc-peer-directory.d.ts +36 -0
  5. package/dist/agents/cc-peer-directory.js +138 -0
  6. package/dist/agents/cc-peer-wire.d.ts +105 -0
  7. package/dist/agents/cc-peer-wire.js +98 -0
  8. package/dist/agents/cc-uds-peer-channel.d.ts +40 -0
  9. package/dist/agents/cc-uds-peer-channel.js +457 -0
  10. package/dist/agents/cross-session-envelope.d.ts +4 -1
  11. package/dist/agents/cross-session-envelope.js +8 -1
  12. package/dist/agents/cross-session-judge.d.ts +2 -2
  13. package/dist/agents/list-agents-tool.js +2 -1
  14. package/dist/agents/observer.d.ts +4 -5
  15. package/dist/agents/observer.js +2 -1
  16. package/dist/agents/peer-admission.d.ts +6 -0
  17. package/dist/agents/peer-admission.js +4 -1
  18. package/dist/agents/peer-directory.d.ts +43 -9
  19. package/dist/agents/peer-directory.js +66 -23
  20. package/dist/agents/peer-notices.d.ts +1 -1
  21. package/dist/agents/peer-session-drain.d.ts +3 -1
  22. package/dist/agents/peer-session-drain.js +1 -0
  23. package/dist/agents/read-inbox-tool.js +2 -1
  24. package/dist/agents/retain-ledger.d.ts +1 -1
  25. package/dist/agents/roster-store.d.ts +1 -1
  26. package/dist/agents/send-message-tool.d.ts +10 -0
  27. package/dist/agents/send-message-tool.js +34 -5
  28. package/dist/agents/subagent.d.ts +34 -79
  29. package/dist/agents/subagent.js +45 -46
  30. package/dist/agents/tool-filter.d.ts +29 -46
  31. package/dist/agents/tool-filter.js +8 -31
  32. package/dist/agents/verify.d.ts +3 -3
  33. package/dist/brain/anthropic.js +14 -9
  34. package/dist/brain/errors.d.ts +15 -0
  35. package/dist/brain/errors.js +10 -0
  36. package/dist/brain/model-presets.d.ts +4 -4
  37. package/dist/brain/open-responses.js +15 -10
  38. package/dist/brain/openai.js +17 -12
  39. package/dist/brain/provider-dialect.d.ts +39 -3
  40. package/dist/brain/provider-dialect.js +28 -0
  41. package/dist/brain/reasoning.d.ts +1 -1
  42. package/dist/brain/request-params.d.ts +55 -5
  43. package/dist/brain/request-params.js +35 -3
  44. package/dist/brain/retry.d.ts +1 -1
  45. package/dist/brain/route-adjudicator.d.ts +15 -0
  46. package/dist/brain/route-adjudicator.js +15 -0
  47. package/dist/brain/stream-engine.js +6 -5
  48. package/dist/brain/stream-shared.d.ts +1 -1
  49. package/dist/core/advisor-verdict.d.ts +120 -0
  50. package/dist/core/advisor-verdict.js +92 -0
  51. package/dist/core/agent-definition.d.ts +7 -8
  52. package/dist/core/allow-entry.d.ts +49 -23
  53. package/dist/core/allow-entry.js +57 -32
  54. package/dist/core/allow-rule-shadow.d.ts +7 -0
  55. package/dist/core/approval-object.d.ts +2 -1
  56. package/dist/core/approval-object.js +6 -6
  57. package/dist/core/ask-origin.d.ts +63 -11
  58. package/dist/core/ask-origin.js +27 -5
  59. package/dist/core/ask-question.js +10 -4
  60. package/dist/core/auto-compaction.d.ts +11 -8
  61. package/dist/core/auto-compaction.js +4 -2
  62. package/dist/core/auto-mode-arming.d.ts +2 -2
  63. package/dist/core/auto-mode-defaults.d.ts +8 -8
  64. package/dist/core/auto-mode-prompt-assets.d.ts +3 -3
  65. package/dist/core/auto-mode-prompt.d.ts +1 -1
  66. package/dist/core/auto-mode.d.ts +17 -9
  67. package/dist/core/auto-mode.js +9 -6
  68. package/dist/core/background-agent-store.d.ts +3 -3
  69. package/dist/core/canonical-json.d.ts +1 -1
  70. package/dist/core/canonical-json.js +2 -2
  71. package/dist/core/checkpoint-requirements.d.ts +6 -3
  72. package/dist/core/checkpoint-requirements.js +4 -14
  73. package/dist/core/checkpoint-store.d.ts +80 -51
  74. package/dist/core/checkpoint-store.js +56 -74
  75. package/dist/core/child-clamp-seats.d.ts +6 -0
  76. package/dist/core/child-clamp-seats.js +3 -16
  77. package/dist/core/compliance.d.ts +2 -2
  78. package/dist/core/context-edit.d.ts +6 -7
  79. package/dist/core/cross-boundary-taint.d.ts +9 -3
  80. package/dist/core/cross-boundary-taint.js +5 -3
  81. package/dist/core/decision-receipt.js +2 -2
  82. package/dist/core/effective-path-target.d.ts +1 -1
  83. package/dist/core/engine-notice.d.ts +19 -5
  84. package/dist/core/exec-output-tail.d.ts +1 -1
  85. package/dist/core/file-history-retention.d.ts +1 -1
  86. package/dist/core/file-history-store.d.ts +59 -9
  87. package/dist/core/file-history-store.js +35 -17
  88. package/dist/core/gate-fold.js +3 -2
  89. package/dist/core/gate-lanes.js +12 -8
  90. package/dist/core/gate-outcome.d.ts +17 -4
  91. package/dist/core/gate-outcome.js +30 -0
  92. package/dist/core/governance-codes.d.ts +13 -3
  93. package/dist/core/governance-codes.js +10 -0
  94. package/dist/core/hands-band.d.ts +1 -1
  95. package/dist/core/hooks.d.ts +4 -4
  96. package/dist/core/host-target.d.ts +49 -0
  97. package/dist/core/host-target.js +59 -0
  98. package/dist/core/image-downsample.d.ts +1 -1
  99. package/dist/core/lsp-diagnostics.d.ts +4 -4
  100. package/dist/core/lsp.d.ts +3 -3
  101. package/dist/core/mailbox-store.d.ts +4 -0
  102. package/dist/core/mcp-connection-pool.d.ts +18 -2
  103. package/dist/core/mcp-connection-pool.js +53 -6
  104. package/dist/core/mcp-failure.d.ts +23 -4
  105. package/dist/core/mcp-failure.js +26 -11
  106. package/dist/core/mcp-listing-drift.d.ts +10 -0
  107. package/dist/core/mcp-listing-drift.js +6 -0
  108. package/dist/core/mcp-server-link.d.ts +173 -0
  109. package/dist/core/mcp-server-link.js +127 -0
  110. package/dist/core/mcp-server-spec.d.ts +4 -2
  111. package/dist/core/mcp-session-end.d.ts +26 -0
  112. package/dist/core/mcp-session-end.js +29 -0
  113. package/dist/core/mcp-startup-request.d.ts +17 -0
  114. package/dist/core/mcp-startup-request.js +17 -0
  115. package/dist/core/mcp.d.ts +13 -13
  116. package/dist/core/mcp.js +187 -162
  117. package/dist/core/media-byte-cap.d.ts +1 -1
  118. package/dist/core/memory-engine/engine.d.ts +9 -9
  119. package/dist/core/memory-engine/provenance-wording.d.ts +1 -1
  120. package/dist/core/memory-engine/tools.js +4 -1
  121. package/dist/core/mode-policy.d.ts +1 -1
  122. package/dist/core/namespaced-rule-name.d.ts +33 -7
  123. package/dist/core/namespaced-rule-name.js +39 -25
  124. package/dist/core/output-style.d.ts +1 -1
  125. package/dist/core/param-rule-reach.d.ts +15 -0
  126. package/dist/core/param-rule-reach.js +30 -0
  127. package/dist/core/parent-spec-seat.d.ts +8 -1
  128. package/dist/core/parent-spec-seat.js +4 -0
  129. package/dist/core/pause-registry.d.ts +16 -5
  130. package/dist/core/pause-registry.js +6 -2
  131. package/dist/core/peer-channel.d.ts +70 -0
  132. package/dist/core/peer-channel.js +1 -0
  133. package/dist/core/permission-rule-consent.d.ts +11 -5
  134. package/dist/core/permission-rule-consent.js +37 -30
  135. package/dist/core/permission-rule-model.d.ts +233 -64
  136. package/dist/core/permission-rule-model.js +384 -85
  137. package/dist/core/permission-rule-provider.d.ts +2 -1
  138. package/dist/core/permission-rule-store.d.ts +20 -25
  139. package/dist/core/permission-rule-store.js +1 -4
  140. package/dist/core/permission-rule-sync.d.ts +11 -2
  141. package/dist/core/permission-rule-sync.js +8 -1
  142. package/dist/core/permission-rules.d.ts +49 -11
  143. package/dist/core/permission-rules.js +123 -89
  144. package/dist/core/persisted-rule-arms.d.ts +4 -2
  145. package/dist/core/present-plan-tool.js +3 -1
  146. package/dist/core/protocol-naming.d.ts +2 -2
  147. package/dist/core/read-only-shell-table.d.ts +1 -1
  148. package/dist/core/read-only-shell.d.ts +1 -1
  149. package/dist/core/roles.d.ts +6 -2
  150. package/dist/core/roles.js +45 -44
  151. package/dist/core/rule-offer-read.d.ts +53 -0
  152. package/dist/core/rule-offer-read.js +146 -0
  153. package/dist/core/rule-owner.d.ts +46 -0
  154. package/dist/core/rule-owner.js +28 -0
  155. package/dist/core/runner/advisor-instructions.d.ts +70 -0
  156. package/dist/core/runner/advisor-instructions.js +61 -0
  157. package/dist/core/runner/advisor-tool.d.ts +33 -0
  158. package/dist/core/runner/advisor-tool.js +112 -0
  159. package/dist/core/runner/announce-once-ledger.d.ts +4 -26
  160. package/dist/core/runner/announce-once-ledger.js +14 -46
  161. package/dist/core/runner/approval-feedback.js +6 -3
  162. package/dist/core/runner/assemble-result.d.ts +1 -1
  163. package/dist/core/runner/caller-roster.d.ts +7 -0
  164. package/dist/core/runner/caller-roster.js +11 -0
  165. package/dist/core/runner/classifier-ladder.d.ts +27 -5
  166. package/dist/core/runner/classifier-ladder.js +12 -11
  167. package/dist/core/runner/compaction-restate.d.ts +10 -6
  168. package/dist/core/runner/compaction-restate.js +9 -3
  169. package/dist/core/runner/contracts.d.ts +13 -9
  170. package/dist/core/runner/conversation-segment.d.ts +28 -0
  171. package/dist/core/runner/conversation-segment.js +42 -0
  172. package/dist/core/runner/cross-boundary-lane.d.ts +6 -5
  173. package/dist/core/runner/cross-boundary-lane.js +26 -15
  174. package/dist/core/runner/decide-continuation.d.ts +7 -4
  175. package/dist/core/runner/decide-continuation.js +2 -2
  176. package/dist/core/runner/denial-limit-arms.d.ts +2 -2
  177. package/dist/core/runner/derived-route-fallback.d.ts +24 -24
  178. package/dist/core/runner/derived-route-fallback.js +9 -7
  179. package/dist/core/runner/gate-exit.d.ts +6 -0
  180. package/dist/core/runner/gate-exit.js +7 -2
  181. package/dist/core/runner/initial-run-state.js +1 -1
  182. package/dist/core/runner/permission-rule-lanes.d.ts +2 -2
  183. package/dist/core/runner/permission-rule-lanes.js +14 -7
  184. package/dist/core/runner/person-path-rows.js +1 -1
  185. package/dist/core/runner/prepare-advisor.d.ts +63 -0
  186. package/dist/core/runner/prepare-advisor.js +77 -0
  187. package/dist/core/runner/prepare-caps-and-workflow.js +1 -1
  188. package/dist/core/runner/prepare-config-doors.d.ts +6 -4
  189. package/dist/core/runner/prepare-config-doors.js +18 -12
  190. package/dist/core/runner/prepare-delegation-surface.d.ts +2 -2
  191. package/dist/core/runner/prepare-delegation-surface.js +1 -1
  192. package/dist/core/runner/prepare-file-history.js +39 -39
  193. package/dist/core/runner/prepare-gate-stations.d.ts +1 -4
  194. package/dist/core/runner/prepare-gate-stations.js +2 -7
  195. package/dist/core/runner/prepare-inherited-gate.d.ts +5 -4
  196. package/dist/core/runner/prepare-inherited-gate.js +3 -3
  197. package/dist/core/runner/prepare-park-ask.js +7 -7
  198. package/dist/core/runner/prepare-policy-chain.d.ts +1 -1
  199. package/dist/core/runner/prepare-policy-chain.js +4 -10
  200. package/dist/core/runner/prepare-project-context.d.ts +5 -2
  201. package/dist/core/runner/prepare-project-context.js +6 -3
  202. package/dist/core/runner/prepare-prompt-inputs.js +1 -1
  203. package/dist/core/runner/prepare-protocol-tools.d.ts +2 -2
  204. package/dist/core/runner/prepare-protocol-tools.js +3 -2
  205. package/dist/core/runner/prepare-safety-scan.d.ts +9 -12
  206. package/dist/core/runner/prepare-safety-scan.js +8 -6
  207. package/dist/core/runner/prepare-task.js +15 -18
  208. package/dist/core/runner/prepare-tool-disclosure-mount.js +6 -4
  209. package/dist/core/runner/prepare-wiring-manifest.d.ts +6 -3
  210. package/dist/core/runner/prepare-wiring-manifest.js +2 -2
  211. package/dist/core/runner/resume-policy-outcome.js +1 -1
  212. package/dist/core/runner/retired-runner-deps.js +1 -1
  213. package/dist/core/runner/run-attachment-seats.js +0 -1
  214. package/dist/core/runner/run-compaction-machinery.d.ts +1 -1
  215. package/dist/core/runner/run-compaction-machinery.js +2 -12
  216. package/dist/core/runner/run-git-lane.d.ts +1 -0
  217. package/dist/core/runner/run-harness-handlers.js +2 -3
  218. package/dist/core/runner/run-leg.js +13 -0
  219. package/dist/core/runner/run-settle-and-teardown.js +1 -1
  220. package/dist/core/runner/run-telemetry-and-budget-seats.js +1 -1
  221. package/dist/core/runner/run-turn-boundary.d.ts +1 -0
  222. package/dist/core/runner/run-turn-boundary.js +14 -12
  223. package/dist/core/runner/session-rule-policy.d.ts +22 -21
  224. package/dist/core/runner/session-rule-policy.js +13 -28
  225. package/dist/core/runner/side-call-account.d.ts +32 -8
  226. package/dist/core/runner/side-call-account.js +23 -1
  227. package/dist/core/runner/strict-output-schema.d.ts +1 -1
  228. package/dist/core/runner/sub-agent-deny-lists.js +4 -3
  229. package/dist/core/runner/synthetic-tools.d.ts +10 -13
  230. package/dist/core/runner/synthetic-tools.js +4 -2
  231. package/dist/core/runner/tool-disclosure.js +2 -1
  232. package/dist/core/runner/tool-face-overlay.d.ts +2 -1
  233. package/dist/core/runner/tool-face-overlay.js +17 -1
  234. package/dist/core/runner/tool-progress-lane.d.ts +2 -2
  235. package/dist/core/runner/tool-turn-repair-seat.d.ts +3 -2
  236. package/dist/core/runner/turn-attachments.d.ts +60 -67
  237. package/dist/core/runner-deps.d.ts +37 -37
  238. package/dist/core/runtime-caps.d.ts +4 -4
  239. package/dist/core/safety-merge-corpus.js +17 -1
  240. package/dist/core/same-plain-value.d.ts +40 -0
  241. package/dist/core/same-plain-value.js +49 -0
  242. package/dist/core/scheduler.d.ts +1 -1
  243. package/dist/core/sensitive-path-policy.d.ts +1 -1
  244. package/dist/core/sensitive-path-policy.js +1 -1
  245. package/dist/core/session-policy-store.d.ts +77 -22
  246. package/dist/core/session-policy-store.js +56 -14
  247. package/dist/core/session-reconcile.d.ts +2 -2
  248. package/dist/core/session-store.d.ts +80 -30
  249. package/dist/core/session-store.js +118 -76
  250. package/dist/core/session.d.ts +24 -46
  251. package/dist/core/shared-memory/tools.js +3 -1
  252. package/dist/core/shared-memory/types.d.ts +1 -1
  253. package/dist/core/side-query.d.ts +10 -0
  254. package/dist/core/side-query.js +5 -0
  255. package/dist/core/store-contracts/checkpoint-store-contract.js +29 -2
  256. package/dist/core/store-contracts/file-history-store-contract.js +43 -3
  257. package/dist/core/store-contracts/session-policy-store-contract.d.ts +7 -0
  258. package/dist/core/store-contracts/session-policy-store-contract.js +130 -0
  259. package/dist/core/store-contracts/session-repo-contract.js +125 -0
  260. package/dist/core/store-contracts/session-store-contract.d.ts +4 -7
  261. package/dist/core/store-contracts/session-store-contract.js +215 -41
  262. package/dist/core/store-contracts/workflow-journal-store-contract.js +26 -1
  263. package/dist/core/surrogate-safe-slice.d.ts +3 -3
  264. package/dist/core/task-event.d.ts +10 -4
  265. package/dist/core/task-notification.d.ts +3 -3
  266. package/dist/core/task-registry-agent.d.ts +4 -4
  267. package/dist/core/task-registry-shared.d.ts +4 -4
  268. package/dist/core/task-registry-shared.js +1 -0
  269. package/dist/core/task-registry.d.ts +4 -4
  270. package/dist/core/task-registry.js +3 -1
  271. package/dist/core/task-result.d.ts +3 -3
  272. package/dist/core/task-spec.d.ts +52 -52
  273. package/dist/core/task-stream.d.ts +6 -6
  274. package/dist/core/task-tool-shape.d.ts +4 -4
  275. package/dist/core/tighten-task-spec.d.ts +1 -1
  276. package/dist/core/tool-catalog-entries.d.ts +19 -2
  277. package/dist/core/tool-catalog-entries.js +57 -42
  278. package/dist/core/tool-conformance.js +1 -0
  279. package/dist/core/tool-errors.d.ts +2 -2
  280. package/dist/core/tool-face-reader.js +5 -3
  281. package/dist/core/tool-face.d.ts +21 -2
  282. package/dist/core/tool-face.js +1 -1
  283. package/dist/core/tool-model-gate.d.ts +3 -3
  284. package/dist/core/tool-name-aliases.d.ts +29 -8
  285. package/dist/core/tool-name-aliases.js +27 -3
  286. package/dist/core/tool-name-readings.d.ts +5 -8
  287. package/dist/core/tool-name-readings.js +1 -2
  288. package/dist/core/tool-policy.d.ts +24 -5
  289. package/dist/core/tool-policy.js +34 -10
  290. package/dist/core/tool-registry.d.ts +14 -7
  291. package/dist/core/tool-registry.js +17 -7
  292. package/dist/core/tool-result-store.js +2 -1
  293. package/dist/core/tool-roster.d.ts +47 -18
  294. package/dist/core/tool-roster.js +53 -32
  295. package/dist/core/tool-spec-members.js +1 -1
  296. package/dist/core/tool-spec.d.ts +35 -21
  297. package/dist/core/tools.js +3 -2
  298. package/dist/core/trace.d.ts +4 -0
  299. package/dist/core/untrusted-egress.d.ts +1 -1
  300. package/dist/core/untrusted-text.d.ts +1 -1
  301. package/dist/core/warm-resume.d.ts +1 -1
  302. package/dist/core/wiring-manifest.d.ts +49 -0
  303. package/dist/core/wiring-manifest.js +13 -5
  304. package/dist/core/workflow-journal-store.d.ts +62 -0
  305. package/dist/core/workflow-journal-store.js +77 -1
  306. package/dist/core/workflow-run-store.d.ts +6 -0
  307. package/dist/core/workflow-run-store.js +2 -0
  308. package/dist/engine/compaction/compaction.d.ts +9 -9
  309. package/dist/engine/execution-env/node-execution-env.d.ts +19 -5
  310. package/dist/engine/execution-env/node-execution-env.js +43 -22
  311. package/dist/engine/harness/agent-harness.d.ts +14 -8
  312. package/dist/engine/harness/agent-harness.js +33 -26
  313. package/dist/engine/harness/types.d.ts +29 -7
  314. package/dist/engine/harness/types.js +12 -1
  315. package/dist/engine/llm/types.d.ts +9 -9
  316. package/dist/engine/llm/validation.d.ts +4 -1
  317. package/dist/engine/llm/validation.js +13 -1
  318. package/dist/engine/loop/agent-loop.d.ts +1 -1
  319. package/dist/engine/loop/agent-loop.js +10 -8
  320. package/dist/engine/loop/types.d.ts +15 -13
  321. package/dist/engine/lsp/node-lsp-manager.d.ts +2 -2
  322. package/dist/engine/session/memory-repo.d.ts +10 -11
  323. package/dist/engine/session/memory-repo.js +13 -8
  324. package/dist/engine/session/parent-chain-guard.d.ts +3 -2
  325. package/dist/engine/session/parent-chain-guard.js +1 -1
  326. package/dist/engine/session/repo-utils.d.ts +31 -3
  327. package/dist/engine/session/repo-utils.js +42 -5
  328. package/dist/index.d.ts +27 -15
  329. package/dist/index.js +21 -11
  330. package/dist/internal/harness-types.d.ts +1 -1
  331. package/dist/internal/harness.d.ts +3 -3
  332. package/dist/internal/harness.js +2 -2
  333. package/dist/internal/llm.d.ts +1 -1
  334. package/dist/internal/llm.js +1 -1
  335. package/dist/orchestration/goal.js +2 -2
  336. package/dist/orchestration/run-workflow-tool.d.ts +2 -2
  337. package/dist/orchestration/run-workflow-tool.js +5 -3
  338. package/dist/orchestration/workflow-size-guideline.d.ts +4 -4
  339. package/dist/orchestration/workflow-types.d.ts +18 -0
  340. package/dist/orchestration/workflow-types.js +6 -0
  341. package/dist/orchestration/workflow.d.ts +2 -13
  342. package/dist/orchestration/workflow.js +21 -31
  343. package/dist/prompt-assembly/event-registry.js +1 -0
  344. package/dist/prompt-assembly/tool-catalog.d.ts +3 -0
  345. package/dist/prompt-assembly/tool-catalog.js +3 -0
  346. package/dist/prompts/default.d.ts +14 -14
  347. package/dist/scenarios/full-body.d.ts +4 -4
  348. package/dist/stores/file/adoption/adopt.d.ts +4 -3
  349. package/dist/stores/file/adoption/adopt.js +24 -31
  350. package/dist/stores/file/adoption/marker.d.ts +6 -13
  351. package/dist/stores/file/adoption/marker.js +6 -15
  352. package/dist/stores/file/checkpoint-store.d.ts +3 -0
  353. package/dist/stores/file/checkpoint-store.js +9 -3
  354. package/dist/stores/file/file-history-store.d.ts +20 -19
  355. package/dist/stores/file/file-history-store.js +152 -135
  356. package/dist/stores/file/fs-atomic.d.ts +15 -0
  357. package/dist/stores/file/fs-atomic.js +89 -14
  358. package/dist/stores/file/index.d.ts +1 -1
  359. package/dist/stores/file/mailbox-store.d.ts +3 -0
  360. package/dist/stores/file/mailbox-store.js +3 -1
  361. package/dist/stores/file/permission-rule-adopt.d.ts +1 -1
  362. package/dist/stores/file/permission-rule-adopt.js +15 -16
  363. package/dist/stores/file/permission-rule-store.d.ts +18 -2
  364. package/dist/stores/file/permission-rule-store.js +21 -14
  365. package/dist/stores/file/session-policy-store.d.ts +3 -3
  366. package/dist/stores/file/session-store.d.ts +26 -11
  367. package/dist/stores/file/session-store.js +77 -40
  368. package/dist/stores/file/workflow-journal-store.d.ts +10 -4
  369. package/dist/stores/file/workflow-journal-store.js +28 -13
  370. package/dist/tools/artifact/artifact-text.d.ts +1 -1
  371. package/dist/tools/artifact/artifact-tool.js +2 -1
  372. package/dist/tools/fs/bash-readonly-classifier.d.ts +3 -3
  373. package/dist/tools/fs/fs-bash.d.ts +2 -2
  374. package/dist/tools/fs/fs-bash.js +3 -1
  375. package/dist/tools/fs/fs-shared.d.ts +8 -8
  376. package/dist/tools/fs/gh-rate-limit.d.ts +1 -1
  377. package/dist/tools/fs/notebook.d.ts +2 -2
  378. package/dist/tools/fs/read-deny.d.ts +29 -7
  379. package/dist/tools/fs/read-deny.js +63 -22
  380. package/dist/tools/fs/removal-targets.d.ts +1 -1
  381. package/dist/tools/fs/safety.d.ts +9 -9
  382. package/dist/tools/fs/search.d.ts +6 -6
  383. package/dist/tools/fs/shell-read-check.js +6 -1
  384. package/dist/tools/fs/shell-read-judge.d.ts +4 -0
  385. package/dist/tools/fs/shell-read-judge.js +5 -2
  386. package/dist/tools/loop-tick.d.ts +2 -2
  387. package/dist/tools/scheduler-tools.js +5 -1
  388. package/dist/tools/task-list.d.ts +7 -7
  389. package/dist/tools/task-list.js +5 -1
  390. package/dist/tools/todo.js +2 -1
  391. package/dist/tools/web.d.ts +1 -1
  392. package/dist/tools/web.js +40 -37
  393. package/dist/tools/worktree.d.ts +3 -3
  394. package/dist/tools/worktree.js +3 -1
  395. package/package.json +1 -1
  396. package/test/export-surface.snapshot.json +5756 -5638
  397. package/wire-changes/core@7.55.0.json +3318 -0
  398. package/dist/core/store-contracts/session-store-incarnation-contract.d.ts +0 -39
  399. package/dist/core/store-contracts/session-store-incarnation-contract.js +0 -95
@@ -35,7 +35,8 @@
35
35
  * store's, the fence stays the partition's.
36
36
  */
37
37
  import type { PersistedRule, RuleScope } from "./permission-rule-model.js";
38
- import { type DurableRulePartitionProvider, type QuarantinedRuleAdd, type RuleOwner } from "./permission-rule-store.js";
38
+ import { type DurableRulePartitionProvider, type QuarantinedRuleAdd } from "./permission-rule-store.js";
39
+ import type { RuleOwner } from "./rule-owner.js";
39
40
  import { type OrgRulePartitionConfig, type OrgRuleResolution } from "./permission-rule-org.js";
40
41
  import type { SessionRulePartition } from "./permission-rule-session.js";
41
42
  import type { StoreDurability, StoreFidelity } from "./checkpoint-store.js";
@@ -45,7 +45,7 @@ import type { PersistedRule, RuleAdd, RuleDot, RuleScope, RuleTombstone } from "
45
45
  import { type RuleBehavior } from "./permission-rule-model.js";
46
46
  import type { RuleSyncDropReason, RuleQuarantineReason } from "./governance-codes.js";
47
47
  import type { StoreDurability, StoreFidelity } from "./checkpoint-store.js";
48
- import type { AssertAllKeysHandled } from "./ask-origin.js";
48
+ import type { RuleOwner } from "./rule-owner.js";
49
49
  /** One store read: the rules as persisted, their tombstones, and the revision they were read at. */
50
50
  export interface StoredRules {
51
51
  /** Rules with their FULL add sets — tombstoned dots already removed by the backend on read. */
@@ -56,6 +56,14 @@ export interface StoredRules {
56
56
  /** Integrity fingerprint the backend computed, when it has one. Corruption detection only. */
57
57
  checksum?: string;
58
58
  }
59
+ /**
60
+ * The code a refusal carries when the rules a face reads — a bucket at rest, a rule-sync state on the wire — are stamped
61
+ * with a rule grammar later than this engine reads: a newer engine wrote them. Every face refuses them whole with it (the
62
+ * read face, a write's read of its base, a sync round's local read and its response), so a caller tells "an engine that
63
+ * reads that grammar reads them" from a damaged store, whose refusal carries no code. The person's rules are then one
64
+ * partition that cannot be read: every call is asked about until a read succeeds.
65
+ */
66
+ export declare const PERMISSION_RULES_LATER_GRAMMAR_CODE = "permission_rules.later_grammar";
59
67
  /**
60
68
  * The durable partition's read face: read-only, already anchored to a single owner. Rows carry the two
61
69
  * durable scopes only (`global` = the `user` source, `project` = the `project` source); a session row
@@ -64,6 +72,13 @@ export interface StoredRules {
64
72
  * A backend that fails to read must not silently report an empty set as if it were an empty store — it
65
73
  * throws, and the store's caller turns that into zero rules PLUS a loud disclosure. Both outcomes deny
66
74
  * more than they allow; only one of them is honest about why.
75
+ *
76
+ * A backend keeps ONE rule grammar stamp per bucket: every write stamps this engine's grammar
77
+ * (`SESSION_RULES_GRAMMAR`), and every read — of the read face and of a write's base — judges the stamp
78
+ * through `readRuleGrammarStamp` (absent = this engine's grammar, a bucket written before the stamp): a later
79
+ * grammar is a bucket this engine cannot read, refused whole with {@link PERMISSION_RULES_LATER_GRAMMAR_CODE},
80
+ * never read row by row (a row a newer grammar wrote reads as nothing here, and a deny that reads as nothing
81
+ * refuses nothing).
67
82
  */
68
83
  export interface DurableRulePartition {
69
84
  list(): Promise<StoredRules>;
@@ -78,30 +93,6 @@ export interface DurableRulePartition {
78
93
  /** Declared serialization fidelity, same doctrine as the other store families. */
79
94
  readonly fidelity?: StoreFidelity;
80
95
  }
81
- /**
82
- * design/182 §3.3/§4.5 — who a rule bucket belongs to, as a STRUCTURAL position.
83
- *
84
- * Identity absence is spelled as a distinct union member, never as a sentinel string flowing through
85
- * `forPrincipal` — every consumer of a principal string is an identity surface, and a made-up name on an
86
- * identity surface is indistinguishable from a real one downstream. Cloud sync and cloud tickets accept
87
- * ONLY the `principal` kind: syncing is an authenticated act, and a local-owner bucket has no cloud home
88
- * until it is adopted (`adoptFilePermissionRuleStore`).
89
- */
90
- export type RuleOwner = {
91
- kind: "principal";
92
- principal: string;
93
- } | {
94
- kind: "local-owner";
95
- };
96
- /** The owner discriminants as a value: the `kind` words of {@link RuleOwner}, both directions fenced at compile time
97
- * ({@link RuleOwnerKindsCoverEveryArm} / {@link RuleOwnerArmsCoverEveryKind}). */
98
- export declare const RULE_OWNER_KINDS: readonly ["principal", "local-owner"];
99
- /** Compile fence: an arm whose `kind` is not in {@link RULE_OWNER_KINDS} turns the argument into that word. */
100
- export type RuleOwnerKindsCoverEveryArm = AssertAllKeysHandled<Exclude<RuleOwner["kind"], (typeof RULE_OWNER_KINDS)[number]>>;
101
- /** Compile fence, the other direction: a word in {@link RULE_OWNER_KINDS} that no arm carries. */
102
- export type RuleOwnerArmsCoverEveryKind = AssertAllKeysHandled<Exclude<(typeof RULE_OWNER_KINDS)[number], RuleOwner["kind"]>>;
103
- /** Do two owners name the same bucket? */
104
- export declare function sameRuleOwner(a: RuleOwner, b: RuleOwner): boolean;
105
96
  /** Resolves one owner's durable partition. `undefined` ⇒ a partition that reports zero rules. This is
106
97
  * the BACKEND contract (file, in-memory, an out-of-repo SQL twin); the engine never consumes it
107
98
  * directly — `createPermissionRuleStoreProvider({ durable })` composes it into the unified store. */
@@ -497,6 +488,10 @@ export declare function normalizePersistedRule(r: PersistedRule): {
497
488
  reject: Extract<RuleSyncDropReason, "invalid_rule_text" | "metadata_mismatch">;
498
489
  };
499
490
  /** The normalization half exposed for the DISCLOSURE layer: which records a join would refuse, and why.
491
+ *
492
+ * It reads a state in THIS engine's grammar: the doors that hand it one — a backend's read of its bucket, the sync
493
+ * client's read of a response — refuse a state stamped later whole first ({@link PERMISSION_RULES_LATER_GRAMMAR_CODE}),
494
+ * so a row it refuses is damage to drop or quarantine, never a newer grammar's rule read as nothing.
500
495
  *
501
496
  * design/382 §4.3 — this screen carries the SESSION member of the durable face on every JOIN leg
502
497
  * (inbound state, local state, both sides of the pure join): a rule or tombstone row carrying a
@@ -3,10 +3,7 @@ import { canonicalize } from "./canonical-json.js";
3
3
  import { escapeForDisclosure, isRuleBehavior, isRuleLive, parseRuleText } from "./permission-rule-model.js";
4
4
  import { thrownText } from "./thrown-value.js";
5
5
  import { validatePath } from "./effective-path-target.js";
6
- export const RULE_OWNER_KINDS = Object.freeze(["principal", "local-owner"]);
7
- export function sameRuleOwner(a, b) {
8
- return a.kind === "principal" ? b.kind === "principal" && a.principal === b.principal : b.kind === "local-owner";
9
- }
6
+ export const PERMISSION_RULES_LATER_GRAMMAR_CODE = "permission_rules.later_grammar";
10
7
  export function isRuleRevision(rev) {
11
8
  return typeof rev === "number" && Number.isSafeInteger(rev) && rev >= 0;
12
9
  }
@@ -27,7 +27,8 @@
27
27
  */
28
28
  import type { PersistedRule, RuleBehavior, RuleDot, RuleRejectCode, RuleScope, RuleTombstone } from "./permission-rule-model.js";
29
29
  import type { PermissionRuleStoreProvider } from "./permission-rule-provider.js";
30
- import type { RuleOwner, RuleSyncDrop, RuleSyncFrontier, RuleSyncState } from "./permission-rule-store.js";
30
+ import type { RuleOwner } from "./rule-owner.js";
31
+ import type { RuleSyncDrop, RuleSyncFrontier, RuleSyncState } from "./permission-rule-store.js";
31
32
  import { type TracerHook } from "./trace.js";
32
33
  /** The injected HTTP seam — core never bundles a fetch. The deployment owns base URL, auth, TLS and
33
34
  * retries; a non-2xx / network failure should THROW (the round then aborts with zero local effects —
@@ -43,6 +44,9 @@ export interface RuleSyncRequestBody {
43
44
  replica: string;
44
45
  state: RuleSyncState;
45
46
  observedVector?: RuleSyncFrontier;
47
+ /** The rule grammar this engine reads and writes the state's rows in (`SESSION_RULES_GRAMMAR`) — a twin whose grammar is
48
+ * earlier refuses the whole request, as this client refuses a response stamped later. */
49
+ grammar: number;
46
50
  }
47
51
  /** The wire response (server twin: join its persisted state with the request state, answer the whole
48
52
  * merged form). `gcFrontier` is the COLLECTED watermark (§5.1) — absent in v2.0 by protocol. */
@@ -58,6 +62,10 @@ export interface RuleSyncResponseBody {
58
62
  dot: RuleDot;
59
63
  reason: string;
60
64
  }>;
65
+ /** The rule grammar the merged state's rows are written in. A grammar later than this engine's refuses the whole round
66
+ * (`PERMISSION_RULES_LATER_GRAMMAR_CODE`): read in this engine's grammar, a newer grammar's row reads as nothing, and a
67
+ * deny among them would be dropped as damage. Absent: a twin that predates the member, read in this engine's. */
68
+ grammar?: number;
61
69
  }
62
70
  export interface PermissionRuleSyncResult {
63
71
  /** True ⟺ the round landed with zero drops, zero quarantines and zero warnings. */
@@ -154,7 +162,8 @@ interface ParsedRuleSyncResponse {
154
162
  }
155
163
  /**
156
164
  * Parse one wire response. Envelope violations (missing/mistyped principal, echo mismatch, no merged
157
- * state, an unparseable frontier) THROW — a protocol error aborts the round with zero local effects.
165
+ * state, an unparseable frontier, a grammar stamp this engine cannot read) THROW — a protocol error aborts
166
+ * the round with zero local effects.
158
167
  * ENTRY-level violations degrade per §4.3: an unshapeable rule/add is skipped with a warning (it never
159
168
  * reaches the local disk); an unshapeable tombstone is surfaced as `undefined` so the caller's
160
169
  * tighten-only partitioning withholds the round's adds. Unknown keys never flow anywhere — every field
@@ -1,6 +1,7 @@
1
1
  import { escapeForDisclosure, isRuleBehavior, parseRuleText, RULE_ADD_ORIGINS } from "./permission-rule-model.js";
2
- import { applyTombstones, errText, isProjectScopeRoot, joinFrontiers, joinRuleStates, normalizePersistedRule, readRuleWriteOutcome, ruleSyncVector, sameRuleIdentity, screenRuleSyncState, writerOf, } from "./permission-rule-store.js";
2
+ import { PERMISSION_RULES_LATER_GRAMMAR_CODE, applyTombstones, errText, isProjectScopeRoot, joinFrontiers, joinRuleStates, normalizePersistedRule, readRuleWriteOutcome, ruleSyncVector, sameRuleIdentity, screenRuleSyncState, writerOf, } from "./permission-rule-store.js";
3
3
  import { emitTrace } from "./trace.js";
4
+ import { SESSION_RULES_GRAMMAR, readRuleGrammarStamp } from "./session-policy-store.js";
4
5
  export const PERMISSION_RULE_SYNC_PATH = "/v1/permission-rules/sync";
5
6
  export const LOCAL_OWNER_UNSYNCABLE_CODE = "permission_rules.local_owner_unsyncable";
6
7
  function refuseLocalOwnerSync() {
@@ -64,6 +65,7 @@ export async function syncPermissionRules(opts) {
64
65
  replica: raw.actor,
65
66
  state: { rules: raw.rules, tombstones: raw.tombstones },
66
67
  ...(raw.observedVector !== undefined ? { observedVector: raw.observedVector } : {}),
68
+ grammar: SESSION_RULES_GRAMMAR,
67
69
  };
68
70
  const rawResponse = await transport(PERMISSION_RULE_SYNC_PATH, request);
69
71
  const response = parseRuleSyncResponse(rawResponse, principal);
@@ -310,6 +312,11 @@ export function parseRuleSyncResponse(raw, expectedPrincipal) {
310
312
  if (echoedPrincipal !== expectedPrincipal) {
311
313
  throw new Error(`the sync response echoes principal "${escapeForDisclosure(echoedPrincipal)}" but this round synced "${escapeForDisclosure(expectedPrincipal)}" — the transport is wired to the wrong bucket; refusing the whole round`);
312
314
  }
315
+ const grammar = readRuleGrammarStamp(r.grammar, SESSION_RULES_GRAMMAR, { rules: "the sync response's rules", held: "rows" });
316
+ if ("got" in grammar) {
317
+ const refusal = new Error(`${grammar.sentence} — refusing the whole round, nothing landed`);
318
+ throw grammar.later === true ? Object.assign(refusal, { code: PERMISSION_RULES_LATER_GRAMMAR_CODE }) : refusal;
319
+ }
313
320
  const merged = r.merged;
314
321
  const mergedRules = merged?.rules;
315
322
  const mergedTombstones = merged?.tombstones;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * design/127 — **参数级权限规则 DSL**(CC 2.1.201 追平批 γ)。声明式规则字符串 → {@link ToolPolicy}
2
+ * design/127 — **参数级权限规则 DSL**(追平批 γ)。声明式规则字符串 → {@link ToolPolicy}
3
3
  * 编译器:`"Tool"`(裸)/ `"Tool(param:pattern)"`(参数级,`*` 通配全串锚定)。CC ground truth
4
4
  * 行号级:解析 `Lh` :55214 · 通配 `ZMr` :55196 · 参数级 matcher `gnn` :595123 · 评估序 `G1e` :595272。
5
5
  *
@@ -46,11 +46,21 @@
46
46
  *
47
47
  * The NAME lane is the same shape for the tools of `NAME_RULE_FACES` (the `Skill` tool): a `Skill(<name>)` / `Skill(<prefix>:*)`
48
48
  * deny or ask — the reference's own spelling — compiles through the same validator (the model's name grammar) and is judged on the
49
- * one string the call names (`nameRuleSubjectOf`) with `nameRuleAdmits`, the reader the persisted rule store uses. The parameter
49
+ * one string the call names (`nameRuleSubjectOf`) with `nameRuleReach`, the predicate the persisted rule store uses. The parameter
50
50
  * spelling `Skill(skill:<name>)` those tools used to take is retired: refused loudly, its sentence naming the CC form. A KEYED
51
51
  * value tool (`Artifact(action:<word>)`) takes the same lane for content keyed by its own parameter (`nameGrammarReads`); its
52
- * other arguments stay on the generic `param:pattern` lane. A call of it that names no value for the key as the tool reads it
53
- * is refused by the key's deny or ask rule (`keyedValueAbsentReason`, the persisted lane's reading).
52
+ * other arguments stay on the generic `param:pattern` lane. The delegation tool's `Agent(<subagent_type>)` takes it too, its
53
+ * value and the call's resolved against the agent types the call's face carries (`nameRuleReach`), its other arguments on the
54
+ * generic lane. A call of a closed-set tool that names no value as the tool reads it is refused by the tool's deny or ask rule
55
+ * (`nameValueAbsentReason`, the persisted lane's reading).
56
+ *
57
+ * The HOST lane is the same shape for a tool name the catalog declares a host target for (the URL its call reaches —
58
+ * `WebFetch`'s `url`): a `WebFetch(domain:<host>)` / `WebFetch(domain:*.<domain>)` deny or ask — the reference's own spelling —
59
+ * compiles through the model's domain grammar and is judged on the host the call reaches (`callHostTargetOf`, the protective
60
+ * reading: the call face's slot, the catalog's for the name as the floor) with `domainRuleAdmits`, the reader a person's stored
61
+ * rows and the entry lists use. Every lane is one dispatch over the rule's name and content (`ruleLaneOf`), so the static
62
+ * compile and a leg's roster compile read every rule the same way. A call whose host cannot be read is refused by a host deny
63
+ * rule and is the fail-closed ask under a host ask rule.
54
64
  *
55
65
  * 🔴 与 CC 的有意差(design/127 r2):
56
66
  * - CC 参数级 generic 道无 allow lane(gnn 只有 deny/ask)—— 我们同样,且整个 policy 无 allow 臂。
@@ -102,6 +112,11 @@ export interface PermissionRuleIssue {
102
112
  * is an object/array (a rule on it can never match); the tool is unknown to the resolver a leg
103
113
  * supplied (absent resolver ⇒ the catalog alone judges and an unknown tool stays permissive). */
104
114
  | "unsupported.param_unknown" | "unsupported.param_non_scalar" | "unsupported.tool_unknown"
115
+ /** A deny/ask name rule whose value the fold lands on SEVERAL of the values the leg's mounted tool declares
116
+ * (`Agent(codereview)` on a leg offering `code-review` and `code_review`): which one it names is not determinable, and a rule
117
+ * is never resolved to one of several — refused when the leg's `ruleFaces` carry the values (without them the rule reaches
118
+ * every such value at the gate). */
119
+ | "invalid.name_ambiguous"
105
120
  /** A path-form deny/ask whose spelling needs a base this policy DECLARES as something other than an absolute path
106
121
  * of its tree's family (`/x` reads `pathBases.root`; a relative pattern `pathBases.cwd`, else `root`; `~/` `home`)
107
122
  * — a bad declared value, refused rather than compiled into a rule that reaches nothing. An undeclared base is no
@@ -117,8 +132,29 @@ export interface PermissionRuleIssue {
117
132
  /** HRD-PRM-7: a param-level rule naming a parameter the target tool does not carry. Additive member —
118
133
  * the lane that used to compile silently and never match (see {@link FILE_TOOL_PARAMS}). */
119
134
  | "unsupported.unknown_param";
135
+ /** What a person can do about the rule — never a construction option of the library: those ride on {@link libraryOption}. */
120
136
  message: string;
137
+ /**
138
+ * The engine-side library coordinate this refusal relates to — a name a host program or a spec author holds and a person
139
+ * writing rules does not: a construction option of the compile call (a key of {@link PermissionRulePolicyOptions}, a
140
+ * `pathBases` / `caps` entry spelled `pathBases.<word>` / `caps.<key>`), the allow-list seat of a request or of a deployment
141
+ * (`TaskSpec.allowedTools` / `RunnerDeps.allowedTools`), or the MCP server spec's per-tool declaration (`toolAxes`). Present
142
+ * where the engine offers it as the way out of the refusal, or names it as the declaration the refusal rests on (a rule set
143
+ * over its cap, a declared base that is no path, the list that is no list) — not wherever some other value of an option would
144
+ * happen to change the answer (a resolver that declared more parameters would also make a misspelled one compile; that is not
145
+ * a way out). The sentence never names it, so a host that exposes the coordinate renders it and any other host shows the
146
+ * sentence alone. Minted in one place ({@link ruleIssue}).
147
+ */
148
+ libraryOption?: {
149
+ name: "primaryFieldGeneric" | "defaultAction" | "ruleFaces" | `pathBases.${keyof PathRuleBases}` | `caps.${keyof PermissionRuleCaps}` | "TaskSpec.allowedTools" | "RunnerDeps.allowedTools" | "toolAxes";
150
+ /** The value that opts in, when the way out is one value (`primaryFieldGeneric` ⇒ `"allow-lexical"`); absent when the option
151
+ * takes the host's own choice (a cap's size, a base's path, the answer for calls no rule reaches). */
152
+ value?: string;
153
+ };
121
154
  }
155
+ /** THE mint of a {@link PermissionRuleIssue}: every issue the compiler and the allow-list screen report is made here, so the
156
+ * optional {@link PermissionRuleIssue.libraryOption} is written at one place and an absent one is absent, never `undefined`. */
157
+ export declare function ruleIssue(rule: string, code: PermissionRuleIssue["code"], message: string, libraryOption?: PermissionRuleIssue["libraryOption"]): PermissionRuleIssue;
122
158
  export interface PermissionRuleCaps {
123
159
  maxRules: number;
124
160
  maxRuleLength: number;
@@ -175,18 +211,20 @@ export { isNamespacedCoveringRuleName, namespacedRuleNameCovers, wildcardMatch }
175
211
  /**
176
212
  * design/388 A-6/7/8/9 (D-3): the per-tool RULE FACE — the parameters a `Tool(param:pattern)` rule may name
177
213
  * (`params`, the SCALAR top-level keys ∪ the path target's aliases), the ones the generic lexical matcher must
178
- * not be pointed at (`primaryParams`), the carried-but-non-scalar keys a rule can never match (`nonScalar`), and
179
- * whether the tool names a path target at all (the file-tool glob lane). Resolved through
180
- * {@link PermissionRulePolicyOptions.ruleFaces} when a leg supplies its roster, else from the static catalog
181
- * — the three hand-kept tables (`PRIMARY_FIELDS` / `FILE_TOOLS` / `FILE_TOOL_PARAMS`) this replaced are gone.
214
+ * not be pointed at (`primaryParams`) and the carried-but-non-scalar keys a rule can never match (`nonScalar`). Resolved
215
+ * through {@link PermissionRulePolicyOptions.ruleFaces} when a leg supplies its roster, else from the static catalog — the
216
+ * three hand-kept tables (`PRIMARY_FIELDS` / `FILE_TOOLS` / `FILE_TOOL_PARAMS`) this replaced are gone. Which lane a rule
217
+ * takes is not the face's to say: it is the rule's name's grammar (`ruleLaneOf`), the same with or without a resolver.
182
218
  */
183
219
  export interface RuleFaceView {
184
220
  primaryParams: readonly string[];
185
- /** The full scalar vocabulary; ABSENT when the resolver does not know it (the static catalog for a
186
- * definition whose schema is factory-built) — then only the primary-field check applies. */
221
+ /** The full scalar vocabulary. A face that states none declares its `primaryParams` only: a rule naming any other
222
+ * parameter is refused (`unsupported.param_unknown`) — a face never leaves a parameter name unjudged. */
187
223
  params?: readonly string[];
188
224
  nonScalar?: readonly string[];
189
- pathTargeting?: boolean;
225
+ /** The values the mounted tool takes for the argument its name rules are read against (`ToolRuleFace.nameValues`): with them a
226
+ * name rule whose value the fold lands on several of them is refused at compile (`invalid.name_ambiguous`). */
227
+ nameValues?: readonly string[];
190
228
  }
191
229
  /** The static catalog's answer for a wire name (undefined ⇒ the catalog does not carry it). */
192
230
  export declare function catalogRuleFaceView(toolName: string): RuleFaceView | undefined;