@sema-agent/client-core 0.105.0 → 0.107.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 (152) hide show
  1. package/CHANGELOG.md +301 -0
  2. package/README.md +40 -21
  3. package/dist/adapt/arms.js +10 -1
  4. package/dist/adapter/activeRunSelfHeal.d.ts +21 -2
  5. package/dist/adapter/activeRunSelfHeal.js +129 -28
  6. package/dist/adapter/downstream/eventToSdkMessage.d.ts +0 -5
  7. package/dist/adapter/downstream/eventToSdkMessage.js +20 -19
  8. package/dist/adapter/downstream/terminalToSdkResult.js +2 -3
  9. package/dist/adapter/downstream/wiringManifestView.d.ts +1 -3
  10. package/dist/adapter/downstream/wiringManifestView.js +0 -1
  11. package/dist/adapter/runStream.js +3 -4
  12. package/dist/approvalReachWire.d.ts +1 -0
  13. package/dist/approvalReachWire.js +4 -1
  14. package/dist/approvalSeat.d.ts +21 -0
  15. package/dist/approvalSeat.js +73 -0
  16. package/dist/assistantInbox.d.ts +2 -0
  17. package/dist/assistantInbox.js +3 -0
  18. package/dist/checkpointRowVerdict.d.ts +29 -0
  19. package/dist/checkpointRowVerdict.js +98 -0
  20. package/dist/coreValuePorts.d.ts +12 -1
  21. package/dist/coreValuePorts.js +10 -0
  22. package/dist/decideFailureNote.js +3 -1
  23. package/dist/decideReceipt.d.ts +9 -0
  24. package/dist/decideReceipt.js +29 -1
  25. package/dist/declared/supportFloorDeclared.js +2 -2
  26. package/dist/deviceRebind.d.ts +7 -0
  27. package/dist/deviceRebind.js +39 -5
  28. package/dist/displayUntrusted.d.ts +5 -3
  29. package/dist/displayUntrusted.js +50 -41
  30. package/dist/engineAddress.d.ts +3 -0
  31. package/dist/engineAddress.js +25 -0
  32. package/dist/engineDirectory.js +9 -17
  33. package/dist/engineErrorCodes.d.ts +8 -0
  34. package/dist/engineErrorCodes.js +8 -0
  35. package/dist/engineNoticeCodes.d.ts +38 -3
  36. package/dist/engineNoticeCodes.js +167 -11
  37. package/dist/engineRowRef.js +1 -1
  38. package/dist/errorSupplementRoles.js +4 -1
  39. package/dist/eventLeg.d.ts +2 -2
  40. package/dist/eventLeg.js +2 -1
  41. package/dist/executionLaneCapability.js +3 -2
  42. package/dist/executionLaneWords.d.ts +1 -0
  43. package/dist/executionLaneWords.js +3 -0
  44. package/dist/fleet/fleetProjection.js +26 -5
  45. package/dist/generated/engineFactTables.d.ts +2 -1
  46. package/dist/generated/engineFactTables.js +3 -1
  47. package/dist/generated/engineNoticeTables.js +28 -7
  48. package/dist/generated/sdkFactTables.d.ts +3 -0
  49. package/dist/generated/sdkFactTables.js +15 -0
  50. package/dist/generated/settingsSchemaFns.d.ts +11 -0
  51. package/dist/generated/settingsSchemaFns.js +2 -1
  52. package/dist/generated/settingsSchemaSafetyMergeSpec.js +1 -1
  53. package/dist/generated/settingsSchemaSettingsSources.d.ts +1 -1
  54. package/dist/generated/settingsSchemaSettingsSources.js +22 -2
  55. package/dist/hitl/approvalLiveFace.d.ts +17 -0
  56. package/dist/hitl/approvalLiveFace.js +35 -0
  57. package/dist/hitl/approvalQueueRow.d.ts +21 -0
  58. package/dist/hitl/approvalQueueRow.js +69 -0
  59. package/dist/hitl/approvalResolution.d.ts +5 -1
  60. package/dist/hitl/approvalResolution.js +18 -1
  61. package/dist/hitl/approvalsFeed.d.ts +5 -4
  62. package/dist/hitl/approvalsFeed.js +39 -6
  63. package/dist/hitl/askParkRowRouting.d.ts +4 -3
  64. package/dist/hitl/askParkRowRouting.js +27 -3
  65. package/dist/hitl/automaticAnswerVerdict.js +13 -10
  66. package/dist/hitl/crashConverged.d.ts +5 -1
  67. package/dist/hitl/decisionConflict.js +2 -1
  68. package/dist/hitl/decisionRefusal.js +1 -1
  69. package/dist/hitl/decisionSend.d.ts +3 -0
  70. package/dist/hitl/decisionSend.js +32 -6
  71. package/dist/hitl/frameRouter.js +4 -5
  72. package/dist/hitl/hitlBridge.d.ts +6 -2
  73. package/dist/hitl/hitlBridge.js +53 -7
  74. package/dist/hitl/livePendingAsk.d.ts +5 -0
  75. package/dist/hitl/livePendingAsk.js +10 -3
  76. package/dist/hitl/parkOwnership.js +4 -5
  77. package/dist/hitl/parkResolver.js +9 -5
  78. package/dist/hitl/parkRowBirthWait.d.ts +7 -0
  79. package/dist/hitl/parkRowBirthWait.js +1 -1
  80. package/dist/hitl/parkRowDelegation.d.ts +6 -0
  81. package/dist/hitl/parkRowDelegation.js +33 -0
  82. package/dist/hitl/persistedRulesWire.d.ts +15 -3
  83. package/dist/hitl/persistedRulesWire.js +102 -20
  84. package/dist/hitl/planReviewCard.d.ts +2 -0
  85. package/dist/hitl/planReviewCard.js +21 -0
  86. package/dist/hitl/planReviewWire.d.ts +2 -2
  87. package/dist/hitl/planReviewWire.js +105 -38
  88. package/dist/hitl/sessionAllowRoute.d.ts +7 -0
  89. package/dist/hitl/sessionAllowRoute.js +49 -0
  90. package/dist/hitl/sessionPolicyWire.d.ts +1 -7
  91. package/dist/hitl/sessionPolicyWire.js +3 -43
  92. package/dist/hitl/standingRows.js +10 -10
  93. package/dist/hitl/subagentSource.d.ts +1 -0
  94. package/dist/hitl/subagentSource.js +13 -0
  95. package/dist/hitl/toolApprovalWire.d.ts +3 -2
  96. package/dist/hitl/toolApprovalWire.js +100 -44
  97. package/dist/hostSettingsSource.d.ts +4 -1
  98. package/dist/hostSettingsSource.js +11 -6
  99. package/dist/hostTurnSettings.d.ts +4 -5
  100. package/dist/hostTurnSettings.js +80 -19
  101. package/dist/i18n/messages.en.d.ts +41 -12
  102. package/dist/i18n/messages.en.js +42 -13
  103. package/dist/i18n/messages.zh.js +45 -13
  104. package/dist/index.d.ts +22 -2
  105. package/dist/index.js +12 -2
  106. package/dist/injectionLaneNotice.js +2 -1
  107. package/dist/liveInitToolFace.js +0 -1
  108. package/dist/liveModelCatalog.d.ts +15 -0
  109. package/dist/liveModelCatalog.js +40 -0
  110. package/dist/mcpWireCaps.js +1 -1
  111. package/dist/modelCapabilityProbe.js +66 -33
  112. package/dist/noticePresentation.js +2 -0
  113. package/dist/ownKey.d.ts +0 -1
  114. package/dist/ownKey.js +0 -2
  115. package/dist/permissionsDeclaration.d.ts +2 -2
  116. package/dist/permissionsDeclaration.js +12 -14
  117. package/dist/projectSeed.d.ts +39 -0
  118. package/dist/projectSeed.js +80 -0
  119. package/dist/promptDelivery.js +1 -1
  120. package/dist/replayBody.d.ts +7 -6
  121. package/dist/replayBody.js +62 -7
  122. package/dist/request/taskRequest.js +3 -4
  123. package/dist/ruleCompileVerdict.d.ts +0 -2
  124. package/dist/ruleCompileVerdict.js +0 -31
  125. package/dist/ruleRefusalSentence.js +0 -3
  126. package/dist/runReattachPolicy.d.ts +3 -0
  127. package/dist/runReattachPolicy.js +15 -2
  128. package/dist/runTerminal.js +30 -8
  129. package/dist/sandboxWire.d.ts +0 -3
  130. package/dist/sandboxWire.js +0 -9
  131. package/dist/sdkWireTransit.d.ts +1 -1
  132. package/dist/seam.d.ts +14 -7
  133. package/dist/seam.js +12 -0
  134. package/dist/seatContract.d.ts +58 -7
  135. package/dist/seatContract.js +135 -4
  136. package/dist/serverSupportRange.d.ts +18 -0
  137. package/dist/serverSupportRange.js +25 -0
  138. package/dist/sessionEngine.d.ts +156 -0
  139. package/dist/sessionEngine.js +464 -0
  140. package/dist/sessionMap.d.ts +11 -1
  141. package/dist/sessionMap.js +35 -9
  142. package/dist/sessionMemorySync.d.ts +31 -0
  143. package/dist/sessionMemorySync.js +95 -0
  144. package/dist/sessionRowTag.d.ts +4 -0
  145. package/dist/sessionRowTag.js +18 -0
  146. package/dist/settingsLayerAdmission.d.ts +1 -0
  147. package/dist/settingsLayerAdmission.js +4 -1
  148. package/dist/toolResult.js +1 -1
  149. package/dist/wireRefusalCopy.d.ts +6 -1
  150. package/dist/wireRefusalCopy.js +9 -7
  151. package/docs/INTEGRATION-CLIENTS.md +1393 -18
  152. package/package.json +5 -5
@@ -122,6 +122,11 @@ const ZH = {
122
122
  'session.devices.probeFailedTransport': '连不上引擎,查不了远程控制车道 —— 请重试',
123
123
  'session.devices.probeFailedRefused': '引擎拒绝了设备清单查询 —— 请重试',
124
124
  'session.devices.probeFailedUnreadable': '读不懂引擎给的设备清单 —— 请重试',
125
+ 'session.engine.selfNotLocal': '这只会话跑在本机这个应用自己起的引擎上,却是按 Cloud 会话开的。什么都没改 —— 请检查这只会话是怎么打开的。',
126
+ 'session.engine.dispatch.notWired': '这只会话所在的引擎此刻没接上,什么都没发。先连上那台引擎,再试一次。',
127
+ 'session.engine.dispatch.scopeMismatch': '这只会话属于另一个空间里的引擎,和你当前登录的空间不同,什么都没发。切到那个空间后再试一次。',
128
+ 'session.engine.dispatch.scopeUnproven': '确认不了你当前的登录能到达这只会话所在的引擎,什么都没发。先登录那台引擎所在的空间(或直接连上那台引擎),再试一次。',
129
+ 'session.engine.dispatch.unresolved': '这只会话所在的引擎还不知道,什么都没发。先为这只会话选一次引擎,再试一次。',
125
130
  'config.cloudLogin.accessDenied': '登录被拒绝了。',
126
131
  'config.cloudLogin.expiredToken': '登录码在批准之前过期了 —— 请重新开始。',
127
132
  'config.cloudLogin.invalidGrant': 'Cloud 登录已无法续期 —— 请重新登录。',
@@ -141,6 +146,7 @@ const ZH = {
141
146
  'config.engineTarget.loginFailed': '登录失败。',
142
147
  'config.engineTarget.storageUnavailable': '这台设备上没有可用的安全存储,保存不了 Cloud 凭据。什么都没改。',
143
148
  'config.engineTarget.noLocalRuntime': '这台设备上没有本机引擎。',
149
+ 'config.engineTarget.serverBelowSupportFloor': '这台服务端自报版本 {version},低于本客户端支持的最低服务端版本 {floor}。发给它的请求可能被拒,或与这里描述的行为不一致;请连接 {floor} 或更新的服务端。',
144
150
  'config.engineTarget.input': '请求的形状不对,什么都没改。',
145
151
  'config.engineTarget.unknown': '引擎切换没有完成。',
146
152
  'onboard.probe.endpointReachable': '{method} {path} → {status}(端点可达)',
@@ -240,6 +246,11 @@ const ZH = {
240
246
  'approval.settle.cause.broadcastLost': '它没有送达任何一个打开着的连接',
241
247
  'approval.settle.cause.streamDisconnected': '承载这张卡的连接断了',
242
248
  'approval.settle.cause.undeliverable': '它没能送达任何审批界面',
249
+ 'approval.decide.requiresBinding': '这次决定没有带上把它绑到审批卡上那个具体动作的绑定,引擎拒绝了 · 什么都没有决定,这条审批仍在等待 · 请重新获取待决审批,按现在列出的那张卡再决定;如果列出的卡本身就没有绑定,{wayOut}',
250
+ 'approval.decide.unboundWayOut': '这里决不了 —— 取消这次运行,或等这条审批过期',
251
+ 'approval.rowUnresumable.fallback': '这台引擎没说它续得了这条待决审批,所以没有呈成可批的卡;什么都没发',
252
+ 'approval.rowUnresumable.askNotSurfaced': '这条待决行(任务 {taskId})这台引擎续不了,所以没有呈成可作答的卡:{sentence}',
253
+ 'approval.park.stillParked': '{gate} 这道门没能作答:{reason} —— 这一跑仍停在这条审批上。',
243
254
  'approval.decision.grantChanged': '引擎拒收了这次批准:它绑定的技能授予在卡呈出之后已经变了 · 什么都没有决定,这一请求仍在等待,但再批一次会以同样的理由被拒 · 请拒绝这一请求,让模型重新激活那个技能',
244
255
  'approval.decision.settledElsewhereContrary.deniedFirst': '这一请求已在别处被答复为拒绝,你的批准没有生效。',
245
256
  'approval.decision.settledElsewhereContrary.approvedFirst': '这一请求已在别处被答复为批准,你的拒绝没有生效。',
@@ -295,6 +306,13 @@ const ZH = {
295
306
  'session.crashConverged.cause.neutral': '这个决断被自动收敛了',
296
307
  'session.crashConverged.cause.withClause': '{clause},这个决断被自动收敛了',
297
308
  'session.corrupt.content': '这个会话保存的历史读不出来 —— 它存的日志已损坏 —— 所以引擎打不开这个会话。重试没有用:得由运维这台引擎的人修复或移除那份存储的日志。在那之前,请在新会话里继续。',
309
+ 'session.projectSeed.invalid': '项目包被拒了:它不是能用的项目归档。项目包须是项目文件夹打成的 gzip tar,大小与条目数在上限之内,只含普通文件、文件夹和不指出文件夹的链接,每条路径只出现一次,顶层不能有名为 .git 或 attachments 的条目。请修好文件夹后重新上传。',
310
+ 'session.projectSeed.invalidAt': '{sentence} 出问题的条目:{path}',
311
+ 'session.projectSeed.laneNotIsolated': '这个会话的执行车道不是沙箱,所以项目包不能当作它的工作区。请改用已推送 git 提交的项目交接,或让会话跑在带沙箱的车道上。',
312
+ 'session.projectSeed.seedFixed': '一个会话只能从一个项目包起始:这个会话已经有了,或这次提交带了不止一个。请只带一个项目包,或新开会话从另一个项目包开始。',
313
+ 'session.projectSeed.boundElsewhere': '这次上传已经绑在另一个会话上,上传一经绑定就不能改绑到别的会话,所以这次提交没有被受理。请为这个会话重新上传项目包。',
314
+ 'session.projectSeed.laneUnknown': '引擎还没说明它是否在沙箱里跑会话,所以暂时不能把项目包作为工作区交出去。',
315
+ 'session.projectSeed.missing': '请先上传项目包,再交接这个会话。',
298
316
  'resume.reopen.first.envFailed': '这件 parked 的工作所需的执行环境没能恢复',
299
317
  'resume.reopen.first.toolUnavailable': '这个审批所授予的工具在这台引擎上不可用',
300
318
  'resume.reopen.first.toolContractMismatch': '这个审批所授予的工具,自审批记录以来已经变了',
@@ -394,6 +412,8 @@ const ZH = {
394
412
  'session.selfHeal.injected.handedOffWatch': '{lead}已交给正在进行的那一轮回复{id},没有另开一轮 —— 请留意那一轮回复怎么处理它。',
395
413
  'session.selfHeal.injected.interruptedFinishing': '{lead}没有送达:被叫停的较早那一轮回复{id}仍在收尾,sema 没有发送它也没有重试,所以模型没有看到它。稍等片刻后再试一次。',
396
414
  'session.selfHeal.injected.notDelivered': '{lead}没有送达:这个会话还被较早的一轮回复占着{id},而且没有可以回答来放行的打开的卡{noView}。sema 没有重试,所以模型没有看到它。',
415
+ 'session.selfHeal.injected.redundant': '{lead}没有转交:它说的那一轮回复{id}在那次决定之后已经自己接着往下走了,它没有什么可补充的。',
416
+ 'session.selfHeal.injected.deferred': '{lead}正在等待:这个会话正被较早的一轮回复{id}占着,sema 保留了这条消息,等那一轮回复结束或暂停后再作为一条新消息发送。',
397
417
  'session.selfHeal.decisionInFlight': '上一个 turn 处于 parked 状态,{parkedOn},而你对那张卡的回答还在送往引擎的路上,所以 sema 没有再次显示那张卡 —— 再回答一次会发出第二个决断。它没有取消这次 run。你的消息没有发出;请稍等片刻,等引擎应用了那个决断之后再发一次。',
398
418
  'session.selfHeal.parkedOn.ask': '在等你的决断(run {taskId})',
399
419
  'session.selfHeal.parkedOn.plan': '停在一次计划审阅上(run {taskId})',
@@ -406,6 +426,7 @@ const ZH = {
406
426
  'session.selfHeal.row.askDecided.inferred': '上一个 turn 曾 parked 在一个审批上,你的权限规则自己做了决断(不需要卡);run {taskId} 已经 resume 并随后结束 —— sema 正在重新发送你的消息;如果那次 run 还没完全放开这个会话,你可能得再发一次。',
407
427
  'session.selfHeal.row.askDecided.releaseUnknown': '上一个 turn 曾 parked 在一个审批上,你的权限规则自己做了决断(不需要卡),所以 run {taskId} 应该正在 resume{status}。sema 还不能确认它已经结束,所以你的消息没有发出 —— 请稍等片刻再发一次。',
408
428
  'session.selfHeal.row.askReopenFailed.withKeep': '上一个 turn 处于 parked 状态,在等你的决断(run {taskId}),而 sema 没能在这里重新打开那张卡{noView}。它没有取消这次 run —— 那等于替你做了决断。你的消息没有发出。想保住这段对话,请{keep}:会话 resume 之后,如果它还在等,那张卡会回来。如果你不再需要它,也可以{wayOut}。{viaEngine}',
429
+ 'session.selfHeal.row.askReopenFailed.rowUnresumable': '上一个 turn 处于 parked 状态,在等你的决断(run {taskId}),而这台引擎续不了那条待决请求,所以没有卡可以重新打开:{sentence} · {unbound}。它没有取消这次 run。你的消息没有发出。',
409
430
  'session.selfHeal.row.askReopenFailed.noKeep': '上一个 turn 处于 parked 状态,在等你的决断(run {taskId}),而 sema 没能在这里重新打开那张卡{noView}。它没有取消这次 run —— 那等于替你做了决断。你的消息没有发出;如果你不再需要它,请{wayOut}。{viaEngine}',
410
431
  'session.selfHeal.row.planReopenFailed.dismissed': '上一个 turn 处于 parked 状态,在等一次计划审阅(run {taskId}),而你关掉了它的审批卡 —— {closed}。它没有取消这次 run —— 那等于替你把计划丢掉了。你的消息没有发出;再发一次可以把卡叫回来。',
411
432
  'session.selfHeal.row.planReopenFailed.withKeep': '上一个 turn 处于 parked 状态,在等一次计划审阅(run {taskId}),而 sema 没能重新打开那张审批卡{noView}。它没有取消这次 run —— 那等于替你把计划丢掉了。你的消息没有发出。想保住这段对话,请{keep}:会话 resume 之后,如果它还在等,那张卡会回来。如果你不再需要那份计划,也可以{wayOut}。{viaEngine}',
@@ -545,6 +566,11 @@ const ZH = {
545
566
  'approval.boundGrants.denyPart.one': '1 条工具条目在本次 run 剩余的时间里被拒绝',
546
567
  'approval.boundGrants.denyPart.other': '{count} 条工具条目在本次 run 剩余的时间里被拒绝',
547
568
  'approval.boundGrants.activates': '批准这一张会激活卡上的技能:{allow},且 {deny}。',
569
+ 'approval.boundGrants.allowPart.named.one': '它列出的 1 条工具条目({names}),在技能激活后免问运行',
570
+ 'approval.boundGrants.allowPart.named.other': '它列出的 {count} 条工具条目({names}),在技能激活后免问运行',
571
+ 'approval.boundGrants.denyPart.named.one': '1 条工具条目({names})在本次 run 剩余的时间里被拒绝',
572
+ 'approval.boundGrants.denyPart.named.other': '{count} 条工具条目({names})在本次 run 剩余的时间里被拒绝',
573
+ 'approval.boundGrants.more': '另有 {count} 条',
548
574
  'session.fileHistoryRefusal.notYet': '没有发送:你的设置里已关闭文件检查点,但这台引擎的能力信息还没读到,所以不知道它能否按会话停止记录文件历史,现在发送仍可能把它记录下来。请稍后再试;如果要照常发送、并让这一次的文件历史被记录,请在设置里把文件检查点重新打开。',
549
575
  'session.fileHistoryRefusal.notSaid': '没有发送:你的设置里已关闭文件检查点,但这台引擎没有报告它能否按会话停止记录文件历史,所以现在发送仍可能把它记录下来。只要这台引擎还是同样的报告,重试也不会改变这一点;要发送并让这一次的文件历史被记录,请在设置里把文件检查点重新打开。',
550
576
  'session.fileHistoryRefusal.unrecognized': '没有发送:你的设置里已关闭文件检查点,但这台引擎报告了一个本客户端不认识的文件历史捕获模式,所以不知道它能否按会话停止记录文件历史,现在发送仍可能把它记录下来。只要这台引擎还是同样的报告,重试也不会改变这一点;要发送并让这一次的文件历史被记录,请在设置里把文件检查点重新打开。',
@@ -556,6 +582,12 @@ const ZH = {
556
582
  'session.memorySync.parkedUnnamed.other': '这台部署上 {count} 层的记忆同步已暂停:它们的同步游标用不了。{wayOut}',
557
583
  'session.memorySync.wayOut.deleteCursor': '运维在服务器上删掉每个暂停层的同步游标后,同步即恢复;自上次同步以来只在一侧删掉的条目会回来,需要再删一次。',
558
584
  'session.memorySync.wayOut.unrecognized': '部署给出的出路本客户端认不出,这里不给建议。',
585
+ 'session.memorySyncTrigger.notConfigured': '没有可同步的:这条会话没有使用任何记忆。',
586
+ 'session.memorySyncTrigger.noSettledRun': '暂时无法同步记忆:这条会话里还没有一条跑完、并记下了它读哪些记忆的任务。请在这条会话里跑一条任务(或等正在跑的那条结束),再同步。',
587
+ 'session.memorySyncTrigger.runUnobserved': '无法同步记忆:这条会话里最近跑完的那条任务没有记下它读了哪些记忆,而更早的任务不会拿来顶替。请在这条会话里再跑一条任务(如果那条任务被拒了,先改好拒它的地方),再同步。',
588
+ 'session.memorySyncTrigger.memoryNotMounted': '无法同步记忆:这条会话里最近跑完的那条任务配了记忆却没有加载成功,所以不知道这条会话读哪些记忆。请在这条会话里再跑一条任务(如果记忆再次加载失败,先修好它),再同步。',
589
+ 'session.memorySyncTrigger.noLeaf': '暂时无法同步记忆:这条会话还没有任何对话内容,没有可以同步的起点。请在这条会话里跑一条任务(或等正在跑的那条结束),再同步。',
590
+ 'session.memorySyncTrigger.unobtainable': '无法同步记忆:无法确定这条会话读哪些记忆。请在这条会话里跑一条任务(或等正在跑的那条结束),再同步。',
559
591
  'session.hostSettings.memorySwitchMalformed': '设置文件里的记忆设置读不出,所以「关闭记忆」没有生效:这一次请求照常带着记忆发出。改好记忆那一段(memory.enabled 只能是 true 或 false)即可关闭。',
560
592
  'session.hostSettings.fileHistoryRestoreConflict': '没有发送:这次请求准备好之后,你在设置里关闭了文件检查点,但这次请求同时要从检查点还原文件,两者不能放在同一个请求里。要还原文件,请在设置里把文件检查点重新打开;否则请去掉文件还原再发送。',
561
593
  'session.hostSettings.projectionUnchecked': '这一次请求要带的设置在发出前没法核对,所以没有发送。请重新载入设置后再试。',
@@ -565,11 +597,14 @@ const ZH = {
565
597
  'session.hostSettings.layerNotLoaded.hold.unreadable': '{layer}读不出,那份文件里的规则和 hooks 不会作用于这一次请求。可以不带这些设置继续,或者先取消、改好文件。',
566
598
  'session.hostSettings.layerNotLoaded.hold.rejected': '{layer}没有装上:那份文件里一个守着工具调用的 hook 写坏了,文件里的规则和 hooks 不会作用于这一次请求。可以不带这些设置继续,或者先取消、改好文件。',
567
599
  'session.hostSettings.layerNotLoaded.sent.unreadable': '{layer}读不出:这一次请求没有带那份文件里的规则和 hooks。',
600
+ 'session.hostSettings.layerNotLoaded.restrictions.hold': '{layer}读不出,那份文件里的限制(deny 与 ask 规则)不会作用于这一次请求。可以不带它们继续,或者先取消、改好文件。',
601
+ 'session.hostSettings.layerNotLoaded.restrictions.sent': '{layer}读不出:这一次请求没有带那份文件里的限制(deny 与 ask 规则)。',
568
602
  'session.hostSettings.layer.policySettings': '托管设置',
569
603
  'session.hostSettings.layer.userSettings': '你的用户设置',
570
604
  'session.hostSettings.layer.projectSettings': '项目设置',
571
605
  'session.hostSettings.layer.localSettings': '本地项目设置',
572
606
  'session.hostSettings.layer.flagSettings': '启动时传入的设置',
607
+ 'session.hostSettings.layer.foreignProjectSettings': '写给另一个工具的项目设置',
573
608
  'session.hostSettings.heldPrevious': '刚才有一份设置文件没能完整读出(可能正在保存),所以仍按上一次完整读到的权限规则执行。',
574
609
  'session.hostSettings.styleMissing': '设置里选中的输出风格「{name}」找不到或读不出,这一次请求不套用它。',
575
610
  'session.hostSettings.styleSafeMode': '安全模式已开启,设置里的输出风格不套用。',
@@ -603,7 +638,6 @@ const ZH = {
603
638
  'rules.refusal.list.more': '{shown},另有 {count} 条',
604
639
  'rules.refusal.reason.toolName': '它的工具名不是这台引擎认得的名字',
605
640
  'rules.refusal.reason.homePath': '它用了引擎无法锚定的 ~/ 路径 —— 请改写成相对项目的路径或绝对路径',
606
- 'rules.refusal.reason.neverMatches': '这种写法作为这只工具的拒绝或询问规则永远匹配不上,引擎不会执行它 —— 要整只拦下这只工具,请只写工具名',
607
641
  'rules.nearMiss.sentence.one': '权限:有 1 条规则写的工具名拼法,本次运行里没有任何工具认,所以永远匹配不上 —— {list}',
608
642
  'rules.nearMiss.sentence.other': '权限:有 {count} 条规则写的工具名拼法,本次运行里没有任何工具认,所以永远匹配不上 —— {list}',
609
643
  'rules.nearMiss.reason': '请把名字写成「{mounted}」',
@@ -734,17 +768,6 @@ const ZH = {
734
768
  'notice.capability.hands.unknownRosterUnreadable': '这次 run 有没有文件与 shell 工具,目前不知道 —— 工具名册不是这个读口认识的形状,读不出来',
735
769
  'notice.capability.hands.unknownMountConditionAbsent': '这次 run 有没有文件与 shell 工具,目前不知道 —— 这台引擎不报每个工具是由哪个条件挂载的,所以这里数出一个空的计数,说的是读口的事,不是这次 run 的事',
736
770
  'rules.sessionPolicy.tighten.written': '会话规则已保存(版本 {rev})—— 记录现在包含它原有的全部内容加上这里送来的条目,并从这个会话的下一道工具门起生效;已经在跑的那一步不会被打断。',
737
- 'rules.sessionPolicy.tighten.writtenBeforeFirstRule.counts': '仍在运行,而且可能是在这个会话的第一条规则之前启动的:{list}。凡是在那第一条规则之前启动的,都会不带这条规则继续运行 —— 要让它立即生效,请停掉它们。',
738
- 'rules.sessionPolicy.tighten.writtenBeforeFirstRule.unreadable': '本客户端读不出现在有哪些后台子代或工作流在运行。凡是在这个会话的第一条规则之前启动的,都会不带这条规则继续运行 —— 不该继续运行的请停掉。',
739
- 'rules.sessionPolicy.tighten.writtenBeforeFirstRule.unseen': '起跑还没报到本客户端的工作,可能也读不到这条规则。',
740
- 'rules.sessionPolicy.tighten.writtenBeforeFirstRule.agents.one': '{n} 个后台子代',
741
- 'rules.sessionPolicy.tighten.writtenBeforeFirstRule.agents.many': '{n} 个后台子代',
742
- 'rules.sessionPolicy.tighten.writtenBeforeFirstRule.workflows.one': '{n} 个工作流',
743
- 'rules.sessionPolicy.tighten.writtenBeforeFirstRule.workflows.many': '{n} 个工作流',
744
- 'rules.sessionPolicy.tighten.writtenBeforeFirstRule.untracked.one': '{n} 个本客户端已不再跟踪的后台项',
745
- 'rules.sessionPolicy.tighten.writtenBeforeFirstRule.untracked.many': '{n} 个本客户端已不再跟踪的后台项',
746
- 'rules.sessionPolicy.tighten.writtenBeforeFirstRule.list.two': '{a}和 {b}',
747
- 'rules.sessionPolicy.tighten.writtenBeforeFirstRule.list.three': '{a}、{b}和 {c}',
748
771
  'rules.sessionPolicy.tighten.conflict': '写入这次收紧的过程中,会话规则被别人改了,连续两次 —— 什么都没写。请重新读一遍当前的规则再试,或者先让另一个写入方写完。',
749
772
  'rules.sessionPolicy.tighten.loosenForbidden': '引擎拒绝了这次写入,因为它会放宽会话规则:这里送来的条目里至少有一条是放宽允许范围而不是收窄。这条路上只接受增加限制的条目。',
750
773
  'rules.sessionPolicy.tighten.capabilityAbsent': '这个部署不保存会话级的工具规则,所以这里没有什么可收紧的。',
@@ -965,6 +988,7 @@ const ZH = {
965
988
  'notice.wireRefusal.hostPosture.both': '引擎在任何东西运行之前就拒绝了这个请求:请求既要求 shell 继承这台机器的整份环境,又要求 bypassPermissions,而这个部署至少拒绝了其中一项;拒绝并没有说明是哪一项 · {notLocal};请去掉其中一项或两项后重新发送(整份环境设置只在单用户部署上才被采纳)',
966
989
  'notice.wireRefusal.hostPosture.unattributed': '引擎在任何东西运行之前就拒绝了这个请求:这个部署不接受请求里只有单用户部署才能使用的某项设置;引擎自己的消息会点名它 · {notLocal};请去掉那项设置后重新发送',
967
990
  'notice.wireRefusal.autonomyLane': '引擎没有启动这次 leader 运行:这个部署运行在只做计划的自主档,而 leader 运行没有办法让它的计划被审阅,所以什么也没有启动 · 请改为作为普通运行提交这项工作,或请运维这台引擎的人更改它的自主设置',
991
+ 'notice.wireRefusal.sessionArchiveStamped': '这个会话存下的存档仍带着更早版本的服务端写下的属主戳,所以不能被 fork,也不能替换它的日志;什么都没有写入 · 请删除这个会话,然后重新推送',
968
992
  'notice.wireRefusal.unsupportedRule': '引擎拒绝了这个请求,所以其中任何内容都没有生效:里面有一条规则是引擎不支持的写法 —— {detail} · 请删掉或改写那条规则(要整只拦下一个工具,请只写工具名),再重新发送',
969
993
  'notice.wireRefusal.unsupportedRule.other': '引擎拒绝了这个请求,所以其中任何内容都没有生效:里面有 {count} 条规则是引擎不支持的写法 —— {detail} · 请删掉或改写这些规则(要整只拦下一个工具,请只写工具名),再重新发送',
970
994
  'notice.wireRefusal.unsupportedRule.stored': '引擎拒绝继续这件工作:为它保存的请求里有一条规则是引擎不支持的写法 —— {detail} · 它无法按保存的样子继续。请删掉或改写那条规则(要整只拦下一个工具,请只写工具名);若这件工作仍停驻着,请先取消它,然后作为新请求重新提交',
@@ -1078,7 +1102,7 @@ const ZH = {
1078
1102
  'follow.notFollowed.headTurn': '这块屏已不再跟着这一轮的 run{reason}{ending}{exit}',
1079
1103
  'follow.notFollowed.reason.exhaustedDraining': ':服务它的那台引擎实例在它最后一条事件流关闭时正在下线,而这个客户端的重新附着次数已经用完。',
1080
1104
  'follow.notFollowed.reason.exhaustedConnectionLost': ':最后一次尝试时连接断了,而这个客户端的重新附着次数已经用完。',
1081
- 'follow.notFollowed.reason.exhaustedStreamCap': ':最后一次尝试时它的事件流撞上了引擎的时长上限,而这个客户端的重新附着次数已经用完。',
1105
+ 'follow.notFollowed.reason.exhaustedStreamCap': ':最后一次尝试时引擎以流上限通知收了它的事件流,而这个客户端的重新附着次数已经用完。',
1082
1106
  'follow.notFollowed.reason.exhausted': ':这个客户端的重新附着次数已经用完。',
1083
1107
  'follow.notFollowed.reason.badInput': ':这个客户端在重新附着时出了内部错误。',
1084
1108
  'follow.notFollowed.reason.noRunId': ':这个客户端始终不知道它是哪一次 run,所以没有可以重新附着的对象。',
@@ -1101,6 +1125,11 @@ const ZH = {
1101
1125
  'approval.planReview.askAgain.notCarried': '用户没法批准这份计划:计划正文没有到达审批卡(可能过长)。请呈上一份更短的计划。',
1102
1126
  'approval.planReview.askAgain.unknown': '用户没法批准这份计划:审批卡显示不了它。请重新呈上计划。',
1103
1127
  'approval.planReview.askAgain.withNote': '{sentence} 用户补充:{note}',
1128
+ 'approval.planReview.decision.notSent': '这次计划审阅的 {decision} 没能发出;计划仍在等决断。',
1129
+ 'approval.planReview.decision.refused': '这次 {decision} 没有生效:引擎拒了它,什么都没改。',
1130
+ 'approval.planReview.decision.cardMissing': '批准一份计划需要附上呈出它的那张卡,这次批准没有附卡。',
1131
+ 'approval.planReview.decision.gateMoved': '这张卡上的计划已不是在等批的那份。',
1132
+ 'approval.planReview.decision.gateUntrusted': '引擎认不出这道审阅门的编号(服务端那一行记录看起来坏了,请运维检查)。卡上就是当前在等批的计划:再答一次将不带门编号提交,那一次没有「计划已换」的保护。',
1104
1133
  'approval.planReview.option.askAgain.label': '不,要模型重新呈上计划',
1105
1134
  'approval.planReview.option.askAgain.description': '不批准;要模型重新呈上计划',
1106
1135
  };
@@ -1178,6 +1207,7 @@ export const TERM_SLOTS = Object.freeze({
1178
1207
  'session.selfHeal.row.askDecided.releaseUnknown': ['parked', 'run', 'turn'],
1179
1208
  'session.selfHeal.row.askReopenFailed.withKeep': ['parked', 'run', 'turn'],
1180
1209
  'session.selfHeal.row.askReopenFailed.noKeep': ['parked', 'run', 'turn'],
1210
+ 'session.selfHeal.row.askReopenFailed.rowUnresumable': ['parked', 'run', 'turn'],
1181
1211
  'session.selfHeal.row.planReopenFailed.dismissed': ['parked', 'run', 'turn'],
1182
1212
  'session.selfHeal.row.planReopenFailed.withKeep': ['parked', 'run', 'turn'],
1183
1213
  'session.selfHeal.row.planReopenFailed.noKeep': ['parked', 'run', 'turn'],
@@ -1232,6 +1262,8 @@ export const TERM_SLOTS = Object.freeze({
1232
1262
  'approval.origin.hook': ['hook'],
1233
1263
  'approval.boundGrants.denyPart.one': ['run'],
1234
1264
  'approval.boundGrants.denyPart.other': ['run'],
1265
+ 'approval.boundGrants.denyPart.named.one': ['run'],
1266
+ 'approval.boundGrants.denyPart.named.other': ['run'],
1235
1267
  'session.steerRefusal.notRunning.happened': ['run'],
1236
1268
  'session.steerRefusal.notRunning.nextStep': ['run'],
1237
1269
  'session.steerRefusal.queueFull.happened': ['run'],
package/dist/index.d.ts CHANGED
@@ -123,7 +123,7 @@ export * from './engineWireSdk.js';
123
123
  export * from './classifierVerdictWire.js';
124
124
  export { stripSystemReminderBlocks, unwrapSystemReminder } from './systemReminderTag.js';
125
125
  export { findSystemReminderOpenTag, type SystemReminderOpenTagSpan } from './systemReminderTag.js';
126
- export { ACTIVE_RUN_BUSY_ERROR_CODE, APPROVAL_EXPIRED, ASK_GONE, asModelFallbackReason, CAPABILITY_IMAGE_INDEX_REQUIRED, CAPABILITY_K8S_LANE_REQUIRED, CAPABILITY_OPERATOR_PRINCIPALS_REQUIRED, CAPABILITY_SELF_ORCHESTRATION_REQUIRED, CONFIG_AGENT_UNKNOWN_TOOL, CONFIG_DELEGATION_ENTRY_CAPS, CONFIG_IMAGE_INVALID, CONFIG_LEGACY_TOOL_NAME, CONFIG_LIMIT_INVALID, CONFIG_LIMIT_UNKNOWN_KEY, CONFIG_MCP_SERVER_NAME_COLLISION, CONFIG_MEMORY_PROJECT_KEY_SPELLING, CONFIG_MEMORY_WRITE_SCOPE_MISMATCH, CONFIG_OUTPUT_STYLE_INVALID, CONFIG_TOOL_FACE_CONTROL, CONFLICT_IDEMPOTENCY_PAYLOAD_MISMATCH, CORRUPT_SESSION_ERROR_CODE, DECIDE_CLAIM_LOST, DECIDE_GATE_MOVED, DECIDE_NOT_PARKED, DECIDE_PARK_MOVED_CODES, DECIDE_ROW_UNREVIVABLE, DECIDE_WORKFLOW_HOST_UNKNOWN, DECIDE_WORKFLOW_LANE_CODES, DECIDE_WORKFLOW_PARK_FORKED, DECIDE_WORKFLOW_PARKS_UNREADABLE, DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED, DELEGATION_CAP_CODES, DELEGATION_CONCURRENCY_CAP, DELEGATION_SESSION_CAP, delegationCapDispositionOf, DRAINING_ERROR_CODE, ENGINE_STOP_REASONS, engineStopReasonToCc, ENV_LIFETIME_EXPIRED, FLEET_LEASE_UNAVAILABLE, GATE_PARKED_ERROR_CODE, idempotencyPayloadMismatchContent, isConfigRefusalCode, isCorruptSessionCode, isDecideParkMovedCode, isDecideRowUnrevivableCode, isDelegationCapCode, isIdempotencyPayloadMismatchCode, isInterruptedToolEndCode, isLimitsExceededCode, isRewindFamilyCode, isRulesRefusalCode, isStatusDerivedCoarseCode, isWorkflowParkRefusalCode, LIMITS_MAX_COST_EXCEEDED, LIMITS_MAX_TOKENS_EXCEEDED, LIMITS_MAX_TURNS_EXCEEDED, LIMITS_MAX_WALLTIME_EXCEEDED, MCP_SERVER_REVOKED, MCP_TOOL_DECLARATION_CHANGED, MCP_TOOL_LISTING_UNREACHED, MODEL_FALLBACK_INHERIT_NO_TIER_BINDING, operatorGateRefusalContent, OUTPUT_INVALID, PARKED_RESUME_STARTUP_FAILED, PROMPT_ASSEMBLED_ROLE_REFUSED, REQUEST_AUTONOMY_LANE_REFUSED, RESUME_AT_ERROR_CODE_PREFIX, RESUME_CONTEXT_UNAVAILABLE, RESUME_ENV_FAILED, RESUME_PLACEMENT_MISMATCH, RESUME_POLICY_FOLD_CODE, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_RETRY_LATER_CODES, RESUME_TOOL_CONTRACT_MISMATCH, RESUME_TOOL_UNAVAILABLE, RESUME_USAGE_WINDOW_EXHAUSTED, REWIND_ERROR_CODE_PREFIXES, RUN_ORPHANED, RUN_STALLED, runDeathVerdictNoteOf, SCENARIO_ASSIGNMENT_UNKNOWN_ERROR_CODE, SCENARIO_NOT_ALLOWED_ERROR_CODE, STREAM_MAX_DURATION, TOOL_END_INTERRUPTED_NEVER_STARTED, TOOL_END_INTERRUPTED_OUTCOME_UNKNOWN, USAGE_WINDOW_EXHAUSTED, USER_ATTACHMENT_INVALID_ERROR_CODE, USER_INVOKED_SKILL_UNKNOWN_ERROR_CODE, WORKFLOW_PARK_REFUSAL_CODES, } from './engineErrorCodes.js';
126
+ export { ACTIVE_RUN_BUSY_ERROR_CODE, APPROVAL_EXPIRED, ASK_GONE, asModelFallbackReason, CAPABILITY_IMAGE_INDEX_REQUIRED, CAPABILITY_K8S_LANE_REQUIRED, CAPABILITY_OPERATOR_PRINCIPALS_REQUIRED, CAPABILITY_SELF_ORCHESTRATION_REQUIRED, CONFIG_AGENT_UNKNOWN_TOOL, CONFIG_DELEGATION_ENTRY_CAPS, CONFIG_IMAGE_INVALID, CONFIG_LEGACY_TOOL_NAME, CONFIG_LIMIT_INVALID, CONFIG_LIMIT_UNKNOWN_KEY, CONFIG_MCP_SERVER_NAME_COLLISION, CONFIG_MEMORY_PROJECT_KEY_SPELLING, CONFIG_MEMORY_WRITE_SCOPE_MISMATCH, CONFIG_OUTPUT_STYLE_INVALID, CONFIG_TOOL_FACE_CONTROL, CONFLICT_IDEMPOTENCY_PAYLOAD_MISMATCH, CORRUPT_SESSION_ERROR_CODE, DECIDE_CLAIM_LOST, DECIDE_GATE_MOVED, DECIDE_NOT_PARKED, DECIDE_PARK_MOVED_CODES, DECIDE_ROW_UNREVIVABLE, DECIDE_WORKFLOW_HOST_UNKNOWN, DECIDE_WORKFLOW_LANE_CODES, DECIDE_WORKFLOW_PARK_FORKED, DECIDE_WORKFLOW_PARKS_UNREADABLE, DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED, DELEGATION_CAP_CODES, DELEGATION_CONCURRENCY_CAP, DELEGATION_SESSION_CAP, delegationCapDispositionOf, DRAINING_ERROR_CODE, ENGINE_STOP_REASONS, engineStopReasonToCc, ENV_LIFETIME_EXPIRED, FLEET_LEASE_UNAVAILABLE, GATE_PARKED_ERROR_CODE, idempotencyPayloadMismatchContent, isConfigRefusalCode, isCorruptSessionCode, isDecideParkMovedCode, isDecideRowUnrevivableCode, isDelegationCapCode, isIdempotencyPayloadMismatchCode, isInterruptedToolEndCode, isLimitsExceededCode, isRewindFamilyCode, isRulesRefusalCode, isStatusDerivedCoarseCode, isWorkflowParkRefusalCode, LIMITS_MAX_COST_EXCEEDED, LIMITS_MAX_TOKENS_EXCEEDED, LIMITS_MAX_TURNS_EXCEEDED, LIMITS_MAX_WALLTIME_EXCEEDED, MCP_SERVER_REVOKED, MCP_TOOL_DECLARATION_CHANGED, MCP_TOOL_LISTING_UNREACHED, MODEL_FALLBACK_INHERIT_NO_TIER_BINDING, operatorGateRefusalContent, OUTPUT_INVALID, PARKED_RESUME_STARTUP_FAILED, PROMPT_ASSEMBLED_ROLE_REFUSED, REQUEST_AUTONOMY_LANE_REFUSED, RESUME_AT_ERROR_CODE_PREFIX, RESUME_CONTEXT_UNAVAILABLE, RESUME_ENV_FAILED, RESUME_PLACEMENT_MISMATCH, RESUME_POLICY_FOLD_CODE, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_RETRY_LATER_CODES, RESUME_TOOL_CONTRACT_MISMATCH, RESUME_TOOL_UNAVAILABLE, RESUME_USAGE_WINDOW_EXHAUSTED, REWIND_ERROR_CODE_PREFIXES, RUN_ORPHANED, RUN_STALLED, runDeathVerdictNoteOf, SCENARIO_ASSIGNMENT_UNKNOWN_ERROR_CODE, SCENARIO_NOT_ALLOWED_ERROR_CODE, STREAM_MAX_DURATION, TOOL_END_INTERRUPTED_NEVER_STARTED, TOOL_END_INTERRUPTED_OUTCOME_UNKNOWN, USAGE_WINDOW_EXHAUSTED, USER_ATTACHMENT_INVALID_ERROR_CODE, USER_INVOKED_SKILL_UNKNOWN_ERROR_CODE, WORKFLOW_PARK_REFUSAL_CODES, ATTACHMENT_BOUND_ELSEWHERE, ATTACHMENT_BUNDLE_INVALID, ATTACHMENT_BUNDLE_LANE_NOT_ISOLATED, ATTACHMENT_BUNDLE_SEED_FIXED, CONFLICT_SESSION_MEMORY_UNOBSERVED, CONFLICT_SESSION_ARCHIVE_STAMPED, ENV_HOME_UNCONFIRMED, } from './engineErrorCodes.js';
127
127
  export type { DelegationCapDisposition, ModelFallbackReason, OperatorGateRefusal, RunDeathVerdictCode, } from './engineErrorCodes.js';
128
128
  export { prepareRefusalCodeOf, prepareRefusalNoteOf, type PrepareRefusalCode, type PrepareRefusalNoteFacts } from './prepareRefusal.js';
129
129
  export * from './agentsWireCaps.js';
@@ -184,6 +184,8 @@ export * from './request/taskRequest.js';
184
184
  export { disableSkillsDeclaration, disableSkillsDeclarationSettled } from './disableSkillsWire.js';
185
185
  export { approvalReachDeclaration, approvalReachDeclarationSettled } from './approvalReachWire.js';
186
186
  export type { ApprovalReachDeclaration, ApprovalReachWithheldCause, ApprovalReachWord } from './approvalReachWire.js';
187
+ export { approvalSeatOf, APPROVAL_SEAT_STATES, APPROVAL_SEAT_BASES } from './approvalSeat.js';
188
+ export type { ApprovalSeatInput, ApprovalSeatReading, ApprovalSeatState } from './approvalSeat.js';
187
189
  export type { DisableSkillsDeclaration } from './disableSkillsWire.js';
188
190
  export { PERMISSIONS_KEPT_REASONS, WIRE_RULE_TRUST_ORDER, permissionsAllowKeptNotice, permissionsDeclaration, permissionsDeclarationReport } from './permissionsDeclaration.js';
189
191
  export type { PermissionsAllowKeptFacts, PermissionsClientOwnedStatement, PermissionsDeclaration, PermissionsDeclarationBuckets, PermissionsDeclarationInput, PermissionsDeclarationReport, PermissionsKeptReason, PermissionsKeptRule, PermissionsRewrittenRule, WireRuleOrigin, WireRuleOrigins, } from './permissionsDeclaration.js';
@@ -228,7 +230,7 @@ export { guardedRead, readOwnDataFiniteNumber, readOwnDataNonEmptyString } from
228
230
  export { contextUsageReadingOf, type ContextUsageReading } from './ownKey.js';
229
231
  export { TURN_FAILURE_CATEGORIES, turnFailurePresentation, type TurnFailureCategory, type TurnFailurePresentation, type TurnFailureRetry } from './turnFailurePresentation.js';
230
232
  export { readSeatTurnFailure, seatTurnFailureOf, type SeatTurnFailure } from './turnFailurePresentation.js';
231
- export { REATTACH_BUDGET_FRESH, REATTACH_BUDGET_NONE, REATTACH_MAX_TRIES, runReattachPolicy, type ReattachBudget, type ReattachDecision, type ReattachDrainingEvent, type ReattachEvent, } from './runReattachPolicy.js';
233
+ export { REATTACH_BUDGET_FRESH, REATTACH_BUDGET_NONE, REATTACH_MAX_TRIES, STREAM_CAP_CREDIBLE_AFTER_MS, runReattachPolicy, type ReattachBudget, type ReattachDecision, type ReattachDrainingEvent, type ReattachEvent, } from './runReattachPolicy.js';
232
234
  export { runNotFollowedNotice, runNotFollowedOf, type ReattachBreak, type RunNotFollowed, type RunNotFollowedCause } from './runFollow.js';
233
235
  export * from './corruptSession.js';
234
236
  export * from './corruptSessionCopy.js';
@@ -274,6 +276,8 @@ export * from './inheritEnvWire.js';
274
276
  export * from './inheritEnvCapability.js';
275
277
  export { SUPPORT_FLOOR, supportFloorOf, engineVersionTier, engineSupportFloorEffective, coreVersionTier, compareReleaseVersions } from './supportFloor.js';
276
278
  export type { SupportFloor, SupportFloorComponent, EngineVersionTier } from './supportFloor.js';
279
+ export { SERVER_SUPPORT_RANGE_REASONS, serverSupportRangeVerdict, serverSupportRangeSentence } from './serverSupportRange.js';
280
+ export type { ServerSupportRangeReason, ServerSupportRangeVerdict } from './serverSupportRange.js';
277
281
  export * from './decideReceipt.js';
278
282
  export * from './sessionMap.js';
279
283
  export * from './detachWire.js';
@@ -360,6 +364,8 @@ export { policyDenyReason, type PolicyDenyLane, type PolicyDenyReasonFacts } fro
360
364
  export { readApprovalAllowRuleShadow, approvalAllowRuleShadowed, allowRuleShadowSentence, type ApprovalAllowRuleShadow, type ApprovalAllowRuleShadowMember, type AllowRuleShadowedWireMember, } from './hitl/allowRuleShadow.js';
361
365
  export { projectCrashConverged } from './hitl/crashConverged.js';
362
366
  export type { ApprovalsListEnvelope, CrashConvergedOrphanState, CrashConvergedProjection, CrashConvergedRowReading } from './hitl/crashConverged.js';
367
+ export type { ApprovalQueueKindedRow, ApprovalQueueRow } from './hitl/crashConverged.js';
368
+ export { checkpointQueueRowSortOf, type CheckpointQueueRowSort } from './hitl/approvalQueueRow.js';
363
369
  export * from './hitl/crashConvergedNotice.js';
364
370
  export { approvalCompleteParked } from './hitl/approvalCompleteParked.js';
365
371
  export { approvalCompleteCauseOf } from './hitl/approvalEndingCause.js';
@@ -383,6 +389,12 @@ export * from './request/printNotification.js';
383
389
  export * from './seatContract.js';
384
390
  export { sessionRowTagOf, sessionRowPatchRefusalOf } from './sessionRowTag.js';
385
391
  export type { SessionRowCurrentReading, SessionRowPatchRefusal } from './sessionRowTag.js';
392
+ export { sessionRowUnreadableOf } from './sessionRowTag.js';
393
+ export type { SessionRowUnreadable } from './sessionRowTag.js';
394
+ export { projectSeedGateContent, projectSeedGateOf, projectSeedRefusalContent, projectSeedRefusalOf } from './projectSeed.js';
395
+ export type { ProjectSeedArm, ProjectSeedGate, ProjectSeedGateInput, ProjectSeedRefusal } from './projectSeed.js';
396
+ export { sessionMemorySyncNotice, sessionMemorySyncStateOf } from './sessionMemorySync.js';
397
+ export type { SessionMemorySyncReportReading, SessionMemorySyncSettled, SessionMemorySyncState } from './sessionMemorySync.js';
386
398
  export { mcpToolTogglesToExcludeTools } from './mcpToolToggles.js';
387
399
  export type { McpToolToggleKey, McpMountedServers } from './mcpToolToggles.js';
388
400
  export { readThinkingLatch, writeThinkingLatch, thinkingLatchView, thinkingLatchSentence, thinkingLatchRowWordOf, readSeatThinkingLatch } from './thinkingLatch.js';
@@ -397,6 +409,10 @@ export * from './agentSession/contract.js';
397
409
  export * from './agentSession/backgroundView.js';
398
410
  export { readAssistantInbox } from './assistantInbox.js';
399
411
  export type { AssistantInboxVerb, AssistantInboxEntry, AssistantInboxReading, AssistantInboxUnavailableReason } from './assistantInbox.js';
412
+ export { checkpointRowVerdictOf } from './checkpointRowVerdict.js';
413
+ export type { CheckpointRowVerdictReading } from './checkpointRowVerdict.js';
414
+ export { checkpointRequirementsDamagedOf } from './checkpointRowVerdict.js';
415
+ export type { CheckpointRequirementsDamagedReading } from './checkpointRowVerdict.js';
400
416
  export { READ_CREDENTIAL_NOT_ACCEPTED_NOTICE, isReadCredentialRefusal } from './readCredentialRefusal.js';
401
417
  export { readEngineAgentRegistry, isEngineAgentRegistryListingSuperseded } from './agentSession/engineAgentRegistryRead.js';
402
418
  export type { EngineAgentRegistryClient } from './agentSession/engineAgentRegistryRead.js';
@@ -449,3 +465,7 @@ export { scenarioSkillsOf, observedScenarioSkillsCapability } from './scenarioSk
449
465
  export type { ScenarioCardSkill, ScenarioSkillsCapabilityReading } from './scenarioSkills.js';
450
466
  export { observedApprovalFrameFamilies, approvalFrameFamiliesDeclaration } from './approvalFrameFamilies.js';
451
467
  export type { ApprovalFrameFamiliesReading, ApprovalFrameFamiliesDeclaration, ApprovalFrameFamiliesWithheld, ApprovalFrameFamiliesWithheldCause, } from './approvalFrameFamilies.js';
468
+ export { sessionEngineBindingFor, commitSessionEngine, readSessionEngine, sessionDispatchTarget } from './sessionEngine.js';
469
+ export type { SessionEngineKind, SessionEngineIdentityKind, SessionEngineBindingInput, SessionEngineRowInput, SessionEngineBindingFailure, SessionEngineSelfPresentation, SessionEngineDeclaredPresentation, SessionEngineAddressPresentation, SessionEngineBindingOk, SessionEngineSelfBinding, SessionEngineDeclaredBinding, SessionEngineAddressBinding, SessionEngineBinding, SessionEngineAssignment, SessionEngineView, SessionEngineSelfView, SessionEngineDeclaredView, SessionEngineAddressView, SessionEngineReading, SessionEngineBoundReading, SessionEngineSessionRef, SessionEngineCommitRequest, SessionEngineRecoverRequest, SessionEngineUnresolvedReason, SessionEngineCommitResult, SessionEngineCommitted, SessionEngineWiring, SessionDispatchRefusal, SessionDispatchDecision, SessionDispatchUrlTarget, SessionDispatchRefused, } from './sessionEngine.js';
470
+ export { foldSessionPlacement } from './deviceRebind.js';
471
+ export type { SessionPlacementView } from './deviceRebind.js';
package/dist/index.js CHANGED
@@ -103,7 +103,7 @@ export * from './engineWireSdk.js';
103
103
  export * from './classifierVerdictWire.js';
104
104
  export { stripSystemReminderBlocks, unwrapSystemReminder } from './systemReminderTag.js';
105
105
  export { findSystemReminderOpenTag } from './systemReminderTag.js';
106
- export { ACTIVE_RUN_BUSY_ERROR_CODE, APPROVAL_EXPIRED, ASK_GONE, asModelFallbackReason, CAPABILITY_IMAGE_INDEX_REQUIRED, CAPABILITY_K8S_LANE_REQUIRED, CAPABILITY_OPERATOR_PRINCIPALS_REQUIRED, CAPABILITY_SELF_ORCHESTRATION_REQUIRED, CONFIG_AGENT_UNKNOWN_TOOL, CONFIG_DELEGATION_ENTRY_CAPS, CONFIG_IMAGE_INVALID, CONFIG_LEGACY_TOOL_NAME, CONFIG_LIMIT_INVALID, CONFIG_LIMIT_UNKNOWN_KEY, CONFIG_MCP_SERVER_NAME_COLLISION, CONFIG_MEMORY_PROJECT_KEY_SPELLING, CONFIG_MEMORY_WRITE_SCOPE_MISMATCH, CONFIG_OUTPUT_STYLE_INVALID, CONFIG_TOOL_FACE_CONTROL, CONFLICT_IDEMPOTENCY_PAYLOAD_MISMATCH, CORRUPT_SESSION_ERROR_CODE, DECIDE_CLAIM_LOST, DECIDE_GATE_MOVED, DECIDE_NOT_PARKED, DECIDE_PARK_MOVED_CODES, DECIDE_ROW_UNREVIVABLE, DECIDE_WORKFLOW_HOST_UNKNOWN, DECIDE_WORKFLOW_LANE_CODES, DECIDE_WORKFLOW_PARK_FORKED, DECIDE_WORKFLOW_PARKS_UNREADABLE, DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED, DELEGATION_CAP_CODES, DELEGATION_CONCURRENCY_CAP, DELEGATION_SESSION_CAP, delegationCapDispositionOf, DRAINING_ERROR_CODE, ENGINE_STOP_REASONS, engineStopReasonToCc, ENV_LIFETIME_EXPIRED, FLEET_LEASE_UNAVAILABLE, GATE_PARKED_ERROR_CODE, idempotencyPayloadMismatchContent, isConfigRefusalCode, isCorruptSessionCode, isDecideParkMovedCode, isDecideRowUnrevivableCode, isDelegationCapCode, isIdempotencyPayloadMismatchCode, isInterruptedToolEndCode, isLimitsExceededCode, isRewindFamilyCode, isRulesRefusalCode, isStatusDerivedCoarseCode, isWorkflowParkRefusalCode, LIMITS_MAX_COST_EXCEEDED, LIMITS_MAX_TOKENS_EXCEEDED, LIMITS_MAX_TURNS_EXCEEDED, LIMITS_MAX_WALLTIME_EXCEEDED, MCP_SERVER_REVOKED, MCP_TOOL_DECLARATION_CHANGED, MCP_TOOL_LISTING_UNREACHED, MODEL_FALLBACK_INHERIT_NO_TIER_BINDING, operatorGateRefusalContent, OUTPUT_INVALID, PARKED_RESUME_STARTUP_FAILED, PROMPT_ASSEMBLED_ROLE_REFUSED, REQUEST_AUTONOMY_LANE_REFUSED, RESUME_AT_ERROR_CODE_PREFIX, RESUME_CONTEXT_UNAVAILABLE, RESUME_ENV_FAILED, RESUME_PLACEMENT_MISMATCH, RESUME_POLICY_FOLD_CODE, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_RETRY_LATER_CODES, RESUME_TOOL_CONTRACT_MISMATCH, RESUME_TOOL_UNAVAILABLE, RESUME_USAGE_WINDOW_EXHAUSTED, REWIND_ERROR_CODE_PREFIXES, RUN_ORPHANED, RUN_STALLED, runDeathVerdictNoteOf, SCENARIO_ASSIGNMENT_UNKNOWN_ERROR_CODE, SCENARIO_NOT_ALLOWED_ERROR_CODE, STREAM_MAX_DURATION, TOOL_END_INTERRUPTED_NEVER_STARTED, TOOL_END_INTERRUPTED_OUTCOME_UNKNOWN, USAGE_WINDOW_EXHAUSTED, USER_ATTACHMENT_INVALID_ERROR_CODE, USER_INVOKED_SKILL_UNKNOWN_ERROR_CODE, WORKFLOW_PARK_REFUSAL_CODES, } from './engineErrorCodes.js';
106
+ export { ACTIVE_RUN_BUSY_ERROR_CODE, APPROVAL_EXPIRED, ASK_GONE, asModelFallbackReason, CAPABILITY_IMAGE_INDEX_REQUIRED, CAPABILITY_K8S_LANE_REQUIRED, CAPABILITY_OPERATOR_PRINCIPALS_REQUIRED, CAPABILITY_SELF_ORCHESTRATION_REQUIRED, CONFIG_AGENT_UNKNOWN_TOOL, CONFIG_DELEGATION_ENTRY_CAPS, CONFIG_IMAGE_INVALID, CONFIG_LEGACY_TOOL_NAME, CONFIG_LIMIT_INVALID, CONFIG_LIMIT_UNKNOWN_KEY, CONFIG_MCP_SERVER_NAME_COLLISION, CONFIG_MEMORY_PROJECT_KEY_SPELLING, CONFIG_MEMORY_WRITE_SCOPE_MISMATCH, CONFIG_OUTPUT_STYLE_INVALID, CONFIG_TOOL_FACE_CONTROL, CONFLICT_IDEMPOTENCY_PAYLOAD_MISMATCH, CORRUPT_SESSION_ERROR_CODE, DECIDE_CLAIM_LOST, DECIDE_GATE_MOVED, DECIDE_NOT_PARKED, DECIDE_PARK_MOVED_CODES, DECIDE_ROW_UNREVIVABLE, DECIDE_WORKFLOW_HOST_UNKNOWN, DECIDE_WORKFLOW_LANE_CODES, DECIDE_WORKFLOW_PARK_FORKED, DECIDE_WORKFLOW_PARKS_UNREADABLE, DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED, DELEGATION_CAP_CODES, DELEGATION_CONCURRENCY_CAP, DELEGATION_SESSION_CAP, delegationCapDispositionOf, DRAINING_ERROR_CODE, ENGINE_STOP_REASONS, engineStopReasonToCc, ENV_LIFETIME_EXPIRED, FLEET_LEASE_UNAVAILABLE, GATE_PARKED_ERROR_CODE, idempotencyPayloadMismatchContent, isConfigRefusalCode, isCorruptSessionCode, isDecideParkMovedCode, isDecideRowUnrevivableCode, isDelegationCapCode, isIdempotencyPayloadMismatchCode, isInterruptedToolEndCode, isLimitsExceededCode, isRewindFamilyCode, isRulesRefusalCode, isStatusDerivedCoarseCode, isWorkflowParkRefusalCode, LIMITS_MAX_COST_EXCEEDED, LIMITS_MAX_TOKENS_EXCEEDED, LIMITS_MAX_TURNS_EXCEEDED, LIMITS_MAX_WALLTIME_EXCEEDED, MCP_SERVER_REVOKED, MCP_TOOL_DECLARATION_CHANGED, MCP_TOOL_LISTING_UNREACHED, MODEL_FALLBACK_INHERIT_NO_TIER_BINDING, operatorGateRefusalContent, OUTPUT_INVALID, PARKED_RESUME_STARTUP_FAILED, PROMPT_ASSEMBLED_ROLE_REFUSED, REQUEST_AUTONOMY_LANE_REFUSED, RESUME_AT_ERROR_CODE_PREFIX, RESUME_CONTEXT_UNAVAILABLE, RESUME_ENV_FAILED, RESUME_PLACEMENT_MISMATCH, RESUME_POLICY_FOLD_CODE, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_RETRY_LATER_CODES, RESUME_TOOL_CONTRACT_MISMATCH, RESUME_TOOL_UNAVAILABLE, RESUME_USAGE_WINDOW_EXHAUSTED, REWIND_ERROR_CODE_PREFIXES, RUN_ORPHANED, RUN_STALLED, runDeathVerdictNoteOf, SCENARIO_ASSIGNMENT_UNKNOWN_ERROR_CODE, SCENARIO_NOT_ALLOWED_ERROR_CODE, STREAM_MAX_DURATION, TOOL_END_INTERRUPTED_NEVER_STARTED, TOOL_END_INTERRUPTED_OUTCOME_UNKNOWN, USAGE_WINDOW_EXHAUSTED, USER_ATTACHMENT_INVALID_ERROR_CODE, USER_INVOKED_SKILL_UNKNOWN_ERROR_CODE, WORKFLOW_PARK_REFUSAL_CODES, ATTACHMENT_BOUND_ELSEWHERE, ATTACHMENT_BUNDLE_INVALID, ATTACHMENT_BUNDLE_LANE_NOT_ISOLATED, ATTACHMENT_BUNDLE_SEED_FIXED, CONFLICT_SESSION_MEMORY_UNOBSERVED, CONFLICT_SESSION_ARCHIVE_STAMPED, ENV_HOME_UNCONFIRMED, } from './engineErrorCodes.js';
107
107
  export { prepareRefusalCodeOf, prepareRefusalNoteOf } from './prepareRefusal.js';
108
108
  export * from './agentsWireCaps.js';
109
109
  export { engineToolDirectoryOf } from './engineToolDirectory.js';
@@ -156,6 +156,7 @@ export * from './adapter/activeRunSelfHeal.js';
156
156
  export * from './request/taskRequest.js';
157
157
  export { disableSkillsDeclaration, disableSkillsDeclarationSettled } from './disableSkillsWire.js';
158
158
  export { approvalReachDeclaration, approvalReachDeclarationSettled } from './approvalReachWire.js';
159
+ export { approvalSeatOf, APPROVAL_SEAT_STATES, APPROVAL_SEAT_BASES } from './approvalSeat.js';
159
160
  export { PERMISSIONS_KEPT_REASONS, WIRE_RULE_TRUST_ORDER, permissionsAllowKeptNotice, permissionsDeclaration, permissionsDeclarationReport } from './permissionsDeclaration.js';
160
161
  export { ASSEMBLY_REFUSAL_CAUSES, assemblyRefusalOf } from './wireFailureShape.js';
161
162
  export * from './clientSlice.js';
@@ -195,7 +196,7 @@ export { guardedRead, readOwnDataFiniteNumber, readOwnDataNonEmptyString } from
195
196
  export { contextUsageReadingOf } from './ownKey.js';
196
197
  export { TURN_FAILURE_CATEGORIES, turnFailurePresentation } from './turnFailurePresentation.js';
197
198
  export { readSeatTurnFailure, seatTurnFailureOf } from './turnFailurePresentation.js';
198
- export { REATTACH_BUDGET_FRESH, REATTACH_BUDGET_NONE, REATTACH_MAX_TRIES, runReattachPolicy, } from './runReattachPolicy.js';
199
+ export { REATTACH_BUDGET_FRESH, REATTACH_BUDGET_NONE, REATTACH_MAX_TRIES, STREAM_CAP_CREDIBLE_AFTER_MS, runReattachPolicy, } from './runReattachPolicy.js';
199
200
  export { runNotFollowedNotice, runNotFollowedOf } from './runFollow.js';
200
201
  export * from './corruptSession.js';
201
202
  export * from './corruptSessionCopy.js';
@@ -223,6 +224,7 @@ export { POISON_FRAME_RAW_MAX, REATTACH_BACKOFF_CAP_MS, REATTACH_BACKOFF_START_M
223
224
  export * from './inheritEnvWire.js';
224
225
  export * from './inheritEnvCapability.js';
225
226
  export { SUPPORT_FLOOR, supportFloorOf, engineVersionTier, engineSupportFloorEffective, coreVersionTier, compareReleaseVersions } from './supportFloor.js';
227
+ export { SERVER_SUPPORT_RANGE_REASONS, serverSupportRangeVerdict, serverSupportRangeSentence } from './serverSupportRange.js';
226
228
  export * from './decideReceipt.js';
227
229
  export * from './sessionMap.js';
228
230
  export * from './detachWire.js';
@@ -293,6 +295,7 @@ export { noAllowCauseOf } from './hitl/noAllowCause.js';
293
295
  export { policyDenyReason } from './hitl/frameRouter.js';
294
296
  export { readApprovalAllowRuleShadow, approvalAllowRuleShadowed, allowRuleShadowSentence, } from './hitl/allowRuleShadow.js';
295
297
  export { projectCrashConverged } from './hitl/crashConverged.js';
298
+ export { checkpointQueueRowSortOf } from './hitl/approvalQueueRow.js';
296
299
  export * from './hitl/crashConvergedNotice.js';
297
300
  export { approvalCompleteParked } from './hitl/approvalCompleteParked.js';
298
301
  export { approvalCompleteCauseOf } from './hitl/approvalEndingCause.js';
@@ -308,6 +311,9 @@ export * from './compensations.js';
308
311
  export * from './request/printNotification.js';
309
312
  export * from './seatContract.js';
310
313
  export { sessionRowTagOf, sessionRowPatchRefusalOf } from './sessionRowTag.js';
314
+ export { sessionRowUnreadableOf } from './sessionRowTag.js';
315
+ export { projectSeedGateContent, projectSeedGateOf, projectSeedRefusalContent, projectSeedRefusalOf } from './projectSeed.js';
316
+ export { sessionMemorySyncNotice, sessionMemorySyncStateOf } from './sessionMemorySync.js';
311
317
  export { mcpToolTogglesToExcludeTools } from './mcpToolToggles.js';
312
318
  export { readThinkingLatch, writeThinkingLatch, thinkingLatchView, thinkingLatchSentence, thinkingLatchRowWordOf, readSeatThinkingLatch } from './thinkingLatch.js';
313
319
  export { devicesFaceOf, devicesWritesAllowed, devicesFaceDetail } from './devicesFace.js';
@@ -316,6 +322,8 @@ export { KEY_SLOT_PREFIX, keyEnvNameForEntry, onboardBaseUrlProblem, onboardRefu
316
322
  export * from './agentSession/contract.js';
317
323
  export * from './agentSession/backgroundView.js';
318
324
  export { readAssistantInbox } from './assistantInbox.js';
325
+ export { checkpointRowVerdictOf } from './checkpointRowVerdict.js';
326
+ export { checkpointRequirementsDamagedOf } from './checkpointRowVerdict.js';
319
327
  export { READ_CREDENTIAL_NOT_ACCEPTED_NOTICE, isReadCredentialRefusal } from './readCredentialRefusal.js';
320
328
  export { readEngineAgentRegistry, isEngineAgentRegistryListingSuperseded } from './agentSession/engineAgentRegistryRead.js';
321
329
  export { stopEngineSessionBackground, engineSessionBackgroundReceiptReadingOf, ENGINE_SESSION_BACKGROUND_RECEIPT_STATES, } from './agentSession/engineSessionBackgroundStop.js';
@@ -350,3 +358,5 @@ export { PROJECT_MEMORY_WORDS, projectMemoryOf, observedProjectMemoryCapability,
350
358
  export { sessionRulesChildrenReadLiveOf } from './sessionRulesChildrenReadLive.js';
351
359
  export { scenarioSkillsOf, observedScenarioSkillsCapability } from './scenarioSkills.js';
352
360
  export { observedApprovalFrameFamilies, approvalFrameFamiliesDeclaration } from './approvalFrameFamilies.js';
361
+ export { sessionEngineBindingFor, commitSessionEngine, readSessionEngine, sessionDispatchTarget } from './sessionEngine.js';
362
+ export { foldSessionPlacement } from './deviceRebind.js';
@@ -1,3 +1,4 @@
1
+ import { executionLaneWordIsNone } from './executionLaneWords.js';
1
2
  import { capForDisplay } from './fleetTaskDesc.js';
2
3
  import { msg, renderMessage } from './i18n/translate.js';
3
4
  export const INJECTION_SOURCES = Object.freeze(['stdio_mcp', 'credentialed_mcp', 'task_hooks']);
@@ -16,7 +17,7 @@ function remoteLaneWordOf(lane) {
16
17
  return undefined;
17
18
  if (view.toolsOnThisHost !== false)
18
19
  return undefined;
19
- if (view.isolatedAbsent === 'no_hands' || view.provider === 'in-process')
20
+ if (view.isolatedAbsent === 'no_hands' || executionLaneWordIsNone(view.provider))
20
21
  return undefined;
21
22
  if (typeof view.provider !== 'string' || view.provider === '')
22
23
  return undefined;
@@ -40,7 +40,6 @@ export const ENGINE_RUNNER_FACE = [
40
40
  'SendMessage',
41
41
  'ListAgents',
42
42
  'Skill',
43
- 'TaskOutput',
44
43
  'TaskStop',
45
44
  'ToolSearch',
46
45
  'Workflow',
@@ -22,6 +22,7 @@ export interface LiveModelCatalog {
22
22
  };
23
23
  droppedEntries?: readonly LiveModelDroppedEntry[];
24
24
  candidateRejected?: unknown;
25
+ modelPlane?: {} | null;
25
26
  }
26
27
  export declare function setLiveModelCatalog(next: LiveModelCatalog | null): void;
27
28
  export declare function setLiveModelCatalogRefresher(fn: (() => Promise<LiveModelCatalog | null>) | null): void;
@@ -103,6 +104,20 @@ export type ModelCandidateRejectedReading = {
103
104
  readonly kind: 'unreadable';
104
105
  };
105
106
  export declare function modelCandidateRejectedOf(catalog?: LiveModelCatalog | null): ModelCandidateRejectedReading;
107
+ export declare const MODEL_PLANE_SERVED_TABLES: readonly ["env", "catalog"];
108
+ export type ModelPlaneServedTable = (typeof MODEL_PLANE_SERVED_TABLES)[number];
109
+ export declare const MODEL_PLANE_CATALOG_STANCES: readonly ["absent", "adopted", "refused"];
110
+ export type ModelPlaneCatalogStance = (typeof MODEL_PLANE_CATALOG_STANCES)[number];
111
+ export type ModelPlaneReading = {
112
+ readonly kind: 'not_reported';
113
+ } | {
114
+ readonly kind: 'read';
115
+ readonly servedTable?: ModelPlaneServedTable;
116
+ readonly catalog?: ModelPlaneCatalogStance;
117
+ } | {
118
+ readonly kind: 'unreadable';
119
+ };
120
+ export declare function modelPlaneOf(catalog?: LiveModelCatalog | null): ModelPlaneReading;
106
121
  export declare function modelCandidateRejectedContent(reading: ModelCandidateRejectedReading, lang?: UiLanguage): string | undefined;
107
122
  export interface RoutePairingVerdict {
108
123
  verdict: 'ok' | 'broken' | 'unknown';
@@ -383,6 +383,43 @@ export function modelCandidateRejectedOf(catalog = getLiveModelCatalog()) {
383
383
  return unreadable;
384
384
  }
385
385
  }
386
+ export const MODEL_PLANE_SERVED_TABLES = Object.freeze(['env', 'catalog']);
387
+ export const MODEL_PLANE_CATALOG_STANCES = Object.freeze(['absent', 'adopted', 'refused']);
388
+ const inWords = (words, v) => typeof v === 'string' && words.includes(v);
389
+ export function modelPlaneOf(catalog = getLiveModelCatalog()) {
390
+ const unreadable = Object.freeze({ kind: 'unreadable' });
391
+ try {
392
+ if (catalog === null || typeof catalog !== 'object' || Array.isArray(catalog))
393
+ return Object.freeze({ kind: 'not_reported' });
394
+ if (!Object.hasOwn(catalog, 'modelPlane'))
395
+ return Object.freeze({ kind: 'not_reported' });
396
+ const d = Object.getOwnPropertyDescriptor(catalog, 'modelPlane');
397
+ if (d === undefined || !(Object.hasOwn(d, 'value')))
398
+ return unreadable;
399
+ const v = d.value;
400
+ if (v === undefined)
401
+ return Object.freeze({ kind: 'not_reported' });
402
+ if (v === null || typeof v !== 'object' || Array.isArray(v))
403
+ return unreadable;
404
+ const proto = Object.getPrototypeOf(v);
405
+ if (proto !== Object.prototype && proto !== null)
406
+ return unreadable;
407
+ const dServed = Object.getOwnPropertyDescriptor(v, 'servedTable');
408
+ const dStance = Object.getOwnPropertyDescriptor(v, 'catalog');
409
+ if ((dServed !== undefined && !Object.hasOwn(dServed, 'value')) || (dStance !== undefined && !Object.hasOwn(dStance, 'value')))
410
+ return unreadable;
411
+ const servedTable = dServed?.value;
412
+ const stance = dStance?.value;
413
+ return Object.freeze({
414
+ kind: 'read',
415
+ ...(inWords(MODEL_PLANE_SERVED_TABLES, servedTable) ? { servedTable } : {}),
416
+ ...(inWords(MODEL_PLANE_CATALOG_STANCES, stance) ? { catalog: stance } : {}),
417
+ });
418
+ }
419
+ catch {
420
+ return unreadable;
421
+ }
422
+ }
386
423
  const CONFIG_DOMAIN_WORD = /^[a-z][a-z0-9_.-]{0,63}$/;
387
424
  export function modelCandidateRejectedContent(reading, lang) {
388
425
  try {
@@ -429,6 +466,7 @@ export function readLiveModelCatalog(body) {
429
466
  const defaultModelKey = envelopeKey(body, 'defaultModel');
430
467
  const droppedKey = envelopeKey(body, 'droppedEntries');
431
468
  const candidateKey = envelopeKey(body, 'candidateRejected');
469
+ const planeKey = envelopeKey(body, 'modelPlane');
432
470
  const raw = modelsKey.present ? modelsKey.value : undefined;
433
471
  if (!Array.isArray(raw))
434
472
  return unreadableCatalog('models_not_array');
@@ -464,6 +502,8 @@ export function readLiveModelCatalog(body) {
464
502
  }
465
503
  if (candidateKey.present && candidateKey.value !== undefined)
466
504
  out.candidateRejected = frozenJsonCopyOf(candidateKey.value) ?? null;
505
+ if (planeKey.present && planeKey.value !== undefined)
506
+ out.modelPlane = frozenJsonCopyOf(planeKey.value) ?? null;
467
507
  return Object.freeze({ kind: 'read', catalog: Object.freeze(out), unreadableRows, ...(defaultModelMalformed ? { defaultModelMalformed: true } : {}) });
468
508
  }
469
509
  catch {
@@ -448,6 +448,6 @@ export function mcpAssertionHeaderNotSentNotice(specs) {
448
448
  const parts = distinct.slice(0, ASSERTION_NOTICE_NAMES_SHOWN).map((x) => `"${x}"`);
449
449
  if (distinct.length > ASSERTION_NOTICE_NAMES_SHOWN)
450
450
  parts.push(`+${distinct.length - ASSERTION_NOTICE_NAMES_SHOWN} more`);
451
- return (`MCP servers that declare an assertion header (assertionHeader): ${parts.join(', ')} — server versions up to 7.139.0 accept this setting but do not send the header, ` +
451
+ return (`MCP servers that declare an assertion header (assertionHeader): ${parts.join(', ')} — server versions up to 7.144.0 accept this setting but do not send the header, ` +
452
452
  'and this client cannot tell whether the engine it uses sends it; a connector that requires the header will refuse requests from these servers');
453
453
  }