@sema-agent/client-core 0.100.0 → 0.101.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.
- package/CHANGELOG.md +395 -0
- package/README.md +164 -117
- package/dist/adapt/arms.js +51 -16
- package/dist/adapt/textStream.js +7 -4
- package/dist/adapt/toolCards.js +9 -8
- package/dist/adapt.js +7 -1
- package/dist/adapter/activeRunSelfHeal.d.ts +24 -2
- package/dist/adapter/activeRunSelfHeal.js +108 -6
- package/dist/adapter/downstream/eventToSdkMessage.js +33 -12
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +60 -1
- package/dist/adapter/downstream/terminalToSdkResult.js +209 -39
- package/dist/adapter/runStream.d.ts +4 -4
- package/dist/adapter/runStream.js +158 -43
- package/dist/agentsWireCaps.d.ts +2 -7
- package/dist/agentsWireCaps.js +1 -2
- package/dist/approvalDecidedByCapability.js +2 -2
- package/dist/approvalFrameFamilies.d.ts +33 -0
- package/dist/approvalFrameFamilies.js +120 -0
- package/dist/approvalsStreamLiveCapability.js +2 -2
- package/dist/attachmentsWireCaps.js +41 -13
- package/dist/callerCwdCapability.js +2 -2
- package/dist/centerWiringCapability.js +2 -2
- package/dist/clockReading.d.ts +2 -0
- package/dist/clockReading.js +4 -0
- package/dist/cloudConfigWireCaps.d.ts +19 -5
- package/dist/cloudConfigWireCaps.js +193 -56
- package/dist/coreValuePorts.d.ts +12 -2
- package/dist/coreValuePorts.js +9 -0
- package/dist/decideFailureNote.js +5 -3
- package/dist/decideReceipt.js +2 -2
- package/dist/deviceExecutorManagementCapability.js +2 -2
- package/dist/deviceFlowPolling.js +1 -1
- package/dist/disableSkillsWire.d.ts +1 -1
- package/dist/disableSkillsWire.js +4 -3
- package/dist/displayUntrusted.d.ts +1 -0
- package/dist/displayUntrusted.js +65 -8
- package/dist/engineCapReader.js +1 -1
- package/dist/engineConfigDrift.js +1 -1
- package/dist/engineErrorCodes.d.ts +14 -5
- package/dist/engineErrorCodes.js +27 -6
- package/dist/engineGenerationConvergence.d.ts +39 -0
- package/dist/engineGenerationConvergence.js +95 -0
- package/dist/engineGenerationPort.d.ts +61 -0
- package/dist/engineGenerationPort.js +144 -0
- package/dist/engineHealthFacts.d.ts +23 -0
- package/dist/engineHealthFacts.js +92 -0
- package/dist/engineIdentity.d.ts +4 -0
- package/dist/engineIdentity.js +11 -0
- package/dist/engineNoticeCodes.d.ts +2 -5
- package/dist/engineRowRef.js +3 -0
- package/dist/engineSessionMessages.js +2 -2
- package/dist/engineToolDirectory.js +2 -2
- package/dist/engineWireFor.d.ts +99 -0
- package/dist/engineWireFor.js +248 -6
- package/dist/engineWireTarget.d.ts +1 -0
- package/dist/engineWireTarget.js +8 -0
- package/dist/env/uiLanguage.js +1 -1
- package/dist/errorSupplementRoles.d.ts +3 -0
- package/dist/errorSupplementRoles.js +37 -0
- package/dist/executionLaneCapability.js +2 -2
- package/dist/fileHistoryCaptureCapability.js +3 -3
- package/dist/finalVerifyWire.d.ts +6 -3
- package/dist/finalVerifyWire.js +6 -23
- package/dist/flagInput.d.ts +4 -0
- package/dist/flagInput.js +24 -0
- package/dist/fleet/fleetLedger.js +5 -2
- package/dist/fleet/fleetProjection.d.ts +1 -0
- package/dist/fleet/fleetProjection.js +15 -2
- package/dist/gateVocabulary.js +3 -0
- package/dist/generated/engineFactTables.d.ts +7 -3
- package/dist/generated/engineFactTables.js +52 -0
- package/dist/generated/engineNoticeTables.js +12 -0
- package/dist/generated/settingsSchemaActiveTiers.d.ts +1 -0
- package/dist/generated/settingsSchemaActiveTiers.js +14 -0
- package/dist/generated/settingsSchemaCallerTextEcho.d.ts +1 -0
- package/dist/generated/settingsSchemaCallerTextEcho.js +8 -0
- package/dist/generated/settingsSchemaControlAndBidi.d.ts +1 -0
- package/dist/generated/settingsSchemaControlAndBidi.js +8 -0
- package/dist/generated/settingsSchemaDefaultModel.d.ts +11 -0
- package/dist/generated/settingsSchemaDefaultModel.js +25 -0
- package/dist/generated/settingsSchemaFns.d.ts +54 -0
- package/dist/generated/settingsSchemaFns.js +26 -1
- package/dist/generated/settingsSchemaMcpRequestEntry.d.ts +1 -1
- package/dist/generated/settingsSchemaMcpRequestEntry.js +1 -7
- package/dist/generated/settingsSchemaSafetyMergeSpec.d.ts +1 -0
- package/dist/generated/settingsSchemaSafetyMergeSpec.js +95 -0
- package/dist/generated/settingsSchemaSettingsSources.d.ts +1 -0
- package/dist/generated/settingsSchemaSettingsSources.js +58 -0
- package/dist/generated/settingsSchemaTables.d.ts +2 -0
- package/dist/generated/settingsSchemaTables.js +13 -0
- package/dist/generated/settingsSchemaUrlPattern.d.ts +1 -0
- package/dist/generated/settingsSchemaUrlPattern.js +183 -0
- package/dist/headlessPermissionModeWire.d.ts +18 -2
- package/dist/headlessPermissionModeWire.js +30 -19
- package/dist/hitl/allowRuleShadow.js +7 -5
- package/dist/hitl/approvalCardReading.d.ts +3 -0
- package/dist/hitl/approvalCardReading.js +17 -0
- package/dist/hitl/approvalCompleteParked.js +1 -1
- package/dist/hitl/approvalDelivery.d.ts +87 -0
- package/dist/hitl/approvalDelivery.js +193 -0
- package/dist/hitl/approvalResolution.d.ts +11 -0
- package/dist/hitl/approvalResolution.js +50 -11
- package/dist/hitl/askClassPair.d.ts +6 -0
- package/dist/hitl/askClassPair.js +30 -3
- package/dist/hitl/askParkAutoReopenBlock.d.ts +30 -0
- package/dist/hitl/askParkAutoReopenBlock.js +117 -0
- package/dist/hitl/askParkRowRouting.js +4 -1
- package/dist/hitl/attributionLadder.d.ts +42 -3
- package/dist/hitl/attributionLadder.js +79 -8
- package/dist/hitl/automaticAnswerVerdict.d.ts +6 -1
- package/dist/hitl/automaticAnswerVerdict.js +46 -11
- package/dist/hitl/crashConverged.js +2 -2
- package/dist/hitl/decisionConflict.d.ts +6 -2
- package/dist/hitl/decisionConflict.js +24 -9
- package/dist/hitl/decisionRefusal.d.ts +20 -10
- package/dist/hitl/decisionRefusal.js +99 -54
- package/dist/hitl/decisionSend.d.ts +3 -0
- package/dist/hitl/decisionSend.js +87 -103
- package/dist/hitl/frameRouter.d.ts +1 -0
- package/dist/hitl/frameRouter.js +9 -2
- package/dist/hitl/hitlBridge.d.ts +18 -6
- package/dist/hitl/hitlBridge.js +41 -37
- package/dist/hitl/livePendingAsk.js +4 -3
- package/dist/hitl/noAllowCause.js +1 -1
- package/dist/hitl/parkResolver.js +3 -2
- package/dist/hitl/persistedRulesWire.js +1 -0
- package/dist/hitl/planReviewWire.d.ts +4 -0
- package/dist/hitl/planReviewWire.js +59 -30
- package/dist/hitl/resumeRunningCard.d.ts +3 -2
- package/dist/hitl/resumeRunningCard.js +17 -11
- package/dist/hitl/sessionPolicyDeliverable.d.ts +5 -2
- package/dist/hitl/sessionPolicyDeliverable.js +62 -29
- package/dist/hitl/sessionPolicyWire.d.ts +13 -3
- package/dist/hitl/sessionPolicyWire.js +81 -16
- package/dist/hitl/standingRows.js +1 -1
- package/dist/hitl/toolApprovalWire.d.ts +9 -10
- package/dist/hitl/toolApprovalWire.js +72 -54
- package/dist/hookMatcherVerdict.d.ts +2 -0
- package/dist/hookMatcherVerdict.js +12 -0
- package/dist/hooksCompactTransition.d.ts +19 -0
- package/dist/hooksCompactTransition.js +41 -0
- package/dist/hooksWireCaps.d.ts +1 -1
- package/dist/hooksWireCaps.js +202 -203
- package/dist/host.d.ts +1 -14
- package/dist/host.js +0 -8
- package/dist/hostCallbackGuard.d.ts +1 -0
- package/dist/hostCallbackGuard.js +1 -1
- package/dist/hostSettingsSource.d.ts +172 -0
- package/dist/hostSettingsSource.js +675 -0
- package/dist/hostTurnSettings.d.ts +73 -17
- package/dist/hostTurnSettings.js +594 -97
- package/dist/httpHookPolicy.d.ts +37 -0
- package/dist/httpHookPolicy.js +176 -0
- package/dist/humanTurn.d.ts +2 -1
- package/dist/humanTurn.js +37 -7
- package/dist/humanTurnRead.js +4 -3
- package/dist/humanTurnSentences.d.ts +10 -0
- package/dist/humanTurnSentences.js +74 -0
- package/dist/i18n/messages.en.d.ts +184 -2
- package/dist/i18n/messages.en.js +187 -5
- package/dist/i18n/messages.zh.js +197 -5
- package/dist/i18n/translate.js +3 -3
- package/dist/index.d.ts +69 -15
- package/dist/index.js +45 -13
- package/dist/inheritEnvCapability.d.ts +3 -1
- package/dist/inheritEnvCapability.js +31 -17
- package/dist/inheritEnvWire.d.ts +2 -1
- package/dist/inheritEnvWire.js +11 -5
- package/dist/interactiveToolsWire.d.ts +4 -2
- package/dist/interactiveToolsWire.js +5 -5
- package/dist/jsonFaithful.d.ts +20 -0
- package/dist/jsonFaithful.js +152 -0
- package/dist/limitsWire.d.ts +7 -2
- package/dist/limitsWire.js +19 -13
- package/dist/liveInitToolFace.d.ts +6 -1
- package/dist/liveInitToolFace.js +5 -3
- package/dist/liveModelCatalog.d.ts +22 -0
- package/dist/liveModelCatalog.js +132 -18
- package/dist/mcpPanel.js +1 -1
- package/dist/mcpProbeCapability.js +2 -2
- package/dist/mcpStatusSupersetKeys.d.ts +24 -0
- package/dist/mcpStatusSupersetKeys.js +45 -0
- package/dist/mcpToolToggles.js +2 -1
- package/dist/mcpWireCaps.d.ts +39 -1
- package/dist/mcpWireCaps.js +254 -50
- package/dist/memoryComplianceCapability.js +2 -2
- package/dist/memoryOriginCapability.js +2 -2
- package/dist/model/catalogDefault.d.ts +24 -0
- package/dist/model/catalogDefault.js +4 -0
- package/dist/model/liveCatalogShape.js +5 -4
- package/dist/model/modelsPolicy.js +4 -3
- package/dist/model/onboardJudgement.d.ts +1 -0
- package/dist/model/onboardJudgement.js +1 -1
- package/dist/model/subagentModelWord.js +2 -2
- package/dist/modelCapabilityProbe.js +6 -6
- package/dist/modelIdentityResolvability.d.ts +10 -1
- package/dist/modelIdentityResolvability.js +62 -39
- package/dist/modsKernelIdentity.d.ts +10 -0
- package/dist/modsKernelIdentity.js +103 -0
- package/dist/modsKernelTransit.d.ts +8 -0
- package/dist/modsKernelTransit.js +6 -0
- package/dist/notifications.d.ts +30 -12
- package/dist/notifications.js +241 -53
- package/dist/outputStyleSeatCapability.js +2 -2
- package/dist/ownKey.d.ts +11 -0
- package/dist/ownKey.js +164 -3
- package/dist/panelReduce.js +1 -1
- package/dist/peerFrames.d.ts +1 -1
- package/dist/peerFrames.js +6 -2
- package/dist/peerLaneCapability.js +2 -2
- package/dist/permissionModesCapability.js +4 -4
- package/dist/permissionRuleIssue.js +2 -0
- package/dist/permissionRulesWriteCapability.js +2 -2
- package/dist/permissionsAllowGrantCapability.js +2 -2
- package/dist/permissionsDeclaration.d.ts +43 -4
- package/dist/permissionsDeclaration.js +102 -35
- package/dist/pluginHooksWire.d.ts +20 -4
- package/dist/pluginHooksWire.js +92 -53
- package/dist/prepareRefusal.d.ts +3 -2
- package/dist/prepareRefusal.js +27 -9
- package/dist/printInitToolFace.js +2 -2
- package/dist/printModelStatus.js +1 -1
- package/dist/projectMemory.d.ts +32 -0
- package/dist/projectMemory.js +70 -0
- package/dist/promptBlockedCopy.d.ts +2 -1
- package/dist/promptBlockedCopy.js +2 -1
- package/dist/promptDelivery.d.ts +23 -3
- package/dist/promptDelivery.js +169 -30
- package/dist/providerRejection.d.ts +19 -1
- package/dist/providerRejection.js +75 -4
- package/dist/queuedDelivery.d.ts +48 -0
- package/dist/queuedDelivery.js +233 -0
- package/dist/reattachWindow.d.ts +94 -0
- package/dist/reattachWindow.js +127 -0
- package/dist/request/printNotification.d.ts +1 -1
- package/dist/request/printNotification.js +5 -1
- package/dist/request/submissionIdentity.d.ts +37 -0
- package/dist/request/submissionIdentity.js +65 -0
- package/dist/request/taskRequest.d.ts +12 -4
- package/dist/request/taskRequest.js +221 -152
- package/dist/resultFrameKeys.d.ts +1 -0
- package/dist/resultFrameKeys.js +4 -1
- package/dist/retryStatus.d.ts +8 -0
- package/dist/retryStatus.js +57 -9
- package/dist/rewindArchiveCapability.js +2 -2
- package/dist/rewindEngineAction.d.ts +2 -0
- package/dist/rewindEngineAction.js +23 -1
- package/dist/rowKind.d.ts +36 -0
- package/dist/rowKind.js +97 -0
- package/dist/ruleCompileVerdict.d.ts +18 -0
- package/dist/ruleCompileVerdict.js +67 -2
- package/dist/ruleReadings.d.ts +58 -0
- package/dist/ruleReadings.js +132 -0
- package/dist/ruleRefusalSentence.d.ts +4 -0
- package/dist/ruleRefusalSentence.js +9 -3
- package/dist/runCancelContext.d.ts +0 -1
- package/dist/runCancelContext.js +1 -2
- package/dist/runTerminal.d.ts +5 -0
- package/dist/runTerminal.js +52 -17
- package/dist/sandboxWire.d.ts +1 -1
- package/dist/sandboxWire.js +4 -6
- package/dist/scenarioRefusal.js +1 -1
- package/dist/scenarioSkills.d.ts +20 -0
- package/dist/scenarioSkills.js +72 -0
- package/dist/scenarioWire.d.ts +5 -2
- package/dist/scenarioWire.js +9 -9
- package/dist/sealedKeyCapability.js +2 -2
- package/dist/seam.d.ts +2 -0
- package/dist/seam.js +2 -2
- package/dist/seatContract.d.ts +46 -1
- package/dist/seatContract.js +49 -19
- package/dist/selfOrchestrationDenial.js +1 -1
- package/dist/sessionPolicyCapability.js +2 -2
- package/dist/sessionRulesChildrenReadLive.d.ts +6 -0
- package/dist/sessionRulesChildrenReadLive.js +5 -0
- package/dist/sessionRulesNamespaceFormsCapability.d.ts +12 -0
- package/dist/sessionRulesNamespaceFormsCapability.js +29 -0
- package/dist/sessionSyncFileHistoryCapability.js +2 -2
- package/dist/settingsCredentialKeyPaths.js +60 -5
- package/dist/settingsHooksSalvage.d.ts +1 -0
- package/dist/settingsHooksSalvage.js +7 -1
- package/dist/settingsLayerAdmission.d.ts +4 -0
- package/dist/settingsLayerAdmission.js +16 -0
- package/dist/skillToolListsCapability.js +6 -5
- package/dist/skillsWireCaps.d.ts +14 -0
- package/dist/skillsWireCaps.js +47 -16
- package/dist/slashCommandGate.d.ts +24 -0
- package/dist/slashCommandGate.js +74 -0
- package/dist/slashCommandTable.d.ts +14 -0
- package/dist/slashCommandTable.js +99 -0
- package/dist/sqlEngineCapability.js +2 -2
- package/dist/steerPriorityCapability.js +2 -2
- package/dist/storePostureCapability.js +2 -2
- package/dist/subagent/agentStateDetail.js +1 -1
- package/dist/subagent/engineDelegatedPrompt.d.ts +9 -0
- package/dist/subagent/engineDelegatedPrompt.js +38 -7
- package/dist/subagent/engineRowStopGate.js +2 -2
- package/dist/subagent/engineSubagentResume.js +3 -3
- package/dist/subagent/engineTaskHandleWire.d.ts +1 -0
- package/dist/subagent/engineTaskHandleWire.js +10 -0
- package/dist/submitFailure.d.ts +8 -0
- package/dist/submitFailure.js +17 -0
- package/dist/supportFloor.d.ts +1 -0
- package/dist/supportFloor.js +7 -0
- package/dist/terminationIntent.d.ts +55 -0
- package/dist/terminationIntent.js +352 -0
- package/dist/toolHistoryMismatch.d.ts +8 -0
- package/dist/toolHistoryMismatch.js +37 -6
- package/dist/toolResult.d.ts +13 -3
- package/dist/toolResult.js +158 -9
- package/dist/toolResultContent.d.ts +13 -0
- package/dist/toolResultContent.js +82 -7
- package/dist/toolRoster.d.ts +18 -0
- package/dist/toolRoster.js +64 -0
- package/dist/turnFailurePresentation.js +27 -90
- package/dist/usageLimitAutoResume.d.ts +74 -0
- package/dist/usageLimitAutoResume.js +227 -0
- package/dist/userAttachmentEnvelope.js +1 -1
- package/dist/userAttachmentSeat.js +5 -5
- package/dist/userInvokedSkillsCapability.js +2 -2
- package/dist/webSearchBackendCapability.js +2 -2
- package/dist/wireErrorTriage.js +99 -50
- package/dist/wireFailureShape.d.ts +25 -1
- package/dist/wireFailureShape.js +92 -5
- package/dist/wireRefusalCopy.d.ts +24 -1
- package/dist/wireRefusalCopy.js +253 -32
- package/dist/wiringFleetDoctor.d.ts +3 -0
- package/dist/wiringFleetDoctor.js +21 -0
- package/dist/workflow.d.ts +2 -1
- package/dist/workflow.js +38 -1
- package/dist/workflowClient.d.ts +2 -7
- package/dist/workflowsJournalCapability.js +2 -2
- package/dist/writeProtectionCapability.js +2 -2
- package/docs/INTEGRATION-CLIENTS.md +607 -181
- package/package.json +14 -3
package/dist/liveModelCatalog.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { appendOwnElement, readOwnDataValue } from './ownKey.js';
|
|
1
2
|
import { frozenJsonCopyOf, liveDefaultModelCopy, liveModelRowCopy } from './model/liveCatalogShape.js';
|
|
2
3
|
import { msg, renderMessage } from './i18n/translate.js';
|
|
4
|
+
import { quoteUntrustedForSentence } from './displayUntrusted.js';
|
|
5
|
+
import { CC_TIER_ALIASES, TIER_ORDER } from './model/tierVocabulary.js';
|
|
3
6
|
let catalog = null;
|
|
4
7
|
let refresher = null;
|
|
5
8
|
export function setLiveModelCatalog(next) {
|
|
@@ -37,7 +40,7 @@ export function normalizeLiveModelRef(ref) {
|
|
|
37
40
|
function ownDataOf(o, key) {
|
|
38
41
|
try {
|
|
39
42
|
const d = Object.getOwnPropertyDescriptor(o, key);
|
|
40
|
-
return d !== undefined && 'value'
|
|
43
|
+
return d !== undefined && Object.hasOwn(d, 'value') ? d.value : undefined;
|
|
41
44
|
}
|
|
42
45
|
catch {
|
|
43
46
|
return undefined;
|
|
@@ -82,15 +85,20 @@ function targetRowOf(model, cat) {
|
|
|
82
85
|
return row === undefined ? { kind: 'none', why: 'model_not_listed' } : { kind: 'row', row };
|
|
83
86
|
}
|
|
84
87
|
export function imageVisionOf(model, catalog = getLiveModelCatalog()) {
|
|
88
|
+
return imageVisionReadingOf(model, catalog).vision;
|
|
89
|
+
}
|
|
90
|
+
export function imageVisionReadingOf(model, catalog = getLiveModelCatalog()) {
|
|
85
91
|
try {
|
|
86
92
|
const target = targetRowOf(model, catalog);
|
|
87
93
|
if (target.kind !== 'row')
|
|
88
|
-
return 'unknown';
|
|
94
|
+
return { vision: 'unknown' };
|
|
89
95
|
const vision = ownDataOf(target.row, 'vision');
|
|
90
|
-
|
|
96
|
+
const word = vision === true ? 'yes' : vision === false ? 'no' : 'unknown';
|
|
97
|
+
const name = ownDataOf(target.row, 'name');
|
|
98
|
+
return typeof name === 'string' && name.length > 0 ? { vision: word, model: name } : { vision: word };
|
|
91
99
|
}
|
|
92
100
|
catch {
|
|
93
|
-
return 'unknown';
|
|
101
|
+
return { vision: 'unknown' };
|
|
94
102
|
}
|
|
95
103
|
}
|
|
96
104
|
const NOT_CLAMPED = Object.freeze({ kind: 'not_clamped' });
|
|
@@ -148,13 +156,119 @@ export function liveDefaultModelName() {
|
|
|
148
156
|
const d = liveDefaultModelOf(catalog);
|
|
149
157
|
return d.kind === 'listed' ? d.name : d.kind === 'not_listed' ? d.id : null;
|
|
150
158
|
}
|
|
159
|
+
function isReservedModelWord(word) {
|
|
160
|
+
return word === 'default' || TIER_ORDER.includes(word) || Object.hasOwn(CC_TIER_ALIASES, word);
|
|
161
|
+
}
|
|
162
|
+
function droppedDisabledNamed(dropped, name) {
|
|
163
|
+
if (dropped.kind !== 'reported')
|
|
164
|
+
return false;
|
|
165
|
+
return dropped.entries.some((e) => e.identity !== undefined && e.identity.enabled === false && (e.identity.name === name || e.identity.id === name));
|
|
166
|
+
}
|
|
167
|
+
function catalogIncomplete(cat, rows, dropped) {
|
|
168
|
+
const models = ownDataOf(cat, 'models');
|
|
169
|
+
const n = Array.isArray(models) ? ownDataOf(models, 'length') : undefined;
|
|
170
|
+
if (typeof n === 'number' && Number.isSafeInteger(n) && n > rows.length)
|
|
171
|
+
return true;
|
|
172
|
+
return dropped.kind === 'reported' ? dropped.entries.length > 0 || dropped.unreadable > 0 : dropped.kind === 'unknown';
|
|
173
|
+
}
|
|
174
|
+
function isPlainRecord(o) {
|
|
175
|
+
const proto = Object.getPrototypeOf(o);
|
|
176
|
+
return proto === Object.prototype || proto === null;
|
|
177
|
+
}
|
|
178
|
+
function rowIdentityUnreadable(row) {
|
|
179
|
+
try {
|
|
180
|
+
const name = Object.getOwnPropertyDescriptor(row, 'name');
|
|
181
|
+
if (name === undefined || !Object.hasOwn(name, 'value') || typeof name.value !== 'string' || name.value.length === 0)
|
|
182
|
+
return true;
|
|
183
|
+
const id = Object.getOwnPropertyDescriptor(row, 'id');
|
|
184
|
+
if (id !== undefined && (!Object.hasOwn(id, 'value') || typeof id.value !== 'string'))
|
|
185
|
+
return true;
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
export function modelAcceptanceOf(model, catalog = getLiveModelCatalog()) {
|
|
193
|
+
const name = typeof model === 'string' && model.length > 0 ? model : undefined;
|
|
194
|
+
try {
|
|
195
|
+
if (name === undefined)
|
|
196
|
+
return Object.freeze({ verdict: 'unknown', why: 'model_absent' });
|
|
197
|
+
const reserved = isReservedModelWord(name);
|
|
198
|
+
const unreadable = () => Object.freeze({ verdict: 'unknown', why: reserved ? 'reserved_word' : 'catalog_unreadable', model: name });
|
|
199
|
+
if (catalog === null)
|
|
200
|
+
return Object.freeze({ verdict: 'unknown', why: reserved ? 'reserved_word' : 'catalog_absent', model: name });
|
|
201
|
+
if (typeof catalog !== 'object' || Array.isArray(catalog) || !isPlainRecord(catalog))
|
|
202
|
+
return unreadable();
|
|
203
|
+
const rows = catalogRowsOf(catalog);
|
|
204
|
+
if (rows === undefined || rows.length === 0)
|
|
205
|
+
return unreadable();
|
|
206
|
+
const dm = liveDefaultModelOf(catalog);
|
|
207
|
+
let defaultModel = dm.kind === 'listed' ? dm.name : dm.kind === 'not_listed' ? dm.id : undefined;
|
|
208
|
+
if (defaultModel !== undefined) {
|
|
209
|
+
const defaultRow = liveModelRowOf(catalog, defaultModel);
|
|
210
|
+
if (defaultRow !== undefined && ownDataOf(defaultRow, 'enabled') === false)
|
|
211
|
+
defaultModel = undefined;
|
|
212
|
+
}
|
|
213
|
+
const withDefault = defaultModel === undefined ? {} : { defaultModel };
|
|
214
|
+
const reservedReading = () => Object.freeze({ verdict: 'unknown', why: 'reserved_word', model: name, ...withDefault });
|
|
215
|
+
if (reserved)
|
|
216
|
+
return reservedReading();
|
|
217
|
+
const row = liveModelRowOf(catalog, name);
|
|
218
|
+
if (row !== undefined) {
|
|
219
|
+
const normalized = ownDataOf(row, 'name');
|
|
220
|
+
if (typeof normalized !== 'string' || normalized.length === 0)
|
|
221
|
+
return Object.freeze({ verdict: 'unknown', why: 'catalog_unreadable', model: name });
|
|
222
|
+
if (isReservedModelWord(normalized))
|
|
223
|
+
return reservedReading();
|
|
224
|
+
return ownDataOf(row, 'enabled') === false
|
|
225
|
+
? Object.freeze({ verdict: 'refused', why: 'disabled', model: name, ...withDefault })
|
|
226
|
+
: Object.freeze({ verdict: 'accepted', why: 'listed', model: name, ...withDefault });
|
|
227
|
+
}
|
|
228
|
+
if (rows.some(rowIdentityUnreadable))
|
|
229
|
+
return Object.freeze({ verdict: 'unknown', why: 'catalog_unreadable', model: name });
|
|
230
|
+
const dropped = droppedModelEntriesOf(catalog);
|
|
231
|
+
if (droppedDisabledNamed(dropped, name))
|
|
232
|
+
return Object.freeze({ verdict: 'refused', why: 'disabled', model: name, ...withDefault });
|
|
233
|
+
if (catalogIncomplete(catalog, rows, dropped))
|
|
234
|
+
return Object.freeze({ verdict: 'unknown', why: 'catalog_incomplete', model: name, ...withDefault });
|
|
235
|
+
return Object.freeze({ verdict: 'refused', why: 'not_listed', model: name, ...withDefault });
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
return Object.freeze({ verdict: 'unknown', why: 'catalog_unreadable', ...(name !== undefined ? { model: name } : {}) });
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
const NOT_SERVED_NAME_MAX = 120;
|
|
242
|
+
export function modelNotServedNotice(reading, lang) {
|
|
243
|
+
try {
|
|
244
|
+
if (reading === null || typeof reading !== 'object')
|
|
245
|
+
return undefined;
|
|
246
|
+
if (ownDataOf(reading, 'verdict') !== 'refused')
|
|
247
|
+
return undefined;
|
|
248
|
+
const why = ownDataOf(reading, 'why');
|
|
249
|
+
if (why !== 'not_listed' && why !== 'disabled')
|
|
250
|
+
return undefined;
|
|
251
|
+
const model = ownDataOf(reading, 'model');
|
|
252
|
+
const shown = typeof model === 'string' && model.length > 0 ? quoteUntrustedForSentence(model, NOT_SERVED_NAME_MAX) : undefined;
|
|
253
|
+
if (shown === undefined)
|
|
254
|
+
return undefined;
|
|
255
|
+
const dm = ownDataOf(reading, 'defaultModel');
|
|
256
|
+
const fallback = typeof dm === 'string' && dm.length > 0 ? quoteUntrustedForSentence(dm, NOT_SERVED_NAME_MAX) : undefined;
|
|
257
|
+
return fallback === undefined
|
|
258
|
+
? renderMessage(msg('model.notServed.noDefault', { model: shown }), lang)
|
|
259
|
+
: renderMessage(msg('model.notServed.withDefault', { model: shown, default: fallback }), lang);
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
151
265
|
const notReportedDropped = () => Object.freeze({ kind: 'not_reported' });
|
|
152
266
|
const unknownDropped = (why) => Object.freeze({ kind: 'unknown', why });
|
|
153
267
|
function ownDataCopy(o) {
|
|
154
268
|
const out = {};
|
|
155
269
|
for (const k of Object.keys(o)) {
|
|
156
270
|
const d = Object.getOwnPropertyDescriptor(o, k);
|
|
157
|
-
if (d === undefined || !('value'
|
|
271
|
+
if (d === undefined || !(Object.hasOwn(d, 'value')))
|
|
158
272
|
return undefined;
|
|
159
273
|
Object.defineProperty(out, k, { value: d.value, enumerable: true, writable: true, configurable: true });
|
|
160
274
|
}
|
|
@@ -203,7 +317,7 @@ export function droppedModelEntriesOf(catalog = getLiveModelCatalog()) {
|
|
|
203
317
|
if (!Object.hasOwn(catalog, 'droppedEntries'))
|
|
204
318
|
return notReportedDropped();
|
|
205
319
|
const d = Object.getOwnPropertyDescriptor(catalog, 'droppedEntries');
|
|
206
|
-
if (d === undefined || !('value'
|
|
320
|
+
if (d === undefined || !(Object.hasOwn(d, 'value')))
|
|
207
321
|
return unknownDropped('unreadable');
|
|
208
322
|
const raw = d.value;
|
|
209
323
|
if (raw === undefined)
|
|
@@ -217,7 +331,7 @@ export function droppedModelEntriesOf(catalog = getLiveModelCatalog()) {
|
|
|
217
331
|
let unreadable = 0;
|
|
218
332
|
for (let i = 0; i < n; i += 1) {
|
|
219
333
|
const rd = Object.getOwnPropertyDescriptor(raw, String(i));
|
|
220
|
-
const row = rd !== undefined && 'value'
|
|
334
|
+
const row = rd !== undefined && Object.hasOwn(rd, 'value') ? droppedRowOf(rd.value) : undefined;
|
|
221
335
|
if (row === undefined)
|
|
222
336
|
unreadable += 1;
|
|
223
337
|
else
|
|
@@ -237,7 +351,7 @@ export function modelCandidateRejectedOf(catalog = getLiveModelCatalog()) {
|
|
|
237
351
|
if (!Object.hasOwn(catalog, 'candidateRejected'))
|
|
238
352
|
return Object.freeze({ kind: 'not_reported' });
|
|
239
353
|
const d = Object.getOwnPropertyDescriptor(catalog, 'candidateRejected');
|
|
240
|
-
if (d === undefined || !('value'
|
|
354
|
+
if (d === undefined || !(Object.hasOwn(d, 'value')))
|
|
241
355
|
return unreadable;
|
|
242
356
|
const v = d.value;
|
|
243
357
|
if (v === undefined)
|
|
@@ -246,22 +360,22 @@ export function modelCandidateRejectedOf(catalog = getLiveModelCatalog()) {
|
|
|
246
360
|
return unreadable;
|
|
247
361
|
const own = (k) => {
|
|
248
362
|
const od = Object.getOwnPropertyDescriptor(v, k);
|
|
249
|
-
return od !== undefined && 'value'
|
|
363
|
+
return od !== undefined && Object.hasOwn(od, 'value') ? od.value : undefined;
|
|
250
364
|
};
|
|
251
365
|
const rawDomains = own('domains');
|
|
252
366
|
const at = own('at');
|
|
253
367
|
const source = own('source');
|
|
254
368
|
if (!Array.isArray(rawDomains) || typeof at !== 'string' || at.length === 0 || typeof source !== 'string' || source.length === 0)
|
|
255
369
|
return unreadable;
|
|
256
|
-
const n =
|
|
370
|
+
const n = readOwnDataValue(rawDomains, 'length');
|
|
257
371
|
if (typeof n !== 'number' || !Number.isSafeInteger(n) || n <= 0)
|
|
258
372
|
return unreadable;
|
|
259
373
|
const domains = [];
|
|
260
374
|
for (let i = 0; i < n; i += 1) {
|
|
261
375
|
const id = Object.getOwnPropertyDescriptor(rawDomains, String(i));
|
|
262
|
-
if (id === undefined || !('value'
|
|
376
|
+
if (id === undefined || !(Object.hasOwn(id, 'value')) || typeof id.value !== 'string' || id.value.length === 0)
|
|
263
377
|
return unreadable;
|
|
264
|
-
domains
|
|
378
|
+
appendOwnElement(domains, id.value);
|
|
265
379
|
}
|
|
266
380
|
return Object.freeze({ kind: 'rejected', domains: Object.freeze(domains), at, source });
|
|
267
381
|
}
|
|
@@ -303,7 +417,7 @@ function envelopeKey(o, key) {
|
|
|
303
417
|
const d = Object.getOwnPropertyDescriptor(o, key);
|
|
304
418
|
if (d === undefined)
|
|
305
419
|
return { present: false };
|
|
306
|
-
if (!('value'
|
|
420
|
+
if (!(Object.hasOwn(d, 'value')))
|
|
307
421
|
throw new Error('accessor');
|
|
308
422
|
return { present: true, value: d.value };
|
|
309
423
|
}
|
|
@@ -327,7 +441,7 @@ export function readLiveModelCatalog(body) {
|
|
|
327
441
|
let unreadableRows = 0;
|
|
328
442
|
for (let i = 0; i < len; i += 1) {
|
|
329
443
|
const d = Object.getOwnPropertyDescriptor(raw, String(i));
|
|
330
|
-
const row = d !== undefined && 'value'
|
|
444
|
+
const row = d !== undefined && Object.hasOwn(d, 'value') ? liveModelRowCopy(d.value) : undefined;
|
|
331
445
|
if (row === undefined || names.has(row.name)) {
|
|
332
446
|
unreadableRows += 1;
|
|
333
447
|
continue;
|
|
@@ -359,13 +473,13 @@ export function readLiveModelCatalog(body) {
|
|
|
359
473
|
function droppedEntriesCopy(v) {
|
|
360
474
|
if (!Array.isArray(v))
|
|
361
475
|
return frozenJsonCopyOf(v) ?? null;
|
|
362
|
-
const n =
|
|
476
|
+
const n = readOwnDataValue(v, 'length');
|
|
363
477
|
if (typeof n !== 'number' || !Number.isSafeInteger(n) || n < 0)
|
|
364
478
|
return null;
|
|
365
479
|
const out = [];
|
|
366
480
|
for (let i = 0; i < n; i += 1) {
|
|
367
481
|
const d = Object.getOwnPropertyDescriptor(v, String(i));
|
|
368
|
-
out
|
|
482
|
+
appendOwnElement(out, (d !== undefined && Object.hasOwn(d, 'value') ? frozenJsonCopyOf(d.value) : undefined) ?? null);
|
|
369
483
|
}
|
|
370
484
|
return Object.freeze(out);
|
|
371
485
|
}
|
|
@@ -398,7 +512,7 @@ export function atMentionOf(model, catalog = getLiveModelCatalog()) {
|
|
|
398
512
|
const d = Object.getOwnPropertyDescriptor(target.row, 'atMentionable');
|
|
399
513
|
if (d === undefined)
|
|
400
514
|
return Object.freeze({ kind: 'not_governed' });
|
|
401
|
-
if (!('value'
|
|
515
|
+
if (!(Object.hasOwn(d, 'value')))
|
|
402
516
|
return Object.freeze({ kind: 'unknown', why: 'unreadable' });
|
|
403
517
|
if (d.value === undefined)
|
|
404
518
|
return Object.freeze({ kind: 'not_governed' });
|
|
@@ -420,7 +534,7 @@ export function modelCompatOf(model, catalog = getLiveModelCatalog()) {
|
|
|
420
534
|
const d = Object.getOwnPropertyDescriptor(target.row, 'compat');
|
|
421
535
|
if (d === undefined)
|
|
422
536
|
return Object.freeze({ kind: 'not_declared' });
|
|
423
|
-
if (!('value'
|
|
537
|
+
if (!(Object.hasOwn(d, 'value')))
|
|
424
538
|
return Object.freeze({ kind: 'unknown', why: 'unreadable' });
|
|
425
539
|
if (d.value === undefined)
|
|
426
540
|
return Object.freeze({ kind: 'not_declared' });
|
package/dist/mcpPanel.js
CHANGED
|
@@ -78,7 +78,7 @@ export function mcpPanelRefusalOf(view) {
|
|
|
78
78
|
if (view === null || typeof view !== 'object')
|
|
79
79
|
return undefined;
|
|
80
80
|
const d = Object.getOwnPropertyDescriptor(view, 'scenarioRefusal');
|
|
81
|
-
if (d === undefined || !('value'
|
|
81
|
+
if (d === undefined || !Object.hasOwn(d, 'value'))
|
|
82
82
|
return undefined;
|
|
83
83
|
const r = d.value;
|
|
84
84
|
return r !== null && typeof r === 'object' && !Array.isArray(r) ? r : undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { engineWireTargetBaseUrl } from './engineWireTarget.js';
|
|
2
2
|
import { createEngineCapReader, unreadableReadingDetail } from './engineCapReader.js';
|
|
3
3
|
import { msg, renderMessage } from './i18n/translate.js';
|
|
4
4
|
import { ownDataField } from './ownKey.js';
|
|
@@ -21,7 +21,7 @@ const reader = createEngineCapReader({
|
|
|
21
21
|
name: 'mcpProbe',
|
|
22
22
|
project: projectMcpProbeCapability,
|
|
23
23
|
});
|
|
24
|
-
export function observedMcpProbe(baseUrl =
|
|
24
|
+
export function observedMcpProbe(baseUrl = engineWireTargetBaseUrl()) {
|
|
25
25
|
return reader.observed(baseUrl);
|
|
26
26
|
}
|
|
27
27
|
export function mcpProbeAvailable(reading) {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { McpEngineLegConnection } from './mcpEngineLeg.js';
|
|
2
|
+
export interface McpShellConnectionFact {
|
|
3
|
+
readonly status: string;
|
|
4
|
+
readonly serves: 'prompts_resources';
|
|
5
|
+
readonly error?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface McpStatusSupersetKeys {
|
|
8
|
+
readonly _sema_engineLeg?: McpEngineLegConnection;
|
|
9
|
+
readonly _sema_shellConnection?: McpShellConnectionFact;
|
|
10
|
+
}
|
|
11
|
+
export interface McpReconnectSupersetKeys {
|
|
12
|
+
readonly _sema_shellConnection?: McpShellConnectionFact;
|
|
13
|
+
}
|
|
14
|
+
export interface McpStatusSupersetInput {
|
|
15
|
+
readonly engineLeg: McpEngineLegConnection | undefined;
|
|
16
|
+
readonly localClientType: string | undefined;
|
|
17
|
+
readonly localError?: string | undefined;
|
|
18
|
+
}
|
|
19
|
+
export interface McpReconnectSupersetInput {
|
|
20
|
+
readonly localClientType: string | undefined;
|
|
21
|
+
readonly localError?: string | undefined;
|
|
22
|
+
}
|
|
23
|
+
export declare function mcpStatusSupersetKeys(input: McpStatusSupersetInput): McpStatusSupersetKeys;
|
|
24
|
+
export declare function mcpReconnectSupersetKeys(input: McpReconnectSupersetInput): McpReconnectSupersetKeys;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { guardedRead, readOwnDataValue } from './ownKey.js';
|
|
2
|
+
function slot(input, key) {
|
|
3
|
+
return guardedRead(() => readOwnDataValue(input, key));
|
|
4
|
+
}
|
|
5
|
+
function shellConnectionOf(input) {
|
|
6
|
+
const type = slot(input, 'localClientType');
|
|
7
|
+
if (typeof type !== 'string' || type === '')
|
|
8
|
+
return undefined;
|
|
9
|
+
const error = type === 'failed' ? slot(input, 'localError') : undefined;
|
|
10
|
+
return Object.freeze({
|
|
11
|
+
status: type,
|
|
12
|
+
serves: 'prompts_resources',
|
|
13
|
+
...(typeof error === 'string' && error !== '' ? { error } : {}),
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
function frozenCopyOfEngineLeg(leg) {
|
|
17
|
+
if (typeof leg !== 'object' || leg === null)
|
|
18
|
+
return undefined;
|
|
19
|
+
const copy = {};
|
|
20
|
+
let keys;
|
|
21
|
+
try {
|
|
22
|
+
keys = Object.keys(leg);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
for (const k of keys) {
|
|
28
|
+
const v = slot(leg, k);
|
|
29
|
+
if (typeof v === 'string' || typeof v === 'boolean' || (typeof v === 'number' && Number.isFinite(v)))
|
|
30
|
+
Object.defineProperty(copy, k, { value: v, enumerable: true, writable: true, configurable: true });
|
|
31
|
+
}
|
|
32
|
+
return typeof copy['state'] === 'string' ? Object.freeze(copy) : undefined;
|
|
33
|
+
}
|
|
34
|
+
export function mcpStatusSupersetKeys(input) {
|
|
35
|
+
const engineLeg = frozenCopyOfEngineLeg(slot(input, 'engineLeg'));
|
|
36
|
+
const shell = shellConnectionOf(input);
|
|
37
|
+
return Object.freeze({
|
|
38
|
+
...(engineLeg !== undefined ? { _sema_engineLeg: engineLeg } : {}),
|
|
39
|
+
...(shell !== undefined ? { _sema_shellConnection: shell } : {}),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export function mcpReconnectSupersetKeys(input) {
|
|
43
|
+
const shell = shellConnectionOf(input);
|
|
44
|
+
return Object.freeze(shell !== undefined ? { _sema_shellConnection: shell } : {});
|
|
45
|
+
}
|
package/dist/mcpToolToggles.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { readOwnDataValue } from './ownKey.js';
|
|
1
2
|
import { checkMcpToolToggleKey } from './seatContract.js';
|
|
2
3
|
function keyOf(key, index) {
|
|
3
4
|
const refuse = (why) => new TypeError(`mcpToolTogglesToExcludeTools: keys[${index}] 不是逐工具开关键 { server, tool }(${why})—— 值不回显。` +
|
|
@@ -7,7 +8,7 @@ function keyOf(key, index) {
|
|
|
7
8
|
throw refuse(`${shape.reason}${shape.field !== undefined ? ` @ ${shape.field}` : ''}`);
|
|
8
9
|
let snap;
|
|
9
10
|
try {
|
|
10
|
-
snap = { server:
|
|
11
|
+
snap = { server: readOwnDataValue(key, 'server'), tool: readOwnDataValue(key, 'tool') };
|
|
11
12
|
}
|
|
12
13
|
catch {
|
|
13
14
|
throw refuse('读不出');
|
package/dist/mcpWireCaps.d.ts
CHANGED
|
@@ -17,6 +17,16 @@ export interface McpConfigLike {
|
|
|
17
17
|
toolAxes?: unknown;
|
|
18
18
|
startupTimeoutMs?: number;
|
|
19
19
|
}
|
|
20
|
+
export type McpTransportEntryLike = Pick<McpConfigLike, 'type' | 'command' | 'args' | 'env' | 'url' | 'headers' | 'principalHeader' | 'assertionHeader'>;
|
|
21
|
+
export type McpTransportVerdict = {
|
|
22
|
+
readonly kind: 'ok';
|
|
23
|
+
readonly transport: McpServerSpec['transport'];
|
|
24
|
+
readonly lost: readonly McpEntryKeyIssue[];
|
|
25
|
+
} | {
|
|
26
|
+
readonly kind: 'bad';
|
|
27
|
+
readonly key: string;
|
|
28
|
+
readonly detail: string;
|
|
29
|
+
};
|
|
20
30
|
export type McpHttpIdentityHeaders = {
|
|
21
31
|
readonly kind: 'ok';
|
|
22
32
|
readonly principalHeader?: string;
|
|
@@ -26,6 +36,7 @@ export type McpHttpIdentityHeaders = {
|
|
|
26
36
|
};
|
|
27
37
|
export declare function readMcpHttpIdentityHeaders(transport: object): McpHttpIdentityHeaders;
|
|
28
38
|
export declare function mcpConfigToSpec(name: string, c: McpConfigLike): McpServerSpec | null;
|
|
39
|
+
export declare function mcpTransportVerdict(entry: McpTransportEntryLike | null | undefined): McpTransportVerdict;
|
|
29
40
|
export declare function mcpConfigsToSpecs(servers: Record<string, McpConfigLike> | undefined): McpServerSpec[];
|
|
30
41
|
export type McpToolAxesVerdict = {
|
|
31
42
|
readonly kind: 'ok';
|
|
@@ -37,13 +48,40 @@ export type McpToolAxesVerdict = {
|
|
|
37
48
|
readonly kind: 'unavailable';
|
|
38
49
|
};
|
|
39
50
|
export declare function mcpToolAxesVerdict(declared: {} | null | undefined): McpToolAxesVerdict;
|
|
51
|
+
export type McpToolFacesVerdict = {
|
|
52
|
+
readonly kind: 'ok';
|
|
53
|
+
readonly toolFaces?: Readonly<Record<string, object>>;
|
|
54
|
+
} | {
|
|
55
|
+
readonly kind: 'bad';
|
|
56
|
+
readonly problem: string;
|
|
57
|
+
} | {
|
|
58
|
+
readonly kind: 'unavailable';
|
|
59
|
+
};
|
|
60
|
+
export declare function mcpToolFacesVerdict(declared: {} | null | undefined): McpToolFacesVerdict;
|
|
40
61
|
export declare function mcpElicitationVerdict(declared: {} | null | undefined): {
|
|
41
62
|
readonly kind: 'ok';
|
|
42
63
|
readonly elicitation?: boolean;
|
|
43
64
|
} | {
|
|
44
65
|
readonly kind: 'bad';
|
|
45
66
|
};
|
|
46
|
-
export type
|
|
67
|
+
export type McpAllowToolsVerdict = {
|
|
68
|
+
readonly kind: 'ok';
|
|
69
|
+
readonly allowTools?: string[];
|
|
70
|
+
} | {
|
|
71
|
+
readonly kind: 'bad';
|
|
72
|
+
readonly path: string;
|
|
73
|
+
readonly problem: string;
|
|
74
|
+
};
|
|
75
|
+
export declare function mcpAllowToolsVerdict(read: () => {} | null | undefined, keyPrefix?: string): McpAllowToolsVerdict;
|
|
76
|
+
export type McpConfigDropReason = 'name_blank' | 'name_edge_whitespace' | 'name_collides_after_trim' | 'name_too_long' | 'transport_invalid' | 'identity_headers_both_set' | 'tool_axes_invalid' | 'tool_faces_invalid' | 'elicitation_invalid' | 'allow_tools_invalid' | 'entry_not_object' | 'entry_unreadable';
|
|
77
|
+
export type McpServerNameUnusableReason = 'name_blank' | 'name_edge_whitespace' | 'name_collides_after_trim' | 'name_too_long';
|
|
78
|
+
export type McpServerNameVerdict = {
|
|
79
|
+
readonly usable: true;
|
|
80
|
+
} | {
|
|
81
|
+
readonly usable: false;
|
|
82
|
+
readonly reason: McpServerNameUnusableReason;
|
|
83
|
+
};
|
|
84
|
+
export declare function mcpServerNameVerdict(name: string | null | undefined, siblings?: Iterable<string>): McpServerNameVerdict;
|
|
47
85
|
export interface McpConfigDropped {
|
|
48
86
|
readonly name: string;
|
|
49
87
|
readonly reason: McpConfigDropReason;
|