flavor-code 1.4.0-beta.8 → 1.4.1-beta.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-KSUBHHLR.js → app-UKTPW3E6.js} +784 -183
- package/dist/{chunk-EXOSMO57.js → chunk-7YFHRORG.js} +2 -3
- package/dist/{chunk-EUKT7HEU.js → chunk-FAORPP4F.js} +1 -1
- package/dist/{chunk-LLC7WBXP.js → chunk-O2PC44GY.js} +216 -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 +218 -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,
|
|
@@ -66,10 +66,12 @@ function normalizeProviderError(error) {
|
|
|
66
66
|
code = "authentication";
|
|
67
67
|
} else if (status === 429 || /rate.?limit|overloaded/.test(searchable)) {
|
|
68
68
|
code = "rate_limit";
|
|
69
|
-
} else if (/context|too many tokens|prompt.*long/.test(searchable)) {
|
|
69
|
+
} else if (/context[_\s-]?(?:length|window|overflow)(?:[_\s-]?(?:exceeded|limit))?/.test(searchable) || /maximum context length|too many tokens|prompt.*(?:too )?long/.test(searchable)) {
|
|
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,40 +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
|
-
|
|
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
|
+
}
|
|
8824
8948
|
}
|
|
8825
|
-
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);
|
|
8826
8986
|
}
|
|
8827
8987
|
function repairMessages(messages, tool, original, candidate, error) {
|
|
8828
8988
|
const details = [
|
|
@@ -9781,9 +9941,11 @@ var ToolRuntime = class {
|
|
|
9781
9941
|
if (pre.decision === "deny") {
|
|
9782
9942
|
return this.#fail(toolCallId, tool.name, input, context.agent, "hook_denied", pre.reason ?? "Tool use denied by hook");
|
|
9783
9943
|
}
|
|
9944
|
+
const approvalInput = tool.permissionInput?.(input) ?? input;
|
|
9784
9945
|
const request = {
|
|
9785
9946
|
agent: context.agent,
|
|
9786
9947
|
tool: tool.name,
|
|
9948
|
+
input: approvalInput,
|
|
9787
9949
|
...tool.permissions?.(input) ?? { paths: tool.paths(input) },
|
|
9788
9950
|
...tool.readOnly === true ? { readOnly: true } : {}
|
|
9789
9951
|
};
|
|
@@ -9816,7 +9978,7 @@ var ToolRuntime = class {
|
|
|
9816
9978
|
payload: {
|
|
9817
9979
|
toolCallId,
|
|
9818
9980
|
tool: tool.name,
|
|
9819
|
-
input:
|
|
9981
|
+
input: approvalInput,
|
|
9820
9982
|
agent: context.agent,
|
|
9821
9983
|
reason,
|
|
9822
9984
|
toolCategory: getToolCategory(tool.name),
|
|
@@ -13090,7 +13252,7 @@ ${evidence.summary}`;
|
|
|
13090
13252
|
}
|
|
13091
13253
|
};
|
|
13092
13254
|
function isResumableWorkerError(error) {
|
|
13093
|
-
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";
|
|
13094
13256
|
}
|
|
13095
13257
|
function countTrailingFailureSignature(cycles, signature) {
|
|
13096
13258
|
let count = 0;
|
|
@@ -13804,10 +13966,10 @@ function resumeStartRound(state) {
|
|
|
13804
13966
|
return state.verifyRounds >= state.workerRounds ? state.workerRounds + 1 : Math.max(state.workerRounds, 1);
|
|
13805
13967
|
}
|
|
13806
13968
|
function isResumableWorkerError2(error) {
|
|
13807
|
-
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";
|
|
13808
13970
|
}
|
|
13809
13971
|
function isResumableStageError(error) {
|
|
13810
|
-
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";
|
|
13811
13973
|
}
|
|
13812
13974
|
function stageRetryDelay(options, attempt) {
|
|
13813
13975
|
const delayMs = options.stageRetryDelayMs?.(attempt) ?? Math.min(6e4, 1e3 * 2 ** Math.min(attempt - 1, 6));
|
|
@@ -14804,6 +14966,7 @@ function resolveCacheProfile(input) {
|
|
|
14804
14966
|
// src/models/openai.ts
|
|
14805
14967
|
import OpenAI from "openai";
|
|
14806
14968
|
import { readFile as readFile16 } from "fs/promises";
|
|
14969
|
+
var DEFAULT_THINKING_EFFORT = "high";
|
|
14807
14970
|
async function toInput(message2) {
|
|
14808
14971
|
if (message2.role === "tool") {
|
|
14809
14972
|
if (!message2.toolCallId) throw new Error("Tool messages require toolCallId");
|
|
@@ -14879,7 +15042,7 @@ var OpenAIModelAdapter = class {
|
|
|
14879
15042
|
...options.baseURL === void 0 ? {} : { baseURL: options.baseURL }
|
|
14880
15043
|
});
|
|
14881
15044
|
this.debugUsage = options.debugUsage ?? isEnvTruthy(process.env.FLAVOR_DEBUG_USAGE);
|
|
14882
|
-
this.thinkingEffort = options.thinkingEffort;
|
|
15045
|
+
this.thinkingEffort = options.thinkingEffort ?? DEFAULT_THINKING_EFFORT;
|
|
14883
15046
|
}
|
|
14884
15047
|
#logUsage(model, breakdown) {
|
|
14885
15048
|
if (breakdown === void 0) return;
|
|
@@ -14902,12 +15065,12 @@ var OpenAIModelAdapter = class {
|
|
|
14902
15065
|
const body = {
|
|
14903
15066
|
model: request.model,
|
|
14904
15067
|
input: (await Promise.all(request.messages.map(toInput))).flat(),
|
|
14905
|
-
|
|
15068
|
+
reasoning: { effort: this.thinkingEffort },
|
|
14906
15069
|
tools: [...request.tools].sort((a, b) => a.name.localeCompare(b.name)).map((tool) => ({
|
|
14907
15070
|
type: "function",
|
|
14908
15071
|
name: tool.name,
|
|
14909
15072
|
description: tool.description,
|
|
14910
|
-
parameters: tool.inputSchema,
|
|
15073
|
+
parameters: openAIJsonSchemaObject(tool.inputSchema, tool.strict ?? true),
|
|
14911
15074
|
strict: tool.strict ?? true
|
|
14912
15075
|
}))
|
|
14913
15076
|
};
|
|
@@ -19982,6 +20145,15 @@ var RegisterManagedToolInputSchema = z31.object({
|
|
|
19982
20145
|
"Agent roles allowed to call the generated tool; omit to allow both"
|
|
19983
20146
|
)
|
|
19984
20147
|
}).strict();
|
|
20148
|
+
var RegisterManagedToolModelInputSchema = (() => {
|
|
20149
|
+
const schema = jsonSchemaFromZod(RegisterManagedToolInputSchema);
|
|
20150
|
+
const properties = schema.properties;
|
|
20151
|
+
const inputSchema = { ...properties.inputSchema };
|
|
20152
|
+
delete inputSchema.propertyNames;
|
|
20153
|
+
delete inputSchema.patternProperties;
|
|
20154
|
+
inputSchema.additionalProperties = true;
|
|
20155
|
+
return { ...schema, properties: { ...properties, inputSchema } };
|
|
20156
|
+
})();
|
|
19985
20157
|
var RemoveManagedToolInputSchema = z31.object({
|
|
19986
20158
|
name: z31.string().regex(TOOL_NAME).describe("Managed tool name to remove"),
|
|
19987
20159
|
scope: z31.enum(["project", "global"]).optional().describe("Required only when the same name exists in both scopes")
|
|
@@ -20127,6 +20299,8 @@ function createManagedToolManagementTools(options) {
|
|
|
20127
20299
|
name: "RegisterTool",
|
|
20128
20300
|
description: "Create a durable custom tool from JSON Schema and async JavaScript, then expose it immediately",
|
|
20129
20301
|
inputSchema: RegisterManagedToolInputSchema,
|
|
20302
|
+
modelInputSchema: RegisterManagedToolModelInputSchema,
|
|
20303
|
+
modelStrict: false,
|
|
20130
20304
|
agents: mainOnly,
|
|
20131
20305
|
paths: (rawInput) => {
|
|
20132
20306
|
const parsed = RegisterManagedToolInputSchema.safeParse(rawInput);
|
|
@@ -25154,7 +25328,7 @@ function terminalProgressState(status) {
|
|
|
25154
25328
|
return "failed";
|
|
25155
25329
|
}
|
|
25156
25330
|
function isResumableLongTaskError(code) {
|
|
25157
|
-
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";
|
|
25158
25332
|
}
|
|
25159
25333
|
async function workspaceFingerprint(workspace) {
|
|
25160
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-UKTPW3E6.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>;
|