@codexhost/cli-darwin-x64 0.12.2 → 0.13.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 +1 -1
- package/THIRD_PARTY_NOTICES.txt +9 -1
- package/app/codexhost-distribution.json +1 -1
- package/app/console-server.mjs +319 -64
- package/app/console-web.js +5089 -1367
- package/app/desktop-controller.mjs +259 -41
- package/app/host-runtime.mjs +5735 -1564
- package/app/plugins/antigravity/manifest.json +18 -1
- package/app/plugins/antigravity/plugin.mjs +282 -41
- package/app/plugins/claude-code/manifest.json +28 -0
- package/app/plugins/claude-code/plugin.mjs +35300 -23918
- package/app/plugins/codebuddy/manifest.json +17 -0
- package/app/plugins/codebuddy/plugin.mjs +5971 -5355
- package/app/plugins/codex-usage/manifest.json +9 -0
- package/app/plugins/codex-usage/plugin.mjs +17324 -0
- package/app/plugins/cursor-cli/manifest.json +17 -0
- package/app/plugins/cursor-cli/plugin.mjs +357 -76
- package/app/plugins/deepseek-harness/assets/icon.svg +1 -0
- package/app/plugins/deepseek-harness/manifest.json +35 -2
- package/app/plugins/deepseek-harness/plugin.mjs +822 -241
- package/app/plugins/enabled.json +2 -1
- package/app/plugins/grok/manifest.json +21 -1
- package/app/plugins/grok/plugin.mjs +918 -258
- package/app/plugins/hermes/assets/icon.png +0 -0
- package/app/plugins/hermes/manifest.json +30 -2
- package/app/plugins/hermes/plugin.mjs +284 -32
- package/app/plugins/kimi-code/assets/icon.svg +5 -0
- package/app/plugins/kimi-code/manifest.json +25 -2
- package/app/plugins/kimi-code/plugin.mjs +561 -35
- package/app/plugins/kiro-cli/assets/kiro-agent.svg +11 -0
- package/app/plugins/kiro-cli/manifest.json +18 -1
- package/app/plugins/kiro-cli/plugin.mjs +290 -21
- package/app/plugins/omp/manifest.json +21 -1
- package/app/plugins/omp/plugin.mjs +2765 -1960
- package/app/plugins/opencode/manifest.json +18 -1
- package/app/plugins/opencode/plugin.mjs +723 -146
- package/app/plugins/pi/manifest.json +32 -0
- package/app/plugins/pi/plugin.mjs +2908 -2312
- package/app/plugins/qoder/manifest.json +18 -1
- package/app/plugins/qoder/plugin.mjs +634 -80
- package/app/plugins/qoder-cn/manifest.json +18 -1
- package/app/plugins/qoder-cn/plugin.mjs +634 -80
- package/app/plugins/workbuddy/manifest.json +18 -0
- package/app/plugins/workbuddy/plugin.mjs +6361 -5747
- package/app/plugins/zcode/manifest.json +19 -1
- package/app/plugins/zcode/plugin.mjs +1098 -259
- package/app/renderer-extension.js +13080 -8884
- package/bin/codexhost +0 -0
- package/libexec/codexhost-shim +0 -0
- package/libexec/codexhost-updater +0 -0
- package/licenses/Cordis-LICENSE.txt +21 -0
- package/licenses/Cosmokit-LICENSE.txt +21 -0
- package/package.json +1 -1
- package/app/plugins/kiro-cli/assets/icon.svg +0 -5
|
@@ -3,8 +3,25 @@
|
|
|
3
3
|
"id": "antigravity",
|
|
4
4
|
"name": "Antigravity CLI",
|
|
5
5
|
"version": "0.0.0",
|
|
6
|
+
"installation": {
|
|
7
|
+
"commands": [
|
|
8
|
+
{
|
|
9
|
+
"terminal": "macOS / Linux · Terminal (sh/bash)",
|
|
10
|
+
"command": "curl -fsSL https://antigravity.google/cli/install.sh | bash"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"terminal": "Windows · PowerShell",
|
|
14
|
+
"command": "irm https://antigravity.google/cli/install.ps1 | iex"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"after": {
|
|
18
|
+
"en": "After installation, run agy to complete login or setup.",
|
|
19
|
+
"zh-CN": "安装后运行 agy,完成登录或配置。"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
6
22
|
"links": {
|
|
7
|
-
"
|
|
23
|
+
"website": "https://antigravity.google/",
|
|
24
|
+
"installation": "https://antigravity.google/download#antigravity-cli"
|
|
8
25
|
},
|
|
9
26
|
"adapterApiVersion": 1,
|
|
10
27
|
"entry": "plugin.mjs",
|
|
@@ -5053,8 +5053,8 @@ function az_default() {
|
|
|
5053
5053
|
}
|
|
5054
5054
|
|
|
5055
5055
|
// ../../../node_modules/zod/v4/locales/be.js
|
|
5056
|
-
function getBelarusianPlural(
|
|
5057
|
-
const absCount = Math.abs(
|
|
5056
|
+
function getBelarusianPlural(count2, one, few, many) {
|
|
5057
|
+
const absCount = Math.abs(count2);
|
|
5058
5058
|
const lastDigit = absCount % 10;
|
|
5059
5059
|
const lastTwoDigits = absCount % 100;
|
|
5060
5060
|
if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {
|
|
@@ -7132,8 +7132,8 @@ function hu_default() {
|
|
|
7132
7132
|
}
|
|
7133
7133
|
|
|
7134
7134
|
// ../../../node_modules/zod/v4/locales/hy.js
|
|
7135
|
-
function getArmenianPlural(
|
|
7136
|
-
return Math.abs(
|
|
7135
|
+
function getArmenianPlural(count2, one, many) {
|
|
7136
|
+
return Math.abs(count2) === 1 ? one : many;
|
|
7137
7137
|
}
|
|
7138
7138
|
function withDefiniteArticle(word) {
|
|
7139
7139
|
if (!word)
|
|
@@ -9261,8 +9261,8 @@ function ro_default() {
|
|
|
9261
9261
|
}
|
|
9262
9262
|
|
|
9263
9263
|
// ../../../node_modules/zod/v4/locales/ru.js
|
|
9264
|
-
function getRussianPlural(
|
|
9265
|
-
const absCount = Math.abs(
|
|
9264
|
+
function getRussianPlural(count2, one, few, many) {
|
|
9265
|
+
const absCount = Math.abs(count2);
|
|
9266
9266
|
const lastDigit = absCount % 10;
|
|
9267
9267
|
const lastTwoDigits = absCount % 100;
|
|
9268
9268
|
if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {
|
|
@@ -14931,6 +14931,15 @@ function date4(params) {
|
|
|
14931
14931
|
// ../../../node_modules/zod/v4/classic/external.js
|
|
14932
14932
|
config(en_default());
|
|
14933
14933
|
|
|
14934
|
+
// ../../shared-contracts/dist/delegation-read.js
|
|
14935
|
+
var REMOTE_THREAD_REPLY_MAX_BYTES = 16 * 1024 * 1024;
|
|
14936
|
+
var delegationReadParamsSchema = external_exports.strictObject({
|
|
14937
|
+
threadId: external_exports.string().min(1).max(1024),
|
|
14938
|
+
view: external_exports.enum(["result", "messages"]),
|
|
14939
|
+
cursor: external_exports.string().min(1).max(8192).optional(),
|
|
14940
|
+
limit: external_exports.number().int().min(1).max(100).optional()
|
|
14941
|
+
});
|
|
14942
|
+
|
|
14934
14943
|
// ../../shared-contracts/dist/credential-imports.js
|
|
14935
14944
|
var credentialSourceSchema = external_exports.object({
|
|
14936
14945
|
id: external_exports.string().min(1).max(256),
|
|
@@ -15001,6 +15010,160 @@ var harnessDisplaySetSchema = external_exports.strictObject({
|
|
|
15001
15010
|
initializeOnly: external_exports.boolean().optional()
|
|
15002
15011
|
});
|
|
15003
15012
|
|
|
15013
|
+
// ../../shared-contracts/dist/model-price-overrides.js
|
|
15014
|
+
var usdPerMillionTokens = external_exports.number().finite().nonnegative();
|
|
15015
|
+
var modelPriceOverrideSchema = external_exports.strictObject({
|
|
15016
|
+
input: usdPerMillionTokens,
|
|
15017
|
+
output: usdPerMillionTokens,
|
|
15018
|
+
cacheRead: usdPerMillionTokens.optional(),
|
|
15019
|
+
cacheWrite: usdPerMillionTokens.optional(),
|
|
15020
|
+
cacheWrite1h: usdPerMillionTokens.optional()
|
|
15021
|
+
});
|
|
15022
|
+
var modelPriceKeySchema = external_exports.string().max(512).refine((key) => key.trim() === key && key.length > 0, "Model ID is required");
|
|
15023
|
+
var modelPriceOverridesSchema = external_exports.strictObject({
|
|
15024
|
+
/** Absolute path of the Host's `pricing.json`. */
|
|
15025
|
+
path: external_exports.string(),
|
|
15026
|
+
entries: external_exports.array(external_exports.strictObject({ key: external_exports.string(), price: modelPriceOverrideSchema })),
|
|
15027
|
+
/** Why the existing file is unusable; the Host then ignores it and refuses to overwrite it. */
|
|
15028
|
+
error: external_exports.string().nullable()
|
|
15029
|
+
});
|
|
15030
|
+
var modelPriceOverridesGetSchema = external_exports.strictObject({});
|
|
15031
|
+
var modelPriceOverridesSetSchema = external_exports.strictObject({
|
|
15032
|
+
key: modelPriceKeySchema,
|
|
15033
|
+
price: modelPriceOverrideSchema.nullable(),
|
|
15034
|
+
previousKey: modelPriceKeySchema.optional()
|
|
15035
|
+
});
|
|
15036
|
+
var modelPriceDefaultParamsSchema = external_exports.strictObject({
|
|
15037
|
+
model: modelPriceKeySchema
|
|
15038
|
+
});
|
|
15039
|
+
var modelPriceSuggestionSchema = external_exports.strictObject({
|
|
15040
|
+
/** Verified from catalog canonical links, not inferred from names or equal prices. */
|
|
15041
|
+
official: external_exports.boolean().optional(),
|
|
15042
|
+
canonicalModelId: external_exports.string().min(1).optional(),
|
|
15043
|
+
provider: external_exports.string().min(1).max(512),
|
|
15044
|
+
model: external_exports.string().min(1).max(512),
|
|
15045
|
+
price: modelPriceOverrideSchema
|
|
15046
|
+
});
|
|
15047
|
+
var modelPriceDefaultResultSchema = external_exports.strictObject({
|
|
15048
|
+
price: modelPriceOverrideSchema.nullable(),
|
|
15049
|
+
/** Local catalog suggestions only; never used automatically for pricing. */
|
|
15050
|
+
suggestions: external_exports.array(modelPriceSuggestionSchema).max(6).optional()
|
|
15051
|
+
});
|
|
15052
|
+
|
|
15053
|
+
// ../../shared-contracts/dist/usage-statistics.js
|
|
15054
|
+
var USAGE_STATISTICS_RANGES = ["today", "7d", "30d", "90d", "all"];
|
|
15055
|
+
var count = external_exports.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
|
|
15056
|
+
var localDate = external_exports.string().regex(/^\d{4}-\d{2}-\d{2}$/u);
|
|
15057
|
+
var harness = external_exports.string().min(1).max(128);
|
|
15058
|
+
var model = external_exports.string().min(1).max(512);
|
|
15059
|
+
var project = external_exports.string().min(1).max(4096);
|
|
15060
|
+
var usageStatisticsParamsSchema = external_exports.strictObject({
|
|
15061
|
+
range: external_exports.enum(USAGE_STATISTICS_RANGES),
|
|
15062
|
+
harness: harness.optional(),
|
|
15063
|
+
model: model.nullable().optional(),
|
|
15064
|
+
project: project.nullable().optional(),
|
|
15065
|
+
/** One local date inside the range. */
|
|
15066
|
+
date: localDate.optional()
|
|
15067
|
+
});
|
|
15068
|
+
var usageStatisticsTotalsSchema = external_exports.strictObject({
|
|
15069
|
+
requests: count,
|
|
15070
|
+
inputTokens: count,
|
|
15071
|
+
cachedInputTokens: count,
|
|
15072
|
+
cacheWriteInputTokens: count,
|
|
15073
|
+
cacheKnownInputTokens: count,
|
|
15074
|
+
outputTokens: count,
|
|
15075
|
+
reasoningOutputTokens: count,
|
|
15076
|
+
/** USD at the public price, summed over the priced requests only. */
|
|
15077
|
+
costUsd: external_exports.number().finite().min(0),
|
|
15078
|
+
/** Requests without a price (or the cache data the price needs); not in `costUsd`. */
|
|
15079
|
+
unpricedRequests: count,
|
|
15080
|
+
/**
|
|
15081
|
+
* Requests whose storage gave no token counts: counted as requests, with neither tokens nor
|
|
15082
|
+
* cost, and not as unpriced.
|
|
15083
|
+
*/
|
|
15084
|
+
unmeteredRequests: count
|
|
15085
|
+
});
|
|
15086
|
+
var totals = usageStatisticsTotalsSchema.shape;
|
|
15087
|
+
var usageStatisticsSessionSchema = external_exports.strictObject({
|
|
15088
|
+
harness,
|
|
15089
|
+
sessionId: external_exports.string().min(1).max(512),
|
|
15090
|
+
project: project.nullable(),
|
|
15091
|
+
/** Persisted Desktop title for a mapped Session, otherwise its native name; may be absent. */
|
|
15092
|
+
title: external_exports.string().min(1).max(200).optional(),
|
|
15093
|
+
/** Models the session used, most requests first. */
|
|
15094
|
+
models: external_exports.array(model).max(16),
|
|
15095
|
+
firstAtMs: count,
|
|
15096
|
+
lastAtMs: count,
|
|
15097
|
+
...totals
|
|
15098
|
+
});
|
|
15099
|
+
var usageStatisticsResultSchema = external_exports.strictObject({
|
|
15100
|
+
range: external_exports.enum(USAGE_STATISTICS_RANGES),
|
|
15101
|
+
/** First local date of the range; null for all time. */
|
|
15102
|
+
from: localDate.nullable(),
|
|
15103
|
+
to: localDate,
|
|
15104
|
+
/** The filters these figures apply, echoed so a late answer to older filters is recognised. */
|
|
15105
|
+
filters: external_exports.strictObject({
|
|
15106
|
+
harness: harness.nullable(),
|
|
15107
|
+
model: model.nullable(),
|
|
15108
|
+
unknownModel: external_exports.boolean(),
|
|
15109
|
+
project: project.nullable(),
|
|
15110
|
+
unknownProject: external_exports.boolean(),
|
|
15111
|
+
date: localDate.nullable()
|
|
15112
|
+
}),
|
|
15113
|
+
/** Reading of native storage: incomplete while the first read, or a refresh, is under way. */
|
|
15114
|
+
reading: external_exports.strictObject({ complete: external_exports.boolean(), sources: count, read: count }),
|
|
15115
|
+
/** Harnesses whose storage could not be read; their part is missing, the rest is complete. */
|
|
15116
|
+
failures: external_exports.array(external_exports.strictObject({ harness, message: external_exports.string().max(2048) })).max(256),
|
|
15117
|
+
/** Every value seen in the range, ignoring the filters, to choose filters from. */
|
|
15118
|
+
options: external_exports.strictObject({
|
|
15119
|
+
harnesses: external_exports.array(harness).max(256),
|
|
15120
|
+
models: external_exports.array(model.nullable()).max(4096),
|
|
15121
|
+
projects: external_exports.array(project.nullable()).max(4096)
|
|
15122
|
+
}),
|
|
15123
|
+
/** Current display metadata, scoped by Harness. Never a pricing or filter identity.
|
|
15124
|
+
* Optional for older Hosts; missing/conflicting labels fall back to the native model ID.
|
|
15125
|
+
*/
|
|
15126
|
+
modelLabels: external_exports.array(external_exports.strictObject({ harness, model, label: model })).max(4096).optional(),
|
|
15127
|
+
/** Native credits, all filters applied, never combined across Harnesses or treated as USD.
|
|
15128
|
+
* Only groups with at least one reported value appear; reportedRequests exposes partial data.
|
|
15129
|
+
*/
|
|
15130
|
+
credits: external_exports.array(external_exports.strictObject({
|
|
15131
|
+
harness,
|
|
15132
|
+
model: model.nullable(),
|
|
15133
|
+
credits: external_exports.number().finite().min(0),
|
|
15134
|
+
reportedRequests: count,
|
|
15135
|
+
requests: count
|
|
15136
|
+
})).max(4096).optional(),
|
|
15137
|
+
/** All filters applied. */
|
|
15138
|
+
totals: usageStatisticsTotalsSchema,
|
|
15139
|
+
/** Each date and Harness of the range: every filter except the day. */
|
|
15140
|
+
daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
|
|
15141
|
+
/** Local weekday (0 = Sunday) and hour, all filters applied. */
|
|
15142
|
+
hourly: external_exports.array(external_exports.strictObject({
|
|
15143
|
+
weekday: external_exports.number().int().min(0).max(6),
|
|
15144
|
+
hour: external_exports.number().int().min(0).max(23),
|
|
15145
|
+
...totals
|
|
15146
|
+
})).max(168),
|
|
15147
|
+
byHarness: external_exports.array(external_exports.strictObject({ harness, ...totals })).max(256),
|
|
15148
|
+
byModel: external_exports.array(external_exports.strictObject({
|
|
15149
|
+
model: model.nullable(),
|
|
15150
|
+
...totals,
|
|
15151
|
+
/** Requests priced by what the Harness recorded they cost, not by a price list. */
|
|
15152
|
+
harnessPricedRequests: count
|
|
15153
|
+
})).max(4096),
|
|
15154
|
+
byProject: external_exports.array(external_exports.strictObject({ project: project.nullable(), ...totals })).max(4096),
|
|
15155
|
+
/**
|
|
15156
|
+
* The sessions that spent the most, by cost and by tokens without cache, all filters applied;
|
|
15157
|
+
* requests without a native session are not listed here but count everywhere else.
|
|
15158
|
+
*/
|
|
15159
|
+
sessions: external_exports.array(usageStatisticsSessionSchema).max(100),
|
|
15160
|
+
/**
|
|
15161
|
+
* The sessions last active in the range, newest first, all filters applied. Optional for older
|
|
15162
|
+
* Hosts; missing is treated as no list rather than no sessions.
|
|
15163
|
+
*/
|
|
15164
|
+
recentSessions: external_exports.array(usageStatisticsSessionSchema).max(100).optional()
|
|
15165
|
+
});
|
|
15166
|
+
|
|
15004
15167
|
// ../../shared-contracts/dist/ids.js
|
|
15005
15168
|
var opaqueIdSchema = external_exports.string().refine((value) => value.trim().length > 0, {
|
|
15006
15169
|
message: "Identifier must not be empty or whitespace"
|
|
@@ -15048,6 +15211,10 @@ var CONSOLE_HOST_METHODS = Object.freeze([
|
|
|
15048
15211
|
"codexhost/account/list",
|
|
15049
15212
|
"codexhost/account/refresh",
|
|
15050
15213
|
"codexhost/account/usage/inspect",
|
|
15214
|
+
"codexhost/usage/model-prices/get",
|
|
15215
|
+
"codexhost/usage/model-prices/set",
|
|
15216
|
+
"codexhost/usage/model-prices/default",
|
|
15217
|
+
"codexhost/usage/statistics/get",
|
|
15051
15218
|
"codexhost/update/check",
|
|
15052
15219
|
"codexhost/update/start",
|
|
15053
15220
|
"codexhost/update/status"
|
|
@@ -15112,6 +15279,7 @@ var threadUsageSnapshotSchema = external_exports.object({
|
|
|
15112
15279
|
cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
|
|
15113
15280
|
outputTokens: nonNegativeSafeIntegerSchema.optional(),
|
|
15114
15281
|
outputTokensPerSecond: finiteNonNegativeNumberSchema.optional(),
|
|
15282
|
+
apiOutputTokensPerSecond: finiteNonNegativeNumberSchema.optional(),
|
|
15115
15283
|
reasoningOutputTokens: nonNegativeSafeIntegerSchema.optional(),
|
|
15116
15284
|
totalTokens: nonNegativeSafeIntegerSchema.optional(),
|
|
15117
15285
|
totalCostUsd: finiteNonNegativeNumberSchema.optional(),
|
|
@@ -15123,7 +15291,11 @@ var threadUsageSnapshotSchema = external_exports.object({
|
|
|
15123
15291
|
planFiveHourUsedPercent: cacheHitRatePercentSchema.optional(),
|
|
15124
15292
|
planFiveHourResetsAtUnix: nonNegativeSafeIntegerSchema.optional(),
|
|
15125
15293
|
planSevenDayUsedPercent: cacheHitRatePercentSchema.optional(),
|
|
15126
|
-
planSevenDayResetsAtUnix: nonNegativeSafeIntegerSchema.optional()
|
|
15294
|
+
planSevenDayResetsAtUnix: nonNegativeSafeIntegerSchema.optional(),
|
|
15295
|
+
sessionCacheHitRatePercent: cacheHitRatePercentSchema.optional(),
|
|
15296
|
+
timeToFirstOutputMs: nonNegativeSafeIntegerSchema.optional(),
|
|
15297
|
+
costSource: external_exports.enum(["publicPrice", "native"]).optional(),
|
|
15298
|
+
unpricedModels: external_exports.array(external_exports.string().min(1)).min(1).optional()
|
|
15127
15299
|
}).strict().superRefine((usage, context) => {
|
|
15128
15300
|
if (Object.keys(usage).length === 0) {
|
|
15129
15301
|
context.addIssue({ code: "custom", message: "Thread Usage must contain a reliable field" });
|
|
@@ -15144,6 +15316,20 @@ var threadUsageSnapshotSchema = external_exports.object({
|
|
|
15144
15316
|
path: ["contextWindowTokens"]
|
|
15145
15317
|
});
|
|
15146
15318
|
}
|
|
15319
|
+
if (usage.costSource !== void 0 && usage.totalCostUsd === void 0) {
|
|
15320
|
+
context.addIssue({
|
|
15321
|
+
code: "custom",
|
|
15322
|
+
message: "Thread Usage costSource must be provided with totalCostUsd",
|
|
15323
|
+
path: ["costSource"]
|
|
15324
|
+
});
|
|
15325
|
+
}
|
|
15326
|
+
if (usage.unpricedModels !== void 0 && usage.costSource !== "publicPrice") {
|
|
15327
|
+
context.addIssue({
|
|
15328
|
+
code: "custom",
|
|
15329
|
+
message: "Thread Usage unpricedModels must be provided with a publicPrice cost",
|
|
15330
|
+
path: ["unpricedModels"]
|
|
15331
|
+
});
|
|
15332
|
+
}
|
|
15147
15333
|
if (usage.planFiveHourResetsAtUnix !== void 0 && usage.planFiveHourUsedPercent === void 0) {
|
|
15148
15334
|
context.addIssue({
|
|
15149
15335
|
code: "custom",
|
|
@@ -15398,27 +15584,27 @@ var harnessModelCatalogSchema = external_exports.object({
|
|
|
15398
15584
|
}).strict().superRefine((catalog, context) => {
|
|
15399
15585
|
const refs = /* @__PURE__ */ new Set();
|
|
15400
15586
|
const thinkingIds = new Set(catalog.thinkingOptions.map(({ id }) => id));
|
|
15401
|
-
for (const [index,
|
|
15402
|
-
if (refs.has(
|
|
15587
|
+
for (const [index, model2] of catalog.models.entries()) {
|
|
15588
|
+
if (refs.has(model2.ref.id)) {
|
|
15403
15589
|
context.addIssue({
|
|
15404
15590
|
code: "custom",
|
|
15405
15591
|
message: "Model Catalog refs must be unique",
|
|
15406
15592
|
path: ["models", index, "ref", "id"]
|
|
15407
15593
|
});
|
|
15408
15594
|
}
|
|
15409
|
-
refs.add(
|
|
15410
|
-
if (
|
|
15411
|
-
if (refs.has(
|
|
15595
|
+
refs.add(model2.ref.id);
|
|
15596
|
+
if (model2.fastModel) {
|
|
15597
|
+
if (refs.has(model2.fastModel.id) || catalog.models.some((entry) => entry.ref.id === model2.fastModel?.id)) {
|
|
15412
15598
|
context.addIssue({
|
|
15413
15599
|
code: "custom",
|
|
15414
15600
|
message: "Fast Model refs must be distinct and unique",
|
|
15415
15601
|
path: ["models", index, "fastModel"]
|
|
15416
15602
|
});
|
|
15417
15603
|
}
|
|
15418
|
-
refs.add(
|
|
15604
|
+
refs.add(model2.fastModel.id);
|
|
15419
15605
|
}
|
|
15420
15606
|
const supportedThinkingIds = /* @__PURE__ */ new Set();
|
|
15421
|
-
for (const [optionIndex, optionId] of (
|
|
15607
|
+
for (const [optionIndex, optionId] of (model2.supportedThinkingOptionIds ?? []).entries()) {
|
|
15422
15608
|
if (supportedThinkingIds.has(optionId)) {
|
|
15423
15609
|
context.addIssue({
|
|
15424
15610
|
code: "custom",
|
|
@@ -15612,13 +15798,40 @@ var HARNESS_PLUGIN_LIMIT = 128;
|
|
|
15612
15798
|
var harnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).refine((id) => id !== "codex", "The official Codex identity is reserved").pipe(harnessIdSchema);
|
|
15613
15799
|
var relativeResourceSchema = external_exports.string().min(1).max(512).refine((value) => !/[\\\u0000:#?]/u.test(value) && !value.startsWith("/") && !value.split("/").some((part) => part === ".." || part === ""), "Plugin resources must be relative paths inside the plugin");
|
|
15614
15800
|
var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
|
|
15801
|
+
var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
|
|
15802
|
+
var harnessInstallationGuideSchema = external_exports.object({
|
|
15803
|
+
commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
|
|
15804
|
+
before: localizedTextSchema.optional(),
|
|
15805
|
+
after: localizedTextSchema.optional(),
|
|
15806
|
+
downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
|
|
15807
|
+
}).strict();
|
|
15615
15808
|
var pluginPresentationShape = {
|
|
15616
15809
|
id: harnessPluginIdSchema,
|
|
15617
15810
|
name: external_exports.string().trim().min(1).max(128),
|
|
15618
15811
|
version: external_exports.string().min(1).max(128),
|
|
15812
|
+
/** Capability-only plugin; omitted for existing session-capable plugins. */
|
|
15813
|
+
kind: external_exports.literal("usage").optional(),
|
|
15814
|
+
/** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
|
|
15815
|
+
iconStyle: external_exports.object({
|
|
15816
|
+
vector: external_exports.object({
|
|
15817
|
+
viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
|
|
15818
|
+
color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
|
|
15819
|
+
paths: external_exports.array(external_exports.object({
|
|
15820
|
+
d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
|
|
15821
|
+
fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
|
|
15822
|
+
fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
|
|
15823
|
+
}).strict()).min(1).max(32)
|
|
15824
|
+
}).strict().optional(),
|
|
15825
|
+
background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
|
|
15826
|
+
borderRadius: external_exports.number().min(0).max(50).optional(),
|
|
15827
|
+
paddingRatio: external_exports.number().min(0).max(0.25).optional()
|
|
15828
|
+
}).strict().optional(),
|
|
15829
|
+
installation: harnessInstallationGuideSchema.optional(),
|
|
15830
|
+
notice: localizedTextSchema.optional(),
|
|
15619
15831
|
/** The factory accepts a persisted local entrypoint through its construction context. */
|
|
15620
15832
|
launchCommand: external_exports.literal(true).optional(),
|
|
15621
15833
|
links: external_exports.object({
|
|
15834
|
+
website: documentationUrlSchema.optional(),
|
|
15622
15835
|
documentation: documentationUrlSchema.optional(),
|
|
15623
15836
|
installation: documentationUrlSchema.optional()
|
|
15624
15837
|
}).strict().optional()
|
|
@@ -16037,6 +16250,11 @@ var codexSshDraftSchema = external_exports.strictObject({
|
|
|
16037
16250
|
});
|
|
16038
16251
|
var remoteConnectionsRequestSchema = external_exports.discriminatedUnion("action", [
|
|
16039
16252
|
external_exports.strictObject({ action: external_exports.literal("list") }),
|
|
16253
|
+
external_exports.strictObject({
|
|
16254
|
+
action: external_exports.literal("read-thread"),
|
|
16255
|
+
hostId: hostId.refine((id) => id !== "local"),
|
|
16256
|
+
input: delegationReadParamsSchema
|
|
16257
|
+
}),
|
|
16040
16258
|
external_exports.strictObject({
|
|
16041
16259
|
action: external_exports.literal("save"),
|
|
16042
16260
|
draft: codexSshDraftSchema,
|
|
@@ -16167,10 +16385,12 @@ var tokenFields = [
|
|
|
16167
16385
|
];
|
|
16168
16386
|
var safeIntegerFields = [
|
|
16169
16387
|
"planFiveHourResetsAtUnix",
|
|
16170
|
-
"planSevenDayResetsAtUnix"
|
|
16388
|
+
"planSevenDayResetsAtUnix",
|
|
16389
|
+
"timeToFirstOutputMs"
|
|
16171
16390
|
];
|
|
16172
16391
|
var percentFields = [
|
|
16173
16392
|
"cacheHitRatePercent",
|
|
16393
|
+
"sessionCacheHitRatePercent",
|
|
16174
16394
|
"planFiveHourUsedPercent",
|
|
16175
16395
|
"planSevenDayUsedPercent"
|
|
16176
16396
|
];
|
|
@@ -16178,10 +16398,31 @@ var usageFields = /* @__PURE__ */ new Set([
|
|
|
16178
16398
|
...tokenFields,
|
|
16179
16399
|
...safeIntegerFields,
|
|
16180
16400
|
...percentFields,
|
|
16401
|
+
"sessionCacheUsage",
|
|
16181
16402
|
"totalCostUsd",
|
|
16182
16403
|
"totalCredits",
|
|
16183
16404
|
"contextUsagePercent",
|
|
16184
|
-
"outputTokensPerSecond"
|
|
16405
|
+
"outputTokensPerSecond",
|
|
16406
|
+
"apiOutputTokensPerSecond",
|
|
16407
|
+
"costSource",
|
|
16408
|
+
"unpricedModels"
|
|
16409
|
+
]);
|
|
16410
|
+
var requestTokenFields = [
|
|
16411
|
+
"inputTokens",
|
|
16412
|
+
"cachedInputTokens",
|
|
16413
|
+
"cacheWriteInputTokens",
|
|
16414
|
+
"cacheWrite1hInputTokens",
|
|
16415
|
+
"outputTokens",
|
|
16416
|
+
"reasoningOutputTokens",
|
|
16417
|
+
"startedAtMs",
|
|
16418
|
+
"completedAtMs"
|
|
16419
|
+
];
|
|
16420
|
+
var requestFields = /* @__PURE__ */ new Set([
|
|
16421
|
+
...requestTokenFields,
|
|
16422
|
+
"requestId",
|
|
16423
|
+
"historical",
|
|
16424
|
+
"model",
|
|
16425
|
+
"provider"
|
|
16185
16426
|
]);
|
|
16186
16427
|
|
|
16187
16428
|
// dist/command.js
|
|
@@ -16346,14 +16587,14 @@ var AntigravityHistory = class _AntigravityHistory {
|
|
|
16346
16587
|
const file2 = historyPath(input.environment);
|
|
16347
16588
|
const nativeSessionId = input.nativeSessionId ?? null;
|
|
16348
16589
|
let turns = [];
|
|
16349
|
-
let
|
|
16590
|
+
let model2;
|
|
16350
16591
|
let thinkingOptionId;
|
|
16351
16592
|
if (file2 && nativeSessionId) {
|
|
16352
16593
|
try {
|
|
16353
16594
|
const parsed = historySchema.safeParse(JSON.parse(await readFile(file2, "utf8")));
|
|
16354
16595
|
if (parsed.success && parsed.data.nativeSessionId === nativeSessionId) {
|
|
16355
16596
|
turns = parsed.data.turns;
|
|
16356
|
-
|
|
16597
|
+
model2 = parsed.data.model;
|
|
16357
16598
|
thinkingOptionId = parsed.data.thinkingOptionId;
|
|
16358
16599
|
}
|
|
16359
16600
|
} catch {
|
|
@@ -16374,7 +16615,7 @@ var AntigravityHistory = class _AntigravityHistory {
|
|
|
16374
16615
|
file: file2,
|
|
16375
16616
|
nativeSessionId,
|
|
16376
16617
|
turns,
|
|
16377
|
-
...
|
|
16618
|
+
...model2 ? { model: model2 } : {},
|
|
16378
16619
|
...thinkingOptionId ? { thinkingOptionId } : {}
|
|
16379
16620
|
});
|
|
16380
16621
|
}
|
|
@@ -16456,8 +16697,8 @@ var AntigravityHistory = class _AntigravityHistory {
|
|
|
16456
16697
|
this.#nativeSessionId = nativeSessionId;
|
|
16457
16698
|
this.#queueWrite();
|
|
16458
16699
|
}
|
|
16459
|
-
setSelection(
|
|
16460
|
-
this.#model =
|
|
16700
|
+
setSelection(model2, thinkingOptionId) {
|
|
16701
|
+
this.#model = model2;
|
|
16461
16702
|
this.#thinkingOptionId = thinkingOptionId;
|
|
16462
16703
|
this.#queueWrite();
|
|
16463
16704
|
}
|
|
@@ -16486,7 +16727,7 @@ var AntigravityHistory = class _AntigravityHistory {
|
|
|
16486
16727
|
const file2 = this.#file;
|
|
16487
16728
|
const nativeSessionId = this.#nativeSessionId;
|
|
16488
16729
|
const turns = this.#turns.map(jsonTurn);
|
|
16489
|
-
const
|
|
16730
|
+
const model2 = this.#model;
|
|
16490
16731
|
const thinkingOptionId = this.#thinkingOptionId;
|
|
16491
16732
|
this.#write = this.#write.catch(() => void 0).then(async () => {
|
|
16492
16733
|
const directory = path5.dirname(file2);
|
|
@@ -16497,7 +16738,7 @@ var AntigravityHistory = class _AntigravityHistory {
|
|
|
16497
16738
|
formatVersion: HISTORY_VERSION,
|
|
16498
16739
|
nativeSessionId,
|
|
16499
16740
|
turns,
|
|
16500
|
-
...
|
|
16741
|
+
...model2 ? { model: model2 } : {},
|
|
16501
16742
|
...thinkingOptionId ? { thinkingOptionId } : {}
|
|
16502
16743
|
})}
|
|
16503
16744
|
`, { mode: 384 });
|
|
@@ -16706,14 +16947,14 @@ async function forkAntigravitySession(options) {
|
|
|
16706
16947
|
}
|
|
16707
16948
|
} : {}
|
|
16708
16949
|
}));
|
|
16709
|
-
const
|
|
16950
|
+
const model2 = sourceSession?.model ?? sourceHistory.model;
|
|
16710
16951
|
const thinkingOptionId = sourceSession?.thinkingOptionId ?? sourceHistory.thinkingOptionId;
|
|
16711
16952
|
const permissionMode = sourceSession?.permissionMode ?? "dangerously-skip-permissions";
|
|
16712
16953
|
const forkedHistory = await AntigravityHistory.createDerived({
|
|
16713
16954
|
environment: sessionEnvironment,
|
|
16714
16955
|
nativeSessionId: derivedNativeSessionId,
|
|
16715
16956
|
turns: copiedTurns,
|
|
16716
|
-
...
|
|
16957
|
+
...model2 ? { model: model2 } : {},
|
|
16717
16958
|
...thinkingOptionId ? { thinkingOptionId } : {}
|
|
16718
16959
|
});
|
|
16719
16960
|
await Promise.all([
|
|
@@ -16728,7 +16969,7 @@ async function forkAntigravitySession(options) {
|
|
|
16728
16969
|
const session = createSession({
|
|
16729
16970
|
history: forkedHistory,
|
|
16730
16971
|
nativeRef: derivedNativeRef,
|
|
16731
|
-
...
|
|
16972
|
+
...model2 ? { model: model2 } : {},
|
|
16732
16973
|
...thinkingOptionId ? { thinkingOptionId } : {},
|
|
16733
16974
|
permissionMode,
|
|
16734
16975
|
cwd: input.cwd,
|
|
@@ -16810,19 +17051,19 @@ function parseAntigravityModels(output) {
|
|
|
16810
17051
|
...defaultThinkingOptionId ? { defaultThinkingOptionId } : {}
|
|
16811
17052
|
});
|
|
16812
17053
|
}
|
|
16813
|
-
function antigravityModelArguments(
|
|
16814
|
-
if (!
|
|
17054
|
+
function antigravityModelArguments(model2, thinkingOptionId) {
|
|
17055
|
+
if (!model2)
|
|
16815
17056
|
return [];
|
|
16816
|
-
const arguments_ = ["--model",
|
|
16817
|
-
if (thinkingOptionId && !EFFORT_SUFFIX_PATTERN.test(
|
|
17057
|
+
const arguments_ = ["--model", model2.id];
|
|
17058
|
+
if (thinkingOptionId && !EFFORT_SUFFIX_PATTERN.test(model2.id)) {
|
|
16818
17059
|
arguments_.push("--effort", thinkingOptionId);
|
|
16819
17060
|
}
|
|
16820
17061
|
return arguments_;
|
|
16821
17062
|
}
|
|
16822
|
-
function antigravityAvailableThinkingOptions(catalog,
|
|
16823
|
-
if (!catalog || !
|
|
17063
|
+
function antigravityAvailableThinkingOptions(catalog, model2) {
|
|
17064
|
+
if (!catalog || !model2)
|
|
16824
17065
|
return void 0;
|
|
16825
|
-
const supported = catalog.models.find(({ ref }) => ref.id ===
|
|
17066
|
+
const supported = catalog.models.find(({ ref }) => ref.id === model2.id)?.supportedThinkingOptionIds;
|
|
16826
17067
|
if (!supported)
|
|
16827
17068
|
return void 0;
|
|
16828
17069
|
const options = supported.flatMap((id) => {
|
|
@@ -16920,14 +17161,14 @@ async function rollbackAntigravityLastTurn(options) {
|
|
|
16920
17161
|
}
|
|
16921
17162
|
} : {}
|
|
16922
17163
|
}));
|
|
16923
|
-
const
|
|
17164
|
+
const model2 = sourceSession?.model ?? sourceHistory.model;
|
|
16924
17165
|
const thinkingOptionId = sourceSession?.thinkingOptionId ?? sourceHistory.thinkingOptionId;
|
|
16925
17166
|
const permissionMode = sourceSession?.permissionMode ?? "dangerously-skip-permissions";
|
|
16926
17167
|
const rolledBackHistory = await AntigravityHistory.createDerived({
|
|
16927
17168
|
environment: sessionEnvironment,
|
|
16928
17169
|
nativeSessionId: derivedNativeSessionId,
|
|
16929
17170
|
turns: mappedTurns,
|
|
16930
|
-
...
|
|
17171
|
+
...model2 ? { model: model2 } : {},
|
|
16931
17172
|
...thinkingOptionId ? { thinkingOptionId } : {}
|
|
16932
17173
|
});
|
|
16933
17174
|
await Promise.all([
|
|
@@ -16942,7 +17183,7 @@ async function rollbackAntigravityLastTurn(options) {
|
|
|
16942
17183
|
const session = createSession({
|
|
16943
17184
|
history: rolledBackHistory,
|
|
16944
17185
|
nativeRef: derivedNativeRef,
|
|
16945
|
-
...
|
|
17186
|
+
...model2 ? { model: model2 } : {},
|
|
16946
17187
|
...thinkingOptionId ? { thinkingOptionId } : {},
|
|
16947
17188
|
permissionMode,
|
|
16948
17189
|
cwd: input.cwd,
|
|
@@ -19823,10 +20064,10 @@ var AntigravityAdapter = class {
|
|
|
19823
20064
|
...nativeRef ? { nativeSessionId: nativeRef.nativeSessionId } : {},
|
|
19824
20065
|
...input.kind === "resume" && input.knownTurnRefs ? { knownTurnRefs: input.knownTurnRefs } : {}
|
|
19825
20066
|
});
|
|
19826
|
-
const
|
|
20067
|
+
const model2 = (input.kind === "create" ? input.model : void 0) ?? history.model;
|
|
19827
20068
|
const thinkingOptionId = (input.kind === "create" ? input.thinkingOptionId : void 0) ?? history.thinkingOptionId;
|
|
19828
20069
|
if (thinkingOptionId) {
|
|
19829
|
-
const available = antigravityAvailableThinkingOptions(catalog,
|
|
20070
|
+
const available = antigravityAvailableThinkingOptions(catalog, model2);
|
|
19830
20071
|
if (!available?.some(({ id }) => id === thinkingOptionId)) {
|
|
19831
20072
|
return {
|
|
19832
20073
|
ok: false,
|
|
@@ -19838,15 +20079,15 @@ var AntigravityAdapter = class {
|
|
|
19838
20079
|
};
|
|
19839
20080
|
}
|
|
19840
20081
|
}
|
|
19841
|
-
if (
|
|
19842
|
-
history.setSelection(
|
|
20082
|
+
if (model2 || thinkingOptionId)
|
|
20083
|
+
history.setSelection(model2, thinkingOptionId);
|
|
19843
20084
|
const session = new AntigravitySession({
|
|
19844
20085
|
...catalog ? { catalog } : {},
|
|
19845
20086
|
cwd: input.cwd,
|
|
19846
20087
|
environment: sessionEnvironment,
|
|
19847
20088
|
executable,
|
|
19848
20089
|
history,
|
|
19849
|
-
...
|
|
20090
|
+
...model2 ? { model: model2 } : {},
|
|
19850
20091
|
...nativeRef ? { nativeRef } : {},
|
|
19851
20092
|
permissionMode,
|
|
19852
20093
|
printTimeout: this.#printTimeout,
|
|
@@ -3,7 +3,35 @@
|
|
|
3
3
|
"id": "claude-code",
|
|
4
4
|
"name": "Claude Code",
|
|
5
5
|
"version": "0.0.0",
|
|
6
|
+
"iconStyle": {
|
|
7
|
+
"vector": {
|
|
8
|
+
"viewBox": "0 0 24 24",
|
|
9
|
+
"color": "#d97757",
|
|
10
|
+
"paths": [
|
|
11
|
+
{
|
|
12
|
+
"d": "M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z"
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"installation": {
|
|
18
|
+
"commands": [
|
|
19
|
+
{
|
|
20
|
+
"terminal": "macOS / Linux · Terminal (sh/bash)",
|
|
21
|
+
"command": "curl -fsSL https://claude.ai/install.sh | bash"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"terminal": "Windows · PowerShell",
|
|
25
|
+
"command": "irm https://claude.ai/install.ps1 | iex"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"after": {
|
|
29
|
+
"en": "After installation, run claude to complete login or setup.",
|
|
30
|
+
"zh-CN": "安装后运行 claude,完成登录或配置。"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
6
33
|
"links": {
|
|
34
|
+
"website": "https://code.claude.com/",
|
|
7
35
|
"installation": "https://code.claude.com/docs/en/quickstart"
|
|
8
36
|
},
|
|
9
37
|
"adapterApiVersion": 1,
|