@codexhost/cli-linux-arm64 0.13.3 → 0.15.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 +1 -1
- package/app/codexhost-distribution.json +1 -1
- package/app/console-server.mjs +109 -11
- package/app/console-web.js +649 -132
- package/app/desktop-controller.mjs +120 -12
- package/app/host-runtime.mjs +1124 -293
- package/app/plugins/antigravity/plugin.mjs +431 -66
- package/app/plugins/claude-code/plugin.mjs +761 -139
- package/app/plugins/codebuddy/plugin.mjs +322 -68
- package/app/plugins/codex-usage/plugin.mjs +249 -102
- package/app/plugins/copilot/assets/icon.png +0 -0
- package/app/plugins/copilot/manifest.json +26 -0
- package/app/plugins/copilot/plugin.mjs +34591 -0
- package/app/plugins/cursor-cli/plugin.mjs +21011 -44970
- package/app/plugins/deepseek-harness/plugin.mjs +160 -43
- package/app/plugins/enabled.json +1 -0
- package/app/plugins/grok/plugin.mjs +565 -107
- package/app/plugins/hermes/plugin.mjs +128 -12
- package/app/plugins/kimi-code/plugin.mjs +136 -22
- package/app/plugins/kiro-cli/plugin.mjs +136 -22
- package/app/plugins/omp/plugin.mjs +2236 -2036
- package/app/plugins/opencode/plugin.mjs +187 -68
- package/app/plugins/pi/plugin.mjs +2621 -2304
- package/app/plugins/qoder/plugin.mjs +153 -36
- package/app/plugins/qoder-cn/plugin.mjs +153 -36
- package/app/plugins/workbuddy/plugin.mjs +583 -92
- package/app/plugins/zcode/plugin.mjs +183 -40
- package/app/renderer-extension.js +1758 -392
- package/bin/codexhost +0 -0
- package/libexec/codexhost-shim +0 -0
- package/libexec/codexhost-updater +0 -0
- package/package.json +1 -1
|
@@ -4209,10 +4209,13 @@ function usageSessionTitle(value) {
|
|
|
4209
4209
|
return void 0;
|
|
4210
4210
|
if (normalized.length <= MAX_SESSION_TITLE_LENGTH)
|
|
4211
4211
|
return normalized;
|
|
4212
|
-
|
|
4213
|
-
|
|
4214
|
-
|
|
4215
|
-
|
|
4212
|
+
let title = "";
|
|
4213
|
+
for (const character of normalized) {
|
|
4214
|
+
if (title.length + character.length >= MAX_SESSION_TITLE_LENGTH)
|
|
4215
|
+
break;
|
|
4216
|
+
title += character;
|
|
4217
|
+
}
|
|
4218
|
+
return `${title.trimEnd()}…`;
|
|
4216
4219
|
}
|
|
4217
4220
|
function sessionIdOk(value) {
|
|
4218
4221
|
return typeof value === "string" && value.length > 0 && value.length <= MAX_SESSION_ID_LENGTH;
|
|
@@ -7278,10 +7281,10 @@ var $ZodObject = /* @__PURE__ */ $constructor("$ZodObject", (inst, def) => {
|
|
|
7278
7281
|
const shape = def.shape;
|
|
7279
7282
|
const propValues = {};
|
|
7280
7283
|
for (const key in shape) {
|
|
7281
|
-
const
|
|
7282
|
-
if (
|
|
7284
|
+
const field2 = shape[key]._zod;
|
|
7285
|
+
if (field2.values) {
|
|
7283
7286
|
propValues[key] ?? (propValues[key] = /* @__PURE__ */ new Set());
|
|
7284
|
-
for (const v of
|
|
7287
|
+
for (const v of field2.values)
|
|
7285
7288
|
propValues[key].add(v);
|
|
7286
7289
|
}
|
|
7287
7290
|
}
|
|
@@ -18900,10 +18903,19 @@ var model = external_exports.string().min(1).max(512);
|
|
|
18900
18903
|
var project = external_exports.string().min(1).max(4096);
|
|
18901
18904
|
var usageStatisticsParamsSchema = external_exports.strictObject({
|
|
18902
18905
|
range: external_exports.enum(USAGE_STATISTICS_RANGES),
|
|
18906
|
+
/** Display timezone for ranges, dates and hourly buckets; omitted means the Host's local zone. */
|
|
18907
|
+
timeZone: external_exports.string().min(1).max(128).refine((value) => {
|
|
18908
|
+
try {
|
|
18909
|
+
new Intl.DateTimeFormat("en", { timeZone: value });
|
|
18910
|
+
return true;
|
|
18911
|
+
} catch {
|
|
18912
|
+
return false;
|
|
18913
|
+
}
|
|
18914
|
+
}, "Unsupported usage statistics timezone").optional(),
|
|
18903
18915
|
harness: harness.optional(),
|
|
18904
18916
|
model: model.nullable().optional(),
|
|
18905
18917
|
project: project.nullable().optional(),
|
|
18906
|
-
/** One
|
|
18918
|
+
/** One date in the query timezone inside the range. */
|
|
18907
18919
|
date: localDate.optional()
|
|
18908
18920
|
});
|
|
18909
18921
|
var usageStatisticsTotalsSchema = external_exports.strictObject({
|
|
@@ -18939,7 +18951,7 @@ var usageStatisticsSessionSchema = external_exports.strictObject({
|
|
|
18939
18951
|
});
|
|
18940
18952
|
var usageStatisticsResultSchema = external_exports.strictObject({
|
|
18941
18953
|
range: external_exports.enum(USAGE_STATISTICS_RANGES),
|
|
18942
|
-
/** First
|
|
18954
|
+
/** First date in the query timezone (Host local when omitted); null for all time. */
|
|
18943
18955
|
from: localDate.nullable(),
|
|
18944
18956
|
to: localDate,
|
|
18945
18957
|
/** The filters these figures apply, echoed so a late answer to older filters is recognised. */
|
|
@@ -18979,7 +18991,7 @@ var usageStatisticsResultSchema = external_exports.strictObject({
|
|
|
18979
18991
|
totals: usageStatisticsTotalsSchema,
|
|
18980
18992
|
/** Each date and Harness of the range: every filter except the day. */
|
|
18981
18993
|
daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
|
|
18982
|
-
/**
|
|
18994
|
+
/** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
|
|
18983
18995
|
hourly: external_exports.array(external_exports.strictObject({
|
|
18984
18996
|
weekday: external_exports.number().int().min(0).max(6),
|
|
18985
18997
|
hour: external_exports.number().int().min(0).max(23),
|
|
@@ -19019,6 +19031,51 @@ var hostInteractionIdSchema = opaqueIdSchema.brand();
|
|
|
19019
19031
|
var threadPrewarmDiscardParamsSchema = external_exports.object({ threadId: hostThreadIdSchema });
|
|
19020
19032
|
var threadPrewarmDiscardResultSchema = external_exports.object({ discarded: external_exports.boolean() });
|
|
19021
19033
|
|
|
19034
|
+
// ../../shared-contracts/dist/thread-questions.js
|
|
19035
|
+
var field = external_exports.discriminatedUnion("type", [
|
|
19036
|
+
external_exports.object({
|
|
19037
|
+
id: external_exports.string().min(1),
|
|
19038
|
+
type: external_exports.literal("choice"),
|
|
19039
|
+
prompt: external_exports.string(),
|
|
19040
|
+
options: external_exports.array(external_exports.object({
|
|
19041
|
+
value: external_exports.string().min(1),
|
|
19042
|
+
label: external_exports.string(),
|
|
19043
|
+
description: external_exports.string().optional()
|
|
19044
|
+
})).min(1),
|
|
19045
|
+
multiple: external_exports.boolean(),
|
|
19046
|
+
allowOther: external_exports.boolean(),
|
|
19047
|
+
optional: external_exports.boolean()
|
|
19048
|
+
}),
|
|
19049
|
+
external_exports.object({
|
|
19050
|
+
id: external_exports.string().min(1),
|
|
19051
|
+
type: external_exports.literal("text"),
|
|
19052
|
+
prompt: external_exports.string(),
|
|
19053
|
+
multiline: external_exports.boolean(),
|
|
19054
|
+
secret: external_exports.literal(false),
|
|
19055
|
+
optional: external_exports.boolean(),
|
|
19056
|
+
placeholder: external_exports.string().optional(),
|
|
19057
|
+
prefill: external_exports.string().optional()
|
|
19058
|
+
})
|
|
19059
|
+
]);
|
|
19060
|
+
var threadQuestionSchema = external_exports.object({
|
|
19061
|
+
interactionId: external_exports.string().min(1),
|
|
19062
|
+
turnId: external_exports.string().min(1),
|
|
19063
|
+
title: external_exports.string().optional(),
|
|
19064
|
+
questions: external_exports.array(field).min(1)
|
|
19065
|
+
}).refine(({ questions }) => questions.some((q) => q.type === "choice" && q.multiple), {
|
|
19066
|
+
message: "Shared cards require at least one multi-select question"
|
|
19067
|
+
});
|
|
19068
|
+
var threadQuestionsListParamsSchema = external_exports.strictObject({ threadId: external_exports.string().min(1) });
|
|
19069
|
+
var threadQuestionsResultSchema = external_exports.object({ questions: external_exports.array(threadQuestionSchema) });
|
|
19070
|
+
var threadQuestionRespondParamsSchema = external_exports.strictObject({
|
|
19071
|
+
threadId: external_exports.string().min(1),
|
|
19072
|
+
turnId: external_exports.string().min(1),
|
|
19073
|
+
interactionId: external_exports.string().min(1),
|
|
19074
|
+
answers: external_exports.record(external_exports.string(), external_exports.array(external_exports.string())),
|
|
19075
|
+
cancelled: external_exports.boolean().default(false)
|
|
19076
|
+
});
|
|
19077
|
+
var threadQuestionRespondResultSchema = external_exports.object({ accepted: external_exports.literal(true) });
|
|
19078
|
+
|
|
19022
19079
|
// ../../shared-contracts/dist/console.js
|
|
19023
19080
|
var consoleAnnouncementSchema = external_exports.strictObject({
|
|
19024
19081
|
title: external_exports.string().trim().min(1).max(200),
|
|
@@ -19039,6 +19096,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
|
|
|
19039
19096
|
"codexhost/harness/display-settings/set",
|
|
19040
19097
|
"codexhost/harness/inspect",
|
|
19041
19098
|
"codexhost/harness/installation",
|
|
19099
|
+
"codexhost/harness/installation/start",
|
|
19100
|
+
"codexhost/harness/installation/status",
|
|
19042
19101
|
"codexhost/harness/launch-settings/get",
|
|
19043
19102
|
"codexhost/harness/launch-settings/set",
|
|
19044
19103
|
"codexhost/harness/web-ui/open",
|
|
@@ -19114,7 +19173,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
|
|
|
19114
19173
|
var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
|
|
19115
19174
|
var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
|
|
19116
19175
|
var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
|
|
19176
|
+
var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text) => text.length <= maximum));
|
|
19177
|
+
var composerIndicatorsSchema = external_exports.array(external_exports.object({
|
|
19178
|
+
kind: external_exports.literal("countdown"),
|
|
19179
|
+
id: external_exports.string().min(1).max(64),
|
|
19180
|
+
expiresAtUnix: nonNegativeSafeIntegerSchema,
|
|
19181
|
+
label: indicatorTextSchema(256).optional(),
|
|
19182
|
+
tooltip: indicatorTextSchema(1024).optional()
|
|
19183
|
+
}).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
|
|
19184
|
+
message: "Composer indicator IDs must be unique"
|
|
19185
|
+
});
|
|
19117
19186
|
var threadUsageSnapshotSchema = external_exports.object({
|
|
19187
|
+
composerIndicators: composerIndicatorsSchema.optional(),
|
|
19118
19188
|
inputTokens: nonNegativeSafeIntegerSchema.optional(),
|
|
19119
19189
|
cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
|
|
19120
19190
|
cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
|
|
@@ -19522,7 +19592,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
|
|
|
19522
19592
|
}).strict().optional(),
|
|
19523
19593
|
autonomousTurns: external_exports.object({
|
|
19524
19594
|
observe: external_exports.boolean()
|
|
19525
|
-
}).strict().optional()
|
|
19595
|
+
}).strict().optional(),
|
|
19596
|
+
/** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
|
|
19597
|
+
steer: external_exports.boolean().optional()
|
|
19526
19598
|
}).strict();
|
|
19527
19599
|
var harnessConfigurationStateSchema = external_exports.object({
|
|
19528
19600
|
effectiveModel: harnessModelRefSchema.optional(),
|
|
@@ -19569,7 +19641,9 @@ var harnessInspectionSchema = external_exports.union([
|
|
|
19569
19641
|
var harnessInspectParamsSchema = external_exports.object({
|
|
19570
19642
|
harnessId: harnessIdSchema,
|
|
19571
19643
|
cwd: nonBlankTextSchema2.max(16384).optional(),
|
|
19572
|
-
refresh: external_exports.boolean().optional()
|
|
19644
|
+
refresh: external_exports.boolean().optional(),
|
|
19645
|
+
/** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
|
|
19646
|
+
purpose: external_exports.literal("availability").optional()
|
|
19573
19647
|
}).strict();
|
|
19574
19648
|
var harnessWebUiOpenParamsSchema = external_exports.object({
|
|
19575
19649
|
harnessId: harnessIdSchema
|
|
@@ -19652,6 +19726,15 @@ var threadOwnershipListResultSchema = external_exports.object({
|
|
|
19652
19726
|
seen.add(thread.threadId);
|
|
19653
19727
|
}
|
|
19654
19728
|
});
|
|
19729
|
+
var threadSteeringInspectParamsSchema = external_exports.object({
|
|
19730
|
+
threadId: hostThreadIdSchema,
|
|
19731
|
+
/** The text about to be steered; a Harness command always stops and restarts. */
|
|
19732
|
+
text: external_exports.string().optional()
|
|
19733
|
+
}).strict();
|
|
19734
|
+
var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
|
|
19735
|
+
var threadSteeringInspectResultSchema = external_exports.object({
|
|
19736
|
+
delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
|
|
19737
|
+
}).strict();
|
|
19655
19738
|
|
|
19656
19739
|
// ../../shared-contracts/dist/harness-plugins.js
|
|
19657
19740
|
var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
|
|
@@ -19753,6 +19836,10 @@ var harnessInstallationStateSchema = external_exports.object({
|
|
|
19753
19836
|
latestVersion: external_exports.string().min(1).max(128),
|
|
19754
19837
|
updateAvailable: external_exports.boolean(),
|
|
19755
19838
|
canUpdate: external_exports.boolean(),
|
|
19839
|
+
/** Defaults to CLI; some Harnesses ship only inside a desktop application. */
|
|
19840
|
+
versionKind: external_exports.enum(["cli", "application"]).optional(),
|
|
19841
|
+
/** Official download opened by the user; does not imply an automatic installation. */
|
|
19842
|
+
manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
|
|
19756
19843
|
// Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
|
|
19757
19844
|
message: external_exports.string().max(2048).optional(),
|
|
19758
19845
|
messageCode: external_exports.string().min(1).max(128).optional(),
|
|
@@ -19760,6 +19847,20 @@ var harnessInstallationStateSchema = external_exports.object({
|
|
|
19760
19847
|
notice: harnessLocalizedTextSchema.optional(),
|
|
19761
19848
|
latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
|
|
19762
19849
|
}).strict();
|
|
19850
|
+
var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
|
|
19851
|
+
var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
|
|
19852
|
+
external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
|
|
19853
|
+
external_exports.object({
|
|
19854
|
+
taskId: external_exports.string().uuid(),
|
|
19855
|
+
status: external_exports.literal("succeeded"),
|
|
19856
|
+
result: harnessInstallationStateSchema
|
|
19857
|
+
}).strict(),
|
|
19858
|
+
external_exports.object({
|
|
19859
|
+
taskId: external_exports.string().uuid(),
|
|
19860
|
+
status: external_exports.literal("failed"),
|
|
19861
|
+
error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
|
|
19862
|
+
}).strict()
|
|
19863
|
+
]);
|
|
19763
19864
|
|
|
19764
19865
|
// ../../shared-contracts/dist/codex-accounts.js
|
|
19765
19866
|
var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
|
|
@@ -20271,6 +20372,18 @@ function sanitizeDiagnosticTail(value) {
|
|
|
20271
20372
|
return redacted.length <= DIAGNOSTIC_TAIL_MAX_LENGTH ? redacted : redacted.slice(-DIAGNOSTIC_TAIL_MAX_LENGTH);
|
|
20272
20373
|
}
|
|
20273
20374
|
|
|
20375
|
+
// ../../harness-adapter/dist/steer.js
|
|
20376
|
+
function unsupportedSteer(harnessLabel) {
|
|
20377
|
+
return {
|
|
20378
|
+
ok: false,
|
|
20379
|
+
error: {
|
|
20380
|
+
code: "unsupported",
|
|
20381
|
+
message: `${harnessLabel} cannot steer an active Turn natively`,
|
|
20382
|
+
retryable: false
|
|
20383
|
+
}
|
|
20384
|
+
};
|
|
20385
|
+
}
|
|
20386
|
+
|
|
20274
20387
|
// ../../harness-adapter/dist/usage.js
|
|
20275
20388
|
var tokenFields = [
|
|
20276
20389
|
"inputTokens",
|
|
@@ -20298,6 +20411,7 @@ var usageFields = /* @__PURE__ */ new Set([
|
|
|
20298
20411
|
...safeIntegerFields,
|
|
20299
20412
|
...percentFields,
|
|
20300
20413
|
"sessionCacheUsage",
|
|
20414
|
+
"composerIndicators",
|
|
20301
20415
|
"totalCostUsd",
|
|
20302
20416
|
"totalCredits",
|
|
20303
20417
|
"contextUsagePercent",
|
|
@@ -20320,26 +20434,27 @@ function parseHostUsage(value) {
|
|
|
20320
20434
|
throw new Error(`Harness Usage contains unknown field '${key}'`);
|
|
20321
20435
|
}
|
|
20322
20436
|
}
|
|
20323
|
-
|
|
20437
|
+
const indicators = value.composerIndicators === void 0 ? {} : { composerIndicators: composerIndicatorsSchema.parse(value.composerIndicators) };
|
|
20438
|
+
for (const field2 of [
|
|
20324
20439
|
"totalCredits",
|
|
20325
20440
|
"contextUsagePercent",
|
|
20326
20441
|
"apiOutputTokensPerSecond"
|
|
20327
20442
|
]) {
|
|
20328
|
-
const candidate = value[
|
|
20443
|
+
const candidate = value[field2];
|
|
20329
20444
|
if (candidate !== void 0 && (typeof candidate !== "number" || !Number.isFinite(candidate) || candidate < 0)) {
|
|
20330
|
-
throw new Error(`Harness Usage '${
|
|
20445
|
+
throw new Error(`Harness Usage '${field2}' must be a finite non-negative number`);
|
|
20331
20446
|
}
|
|
20332
20447
|
}
|
|
20333
|
-
for (const
|
|
20334
|
-
const candidate = value[
|
|
20448
|
+
for (const field2 of tokenFields) {
|
|
20449
|
+
const candidate = value[field2];
|
|
20335
20450
|
if (candidate !== void 0 && (typeof candidate !== "number" || !Number.isSafeInteger(candidate) || candidate < 0)) {
|
|
20336
|
-
throw new Error(`Harness Usage '${
|
|
20451
|
+
throw new Error(`Harness Usage '${field2}' must be a non-negative safe integer`);
|
|
20337
20452
|
}
|
|
20338
20453
|
}
|
|
20339
|
-
for (const
|
|
20340
|
-
const candidate = value[
|
|
20454
|
+
for (const field2 of safeIntegerFields) {
|
|
20455
|
+
const candidate = value[field2];
|
|
20341
20456
|
if (candidate !== void 0 && (typeof candidate !== "number" || !Number.isSafeInteger(candidate) || candidate < 0)) {
|
|
20342
|
-
throw new Error(`Harness Usage '${
|
|
20457
|
+
throw new Error(`Harness Usage '${field2}' must be a non-negative safe integer`);
|
|
20343
20458
|
}
|
|
20344
20459
|
}
|
|
20345
20460
|
if (value.outputTokensPerSecond !== void 0 && (typeof value.outputTokensPerSecond !== "number" || !Number.isFinite(value.outputTokensPerSecond) || value.outputTokensPerSecond < 0)) {
|
|
@@ -20348,10 +20463,10 @@ function parseHostUsage(value) {
|
|
|
20348
20463
|
if (value.totalCostUsd !== void 0 && (typeof value.totalCostUsd !== "number" || !Number.isFinite(value.totalCostUsd) || value.totalCostUsd < 0)) {
|
|
20349
20464
|
throw new Error("Harness Usage 'totalCostUsd' must be a finite non-negative number");
|
|
20350
20465
|
}
|
|
20351
|
-
for (const
|
|
20352
|
-
const candidate = value[
|
|
20466
|
+
for (const field2 of percentFields) {
|
|
20467
|
+
const candidate = value[field2];
|
|
20353
20468
|
if (candidate !== void 0 && (typeof candidate !== "number" || !Number.isFinite(candidate) || candidate < 0 || candidate > 100)) {
|
|
20354
|
-
throw new Error(`Harness Usage '${
|
|
20469
|
+
throw new Error(`Harness Usage '${field2}' must be between 0 and 100`);
|
|
20355
20470
|
}
|
|
20356
20471
|
}
|
|
20357
20472
|
if (value.sessionCacheUsage !== void 0) {
|
|
@@ -20390,9 +20505,9 @@ function parseHostUsage(value) {
|
|
|
20390
20505
|
if (value.costSource !== "publicPrice") {
|
|
20391
20506
|
throw new Error("Harness Usage 'unpricedModels' must be provided with a 'publicPrice' cost");
|
|
20392
20507
|
}
|
|
20393
|
-
return { ...value, unpricedModels: [...models] };
|
|
20508
|
+
return { ...value, ...indicators, unpricedModels: [...models] };
|
|
20394
20509
|
}
|
|
20395
|
-
return { ...value };
|
|
20510
|
+
return { ...value, ...indicators };
|
|
20396
20511
|
}
|
|
20397
20512
|
var requestTokenFields = [
|
|
20398
20513
|
"inputTokens",
|
|
@@ -20422,19 +20537,19 @@ function parseHostUsageRequest(value) {
|
|
|
20422
20537
|
if (typeof value.requestId !== "string" || value.requestId.length === 0) {
|
|
20423
20538
|
throw new Error("Harness Usage request 'requestId' must be a non-empty string");
|
|
20424
20539
|
}
|
|
20425
|
-
for (const
|
|
20426
|
-
const candidate = value[
|
|
20540
|
+
for (const field2 of ["model", "provider"]) {
|
|
20541
|
+
const candidate = value[field2];
|
|
20427
20542
|
if (candidate !== void 0 && (typeof candidate !== "string" || candidate.length === 0)) {
|
|
20428
|
-
throw new Error(`Harness Usage request '${
|
|
20543
|
+
throw new Error(`Harness Usage request '${field2}' must be a non-empty string`);
|
|
20429
20544
|
}
|
|
20430
20545
|
}
|
|
20431
20546
|
if (value.historical !== void 0 && typeof value.historical !== "boolean") {
|
|
20432
20547
|
throw new Error("Harness Usage request 'historical' must be a boolean");
|
|
20433
20548
|
}
|
|
20434
|
-
for (const
|
|
20435
|
-
const candidate = value[
|
|
20549
|
+
for (const field2 of requestTokenFields) {
|
|
20550
|
+
const candidate = value[field2];
|
|
20436
20551
|
if (candidate !== void 0 && (typeof candidate !== "number" || !Number.isSafeInteger(candidate) || candidate < 0)) {
|
|
20437
|
-
throw new Error(`Harness Usage request '${
|
|
20552
|
+
throw new Error(`Harness Usage request '${field2}' must be a non-negative safe integer`);
|
|
20438
20553
|
}
|
|
20439
20554
|
}
|
|
20440
20555
|
if (value.inputTokens === void 0 || value.outputTokens === void 0) {
|
|
@@ -21249,9 +21364,9 @@ var DEEPSEEK_USAGE_COUNTERS = [
|
|
|
21249
21364
|
"reasoningOutputTokens"
|
|
21250
21365
|
];
|
|
21251
21366
|
function mergeDeepSeekUsage(current, next) {
|
|
21252
|
-
const counters = Object.fromEntries(DEEPSEEK_USAGE_COUNTERS.flatMap((
|
|
21253
|
-
const value = (current?.[
|
|
21254
|
-
return current?.[
|
|
21367
|
+
const counters = Object.fromEntries(DEEPSEEK_USAGE_COUNTERS.flatMap((field2) => {
|
|
21368
|
+
const value = (current?.[field2] ?? 0) + (next[field2] ?? 0);
|
|
21369
|
+
return current?.[field2] !== void 0 || next[field2] !== void 0 ? [[field2, value]] : [];
|
|
21255
21370
|
}));
|
|
21256
21371
|
const context = next.contextUsedTokens !== void 0 && next.contextWindowTokens !== void 0 ? {
|
|
21257
21372
|
contextUsedTokens: next.contextUsedTokens,
|
|
@@ -21663,7 +21778,7 @@ function onlyKeys(value, required2, optional2 = []) {
|
|
|
21663
21778
|
return required2.every((key) => Object.hasOwn(value, key)) && Reflect.ownKeys(value).every((key) => typeof key === "string" && allowed.has(key));
|
|
21664
21779
|
}
|
|
21665
21780
|
function requiredFields(value, fields) {
|
|
21666
|
-
if (fields.some((
|
|
21781
|
+
if (fields.some((field2) => !Object.hasOwn(value, field2)))
|
|
21667
21782
|
throw invalid("required fields");
|
|
21668
21783
|
}
|
|
21669
21784
|
function assertJsonValue2(value, label) {
|
|
@@ -21987,9 +22102,9 @@ function validateTeamPayload(type, data) {
|
|
|
21987
22102
|
identifier(value.id, "team payload id");
|
|
21988
22103
|
if (key === "member") {
|
|
21989
22104
|
requiredOptionalKeys(value, ["id", "name", "description", "provider", "context", "phase"], ["error"]);
|
|
21990
|
-
for (const
|
|
21991
|
-
if (typeof value[
|
|
21992
|
-
throw invalid(`team member ${
|
|
22105
|
+
for (const field2 of ["name", "description", "provider"])
|
|
22106
|
+
if (typeof value[field2] !== "string")
|
|
22107
|
+
throw invalid(`team member ${field2}`);
|
|
21993
22108
|
if (!["fresh", "fork"].includes(value.context) || !["provisioning", "active", "failed"].includes(value.phase) || value.error !== void 0 && typeof value.error !== "string")
|
|
21994
22109
|
throw invalid("team member");
|
|
21995
22110
|
} else if (key === "task") {
|
|
@@ -22003,8 +22118,8 @@ function validateTeamPayload(type, data) {
|
|
|
22003
22118
|
stringArray(value.writeScopes, "team task writeScopes");
|
|
22004
22119
|
} else {
|
|
22005
22120
|
exactKeys(value, ["id", "senderId", "senderName", "targetId", "content"]);
|
|
22006
|
-
for (const
|
|
22007
|
-
identifier(value[
|
|
22121
|
+
for (const field2 of ["senderId", "senderName", "targetId"])
|
|
22122
|
+
identifier(value[field2], `team message ${field2}`);
|
|
22008
22123
|
validateBlocks(value.content);
|
|
22009
22124
|
}
|
|
22010
22125
|
}
|
|
@@ -28006,7 +28121,7 @@ function validateToolResultMessage(value, profile) {
|
|
|
28006
28121
|
return callId;
|
|
28007
28122
|
}
|
|
28008
28123
|
function requiredFields2(value, fields) {
|
|
28009
|
-
if (fields.some((
|
|
28124
|
+
if (fields.some((field2) => !Object.hasOwn(value, field2))) {
|
|
28010
28125
|
fail("Modern history known event omitted a required field");
|
|
28011
28126
|
}
|
|
28012
28127
|
}
|
|
@@ -28031,7 +28146,7 @@ function validUsage(value) {
|
|
|
28031
28146
|
if (!nonNegativeSafeInteger2(value.inputTokens) || !nonNegativeSafeInteger2(value.outputTokens)) {
|
|
28032
28147
|
return false;
|
|
28033
28148
|
}
|
|
28034
|
-
return fields.slice(2).every((
|
|
28149
|
+
return fields.slice(2).every((field2) => value[field2] === void 0 || nonNegativeSafeInteger2(value[field2]));
|
|
28035
28150
|
}
|
|
28036
28151
|
function validateTurnReason(value) {
|
|
28037
28152
|
if (!isRecord4(value) || typeof value.kind !== "string") {
|
|
@@ -28774,6 +28889,8 @@ var ModernHarnessSession = class {
|
|
|
28774
28889
|
switch (command.type) {
|
|
28775
28890
|
case "turn.start":
|
|
28776
28891
|
return this.#start(command);
|
|
28892
|
+
case "turn.steer":
|
|
28893
|
+
return Promise.resolve(unsupportedSteer("DeepSeek Harness"));
|
|
28777
28894
|
case "turn.cancel":
|
|
28778
28895
|
return this.#cancel(command);
|
|
28779
28896
|
case "interaction.respond":
|