@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.
- package/CHANGELOG.md +13 -1
- package/README.md +5 -4
- package/dist/abortableSleep.d.ts +0 -28
- package/dist/abortableSleep.js +0 -28
- package/dist/adapt/arms.d.ts +0 -46
- package/dist/adapt/arms.js +9 -544
- package/dist/adapt/ids.d.ts +0 -58
- package/dist/adapt/ids.js +0 -63
- package/dist/adapt/instanceLedger.d.ts +0 -25
- package/dist/adapt/instanceLedger.js +0 -20
- package/dist/adapt/panelTasks.d.ts +0 -69
- package/dist/adapt/panelTasks.js +0 -95
- package/dist/adapt/textSegmentAuthority.d.ts +1 -137
- package/dist/adapt/textSegmentAuthority.js +0 -54
- package/dist/adapt/textStream.d.ts +0 -252
- package/dist/adapt/textStream.js +2 -281
- package/dist/adapt/toolCards.d.ts +0 -46
- package/dist/adapt/toolCards.js +0 -23
- package/dist/adapt/turnFlags.d.ts +0 -54
- package/dist/adapt/turnFlags.js +1 -17
- package/dist/adapt/wireShapes.d.ts +0 -92
- package/dist/adapt/wireShapes.js +0 -83
- package/dist/adapt.d.ts +0 -55
- package/dist/adapt.js +1 -120
- package/dist/adapter/activeRunSelfHeal.d.ts +22 -515
- package/dist/adapter/activeRunSelfHeal.js +10 -625
- package/dist/adapter/downstream/eventToSdkMessage.d.ts +2 -305
- package/dist/adapter/downstream/eventToSdkMessage.js +2 -867
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +2 -314
- package/dist/adapter/downstream/terminalToSdkResult.js +13 -560
- package/dist/adapter/downstream/turnUsageToModelUsage.d.ts +0 -95
- package/dist/adapter/downstream/turnUsageToModelUsage.js +2 -31
- package/dist/adapter/runStream.d.ts +0 -206
- package/dist/adapter/runStream.js +6 -596
- package/dist/adapter/types.d.ts +0 -111
- package/dist/adapter/types.js +0 -29
- package/dist/agentSession/backgroundView.d.ts +0 -106
- package/dist/agentSession/backgroundView.js +3 -49
- package/dist/agentSession/contract.d.ts +0 -98
- package/dist/agentSession/contract.js +0 -12
- package/dist/agentsWireCaps.d.ts +0 -72
- package/dist/agentsWireCaps.js +4 -72
- package/dist/approvalsStreamLiveCapability.d.ts +0 -25
- package/dist/approvalsStreamLiveCapability.js +0 -31
- package/dist/argvFlagValue.d.ts +0 -33
- package/dist/argvFlagValue.js +3 -35
- package/dist/attachmentsWireCaps.d.ts +0 -127
- package/dist/attachmentsWireCaps.js +0 -144
- package/dist/autoModeUnavailable.d.ts +0 -120
- package/dist/autoModeUnavailable.js +0 -144
- package/dist/classifierStatus.d.ts +0 -72
- package/dist/classifierStatus.js +0 -167
- package/dist/classifierVerdictWire.d.ts +0 -54
- package/dist/classifierVerdictWire.js +0 -133
- package/dist/clientContextWireCaps.d.ts +0 -37
- package/dist/clientContextWireCaps.js +0 -36
- package/dist/clientSlice.d.ts +0 -63
- package/dist/clientSlice.js +0 -45
- package/dist/cloudConfigWireCaps.d.ts +0 -86
- package/dist/cloudConfigWireCaps.js +2 -65
- package/dist/compensations.d.ts +0 -52
- package/dist/compensations.js +2 -63
- package/dist/controlRouter.d.ts +2 -208
- package/dist/controlRouter.js +1 -129
- package/dist/coreValuePorts.d.ts +0 -84
- package/dist/coreValuePorts.js +0 -29
- package/dist/decideReceipt.d.ts +0 -110
- package/dist/decideReceipt.js +0 -84
- package/dist/detachWire.d.ts +0 -130
- package/dist/detachWire.js +1 -130
- package/dist/deviceExecutorManagementCapability.d.ts +2 -35
- package/dist/deviceExecutorManagementCapability.js +1 -37
- package/dist/diagnostics.d.ts +0 -8
- package/dist/diagnostics.js +0 -8
- package/dist/diff/patch.d.ts +0 -17
- package/dist/diff/patch.js +0 -19
- package/dist/effectiveFacts.d.ts +0 -40
- package/dist/effectiveFacts.js +0 -22
- package/dist/effortWire.d.ts +0 -11
- package/dist/effortWire.js +0 -12
- package/dist/engineAgentPanelStore.d.ts +0 -169
- package/dist/engineAgentPanelStore.js +13 -293
- package/dist/engineCapReader.d.ts +0 -62
- package/dist/engineCapReader.js +1 -43
- package/dist/engineCapsCache.d.ts +0 -177
- package/dist/engineCapsCache.js +0 -199
- package/dist/engineCapsGenerationGuard.d.ts +0 -2
- package/dist/engineCapsGenerationGuard.js +0 -11
- package/dist/engineErrorCodes.d.ts +1 -316
- package/dist/engineErrorCodes.js +0 -427
- package/dist/engineHttpTools.d.ts +0 -29
- package/dist/engineHttpTools.js +0 -29
- package/dist/engineIdentity.d.ts +0 -83
- package/dist/engineIdentity.js +0 -88
- package/dist/engineInlineTaskStats.d.ts +0 -57
- package/dist/engineInlineTaskStats.js +1 -42
- package/dist/engineNoticeCodes.d.ts +0 -190
- package/dist/engineNoticeCodes.js +0 -182
- package/dist/engineSessionParam.d.ts +0 -30
- package/dist/engineSessionParam.js +0 -52
- package/dist/engineToolLabelStore.d.ts +0 -29
- package/dist/engineToolLabelStore.js +0 -31
- package/dist/engineWireSdk.d.ts +0 -90
- package/dist/engineWireSdk.js +0 -74
- package/dist/engineWireTarget.d.ts +0 -14
- package/dist/engineWireTarget.js +0 -39
- package/dist/env/localeGeo.d.ts +0 -12
- package/dist/env/localeGeo.js +2 -77
- package/dist/env/localeTag.d.ts +0 -34
- package/dist/env/localeTag.js +0 -32
- package/dist/env/uiLanguage.d.ts +0 -13
- package/dist/env/uiLanguage.js +0 -25
- package/dist/envFlag.d.ts +0 -37
- package/dist/envFlag.js +0 -40
- package/dist/executionLaneCapability.d.ts +0 -48
- package/dist/executionLaneCapability.js +0 -54
- package/dist/finalVerifyWire.d.ts +0 -67
- package/dist/finalVerifyWire.js +3 -43
- package/dist/fleet/fleetLedger.d.ts +0 -308
- package/dist/fleet/fleetLedger.js +10 -429
- package/dist/fleet/fleetProjection.d.ts +0 -240
- package/dist/fleet/fleetProjection.js +0 -189
- package/dist/fleet/fleetRowAgentType.d.ts +0 -6
- package/dist/fleet/fleetRowAgentType.js +1 -32
- package/dist/fleet/workflowSizeWarning.d.ts +0 -47
- package/dist/fleet/workflowSizeWarning.js +1 -46
- package/dist/fleetAgentPanelProjection.d.ts +0 -48
- package/dist/fleetAgentPanelProjection.js +8 -173
- package/dist/fleetTaskDesc.d.ts +0 -39
- package/dist/fleetTaskDesc.js +0 -69
- package/dist/forkWireCaps.d.ts +0 -23
- package/dist/forkWireCaps.js +1 -24
- package/dist/gateOutcome.d.ts +0 -140
- package/dist/gateOutcome.js +0 -85
- package/dist/gateVocabulary.d.ts +0 -114
- package/dist/gateVocabulary.js +1 -161
- package/dist/goalStopHook.d.ts +0 -127
- package/dist/goalStopHook.js +0 -178
- package/dist/headlessPermissionModeWire.d.ts +0 -76
- package/dist/headlessPermissionModeWire.js +1 -155
- package/dist/headlessReconnectWire.d.ts +0 -84
- package/dist/headlessReconnectWire.js +13 -67
- package/dist/hitl/approvalDecisionNoteAudit.d.ts +0 -49
- package/dist/hitl/approvalDecisionNoteAudit.js +0 -56
- package/dist/hitl/approvalOutcomeNote.d.ts +0 -2
- package/dist/hitl/approvalOutcomeNote.js +0 -20
- package/dist/hitl/approvalResolution.d.ts +0 -113
- package/dist/hitl/approvalResolution.js +0 -66
- package/dist/hitl/approvalsFeed.d.ts +0 -183
- package/dist/hitl/approvalsFeed.js +12 -243
- package/dist/hitl/armedGateRegistry.d.ts +0 -55
- package/dist/hitl/armedGateRegistry.js +0 -146
- package/dist/hitl/askGateWire.d.ts +0 -86
- package/dist/hitl/askGateWire.js +1 -95
- package/dist/hitl/askParkRowRouting.d.ts +0 -123
- package/dist/hitl/askParkRowRouting.js +1 -89
- package/dist/hitl/crashConverged.d.ts +0 -148
- package/dist/hitl/crashConverged.js +0 -214
- package/dist/hitl/editedRuleTextPrecheck.d.ts +0 -109
- package/dist/hitl/editedRuleTextPrecheck.js +0 -71
- package/dist/hitl/frameRouter.d.ts +0 -134
- package/dist/hitl/frameRouter.js +6 -378
- package/dist/hitl/gateIdentity.d.ts +0 -39
- package/dist/hitl/gateIdentity.js +0 -41
- package/dist/hitl/gateLedger.d.ts +0 -267
- package/dist/hitl/gateLedger.js +0 -121
- package/dist/hitl/hitlBridge.d.ts +7 -431
- package/dist/hitl/hitlBridge.js +7 -476
- package/dist/hitl/hitlHostSurface.d.ts +0 -150
- package/dist/hitl/hitlHostSurface.js +0 -169
- package/dist/hitl/livePendingAsk.d.ts +0 -91
- package/dist/hitl/livePendingAsk.js +0 -74
- package/dist/hitl/localAllowRule.d.ts +0 -62
- package/dist/hitl/localAllowRule.js +1 -33
- package/dist/hitl/parkOwnership.d.ts +0 -56
- package/dist/hitl/parkOwnership.js +0 -22
- package/dist/hitl/parkResolver.d.ts +3 -88
- package/dist/hitl/parkResolver.js +8 -349
- package/dist/hitl/parkRowBirthWait.d.ts +2 -26
- package/dist/hitl/parkRowBirthWait.js +3 -93
- package/dist/hitl/persistedRulesWire.d.ts +13 -358
- package/dist/hitl/persistedRulesWire.js +0 -310
- package/dist/hitl/planReviewWire.d.ts +4 -176
- package/dist/hitl/planReviewWire.js +9 -312
- package/dist/hitl/resumeRunningCard.d.ts +0 -105
- package/dist/hitl/resumeRunningCard.js +0 -105
- package/dist/hitl/sessionPolicyWire.d.ts +11 -191
- package/dist/hitl/sessionPolicyWire.js +0 -149
- package/dist/hitl/suspendedReopen.d.ts +3 -24
- package/dist/hitl/suspendedReopen.js +0 -14
- package/dist/hitl/toolApprovalWire.d.ts +5 -1308
- package/dist/hitl/toolApprovalWire.js +5 -945
- package/dist/hooksWireCaps.d.ts +0 -38
- package/dist/hooksWireCaps.js +0 -190
- package/dist/host.d.ts +0 -105
- package/dist/host.js +0 -33
- package/dist/hostEnv.d.ts +0 -14
- package/dist/hostEnv.js +0 -13
- package/dist/imagesWireCaps.d.ts +0 -21
- package/dist/imagesWireCaps.js +0 -22
- package/dist/index.d.ts +0 -134
- package/dist/index.js +0 -476
- package/dist/interactiveHalt.d.ts +5 -153
- package/dist/interactiveHalt.js +0 -111
- package/dist/interactiveToolsWire.d.ts +0 -62
- package/dist/interactiveToolsWire.js +1 -67
- package/dist/leaderConflict.d.ts +0 -59
- package/dist/leaderConflict.js +0 -48
- package/dist/limitsWire.d.ts +0 -125
- package/dist/limitsWire.js +2 -120
- package/dist/liveInitToolFace.d.ts +0 -77
- package/dist/liveInitToolFace.js +1 -109
- package/dist/liveModelCatalog.d.ts +0 -52
- package/dist/liveModelCatalog.js +0 -48
- package/dist/liveQuestionStore.d.ts +0 -87
- package/dist/liveQuestionStore.js +1 -56
- package/dist/mcpLiveness.d.ts +0 -151
- package/dist/mcpLiveness.js +0 -122
- package/dist/mcpPanel.d.ts +0 -104
- package/dist/mcpPanel.js +0 -49
- package/dist/mcpReconnect.d.ts +0 -58
- package/dist/mcpReconnect.js +0 -69
- package/dist/mcpWireCaps.d.ts +0 -55
- package/dist/mcpWireCaps.js +1 -13
- package/dist/memoryComplianceCapability.d.ts +3 -57
- package/dist/memoryComplianceCapability.js +0 -57
- package/dist/memoryEntriesWire.d.ts +6 -198
- package/dist/memoryEntriesWire.js +0 -144
- package/dist/memoryOriginCapability.d.ts +3 -53
- package/dist/memoryOriginCapability.js +0 -50
- package/dist/memorySpecWire.d.ts +0 -116
- package/dist/memorySpecWire.js +0 -150
- package/dist/model/catalog.d.ts +0 -111
- package/dist/model/catalog.js +0 -87
- package/dist/model/catalogLoader.d.ts +0 -114
- package/dist/model/catalogLoader.js +2 -139
- package/dist/model/modelSupplyRules.d.ts +1 -55
- package/dist/model/modelSupplyRules.js +0 -62
- package/dist/model/providerAuth.d.ts +0 -103
- package/dist/model/providerAuth.js +2 -38
- package/dist/model/providerCatalog.d.ts +0 -45
- package/dist/model/providerCatalog.js +0 -37
- package/dist/model/providerPresets.d.ts +0 -33
- package/dist/model/providerPresets.js +2 -91
- package/dist/model/tierVocabulary.d.ts +0 -31
- package/dist/model/tierVocabulary.js +0 -27
- package/dist/modelBudgetRule.d.ts +0 -39
- package/dist/modelBudgetRule.js +0 -39
- package/dist/modelCapabilityProbe.d.ts +0 -175
- package/dist/modelCapabilityProbe.js +0 -147
- package/dist/modelWireCaps.d.ts +0 -13
- package/dist/modelWireCaps.js +0 -13
- package/dist/notifications.d.ts +0 -233
- package/dist/notifications.js +14 -492
- package/dist/oneShotWireCaps.d.ts +0 -34
- package/dist/oneShotWireCaps.js +0 -35
- package/dist/ownKey.d.ts +0 -33
- package/dist/ownKey.js +0 -33
- package/dist/panelRunningHistory.d.ts +0 -28
- package/dist/panelRunningHistory.js +0 -43
- package/dist/peerFrames.d.ts +0 -71
- package/dist/peerFrames.js +0 -168
- package/dist/peerLaneCapability.d.ts +0 -44
- package/dist/peerLaneCapability.js +0 -52
- package/dist/permissionRuleIssue.d.ts +0 -30
- package/dist/permissionRuleIssue.js +0 -78
- package/dist/permissionRulesWriteCapability.d.ts +0 -46
- package/dist/permissionRulesWriteCapability.js +0 -54
- package/dist/permissionWireCaps.d.ts +0 -37
- package/dist/permissionWireCaps.js +0 -37
- package/dist/postureKnob.d.ts +0 -71
- package/dist/postureKnob.js +0 -86
- package/dist/principalWire.d.ts +0 -17
- package/dist/principalWire.js +0 -17
- package/dist/printToolResultFrame.d.ts +0 -100
- package/dist/printToolResultFrame.js +0 -33
- package/dist/promptProfileWireCaps.d.ts +0 -13
- package/dist/promptProfileWireCaps.js +0 -13
- package/dist/readFacePosture.d.ts +0 -43
- package/dist/readFacePosture.js +0 -46
- package/dist/request/printNotification.d.ts +0 -20
- package/dist/request/printNotification.js +0 -55
- package/dist/request/taskRequest.d.ts +0 -249
- package/dist/request/taskRequest.js +6 -498
- package/dist/resumeRefusalCopy.d.ts +0 -136
- package/dist/resumeRefusalCopy.js +1 -117
- package/dist/retainBackgroundWireCaps.d.ts +0 -48
- package/dist/retainBackgroundWireCaps.js +0 -48
- package/dist/retryStatus.d.ts +2 -221
- package/dist/retryStatus.js +0 -107
- package/dist/rewindWireCaps.d.ts +0 -27
- package/dist/rewindWireCaps.js +0 -24
- package/dist/runCancelContext.d.ts +1 -20
- package/dist/runCancelContext.js +0 -34
- package/dist/runTerminal.d.ts +0 -273
- package/dist/runTerminal.js +0 -177
- package/dist/sandboxWire.d.ts +0 -38
- package/dist/sandboxWire.js +0 -82
- package/dist/scenarioWire.d.ts +0 -60
- package/dist/scenarioWire.js +0 -68
- package/dist/scratchpadWireCaps.d.ts +0 -11
- package/dist/scratchpadWireCaps.js +0 -32
- package/dist/sdkWireTransit.d.ts +0 -38
- package/dist/sdkWireTransit.js +0 -30
- package/dist/seam.d.ts +18 -853
- package/dist/seam.js +0 -52
- package/dist/seatContract.d.ts +0 -555
- package/dist/seatContract.js +5 -304
- package/dist/selfOrchestrationDenial.d.ts +0 -189
- package/dist/selfOrchestrationDenial.js +0 -162
- package/dist/selfOrchestrationWireCaps.d.ts +0 -38
- package/dist/selfOrchestrationWireCaps.js +0 -38
- package/dist/sessionMap.d.ts +0 -60
- package/dist/sessionMap.js +0 -37
- package/dist/sessionMemoryStatus.d.ts +11 -114
- package/dist/sessionMemoryStatus.js +0 -112
- package/dist/sessionModelLatch.d.ts +0 -29
- package/dist/sessionModelLatch.js +0 -40
- package/dist/sessionPolicyCapability.d.ts +3 -53
- package/dist/sessionPolicyCapability.js +0 -52
- package/dist/sessionSlot.d.ts +0 -26
- package/dist/sessionSlot.js +0 -17
- package/dist/skillsWireCaps.d.ts +0 -87
- package/dist/skillsWireCaps.js +0 -38
- package/dist/sqlEngineCapability.d.ts +0 -118
- package/dist/sqlEngineCapability.js +0 -134
- package/dist/sseIdleTriage.d.ts +0 -79
- package/dist/sseIdleTriage.js +1 -80
- package/dist/steering.d.ts +0 -54
- package/dist/steering.js +0 -63
- package/dist/subagent/engineCompactWire.d.ts +0 -34
- package/dist/subagent/engineCompactWire.js +4 -134
- package/dist/subagent/engineDelegatedPrompt.d.ts +0 -31
- package/dist/subagent/engineDelegatedPrompt.js +1 -103
- package/dist/subagent/engineRowStopGate.d.ts +0 -20
- package/dist/subagent/engineRowStopGate.js +0 -49
- package/dist/subagent/engineSubagentOutput.d.ts +0 -7
- package/dist/subagent/engineSubagentOutput.js +1 -51
- package/dist/subagent/engineSubagentResume.d.ts +2 -279
- package/dist/subagent/engineSubagentResume.js +2 -129
- package/dist/subagent/engineSubagentSteer.d.ts +0 -26
- package/dist/subagent/engineSubagentSteer.js +0 -63
- package/dist/subagent/engineSubagentTail.d.ts +0 -38
- package/dist/subagent/engineSubagentTail.js +2 -110
- package/dist/subagent/engineTaskHandleWire.d.ts +6 -67
- package/dist/subagent/engineTaskHandleWire.js +0 -126
- package/dist/subagent/subagentOwnerAbsence.d.ts +0 -2
- package/dist/subagent/subagentOwnerAbsence.js +0 -25
- package/dist/subagentContentStore.d.ts +3 -260
- package/dist/subagentContentStore.js +7 -540
- package/dist/systemReminderTag.d.ts +0 -49
- package/dist/systemReminderTag.js +0 -61
- package/dist/toolResult.d.ts +1 -211
- package/dist/toolResult.js +1 -358
- package/dist/toolRoster.d.ts +0 -140
- package/dist/toolRoster.js +0 -66
- package/dist/typePins.d.ts +0 -46
- package/dist/types/engineState.d.ts +0 -71
- package/dist/types/engineState.js +0 -16
- package/dist/ultracodeWireCaps.d.ts +0 -75
- package/dist/ultracodeWireCaps.js +0 -92
- package/dist/unrefTimer.d.ts +0 -27
- package/dist/webSearchBackendCapability.d.ts +0 -72
- package/dist/webSearchBackendCapability.js +0 -79
- package/dist/webSearchWireCaps.d.ts +0 -37
- package/dist/webSearchWireCaps.js +0 -34
- package/dist/websearch/searchProviderPresets.d.ts +0 -81
- package/dist/websearch/searchProviderPresets.js +0 -27
- package/dist/wireErrorTriage.d.ts +4 -160
- package/dist/wireErrorTriage.js +0 -171
- package/dist/wireRefusalCopy.d.ts +0 -28
- package/dist/wireRefusalCopy.js +0 -28
- package/dist/workflow.d.ts +0 -40
- package/dist/workflow.js +0 -52
- package/dist/workflowClient.d.ts +0 -122
- package/dist/workflowClient.js +8 -360
- package/dist/workflowMonitor.d.ts +2 -72
- package/dist/workflowMonitor.js +0 -26
- package/dist/writeProtectionCapability.d.ts +0 -112
- package/dist/writeProtectionCapability.js +0 -109
- package/docs/INTEGRATION-CLIENTS.md +30 -1
- package/package.json +1 -1
|
@@ -1,35 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* permissionRulesWriteCapability — `GET /v1/capabilities.permissionRulesWrite`(server ≥7.91.1;sdk 9.8.1
|
|
3
|
-
* 尚未声明该键 ⇒ 结构读)的三端共用读面(0.76.1 CC-102;与 sql / writeProtection / webSearch.backend /
|
|
4
|
-
* executionLane / approvalsStreamLive / deviceExecutor.management / peerLane 各只兄弟同一套四态词汇)。
|
|
5
|
-
*
|
|
6
|
-
* ── 这一位答的是哪一个问题 ────────────────────────────────────────────────────────────────
|
|
7
|
-
* 「收紧方向的单步规则写入口(把某条工具规则改成 deny/ask 的那一步)对**这一次调用方**够不够得着」。
|
|
8
|
-
* 这一位与「规则车道整体在不在」是上游同一个内部表达式的两次读——车道在场 ∧ 这次调用带得到可验明
|
|
9
|
-
* 的身份——所以两者永远同真同假;但它们**不是同一个位**,原因见下。
|
|
10
|
-
*
|
|
11
|
-
* ── 🔴 读法(两处上游源码逐字一致,别按撤销面那一位类推)─────────────────────────────────────
|
|
12
|
-
* ① **键缺席 ⇒ 这份二进制比单步写口本身还老**:更早的引擎上,规则车道的其它几口已经在正常
|
|
13
|
-
* 应答(甚至已经报真),但这一条写口压根没有路由——键缺席就是这件事的信号,消费端据此**藏起**
|
|
14
|
-
* 这个写入口(真打了也能认:那类拒绝是裸的「方法不许」形,但不必打了才知道)。
|
|
15
|
-
* ② **键在场 ⇒ 按这一位自己的值判「这次够不够得着」**:值为 `true`/`false` 直接就是答案,不需要
|
|
16
|
-
* 再去核对车道整体那一位。
|
|
17
|
-
* ③ ⚠️ **与撤销面那一只存在性信号刻意不同源**:那一位是**部署级**的、与调用方身份无关的布尔(它的
|
|
18
|
-
* 值本身要当版本探针用);本位不是——本位的值同时编码了「车道在不在」与「这次调用带没带得到
|
|
19
|
-
* 身份」两件事,上游明确说这两位的读法不能互相套用。
|
|
20
|
-
* ④ 位为真**不**保证任意一次写都成功:方向 / 规则文本 / scope 的合法性由每次调用自己的应答逐次
|
|
21
|
-
* 回答,这一位只回答「入口在不在、这次摸不摸得到」。
|
|
22
|
-
*
|
|
23
|
-
* ── 🔴 四态,不是两态([honest-absence-not-fabricated-zero])──────────────────────────────────
|
|
24
|
-
* ① `unobserved` —— 本进程一次 caps 响应都没观测到。
|
|
25
|
-
* ② `not_reported` —— caps 观测到了,而回体上**没有**这个键 ⇒ 引擎比这条写口老(见①),藏入口。
|
|
26
|
-
* ③ `absent` —— 键在、值**明确是** `false`:这次调用够不着这条写口(车道没开,或这次调用
|
|
27
|
-
* 带不到可验明的身份)。**正面事实**,与 `not_reported`(判不出)是两件不同的事。
|
|
28
|
-
* ④ `present` —— 键在、值为 `true`:这次调用摸得到这条写口。
|
|
29
|
-
* 值既不是 `true` 也不是 `false` ⇒ 畸形 ⇒ 删格(⇒ `unobserved`)。
|
|
30
|
-
* 🔴 三种「没有」(`unobserved` / `not_reported` / `absent`)**不许互折**。
|
|
31
|
-
*/
|
|
32
|
-
/** 四态读数。`unobserved` 由读口在这一格空缺时铸,不由投影铸。 */
|
|
33
1
|
export type PermissionRulesWriteReading = {
|
|
34
2
|
kind: 'unobserved';
|
|
35
3
|
} | {
|
|
@@ -39,26 +7,12 @@ export type PermissionRulesWriteReading = {
|
|
|
39
7
|
} | {
|
|
40
8
|
kind: 'present';
|
|
41
9
|
};
|
|
42
|
-
/** caps 回体 → 本格读数;畸形一律 `undefined`(= 这一格不写 ⇒ 读口答 `unobserved`)。 */
|
|
43
10
|
export declare function projectPermissionRulesWriteCapability(caps: unknown): PermissionRulesWriteReading | undefined;
|
|
44
|
-
/** 宿主 caps probe 的读面 tee 落点。绝不 throw;畸形 ⇒ 删格;`opts.generation` 关掉旧探测覆盖新读数的竞态。 */
|
|
45
11
|
export declare function noteEngineCapsForPermissionRulesWrite(baseUrl: string, caps: unknown, opts?: {
|
|
46
12
|
generation?: number;
|
|
47
13
|
}): void;
|
|
48
|
-
/** 本进程观测到的读数;这一格空缺 ⇒ `{kind:'unobserved'}`。 */
|
|
49
14
|
export declare function observedPermissionRulesWrite(baseUrl?: string | undefined): PermissionRulesWriteReading;
|
|
50
|
-
/**
|
|
51
|
-
* 「这次调用摸不摸得到单步写入口」的判据单源(布尔):只有 `present` 才 `true`;其余三态
|
|
52
|
-
* (`absent` / `not_reported` / `unobserved`)一律 `false`——藏入口的默认方向是**保守**的,
|
|
53
|
-
* 判不出与明确没有对「要不要露出这个写按钮」是同一个答案。
|
|
54
|
-
*
|
|
55
|
-
* 🔴 本函数是本位**唯一**的派生点:{@link "./hitl/persistedRulesWire.js".persistedRulesWriteAvailable}
|
|
56
|
-
* 只调用它,不再合取别的位、也不再另读一遍 caps——同一件事只许有一个判官。
|
|
57
|
-
*/
|
|
58
15
|
export declare function permissionRulesWriteAvailable(reading: PermissionRulesWriteReading): boolean;
|
|
59
|
-
/** doctor 那一行的 detail 串,唯一措辞真源。🔴 两种「读不出」都不许暗示「够得着」或「够不着」。 */
|
|
60
16
|
export declare function permissionRulesWriteDoctorDetail(reading: PermissionRulesWriteReading): string;
|
|
61
|
-
/** 换代失效口(引擎温切成功后调):清成未观测。空串 ⇒ no-op;绝不 throw。 */
|
|
62
17
|
export declare function forgetPermissionRulesWriteReading(baseUrl: string | undefined): void;
|
|
63
|
-
/** 测试钩子。 */
|
|
64
18
|
export declare function __resetPermissionRulesWriteReadingsForTests(): void;
|
|
@@ -1,47 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* permissionRulesWriteCapability — `GET /v1/capabilities.permissionRulesWrite`(server ≥7.91.1;sdk 9.8.1
|
|
3
|
-
* 尚未声明该键 ⇒ 结构读)的三端共用读面(0.76.1 CC-102;与 sql / writeProtection / webSearch.backend /
|
|
4
|
-
* executionLane / approvalsStreamLive / deviceExecutor.management / peerLane 各只兄弟同一套四态词汇)。
|
|
5
|
-
*
|
|
6
|
-
* ── 这一位答的是哪一个问题 ────────────────────────────────────────────────────────────────
|
|
7
|
-
* 「收紧方向的单步规则写入口(把某条工具规则改成 deny/ask 的那一步)对**这一次调用方**够不够得着」。
|
|
8
|
-
* 这一位与「规则车道整体在不在」是上游同一个内部表达式的两次读——车道在场 ∧ 这次调用带得到可验明
|
|
9
|
-
* 的身份——所以两者永远同真同假;但它们**不是同一个位**,原因见下。
|
|
10
|
-
*
|
|
11
|
-
* ── 🔴 读法(两处上游源码逐字一致,别按撤销面那一位类推)─────────────────────────────────────
|
|
12
|
-
* ① **键缺席 ⇒ 这份二进制比单步写口本身还老**:更早的引擎上,规则车道的其它几口已经在正常
|
|
13
|
-
* 应答(甚至已经报真),但这一条写口压根没有路由——键缺席就是这件事的信号,消费端据此**藏起**
|
|
14
|
-
* 这个写入口(真打了也能认:那类拒绝是裸的「方法不许」形,但不必打了才知道)。
|
|
15
|
-
* ② **键在场 ⇒ 按这一位自己的值判「这次够不够得着」**:值为 `true`/`false` 直接就是答案,不需要
|
|
16
|
-
* 再去核对车道整体那一位。
|
|
17
|
-
* ③ ⚠️ **与撤销面那一只存在性信号刻意不同源**:那一位是**部署级**的、与调用方身份无关的布尔(它的
|
|
18
|
-
* 值本身要当版本探针用);本位不是——本位的值同时编码了「车道在不在」与「这次调用带没带得到
|
|
19
|
-
* 身份」两件事,上游明确说这两位的读法不能互相套用。
|
|
20
|
-
* ④ 位为真**不**保证任意一次写都成功:方向 / 规则文本 / scope 的合法性由每次调用自己的应答逐次
|
|
21
|
-
* 回答,这一位只回答「入口在不在、这次摸不摸得到」。
|
|
22
|
-
*
|
|
23
|
-
* ── 🔴 四态,不是两态([honest-absence-not-fabricated-zero])──────────────────────────────────
|
|
24
|
-
* ① `unobserved` —— 本进程一次 caps 响应都没观测到。
|
|
25
|
-
* ② `not_reported` —— caps 观测到了,而回体上**没有**这个键 ⇒ 引擎比这条写口老(见①),藏入口。
|
|
26
|
-
* ③ `absent` —— 键在、值**明确是** `false`:这次调用够不着这条写口(车道没开,或这次调用
|
|
27
|
-
* 带不到可验明的身份)。**正面事实**,与 `not_reported`(判不出)是两件不同的事。
|
|
28
|
-
* ④ `present` —— 键在、值为 `true`:这次调用摸得到这条写口。
|
|
29
|
-
* 值既不是 `true` 也不是 `false` ⇒ 畸形 ⇒ 删格(⇒ `unobserved`)。
|
|
30
|
-
* 🔴 三种「没有」(`unobserved` / `not_reported` / `absent`)**不许互折**。
|
|
31
|
-
*/
|
|
32
1
|
import { engineWireTarget } from './engineWireTarget.js';
|
|
33
2
|
import { createEngineCapReader } from './engineCapReader.js';
|
|
34
|
-
/** caps 回体 → 本格读数;畸形一律 `undefined`(= 这一格不写 ⇒ 读口答 `unobserved`)。 */
|
|
35
3
|
export function projectPermissionRulesWriteCapability(caps) {
|
|
36
4
|
if (caps === null || typeof caps !== 'object')
|
|
37
5
|
return undefined;
|
|
38
|
-
// 0.77.0 整族改齐:① 非对象 / 数组 caps 不是能力表 ⇒ 畸形(投影答 undefined ⇒ 删格 ⇒ 读口答 unobserved),不再答 not_reported
|
|
39
|
-
// (那是把「取不到」冒充「报了但没提」);② 在场判据改 hasOwn —— 原型链上的同名键永远不会被序列化上 wire,读成在场 = 凭空造一格。
|
|
40
6
|
if (caps === null || typeof caps !== 'object' || Array.isArray(caps))
|
|
41
7
|
return undefined;
|
|
42
8
|
if (!Object.hasOwn(caps, 'permissionRulesWrite'))
|
|
43
9
|
return { kind: 'not_reported' };
|
|
44
|
-
// 🔴 只读一次:在场判据与取值同一次读。
|
|
45
10
|
const v = caps.permissionRulesWrite;
|
|
46
11
|
if (v === undefined)
|
|
47
12
|
return { kind: 'not_reported' };
|
|
@@ -49,37 +14,20 @@ export function projectPermissionRulesWriteCapability(caps) {
|
|
|
49
14
|
return undefined;
|
|
50
15
|
return v ? { kind: 'present' } : { kind: 'absent' };
|
|
51
16
|
}
|
|
52
|
-
/**
|
|
53
|
-
* 本格的 per-baseUrl 读账 + tee / 读口 / 失效口 / 测试钩四口 —— 能力位读器**共用同一份实现**
|
|
54
|
-
* ({@link createEngineCapReader});本文件只留这一格真正不同的部分:投影函数
|
|
55
|
-
* {@link projectPermissionRulesWriteCapability}、doctor 措辞表,以及本位自己的判据助手。
|
|
56
|
-
* 🔴 Map 在工厂闭包里,**一只读器一张**:收到读不懂的回体只删自己这一格,绝不连坐别的能力面。
|
|
57
|
-
*/
|
|
58
17
|
const reader = createEngineCapReader({
|
|
59
18
|
name: 'permissionRulesWrite',
|
|
60
19
|
project: projectPermissionRulesWriteCapability,
|
|
61
20
|
makeUnobserved: () => ({ kind: 'unobserved' }),
|
|
62
21
|
});
|
|
63
|
-
/** 宿主 caps probe 的读面 tee 落点。绝不 throw;畸形 ⇒ 删格;`opts.generation` 关掉旧探测覆盖新读数的竞态。 */
|
|
64
22
|
export function noteEngineCapsForPermissionRulesWrite(baseUrl, caps, opts) {
|
|
65
23
|
reader.note(baseUrl, caps, opts);
|
|
66
24
|
}
|
|
67
|
-
/** 本进程观测到的读数;这一格空缺 ⇒ `{kind:'unobserved'}`。 */
|
|
68
25
|
export function observedPermissionRulesWrite(baseUrl = engineWireTarget()?.baseUrl) {
|
|
69
26
|
return reader.observed(baseUrl);
|
|
70
27
|
}
|
|
71
|
-
/**
|
|
72
|
-
* 「这次调用摸不摸得到单步写入口」的判据单源(布尔):只有 `present` 才 `true`;其余三态
|
|
73
|
-
* (`absent` / `not_reported` / `unobserved`)一律 `false`——藏入口的默认方向是**保守**的,
|
|
74
|
-
* 判不出与明确没有对「要不要露出这个写按钮」是同一个答案。
|
|
75
|
-
*
|
|
76
|
-
* 🔴 本函数是本位**唯一**的派生点:{@link "./hitl/persistedRulesWire.js".persistedRulesWriteAvailable}
|
|
77
|
-
* 只调用它,不再合取别的位、也不再另读一遍 caps——同一件事只许有一个判官。
|
|
78
|
-
*/
|
|
79
28
|
export function permissionRulesWriteAvailable(reading) {
|
|
80
29
|
return reading.kind === 'present';
|
|
81
30
|
}
|
|
82
|
-
/** doctor 那一行的 detail 串,唯一措辞真源。🔴 两种「读不出」都不许暗示「够得着」或「够不着」。 */
|
|
83
31
|
export function permissionRulesWriteDoctorDetail(reading) {
|
|
84
32
|
switch (reading.kind) {
|
|
85
33
|
case 'unobserved':
|
|
@@ -92,11 +40,9 @@ export function permissionRulesWriteDoctorDetail(reading) {
|
|
|
92
40
|
return 'permission-rule write entry reachable for this call — a per-call attempt still answers for itself whether the direction, text, and scope are accepted';
|
|
93
41
|
}
|
|
94
42
|
}
|
|
95
|
-
/** 换代失效口(引擎温切成功后调):清成未观测。空串 ⇒ no-op;绝不 throw。 */
|
|
96
43
|
export function forgetPermissionRulesWriteReading(baseUrl) {
|
|
97
44
|
reader.forget(baseUrl);
|
|
98
45
|
}
|
|
99
|
-
/** 测试钩子。 */
|
|
100
46
|
export function __resetPermissionRulesWriteReadingsForTests() {
|
|
101
47
|
reader.__resetForTests();
|
|
102
48
|
}
|
|
@@ -1,44 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/permissionWireCaps.ts 逐字搬入(零依赖)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* src/sema/permissionWireCaps.ts — PURE CC permission-mode INTENT projection (R4, revised per the two-axis
|
|
6
|
-
* seamless principle). seamQuery imports it.
|
|
7
|
-
*
|
|
8
|
-
* 🔴 Design (memory seamless-two-axis-wire-principle): the frontend carries the RAW permission-mode INTENT; the
|
|
9
|
-
* SERVICE interprets it (axis-aware, tighten-only). We do NOT pre-interpret `plan → enablePlanMode+handsReadOnly`
|
|
10
|
-
* on the client — that bakes policy into one frontend and would drift between the TUI shell and the web portal.
|
|
11
|
-
* Instead we stamp `permissionMode` and let the service own the interpretation (plan ⇒ present_plan + read-only;
|
|
12
|
-
* acceptEdits/bypassPermissions ⇒ loosening, coerced to default engine-side, enforced client-side). This keeps the
|
|
13
|
-
* shell a thin per-turn intent projector that's identical across TOC-local / TOB-cloud / centralized-session axes.
|
|
14
|
-
*
|
|
15
|
-
* `auto`(分类器批3,[907] server 五模式表):server ≥1.209 coercePermissionMode 认 "auto"
|
|
16
|
-
* (解释 = default 同款 fs 写 ask 门;存活 ask 由引擎侧 auto-mode 分类器先行裁决——武装 AND 门
|
|
17
|
-
* RuntimeCaps.autoMode ∧ RunnerDeps.autoMode,缺一静默回 ask,fail-closed)。壳只透传意图,分类器
|
|
18
|
-
* 规则/权益都在装配面,非 TaskSpec 字段。版本安全:老 server coerce 未知非空词 → "default"
|
|
19
|
-
* (manual ask 门)= 只紧不松。
|
|
20
|
-
*/
|
|
21
1
|
export type PermissionMode = 'default' | 'plan' | 'acceptEdits' | 'bypassPermissions' | 'auto';
|
|
22
2
|
export interface PermissionModeField {
|
|
23
3
|
permissionMode?: PermissionMode;
|
|
24
4
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Project the client's permission mode → the wire intent. Carries any KNOWN non-`default` mode verbatim (the
|
|
27
|
-
* service interprets); `default`/unknown/undefined ⇒ no stamp (the deployment baseline governs). No policy baked
|
|
28
|
-
* here — relevance + tighten-only governance is the service's job.
|
|
29
|
-
*
|
|
30
|
-
* `stampDefault`([830]① server 1.191 五模式解释层):server 侧 absent-mode 不挂门,manual(=CC
|
|
31
|
-
* default)要挂 fs 写 ask 门必须显式 stamp `permissionMode:"default"`。老 server 对 "default" 走
|
|
32
|
-
* basePolicy(与 absent 等价),version-safe。
|
|
33
|
-
*
|
|
34
|
-
* 🔴 现有三个 `stampDefault:true` 调用点(2026-08-05 起,别再按「只有交互 REPL 传 true」读这段——
|
|
35
|
-
* 那句旧话在 [2713] 之前就已被 env 支推翻,照它去「恢复」旧形 = 静默重开 P0 断链):
|
|
36
|
-
* · 交互 REPL(seamQuery,leader ToolUseConfirm 队列已注册 ⇒ 三选卡真弹得出来);
|
|
37
|
-
* · headless env 支(headlessPermissionModeWire,SEMA_HEADLESS_PERMISSION_MODE = 显式垫层旋钮);
|
|
38
|
-
* · headless flag 支([2713] 根修:`--permission-mode default|manual|dontAsk` 显式表态必须 stamp,
|
|
39
|
-
* 否则 server `deriveSettingsPolicy` 因 `!perms` 返回 `{}` ⇒ print 车道**全无客户端门**)。
|
|
40
|
-
* 不传 `stampDefault` 的调用方(缺省 false)= 「没有表态」,继续吃部署基线,行为逐字不变。
|
|
41
|
-
*/
|
|
42
5
|
export declare function permissionModeField(mode: string | undefined, opts?: {
|
|
43
6
|
stampDefault?: boolean;
|
|
44
7
|
}): PermissionModeField;
|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/permissionWireCaps.ts 逐字搬入(零依赖)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* src/sema/permissionWireCaps.ts — PURE CC permission-mode INTENT projection (R4, revised per the two-axis
|
|
6
|
-
* seamless principle). seamQuery imports it.
|
|
7
|
-
*
|
|
8
|
-
* 🔴 Design (memory seamless-two-axis-wire-principle): the frontend carries the RAW permission-mode INTENT; the
|
|
9
|
-
* SERVICE interprets it (axis-aware, tighten-only). We do NOT pre-interpret `plan → enablePlanMode+handsReadOnly`
|
|
10
|
-
* on the client — that bakes policy into one frontend and would drift between the TUI shell and the web portal.
|
|
11
|
-
* Instead we stamp `permissionMode` and let the service own the interpretation (plan ⇒ present_plan + read-only;
|
|
12
|
-
* acceptEdits/bypassPermissions ⇒ loosening, coerced to default engine-side, enforced client-side). This keeps the
|
|
13
|
-
* shell a thin per-turn intent projector that's identical across TOC-local / TOB-cloud / centralized-session axes.
|
|
14
|
-
*
|
|
15
|
-
* `auto`(分类器批3,[907] server 五模式表):server ≥1.209 coercePermissionMode 认 "auto"
|
|
16
|
-
* (解释 = default 同款 fs 写 ask 门;存活 ask 由引擎侧 auto-mode 分类器先行裁决——武装 AND 门
|
|
17
|
-
* RuntimeCaps.autoMode ∧ RunnerDeps.autoMode,缺一静默回 ask,fail-closed)。壳只透传意图,分类器
|
|
18
|
-
* 规则/权益都在装配面,非 TaskSpec 字段。版本安全:老 server coerce 未知非空词 → "default"
|
|
19
|
-
* (manual ask 门)= 只紧不松。
|
|
20
|
-
*/
|
|
21
1
|
const KNOWN = new Set([
|
|
22
2
|
'default',
|
|
23
3
|
'plan',
|
|
@@ -25,23 +5,6 @@ const KNOWN = new Set([
|
|
|
25
5
|
'bypassPermissions',
|
|
26
6
|
'auto',
|
|
27
7
|
]);
|
|
28
|
-
/**
|
|
29
|
-
* Project the client's permission mode → the wire intent. Carries any KNOWN non-`default` mode verbatim (the
|
|
30
|
-
* service interprets); `default`/unknown/undefined ⇒ no stamp (the deployment baseline governs). No policy baked
|
|
31
|
-
* here — relevance + tighten-only governance is the service's job.
|
|
32
|
-
*
|
|
33
|
-
* `stampDefault`([830]① server 1.191 五模式解释层):server 侧 absent-mode 不挂门,manual(=CC
|
|
34
|
-
* default)要挂 fs 写 ask 门必须显式 stamp `permissionMode:"default"`。老 server 对 "default" 走
|
|
35
|
-
* basePolicy(与 absent 等价),version-safe。
|
|
36
|
-
*
|
|
37
|
-
* 🔴 现有三个 `stampDefault:true` 调用点(2026-08-05 起,别再按「只有交互 REPL 传 true」读这段——
|
|
38
|
-
* 那句旧话在 [2713] 之前就已被 env 支推翻,照它去「恢复」旧形 = 静默重开 P0 断链):
|
|
39
|
-
* · 交互 REPL(seamQuery,leader ToolUseConfirm 队列已注册 ⇒ 三选卡真弹得出来);
|
|
40
|
-
* · headless env 支(headlessPermissionModeWire,SEMA_HEADLESS_PERMISSION_MODE = 显式垫层旋钮);
|
|
41
|
-
* · headless flag 支([2713] 根修:`--permission-mode default|manual|dontAsk` 显式表态必须 stamp,
|
|
42
|
-
* 否则 server `deriveSettingsPolicy` 因 `!perms` 返回 `{}` ⇒ print 车道**全无客户端门**)。
|
|
43
|
-
* 不传 `stampDefault` 的调用方(缺省 false)= 「没有表态」,继续吃部署基线,行为逐字不变。
|
|
44
|
-
*/
|
|
45
8
|
export function permissionModeField(mode, opts) {
|
|
46
9
|
if (typeof mode === 'string' && mode !== 'default' && KNOWN.has(mode)) {
|
|
47
10
|
return { permissionMode: mode };
|
package/dist/postureKnob.d.ts
CHANGED
|
@@ -1,91 +1,20 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 一个旋钮的值是谁定的 —— 四词闭集,**顺序即优先序**(engine 侧是穷举 switch,加词在那里编译红)。
|
|
3
|
-
* · `env` —— 这台机器的 env 变量钉的(部署主权,恒赢任何下发值);
|
|
4
|
-
* · `center` —— 配置中心发布的(重启生效;本机写同名 env 即把这个键收回);
|
|
5
|
-
* · `posture` —— 从**部署形**派生的(单用户 turnkey);
|
|
6
|
-
* · `engine-default` —— 没人钉过,内建缺省在岗。
|
|
7
|
-
* 🔴 本包按**开集**读实际值(词表属主在引擎侧,加词不该让消费端把一个合法读数判没);这张表是
|
|
8
|
-
* **优先序与判据**的真源,不是一道准入门。
|
|
9
|
-
|
|
10
|
-
* 🔴 形制:`Object.freeze` 的数组,**不是**只在类型面只读的 `readonly T[]` —— 后者一行 `.splice()`
|
|
11
|
-
* 就能改,而公面消费者拿到的正是这个实例(本仓已定谳的病形,同 `RESUME_RETRY_LATER_CODES`)。
|
|
12
|
-
*/
|
|
13
1
|
export declare const POSTURE_SOURCE_WORDS: readonly string[];
|
|
14
|
-
/**
|
|
15
|
-
* 「**运维显式表态过吗**」——只有 `env` / `center` 两词算数。
|
|
16
|
-
*
|
|
17
|
-
* 🔴 `posture` 派生出来的 `true` **不是**「有人要求过」:它是部署形状的推论,换一台机器就变。
|
|
18
|
-
* 把它读成表态,会让「运维明确开过这个开关」这句话在一台谁都没碰过的机器上为真。
|
|
19
|
-
* 🔴 表外词(开集逃生口)一律**不算**表态:读不懂的来源不是「有人钉过」的证据。
|
|
20
|
-
*/
|
|
21
2
|
export declare function postureSourceIsOperatorPinned(source: string): boolean;
|
|
22
|
-
/** 一根旋钮的读数视图(sdk `PostureKnobReading<V>` 的防御读形;结构逐字同源,见文件尾对账钉)。 */
|
|
23
3
|
export interface PostureKnobView<V> {
|
|
24
|
-
/** 这根旋钮此刻的生效值。 */
|
|
25
4
|
value: V;
|
|
26
|
-
/**
|
|
27
|
-
* 这个值是谁定的。**按开集读**(闭四词见 {@link POSTURE_SOURCE_WORDS})。
|
|
28
|
-
* 🔴 `legacy` 为真时这一格**不是一次观测**,只是形上的占位 —— 机读一律走
|
|
29
|
-
* {@link postureKnobSourceOf}。
|
|
30
|
-
*/
|
|
31
5
|
source: string;
|
|
32
|
-
/** 给运维的指路句(逐键专属的散文,**不是机读码**:分类读 `source`,别对它做等值匹配)。
|
|
33
|
-
* UNTRUSTED-for-display:呈前消毒 + 封长,见 {@link postureKnobDetail}。 */
|
|
34
6
|
note: string;
|
|
35
|
-
/** 这份读数是从 <7.67.0 worker 的**裸值**形折出来的(那台 worker 说不出来源)。 */
|
|
36
7
|
legacy?: true;
|
|
37
8
|
}
|
|
38
|
-
/**
|
|
39
|
-
* 这根旋钮的来源词,**答不出来就答不出来**。
|
|
40
|
-
* 🔴 legacy 行(老 worker 的裸值)⇒ `undefined`:形上的占位值不是一次观测,交出去就是编答案。
|
|
41
|
-
*/
|
|
42
9
|
export declare function postureKnobSourceOf(knob: PostureKnobView<unknown> | undefined): string | undefined;
|
|
43
|
-
/** `serverGates` 上三根 posture 旋钮的读数。 */
|
|
44
10
|
export interface ServerGateKnobsView {
|
|
45
|
-
/** 耐久审批门总开关。**本面的判别锚**:它读不出来 ⇒ 整段缺席(见 {@link projectServerGateKnobs})。 */
|
|
46
11
|
durableApproval: PostureKnobView<boolean>;
|
|
47
|
-
/** 审批窗(毫秒)。<7.67.0 整键缺席 ⇒ 这一格缺席 —— **绝不**铸 300000 的默认冒充读数。 */
|
|
48
12
|
streamAskWindowMs?: PostureKnobView<number>;
|
|
49
|
-
/** 会话自动起标题。同上,缺席即缺席。 */
|
|
50
13
|
sessionAutoTitle?: PostureKnobView<boolean>;
|
|
51
|
-
/** 这份读数整体是从老 worker 的裸值形折出来的。 */
|
|
52
14
|
legacy: boolean;
|
|
53
15
|
}
|
|
54
|
-
/** 三根旋钮的名字(给人读的);措辞铸点按它取词,端零自拼。 */
|
|
55
16
|
export type PostureKnobName = 'durableApproval' | 'streamAskWindowMs' | 'sessionAutoTitle';
|
|
56
|
-
/**
|
|
57
|
-
* `wiring.serverGates` → 三旋钮读数;**畸形一律 `undefined`**,绝不抛出。
|
|
58
|
-
*
|
|
59
|
-
* 🔴 **判别锚是 `durableApproval`**:它是这一面上唯一**两代都在**的旋钮(老 worker 上是裸布尔,
|
|
60
|
-
* 新 worker 上是读数)。它读不出来 ⇒ 整段缺席 —— 一份没有主锚的旋钮面答不了运维要问的那一问,
|
|
61
|
-
* 而半段会被当成完整答案(与 `writeProtectionPosture` 缺 `source` ⇒ 整段缺席同一条纪律)。
|
|
62
|
-
* 🔴 **旁枝坏形只丢那一根**:`streamAskWindowMs` / `sessionAutoTitle` 各自独立,一根形坏不该把
|
|
63
|
-
* 另外两根一起藏起来(旁枝与主锚的处置刻意不同,理由见上一条)。
|
|
64
|
-
* 🔴 **缺席不铸默认**:另两根整键缺席时这两格就是缺席。铸 `300000` / `true` 会把「这台 worker
|
|
65
|
-
* 说不出来」渲成「它说了这个值」——那正是本面存在要根治的病。
|
|
66
|
-
* ⚠️ 「整键缺席(老 worker)」与「在场但形坏」在旁枝上折成同一个缺席;「为什么答不出来」不是
|
|
67
|
-
* 这一位该回答的(见 {@link postureKnobDetail} 的 `reachable` 段)。
|
|
68
|
-
*/
|
|
69
17
|
export declare function projectServerGateKnobs(wiring: unknown): ServerGateKnobsView | undefined;
|
|
70
|
-
/**
|
|
71
|
-
* 四态措辞的**唯一铸点**(三端共用一句话;别在各端的行装配里另写一遍 —— 与
|
|
72
|
-
* `readFacePostureDetail` / `writeProtectionDoctorDetail` 同一条纪律)。
|
|
73
|
-
*
|
|
74
|
-
* 🔴 四句刻意**逐字互异**(黑盒锚),对运维是四条不同的下一步:
|
|
75
|
-
* ① 读数在场 —— `<旋钮> <值> (source: <来源> — <指路句>)`;
|
|
76
|
-
* ② 读数在场但来自老 worker 的裸值(`legacy`)—— 报得出**值**,但逐字点明「这台 worker 说不出
|
|
77
|
-
* 是谁定的」;**句中不出现任何来源词**(冒称来源比不说更坏:它会让人以为查过了);
|
|
78
|
-
* ③ `opts.reachable === false` —— 「未观测」:这一次进程没读到 operator 响应。
|
|
79
|
-
* 🔴 **这一格先判**(0.63.1):它压过任何在手的读数 —— 宿主拿着上一拍的 view、这一拍探测
|
|
80
|
-
* 打不通时,它能翻的只有这一位;先看读数在不在会照渲上一拍的值,等于拿陈读数冒充现势;
|
|
81
|
-
* ④ `reachable:true` 但读数仍缺席 —— 「不报」:响应读到了,只是这一位读不出来。
|
|
82
|
-
* **不武断咎为版本**:整键缺席(老引擎)与在场却形坏折成同一个缺席,句子不能替一种情形撒谎。
|
|
83
|
-
* 🔴 ③④ 两句**一个值都不报** —— 它们要是顺口说了 `off`,消费端就会把「读不出」当成「关着」。
|
|
84
|
-
*
|
|
85
|
-
* ⚠️ **数值一律按毫秒读**:本面今天唯一的数值旋钮就是那只毫秒窗(门里有一条对 sdk spec 的钉:
|
|
86
|
-
* `ServerWiringGates` 上 `type: number` 的旋钮恰一根)。上游哪天加第二根非时长数值旋钮,那条
|
|
87
|
-
* 钉先红,免得这里的措辞开始对它撒谎。
|
|
88
|
-
*/
|
|
89
18
|
export declare function postureKnobDetail(knob: PostureKnobView<boolean | number> | undefined, opts: {
|
|
90
19
|
reachable: boolean;
|
|
91
20
|
knob: PostureKnobName;
|
package/dist/postureKnob.js
CHANGED
|
@@ -1,47 +1,20 @@
|
|
|
1
1
|
import { capForDisplay } from './fleetTaskDesc.js';
|
|
2
|
-
/**
|
|
3
|
-
* 一个旋钮的值是谁定的 —— 四词闭集,**顺序即优先序**(engine 侧是穷举 switch,加词在那里编译红)。
|
|
4
|
-
* · `env` —— 这台机器的 env 变量钉的(部署主权,恒赢任何下发值);
|
|
5
|
-
* · `center` —— 配置中心发布的(重启生效;本机写同名 env 即把这个键收回);
|
|
6
|
-
* · `posture` —— 从**部署形**派生的(单用户 turnkey);
|
|
7
|
-
* · `engine-default` —— 没人钉过,内建缺省在岗。
|
|
8
|
-
* 🔴 本包按**开集**读实际值(词表属主在引擎侧,加词不该让消费端把一个合法读数判没);这张表是
|
|
9
|
-
* **优先序与判据**的真源,不是一道准入门。
|
|
10
|
-
|
|
11
|
-
* 🔴 形制:`Object.freeze` 的数组,**不是**只在类型面只读的 `readonly T[]` —— 后者一行 `.splice()`
|
|
12
|
-
* 就能改,而公面消费者拿到的正是这个实例(本仓已定谳的病形,同 `RESUME_RETRY_LATER_CODES`)。
|
|
13
|
-
*/
|
|
14
2
|
export const POSTURE_SOURCE_WORDS = Object.freeze(['env', 'center', 'posture', 'engine-default']);
|
|
15
|
-
/**
|
|
16
|
-
* 「**运维显式表态过吗**」——只有 `env` / `center` 两词算数。
|
|
17
|
-
*
|
|
18
|
-
* 🔴 `posture` 派生出来的 `true` **不是**「有人要求过」:它是部署形状的推论,换一台机器就变。
|
|
19
|
-
* 把它读成表态,会让「运维明确开过这个开关」这句话在一台谁都没碰过的机器上为真。
|
|
20
|
-
* 🔴 表外词(开集逃生口)一律**不算**表态:读不懂的来源不是「有人钉过」的证据。
|
|
21
|
-
*/
|
|
22
3
|
export function postureSourceIsOperatorPinned(source) {
|
|
23
4
|
return source === 'env' || source === 'center';
|
|
24
5
|
}
|
|
25
|
-
/**
|
|
26
|
-
* 这根旋钮的来源词,**答不出来就答不出来**。
|
|
27
|
-
* 🔴 legacy 行(老 worker 的裸值)⇒ `undefined`:形上的占位值不是一次观测,交出去就是编答案。
|
|
28
|
-
*/
|
|
29
6
|
export function postureKnobSourceOf(knob) {
|
|
30
7
|
if (knob === undefined || knob.legacy === true)
|
|
31
8
|
return undefined;
|
|
32
9
|
return knob.source;
|
|
33
10
|
}
|
|
34
|
-
/** 旋钮 → 人话名。**唯一铸点**(三端共用一套词;别在各端的行装配里另起一份)。 */
|
|
35
11
|
const KNOB_LABELS = Object.freeze({
|
|
36
12
|
durableApproval: 'durable approval',
|
|
37
13
|
streamAskWindowMs: 'approval window',
|
|
38
14
|
sessionAutoTitle: 'session auto-title',
|
|
39
15
|
});
|
|
40
|
-
/** `note` 上屏封长(UTF-16 单元,按**转义后**的长度算;与 readFace 那一格同值同理由)。 */
|
|
41
16
|
const KNOB_NOTE_MAX = 256;
|
|
42
|
-
/** `source` 上屏封长(同上)。 */
|
|
43
17
|
const KNOB_WORD_MAX = 40;
|
|
44
|
-
/** 一只 `{value, source, note}` 读数的公共窄读(值判据由调用方给)。坏形 ⇒ `undefined`。 */
|
|
45
18
|
function readKnob(raw, valueOk) {
|
|
46
19
|
if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
|
|
47
20
|
return undefined;
|
|
@@ -50,27 +23,12 @@ function readKnob(raw, valueOk) {
|
|
|
50
23
|
return undefined;
|
|
51
24
|
if (typeof r.source !== 'string' || r.source.length === 0)
|
|
52
25
|
return undefined;
|
|
53
|
-
// `note` 允许空串(自由文本;空文本本身也是一句读数,不是「读不出」)。
|
|
54
26
|
if (typeof r.note !== 'string')
|
|
55
27
|
return undefined;
|
|
56
28
|
return { value: r.value, source: r.source, note: r.note };
|
|
57
29
|
}
|
|
58
30
|
const isBool = (v) => typeof v === 'boolean';
|
|
59
|
-
/** 窗值:有限**非负**数(负窗在引擎侧是拒启门,一个负数读数是坏形不是事实)。 */
|
|
60
31
|
const isWindowMs = (v) => typeof v === 'number' && Number.isFinite(v) && v >= 0;
|
|
61
|
-
/**
|
|
62
|
-
* `wiring.serverGates` → 三旋钮读数;**畸形一律 `undefined`**,绝不抛出。
|
|
63
|
-
*
|
|
64
|
-
* 🔴 **判别锚是 `durableApproval`**:它是这一面上唯一**两代都在**的旋钮(老 worker 上是裸布尔,
|
|
65
|
-
* 新 worker 上是读数)。它读不出来 ⇒ 整段缺席 —— 一份没有主锚的旋钮面答不了运维要问的那一问,
|
|
66
|
-
* 而半段会被当成完整答案(与 `writeProtectionPosture` 缺 `source` ⇒ 整段缺席同一条纪律)。
|
|
67
|
-
* 🔴 **旁枝坏形只丢那一根**:`streamAskWindowMs` / `sessionAutoTitle` 各自独立,一根形坏不该把
|
|
68
|
-
* 另外两根一起藏起来(旁枝与主锚的处置刻意不同,理由见上一条)。
|
|
69
|
-
* 🔴 **缺席不铸默认**:另两根整键缺席时这两格就是缺席。铸 `300000` / `true` 会把「这台 worker
|
|
70
|
-
* 说不出来」渲成「它说了这个值」——那正是本面存在要根治的病。
|
|
71
|
-
* ⚠️ 「整键缺席(老 worker)」与「在场但形坏」在旁枝上折成同一个缺席;「为什么答不出来」不是
|
|
72
|
-
* 这一位该回答的(见 {@link postureKnobDetail} 的 `reachable` 段)。
|
|
73
|
-
*/
|
|
74
32
|
export function projectServerGateKnobs(wiring) {
|
|
75
33
|
if (typeof wiring !== 'object' || wiring === null || Array.isArray(wiring))
|
|
76
34
|
return undefined;
|
|
@@ -82,8 +40,6 @@ export function projectServerGateKnobs(wiring) {
|
|
|
82
40
|
let durableApproval;
|
|
83
41
|
let legacy = false;
|
|
84
42
|
if (typeof raw === 'boolean') {
|
|
85
|
-
// 老 worker(<7.67.0)的裸布尔:折进同一只壳,但立 legacy 位。`source` 是形上的占位,
|
|
86
|
-
// **不是**一次观测 —— 机读走 `postureKnobSourceOf`(它对 legacy 行答 undefined)。
|
|
87
43
|
durableApproval = { value: raw, source: 'engine-default', note: '', legacy: true };
|
|
88
44
|
legacy = true;
|
|
89
45
|
}
|
|
@@ -101,14 +57,7 @@ export function projectServerGateKnobs(wiring) {
|
|
|
101
57
|
legacy,
|
|
102
58
|
};
|
|
103
59
|
}
|
|
104
|
-
/**
|
|
105
|
-
* 毫秒 → 人话。
|
|
106
|
-
* 🔴 **只在整除时才升单位**:`90m` 比 `1.5h` 更不容易被读错,而 `5400000ms` 谁也读不出是一个半
|
|
107
|
-
* 小时。除不尽 ⇒ 原样报毫秒(诚实优于好看)。
|
|
108
|
-
*/
|
|
109
60
|
function humanMs(ms) {
|
|
110
|
-
// 天不单列:`24h` 比 `1d` 更贴近运维钉回时写的那个数(`STREAM_ASK_WINDOW_MS`),小时这一档
|
|
111
|
-
// 已经把它读成人话了。
|
|
112
61
|
if (ms > 0 && ms % 3600000 === 0)
|
|
113
62
|
return `${ms / 3600000}h`;
|
|
114
63
|
if (ms > 0 && ms % 60000 === 0)
|
|
@@ -117,41 +66,13 @@ function humanMs(ms) {
|
|
|
117
66
|
return `${ms / 1000}s`;
|
|
118
67
|
return `${ms}ms`;
|
|
119
68
|
}
|
|
120
|
-
/** 值 → 上屏词。布尔渲 `on`/`off`(`true`/`false` 是给机器读的);数值按毫秒渲人话。 */
|
|
121
69
|
function knobValueWord(value) {
|
|
122
70
|
if (typeof value === 'boolean')
|
|
123
71
|
return value ? 'on' : 'off';
|
|
124
72
|
return humanMs(value);
|
|
125
73
|
}
|
|
126
|
-
/**
|
|
127
|
-
* 四态措辞的**唯一铸点**(三端共用一句话;别在各端的行装配里另写一遍 —— 与
|
|
128
|
-
* `readFacePostureDetail` / `writeProtectionDoctorDetail` 同一条纪律)。
|
|
129
|
-
*
|
|
130
|
-
* 🔴 四句刻意**逐字互异**(黑盒锚),对运维是四条不同的下一步:
|
|
131
|
-
* ① 读数在场 —— `<旋钮> <值> (source: <来源> — <指路句>)`;
|
|
132
|
-
* ② 读数在场但来自老 worker 的裸值(`legacy`)—— 报得出**值**,但逐字点明「这台 worker 说不出
|
|
133
|
-
* 是谁定的」;**句中不出现任何来源词**(冒称来源比不说更坏:它会让人以为查过了);
|
|
134
|
-
* ③ `opts.reachable === false` —— 「未观测」:这一次进程没读到 operator 响应。
|
|
135
|
-
* 🔴 **这一格先判**(0.63.1):它压过任何在手的读数 —— 宿主拿着上一拍的 view、这一拍探测
|
|
136
|
-
* 打不通时,它能翻的只有这一位;先看读数在不在会照渲上一拍的值,等于拿陈读数冒充现势;
|
|
137
|
-
* ④ `reachable:true` 但读数仍缺席 —— 「不报」:响应读到了,只是这一位读不出来。
|
|
138
|
-
* **不武断咎为版本**:整键缺席(老引擎)与在场却形坏折成同一个缺席,句子不能替一种情形撒谎。
|
|
139
|
-
* 🔴 ③④ 两句**一个值都不报** —— 它们要是顺口说了 `off`,消费端就会把「读不出」当成「关着」。
|
|
140
|
-
*
|
|
141
|
-
* ⚠️ **数值一律按毫秒读**:本面今天唯一的数值旋钮就是那只毫秒窗(门里有一条对 sdk spec 的钉:
|
|
142
|
-
* `ServerWiringGates` 上 `type: number` 的旋钮恰一根)。上游哪天加第二根非时长数值旋钮,那条
|
|
143
|
-
* 钉先红,免得这里的措辞开始对它撒谎。
|
|
144
|
-
*/
|
|
145
74
|
export function postureKnobDetail(knob, opts) {
|
|
146
|
-
// 🔴 **按自有属性查表**(同形族扫):键在型面上是闭三词,但本口吃的是运行期值 —— 一个 JS 调用方
|
|
147
|
-
// 塞进 `toString`,裸下标会命中 `Object.prototype` 上的函数并被拼进句子。读不出名字时退到
|
|
148
|
-
// 一个中性词:**名字读不出不该让「这根旋钮的值是什么」也一起说不出来**。
|
|
149
75
|
const label = Object.hasOwn(KNOB_LABELS, opts.knob) ? KNOB_LABELS[opts.knob] : 'posture knob';
|
|
150
|
-
// 🔴 **判序承重**(0.63.1,G-3):`!reachable` **先判**,压过任何在手的读数。调用惯例上宿主手里
|
|
151
|
-
// 就只有上一拍那一只 view —— 探测这一拍打不通时它能翻的只有 `reachable`,别的没得换。先看
|
|
152
|
-
// `knob !== undefined` 的旧序会照渲**上一拍的读数**,屏上一个字都看不出这一次根本没读到,
|
|
153
|
-
// 等于把陈读数冒充现势。打不通时旧读数不是现势:值与来源词一个都不许漏出去。
|
|
154
|
-
// ⇒ 求值序是 ③ → ①/② → ④(与上方四句的编号次序无关,编号只是四种情形的清单)。
|
|
155
76
|
if (!opts.reachable) {
|
|
156
77
|
return `${label} not observed (this end could not read the engine's diagnostics)`;
|
|
157
78
|
}
|
|
@@ -168,13 +89,6 @@ export function postureKnobDetail(knob, opts) {
|
|
|
168
89
|
}
|
|
169
90
|
return `${label} not reported by this engine (an engine below 7.67.0, or a response this end could not parse)`;
|
|
170
91
|
}
|
|
171
|
-
/**
|
|
172
|
-
* **编译期对账钉**(不出公面):sdk 的读数形必须能赋给本视图,`ServerWiringGates` 的三根旋钮
|
|
173
|
-
* 必须真是读数形 —— 上游改形时这一行是本包第一个红的地方。
|
|
174
|
-
*
|
|
175
|
-
* 🔴 反向**刻意不钉**(本视图不必能赋给 sdk 形):`source` 在本视图上放宽成任意 `string`(开集读),
|
|
176
|
-
* 那是**故意比铸点宽** —— 窄读域只许等于或宽于铸点域,钉反向会把这条纪律反过来判成错。
|
|
177
|
-
*/
|
|
178
92
|
const _postureKnobShapePin = (w) => w;
|
|
179
93
|
void _postureKnobShapePin;
|
|
180
94
|
const _serverGateKnobsShapePin = (g) => g;
|
package/dist/principalWire.d.ts
CHANGED
|
@@ -1,18 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* principalWire.ts — principal 在场性判定的**唯一原语**(A-028.10,#244 族E,2026-08-15)。
|
|
3
|
-
*
|
|
4
|
-
* 裁定背景(cli 主会话裁,census top-07 §2):壳 `livePrincipal.ts` 与本包
|
|
5
|
-
* `engineWireTarget.engineWireTargetFor()` 各持一条 principal 解析,且**语义相反**:壳判
|
|
6
|
-
* `v && v.trim() !== ''`(全空白=缺席),包侧裸 truthy(全空白=在场)⇒ `SEMA_LIVE_PRINCIPAL=' '`
|
|
7
|
-
* 会发出一个全空白的 `x-agent-principal` 头 —— 垃圾值伪装在场,破坏 F-011 停发纪律
|
|
8
|
-
* ([3279]:缺席=不发头,owner-null;绝不铸哨兵值)。裁定=壳 trim 语义为正,包侧两臂
|
|
9
|
-
* (env 派生臂 + 显式装配臂)都收编本原语。
|
|
10
|
-
*
|
|
11
|
-
* 🔴 语义逐字(壳 `resolveLivePrincipal` 的判定半场):
|
|
12
|
-
* · undefined / '' / 全空白 ⇒ undefined(键缺席,不发头);
|
|
13
|
-
* · 其余 ⇒ **原值原样返回**(不 trim 改写 —— ` alice ` 照发 ` alice `,在场性判定与值改写
|
|
14
|
-
* 是两件事,本原语只做前者)。
|
|
15
|
-
* env 的读取方式留在端上(壳读 `process.env`,包内经 `hostEnv()`)——本原语零 IO 零 env。
|
|
16
|
-
*/
|
|
17
|
-
/** principal 在场性判定:全空白=缺席(undefined);实值原样返回(绝不改写)。 */
|
|
18
1
|
export declare function normalizeWirePrincipal(v: string | undefined): string | undefined;
|
package/dist/principalWire.js
CHANGED
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* principalWire.ts — principal 在场性判定的**唯一原语**(A-028.10,#244 族E,2026-08-15)。
|
|
3
|
-
*
|
|
4
|
-
* 裁定背景(cli 主会话裁,census top-07 §2):壳 `livePrincipal.ts` 与本包
|
|
5
|
-
* `engineWireTarget.engineWireTargetFor()` 各持一条 principal 解析,且**语义相反**:壳判
|
|
6
|
-
* `v && v.trim() !== ''`(全空白=缺席),包侧裸 truthy(全空白=在场)⇒ `SEMA_LIVE_PRINCIPAL=' '`
|
|
7
|
-
* 会发出一个全空白的 `x-agent-principal` 头 —— 垃圾值伪装在场,破坏 F-011 停发纪律
|
|
8
|
-
* ([3279]:缺席=不发头,owner-null;绝不铸哨兵值)。裁定=壳 trim 语义为正,包侧两臂
|
|
9
|
-
* (env 派生臂 + 显式装配臂)都收编本原语。
|
|
10
|
-
*
|
|
11
|
-
* 🔴 语义逐字(壳 `resolveLivePrincipal` 的判定半场):
|
|
12
|
-
* · undefined / '' / 全空白 ⇒ undefined(键缺席,不发头);
|
|
13
|
-
* · 其余 ⇒ **原值原样返回**(不 trim 改写 —— ` alice ` 照发 ` alice `,在场性判定与值改写
|
|
14
|
-
* 是两件事,本原语只做前者)。
|
|
15
|
-
* env 的读取方式留在端上(壳读 `process.env`,包内经 `hostEnv()`)——本原语零 IO 零 env。
|
|
16
|
-
*/
|
|
17
|
-
/** principal 在场性判定:全空白=缺席(undefined);实值原样返回(绝不改写)。 */
|
|
18
1
|
export function normalizeWirePrincipal(v) {
|
|
19
2
|
return v !== undefined && v.trim() !== '' ? v : undefined;
|
|
20
3
|
}
|