chainlesschain 0.166.101 → 0.166.102
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/package.json +2 -2
- package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
- package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-BjBS_29I.js → AIOps-CyHIMEd8.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CUnnQUaj.js → ActionButton-vuNxDpHm.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BqYZxgnY.js → Analytics-D0quEM0q.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-m8B886ka.js → AppLayout-xRSVpbCs.js} +3 -3
- package/src/assets/web-panel/assets/{Artifacts-JEOxU3Ug.js → Artifacts-ktfVAZBC.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-DAXS5c9J.js → Audit-UJW6maH4.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-e3a9XHw3.js → BackgroundAgents-BYrfdCoT.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-D3Qmp68h.js → Backup-IBgsJ7BK.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-C7CXyiUl.js → BaseInput-BmP8_zxy.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-2AHlAGi8.js → Chat-urkw8_BF.js} +6 -6
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-D3KsyCUV.js → ChatBubbleRenderer-Cw44zZbh.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-YfBuQlBH.js → Checkbox-CYboo-__.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-DCCQDfTL.js → Codegen-DaqR_Ay8.js} +1 -1
- package/src/assets/web-panel/assets/{Col-03i2WfrV.js → Col-04BSIj_z.js} +1 -1
- package/src/assets/web-panel/assets/{Community-CJQIpng6.js → Community-DxFk7Trv.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-CCtcQ2pq.js → Compact-mjgWlMCB.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-Vxl7ZszJ.js → Compliance-CC5ee7QV.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-DN-BwA8I.js → Cowork-BK4BhHZd.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-Dc2Q46X7.js → Cron-CP6jAxq0.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CQCblsl-.js → Crosschain-DJPaViZS.js} +1 -1
- package/src/assets/web-panel/assets/{DID-YYvqUR8C.js → DID-BTLxkuOj.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-Cafy3DZT.js → Dashboard-Djkiqh3d.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BOyYpIpv.js → Dropdown-t_eUhqom.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-B7NYjc1j.js → EmailListRenderer-7w6USx_J.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-C5wfxztf.js → EvolutionSettings-mU5IHEk5.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-aA7KnDGK.js → FamilyGuardDashboard-BCh-VBBC.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-DlgXUu1L.js → Federation-Be_VpjI2.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-B5YsrLDg.js → FormItemContext-D_lzQ7PI.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-DaWojPFw.js → GenericCardRenderer-LYu3KapV.js} +1 -1
- package/src/assets/web-panel/assets/{Git-dkhh6Fx2.js → Git-BBeF-PP4.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-Cz6vmkjc.js → Governance-CoF8Kzg7.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DWt0hbh8.js → Inference-C4DLMnXS.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-BZJ0Z-nL.js → KnowledgeGraph-B2mlNewk.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-BaBBmL1A.js → Logs-DMZ_44Ya.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-Ck7Iv_9e.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-ct8sgQ0s.js → Marketplace-BqDzTew_.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CXKCRGYQ.js → McpTools-BbwSbDN9.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-O7ZwlS6a.js → Memory-DAaTWgrm.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-By12C-eC.js → MobileBridge-BjbTGxoR.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-Ba-EVdex.js → MobileProjects-DMODOBr-.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-g-932zV2.js → Mtc-DT9N2rCs.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-BW8hB0ly.js → MtcAudit-DagMfUVv.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-zspLaMbT.js → Multisig-C1BKP6nM.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-dJeUPDoq.js → NLProgramming-B5LFh72i.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-C4msiRQL.js → Notes-Q77V3ltW.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-MOCHM-qg.js → NotificationSettings-HxdpNIBs.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-Dc0DpvBH.js +1 -0
- package/src/assets/web-panel/assets/{Organization-DOZurBfk.js → Organization-QL3NZ7uW.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-qOT9BhUp.js → Overflow-B_gqOKho.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BMoy7Eo4.js → P2P-BBJubU8Z.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-ByyV1q-D.js → PdhVaultBrowser-CFnGd-2E.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-6Qyro4ye.js → Permissions-BKkznIUM.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-DR3DRNSX.js → PersonalDataHub-DYK7ZAcd.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-Cr6TTdud.js → Pipeline-CoeKpjoN.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-B70otG0l.js → Privacy-Diw4G-92.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BHCqxoSk.js → ProjectInit-CHBOFkma.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-B80GZpZk.js → ProjectSettings-BJIsgdOf.js} +2 -2
- package/src/assets/web-panel/assets/Projects-GJjItXIk.js +1 -0
- package/src/assets/web-panel/assets/{Providers-dsVTimHa.js → Providers-o8QCimor.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DRJ8YepZ.js → QrScannerModal-z2W-zvhW.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-BSXdEjIB.js → QuickAsk-_yubhsna.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-CQLJGyKC.js → Recommend-CucgJwih.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-BF9WUFVZ.js → RemoteSession-EzfIIRg1.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-Cy9o5tvW.js → Reputation-_shttE67.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BP346_3b.js → Row-DQA_S8-9.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BKulxXf3.js → RssFeed-BOqWawXT.js} +3 -3
- package/src/assets/web-panel/assets/{Search-EemQj2Dv.js → Search-Dx1v2xOq.js} +1 -1
- package/src/assets/web-panel/assets/{Security-DcWPAwwk.js → Security-Bt4HHsT4.js} +3 -3
- package/src/assets/web-panel/assets/{Services-Bltqciay.js → Services-sruHiQ-r.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-BwRyOGY8.js → Skeleton-CiBxvmOJ.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-D98qlvpJ.js → Skills-De9qKODU.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-BUTtBMY0.js → Sla-B_6yn8Wp.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-C7kcY_98.js → SpeechSettings-C2CafExS.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-Bsk6lKvT.js → SyncSettings-Dhh3Qmb0.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DvSrtz0P.js → Tasks-Mvo5mTWm.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-BUM6LwPs.js → Templates-D7WVTQQy.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-D9TkOm7z.js → Tenant-7ur9Yfxd.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CP8ZVErN.js → Terminal-BgzrOA6k.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-V3SoKZ1T.js → TimelineRenderer-Dco20pT1.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-CCRlUTOA.js → Tokens-hN6qBPag.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CznUcPme.js → Trigger-C4f_twAM.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-D1GIk_NF.js → Trust-Wf1SMypp.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-DHtvtyC-.js → UkeySign-DUXSyg3N.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CVxdaJIq.js → VideoEditing-BvqsJaL0.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-D221OjyE.js → Wallet-CgAbcjKl.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-Cw0-ESsq.js → WebAuthn-DaLT0W3s.js} +2 -2
- package/src/assets/web-panel/assets/{WorkflowEditor-ZYScrBx3.js → WorkflowEditor-CQqAXoaS.js} +1 -1
- package/src/assets/web-panel/assets/{chat-BU0e1obR.js → chat-BhlohFTB.js} +1 -1
- package/src/assets/web-panel/assets/{colors-gzYweuha.js → colors-D7HqXIL8.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-ChAXal_k.js → compact-item-Bqk4FCLY.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-of3FolD7.js → createContext-CEmWrWf0.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-YPX_TU7w.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-4PsK_Kx8.js → hasIn-CDY0pFi2.js} +1 -1
- package/src/assets/web-panel/assets/{index-1dzYRBbg.js → index-1HBam9t1.js} +1 -1
- package/src/assets/web-panel/assets/{index-CHv_63Cp.js → index-6f6n0KFR.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjRAIRX7.js → index-B8L3_-sG.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cn1clrxx.js → index-BHGOdvOQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-cFkMIx1x.js → index-BNrvBWDS.js} +1 -1
- package/src/assets/web-panel/assets/{index-BfI4dXbi.js → index-BPmRkxeX.js} +1 -1
- package/src/assets/web-panel/assets/{index-CO2owKe0.js → index-BXRooi-O.js} +1 -1
- package/src/assets/web-panel/assets/{index-DEzjUgkl.js → index-BiLu-ImR.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZ0oKtBg.js → index-BuKGuH_y.js} +1 -1
- package/src/assets/web-panel/assets/{index-D1PGrfHE.js → index-BxXFRLTZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-B5L7zddz.js → index-BxYO6nde.js} +1 -1
- package/src/assets/web-panel/assets/{index-CyDQNprx.js → index-C02yDu4f.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ef5YkVAn.js → index-C3opQg47.js} +1 -1
- package/src/assets/web-panel/assets/{index-CGFL59q4.js → index-C9mvnSii.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_5LTPMH.js → index-CVrwozwH.js} +1 -1
- package/src/assets/web-panel/assets/{index-DJVrzXtk.js → index-CYcjOnDX.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bftq5rJR.js → index-Cf1ha8l0.js} +1 -1
- package/src/assets/web-panel/assets/{index-DEXBckNR.js → index-Chxt0t-A.js} +1 -1
- package/src/assets/web-panel/assets/{index-By-pper5.js → index-CkjgSHVz.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dy0ojH6G.js → index-CkqBoCiu.js} +3 -3
- package/src/assets/web-panel/assets/{index-Cx4Z6nUl.js → index-CqK0J4Sj.js} +1 -1
- package/src/assets/web-panel/assets/{index-Djfgsjfy.js → index-CrsM-oiD.js} +1 -1
- package/src/assets/web-panel/assets/{index-BdxRVNPY.js → index-Cur88hoN.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_9k680X.js → index-D0nfNmbq.js} +1 -1
- package/src/assets/web-panel/assets/index-D53szVZQ.js +1 -0
- package/src/assets/web-panel/assets/{index-DsoV9rzn.js → index-DEzL7s7P.js} +1 -1
- package/src/assets/web-panel/assets/{index-wo0De0iG.js → index-DGKRAO61.js} +1 -1
- package/src/assets/web-panel/assets/{index-E8oDMSAo.js → index-DPBoWNwq.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCLsbul3.js → index-DRcDWMwP.js} +1 -1
- package/src/assets/web-panel/assets/{index-BOeX7BzS.js → index-DmKdCWq1.js} +1 -1
- package/src/assets/web-panel/assets/{index-CxzBcXOa.js → index-DpI1LqJX.js} +1 -1
- package/src/assets/web-panel/assets/{index-DEB5fQqG.js → index-DuMt3ewl.js} +1 -1
- package/src/assets/web-panel/assets/{index-CeEE_SGZ.js → index-Dwob5XoD.js} +1 -1
- package/src/assets/web-panel/assets/index-Ub2nJbV2.js +1 -0
- package/src/assets/web-panel/assets/{index-Wr91cnWr.js → index-XErJQ1yF.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_ialOHx.js → index-aBHlgMrq.js} +1 -1
- package/src/assets/web-panel/assets/{index-D-Zss5KL.js → index-e9oCy7_4.js} +1 -1
- package/src/assets/web-panel/assets/{index-DDYj14Q4.js → index-lBAbMOzg.js} +1 -1
- package/src/assets/web-panel/assets/{index-yMf7zmWv.js → index-o_lc3eww.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-D0Bx6pgr.js → initDefaultProps-CIeEUxIN.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BnLuJqJ5.js → motion-IPIj1ZtP.js} +1 -1
- package/src/assets/web-panel/assets/{move-Bxpq9xgR.js → move-BfSeXZ-f.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BdmrNhOs.js → mtc-parser-DX03-Xp4.js} +1 -1
- package/src/assets/web-panel/assets/{omit-tjJD34BZ.js → omit-z9EannfX.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-CMFzLt7b.js → pickAttrs-DXKmRkqZ.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BZf6O3cd.js → placementArrow-k2HV7cIU.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-DFDLazsV.js → responsiveObserve-bX7CsyWy.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CMbTvp4Y.js → slide-NskjQLbJ.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-FOan8MI7.js → statusUtils-B3IoG-Er.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-DTABspd4.js → styleChecker-DHv_UilX.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-CNHXWBpY.js → useFlexGapSupport-DEqGB5Ng.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-5K-c_RoL.js → useFs-Bl9CbrqZ.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-Di0hL4G-.js → usePersonalDataHub-O-Ukv93M.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DTyDv4ja.js → vnode-hGCHTaZt.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-ontRt8ft.js → zoom-BWhIVeKQ.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +1 -1
- package/src/commands/agent.js +64 -40
- package/src/data/changelog.json +13 -0
- package/src/lib/config-schema.js +18 -5
- package/src/lib/context-memory-kernel/memory-query-index.js +5 -2
- package/src/lib/context-memory-kernel/runtime.js +4 -0
- package/src/lib/context-memory-kernel/segmented-memory-port.js +28 -3
- package/src/lib/context-source-ledger.js +52 -9
- package/src/lib/goal-condition-engine.js +25 -2
- package/src/lib/llm-config-defaults.js +10 -4
- package/src/lib/llm-pricing.js +16 -4
- package/src/lib/model-capabilities.js +26 -0
- package/src/lib/model-catalog-review.js +18 -1
- package/src/lib/model-context-catalog.js +41 -1
- package/src/lib/openai-responses.js +8 -0
- package/src/lib/skill-retrieval-router.js +1 -0
- package/src/lib/usage-pricing-context.js +33 -2
- package/src/repl/agent-repl.js +247 -153
- package/src/runtime/agent-core.js +198 -87
- package/src/runtime/coding-agent-contract-shared.cjs +14 -1
- package/src/runtime/headless-runner.js +1 -0
- package/src/runtime/headless-stream.js +1 -0
- package/src/runtime/mcp-tool-search.js +0 -0
- package/src/runtime/provider-stream-state.js +14 -1
- package/src/assets/web-panel/assets/MarkdownRenderer-C1yByobo.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-CX0T66NM.js +0 -1
- package/src/assets/web-panel/assets/Projects-cq-b9-fQ.js +0 -1
- package/src/assets/web-panel/assets/devWarning-Pa13TVrO.js +0 -1
- package/src/assets/web-panel/assets/index-BhQg-v6V.js +0 -1
- package/src/assets/web-panel/assets/index-DUD5o-vW.js +0 -1
|
@@ -263,6 +263,10 @@ export function resolveModelCapabilityProfile({
|
|
|
263
263
|
const profile = {
|
|
264
264
|
schema: PROFILE_SCHEMA,
|
|
265
265
|
catalogVersion: MODEL_CAPABILITY_CATALOG_VERSION,
|
|
266
|
+
reviewedAt: documented ? documented.reviewedAt || "2026-10-05" : null,
|
|
267
|
+
supportedServiceTiers: documented?.serviceTiers
|
|
268
|
+
? [...documented.serviceTiers]
|
|
269
|
+
: ["standard"],
|
|
266
270
|
profileId: `model-capability-v1:${identityDigest.slice(7, 39)}`,
|
|
267
271
|
provider: selectedProvider || "unknown",
|
|
268
272
|
model: selectedModel,
|
|
@@ -288,3 +292,25 @@ export function resolveModelCapabilityProfile({
|
|
|
288
292
|
profile.digest = canonicalDigest(profile, PROFILE_SCHEMA);
|
|
289
293
|
return deepFreeze(profile);
|
|
290
294
|
}
|
|
295
|
+
|
|
296
|
+
/** Resolve a requested live tier without certifying account availability. */
|
|
297
|
+
export function resolveModelServiceTier(profile, serviceTier) {
|
|
298
|
+
const requested = serviceTier ?? "standard";
|
|
299
|
+
if (
|
|
300
|
+
typeof requested !== "string" ||
|
|
301
|
+
!profile?.supportedServiceTiers?.includes(requested)
|
|
302
|
+
) {
|
|
303
|
+
throw Object.assign(
|
|
304
|
+
new RangeError(
|
|
305
|
+
`Unsupported service tier ${String(requested)} for ${profile?.provider || "unknown"}/${profile?.model || "unknown"}`,
|
|
306
|
+
),
|
|
307
|
+
{ code: "CC_MODEL_SERVICE_TIER_UNSUPPORTED" },
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
return Object.freeze({
|
|
311
|
+
requestedServiceTier: requested,
|
|
312
|
+
requestServiceTier: requested === "standard" ? null : requested,
|
|
313
|
+
effectiveServiceTier: null,
|
|
314
|
+
accountVerified: false,
|
|
315
|
+
});
|
|
316
|
+
}
|
|
@@ -65,8 +65,12 @@ export function reviewModelCatalog(review, snapshots = {}) {
|
|
|
65
65
|
"runtimeProtocol",
|
|
66
66
|
"contextWindowTokens",
|
|
67
67
|
"advertisedMaxOutputTokens",
|
|
68
|
+
"reviewedAt",
|
|
68
69
|
]) {
|
|
69
|
-
if (
|
|
70
|
+
if (
|
|
71
|
+
Object.hasOwn(expected, field) &&
|
|
72
|
+
!isDeepStrictEqual(actual[field], expected[field])
|
|
73
|
+
)
|
|
70
74
|
mismatches.push({
|
|
71
75
|
model: expected.model,
|
|
72
76
|
field,
|
|
@@ -80,6 +84,19 @@ export function reviewModelCatalog(review, snapshots = {}) {
|
|
|
80
84
|
field: "official-source",
|
|
81
85
|
actual: null,
|
|
82
86
|
});
|
|
87
|
+
if (
|
|
88
|
+
Object.hasOwn(expected, "supportedServiceTiers") &&
|
|
89
|
+
!isDeepStrictEqual(
|
|
90
|
+
actual.supportedServiceTiers,
|
|
91
|
+
expected.supportedServiceTiers,
|
|
92
|
+
)
|
|
93
|
+
)
|
|
94
|
+
mismatches.push({
|
|
95
|
+
model: expected.model,
|
|
96
|
+
field: "supportedServiceTiers",
|
|
97
|
+
expected: expected.supportedServiceTiers,
|
|
98
|
+
actual: actual.supportedServiceTiers,
|
|
99
|
+
});
|
|
83
100
|
for (const field of ["in", "out"]) {
|
|
84
101
|
if (rate?.[field] !== expected.pricing[field])
|
|
85
102
|
mismatches.push({
|
|
@@ -45,7 +45,7 @@ export const CONTEXT_WINDOWS = Object.freeze({
|
|
|
45
45
|
}),
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
export const MODEL_CAPABILITY_CATALOG_VERSION = "2026-10-
|
|
48
|
+
export const MODEL_CAPABILITY_CATALOG_VERSION = "2026-10-15";
|
|
49
49
|
|
|
50
50
|
// Explicit ownership prevents a model name served by an unrelated provider
|
|
51
51
|
// from silently inheriting another provider's catalog window.
|
|
@@ -86,6 +86,26 @@ export const LEGACY_MODEL_PROVIDERS = Object.freeze({
|
|
|
86
86
|
// named models, not endpoint access, account entitlement, or a live CLI run.
|
|
87
87
|
export const DOCUMENTED_OPENAI_MODELS = Object.freeze({
|
|
88
88
|
"gpt-6.1-sol": Object.freeze({
|
|
89
|
+
reviewedAt: "2026-10-15",
|
|
90
|
+
serviceTiers: Object.freeze([
|
|
91
|
+
"standard",
|
|
92
|
+
"default",
|
|
93
|
+
"auto",
|
|
94
|
+
"fast",
|
|
95
|
+
"priority",
|
|
96
|
+
"flex",
|
|
97
|
+
"ultrafast",
|
|
98
|
+
]),
|
|
99
|
+
serviceMultipliers: Object.freeze({
|
|
100
|
+
standard: 1,
|
|
101
|
+
default: 1,
|
|
102
|
+
auto: 1,
|
|
103
|
+
batch: 0.5,
|
|
104
|
+
flex: 0.5,
|
|
105
|
+
fast: 2,
|
|
106
|
+
priority: 2,
|
|
107
|
+
ultrafast: 6,
|
|
108
|
+
}),
|
|
89
109
|
contextWindowTokens: 1050000,
|
|
90
110
|
advertisedMaxOutputTokens: 128000,
|
|
91
111
|
requiresResponsesForTools: true,
|
|
@@ -106,6 +126,26 @@ export const DOCUMENTED_OPENAI_MODELS = Object.freeze({
|
|
|
106
126
|
]),
|
|
107
127
|
}),
|
|
108
128
|
"gpt-6-astra": Object.freeze({
|
|
129
|
+
reviewedAt: "2026-10-15",
|
|
130
|
+
serviceTiers: Object.freeze([
|
|
131
|
+
"standard",
|
|
132
|
+
"default",
|
|
133
|
+
"auto",
|
|
134
|
+
"fast",
|
|
135
|
+
"priority",
|
|
136
|
+
"flex",
|
|
137
|
+
"ultrafast",
|
|
138
|
+
]),
|
|
139
|
+
serviceMultipliers: Object.freeze({
|
|
140
|
+
standard: 1,
|
|
141
|
+
default: 1,
|
|
142
|
+
auto: 1,
|
|
143
|
+
batch: 0.5,
|
|
144
|
+
flex: 0.5,
|
|
145
|
+
fast: 2,
|
|
146
|
+
priority: 2,
|
|
147
|
+
ultrafast: 6,
|
|
148
|
+
}),
|
|
109
149
|
contextWindowTokens: 1050000,
|
|
110
150
|
advertisedMaxOutputTokens: 128000,
|
|
111
151
|
requiresResponsesForTools: true,
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { resolveModelServiceTier } from "./model-capabilities.js";
|
|
2
|
+
|
|
1
3
|
const RESPONSES_FAILURE_CODE = "CC_OPENAI_RESPONSES_FAILED";
|
|
2
4
|
const MAX_REASONING_ITEMS = 16;
|
|
3
5
|
const MAX_REASONING_SUMMARY_CHARS = 8_192;
|
|
@@ -177,7 +179,12 @@ export function createOpenAIResponsesBody({
|
|
|
177
179
|
reasoning = null,
|
|
178
180
|
stream = false,
|
|
179
181
|
modelProfile = null,
|
|
182
|
+
serviceTier = null,
|
|
180
183
|
}) {
|
|
184
|
+
const tier =
|
|
185
|
+
serviceTier == null
|
|
186
|
+
? null
|
|
187
|
+
: resolveModelServiceTier(modelProfile, serviceTier).requestServiceTier;
|
|
181
188
|
if (
|
|
182
189
|
modelProfile?.advertisedMaxOutputTokens != null &&
|
|
183
190
|
maxOutputTokens > modelProfile.advertisedMaxOutputTokens
|
|
@@ -195,6 +202,7 @@ export function createOpenAIResponsesBody({
|
|
|
195
202
|
...(maxOutputTokens ? { max_output_tokens: maxOutputTokens } : {}),
|
|
196
203
|
...(reasoning ? { reasoning } : {}),
|
|
197
204
|
...(stream ? { stream: true } : {}),
|
|
205
|
+
...(tier ? { service_tier: tier } : {}),
|
|
198
206
|
};
|
|
199
207
|
}
|
|
200
208
|
|
|
@@ -248,6 +248,7 @@ export function routeSkillDescriptors({
|
|
|
248
248
|
schema: SKILL_RETRIEVAL_RESULT_SCHEMA,
|
|
249
249
|
query: query.trim(),
|
|
250
250
|
selected: returned.length > 0 && !topConflict ? returned[0] : null,
|
|
251
|
+
matchedCount: candidates.length,
|
|
251
252
|
candidates: Object.freeze(returned.map(Object.freeze)),
|
|
252
253
|
conflicts: Object.freeze(conflicts.map(Object.freeze)),
|
|
253
254
|
rejected: Object.freeze(rejected.map(Object.freeze)),
|
|
@@ -4,6 +4,38 @@ import {
|
|
|
4
4
|
GPT6_PRICING_TERMS,
|
|
5
5
|
} from "./model-context-catalog.js";
|
|
6
6
|
|
|
7
|
+
const KNOWN_SERVICE_TIERS = new Set([
|
|
8
|
+
...Object.keys(GPT6_PRICING_TERMS.serviceMultipliers),
|
|
9
|
+
...Object.values(DOCUMENTED_OPENAI_MODELS).flatMap((model) =>
|
|
10
|
+
Object.keys(model.serviceMultipliers || {}),
|
|
11
|
+
),
|
|
12
|
+
]);
|
|
13
|
+
|
|
14
|
+
/** Preserve response-envelope pricing labels, rejecting conflicting evidence. */
|
|
15
|
+
export function projectEnvelopePricingContext(usage = {}, envelope = {}) {
|
|
16
|
+
const input = { ...usage };
|
|
17
|
+
for (const key of ["service_tier", "regional_processing", "inference_geo"]) {
|
|
18
|
+
if (!Object.hasOwn(envelope, key)) continue;
|
|
19
|
+
if (Object.hasOwn(input, key) && input[key] !== envelope[key])
|
|
20
|
+
input.pricingContextInvalid = true;
|
|
21
|
+
input[key] = envelope[key];
|
|
22
|
+
}
|
|
23
|
+
return projectUsagePricingContext(input);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Requested paid tiers require actual response evidence for settlement. */
|
|
27
|
+
export function preserveRequestedServiceTierEvidence(usage, requested) {
|
|
28
|
+
if (
|
|
29
|
+
usage &&
|
|
30
|
+
requested != null &&
|
|
31
|
+
requested !== "standard" &&
|
|
32
|
+
(!usage.service_tier || usage.service_tier === "auto")
|
|
33
|
+
) {
|
|
34
|
+
return { ...usage, pricingContextInvalid: true };
|
|
35
|
+
}
|
|
36
|
+
return usage;
|
|
37
|
+
}
|
|
38
|
+
|
|
7
39
|
/** Keep TTL evidence distinct from the aggregate cache-write count. */
|
|
8
40
|
export function projectCacheCreationUsage(usage = {}) {
|
|
9
41
|
if (usage.cacheCreationInvalid === true)
|
|
@@ -62,8 +94,7 @@ export function projectUsagePricingContext(usage = {}) {
|
|
|
62
94
|
const value = Object.hasOwn(usage, key) ? usage[key] : usage[alias];
|
|
63
95
|
if (key === "service_tier") {
|
|
64
96
|
projected[key] =
|
|
65
|
-
typeof value === "string" &&
|
|
66
|
-
Object.hasOwn(GPT6_PRICING_TERMS.serviceMultipliers, value)
|
|
97
|
+
typeof value === "string" && KNOWN_SERVICE_TIERS.has(value)
|
|
67
98
|
? value
|
|
68
99
|
: "unknown";
|
|
69
100
|
} else {
|