@sema-agent/client-core 0.77.0 → 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 +23 -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 +1 -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 +10 -496
- 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 +11 -65
- package/dist/subagent/engineTaskHandleWire.js +20 -131
- 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 +62 -1
- package/package.json +1 -1
|
@@ -1,45 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* sessionPolicyCapability — `GET /v1/capabilities.sessionPolicy` 的三端共用四态读面(0.77.0 CC-105;
|
|
3
|
-
* 与 sql / writeProtection / webSearch.backend / executionLane / approvalsStreamLive /
|
|
4
|
-
* deviceExecutor.management / peerLane / permissionRulesWrite / memoryCompliance / memoryOrigin
|
|
5
|
-
* 各只兄弟同一套四态词汇,四口走共用工厂)。引擎的 wire 型面里这一位已声明为可选布尔,读法仍按结构走
|
|
6
|
-
* (声明形与在场性是两件事:声明说「型上可以有」,回体才说「这台有没有」)。
|
|
7
|
-
*
|
|
8
|
-
* ── 这一位答的是哪一个问题 ────────────────────────────────────────────────────────────────
|
|
9
|
-
* 「per-session 工具规则的那一对读写口(`GET` / `PUT /v1/sessions/:id/policy`)在**这台引擎**上挂没挂」。
|
|
10
|
-
* 上游的铸点是一次**设施在场判**(会话规则店接线了没),不是一次身份判:
|
|
11
|
-
* · 值为真 ⇒ 规则店在场,这对口有人应答(某一次调用成不成功仍由那一次的应答逐次回答:
|
|
12
|
-
* 无主会话 409、非属主 404、放宽方向 403、CAS 不符 409 —— 这一位一个都不预告);
|
|
13
|
-
* · 值为假 ⇒ 本部署**没有**会话规则店,这对口恒以「这台没有这一面」拒,写入口该藏起来。
|
|
14
|
-
*
|
|
15
|
-
* ── 🔴 四态,不是两态 ───────────────────────────────────────────────────────────────────────
|
|
16
|
-
* ① `unobserved` —— 本进程一次能力回体都没观测到。**不是**引擎说过的话。
|
|
17
|
-
* ② `not_reported` —— 回体观测到了,而**没有**这个键 ⇒ 这份二进制比这一位本身还老。
|
|
18
|
-
* ③ `absent` —— 键在、值明确是 `false`:这台没有会话规则店。**正面事实**,与 ② 是两件事。
|
|
19
|
-
* ④ `present` —— 键在、值为 `true`:这一面在这台引擎上挂着。
|
|
20
|
-
* 值既不是 `true` 也不是 `false`(`null` / 串 / 数 / 数组 / 对象)⇒ 畸形 ⇒ **删格**(⇒ `unobserved`);
|
|
21
|
-
* 能力回体整只不是对象同判畸形。🔴 三种「没有」(`unobserved` / `not_reported` / `absent`)**不许互折**。
|
|
22
|
-
* 判在场用 `hasOwn`:原型链上继承来的同名键不算这台引擎说过话。
|
|
23
|
-
*
|
|
24
|
-
* ── 🔴 「藏入口」与「别发请求」是两个问题,判官也是两个 ─────────────────────────────────────
|
|
25
|
-
* 本文件只铸前者:{@link sessionPolicyFaceAvailable} 回答「要不要渲这个写入口」,
|
|
26
|
-
* 保守方向 —— 只有明说在场才 `'yes'`,明说不在与「比这一位还老的二进制」都 `'no'`,从没观测过才 `'unknown'`。
|
|
27
|
-
* 后者(「这次编排该不该把请求发出去」)在会话策略写端口那一侧,它拿的是**同一只读数**、不另开一张表,
|
|
28
|
-
* 判据与本函数刻意分开写:一个决定界面长什么样,一个决定要不要动网络,两者对 `unobserved` 的答案
|
|
29
|
-
* 本来就该不同(界面保守地不渲,而一次用户已经点过的动作不该因为「本进程没探过能力面」被凭空挡住)。
|
|
30
|
-
*/
|
|
31
1
|
import { engineWireTarget } from './engineWireTarget.js';
|
|
32
2
|
import { createEngineCapReader } from './engineCapReader.js';
|
|
33
|
-
/** 能力回体 → 本格读数;畸形一律 `undefined`(= 这一格不写 ⇒ 读口答 `unobserved`)。 */
|
|
34
3
|
export function projectSessionPolicyCapability(caps) {
|
|
35
|
-
// 🔴 数组也是畸形:一个数组回体**不是**引擎对能力面的回答,从它上面读出「这份二进制比这一位老」
|
|
36
|
-
// 是替引擎编了一句它没说的话。`not_reported` 只留给**真的是能力对象、但这一格不在**那一形。
|
|
37
4
|
if (caps === null || typeof caps !== 'object' || Array.isArray(caps))
|
|
38
5
|
return undefined;
|
|
39
6
|
const c = caps;
|
|
40
7
|
if (!Object.hasOwn(c, 'sessionPolicy'))
|
|
41
8
|
return { kind: 'not_reported' };
|
|
42
|
-
// 🔴 只读一次:在场判据与取值同一次读(变化的 getter 会让校验读到布尔、返回读到别的东西)。
|
|
43
9
|
const v = c.sessionPolicy;
|
|
44
10
|
if (v === undefined)
|
|
45
11
|
return { kind: 'not_reported' };
|
|
@@ -47,32 +13,17 @@ export function projectSessionPolicyCapability(caps) {
|
|
|
47
13
|
return undefined;
|
|
48
14
|
return v ? { kind: 'present' } : { kind: 'absent' };
|
|
49
15
|
}
|
|
50
|
-
/**
|
|
51
|
-
* 本格的 per-baseUrl 读账 + tee / 读口 / 失效口 / 测试钩四口 —— 各只能力位读器**共用同一份实现**
|
|
52
|
-
* ({@link createEngineCapReader});本文件只留这一格真正不同的部分:投影函数
|
|
53
|
-
* {@link projectSessionPolicyCapability}、判据单源与 doctor 措辞表。
|
|
54
|
-
* 🔴 Map 在工厂闭包里,**一只读器一张**:收到读不懂的回体只删自己这一格,绝不连坐别的能力面。
|
|
55
|
-
*/
|
|
56
16
|
const reader = createEngineCapReader({
|
|
57
17
|
name: 'sessionPolicy',
|
|
58
18
|
project: projectSessionPolicyCapability,
|
|
59
19
|
makeUnobserved: () => ({ kind: 'unobserved' }),
|
|
60
20
|
});
|
|
61
|
-
/** 宿主 caps probe 的读面 tee 落点。绝不 throw;畸形 ⇒ 删格;`opts.generation` 关掉旧探测覆盖新读数的竞态。 */
|
|
62
21
|
export function noteEngineCapsForSessionPolicy(baseUrl, caps, opts) {
|
|
63
22
|
reader.note(baseUrl, caps, opts);
|
|
64
23
|
}
|
|
65
|
-
/** 本进程观测到的读数;这一格空缺 ⇒ `{kind:'unobserved'}`。 */
|
|
66
24
|
export function observedSessionPolicy(baseUrl = engineWireTarget()?.baseUrl) {
|
|
67
25
|
return reader.observed(baseUrl);
|
|
68
26
|
}
|
|
69
|
-
/**
|
|
70
|
-
* 「要不要渲会话规则的写入口」的判据单源(三态)。
|
|
71
|
-
* 🔴 只有引擎明说在场(`present`)才 `'yes'`;明说不在(`absent`)与「这份二进制比这一位老」
|
|
72
|
-
* (`not_reported`)都是 `'no'` —— 后者不是在说这一面不存在,是在说**这台说不出**,而一个说不出
|
|
73
|
-
* 的写入口按假 affordance 纪律不渲(真要试,走读口,读是无副作用的那一半)。从没观测过 ⇒ `'unknown'`,
|
|
74
|
-
* 端自己决定渲不渲(它既不是引擎的否定,也不是引擎的肯定)。
|
|
75
|
-
*/
|
|
76
27
|
export function sessionPolicyFaceAvailable(reading) {
|
|
77
28
|
if (reading.kind === 'present')
|
|
78
29
|
return 'yes';
|
|
@@ -80,7 +31,6 @@ export function sessionPolicyFaceAvailable(reading) {
|
|
|
80
31
|
return 'no';
|
|
81
32
|
return 'unknown';
|
|
82
33
|
}
|
|
83
|
-
/** doctor 那一行的 detail 串,唯一措辞真源。🔴 两种「读不出」都不许暗示「这一面在」或「这一面不在」。 */
|
|
84
34
|
export function sessionPolicyDoctorDetail(reading) {
|
|
85
35
|
switch (reading.kind) {
|
|
86
36
|
case 'unobserved':
|
|
@@ -93,11 +43,9 @@ export function sessionPolicyDoctorDetail(reading) {
|
|
|
93
43
|
return 'per-session rule face on — this session’s tool rules can be read, and a tightening write is accepted or refused by the engine call by call';
|
|
94
44
|
}
|
|
95
45
|
}
|
|
96
|
-
/** 换代失效口(引擎温切成功后调):清成未观测。空串 ⇒ no-op;绝不 throw。 */
|
|
97
46
|
export function forgetSessionPolicyReading(baseUrl) {
|
|
98
47
|
reader.forget(baseUrl);
|
|
99
48
|
}
|
|
100
|
-
/** 测试钩子。 */
|
|
101
49
|
export function __resetSessionPolicyReadingsForTests() {
|
|
102
50
|
reader.__resetForTests();
|
|
103
51
|
}
|
package/dist/sessionSlot.d.ts
CHANGED
|
@@ -1,34 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* sessionSlot.ts — W1(design/161):包内「模块级可变单槽位」的 per-session 注册表最小工厂。
|
|
3
|
-
*
|
|
4
|
-
* 背景(design/161 复审 r1 E2):包内五个模块级单槽位(host.ts `host` / askGateWire
|
|
5
|
-
* `hostSurface` / toolApprovalWire `cardPort` / liveQuestionStore `frameHandler` /
|
|
6
|
-
* engineWireTarget `installed`)与多会话宿主(desktop)正面冲突 —— 两个并行会话互相顶盖
|
|
7
|
-
* (A 会话的审批卡弹到 B 的面上 / B 的 responder 覆盖 A 的)。W1 把这五个槽位改成
|
|
8
|
-
* `Map<sessionKey, T>` 注册表:
|
|
9
|
-
* · **零参旧 API = DEFAULT_SESSION_KEY 兼容层**(cli 的 module-load 装配一行不动,
|
|
10
|
-
* default 键路径与改前单变量行为逐字节等价);
|
|
11
|
-
* · 带 key 的 `*For(sessionKey, …)` 变体给多会话宿主用,每会话一键,互不顶盖。
|
|
12
|
-
* 契约锚 = `agentSession/contract.ts` 的 `AgentSessionConfig.sessionKey`。
|
|
13
|
-
*
|
|
14
|
-
* 🔴 本文件只管「存取」,不带任何业务语义 —— miss 计数、fail-soft 文言、还原/合并语义都留在
|
|
15
|
-
* 各槽位模块里(五个槽位形状略异,强行归一就是过度设计)。
|
|
16
|
-
*/
|
|
17
|
-
/** 零参旧 API 的兼容键(cli 单会话装配走它;多会话宿主每会话一键,别用这个值当会话 id)。 */
|
|
18
1
|
export declare const DEFAULT_SESSION_KEY = "__default__";
|
|
19
|
-
/** per-session 槽位存取面。`get` 未装过 = undefined(各槽位模块自己 `?? null` 归一)。 */
|
|
20
2
|
export interface SessionSlot<T> {
|
|
21
3
|
get(key: string): T | undefined;
|
|
22
|
-
/** `undefined` = 卸下该键(与「从未装过」同态 —— 槽位模块的 prev-还原语义靠它闭合)。 */
|
|
23
4
|
set(key: string, value: T | undefined): void;
|
|
24
5
|
clear(): void;
|
|
25
|
-
/** 当前**有条目**的键 —— 注意不等于「装了口的键」:`T` 含 `null`(卡口槽位就是
|
|
26
|
-
* `ApprovalCardPort | null`)时,用 `null` 卸下的键仍留在这里(只有 `undefined` 删键)。
|
|
27
|
-
* 消费方判「装了没」必须再读一次 `get(k)`,别只数键。
|
|
28
|
-
* (REF-CC-030,2026-08-02:三个 keyed 卡口决断入口今天全硬读
|
|
29
|
-
* DEFAULT_SESSION_KEY——一个非默认键上真装了口时,默认键仍会 miss;这个读口让
|
|
30
|
-
* miss 文案能把「没人装」与「装错键」分开说,而不用先把三个入口的签名都改成
|
|
31
|
-
* `sessionKey?: string` 透传)。 */
|
|
32
6
|
keys(): string[];
|
|
33
7
|
}
|
|
34
8
|
export declare function createSessionSlot<T>(): SessionSlot<T>;
|
package/dist/sessionSlot.js
CHANGED
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* sessionSlot.ts — W1(design/161):包内「模块级可变单槽位」的 per-session 注册表最小工厂。
|
|
3
|
-
*
|
|
4
|
-
* 背景(design/161 复审 r1 E2):包内五个模块级单槽位(host.ts `host` / askGateWire
|
|
5
|
-
* `hostSurface` / toolApprovalWire `cardPort` / liveQuestionStore `frameHandler` /
|
|
6
|
-
* engineWireTarget `installed`)与多会话宿主(desktop)正面冲突 —— 两个并行会话互相顶盖
|
|
7
|
-
* (A 会话的审批卡弹到 B 的面上 / B 的 responder 覆盖 A 的)。W1 把这五个槽位改成
|
|
8
|
-
* `Map<sessionKey, T>` 注册表:
|
|
9
|
-
* · **零参旧 API = DEFAULT_SESSION_KEY 兼容层**(cli 的 module-load 装配一行不动,
|
|
10
|
-
* default 键路径与改前单变量行为逐字节等价);
|
|
11
|
-
* · 带 key 的 `*For(sessionKey, …)` 变体给多会话宿主用,每会话一键,互不顶盖。
|
|
12
|
-
* 契约锚 = `agentSession/contract.ts` 的 `AgentSessionConfig.sessionKey`。
|
|
13
|
-
*
|
|
14
|
-
* 🔴 本文件只管「存取」,不带任何业务语义 —— miss 计数、fail-soft 文言、还原/合并语义都留在
|
|
15
|
-
* 各槽位模块里(五个槽位形状略异,强行归一就是过度设计)。
|
|
16
|
-
*/
|
|
17
|
-
/** 零参旧 API 的兼容键(cli 单会话装配走它;多会话宿主每会话一键,别用这个值当会话 id)。 */
|
|
18
1
|
export const DEFAULT_SESSION_KEY = '__default__';
|
|
19
2
|
export function createSessionSlot() {
|
|
20
3
|
const values = new Map();
|
package/dist/skillsWireCaps.d.ts
CHANGED
|
@@ -1,110 +1,23 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/skillsWireCaps.ts 逐字搬入(只 import SDK)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* src/sema/skillsWireCaps.ts — the PURE projection + server caps for the skills engine wire.
|
|
6
|
-
*
|
|
7
|
-
* Split out from skillsWire.ts so this logic (the part worth pinning) is testable WITHOUT the heavy on-disk
|
|
8
|
-
* loader graph (loadSkillsDir / loadPluginCommands pull analytics/signals/fs). It imports ONLY the `SkillSpec`
|
|
9
|
-
* type (erased at build), so a test can esbuild-bundle THIS file alone — no runtime side effects.
|
|
10
|
-
*
|
|
11
|
-
* 0.70.0(CC-04,server 7.78.1 + core 7.19.0):the ONLY remaining cap is `content` ≤1MB (the engine's skill load
|
|
12
|
-
* door — over it is rejected outright, so we truncate HERE to keep that field well-formed by construction).
|
|
13
|
-
* The item-count cap (10), the name-length cap (64) and the description-length cap (1024) are RETIRED: server
|
|
14
|
-
* 7.78.1 `validateUserSkills` no longer rejects on any of them, and the engine's `<skills>` listing (core 7.19.0)
|
|
15
|
-
* fits descriptions to a byte budget itself and ANNOUNCES it (`skills.listing_truncated`, see
|
|
16
|
-
* `readSkillsListingTruncated`). Pre-truncating below a door that no longer exists would be a silent cut nobody
|
|
17
|
-
* could see — the exact disease the `content` cap once had at 32768.
|
|
18
|
-
*
|
|
19
|
-
* 🔴 措辞收窄(2026-08-08 对抗复审命中):原文写「make the live request well-formed by construction」——
|
|
20
|
-
* 那是**过头的承诺**,本模块只管每个字段的**逐字段**帽,管不到整请求。server 那边 10 项 × 1MB 与
|
|
21
|
-
* 它自己 8MB 的 `MAX_BODY` 是两个互不知情的帽,所以极端技能集仍可能整请求 400/413。本层不加
|
|
22
|
-
* 「按剩余预算偷偷多截一点」的聚合补偿:那恰好把一个响亮的 400 换回一次静默截断(= 本次修掉的病)。
|
|
23
|
-
* 该治的是 server 两帽的一致性;此处只把承诺说准。
|
|
24
|
-
*/
|
|
25
1
|
import type { SkillSpec } from '@sema-agent/sdk';
|
|
26
|
-
/**
|
|
27
|
-
* Caps for `TaskRequest.skills` — 0.70.0 起只剩 `content`(违反 = 400 / 引擎整拒)。
|
|
28
|
-
*
|
|
29
|
-
* 🔴 **0.70.0 退役三键 `items` / `name` / `description`**(CC-04;C-R41 / C-R43 ①):server 7.78.1 的
|
|
30
|
-
* `validateUserSkills` 直读 dist 已无条数帽、无 name / description 长度帽(7.78.0 及以前仍有);引擎侧
|
|
31
|
-
* (core 7.19.0)`<skills>` 清单按字节预算自己裁描述 / 退成 name-only,并发 `skills.listing_truncated`
|
|
32
|
-
* 通告。本包再按 10 / 64 / 1024 预截 = 在一道已不存在的门下面静默切字节,链上没有任何一层会响。
|
|
33
|
-
* 读这三键的消费端(cli `skillsWireOverflow`)与本版同窗退役。
|
|
34
|
-
*
|
|
35
|
-
* 🔴 对照坐标(取证方式 = 直读 shipped 产物,不信任何注释):
|
|
36
|
-
* · `content` —— server `MAX_SKILL_CONTENT_CHARS = 1_048_576`(`dist/http/server.js`),它自己的
|
|
37
|
-
* 头注点名这是 core `SKILL_CONTENT_MAX_CHARS` 的同值孪生(core `dist/core/runner/synthetic-tools.js`
|
|
38
|
-
* 的 `SKILL_CONTENT_MAX_CHARS = 1024 * 1024`);core 1.293 起技能正文**零截断、超 1MB 整拒**。
|
|
39
|
-
*
|
|
40
|
-
* 🔴 此前这一键钉 `32768` —— 那不是「上游改小了」,而是**一开始就抄错**:32768 是 server 的
|
|
41
|
-
* `MAX_OUTPUT_SCHEMA_CHARS`(另一个量)。错值的后果不是 400、是**静默截到 1/32**:`toCappedSpec`
|
|
42
|
-
* 在发请求前就把技能正文切掉,模型看见的 SKILL.md 少一大截,而链上任何一层都不会响一声。
|
|
43
|
-
*
|
|
44
|
-
* 反漂移腿:`scripts/run-engine-vocab-floor-test.mjs` 的 G2-a 段拿本键对**实装 @sema-agent/core**
|
|
45
|
-
* 的 `SKILL_CONTENT_MAX_CHARS` 逐值对账(devDep 钉在本仓,不靠兄弟树物料)——上游改门,那边先红。
|
|
46
|
-
*
|
|
47
|
-
* ⚠️ 留给上游的一处**上游内部张力**(如实记录,本层不代偿):技能条数已无帽,N 条 × 1MB 对上 server
|
|
48
|
-
* 自己的整体 body 帽 8MB(`MAX_BODY`)—— 极端组合会整请求 400/413。这是 server 的事,壳侧不做「按剩余
|
|
49
|
-
* 预算偷偷多截一点」的补偿:那正好会把一个**响亮的 400** 换回一次**静默截断**。
|
|
50
|
-
*/
|
|
51
2
|
export declare const SKILL_CAPS: {
|
|
52
3
|
readonly content: 1048576;
|
|
53
4
|
};
|
|
54
|
-
/** The minimal shape of a loaded skill `Command` this projection reads (a structural subset of CC's Command,
|
|
55
|
-
* cast at the call site so we stay decoupled from the wide Command union). */
|
|
56
5
|
export interface SkillCmdLike {
|
|
57
6
|
type?: string;
|
|
58
7
|
name?: string;
|
|
59
8
|
description?: string;
|
|
60
9
|
whenToUse?: string;
|
|
61
|
-
/** loader origin ('builtin' | 'plugin' | SettingSource…) — read by the skillOverrides four-state
|
|
62
|
-
* resolution when the wire prunes hidden skills (skillsWire.ts). */
|
|
63
10
|
source?: string;
|
|
64
11
|
disableModelInvocation?: boolean;
|
|
65
|
-
/** the skill's own directory (`createSkillCommand` baseDir → command.skillRoot); SKILL.md lives at root/SKILL.md. */
|
|
66
12
|
skillRoot?: string;
|
|
67
13
|
}
|
|
68
|
-
/** Build one `SkillSpec`, or null when there is no usable name/body. description folds in `whenToUse`
|
|
69
|
-
* (CC's progressive-disclosure metadata is name+description+whenToUse) so the engine's Skill tool can select
|
|
70
|
-
* it. 0.70.0: only `content` is capped (engine load door); name / description go through untouched — the
|
|
71
|
-
* engine's listing budget fits the description and announces when it had to (`skills.listing_truncated`). */
|
|
72
14
|
export declare function toCappedSpec(name: string, description: string, whenToUse: string, body: string): SkillSpec | null;
|
|
73
|
-
/**
|
|
74
|
-
* PURE projection: loaded skill commands → `SkillSpec[]` (content-capped, deduped by name; 0.70.0: NO item cap —
|
|
75
|
-
* every eligible skill goes on the wire, the engine budgets the listing). `resolveBody`
|
|
76
|
-
* supplies each command's raw SKILL.md body (null ⇒ skip); injecting it keeps this function IO-free and
|
|
77
|
-
* unit-testable. Only MODEL-INVOCABLE prompt skills are sent — UI-only / `disableModelInvocation` commands
|
|
78
|
-
* are excluded (engine injection feeds the model's Skill tool, not the slash menu).
|
|
79
|
-
*/
|
|
80
|
-
/** `SkillSpec` 上 wire 的形:0.72.1 起可带 `baseDir`(server ≥7.80.1 / core 7.20.0 #799;sdk 9.6.0 的 `SkillSpec` 还没声明它,
|
|
81
|
-
* 所以本包用交叉型出口 —— 赋给 `TaskRequestBody.skills: SkillSpec[]` 零摩擦)。 */
|
|
82
15
|
export type SkillSpecOnWire = SkillSpec & {
|
|
83
16
|
baseDir?: string;
|
|
84
17
|
};
|
|
85
|
-
/** {@link skillCommandsToSpecs} 的开关。 */
|
|
86
18
|
export interface SkillSpecsOptions {
|
|
87
|
-
/**
|
|
88
|
-
* 工具是否跑在**加载这些技能的这台机器**上(单用户 host 车道 = true)。
|
|
89
|
-
* 🔴 只有 true 才带 `baseDir`:它是「工具执行环境那台机器上的坐标」,沙箱 / 远端车道(k8s / e2b / ssh / device)上
|
|
90
|
-
* 本机路径在那边不存在,带过去只是假线索 ⇒ 缺席(fail-closed,与 server 出厂自扫技能在那些车道上不带同律)。
|
|
91
|
-
* 缺席 = 引擎不加首行、不做 `${SKILL_ROOT}` 替换,结果与 0.72.0 之前逐字节相同。
|
|
92
|
-
*/
|
|
93
19
|
toolsRunHere?: boolean;
|
|
94
|
-
/**
|
|
95
|
-
* server 判 `baseDir` 用的是它自己那台机器上的 `node:path.isAbsolute`(平台相关):Linux / macOS 上 `C:\\x` **不是**绝对路径
|
|
96
|
-
* (整条提交 400),Windows 上 UNC `\\\\host\\share\\x` 才算。本包不知道 server 跑在哪个平台 ⇒ 由调用方声明;缺席 = `'posix'`
|
|
97
|
-
* (server 出厂镜像与三端 host 车道的常态)。声明错 = server 400 整拒,不是静默降级。
|
|
98
|
-
*/
|
|
99
20
|
platform?: 'posix' | 'win32';
|
|
100
21
|
}
|
|
101
|
-
/**
|
|
102
|
-
* `SkillSpec.baseDir` 的窄读:与 server 顶层门**同一只**结构判据(绝对路径、无 `..` 段、无 NUL、≤ 4096 字符;**不做存在性检查**)。
|
|
103
|
-
* 🔴 「绝对路径」按 **server 所在平台**的 `node:path.isAbsolute` 判(异源对抗复审实抓:此前把盘符路径在 posix 上也放行 = 送出去必 400):
|
|
104
|
-
* · `'posix'`(默认):只有 `/…` 算;`C:\\x` / `\\\\host\\share` 都不算;
|
|
105
|
-
* · `..` 段检查两个平台都按 `/` **与** `\\` 拆(server `isValidCwd` 在所有平台都这么拆);
|
|
106
|
-
* · `'win32'`:`X:\\…` / `X:/…` 与 UNC `\\\\host\\share\\…` 算;段按 `\\` 与 `/` 切。
|
|
107
|
-
* 不合判据 ⇒ `undefined`(不发假坐标;在本包拦下比让 server 400 整拒更诚实)。
|
|
108
|
-
*/
|
|
109
22
|
export declare function skillBaseDirOf(skillRoot: string | undefined, platform?: 'posix' | 'win32'): string | undefined;
|
|
110
23
|
export declare function skillCommandsToSpecs(cmds: SkillCmdLike[], resolveBody: (cmd: SkillCmdLike) => string | null, opts?: SkillSpecsOptions): SkillSpecOnWire[];
|
package/dist/skillsWireCaps.js
CHANGED
|
@@ -1,33 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Caps for `TaskRequest.skills` — 0.70.0 起只剩 `content`(违反 = 400 / 引擎整拒)。
|
|
3
|
-
*
|
|
4
|
-
* 🔴 **0.70.0 退役三键 `items` / `name` / `description`**(CC-04;C-R41 / C-R43 ①):server 7.78.1 的
|
|
5
|
-
* `validateUserSkills` 直读 dist 已无条数帽、无 name / description 长度帽(7.78.0 及以前仍有);引擎侧
|
|
6
|
-
* (core 7.19.0)`<skills>` 清单按字节预算自己裁描述 / 退成 name-only,并发 `skills.listing_truncated`
|
|
7
|
-
* 通告。本包再按 10 / 64 / 1024 预截 = 在一道已不存在的门下面静默切字节,链上没有任何一层会响。
|
|
8
|
-
* 读这三键的消费端(cli `skillsWireOverflow`)与本版同窗退役。
|
|
9
|
-
*
|
|
10
|
-
* 🔴 对照坐标(取证方式 = 直读 shipped 产物,不信任何注释):
|
|
11
|
-
* · `content` —— server `MAX_SKILL_CONTENT_CHARS = 1_048_576`(`dist/http/server.js`),它自己的
|
|
12
|
-
* 头注点名这是 core `SKILL_CONTENT_MAX_CHARS` 的同值孪生(core `dist/core/runner/synthetic-tools.js`
|
|
13
|
-
* 的 `SKILL_CONTENT_MAX_CHARS = 1024 * 1024`);core 1.293 起技能正文**零截断、超 1MB 整拒**。
|
|
14
|
-
*
|
|
15
|
-
* 🔴 此前这一键钉 `32768` —— 那不是「上游改小了」,而是**一开始就抄错**:32768 是 server 的
|
|
16
|
-
* `MAX_OUTPUT_SCHEMA_CHARS`(另一个量)。错值的后果不是 400、是**静默截到 1/32**:`toCappedSpec`
|
|
17
|
-
* 在发请求前就把技能正文切掉,模型看见的 SKILL.md 少一大截,而链上任何一层都不会响一声。
|
|
18
|
-
*
|
|
19
|
-
* 反漂移腿:`scripts/run-engine-vocab-floor-test.mjs` 的 G2-a 段拿本键对**实装 @sema-agent/core**
|
|
20
|
-
* 的 `SKILL_CONTENT_MAX_CHARS` 逐值对账(devDep 钉在本仓,不靠兄弟树物料)——上游改门,那边先红。
|
|
21
|
-
*
|
|
22
|
-
* ⚠️ 留给上游的一处**上游内部张力**(如实记录,本层不代偿):技能条数已无帽,N 条 × 1MB 对上 server
|
|
23
|
-
* 自己的整体 body 帽 8MB(`MAX_BODY`)—— 极端组合会整请求 400/413。这是 server 的事,壳侧不做「按剩余
|
|
24
|
-
* 预算偷偷多截一点」的补偿:那正好会把一个**响亮的 400** 换回一次**静默截断**。
|
|
25
|
-
*/
|
|
26
1
|
export const SKILL_CAPS = { content: 1_048_576 };
|
|
27
|
-
/** Build one `SkillSpec`, or null when there is no usable name/body. description folds in `whenToUse`
|
|
28
|
-
* (CC's progressive-disclosure metadata is name+description+whenToUse) so the engine's Skill tool can select
|
|
29
|
-
* it. 0.70.0: only `content` is capped (engine load door); name / description go through untouched — the
|
|
30
|
-
* engine's listing budget fits the description and announces when it had to (`skills.listing_truncated`). */
|
|
31
2
|
export function toCappedSpec(name, description, whenToUse, body) {
|
|
32
3
|
const n = name.trim();
|
|
33
4
|
const c = body.trim().slice(0, SKILL_CAPS.content);
|
|
@@ -38,14 +9,6 @@ export function toCappedSpec(name, description, whenToUse, body) {
|
|
|
38
9
|
.join(' — ');
|
|
39
10
|
return { name: n, description: desc, content: c };
|
|
40
11
|
}
|
|
41
|
-
/**
|
|
42
|
-
* `SkillSpec.baseDir` 的窄读:与 server 顶层门**同一只**结构判据(绝对路径、无 `..` 段、无 NUL、≤ 4096 字符;**不做存在性检查**)。
|
|
43
|
-
* 🔴 「绝对路径」按 **server 所在平台**的 `node:path.isAbsolute` 判(异源对抗复审实抓:此前把盘符路径在 posix 上也放行 = 送出去必 400):
|
|
44
|
-
* · `'posix'`(默认):只有 `/…` 算;`C:\\x` / `\\\\host\\share` 都不算;
|
|
45
|
-
* · `..` 段检查两个平台都按 `/` **与** `\\` 拆(server `isValidCwd` 在所有平台都这么拆);
|
|
46
|
-
* · `'win32'`:`X:\\…` / `X:/…` 与 UNC `\\\\host\\share\\…` 算;段按 `\\` 与 `/` 切。
|
|
47
|
-
* 不合判据 ⇒ `undefined`(不发假坐标;在本包拦下比让 server 400 整拒更诚实)。
|
|
48
|
-
*/
|
|
49
12
|
export function skillBaseDirOf(skillRoot, platform = 'posix') {
|
|
50
13
|
if (skillRoot === undefined || skillRoot.length === 0 || skillRoot.length > 4096)
|
|
51
14
|
return undefined;
|
|
@@ -60,7 +23,6 @@ export function skillBaseDirOf(skillRoot, platform = 'posix') {
|
|
|
60
23
|
}
|
|
61
24
|
if (!skillRoot.startsWith('/'))
|
|
62
25
|
return undefined;
|
|
63
|
-
// `..` 段两种分隔符都拆(server isValidCwd 在所有平台都按 /[/\\]/ 拆段;POSIX 文件名可含反斜杠 —— 复审第 2 轮实抓)
|
|
64
26
|
if (skillRoot.split(/[\\/]/).includes('..'))
|
|
65
27
|
return undefined;
|
|
66
28
|
return skillRoot;
|
|
@@ -1,65 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* sqlEngineCapability — S-131「SQL 引擎姿态」的**三端共用读面**(server ≥7.60.0 的
|
|
3
|
-
* `GET /v1/capabilities` 新增 `sql` 位;sdk 8.3.0 `Capabilities.sql`)。
|
|
4
|
-
*
|
|
5
|
-
* ── 归层出身(不掩盖:这份窄读器**本来就该在这里**)────────────────────────────────────────
|
|
6
|
-
* 0.58.0 时本件写在壳里(cli `src/sema/sqlEngineCapability.ts`),理由是当时 client-core 的
|
|
7
|
-
* `engineCapsCache` 公面只到「平铺布尔 / 平铺串 / 嵌套布尔」三形,**没有嵌套对象的读口** ⇒ 这一格
|
|
8
|
-
* 在包侧结构上读不出来。0.59.0 两件同批补齐:`engineCapsCache` 加四态读口
|
|
9
|
-
* {@link import("./engineCapsCache.js").engineCapValue},本模块把壳那份窄读器**逐字上收**。
|
|
10
|
-
* 🔴 **导出名与壳侧那份逐字相同**,这是 drift-lock:包一发同名符号,壳的
|
|
11
|
-
* `run-layer-shadow-export-gate-test.mjs`(同名影子导出门)当场红,逼那份壳侧副本换装成
|
|
12
|
-
* `export { … } from '@sema-agent/client-core'`,而不是两边各自演进(DISEASE-SHAPES S37 的病形
|
|
13
|
-
* 正是「包侧有了、壳侧没删」)。
|
|
14
|
-
*
|
|
15
|
-
* ── 上游事实(fixture 直证,不采信 CHANGELOG)──────────────────────────────────────────────
|
|
16
|
-
* `@sema-agent/server/dist/http/routes/capabilities.js` 的回体里多一位
|
|
17
|
-
* `sql: projectSqlEngineCapability(deps.sqlEngineFacts?.())`;7.59.0 的同一文件**没有这个键**。
|
|
18
|
-
* 值的形(`server/dist/sql-engine-posture.d.ts` 逐字):
|
|
19
|
-
* · `{ engine, isolation, txnMode }` —— 驱动在**真连接**上 `SET` 完之后**回读**的值
|
|
20
|
-
* (「取实例真值,不按配置推断」);
|
|
21
|
-
* · `null` —— **本部署没有 SQL 后端**(env-only / local 文件后端)。逐字:「缺席就是缺席…
|
|
22
|
-
* 不铸一个看起来像答案的空壳」。
|
|
23
|
-
*
|
|
24
|
-
* ── 🔴 四态,不是两态([honest-absence-not-fabricated-zero])────────────────────────────────
|
|
25
|
-
* 这一格上有**四件互不相同**的事,消费端一件都不许折进另一件:
|
|
26
|
-
* ① `unobserved` —— **本进程一次 caps 响应都没观测到**。一次性 `sema doctor` 就是这一档
|
|
27
|
-
* (它不起 live client ⇒ caps tee 从来没触发过)。它**不是**「引擎没有 SQL」。
|
|
28
|
-
* ② `not_reported` —— caps 观测到了,而回体上**没有** `sql` 这个键 ⇒ 老引擎(<7.60.0)。
|
|
29
|
-
* 它**不是**「这台部署没有 SQL 后端」—— 老引擎有没有库,这个读面答不了。
|
|
30
|
-
* ③ `none` —— 引擎**明确说** `null`:这台部署没有 SQL 后端。这是一个**正面事实**,不是缺席;
|
|
31
|
-
* 把它渲成「未观测」等于把引擎真给的答案丢掉(壳自 spawn 的单机形恒落这一档,是常态读数)。
|
|
32
|
-
* ④ `present` —— 三座俱全,原样渲。
|
|
33
|
-
* 🔴 **绝不渲 0 / 绝不编一个姿态**:读不出来就说读不出来,哪一种读不出来也要分清楚。
|
|
34
|
-
* ⇄ 这四个词与 {@link import("./engineCapsCache.js").EngineCapValueState} 的四态**同一套词汇**
|
|
35
|
-
* (`unobserved` / `not_reported` / `null`→`none` / `value`→`present`):通用读口答「这一格上有
|
|
36
|
-
* 没有值」,本模块答「这一格的值成不成形」,刻意分层 —— 通用口不认识 `sql` 的三座,窄读器不该
|
|
37
|
-
* 重新实现一遍缓存与代际。
|
|
38
|
-
*
|
|
39
|
-
* ── 🔴 UNTRUSTED-for-display ──────────────────────────────────────────────────────────────
|
|
40
|
-
* `isolation` 是从**数据库服务器**变量里回读的串(`@@transaction_isolation` 一族),不是引擎铸的
|
|
41
|
-
* 闭词;三座一律只渲染、绝不参与任何判定,呈现前过本包的单行消毒 + 封长单源
|
|
42
|
-
* ({@link capForDisplay}:先转义、后按转义结果封长)。
|
|
43
|
-
*/
|
|
44
|
-
/**
|
|
45
|
-
* 三座俱全时的读数(server `SqlEngineCapability` 逐字同形)。
|
|
46
|
-
*
|
|
47
|
-
* 🔴 **`txnMode` 的域含 `null`,而 `null` 不是缺席**(fixture `sql-driver.d.ts` 逐字:
|
|
48
|
-
* 「TiDB's session `tidb_txn_mode`; `null` = this engine has no such indicator (**NOT**
|
|
49
|
-
* "optimistic")」;铸点逐字 `txnMode: engine === "tidb" ? "pessimistic" : null`)⇒
|
|
50
|
-
* **三种引擎里有两种(`innodb` / `pg`)这一位恒 `null`**。把 `null` 判成畸形 = 两种正常部署
|
|
51
|
-
* 的完整读数被整条丢掉、doctor 错报「没有引擎响应」—— 那正是 B-025 的病形(消费域比铸点域
|
|
52
|
-
* 更窄)在新件上复发。
|
|
53
|
-
* 🔴 型写 `string | null` 而**不是**手抄上游那个 `'pessimistic' | null` 闭词:抄一份就是给自己
|
|
54
|
-
* 立第二个判官(上游哪天给别的引擎加一个指示词,手抄的那份会把它判畸形)。窄读域只许**等于
|
|
55
|
-
* 或宽于**铸点域。
|
|
56
|
-
*/
|
|
57
1
|
export interface SqlEngineCapabilityView {
|
|
58
2
|
engine: string;
|
|
59
3
|
isolation: string;
|
|
60
4
|
txnMode: string | null;
|
|
61
5
|
}
|
|
62
|
-
/** 四态读数(见文件头)。`unobserved` 由**读口**在这一格空缺时铸,不由投影铸。 */
|
|
63
6
|
export type SqlEngineReading = {
|
|
64
7
|
kind: 'unobserved';
|
|
65
8
|
} | {
|
|
@@ -70,72 +13,11 @@ export type SqlEngineReading = {
|
|
|
70
13
|
kind: 'present';
|
|
71
14
|
view: SqlEngineCapabilityView;
|
|
72
15
|
};
|
|
73
|
-
/**
|
|
74
|
-
* caps 回体 → 本格读数;**畸形一律 `undefined`**(= 这一格不写 ⇒ 读口答 `unobserved`)。
|
|
75
|
-
*
|
|
76
|
-
* 🔴 `undefined`(键不在)与 `null`(引擎说没有)**是两件事**,本函数是本包唯一区分它们的地方:
|
|
77
|
-
* 前者 ⇒ `not_reported`(老引擎),后者 ⇒ `none`(这台部署没库)。用 `??` / falsy 判会把
|
|
78
|
-
* 两者压成一件,而它们对运维的意思完全不同。
|
|
79
|
-
* 🔴 三座**任一**不是非空串 ⇒ 整条判畸形(`undefined`)。绝不留一个缺座的对象:一行写着
|
|
80
|
-
* 「isolation: 」的诊断比不渲这一行更坏(它看起来像一个答案)。
|
|
81
|
-
*/
|
|
82
16
|
export declare function projectSqlEngineCapability(caps: unknown): SqlEngineReading | undefined;
|
|
83
|
-
/**
|
|
84
|
-
* 宿主 caps probe 的**读面 tee** 落点(壳侧与 mcpGate / sessionBackground / projectContext /
|
|
85
|
-
* crashConverged / workflowsGate 五条并列)。绝不 throw —— 读面腿不许反噬 caps 探测链。
|
|
86
|
-
*
|
|
87
|
-
* 🔴 投影 `undefined`(caps 畸形)⇒ 这一格**被删**而不是留着上一台引擎的旧值 —— 留旧值 = 拿一台
|
|
88
|
-
* 已经不在的引擎的读数去回答「这台现在是什么姿态」。
|
|
89
|
-
* ⚠️ **这一条只覆盖「收到了一份读不懂的回体」**。「同端口 respawn / 版本回滚之后新探测**失败或
|
|
90
|
-
* 还在飞**」是**另一条路** —— 那时本 tee 一次都不触发,挡不住旧读数继续被当成当代事实。
|
|
91
|
-
* 那一形由 {@link forgetSqlEngineReading} 在装配口(宿主的引擎温切臂)上收。
|
|
92
|
-
* 🔴 **不按 principal 分域**:SQL 姿态是**这台 worker 的连接事实**,与调用者是谁无关
|
|
93
|
-
* (与 `workflows` 那种 per-caller 的位刻意不同)—— 加一个用不上的去重域只会造出一条
|
|
94
|
-
* 「换主体就读不到」的假缺席。
|
|
95
|
-
*
|
|
96
|
-
* 🔴 **`opts.generation` = 关掉「旧探测覆盖新读数」那条竞态的唯一正确供给**(0.60.0;异源对抗复审
|
|
97
|
-
* [medium] 采纳,真病):`kickEngineCapsProbe` 的代际闸在 **probe 返回之后**才跑,而本 tee 是在
|
|
98
|
-
* probe **内部**落地的 ⇒ 一次慢的旧探测能在 `invalidateEngineCaps` + 新探测都走完之后才返回,
|
|
99
|
-
* 把**上一台引擎**的读数重新写回来。宿主在**起探测那一刻**调 `engineCapsGeneration(baseUrl)` 抓号、
|
|
100
|
-
* 在这里原样交回,陈旧那一发就会被整只丢掉。
|
|
101
|
-
* ⚠️ **不传 = 与本位到货之前逐字节同行为**(照写)—— additive 供给,不是强制门;端没跟上之前不会
|
|
102
|
-
* 有任何东西变坏。🔴 **tee 自己抓号是假判据**(陈旧那一发在这里读到的是新代号,永远像当代的)。
|
|
103
|
-
*/
|
|
104
17
|
export declare function noteEngineCapsForSqlEngine(baseUrl: string, caps: unknown, opts?: {
|
|
105
18
|
generation?: number;
|
|
106
19
|
}): void;
|
|
107
|
-
/**
|
|
108
|
-
* 本进程观测到的 SQL 姿态;这一格空缺 ⇒ `{kind:'unobserved'}`(**绝不**折成 `none`)。
|
|
109
|
-
*
|
|
110
|
-
* 缺省读锚 = {@link engineWireTarget} 的 `baseUrl`(本包零 `process` —— portability 门盯着;
|
|
111
|
-
* 壳那份直读 `process.env.SEMA_LIVE_BASEURL`,而 `engineWireTarget()` 的 env 臂读的就是同一个变量
|
|
112
|
-
* ⇒ Node 壳上行为一字节不变,浏览器/桌面宿主则由 `installEngineWireTarget()` 显式装)。
|
|
113
|
-
*/
|
|
114
20
|
export declare function observedSqlEngine(baseUrl?: string | undefined): SqlEngineReading;
|
|
115
|
-
/**
|
|
116
|
-
* 四态 → doctor 那一行的 detail 串。**唯一措辞真源**(三端共用一句话;别在各端的行装配里另写
|
|
117
|
-
* 一遍 —— 那正是这次上收要消灭的东西)。
|
|
118
|
-
*
|
|
119
|
-
* 🔴 三座是 UNTRUSTED-for-display(`isolation` 是从**数据库服务器**变量里回读的串):呈前消毒 +
|
|
120
|
-
* 封长。消毒放在这一处而不是各呈现点,是因为本函数的产物就是屏上那一串(单一出口)。
|
|
121
|
-
* 🔴 四句话刻意**互不相同、也互不蕴含**:「未观测」不许说成「没有库」,「老引擎不报」也不许
|
|
122
|
-
* 说成「没有库」—— 三种「读不出」对运维是三条不同的下一步。
|
|
123
|
-
*/
|
|
124
21
|
export declare function sqlEngineDoctorDetail(reading: SqlEngineReading): string;
|
|
125
|
-
/**
|
|
126
|
-
* **换代失效口**(与 {@link import("./engineCapsCache.js").invalidateEngineCaps} 并列,由宿主在
|
|
127
|
-
* 引擎温切成功后调)。
|
|
128
|
-
*
|
|
129
|
-
* 🔴 **代际闸挡不住这一形**:那道闸挡的是「旧响应**写脏**新一代」(tee 只在确认代际仍当代之后
|
|
130
|
-
* 才落地),而本格的病是反过来的 —— 新一代的探测**根本没成功**(超时 / reject / 还在飞),
|
|
131
|
-
* tee 于是一次都没触发,上一台引擎留在同一端口上的读数就继续被 {@link observedSqlEngine}
|
|
132
|
-
* 当成**当代事实**答出去。同端口 respawn / 版本回滚 / 引擎起不来三条路都走这里,而它在
|
|
133
|
-
* doctor 上的形态最坏:一行**肯定句**(「这台部署是 tidb 悲观事务」/「这台引擎不报这一位,
|
|
134
|
-
* 要升级」),说的却是一台已经不在的引擎。
|
|
135
|
-
* 🔴 处置是**清成未观测**,不是留旧值也不是铸一个 `none` —— 「我这一代还没听到答案」是这一格
|
|
136
|
-
* 唯一诚实的话(与 {@link noteEngineCapsForSqlEngine} 对畸形回体的处置同向)。
|
|
137
|
-
* 空串 ⇒ no-op;绝不 throw(它跑在引擎温切路径上)。
|
|
138
|
-
*/
|
|
139
22
|
export declare function forgetSqlEngineReading(baseUrl: string | undefined): void;
|
|
140
|
-
/** 测试钩子。 */
|
|
141
23
|
export declare function __resetSqlEngineReadingsForTests(): void;
|