@sema-agent/client-core 0.77.1 → 0.77.2

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 (382) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/README.md +5 -4
  3. package/dist/abortableSleep.d.ts +0 -28
  4. package/dist/abortableSleep.js +0 -28
  5. package/dist/adapt/arms.d.ts +0 -46
  6. package/dist/adapt/arms.js +9 -544
  7. package/dist/adapt/ids.d.ts +0 -58
  8. package/dist/adapt/ids.js +0 -63
  9. package/dist/adapt/instanceLedger.d.ts +0 -25
  10. package/dist/adapt/instanceLedger.js +0 -20
  11. package/dist/adapt/panelTasks.d.ts +0 -69
  12. package/dist/adapt/panelTasks.js +0 -95
  13. package/dist/adapt/textSegmentAuthority.d.ts +1 -137
  14. package/dist/adapt/textSegmentAuthority.js +0 -54
  15. package/dist/adapt/textStream.d.ts +0 -252
  16. package/dist/adapt/textStream.js +2 -281
  17. package/dist/adapt/toolCards.d.ts +0 -46
  18. package/dist/adapt/toolCards.js +0 -23
  19. package/dist/adapt/turnFlags.d.ts +0 -54
  20. package/dist/adapt/turnFlags.js +1 -17
  21. package/dist/adapt/wireShapes.d.ts +0 -92
  22. package/dist/adapt/wireShapes.js +0 -83
  23. package/dist/adapt.d.ts +0 -55
  24. package/dist/adapt.js +1 -120
  25. package/dist/adapter/activeRunSelfHeal.d.ts +22 -515
  26. package/dist/adapter/activeRunSelfHeal.js +10 -625
  27. package/dist/adapter/downstream/eventToSdkMessage.d.ts +2 -305
  28. package/dist/adapter/downstream/eventToSdkMessage.js +2 -867
  29. package/dist/adapter/downstream/terminalToSdkResult.d.ts +2 -314
  30. package/dist/adapter/downstream/terminalToSdkResult.js +13 -560
  31. package/dist/adapter/downstream/turnUsageToModelUsage.d.ts +0 -95
  32. package/dist/adapter/downstream/turnUsageToModelUsage.js +2 -31
  33. package/dist/adapter/runStream.d.ts +0 -206
  34. package/dist/adapter/runStream.js +6 -596
  35. package/dist/adapter/types.d.ts +0 -111
  36. package/dist/adapter/types.js +0 -29
  37. package/dist/agentSession/backgroundView.d.ts +0 -106
  38. package/dist/agentSession/backgroundView.js +3 -49
  39. package/dist/agentSession/contract.d.ts +0 -98
  40. package/dist/agentSession/contract.js +0 -12
  41. package/dist/agentsWireCaps.d.ts +0 -72
  42. package/dist/agentsWireCaps.js +4 -72
  43. package/dist/approvalsStreamLiveCapability.d.ts +0 -25
  44. package/dist/approvalsStreamLiveCapability.js +0 -31
  45. package/dist/argvFlagValue.d.ts +0 -33
  46. package/dist/argvFlagValue.js +3 -35
  47. package/dist/attachmentsWireCaps.d.ts +0 -127
  48. package/dist/attachmentsWireCaps.js +0 -144
  49. package/dist/autoModeUnavailable.d.ts +0 -120
  50. package/dist/autoModeUnavailable.js +0 -144
  51. package/dist/classifierStatus.d.ts +0 -72
  52. package/dist/classifierStatus.js +0 -167
  53. package/dist/classifierVerdictWire.d.ts +0 -54
  54. package/dist/classifierVerdictWire.js +0 -133
  55. package/dist/clientContextWireCaps.d.ts +0 -37
  56. package/dist/clientContextWireCaps.js +0 -36
  57. package/dist/clientSlice.d.ts +0 -63
  58. package/dist/clientSlice.js +0 -45
  59. package/dist/cloudConfigWireCaps.d.ts +0 -86
  60. package/dist/cloudConfigWireCaps.js +2 -65
  61. package/dist/compensations.d.ts +0 -52
  62. package/dist/compensations.js +2 -63
  63. package/dist/controlRouter.d.ts +2 -208
  64. package/dist/controlRouter.js +1 -129
  65. package/dist/coreValuePorts.d.ts +0 -84
  66. package/dist/coreValuePorts.js +0 -29
  67. package/dist/decideReceipt.d.ts +0 -110
  68. package/dist/decideReceipt.js +0 -84
  69. package/dist/detachWire.d.ts +0 -130
  70. package/dist/detachWire.js +1 -130
  71. package/dist/deviceExecutorManagementCapability.d.ts +2 -35
  72. package/dist/deviceExecutorManagementCapability.js +1 -37
  73. package/dist/diagnostics.d.ts +0 -8
  74. package/dist/diagnostics.js +0 -8
  75. package/dist/diff/patch.d.ts +0 -17
  76. package/dist/diff/patch.js +0 -19
  77. package/dist/effectiveFacts.d.ts +0 -40
  78. package/dist/effectiveFacts.js +0 -22
  79. package/dist/effortWire.d.ts +0 -11
  80. package/dist/effortWire.js +0 -12
  81. package/dist/engineAgentPanelStore.d.ts +0 -169
  82. package/dist/engineAgentPanelStore.js +13 -293
  83. package/dist/engineCapReader.d.ts +0 -62
  84. package/dist/engineCapReader.js +1 -43
  85. package/dist/engineCapsCache.d.ts +0 -177
  86. package/dist/engineCapsCache.js +0 -199
  87. package/dist/engineCapsGenerationGuard.d.ts +0 -2
  88. package/dist/engineCapsGenerationGuard.js +0 -11
  89. package/dist/engineErrorCodes.d.ts +1 -316
  90. package/dist/engineErrorCodes.js +0 -427
  91. package/dist/engineHttpTools.d.ts +0 -29
  92. package/dist/engineHttpTools.js +0 -29
  93. package/dist/engineIdentity.d.ts +0 -83
  94. package/dist/engineIdentity.js +0 -88
  95. package/dist/engineInlineTaskStats.d.ts +0 -57
  96. package/dist/engineInlineTaskStats.js +1 -42
  97. package/dist/engineNoticeCodes.d.ts +0 -190
  98. package/dist/engineNoticeCodes.js +0 -182
  99. package/dist/engineSessionParam.d.ts +0 -30
  100. package/dist/engineSessionParam.js +0 -52
  101. package/dist/engineToolLabelStore.d.ts +0 -29
  102. package/dist/engineToolLabelStore.js +0 -31
  103. package/dist/engineWireSdk.d.ts +0 -90
  104. package/dist/engineWireSdk.js +0 -74
  105. package/dist/engineWireTarget.d.ts +0 -14
  106. package/dist/engineWireTarget.js +0 -39
  107. package/dist/env/localeGeo.d.ts +0 -12
  108. package/dist/env/localeGeo.js +2 -77
  109. package/dist/env/localeTag.d.ts +0 -34
  110. package/dist/env/localeTag.js +0 -32
  111. package/dist/env/uiLanguage.d.ts +0 -13
  112. package/dist/env/uiLanguage.js +0 -25
  113. package/dist/envFlag.d.ts +0 -37
  114. package/dist/envFlag.js +0 -40
  115. package/dist/executionLaneCapability.d.ts +0 -48
  116. package/dist/executionLaneCapability.js +0 -54
  117. package/dist/finalVerifyWire.d.ts +0 -67
  118. package/dist/finalVerifyWire.js +3 -43
  119. package/dist/fleet/fleetLedger.d.ts +0 -308
  120. package/dist/fleet/fleetLedger.js +10 -429
  121. package/dist/fleet/fleetProjection.d.ts +0 -240
  122. package/dist/fleet/fleetProjection.js +0 -189
  123. package/dist/fleet/fleetRowAgentType.d.ts +0 -6
  124. package/dist/fleet/fleetRowAgentType.js +1 -32
  125. package/dist/fleet/workflowSizeWarning.d.ts +0 -47
  126. package/dist/fleet/workflowSizeWarning.js +1 -46
  127. package/dist/fleetAgentPanelProjection.d.ts +0 -48
  128. package/dist/fleetAgentPanelProjection.js +8 -173
  129. package/dist/fleetTaskDesc.d.ts +0 -39
  130. package/dist/fleetTaskDesc.js +0 -69
  131. package/dist/forkWireCaps.d.ts +0 -23
  132. package/dist/forkWireCaps.js +1 -24
  133. package/dist/gateOutcome.d.ts +0 -140
  134. package/dist/gateOutcome.js +0 -85
  135. package/dist/gateVocabulary.d.ts +0 -114
  136. package/dist/gateVocabulary.js +1 -161
  137. package/dist/goalStopHook.d.ts +0 -127
  138. package/dist/goalStopHook.js +0 -178
  139. package/dist/headlessPermissionModeWire.d.ts +0 -76
  140. package/dist/headlessPermissionModeWire.js +1 -155
  141. package/dist/headlessReconnectWire.d.ts +0 -84
  142. package/dist/headlessReconnectWire.js +13 -67
  143. package/dist/hitl/approvalDecisionNoteAudit.d.ts +0 -49
  144. package/dist/hitl/approvalDecisionNoteAudit.js +0 -56
  145. package/dist/hitl/approvalOutcomeNote.d.ts +0 -2
  146. package/dist/hitl/approvalOutcomeNote.js +0 -20
  147. package/dist/hitl/approvalResolution.d.ts +0 -113
  148. package/dist/hitl/approvalResolution.js +0 -66
  149. package/dist/hitl/approvalsFeed.d.ts +0 -183
  150. package/dist/hitl/approvalsFeed.js +12 -243
  151. package/dist/hitl/armedGateRegistry.d.ts +0 -55
  152. package/dist/hitl/armedGateRegistry.js +0 -146
  153. package/dist/hitl/askGateWire.d.ts +0 -86
  154. package/dist/hitl/askGateWire.js +1 -95
  155. package/dist/hitl/askParkRowRouting.d.ts +0 -123
  156. package/dist/hitl/askParkRowRouting.js +1 -89
  157. package/dist/hitl/crashConverged.d.ts +0 -148
  158. package/dist/hitl/crashConverged.js +0 -214
  159. package/dist/hitl/editedRuleTextPrecheck.d.ts +0 -109
  160. package/dist/hitl/editedRuleTextPrecheck.js +0 -71
  161. package/dist/hitl/frameRouter.d.ts +0 -134
  162. package/dist/hitl/frameRouter.js +6 -378
  163. package/dist/hitl/gateIdentity.d.ts +0 -39
  164. package/dist/hitl/gateIdentity.js +0 -41
  165. package/dist/hitl/gateLedger.d.ts +0 -267
  166. package/dist/hitl/gateLedger.js +0 -121
  167. package/dist/hitl/hitlBridge.d.ts +7 -431
  168. package/dist/hitl/hitlBridge.js +7 -476
  169. package/dist/hitl/hitlHostSurface.d.ts +0 -150
  170. package/dist/hitl/hitlHostSurface.js +0 -169
  171. package/dist/hitl/livePendingAsk.d.ts +0 -91
  172. package/dist/hitl/livePendingAsk.js +0 -74
  173. package/dist/hitl/localAllowRule.d.ts +0 -62
  174. package/dist/hitl/localAllowRule.js +1 -33
  175. package/dist/hitl/parkOwnership.d.ts +0 -56
  176. package/dist/hitl/parkOwnership.js +0 -22
  177. package/dist/hitl/parkResolver.d.ts +3 -88
  178. package/dist/hitl/parkResolver.js +8 -349
  179. package/dist/hitl/parkRowBirthWait.d.ts +2 -26
  180. package/dist/hitl/parkRowBirthWait.js +3 -93
  181. package/dist/hitl/persistedRulesWire.d.ts +13 -358
  182. package/dist/hitl/persistedRulesWire.js +0 -310
  183. package/dist/hitl/planReviewWire.d.ts +4 -176
  184. package/dist/hitl/planReviewWire.js +9 -312
  185. package/dist/hitl/resumeRunningCard.d.ts +0 -105
  186. package/dist/hitl/resumeRunningCard.js +0 -105
  187. package/dist/hitl/sessionPolicyWire.d.ts +11 -191
  188. package/dist/hitl/sessionPolicyWire.js +0 -149
  189. package/dist/hitl/suspendedReopen.d.ts +3 -24
  190. package/dist/hitl/suspendedReopen.js +0 -14
  191. package/dist/hitl/toolApprovalWire.d.ts +5 -1308
  192. package/dist/hitl/toolApprovalWire.js +5 -945
  193. package/dist/hooksWireCaps.d.ts +0 -38
  194. package/dist/hooksWireCaps.js +0 -190
  195. package/dist/host.d.ts +0 -105
  196. package/dist/host.js +0 -33
  197. package/dist/hostEnv.d.ts +0 -14
  198. package/dist/hostEnv.js +0 -13
  199. package/dist/imagesWireCaps.d.ts +0 -21
  200. package/dist/imagesWireCaps.js +0 -22
  201. package/dist/index.d.ts +0 -134
  202. package/dist/index.js +0 -476
  203. package/dist/interactiveHalt.d.ts +5 -153
  204. package/dist/interactiveHalt.js +0 -111
  205. package/dist/interactiveToolsWire.d.ts +0 -62
  206. package/dist/interactiveToolsWire.js +1 -67
  207. package/dist/leaderConflict.d.ts +0 -59
  208. package/dist/leaderConflict.js +0 -48
  209. package/dist/limitsWire.d.ts +0 -125
  210. package/dist/limitsWire.js +2 -120
  211. package/dist/liveInitToolFace.d.ts +0 -77
  212. package/dist/liveInitToolFace.js +1 -109
  213. package/dist/liveModelCatalog.d.ts +0 -52
  214. package/dist/liveModelCatalog.js +0 -48
  215. package/dist/liveQuestionStore.d.ts +0 -87
  216. package/dist/liveQuestionStore.js +1 -56
  217. package/dist/mcpLiveness.d.ts +0 -151
  218. package/dist/mcpLiveness.js +0 -122
  219. package/dist/mcpPanel.d.ts +0 -104
  220. package/dist/mcpPanel.js +0 -49
  221. package/dist/mcpReconnect.d.ts +0 -58
  222. package/dist/mcpReconnect.js +0 -69
  223. package/dist/mcpWireCaps.d.ts +0 -55
  224. package/dist/mcpWireCaps.js +1 -13
  225. package/dist/memoryComplianceCapability.d.ts +3 -57
  226. package/dist/memoryComplianceCapability.js +0 -57
  227. package/dist/memoryEntriesWire.d.ts +6 -198
  228. package/dist/memoryEntriesWire.js +0 -144
  229. package/dist/memoryOriginCapability.d.ts +3 -53
  230. package/dist/memoryOriginCapability.js +0 -50
  231. package/dist/memorySpecWire.d.ts +0 -116
  232. package/dist/memorySpecWire.js +0 -150
  233. package/dist/model/catalog.d.ts +0 -111
  234. package/dist/model/catalog.js +0 -87
  235. package/dist/model/catalogLoader.d.ts +0 -114
  236. package/dist/model/catalogLoader.js +2 -139
  237. package/dist/model/modelSupplyRules.d.ts +1 -55
  238. package/dist/model/modelSupplyRules.js +0 -62
  239. package/dist/model/providerAuth.d.ts +0 -103
  240. package/dist/model/providerAuth.js +2 -38
  241. package/dist/model/providerCatalog.d.ts +0 -45
  242. package/dist/model/providerCatalog.js +0 -37
  243. package/dist/model/providerPresets.d.ts +0 -33
  244. package/dist/model/providerPresets.js +2 -91
  245. package/dist/model/tierVocabulary.d.ts +0 -31
  246. package/dist/model/tierVocabulary.js +0 -27
  247. package/dist/modelBudgetRule.d.ts +0 -39
  248. package/dist/modelBudgetRule.js +0 -39
  249. package/dist/modelCapabilityProbe.d.ts +0 -175
  250. package/dist/modelCapabilityProbe.js +0 -147
  251. package/dist/modelWireCaps.d.ts +0 -13
  252. package/dist/modelWireCaps.js +0 -13
  253. package/dist/notifications.d.ts +0 -233
  254. package/dist/notifications.js +14 -492
  255. package/dist/oneShotWireCaps.d.ts +0 -34
  256. package/dist/oneShotWireCaps.js +0 -35
  257. package/dist/ownKey.d.ts +0 -33
  258. package/dist/ownKey.js +0 -33
  259. package/dist/panelRunningHistory.d.ts +0 -28
  260. package/dist/panelRunningHistory.js +0 -43
  261. package/dist/peerFrames.d.ts +0 -71
  262. package/dist/peerFrames.js +0 -168
  263. package/dist/peerLaneCapability.d.ts +0 -44
  264. package/dist/peerLaneCapability.js +0 -52
  265. package/dist/permissionRuleIssue.d.ts +0 -30
  266. package/dist/permissionRuleIssue.js +0 -78
  267. package/dist/permissionRulesWriteCapability.d.ts +0 -46
  268. package/dist/permissionRulesWriteCapability.js +0 -54
  269. package/dist/permissionWireCaps.d.ts +0 -37
  270. package/dist/permissionWireCaps.js +0 -37
  271. package/dist/postureKnob.d.ts +0 -71
  272. package/dist/postureKnob.js +0 -86
  273. package/dist/principalWire.d.ts +0 -17
  274. package/dist/principalWire.js +0 -17
  275. package/dist/printToolResultFrame.d.ts +0 -100
  276. package/dist/printToolResultFrame.js +0 -33
  277. package/dist/promptProfileWireCaps.d.ts +0 -13
  278. package/dist/promptProfileWireCaps.js +0 -13
  279. package/dist/readFacePosture.d.ts +0 -43
  280. package/dist/readFacePosture.js +0 -46
  281. package/dist/request/printNotification.d.ts +0 -20
  282. package/dist/request/printNotification.js +0 -55
  283. package/dist/request/taskRequest.d.ts +0 -249
  284. package/dist/request/taskRequest.js +6 -498
  285. package/dist/resumeRefusalCopy.d.ts +0 -136
  286. package/dist/resumeRefusalCopy.js +1 -117
  287. package/dist/retainBackgroundWireCaps.d.ts +0 -48
  288. package/dist/retainBackgroundWireCaps.js +0 -48
  289. package/dist/retryStatus.d.ts +2 -221
  290. package/dist/retryStatus.js +0 -107
  291. package/dist/rewindWireCaps.d.ts +0 -27
  292. package/dist/rewindWireCaps.js +0 -24
  293. package/dist/runCancelContext.d.ts +1 -20
  294. package/dist/runCancelContext.js +0 -34
  295. package/dist/runTerminal.d.ts +0 -273
  296. package/dist/runTerminal.js +0 -177
  297. package/dist/sandboxWire.d.ts +0 -38
  298. package/dist/sandboxWire.js +0 -82
  299. package/dist/scenarioWire.d.ts +0 -60
  300. package/dist/scenarioWire.js +0 -68
  301. package/dist/scratchpadWireCaps.d.ts +0 -11
  302. package/dist/scratchpadWireCaps.js +0 -32
  303. package/dist/sdkWireTransit.d.ts +0 -38
  304. package/dist/sdkWireTransit.js +0 -30
  305. package/dist/seam.d.ts +18 -853
  306. package/dist/seam.js +0 -52
  307. package/dist/seatContract.d.ts +0 -555
  308. package/dist/seatContract.js +5 -304
  309. package/dist/selfOrchestrationDenial.d.ts +0 -189
  310. package/dist/selfOrchestrationDenial.js +0 -162
  311. package/dist/selfOrchestrationWireCaps.d.ts +0 -38
  312. package/dist/selfOrchestrationWireCaps.js +0 -38
  313. package/dist/sessionMap.d.ts +0 -60
  314. package/dist/sessionMap.js +0 -37
  315. package/dist/sessionMemoryStatus.d.ts +11 -114
  316. package/dist/sessionMemoryStatus.js +0 -112
  317. package/dist/sessionModelLatch.d.ts +0 -29
  318. package/dist/sessionModelLatch.js +0 -40
  319. package/dist/sessionPolicyCapability.d.ts +3 -53
  320. package/dist/sessionPolicyCapability.js +0 -52
  321. package/dist/sessionSlot.d.ts +0 -26
  322. package/dist/sessionSlot.js +0 -17
  323. package/dist/skillsWireCaps.d.ts +0 -87
  324. package/dist/skillsWireCaps.js +0 -38
  325. package/dist/sqlEngineCapability.d.ts +0 -118
  326. package/dist/sqlEngineCapability.js +0 -134
  327. package/dist/sseIdleTriage.d.ts +0 -79
  328. package/dist/sseIdleTriage.js +1 -80
  329. package/dist/steering.d.ts +0 -54
  330. package/dist/steering.js +0 -63
  331. package/dist/subagent/engineCompactWire.d.ts +0 -34
  332. package/dist/subagent/engineCompactWire.js +4 -134
  333. package/dist/subagent/engineDelegatedPrompt.d.ts +0 -31
  334. package/dist/subagent/engineDelegatedPrompt.js +1 -103
  335. package/dist/subagent/engineRowStopGate.d.ts +0 -20
  336. package/dist/subagent/engineRowStopGate.js +0 -49
  337. package/dist/subagent/engineSubagentOutput.d.ts +0 -7
  338. package/dist/subagent/engineSubagentOutput.js +1 -51
  339. package/dist/subagent/engineSubagentResume.d.ts +2 -279
  340. package/dist/subagent/engineSubagentResume.js +2 -129
  341. package/dist/subagent/engineSubagentSteer.d.ts +0 -26
  342. package/dist/subagent/engineSubagentSteer.js +0 -63
  343. package/dist/subagent/engineSubagentTail.d.ts +0 -38
  344. package/dist/subagent/engineSubagentTail.js +2 -110
  345. package/dist/subagent/engineTaskHandleWire.d.ts +6 -67
  346. package/dist/subagent/engineTaskHandleWire.js +0 -126
  347. package/dist/subagent/subagentOwnerAbsence.d.ts +0 -2
  348. package/dist/subagent/subagentOwnerAbsence.js +0 -25
  349. package/dist/subagentContentStore.d.ts +3 -260
  350. package/dist/subagentContentStore.js +7 -540
  351. package/dist/systemReminderTag.d.ts +0 -49
  352. package/dist/systemReminderTag.js +0 -61
  353. package/dist/toolResult.d.ts +1 -211
  354. package/dist/toolResult.js +1 -358
  355. package/dist/toolRoster.d.ts +0 -140
  356. package/dist/toolRoster.js +0 -66
  357. package/dist/typePins.d.ts +0 -46
  358. package/dist/types/engineState.d.ts +0 -71
  359. package/dist/types/engineState.js +0 -16
  360. package/dist/ultracodeWireCaps.d.ts +0 -75
  361. package/dist/ultracodeWireCaps.js +0 -92
  362. package/dist/unrefTimer.d.ts +0 -27
  363. package/dist/webSearchBackendCapability.d.ts +0 -72
  364. package/dist/webSearchBackendCapability.js +0 -79
  365. package/dist/webSearchWireCaps.d.ts +0 -37
  366. package/dist/webSearchWireCaps.js +0 -34
  367. package/dist/websearch/searchProviderPresets.d.ts +0 -81
  368. package/dist/websearch/searchProviderPresets.js +0 -27
  369. package/dist/wireErrorTriage.d.ts +4 -160
  370. package/dist/wireErrorTriage.js +0 -171
  371. package/dist/wireRefusalCopy.d.ts +0 -28
  372. package/dist/wireRefusalCopy.js +0 -28
  373. package/dist/workflow.d.ts +0 -40
  374. package/dist/workflow.js +0 -52
  375. package/dist/workflowClient.d.ts +0 -122
  376. package/dist/workflowClient.js +8 -360
  377. package/dist/workflowMonitor.d.ts +2 -72
  378. package/dist/workflowMonitor.js +0 -26
  379. package/dist/writeProtectionCapability.d.ts +0 -112
  380. package/dist/writeProtectionCapability.js +0 -109
  381. package/docs/INTEGRATION-CLIENTS.md +30 -1
  382. package/package.json +1 -1
@@ -1,49 +1,4 @@
1
- /**
2
- * hitl/persistedRulesWire.ts — 持久权限规则(design/179 / design/203)车道的**通用判定半场**
3
- * (A-028.14 上收件,#244 F2,2026-08-14;源形 = cli `src/sema/persistedRulesWire.ts` 的
4
- * 纯判定/wire 面;CC settings 三层 fs 读、facade 装配(SDK 短命 client)、通知呈现全部留宿主)。
5
- *
6
- * ── 病(census top-08 #1 分脑实证)───────────────────────────────────────────────────────────
7
- * 包 `hitl/toolApprovalWire.ts` 的 `readToolApprovalRespondAck` 已把 `rulePersisted` /
8
- * `ruleRefusal` 归一进 `ToolApprovalRespondAck`(delivery/decision 闭集门之后),而 cli 对同两键
9
- * **另持一份裸读**(入参 `unknown`,无上述两道门)—— 同两键两处读法在跑 = 双份台账,server 增键
10
- * /改形时两处各漂各的。web 消费同一帧族([3536] 记账)时还会长出第三份。
11
- * 收口:persist-ack 读口({@link readRulePersistOutcome})与 `readToolApprovalRespondAck`
12
- * **合成一处** —— 三态判决只从**已过包内结构窄化**的 ack 上导出,不再对 wire 原料二次开读。
13
- *
14
- * ── 🔴 能力位 gate,不 trial-by-501 ──────────────────────────────────────────────────────────
15
- * SDK `resources/rules.d.ts` 头注逐字:`capabilities.permissionRules` 与这台 server **所有**规则口
16
- * 的 501 是同一条谓词(`PERMISSION_RULES_ENABLED ∧ 规则店 wired`),**按它 gate**,别按版本号猜、
17
- * 也别拿 501 当探针。撤销面两口(GET/DELETE /v1/rules)自 server 7.12.0 才有路由,而
18
- * `permissionRules` 比撤销面**早出生** ⇒ 一台 7.11.0 worker 会报 `permissionRules:true` 而这两口
19
- * 404 `not_found.route`。所以撤销面**另按 `capabilities.permissionRulesRevoke`**:
20
- * · 在场 ⇒ 路由已铸(答不答仍看 `permissionRules`);
21
- * · 缺席 ⇒ 这台 worker 比撤销面老 ⇒ **藏起治理入口**(不渲死按钮)。
22
- * 读法用包内同步口 `engineCapTrue`(engineCapsCache;未判/缺键 = false = 藏,version-safe)。
23
- * baseUrl 由宿主显式传入(cli 的 `SEMA_LIVE_BASEURL` 缺省读法留壳 —— env 是宿主资产)。
24
- *
25
- * ── 🔴 404 禁按成因分支 ──────────────────────────────────────────────────────────────────────
26
- * redeem 的 404 `not_found.rule_ticket` 是同形信封(伪造/别人的/过期/已用过 + 记录/载荷/确认失败
27
- * 七类共用一格,wire 上分不出来是设计)。唯一可分的是 503 `state.rule_import_retry`:那一支意味着
28
- * **票还在**,原样重试即可(与「这张票没了」是相反的处置)。
29
- *
30
- * ── 🔴 三态规则身份:`behavior` 必填且不给默认(server ≥7.67.0 / sdk 8.8.0 BREAKING)──────────
31
- * 规则车道此前只有 allow,撤销体按 `(rule, scope)` 两元组寻址就够了。7.67.0 起 deny/ask 也进同一个
32
- * 店 —— **同一段文本的 `deny` 与 `allow` 是两条不同的行**。一次瞄准 `allow` 的撤销若被默认成同文本
33
- * 的 `deny`,删掉的是一条本该留着的**拒绝**规则,而调用方收到的是一个 200(引擎侧
34
- * `sameRuleIdentity` 顶注逐字写着这一形)。⇒ 本模块两条纪律:
35
- * · 读:{@link persistedRuleBehaviorOf} 读不出这一格就答 `undefined`,**绝不补 allow 默认**;
36
- * 列举半场**照样把那一行交出去**(丢行 = 把一条活规则从治理清单里藏起来,正是
37
- * {@link listAllPersistedRules} 拒绝做的事),呈现走 {@link persistedRuleBehaviorLabel};
38
- * · 写:{@link revokeTargetFromPersistedRule} 读不出这一格就**拒铸撤销体** —— 猜一态的代价是
39
- * 不可逆地删掉另一态的行,而拒铸的代价只是治理面上少一个按钮。
40
- *
41
- * ── UNTRUSTED ───────────────────────────────────────────────────────────────────────────────
42
- * 规则文本与 `skipped[].reason` 都是引擎/用户 settings 侧的内容,只渲染绝不当代码用;`reason` 是
43
- * **给人看的散文不是机读码**(SDK 头注),分类只许按第一个 `:` 前缀,并且要容得下**没有前缀**的形。
44
- */
45
1
  import type { CcImportLayer, CcImportPrepareResult, CcImportRedeemResult, PersistedRule, RuleBehavior, RuleListParams, RuleListResult, RuleRevokeRequest, RuleRevokeResult } from '@sema-agent/sdk';
46
- /** 规则车道消费的 `client.rules` 切片(注入缝:宿主给真 SDK facade,测试给假件)。 */
47
2
  export interface RulesFacade {
48
3
  list(params?: RuleListParams, opts?: {
49
4
  signal?: AbortSignal;
@@ -51,18 +6,6 @@ export interface RulesFacade {
51
6
  revoke(input: RuleRevokeRequest, opts?: {
52
7
  signal?: AbortSignal;
53
8
  }): Promise<RuleRevokeResult>;
54
- /**
55
- * 收紧方向的**单步写**口(`POST /v1/rules`,engine ≥7.91.0)——**可选口**。
56
- *
57
- * 🔴 **为什么是可选的,而不是必填**:本包今天装的 SDK 型面上**还没有**这个动词(它的 `rules` 资源
58
- * 只有导入两口 + 列举 + 撤销),所以宿主从真 client 装配 facade 时**拼不出**这一格。做成必填 =
59
- * 三端当天全部编译不过,而它们一行新代码都没写错。⇒ 口可缺席,而**缺席是一句有内容的话**:
60
- * {@link writePersistedRule} 据此答 `refused` / `client_too_old`(这次调用连发都没发出去,
61
- * 所以「什么都没写」是**确知**的,不是「不知道」)。
62
- * ⚠️ 这一格的型也因此**由本包按上游的结构声明**({@link PersistedRuleWriteRequest} /
63
- * {@link PersistedRuleWriteWireResult}),而不是从 SDK 取型 —— SDK 地板抬到带这个动词的那一版时,
64
- * 这两只型改为取自 SDK、本口转必填、`client_too_old` 一格退役(见接入文档的包侧缺口段)。
65
- */
66
9
  write?(input: PersistedRuleWriteRequest, opts?: {
67
10
  signal?: AbortSignal;
68
11
  }): Promise<PersistedRuleWriteWireResult>;
@@ -73,154 +16,52 @@ export interface RulesFacade {
73
16
  signal?: AbortSignal;
74
17
  }): Promise<CcImportRedeemResult>;
75
18
  }
76
- /** 规则车道在不在(四口 501 同源谓词)。未判/缺键/base 缺席 = false = 整面藏。 */
77
19
  export declare function persistedRulesLaneAvailable(baseUrl: string | undefined): boolean;
78
- /**
79
- * 治理面(list + revoke)在不在。**两段合取**:
80
- * · `permissionRulesRevoke` 在场 = 撤销面路由已铸(缺席 = worker 比撤销面老 ⇒ 藏);
81
- * · `permissionRules` 为真 = 车道真答话(店 + 旋钮)。
82
- * 只查前者会在「7.11.0 且规则店在」的 worker 上渲出一个恒 404 的治理入口。
83
- */
84
20
  export declare function persistedRulesGovernanceAvailable(baseUrl: string | undefined): boolean;
85
- /**
86
- * 收紧方向的单步写入口(把某条规则改成 deny/ask)对**这次调用**在不在。
87
- *
88
- * 🔴 只派生自 `capabilities.permissionRulesWrite` 自己的四态读数(`permissionRulesWriteAvailable`),
89
- * **不合取** `permissionRules`、也**不**再读一遍 `engineCapTrue`——那是撤销面(`persistedRulesGovernanceAvailable`)
90
- * 的读法,上游明说两位的读法别混:撤销面那一位是与调用方身份无关的部署级存在性信号,必须合取车道位
91
- * 才是完整判据;写口这一位的值本身**已经**编码了「车道在不在 ∧ 这次调用带不带得到身份」两件事,
92
- * 再合取一次等于给同一件事立第二个判官——车道开着但写口所在的引擎还没起播,或反过来,合取会把
93
- * 其中一种真实的过渡态错判。
94
- * 读的也是**同一份**能力位状态(该四态读器自己的 per-baseUrl 表),不是另开一张表。
95
- *
96
- * 🔴 **显式 `undefined` 不许回落装好的默认读锚**(异源对抗复审 [medium] 采纳,真病):
97
- * `observedPermissionRulesWrite(baseUrl = engineWireTarget()?.baseUrl)` 的默认参数只在参数
98
- * **省略**时生效,而调用方显式传 `undefined` 与省略在 JS 里同判——原样转发会让「这次没有 baseUrl」
99
- * 被悄悄换成**装好的默认引擎**那一份读数,与上面两口(`engineCapTrue` 对 `undefined` 恒 `unprobed`
100
- * ⇒ false,零默认读锚回落)不同律;多引擎宿主上会把「这个会话没配 baseUrl」误读成「随便一个已装
101
- * 引擎的答案」。传空串绕开默认参数(reader 对空串的处置是 `unobserved`,与 `undefined` 的意图一致
102
- * 但不触发默认值语义)。
103
- */
104
21
  export declare function persistedRulesWriteAvailable(baseUrl: string | undefined): boolean;
105
- /** {@link readCcImportRedeemCounts} 的判决体:200 体上真读出来的落库/去重计数。 */
106
22
  export interface CcImportRedeemCounts {
107
23
  persisted: number;
108
24
  deduped: number;
109
25
  }
110
- /**
111
- * cc-import redeem 200 体的兑付计数**双代归一读口**(server 7.46 未声明 BREAKING 的消费半场):
112
- * · **新形**(server 7.46+):`result.members[]` 判别联合,member.status ∈ {'persisted','deduped'}
113
- * (refused 不上 200 体 —— server 侧折进 404/503,见头注「404 禁按成因分支」);
114
- * · **旧形**(≤7.45;SDK 7.2.0 `rules.d.ts` 仍此形):`result.persisted[]` / `result.deduped[]` 桶。
115
- * · 纪律与 0.43.0 ruleOffers 窄读器同款:**新键(members)在场就按新键读** —— 即使全 0 也绝不
116
- * 回落旧键;两形都缺 ⇒ `null`(诚实缺席,调用方渲 unknown,绝不渲 0/成功)。
117
- * 入参吃 200 体的 `result` 字段(`unknown`:SDK 声明形已与真 wire 脱节,边界必须结构窄化)。
118
- */
119
26
  export declare function readCcImportRedeemCounts(result: unknown): CcImportRedeemCounts | null;
120
- /**
121
- * 规则口失败的**处置分类**(不是成因分类)。SDK 的 typed 错误族按 `status` + `errorCode` 读,
122
- * 结构读法(不 instanceof)—— 注入面可能是假件,bundling 下 instanceof 也不该是承重判据。
123
- */
124
- export type RulesFailure =
125
- /** 501 `capability.rule_store_required` —— 这台部署没接规则店/旋钮关着 ⇒ 整面藏起来。 */
126
- {
27
+ export type RulesFailure = {
127
28
  kind: 'lane-unavailable';
128
29
  message: string;
129
- }
130
- /** 404 `not_found.route` —— worker 比撤销面老(≤7.11.0)⇒ 治理入口藏起来。 */
131
- | {
30
+ } | {
132
31
  kind: 'route-missing';
133
32
  message: string;
134
- }
135
- /** 404 `not_found.rule_ticket` —— 这张票在这里不可用,**禁按成因分支**:丢票,重来一遍。 */
136
- | {
33
+ } | {
137
34
  kind: 'ticket-dead';
138
35
  message: string;
139
- }
140
- /** 503 `state.rule_import_retry` —— **票还在**,原样重试(与 ticket-dead 相反的处置)。 */
141
- | {
36
+ } | {
142
37
  kind: 'retry-same-ticket';
143
38
  message: string;
144
39
  retryAfterSec?: number;
145
- }
146
- /** 503 `state.rule_remove_failed` —— 什么都没写,或结局不定;自己重试后用 list 对账。 */
147
- | {
40
+ } | {
148
41
  kind: 'retryable';
149
42
  message: string;
150
- }
151
- /** 400 `request.query_invalid` —— 游标铸在别的 rev/principal/scope 上 ⇒ 丢游标从头列。 */
152
- | {
43
+ } | {
153
44
  kind: 'cursor-stale';
154
45
  message: string;
155
- }
156
- /** 413 —— 候选总数超上限(200):缩短后重发,重试同一份没有意义。 */
157
- | {
46
+ } | {
158
47
  kind: 'too-many-candidates';
159
48
  message: string;
160
- }
161
- /** 403 `auth.operator_only` —— 越权读/撤销/写(替别人)被拒。 */
162
- | {
49
+ } | {
163
50
  kind: 'forbidden';
164
51
  message: string;
165
- }
166
- /**
167
- * 400 `request.body_shape` —— **体读不出形**(身份三键缺/坏,或 `scope` 不是 `global` /
168
- * `project:<非空 root>`)。🆕 0.77.0 从通用 `error` 里分出来:同一份体重发永远同一个结果 ⇒ 处置是
169
- * **改请求**,不是重试、也不是「服务端出问题了」。引擎对这一码在写与撤两条腿上同句同码,所以它
170
- * 在本表里也只占一格。
171
- * ⚠️ **成文改口**:0.76.x 及以前这一码落 `error`;按 `kind === 'error'` 认「一般错误」的消费端要把
172
- * 这一格挪到自己的「请求有问题」分支(渲染面可不变——本臂同样带 `message`)。
173
- */
174
- | {
52
+ } | {
175
53
  kind: 'body-shape';
176
54
  message: string;
177
- }
178
- /**
179
- * 400 `request.field_invalid` —— **某个字段的值被拒**(单步写口专有)。两类成因共用这一码:
180
- * 方向(写口只收 deny/ask)与车道的逐行判据(规则文本非规范拼写 / scope 的字节 / 行不自洽)。
181
- * 🔴 **两类在这条面上分不出来**:引擎把机读的 `reason` 与人读的 `detail` 放在响应体里,而本包消费的
182
- * 错误型面只保留 `status` / `errorCode` / `message` 三格 ⇒ 那两格**停在 wire 上**。所以本臂只说
183
- * 「这条写没落地,是字段值被拒」,**不猜**是哪一格、更不猜该改成什么(猜一个规范拼法再试,等于
184
- * 替引擎的解析器发明一份第二真源)。
185
- */
186
- | {
55
+ } | {
187
56
  kind: 'field-refused';
188
57
  message: string;
189
- }
190
- /**
191
- * 405 **且码是引擎自己的裸 `method_not_allowed`** —— **这条路径在,这个动词不在**:这台 worker 比这条
192
- * 动词老(路径上只路由了它认得的那几个)。
193
- * ⚠️ 别读成「这台不支持规则面」(那看车道能力位),也别读成「路径不存在」(那是 404 `not_found.route`)。
194
- * 🔴 **要码在场才给这个结论**(异源复审 R2 [medium],真病):引擎那一支发的是没有前缀族的裸码,
195
- * 而「裸码」与「**没有**码」在这条面上长得很像 —— 一个中间层/网关拦下 POST 时回的常是 HTML 或空体
196
- * (读不出任何码)。把无码 405 也判成这一格,等于凭一个谁都能发的状态码断言**对端的版本**,
197
- * 而它导出的动作(藏起入口 / 要求升级 worker)恰恰是错的。无码那一支走 {@link RulesFailure}
198
- * 的 `method-refused`。
199
- */
200
- | {
58
+ } | {
201
59
  kind: 'method-unsupported';
202
60
  message: string;
203
- }
204
- /**
205
- * 405 **而码给不出出处**(缺席 / 空串 / 不是引擎那个裸码)—— 看见的是「这个动词被拒了」,而**谁拒的、
206
- * 拒在哪一段不知道**:引擎那一侧的 405 发在路由分派期,但一个中间层 / 网关也能发同一个状态码,而它
207
- * **可能已经把请求转给引擎**、事后才按自己的策略回 405。
208
- * 处置两条:① 在有副作用的动词上当作「**结局说不清**」,去对账,别宣布「没做」(异源复审 R3 [medium]);
209
- * ② **别**据此要求升级 worker、也别据此藏掉入口 —— 那两个动作要的是能力位或版本证据,不是一个谁都能发
210
- * 的状态码。要说「这台 worker 比这个动词老」,只有 `method-unsupported`(引擎自己的裸码)才有资格。
211
- */
212
- | {
61
+ } | {
213
62
  kind: 'method-refused';
214
63
  message: string;
215
- }
216
- /**
217
- * 503 `state.rule_write_failed` —— 单步写的**结局不定**:店抖动 / 兑付面没交回可判的终局 / 写确实
218
- * 落了而回读它时一条并发撤销已先到,三者在这条口上**不可分辨**。
219
- * 🔴 与 {@link RulesFailure} 里其余任何一臂的分别是承重的:它**既不是**「没写」也**不是**「写了」。
220
- * 宣布没写会让人以为可以重来,宣布写了会谎报一次可能已被撤掉的收紧。处置 = 重试,然后用
221
- * {@link listAllPersistedRules} 对账。
222
- */
223
- | {
64
+ } | {
224
65
  kind: 'write-indeterminate';
225
66
  message: string;
226
67
  } | {
@@ -228,58 +69,13 @@ export type RulesFailure =
228
69
  message: string;
229
70
  };
230
71
  export declare function classifyRulesFailure(e: unknown): RulesFailure;
231
- /**
232
- * 一条持久规则是哪一态 —— sdk `RuleBehavior` 的**运行期镜像**(引擎侧同一张闭三词表)。
233
- * `allow` = 一次人工批准的常驻形(卡上点的「不再询问」);`deny` / `ask` = 「永不运行」与
234
- * 「每次都问我」的常驻形。**一套文法、一种规范拼法、一族匹配器**服务三态,态是**文本旁边的
235
- * 一格**,永远不是文本的一部分。
236
- * 🔴 门 `run-rules-side-test.mjs` G9a 对 sdk 的联合成员**逐词等值**对账(缺一词红、多一词红)。
237
-
238
- * 🔴 形制:`Object.freeze` 的数组,**不是**只在类型面只读的 `readonly T[]` —— 后者一行 `.splice()`
239
- * 就能改,而公面消费者拿到的正是这个实例(本仓已定谳的病形,同 `RESUME_RETRY_LATER_CODES`)。
240
- */
241
72
  export declare const PERSISTED_RULE_BEHAVIORS: readonly RuleBehavior[];
242
- /**
243
- * 这一行是哪一态。**闭三词**之外(含整键缺席的老 worker 行)一律 `undefined`。
244
- *
245
- * 🔴 **绝不补默认**:缺席是「这台 worker 说不出来」,不是 `allow`。补一个默认会让呈现面
246
- * 对一条 deny 行说 allow,而撤销面据此瞄准另一态。
247
- * 🔴 这里**按闭集读**(与本包其余开集读口刻意不同):这一格是**身份**的一格,不是一个展示词——
248
- * 读不懂的身份必须判「读不出」,而不是原样当成一个能拿去撤销的态。呈现层要原样渲那个词,
249
- * 走 {@link persistedRuleBehaviorLabel}(它是开集的)。
250
- */
251
73
  export declare function persistedRuleBehaviorOf(rule: unknown): RuleBehavior | undefined;
252
- /** 读不出态时呈现面渲的那个词。**逐字锚**(三端共用一句;端零自拼)。 */
253
74
  export declare const PERSISTED_RULE_BEHAVIOR_UNKNOWN = "(unknown)";
254
- /**
255
- * 治理行上「态」那一列的**唯一措辞铸点**。
256
- * 🔴 三态渲词本身;**表外词原样渲**(开集 —— 引擎加词那天治理面照样看得见那个词,不至于把一条
257
- * 真实的行渲成「读不出」);**整键缺席/坏形**才渲 {@link PERSISTED_RULE_BEHAVIOR_UNKNOWN} ——
258
- * 它不冒充三态里的任何一个,读到它的人知道下一步是升级那台 worker。
259
- */
260
75
  export declare function persistedRuleBehaviorLabel(rule: unknown): string;
261
- /**
262
- * 一条列举行 → 撤销体(`rules.revoke()` 的入参)。**按内容寻址**,这条面上下没有任何 id。
263
- *
264
- * 🔴 **身份三元组逐字回传**(`behavior` / `rule` / `scope`):拼法等价但不逐字相同的 scope 什么都
265
- * 匹配不上,而且会得到一个笑呵呵的 `no-op`;所以原样送回引擎给的那串字节,别拿解析后的形重铸。
266
- * 🔴 **只带身份三键 + 可选 `principal`**:`source` / `status` 是**派生键**,回传它们会被拒。
267
- * 🔴 **`behavior` 读不出 ⇒ 拒铸(返回 `undefined`)**,这正是本次 BREAKING 的全部理由:猜一态的
268
- * 代价是不可逆地删掉另一态的行且调用方收到 200;拒铸的代价只是治理面少一个按钮。调用方据此
269
- * 藏掉撤销入口(并可用 {@link persistedRuleBehaviorLabel} 告诉用户为什么)。
270
- * 🔴 `rule` / `scope` 任一读不出也拒铸:按 `undefined` 撤销什么都对不上。
271
- * 🔴 **显式给了一个无效 `principal` ≠ 没给**(异源对抗复审 [high]):`principal` **缺席**明确表示
272
- * 「撤**我自己的**」。若把一个显式传进来的空串/非串静默降级成缺席,一次瞄准**别人**的 operator
273
- * 撤销就会转向**调用者自己**的规则桶,并且拿到一个 200 —— 而目标值算空在治理面上是常见形
274
- * (表单空字段、一次没查到的用户名)。⇒ 键**在场但值不合法**时**拒铸整只**,与 `behavior`
275
- * 读不出同一条处置。`opts` 整只不给、或给了但不含这个键,才是「缺席 = 撤我自己的」那个合法意图。
276
- * ⚠️ 合法值**原样送出不 trim**:principal 的规范形归引擎,壳替它 trim 会让两端对「同一个人」的
277
- * 拼法各有一份判据。
278
- */
279
76
  export declare function revokeTargetFromPersistedRule(rule: unknown, opts?: {
280
77
  principal?: string;
281
78
  }): RuleRevokeRequest | undefined;
282
- /** 一次「列全」的结果。`rules` 恒是**完整**清单(翻不完 ⇒ 走 failure,绝不交半份清单)。 */
283
79
  export type ListAllPersistedRulesOutcome = {
284
80
  ok: true;
285
81
  rules: PersistedRule[];
@@ -288,123 +84,27 @@ export type ListAllPersistedRulesOutcome = {
288
84
  ok: false;
289
85
  failure: RulesFailure;
290
86
  };
291
- /**
292
- * 列全一位 principal 名下活着的规则。
293
- *
294
- * 🔴 **翻页要翻完**:`nextCursor` 缺席才是终点 —— 半途停下拿到的是一份不全的清单,而治理视图
295
- * 恰恰最不能拿不全的清单当全量。所以这里 drain 到底,任何一页失败都不交部分结果。
296
- * 🔴 **游标绑 `(rev, principal, scope)`**:两页之间有人加/删了规则 ⇒ 第二页 400
297
- * `request.query_invalid`。处置 = **丢游标从头列一次**(静默重置成「接着上一页」会得到一份既漏行
298
- * 又重行的清单);从头再撞一次 ⇒ 如实报 cursor-stale,由调用方(人按 r 刷新)决定。
299
- * 🔴 **调用方 cursor 不收**(复审 F2 对抗复审 [medium]):类型上剔掉 `cursor` 还不够 —— JS
300
- * 调用方仍能塞进来,而首页的 `...params` 会把它原样送出 ⇒ 「列全」从**中途**开始却报 `ok:true`
301
- * 完整清单(治理面据此藏掉仍然生效的规则)。运行期显式剥除 + 留痕:drain 恒从第一页起,
302
- * 「接着别人的 keyset」证明不了完整性,与本函数的契约(rules 恒完整)结构性冲突。
303
- */
304
87
  export declare function listAllPersistedRules(facade: RulesFacade, params?: Omit<RuleListParams, 'cursor'>, opts?: {
305
88
  signal?: AbortSignal;
306
89
  }): Promise<ListAllPersistedRulesOutcome>;
307
- /**
308
- * 单步写口**不收**的那一态 —— 放宽方向的单一铸点。
309
- *
310
- * 🔴 `satisfies RuleBehavior` 不是装饰:它把这个字面量钉在**引擎的态词表**上。哪天词表里没有这个词了,
311
- * 本行当场编译不过 —— 而一个手写的排除词在那天会安静地排除一个不存在的东西。
312
- */
313
90
  declare const DIRECT_WRITE_EXCLUDED_BEHAVIOR = "allow";
314
- /**
315
- * 单步写口收得下的**态**,运行期表。**由 {@link PERSISTED_RULE_BEHAVIORS} 减去放宽那一词派生**,
316
- * 源码里**没有第二个 behavior 字面量数组**(门对这一条有边界钉)。
317
- *
318
- * 🔴 **为什么必须是派生而不是一张两词表**:态的词表属主只有一个(引擎)。一张手抄的两词表会在词表
319
- * 加员的那天变成一句没人复核过的旧话 —— 新词既进不来,也没有任何一道门会响。派生式让这句话跟着
320
- * 词表走:这里表达的不是「有哪两个词」,而是**「三态里哪些进得了这条口」**。
321
- * 🔴 **放宽方向在类型上就拼不出来**:常驻放行只有两条路(审批卡上的人点头 / 一次显式的 settings 导入),
322
- * 这条口**不是**第三条。一个能拼出来的放宽入参会让调用方以为它是。
323
- * 🔴 形制同兄弟表:`Object.freeze` 的数组,不是只在类型面只读的 `readonly T[]` —— 后者一行 `.splice()`
324
- * 就能改,而公面消费者拿到的正是这个实例。
325
- */
326
91
  export declare const PERSISTED_RULE_WRITE_BEHAVIORS: readonly Exclude<RuleBehavior, typeof DIRECT_WRITE_EXCLUDED_BEHAVIOR>[];
327
- /** 单步写口收得下的态(型,**由上面那张表派生**——表与型不会各走各的)。 */
328
92
  export type PersistedRuleWriteBehavior = (typeof PERSISTED_RULE_WRITE_BEHAVIORS)[number];
329
- /**
330
- * 单步写口的请求体 —— 与撤销体**同一份身份三元组**,差别只有方向那一格收窄成
331
- * {@link PersistedRuleWriteBehavior}。
332
- *
333
- * ⚠️ **型由本包按上游的结构声明**(本包今天装的 SDK 型面上还没有这个动词),所以它是一份**对位形**
334
- * 而不是取来的型;地板抬到带这个动词的那一版时改为取型、本形退役(见接入文档的包侧缺口段)。
335
- */
336
93
  export interface PersistedRuleWriteRequest {
337
- /** 要写的是哪一态。**只收收紧方向**;放宽那一词在类型上拼不出来。 */
338
94
  behavior: PersistedRuleWriteBehavior;
339
- /**
340
- * 规则文本。🔴 **必须已经是引擎的规范拼写**:解析器会归一化多余空白,而店里落的是规范形 ——
341
- * 若这条口照收,调用方将**叫不出自己刚写的那条规则的名字**(拿同一份字节去撤,撤不掉一条正在
342
- * 生效的规则)。非规范拼写由引擎当场拒(见 {@link PersistedRuleWriteOutcome} 的 `field_refused`)。
343
- * 规范形是不动点:列举面的行与本口回包里的 `rule.rule` 都已经是规范形,**原样回传**即可。
344
- */
345
95
  rule: string;
346
- /** 作用域判别式串:`global` 或 `project:<非空 root>`,与撤销体**同一份表示**。 */
347
96
  scope: string;
348
- /** 越权域:替**别人**写。缺席(或自己的名字)= 写自己的。判据与撤销体逐字相同。 */
349
97
  principal?: string;
350
98
  }
351
- /**
352
- * 单步写口 200 体的**对位形**(同上:本包声明,不是取来的型)。
353
- *
354
- * 🔴 `status` 的判别位是**「这次调用有没有往店里写」**,不是「这条规则现在在不在」。
355
- * 🔴 `rule` 是**从店里读回的那一行**,与列举面的行**逐格相同**(含派生的 `source` / `status`)——
356
- * 所以「写完把它插进我本地那份清单」不需要任何翻译,撤销体想要的三串也逐字都在这一行里。
357
- */
358
99
  export interface PersistedRuleWriteWireResult {
359
100
  status: 'persisted' | 'no-op';
360
101
  rev: number;
361
102
  rule: PersistedRule;
362
103
  }
363
- /**
364
- * 写**没落地**的成因闭集。每一词都对着一条真码 / 一条本地判据,**核不到的不铸**。
365
- *
366
- * 前四词是**发出去之前**就定局的(本地拒铸,连一次往返都没有);后六词是引擎的答话。
367
- * 🔴 十词共同的、也是唯一的承诺:**这次调用一个字都没写进店**。所以一个拿不出这句话的证据的成因
368
- * **不许**进这张表 —— 哪怕它看上去像一次拒绝(例:一个来源不明的 405,见
369
- * {@link PERSISTED_RULE_WRITE_UNKNOWN_REASONS} 的 `unattributed_method_refusal`)。「说不清」不在这张表里,它是
370
- * {@link PersistedRuleWriteOutcome} 的另一臂({@link PERSISTED_RULE_WRITE_UNKNOWN_REASONS})。
371
- */
372
104
  export declare const PERSISTED_RULE_WRITE_REFUSAL_CAUSES: readonly ["unwritable_behavior", "unreadable_identity", "unusable_principal", "client_too_old", "field_refused", "body_shape", "operator_only", "store_absent", "lane_too_old", "route_absent"];
373
- /** {@link PERSISTED_RULE_WRITE_REFUSAL_CAUSES} 的成员型(**由表派生**,不留第二份手抄)。 */
374
105
  export type PersistedRuleWriteRefusalCause = (typeof PERSISTED_RULE_WRITE_REFUSAL_CAUSES)[number];
375
- /**
376
- * 「**不知道落没落**」的成因闭集。
377
- *
378
- * 🔴 这五词与上面那十词**不可互折**:那些说的是「确知没写」,这五词说的是「**读不出结局**」。
379
- * 把后者渲成前者会让人以为可以干净地重来一遍;渲成 `persisted` 则是谎报一次可能根本没发生的
380
- * 收紧。四词的处置一律是:重试,然后用 {@link listAllPersistedRules} 对账。
381
- *
382
- * 🔴 **「重试」在批准台账上是安全的,而这条安全性在引擎里、不在这里**(异源复审 R2 [high] 提出的
383
- * 「重放会让台账无界增长」,亲读引擎的写腿验真后**改成文、不改代码**):引擎在落任何东西之前**先问
384
- * 「这条身份已经站着吗」**,站着就**一个字都不写**并答 `no-op`。所以一次「说不清」之后**顺序**重发
385
- * 同一份身份三元组,最坏情况是收到 `no_op` —— 批准台账不增长、桶的修订号不推进。
386
- * ⚠️ 真正会让同一条逻辑规则带上两枚因果点的是**并发**:两个写者同时看见「不在」而各落一枚,
387
- * 那是 add-wins 的正解(两枚点、一条规则),两边都会如实收到 `persisted`,没有人被告知「没写」。
388
- * ⚠️ 也正因为这道前问在**引擎**那一侧,本包**不**在重试前自己先列举一遍 —— 那会把引擎已经做了的
389
- * 读再做一次,并且给同一个问题立第二个说话人。「先对账再决定要不要重发」是调用方的策略自由,
390
- * 不是本口的前置条件。
391
- */
392
106
  export declare const PERSISTED_RULE_WRITE_UNKNOWN_REASONS: readonly ["indeterminate", "malformed_result", "identity_mismatch", "unattributed_method_refusal", "unclassified"];
393
- /** {@link PERSISTED_RULE_WRITE_UNKNOWN_REASONS} 的成员型(**由表派生**,不留第二份手抄)。 */
394
107
  export type PersistedRuleWriteUnknownReason = (typeof PERSISTED_RULE_WRITE_UNKNOWN_REASONS)[number];
395
- /**
396
- * 单步写一条收紧规则的**结局**(判别联合)。
397
- *
398
- * 🔴 **`persisted` 说的是「这次调用往店里写了」,不是「一条新规则诞生了」**(上游头注逐字):等价
399
- * 规则已在店的那一支**仍然铸一枚新 dot** ⇒ 车道如实报 `persisted`。要判**逻辑规则**是不是新的,
400
- * 看回包那一行的 `adds`(批准台账)—— 别看这一格。本包**不**替调用方做那个判断:它需要「写之前
401
- * 它在不在」这个本函数手上没有的事实,而编一个出来正是诚实缺席要挡的东西。
402
- * 🔴 **`no_op` 是一句关于「这次调用」的话**:这条身份此前就站着,本次**一个字都没写** —— `adds`
403
- * 不增长、桶的 `rev` 不推进(它是列举游标的锚)。所以重试安全,但它**不是**第二次批准。
404
- * ⇒ 一次「说不清」之后顺序重发同一份身份,最坏结局就是这一臂:批准台账不会因为重试而增长。
405
- * 🔴 **`unknown` 与 `persisted` 不共形**:两臂的键集刻意不相交(`why` vs `rev` / `rule`),一个把
406
- * 「读不出」当成「写上了」的消费端**连拼都拼不出来**。
407
- */
408
108
  export type PersistedRuleWriteOutcome = {
409
109
  status: 'persisted';
410
110
  rev: number;
@@ -422,42 +122,13 @@ export type PersistedRuleWriteOutcome = {
422
122
  why: PersistedRuleWriteUnknownReason;
423
123
  message: string;
424
124
  };
425
- /**
426
- * 单步写一条**收紧**规则(deny/ask)进持久店 —— 撤销面的对偶,无同意仪式往返。
427
- *
428
- * 判据次序照引擎那一侧逐条对位,**只多一道在最前面**:
429
- * ⓪ **口在不在**(注入的 facade 有没有这个动词)—— 与「按能力位 gate、别 trial-by-501」同一条纪律:
430
- * 一次连动词都拼不出来的调用不该先去撞引擎的限流桶;
431
- * ① 体形(身份三键读得出);② 方向(只收收紧);③ scope 读得出形;④ 越权域那一格。
432
- * ②③④ 的**本地**判据刻意比引擎宽:本地只判「这串是不是一个 X」,「这个 X 写得进去吗」永远由引擎答
433
- * (规范拼写、scope 的字节、行自洽都是引擎的判据)—— 壳替它判一遍就是同一件事的第二份真源。
434
- *
435
- * 🔴 **本函数不重试**:一次「说不清」被自动重放,重试预算与节奏就成了本包替调用方做的决定;而对账
436
- * 那一步(用 {@link listAllPersistedRules} 读回来看)只有调用方做得了。
437
- * ⚠️ 手工重试**在批准台账上是安全的**(引擎落地前先问「已经站着吗」,站着就一个字都不写)——
438
- * 逐条理由见 {@link PERSISTED_RULE_WRITE_UNKNOWN_REASONS} 的头注。
439
- * 🔴 **回包那一行走列举面同一只窄化器**,不给同一份判据立第二个法官;读不出 ⇒ `unknown` /
440
- * `malformed_result`,**绝不**当成「写上了」。
441
- * 🔴 **窄化之后还有一道身份对账**(`identity_mismatch`):回包那一行的身份三元组必须与发出去的那份逐字
442
- * 相同。这不是同一份判据的第二个法官 —— 窄化器答「读得出来吗」,对账答「是不是我要的那条」,而后者的
443
- * 材料只有写腿手上有。列举面「态读不出的行照样交出去」的纪律在这里不适用:看得见 ≠ 证明得了。
444
- * ⚠️ 回包行的 `adds[].origin` **不是**「谁写的这条规则」的判据(引擎今天从审批记录的种类派生出处词,
445
- * 而本口落店走的是同一条兑付腿)—— 原样透传,不进本包任何一条判据。
446
- */
447
125
  export declare function writePersistedRule(facade: RulesFacade, input: PersistedRuleWriteRequest, opts?: {
448
126
  signal?: AbortSignal;
449
127
  }): Promise<PersistedRuleWriteOutcome>;
450
- /**
451
- * `skipped[].reason` 的分类。**只按第一个 `:` 前缀**,且必须容得下**没有前缀**的两种真值形
452
- * (整层 JSON 解不开 / 条目不是串)——SDK 头注逐字:reason 是给人看的散文,不是机读码,
453
- * 全串等值匹配与「裸码」两种读法都会漂。
454
- * 前缀形判据刻意保守(`RuleRejectCode` 形:小写 + 点/下划线),防把散文里的第一个冒号误读成码。
455
- */
456
128
  export declare function classifySkippedReason(reason: string): {
457
129
  code?: string;
458
130
  text: string;
459
131
  };
460
- /** 「不再询问到底存上了没」的三态判决(呈现半场按它渲一行,绝不据它翻转裁决)。 */
461
132
  export type RulePersistOutcome = {
462
133
  state: 'unknown';
463
134
  } | {
@@ -466,21 +137,5 @@ export type RulePersistOutcome = {
466
137
  state: 'refused';
467
138
  reason?: string;
468
139
  };
469
- /**
470
- * respond 回执上「不再询问到底存上了没」的**结构化读口**。
471
- *
472
- * 🔴 **单一台账**(A-028.14 收口本体):`rulePersisted` / `ruleRefusal` 的结构窄化只有
473
- * {@link readToolApprovalRespondAck} 这一份 —— 本函数不对 wire 原料二次开读,ack 过不了包内
474
- * 结构门(缺 `delivery:'applied'` / `approvalId` / 三词闭集 `decision`)⇒ **`unknown`**:
475
- * 一张连回执身份都不成形的 ack,不配驱动一行「已保存」的用户告知(诚实缺席优先)。
476
- * 收口前 cli 的裸读会把 `{rulePersisted:true}` 这类半形对象读成 `persisted` —— 那正是双份台账
477
- * 各漂各的形,常驻套对这一格有反向钉。
478
- *
479
- * 🔴 `rulePersisted` 缺席 ≠ `false`(未带 persistRule 的回决 / 旧 server ⇒ 字段省略);
480
- * 🔴 规则没存上**从不翻转裁决** —— 200 + `rulePersisted:false` + `ruleRefusal` 是诚实形,
481
- * 宿主只说「这次放行了,但『不再询问』没存上」,绝不渲成整次审批失败。
482
- * 🔴 `rule_lane_unavailable` **四种成因共用一格、两种是本卡局限** ⇒ 禁据一帧判断整台部署的车道
483
- * 在不在(那要看能力位)。
484
- */
485
140
  export declare function readRulePersistOutcome(ack: unknown): RulePersistOutcome;
486
141
  export {};