flavor-code 1.4.0-beta.9 → 1.4.1
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 +4 -1
- package/README.zh-CN.md +4 -1
- package/dist/{app-XEW4ES4R.js → app-4YRKE7VI.js} +754 -176
- package/dist/{chunk-EXOSMO57.js → chunk-7YFHRORG.js} +2 -3
- package/dist/{chunk-D4OD67V6.js → chunk-FAORPP4F.js} +1 -1
- package/dist/{chunk-CWCYXOH6.js → chunk-O2PC44GY.js} +204 -42
- package/dist/{chunk-XMRKRPNC.js → chunk-VMQWXQEC.js} +2 -1
- package/dist/{claude-ink-6EZHF64C.js → claude-ink-JZXNSAQS.js} +1 -1
- package/dist/cli-main.js +6 -6
- package/dist/config/schema.d.ts +2 -0
- package/dist/desktop/main.js +206 -45
- package/dist/desktop-renderer/assets/index-BM9ugkh9.js +154 -0
- package/dist/desktop-renderer/assets/{interactive-terminal-DestMQ2z.js → interactive-terminal-1agnYY5L.js} +1 -1
- package/dist/desktop-renderer/index.html +1 -1
- package/dist/{load-EW56Q2MM.js → load-UPOG3XQR.js} +1 -1
- package/dist/models/openai.d.ts +4 -2
- package/dist/models/structured.d.ts +7 -0
- package/dist/models/types.d.ts +1 -1
- package/dist/permissions/engine.d.ts +2 -0
- package/dist/sdk/index.js +3 -3
- package/dist/ui/session.d.ts +2 -0
- package/package.json +1 -1
- package/dist/desktop-renderer/assets/index-RNe5Gtum.js +0 -154
|
@@ -38,9 +38,8 @@ var ProviderConfigSchema = z.object({
|
|
|
38
38
|
// parameter. Provider thinking deltas are forwarded whenever they arrive.
|
|
39
39
|
thinkingBudget: z.number().int().min(0).optional(),
|
|
40
40
|
// Reasoning effort requested from the OpenAI Responses protocol (sent as
|
|
41
|
-
// reasoning.effort).
|
|
42
|
-
|
|
43
|
-
thinkingEffort: z.enum(["minimal", "low", "medium", "high", "xhigh"]).optional(),
|
|
41
|
+
// reasoning.effort). The adapter defaults an omitted value to high.
|
|
42
|
+
thinkingEffort: z.enum(["minimal", "low", "medium", "high", "xhigh", "ultra"]).optional(),
|
|
44
43
|
// Send the Claude Code client fingerprint (User-Agent/x-app) with Anthropic requests,
|
|
45
44
|
// for gateways that restrict the Anthropic protocol to Claude clients.
|
|
46
45
|
claudeClient: z.boolean().optional(),
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
redactConfig,
|
|
24
24
|
setProjectMcpServerDisabled,
|
|
25
25
|
updateProtectedFile
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-7YFHRORG.js";
|
|
27
27
|
import {
|
|
28
28
|
AuditLogger,
|
|
29
29
|
appendUsageLog,
|
|
@@ -70,6 +70,8 @@ function normalizeProviderError(error) {
|
|
|
70
70
|
code = "context_overflow";
|
|
71
71
|
} else if (status === 404 || /model.*not.?found|not.?found.*model/.test(searchable)) {
|
|
72
72
|
code = "model_not_found";
|
|
73
|
+
} else if (status === 400 || status === 422 || /invalid schema|schema.*(?:invalid|not (?:a )?valid)/.test(searchable)) {
|
|
74
|
+
code = "invalid_request";
|
|
73
75
|
} else if (status !== void 0 && status >= 500 && status <= 599) {
|
|
74
76
|
code = "network";
|
|
75
77
|
} else if (status === void 0 && /econn|enet|socket|network|fetch failed|connection|timeout/.test(searchable)) {
|
|
@@ -1012,10 +1014,11 @@ async function createExampleFlavorConfig(cwd) {
|
|
|
1012
1014
|
pkce: {
|
|
1013
1015
|
type: "oauth-callback",
|
|
1014
1016
|
apiType: "anthropic",
|
|
1015
|
-
authorizationUrl: "http://
|
|
1016
|
-
tokenUrl: "http://
|
|
1017
|
+
authorizationUrl: "http://127.0.0.1:8091/authorize",
|
|
1018
|
+
tokenUrl: "http://127.0.0.1:8091/token",
|
|
1017
1019
|
clientId: "flavor-code-cli",
|
|
1018
|
-
scope: "models:read models:use"
|
|
1020
|
+
scope: "models:read models:use",
|
|
1021
|
+
thinkingEffort: "high"
|
|
1019
1022
|
}
|
|
1020
1023
|
},
|
|
1021
1024
|
agents: {
|
|
@@ -8651,7 +8654,10 @@ function jsonSchemaFromZod(schema) {
|
|
|
8651
8654
|
return z11.toJSONSchema(schema);
|
|
8652
8655
|
}
|
|
8653
8656
|
function strictJsonSchemaObject(schema) {
|
|
8654
|
-
return
|
|
8657
|
+
return normalizeOpenAIJsonSchemaObject(schema, true);
|
|
8658
|
+
}
|
|
8659
|
+
function openAIJsonSchemaObject(schema, strict) {
|
|
8660
|
+
return normalizeOpenAIJsonSchemaObject(schema, strict);
|
|
8655
8661
|
}
|
|
8656
8662
|
function extractJsonObject(text) {
|
|
8657
8663
|
const trimmed = text.trim();
|
|
@@ -8789,41 +8795,194 @@ function jsonSchemaAllowsNull(schema) {
|
|
|
8789
8795
|
function modelToolFromZod(name, description, schema) {
|
|
8790
8796
|
return { name, description, inputSchema: strictJsonSchema(schema) };
|
|
8791
8797
|
}
|
|
8792
|
-
|
|
8798
|
+
var JSON_SCHEMA_TYPES = /* @__PURE__ */ new Set(["null", "boolean", "object", "array", "number", "string", "integer"]);
|
|
8799
|
+
var OPENAI_UNSUPPORTED_SCHEMA_KEYWORDS = [
|
|
8800
|
+
"$schema",
|
|
8801
|
+
"$id",
|
|
8802
|
+
"$anchor",
|
|
8803
|
+
"$dynamicAnchor",
|
|
8804
|
+
"$dynamicRef",
|
|
8805
|
+
"$comment",
|
|
8806
|
+
"default",
|
|
8807
|
+
"examples",
|
|
8808
|
+
"example",
|
|
8809
|
+
"deprecated",
|
|
8810
|
+
"readOnly",
|
|
8811
|
+
"writeOnly",
|
|
8812
|
+
"format",
|
|
8813
|
+
"propertyNames",
|
|
8814
|
+
"patternProperties",
|
|
8815
|
+
"unevaluatedProperties",
|
|
8816
|
+
"unevaluatedItems",
|
|
8817
|
+
"additionalItems",
|
|
8818
|
+
"contains",
|
|
8819
|
+
"minContains",
|
|
8820
|
+
"maxContains",
|
|
8821
|
+
"uniqueItems",
|
|
8822
|
+
"minProperties",
|
|
8823
|
+
"maxProperties",
|
|
8824
|
+
"contentEncoding",
|
|
8825
|
+
"contentMediaType",
|
|
8826
|
+
"not",
|
|
8827
|
+
"if",
|
|
8828
|
+
"then",
|
|
8829
|
+
"else",
|
|
8830
|
+
"dependentRequired",
|
|
8831
|
+
"dependentSchemas",
|
|
8832
|
+
"dependencies"
|
|
8833
|
+
];
|
|
8834
|
+
function normalizeOpenAIJsonSchemaObject(schema, strict) {
|
|
8835
|
+
const normalized = normalizeOpenAIJsonSchemaNode(schema, strict);
|
|
8836
|
+
if (normalized.type === "object") return normalized;
|
|
8837
|
+
return strict ? { type: "object", properties: {}, required: [], additionalProperties: false } : { type: "object", properties: {}, additionalProperties: true };
|
|
8838
|
+
}
|
|
8839
|
+
function normalizeOpenAIJsonSchemaNode(rawSchema, strict) {
|
|
8840
|
+
const schema = mergeObjectAllOf(rawSchema);
|
|
8793
8841
|
const output = { ...schema };
|
|
8794
|
-
delete output
|
|
8795
|
-
delete output.
|
|
8796
|
-
|
|
8797
|
-
|
|
8798
|
-
|
|
8799
|
-
|
|
8800
|
-
|
|
8801
|
-
|
|
8802
|
-
|
|
8803
|
-
|
|
8842
|
+
for (const keyword of OPENAI_UNSUPPORTED_SCHEMA_KEYWORDS) delete output[keyword];
|
|
8843
|
+
delete output.oneOf;
|
|
8844
|
+
delete output.allOf;
|
|
8845
|
+
delete output.prefixItems;
|
|
8846
|
+
delete output.nullable;
|
|
8847
|
+
delete output.definitions;
|
|
8848
|
+
if (typeof output.$ref === "string" && output.$ref.startsWith("#/definitions/")) {
|
|
8849
|
+
output.$ref = output.$ref.replace("#/definitions/", "#/$defs/");
|
|
8850
|
+
}
|
|
8851
|
+
const compositionBranches = [
|
|
8852
|
+
...Array.isArray(schema.anyOf) ? schema.anyOf : [],
|
|
8853
|
+
...Array.isArray(schema.oneOf) ? schema.oneOf : [],
|
|
8854
|
+
...Array.isArray(schema.allOf) ? schema.allOf : []
|
|
8855
|
+
];
|
|
8856
|
+
if (compositionBranches.length > 0) {
|
|
8857
|
+
output.anyOf = compositionBranches.map((branch) => normalizeOpenAISchemaValue(branch, strict));
|
|
8858
|
+
} else {
|
|
8859
|
+
delete output.anyOf;
|
|
8804
8860
|
}
|
|
8805
|
-
|
|
8806
|
-
|
|
8807
|
-
|
|
8808
|
-
|
|
8809
|
-
|
|
8810
|
-
|
|
8811
|
-
|
|
8861
|
+
const definitions = {
|
|
8862
|
+
...isSchemaRecord(schema.definitions) ? schema.definitions : {},
|
|
8863
|
+
...isSchemaRecord(schema.$defs) ? schema.$defs : {}
|
|
8864
|
+
};
|
|
8865
|
+
if (Object.keys(definitions).length > 0) {
|
|
8866
|
+
output.$defs = Object.fromEntries(Object.entries(definitions).map(([key, definition]) => [key, normalizeOpenAISchemaValue(definition, strict)]));
|
|
8867
|
+
}
|
|
8868
|
+
const prefixItems = Array.isArray(schema.prefixItems) ? schema.prefixItems : void 0;
|
|
8869
|
+
if (prefixItems !== void 0 && prefixItems.length > 0) {
|
|
8870
|
+
const tupleItems = prefixItems.map((item) => normalizeOpenAISchemaValue(item, strict));
|
|
8871
|
+
output.items = tupleItems.length === 1 ? tupleItems[0] : { anyOf: tupleItems };
|
|
8872
|
+
} else if (Array.isArray(schema.items)) {
|
|
8873
|
+
const tupleItems = schema.items.map((item) => normalizeOpenAISchemaValue(item, strict));
|
|
8874
|
+
output.items = tupleItems.length === 1 ? tupleItems[0] : { anyOf: tupleItems };
|
|
8875
|
+
} else if (isSchemaRecord(schema.items)) {
|
|
8876
|
+
output.items = normalizeOpenAIJsonSchemaNode(schema.items, strict);
|
|
8877
|
+
} else if (schema.items === true || schema.items === false) {
|
|
8878
|
+
output.items = universalJsonValueSchema(strict);
|
|
8879
|
+
}
|
|
8880
|
+
let type = schema.type;
|
|
8881
|
+
if (type === void 0 && isSchemaRecord(schema.properties)) type = "object";
|
|
8882
|
+
if (type === void 0 && output.items !== void 0) type = "array";
|
|
8883
|
+
if (type === void 0 && Array.isArray(schema.enum)) type = inferJsonTypes(schema.enum);
|
|
8884
|
+
if (type === void 0 && Object.hasOwn(schema, "const")) type = inferJsonTypes([schema.const]);
|
|
8885
|
+
if (typeof type === "string" && !JSON_SCHEMA_TYPES.has(type)) type = void 0;
|
|
8886
|
+
if (Array.isArray(type)) {
|
|
8887
|
+
const types = type.filter((candidate) => typeof candidate === "string" && JSON_SCHEMA_TYPES.has(candidate));
|
|
8888
|
+
type = types.length === 0 ? void 0 : types;
|
|
8889
|
+
}
|
|
8890
|
+
delete output.type;
|
|
8891
|
+
if (type !== void 0) output.type = type;
|
|
8892
|
+
if (schemaTypeIncludes(type, "array") && output.items === void 0) {
|
|
8893
|
+
output.items = universalJsonValueSchema(strict);
|
|
8894
|
+
}
|
|
8895
|
+
if (schemaTypeIncludes(type, "object")) {
|
|
8896
|
+
const sourceProperties = isSchemaRecord(schema.properties) ? schema.properties : {};
|
|
8897
|
+
const sourceRequired = new Set(Array.isArray(schema.required) ? schema.required.filter((key) => typeof key === "string") : []);
|
|
8898
|
+
const properties = {};
|
|
8899
|
+
for (const [key, value] of Object.entries(sourceProperties)) {
|
|
8900
|
+
const child = normalizeOpenAISchemaValue(value, strict);
|
|
8901
|
+
if (!strict || sourceRequired.has(key) || jsonSchemaAllowsNull(child)) properties[key] = child;
|
|
8902
|
+
else properties[key] = { anyOf: [child, { type: "null" }] };
|
|
8903
|
+
if (strict) sourceRequired.add(key);
|
|
8904
|
+
}
|
|
8905
|
+
output.properties = properties;
|
|
8906
|
+
const required2 = strict ? Object.keys(properties) : [...sourceRequired].filter((key) => Object.hasOwn(properties, key));
|
|
8907
|
+
if (strict || required2.length > 0 || Array.isArray(schema.required)) output.required = required2;
|
|
8908
|
+
else delete output.required;
|
|
8909
|
+
if (strict) {
|
|
8910
|
+
output.additionalProperties = false;
|
|
8911
|
+
} else if (schema.additionalProperties === true || schema.additionalProperties === false) {
|
|
8912
|
+
output.additionalProperties = schema.additionalProperties;
|
|
8913
|
+
} else if (isSchemaRecord(schema.additionalProperties)) {
|
|
8914
|
+
output.additionalProperties = Object.keys(schema.additionalProperties).length === 0 ? true : normalizeOpenAIJsonSchemaNode(schema.additionalProperties, false);
|
|
8915
|
+
} else {
|
|
8916
|
+
delete output.additionalProperties;
|
|
8812
8917
|
}
|
|
8813
8918
|
}
|
|
8814
|
-
if (schema.
|
|
8815
|
-
|
|
8919
|
+
if (schema.nullable === true && !jsonSchemaAllowsNull(output)) {
|
|
8920
|
+
const description = typeof output.description === "string" ? output.description : void 0;
|
|
8921
|
+
const branch = { ...output };
|
|
8922
|
+
delete branch.description;
|
|
8923
|
+
return {
|
|
8924
|
+
...description === void 0 ? {} : { description },
|
|
8925
|
+
anyOf: [branch, { type: "null" }]
|
|
8926
|
+
};
|
|
8816
8927
|
}
|
|
8817
|
-
|
|
8818
|
-
|
|
8819
|
-
|
|
8820
|
-
|
|
8821
|
-
|
|
8822
|
-
|
|
8823
|
-
|
|
8824
|
-
|
|
8928
|
+
if (isTypedOrComposedSchema(output)) return output;
|
|
8929
|
+
return universalJsonValueSchema(strict);
|
|
8930
|
+
}
|
|
8931
|
+
function mergeObjectAllOf(schema) {
|
|
8932
|
+
const branches = Array.isArray(schema.allOf) ? schema.allOf.filter(isSchemaRecord) : [];
|
|
8933
|
+
if (branches.length === 0 || !branches.every(isObjectSchema)) return schema;
|
|
8934
|
+
const base = { ...schema };
|
|
8935
|
+
delete base.allOf;
|
|
8936
|
+
const properties = isSchemaRecord(base.properties) ? { ...base.properties } : {};
|
|
8937
|
+
const required2 = new Set(Array.isArray(base.required) ? base.required.filter((key) => typeof key === "string") : []);
|
|
8938
|
+
for (const branch of branches) {
|
|
8939
|
+
if (isSchemaRecord(branch.properties)) {
|
|
8940
|
+
for (const [key, value] of Object.entries(branch.properties)) {
|
|
8941
|
+
const existing = properties[key];
|
|
8942
|
+
properties[key] = existing === void 0 ? value : { anyOf: [existing, value] };
|
|
8943
|
+
}
|
|
8944
|
+
}
|
|
8945
|
+
if (Array.isArray(branch.required)) {
|
|
8946
|
+
for (const key of branch.required) if (typeof key === "string") required2.add(key);
|
|
8947
|
+
}
|
|
8825
8948
|
}
|
|
8826
|
-
return { ...
|
|
8949
|
+
return { ...base, type: "object", properties, required: [...required2] };
|
|
8950
|
+
}
|
|
8951
|
+
function normalizeOpenAISchemaValue(value, strict) {
|
|
8952
|
+
if (isSchemaRecord(value)) return normalizeOpenAIJsonSchemaNode(value, strict);
|
|
8953
|
+
return universalJsonValueSchema(strict);
|
|
8954
|
+
}
|
|
8955
|
+
function universalJsonValueSchema(strict) {
|
|
8956
|
+
const scalar = [{ type: "string" }, { type: "number" }, { type: "boolean" }, { type: "null" }];
|
|
8957
|
+
return {
|
|
8958
|
+
anyOf: [
|
|
8959
|
+
...scalar,
|
|
8960
|
+
strict ? { type: "object", properties: {}, required: [], additionalProperties: false } : { type: "object", properties: {}, additionalProperties: true },
|
|
8961
|
+
{ type: "array", items: { anyOf: scalar } }
|
|
8962
|
+
]
|
|
8963
|
+
};
|
|
8964
|
+
}
|
|
8965
|
+
function inferJsonTypes(values) {
|
|
8966
|
+
const types = [...new Set(values.map((value) => {
|
|
8967
|
+
if (value === null) return "null";
|
|
8968
|
+
if (Array.isArray(value)) return "array";
|
|
8969
|
+
if (typeof value === "number") return Number.isInteger(value) ? "integer" : "number";
|
|
8970
|
+
if (typeof value === "object") return "object";
|
|
8971
|
+
return typeof value;
|
|
8972
|
+
}).filter((type) => ["null", "array", "object", "integer", "number", "string", "boolean"].includes(type)))];
|
|
8973
|
+
return types.length === 0 ? void 0 : types.length === 1 ? types[0] : types;
|
|
8974
|
+
}
|
|
8975
|
+
function isSchemaRecord(value) {
|
|
8976
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
8977
|
+
}
|
|
8978
|
+
function isObjectSchema(schema) {
|
|
8979
|
+
return schema.type === "object" || isSchemaRecord(schema.properties);
|
|
8980
|
+
}
|
|
8981
|
+
function isTypedOrComposedSchema(schema) {
|
|
8982
|
+
return typeof schema.type === "string" || Array.isArray(schema.type) || typeof schema.$ref === "string" || Array.isArray(schema.anyOf);
|
|
8983
|
+
}
|
|
8984
|
+
function schemaTypeIncludes(type, expected) {
|
|
8985
|
+
return type === expected || Array.isArray(type) && type.includes(expected);
|
|
8827
8986
|
}
|
|
8828
8987
|
function repairMessages(messages, tool, original, candidate, error) {
|
|
8829
8988
|
const details = [
|
|
@@ -9782,9 +9941,11 @@ var ToolRuntime = class {
|
|
|
9782
9941
|
if (pre.decision === "deny") {
|
|
9783
9942
|
return this.#fail(toolCallId, tool.name, input, context.agent, "hook_denied", pre.reason ?? "Tool use denied by hook");
|
|
9784
9943
|
}
|
|
9944
|
+
const approvalInput = tool.permissionInput?.(input) ?? input;
|
|
9785
9945
|
const request = {
|
|
9786
9946
|
agent: context.agent,
|
|
9787
9947
|
tool: tool.name,
|
|
9948
|
+
input: approvalInput,
|
|
9788
9949
|
...tool.permissions?.(input) ?? { paths: tool.paths(input) },
|
|
9789
9950
|
...tool.readOnly === true ? { readOnly: true } : {}
|
|
9790
9951
|
};
|
|
@@ -9817,7 +9978,7 @@ var ToolRuntime = class {
|
|
|
9817
9978
|
payload: {
|
|
9818
9979
|
toolCallId,
|
|
9819
9980
|
tool: tool.name,
|
|
9820
|
-
input:
|
|
9981
|
+
input: approvalInput,
|
|
9821
9982
|
agent: context.agent,
|
|
9822
9983
|
reason,
|
|
9823
9984
|
toolCategory: getToolCategory(tool.name),
|
|
@@ -13091,7 +13252,7 @@ ${evidence.summary}`;
|
|
|
13091
13252
|
}
|
|
13092
13253
|
};
|
|
13093
13254
|
function isResumableWorkerError(error) {
|
|
13094
|
-
return error.code !== "authentication" && error.code !== "model_not_found" && error.code !== "cancelled" && error.code !== "memory_pressure";
|
|
13255
|
+
return error.code !== "authentication" && error.code !== "model_not_found" && error.code !== "invalid_request" && error.code !== "cancelled" && error.code !== "memory_pressure";
|
|
13095
13256
|
}
|
|
13096
13257
|
function countTrailingFailureSignature(cycles, signature) {
|
|
13097
13258
|
let count = 0;
|
|
@@ -13805,10 +13966,10 @@ function resumeStartRound(state) {
|
|
|
13805
13966
|
return state.verifyRounds >= state.workerRounds ? state.workerRounds + 1 : Math.max(state.workerRounds, 1);
|
|
13806
13967
|
}
|
|
13807
13968
|
function isResumableWorkerError2(error) {
|
|
13808
|
-
return error.code !== "authentication" && error.code !== "model_not_found" && error.code !== "cancelled" && error.code !== "memory_pressure";
|
|
13969
|
+
return error.code !== "authentication" && error.code !== "model_not_found" && error.code !== "invalid_request" && error.code !== "cancelled" && error.code !== "memory_pressure";
|
|
13809
13970
|
}
|
|
13810
13971
|
function isResumableStageError(error) {
|
|
13811
|
-
return error.code !== "authentication" && error.code !== "model_not_found" && error.code !== "cancelled" && error.code !== "memory_pressure";
|
|
13972
|
+
return error.code !== "authentication" && error.code !== "model_not_found" && error.code !== "invalid_request" && error.code !== "cancelled" && error.code !== "memory_pressure";
|
|
13812
13973
|
}
|
|
13813
13974
|
function stageRetryDelay(options, attempt) {
|
|
13814
13975
|
const delayMs = options.stageRetryDelayMs?.(attempt) ?? Math.min(6e4, 1e3 * 2 ** Math.min(attempt - 1, 6));
|
|
@@ -14805,6 +14966,7 @@ function resolveCacheProfile(input) {
|
|
|
14805
14966
|
// src/models/openai.ts
|
|
14806
14967
|
import OpenAI from "openai";
|
|
14807
14968
|
import { readFile as readFile16 } from "fs/promises";
|
|
14969
|
+
var DEFAULT_THINKING_EFFORT = "high";
|
|
14808
14970
|
async function toInput(message2) {
|
|
14809
14971
|
if (message2.role === "tool") {
|
|
14810
14972
|
if (!message2.toolCallId) throw new Error("Tool messages require toolCallId");
|
|
@@ -14880,7 +15042,7 @@ var OpenAIModelAdapter = class {
|
|
|
14880
15042
|
...options.baseURL === void 0 ? {} : { baseURL: options.baseURL }
|
|
14881
15043
|
});
|
|
14882
15044
|
this.debugUsage = options.debugUsage ?? isEnvTruthy(process.env.FLAVOR_DEBUG_USAGE);
|
|
14883
|
-
this.thinkingEffort = options.thinkingEffort;
|
|
15045
|
+
this.thinkingEffort = options.thinkingEffort ?? DEFAULT_THINKING_EFFORT;
|
|
14884
15046
|
}
|
|
14885
15047
|
#logUsage(model, breakdown) {
|
|
14886
15048
|
if (breakdown === void 0) return;
|
|
@@ -14903,12 +15065,12 @@ var OpenAIModelAdapter = class {
|
|
|
14903
15065
|
const body = {
|
|
14904
15066
|
model: request.model,
|
|
14905
15067
|
input: (await Promise.all(request.messages.map(toInput))).flat(),
|
|
14906
|
-
|
|
15068
|
+
reasoning: { effort: this.thinkingEffort },
|
|
14907
15069
|
tools: [...request.tools].sort((a, b) => a.name.localeCompare(b.name)).map((tool) => ({
|
|
14908
15070
|
type: "function",
|
|
14909
15071
|
name: tool.name,
|
|
14910
15072
|
description: tool.description,
|
|
14911
|
-
parameters: tool.inputSchema,
|
|
15073
|
+
parameters: openAIJsonSchemaObject(tool.inputSchema, tool.strict ?? true),
|
|
14912
15074
|
strict: tool.strict ?? true
|
|
14913
15075
|
}))
|
|
14914
15076
|
};
|
|
@@ -25166,7 +25328,7 @@ function terminalProgressState(status) {
|
|
|
25166
25328
|
return "failed";
|
|
25167
25329
|
}
|
|
25168
25330
|
function isResumableLongTaskError(code) {
|
|
25169
|
-
return code !== "authentication" && code !== "model_not_found" && code !== "cancelled" && code !== "memory_pressure";
|
|
25331
|
+
return code !== "authentication" && code !== "model_not_found" && code !== "invalid_request" && code !== "cancelled" && code !== "memory_pressure";
|
|
25170
25332
|
}
|
|
25171
25333
|
async function workspaceFingerprint(workspace) {
|
|
25172
25334
|
const hash = createHash18("sha256");
|
|
@@ -19604,7 +19604,7 @@ function renderNodeToOutput(node, output, {
|
|
|
19604
19604
|
const delta = contentCached.y - contentY;
|
|
19605
19605
|
const regionTop = Math.floor(y + contentYoga.getComputedTop());
|
|
19606
19606
|
const regionBottom = regionTop + innerHeight - 1;
|
|
19607
|
-
if (cached?.y === y && cached.height === height && innerHeight > 0 && Math.abs(delta) < innerHeight) {
|
|
19607
|
+
if (cached?.y === y && cached.height === height && innerHeight > 0 && Math.floor(x) === 0 && Math.floor(width) >= output.width && Math.abs(delta) < innerHeight) {
|
|
19608
19608
|
hint = { top: regionTop, bottom: regionBottom, delta };
|
|
19609
19609
|
scrollHint = hint;
|
|
19610
19610
|
} else {
|
|
@@ -21447,6 +21447,7 @@ export {
|
|
|
21447
21447
|
Box_default,
|
|
21448
21448
|
Text,
|
|
21449
21449
|
stripAnsi,
|
|
21450
|
+
stringWidth,
|
|
21450
21451
|
ScrollBox_default,
|
|
21451
21452
|
instances_default,
|
|
21452
21453
|
osc,
|
package/dist/cli-main.js
CHANGED
|
@@ -3,7 +3,7 @@ import { createRequire } from "node:module"; const require = createRequire(impor
|
|
|
3
3
|
import {
|
|
4
4
|
FlavorRpcServer,
|
|
5
5
|
TraceRecorder
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FAORPP4F.js";
|
|
7
7
|
import {
|
|
8
8
|
staticTaskLines
|
|
9
9
|
} from "./chunk-RAYH6K2H.js";
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
redactErrorText,
|
|
30
30
|
runDoctor,
|
|
31
31
|
runPalBroker
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-O2PC44GY.js";
|
|
33
33
|
import {
|
|
34
34
|
MEMORY_RESTART_EXIT_CODE
|
|
35
35
|
} from "./chunk-N5MXHJKD.js";
|
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
readRecoverableFile,
|
|
42
42
|
setProjectSkillDisabled,
|
|
43
43
|
updateProtectedFile
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-7YFHRORG.js";
|
|
45
45
|
import {
|
|
46
46
|
gt,
|
|
47
47
|
isValidVersion
|
|
@@ -749,7 +749,7 @@ async function runEvaluationFile(path, outputPath) {
|
|
|
749
749
|
})),
|
|
750
750
|
...parsed.maxTokens === void 0 ? {} : { maxTokens: parsed.maxTokens }
|
|
751
751
|
};
|
|
752
|
-
const configured = await import("./load-
|
|
752
|
+
const configured = await import("./load-UPOG3XQR.js").then(({ loadConfig: loadConfig2 }) => loadConfig2({ cwd: workspace, home: process.env.USERPROFILE ?? process.env.HOME ?? workspace }));
|
|
753
753
|
const environment = createExecutionEnvironment(workspace, configured.config.execution) ?? new LocalExecutionEnvironment();
|
|
754
754
|
let report;
|
|
755
755
|
try {
|
|
@@ -919,9 +919,9 @@ async function runInteractiveCli(props) {
|
|
|
919
919
|
const disposeUserTimingSweeper = installUiUserTimingSweeper();
|
|
920
920
|
try {
|
|
921
921
|
const [{ render, AlternateScreen }, { createElement }, { App }] = await Promise.all([
|
|
922
|
-
import("./claude-ink-
|
|
922
|
+
import("./claude-ink-JZXNSAQS.js"),
|
|
923
923
|
import("react"),
|
|
924
|
-
import("./app-
|
|
924
|
+
import("./app-4YRKE7VI.js")
|
|
925
925
|
]);
|
|
926
926
|
const instance = await render(createElement(
|
|
927
927
|
AlternateScreen,
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export declare const ProviderConfigSchema: z.ZodObject<{
|
|
|
25
25
|
low: "low";
|
|
26
26
|
medium: "medium";
|
|
27
27
|
minimal: "minimal";
|
|
28
|
+
ultra: "ultra";
|
|
28
29
|
xhigh: "xhigh";
|
|
29
30
|
}>>;
|
|
30
31
|
claudeClient: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -82,6 +83,7 @@ export declare const FlavorConfigSchema: z.ZodObject<{
|
|
|
82
83
|
low: "low";
|
|
83
84
|
medium: "medium";
|
|
84
85
|
minimal: "minimal";
|
|
86
|
+
ultra: "ultra";
|
|
85
87
|
xhigh: "xhigh";
|
|
86
88
|
}>>;
|
|
87
89
|
claudeClient: z.ZodOptional<z.ZodBoolean>;
|