@codeworksh/aikit 0.8.0 → 0.9.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/README.md +10 -1
- package/cli.mjs +75 -83
- package/cli.mjs.map +1 -1
- package/{codex-MtP1574D.mjs → codex-CLDBTrFm.mjs} +132 -134
- package/codex-CLDBTrFm.mjs.map +1 -0
- package/copilot-CcD3g6H8.mjs +425 -0
- package/copilot-CcD3g6H8.mjs.map +1 -0
- package/copilot-headers-DceqXlpj.mjs +104 -0
- package/copilot-headers-DceqXlpj.mjs.map +1 -0
- package/github-copilot-BJIrxOzT.mjs +3 -0
- package/github-copilot-SIUCJz1G.mjs +126 -0
- package/github-copilot-SIUCJz1G.mjs.map +1 -0
- package/index.d.mts +980 -932
- package/index.mjs +63 -11
- package/index.mjs.map +1 -1
- package/interactive-eoNnscGB.mjs +57 -0
- package/interactive-eoNnscGB.mjs.map +1 -0
- package/{model-CpX11Oob.d.mts → model-CrVLp622.d.mts} +159 -130
- package/{model-CBnredXj.mjs → model-gCDbmGqT.mjs} +31 -2
- package/model-gCDbmGqT.mjs.map +1 -0
- package/{modelgen-BjSsusLQ.mjs → modelgen-DvorXOjJ.mjs} +148 -29
- package/modelgen-DvorXOjJ.mjs.map +1 -0
- package/modelgen.d.mts +2 -3
- package/modelgen.mjs +1 -1
- package/oauth/github/copilot.d.mts +169 -0
- package/oauth/github/copilot.mjs +2 -0
- package/oauth/interactive.d.mts +21 -0
- package/oauth/interactive.mjs +2 -0
- package/oauth/openai/codex.d.mts +46 -28
- package/oauth/openai/codex.mjs +2 -2
- package/oauth/summary.d.mts +67 -0
- package/oauth/summary.mjs +2 -0
- package/{openai-codex-t4B7g-gv.mjs → openai-codex-Bqzti6Mc.mjs} +3 -3
- package/{openai-codex-t4B7g-gv.mjs.map → openai-codex-Bqzti6Mc.mjs.map} +1 -1
- package/openai-codex-DA1Q7mLN.mjs +2 -0
- package/package.json +34 -22
- package/{registry-DYdYTwFt.mjs → registry-ZxwIW0gX.mjs} +5 -3
- package/registry-ZxwIW0gX.mjs.map +1 -0
- package/storage-v6qjTQ0v.mjs +178 -0
- package/storage-v6qjTQ0v.mjs.map +1 -0
- package/summary-C_QyCVWa.mjs +68 -0
- package/summary-C_QyCVWa.mjs.map +1 -0
- package/codex-MtP1574D.mjs.map +0 -1
- package/model-CBnredXj.mjs.map +0 -1
- package/modelgen-BjSsusLQ.mjs.map +0 -1
- package/openai-codex-BRH4Qa7l.mjs +0 -2
- package/registry-DYdYTwFt.mjs.map +0 -1
package/index.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { C as ToolCallSchema, D as transformMessages, E as resolveJsonSchemaConstraint, S as AssistantMessageSchema, T as message_exports, g as shortHash, n as createOpenAICodex, r as openaiCodex, v as openAICodexTools, w as createAssistantMessage$1, x as resolveOpenAICodexToolConstraint } from "./openai-codex-
|
|
2
|
+
import { C as NamedError, _ as optionsKey, a as KnownProviderEnumSchema, c as calculateCost, d as getModels, f as getProviders, h as modelsAreEqual, i as KnownProviderEnum, l as clampThinkingLevel, m as model_exports, n as APIMethodEnumSchema, r as ActiveThinkingLevel, s as ThinkingBudgets$1, t as APIMethodEnum, u as getModel, v as registry, y as thinkingTokenBudgetField } from "./model-gCDbmGqT.mjs";
|
|
3
|
+
import { C as ToolCallSchema, D as transformMessages, E as resolveJsonSchemaConstraint, S as AssistantMessageSchema, T as message_exports, g as shortHash, n as createOpenAICodex, r as openaiCodex, v as openAICodexTools, w as createAssistantMessage$1, x as resolveOpenAICodexToolConstraint } from "./openai-codex-Bqzti6Mc.mjs";
|
|
4
4
|
import { r as normalize, t as failure_exports } from "./failure-SAPyG-w2.mjs";
|
|
5
|
-
import { i as packageForModel, o as resolveLanguageModel, r as loadProviderFactory } from "./registry-
|
|
5
|
+
import { i as packageForModel, o as resolveLanguageModel, r as loadProviderFactory } from "./registry-ZxwIW0gX.mjs";
|
|
6
|
+
import { i as githubCopilot, r as createGitHubCopilot } from "./github-copilot-SIUCJz1G.mjs";
|
|
6
7
|
import Type$2, { Type, Type as Type$1 } from "typebox";
|
|
7
8
|
import { jsonSchema, streamText } from "ai";
|
|
8
9
|
import { parse } from "partial-json";
|
|
@@ -638,6 +639,11 @@ async function resolveAISDKLanguageModel(model, options, thinkingTokenBudget) {
|
|
|
638
639
|
...typeof factoryOptions.compat === "object" && factoryOptions.compat !== null ? factoryOptions.compat : {}
|
|
639
640
|
};
|
|
640
641
|
}
|
|
642
|
+
if (npm === "@codeworksh/ai-sdk-github-copilot") {
|
|
643
|
+
if (options.sessionId) factoryOptions.sessionId ??= options.sessionId;
|
|
644
|
+
const budgetField = thinkingTokenBudgetField(model);
|
|
645
|
+
if (budgetField && thinkingTokenBudget !== void 0 && thinkingTokenBudget > 0) factoryOptions.transformRequestBody = thinkingTokenBudgetTransform(budgetField, thinkingTokenBudget, factoryOptions.transformRequestBody);
|
|
646
|
+
}
|
|
641
647
|
const provider = createProvider(factoryOptions);
|
|
642
648
|
return resolveLanguageModel(provider, model, options.method);
|
|
643
649
|
}
|
|
@@ -651,9 +657,14 @@ const ANTHROPIC_MIN_THINKING_BUDGET = 1024;
|
|
|
651
657
|
* Adaptive models are exempt: they are sent an effort level and no budget, so
|
|
652
658
|
* there is no floor to fall under.
|
|
653
659
|
*/
|
|
654
|
-
|
|
660
|
+
/** Whether the model talks Anthropic Messages — directly, or via Copilot's `/v1/messages` route. */
|
|
661
|
+
function isAnthropicMessagesModel(model) {
|
|
655
662
|
const key = optionsKey(model);
|
|
656
|
-
if (key
|
|
663
|
+
if (key === "anthropic" || key === "google-vertex-anthropic") return true;
|
|
664
|
+
return key === "github-copilot" && model.api?.method === APIMethodEnum.messages;
|
|
665
|
+
}
|
|
666
|
+
function minimumThinkingBudget(model) {
|
|
667
|
+
if (!isAnthropicMessagesModel(model)) return 0;
|
|
657
668
|
return model.compat?.forceAdaptiveThinking ? 0 : ANTHROPIC_MIN_THINKING_BUDGET;
|
|
658
669
|
}
|
|
659
670
|
function resolvePlan(model, context, options) {
|
|
@@ -716,6 +727,10 @@ function disabledProviderOptions(model) {
|
|
|
716
727
|
if (!model.reasoning) return {};
|
|
717
728
|
const key = optionsKey(model);
|
|
718
729
|
if (key === "anthropic" || key === "google-vertex-anthropic") return { [key]: { thinking: { type: "disabled" } } };
|
|
730
|
+
if (key === "github-copilot") {
|
|
731
|
+
if (model.api?.method === APIMethodEnum.messages) return { [key]: { thinking: { type: "disabled" } } };
|
|
732
|
+
return {};
|
|
733
|
+
}
|
|
719
734
|
if (key === "google" || key === "google-vertex") {
|
|
720
735
|
if (model.thinkingLevelMap?.off === null) return {};
|
|
721
736
|
return { [key]: { thinkingConfig: googleDisabledThinkingConfig(model) } };
|
|
@@ -763,6 +778,24 @@ function reasoningProviderOptions(model, plan) {
|
|
|
763
778
|
const key = optionsKey(model);
|
|
764
779
|
const budget = plan.budget;
|
|
765
780
|
if (key === "openai" || key === "xai" || key === "openai-codex") return { [key]: { reasoningEffort: mapped } };
|
|
781
|
+
if (key === "github-copilot") {
|
|
782
|
+
const method = model.api?.method;
|
|
783
|
+
if (method === APIMethodEnum.responses) return { [key]: { reasoningEffort: mapped } };
|
|
784
|
+
if (method === APIMethodEnum.messages) {
|
|
785
|
+
if (model.compat?.forceAdaptiveThinking) return { [key]: {
|
|
786
|
+
thinking: {
|
|
787
|
+
type: "adaptive",
|
|
788
|
+
display: "summarized"
|
|
789
|
+
},
|
|
790
|
+
effort: anthropicEffort(model, level)
|
|
791
|
+
} };
|
|
792
|
+
return { [key]: { thinking: {
|
|
793
|
+
type: "enabled",
|
|
794
|
+
budgetTokens: budget
|
|
795
|
+
} } };
|
|
796
|
+
}
|
|
797
|
+
return {};
|
|
798
|
+
}
|
|
766
799
|
if (key === "openrouter") return { [key]: { reasoning: { effort: mapped === "off" ? "none" : mapped } } };
|
|
767
800
|
if (key === "google" || key === "google-vertex") {
|
|
768
801
|
const thinkingLevel = googleThinkingLevel(mapped);
|
|
@@ -1002,7 +1035,7 @@ function isRecord(value) {
|
|
|
1002
1035
|
}
|
|
1003
1036
|
function encodeOpenAIReasoningSignature(providerMetadata) {
|
|
1004
1037
|
if (!isRecord(providerMetadata)) return;
|
|
1005
|
-
const metadata = providerMetadata.openai;
|
|
1038
|
+
const metadata = providerMetadata.openai ?? providerMetadata["github-copilot"];
|
|
1006
1039
|
if (!isRecord(metadata) || typeof metadata.itemId !== "string") return;
|
|
1007
1040
|
const signature = { itemId: metadata.itemId };
|
|
1008
1041
|
if (typeof metadata.reasoningEncryptedContent === "string" || metadata.reasoningEncryptedContent === null) signature.reasoningEncryptedContent = metadata.reasoningEncryptedContent;
|
|
@@ -1048,6 +1081,25 @@ function assistantMessages(message, model) {
|
|
|
1048
1081
|
if (part.type === "thinking") {
|
|
1049
1082
|
const thinking = sanitizeSurrogates(part.thinking);
|
|
1050
1083
|
if (thinking.trim().length === 0 && !part.thinkingSignature) continue;
|
|
1084
|
+
if (message.protocol === KnownProviderEnum.githubCopilot) {
|
|
1085
|
+
const method = model.api?.method;
|
|
1086
|
+
const openai = part.thinkingSignature ? decodeOpenAIReasoningSignature(part.thinkingSignature) : void 0;
|
|
1087
|
+
if (method === APIMethodEnum.responses && openai) assistantContent.push({
|
|
1088
|
+
type: "reasoning",
|
|
1089
|
+
text: thinking,
|
|
1090
|
+
providerOptions: { "github-copilot": openai }
|
|
1091
|
+
});
|
|
1092
|
+
else if (method === APIMethodEnum.messages && part.thinkingSignature && !openai) assistantContent.push({
|
|
1093
|
+
type: "reasoning",
|
|
1094
|
+
text: thinking,
|
|
1095
|
+
providerOptions: { anthropic: { signature: part.thinkingSignature } }
|
|
1096
|
+
});
|
|
1097
|
+
else if (thinking.trim().length > 0) assistantContent.push({
|
|
1098
|
+
type: "text",
|
|
1099
|
+
text: thinking
|
|
1100
|
+
});
|
|
1101
|
+
continue;
|
|
1102
|
+
}
|
|
1051
1103
|
const reasoning = {
|
|
1052
1104
|
type: "reasoning",
|
|
1053
1105
|
text: thinking
|
|
@@ -1217,7 +1269,7 @@ function cacheProviderOptions(model, options) {
|
|
|
1217
1269
|
if (retention === "long") openai.promptCacheRetention = "24h";
|
|
1218
1270
|
return Object.keys(openai).length > 0 ? { [key]: openai } : {};
|
|
1219
1271
|
}
|
|
1220
|
-
if ((
|
|
1272
|
+
if (isAnthropicMessagesModel(model) && retention) return { [key]: { cacheControl: {
|
|
1221
1273
|
type: "ephemeral",
|
|
1222
1274
|
...retention === "long" ? { ttl: "1h" } : {}
|
|
1223
1275
|
} } };
|
|
@@ -1452,10 +1504,9 @@ function resolvePricing(model, pricing) {
|
|
|
1452
1504
|
* unchanged -- subtracting there would quietly under-ask by the whole budget.
|
|
1453
1505
|
*/
|
|
1454
1506
|
function resolveMaxOutputTokens(model, plan) {
|
|
1455
|
-
|
|
1456
|
-
if (key === "openai-codex") return void 0;
|
|
1507
|
+
if (optionsKey(model) === "openai-codex") return void 0;
|
|
1457
1508
|
if (plan.maxTokens === void 0) return void 0;
|
|
1458
|
-
return (
|
|
1509
|
+
return isAnthropicMessagesModel(model) && !model.compat?.forceAdaptiveThinking ? plan.maxTokens - plan.budget : plan.maxTokens;
|
|
1459
1510
|
}
|
|
1460
1511
|
const stream$1 = (model, context, options) => {
|
|
1461
1512
|
const stream = new AssistantMessageEventStream();
|
|
@@ -1542,6 +1593,7 @@ function registerAISDKProtocols() {
|
|
|
1542
1593
|
registerProtocolProvider(createAISDKProtocol(KnownProviderEnum.openai));
|
|
1543
1594
|
registerProtocolProvider(createAISDKProtocol(KnownProviderEnum.openaiCompatible));
|
|
1544
1595
|
registerProtocolProvider(createAISDKProtocol(KnownProviderEnum.openaiCodex));
|
|
1596
|
+
registerProtocolProvider(createAISDKProtocol(KnownProviderEnum.githubCopilot));
|
|
1545
1597
|
registerProtocolProvider(createAISDKProtocol(KnownProviderEnum.openrouter));
|
|
1546
1598
|
registerProtocolProvider(createAISDKProtocol(KnownProviderEnum.xai));
|
|
1547
1599
|
}
|
|
@@ -1616,6 +1668,6 @@ function validateToolArguments(tool, toolExecution) {
|
|
|
1616
1668
|
return validateSchema(tool.parameters, toolExecution.rawArgs, `Tool "${toolExecution.name}"`);
|
|
1617
1669
|
}
|
|
1618
1670
|
//#endregion
|
|
1619
|
-
export { event_exports as Event, EventStream, failure_exports as Failure, message_exports as Message, model_exports as Model, protocol_exports as Protocol, ThinkingBudgets, Type, createAssistantMessageEventStream, createOpenAICodex, llm, openAICodexTools, openaiCodex, stream, validateSchema, validateToolArguments, validateToolCall };
|
|
1671
|
+
export { event_exports as Event, EventStream, failure_exports as Failure, message_exports as Message, model_exports as Model, protocol_exports as Protocol, ThinkingBudgets, Type, createAssistantMessageEventStream, createGitHubCopilot, createOpenAICodex, githubCopilot, llm, openAICodexTools, openaiCodex, stream, validateSchema, validateToolArguments, validateToolCall };
|
|
1620
1672
|
|
|
1621
1673
|
//# sourceMappingURL=index.mjs.map
|