@codexhost/cli-darwin-x64 0.12.1 → 0.13.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.
Files changed (54) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_NOTICES.txt +8 -0
  3. package/app/codexhost-distribution.json +1 -1
  4. package/app/console-server.mjs +232 -21
  5. package/app/console-web.js +5434 -1092
  6. package/app/desktop-controller.mjs +252 -41
  7. package/app/host-runtime.mjs +5318 -1448
  8. package/app/plugins/antigravity/manifest.json +18 -1
  9. package/app/plugins/antigravity/plugin.mjs +276 -42
  10. package/app/plugins/claude-code/manifest.json +28 -0
  11. package/app/plugins/claude-code/plugin.mjs +1049 -359
  12. package/app/plugins/codebuddy/manifest.json +17 -0
  13. package/app/plugins/codebuddy/plugin.mjs +5931 -5358
  14. package/app/plugins/codex-usage/manifest.json +9 -0
  15. package/app/plugins/codex-usage/plugin.mjs +16703 -0
  16. package/app/plugins/cursor-cli/manifest.json +17 -0
  17. package/app/plugins/cursor-cli/plugin.mjs +351 -77
  18. package/app/plugins/deepseek-harness/assets/icon.svg +1 -0
  19. package/app/plugins/deepseek-harness/manifest.json +35 -2
  20. package/app/plugins/deepseek-harness/plugin.mjs +798 -242
  21. package/app/plugins/enabled.json +2 -1
  22. package/app/plugins/grok/manifest.json +21 -1
  23. package/app/plugins/grok/plugin.mjs +884 -259
  24. package/app/plugins/hermes/assets/icon.png +0 -0
  25. package/app/plugins/hermes/manifest.json +30 -2
  26. package/app/plugins/hermes/plugin.mjs +278 -33
  27. package/app/plugins/kimi-code/assets/icon.svg +5 -0
  28. package/app/plugins/kimi-code/manifest.json +25 -2
  29. package/app/plugins/kimi-code/plugin.mjs +555 -36
  30. package/app/plugins/kiro-cli/assets/kiro-agent.svg +11 -0
  31. package/app/plugins/kiro-cli/manifest.json +18 -1
  32. package/app/plugins/kiro-cli/plugin.mjs +284 -22
  33. package/app/plugins/omp/manifest.json +21 -1
  34. package/app/plugins/omp/plugin.mjs +2737 -1956
  35. package/app/plugins/opencode/manifest.json +18 -1
  36. package/app/plugins/opencode/plugin.mjs +694 -147
  37. package/app/plugins/pi/manifest.json +32 -0
  38. package/app/plugins/pi/plugin.mjs +2809 -2254
  39. package/app/plugins/qoder/manifest.json +18 -1
  40. package/app/plugins/qoder/plugin.mjs +585 -81
  41. package/app/plugins/qoder-cn/manifest.json +18 -1
  42. package/app/plugins/qoder-cn/plugin.mjs +585 -81
  43. package/app/plugins/workbuddy/manifest.json +18 -0
  44. package/app/plugins/workbuddy/plugin.mjs +6317 -5746
  45. package/app/plugins/zcode/manifest.json +19 -1
  46. package/app/plugins/zcode/plugin.mjs +1066 -260
  47. package/app/renderer-extension.js +1999 -1686
  48. package/bin/codexhost +0 -0
  49. package/libexec/codexhost-shim +0 -0
  50. package/libexec/codexhost-updater +0 -0
  51. package/licenses/Cordis-LICENSE.txt +21 -0
  52. package/licenses/Cosmokit-LICENSE.txt +21 -0
  53. package/package.json +1 -1
  54. 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
- "installation": "https://antigravity.google/product/antigravity-cli"
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(count, one, few, many) {
5057
- const absCount = Math.abs(count);
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(count, one, many) {
7136
- return Math.abs(count) === 1 ? one : many;
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(count, one, few, many) {
9265
- const absCount = Math.abs(count);
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,153 @@ 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
+ /** Models the session used, most requests first. */
15092
+ models: external_exports.array(model).max(16),
15093
+ firstAtMs: count,
15094
+ lastAtMs: count,
15095
+ ...totals
15096
+ });
15097
+ var usageStatisticsResultSchema = external_exports.strictObject({
15098
+ range: external_exports.enum(USAGE_STATISTICS_RANGES),
15099
+ /** First local date of the range; null for all time. */
15100
+ from: localDate.nullable(),
15101
+ to: localDate,
15102
+ /** The filters these figures apply, echoed so a late answer to older filters is recognised. */
15103
+ filters: external_exports.strictObject({
15104
+ harness: harness.nullable(),
15105
+ model: model.nullable(),
15106
+ unknownModel: external_exports.boolean(),
15107
+ project: project.nullable(),
15108
+ unknownProject: external_exports.boolean(),
15109
+ date: localDate.nullable()
15110
+ }),
15111
+ /** Reading of native storage: incomplete while the first read, or a refresh, is under way. */
15112
+ reading: external_exports.strictObject({ complete: external_exports.boolean(), sources: count, read: count }),
15113
+ /** Harnesses whose storage could not be read; their part is missing, the rest is complete. */
15114
+ failures: external_exports.array(external_exports.strictObject({ harness, message: external_exports.string().max(2048) })).max(256),
15115
+ /** Every value seen in the range, ignoring the filters, to choose filters from. */
15116
+ options: external_exports.strictObject({
15117
+ harnesses: external_exports.array(harness).max(256),
15118
+ models: external_exports.array(model.nullable()).max(4096),
15119
+ projects: external_exports.array(project.nullable()).max(4096)
15120
+ }),
15121
+ /** Current display metadata, scoped by Harness. Never a pricing or filter identity.
15122
+ * Optional for older Hosts; missing/conflicting labels fall back to the native model ID.
15123
+ */
15124
+ modelLabels: external_exports.array(external_exports.strictObject({ harness, model, label: model })).max(4096).optional(),
15125
+ /** Native credits, all filters applied, never combined across Harnesses or treated as USD.
15126
+ * Only groups with at least one reported value appear; reportedRequests exposes partial data.
15127
+ */
15128
+ credits: external_exports.array(external_exports.strictObject({
15129
+ harness,
15130
+ model: model.nullable(),
15131
+ credits: external_exports.number().finite().min(0),
15132
+ reportedRequests: count,
15133
+ requests: count
15134
+ })).max(4096).optional(),
15135
+ /** All filters applied. */
15136
+ totals: usageStatisticsTotalsSchema,
15137
+ /** Each date and Harness of the range: every filter except the day. */
15138
+ daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
15139
+ /** Local weekday (0 = Sunday) and hour, all filters applied. */
15140
+ hourly: external_exports.array(external_exports.strictObject({
15141
+ weekday: external_exports.number().int().min(0).max(6),
15142
+ hour: external_exports.number().int().min(0).max(23),
15143
+ ...totals
15144
+ })).max(168),
15145
+ byHarness: external_exports.array(external_exports.strictObject({ harness, ...totals })).max(256),
15146
+ byModel: external_exports.array(external_exports.strictObject({
15147
+ model: model.nullable(),
15148
+ ...totals,
15149
+ /** Requests priced by what the Harness recorded they cost, not by a price list. */
15150
+ harnessPricedRequests: count
15151
+ })).max(4096),
15152
+ byProject: external_exports.array(external_exports.strictObject({ project: project.nullable(), ...totals })).max(4096),
15153
+ /**
15154
+ * The sessions that spent the most, by cost and by tokens without cache, all filters applied;
15155
+ * requests without a native session are not listed here but count everywhere else.
15156
+ */
15157
+ sessions: external_exports.array(usageStatisticsSessionSchema).max(100)
15158
+ });
15159
+
15004
15160
  // ../../shared-contracts/dist/ids.js
15005
15161
  var opaqueIdSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15006
15162
  message: "Identifier must not be empty or whitespace"
@@ -15048,6 +15204,10 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15048
15204
  "codexhost/account/list",
15049
15205
  "codexhost/account/refresh",
15050
15206
  "codexhost/account/usage/inspect",
15207
+ "codexhost/usage/model-prices/get",
15208
+ "codexhost/usage/model-prices/set",
15209
+ "codexhost/usage/model-prices/default",
15210
+ "codexhost/usage/statistics/get",
15051
15211
  "codexhost/update/check",
15052
15212
  "codexhost/update/start",
15053
15213
  "codexhost/update/status"
@@ -15112,6 +15272,7 @@ var threadUsageSnapshotSchema = external_exports.object({
15112
15272
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
15113
15273
  outputTokens: nonNegativeSafeIntegerSchema.optional(),
15114
15274
  outputTokensPerSecond: finiteNonNegativeNumberSchema.optional(),
15275
+ apiOutputTokensPerSecond: finiteNonNegativeNumberSchema.optional(),
15115
15276
  reasoningOutputTokens: nonNegativeSafeIntegerSchema.optional(),
15116
15277
  totalTokens: nonNegativeSafeIntegerSchema.optional(),
15117
15278
  totalCostUsd: finiteNonNegativeNumberSchema.optional(),
@@ -15123,7 +15284,11 @@ var threadUsageSnapshotSchema = external_exports.object({
15123
15284
  planFiveHourUsedPercent: cacheHitRatePercentSchema.optional(),
15124
15285
  planFiveHourResetsAtUnix: nonNegativeSafeIntegerSchema.optional(),
15125
15286
  planSevenDayUsedPercent: cacheHitRatePercentSchema.optional(),
15126
- planSevenDayResetsAtUnix: nonNegativeSafeIntegerSchema.optional()
15287
+ planSevenDayResetsAtUnix: nonNegativeSafeIntegerSchema.optional(),
15288
+ sessionCacheHitRatePercent: cacheHitRatePercentSchema.optional(),
15289
+ timeToFirstOutputMs: nonNegativeSafeIntegerSchema.optional(),
15290
+ costSource: external_exports.enum(["publicPrice", "native"]).optional(),
15291
+ unpricedModels: external_exports.array(external_exports.string().min(1)).min(1).optional()
15127
15292
  }).strict().superRefine((usage, context) => {
15128
15293
  if (Object.keys(usage).length === 0) {
15129
15294
  context.addIssue({ code: "custom", message: "Thread Usage must contain a reliable field" });
@@ -15144,6 +15309,20 @@ var threadUsageSnapshotSchema = external_exports.object({
15144
15309
  path: ["contextWindowTokens"]
15145
15310
  });
15146
15311
  }
15312
+ if (usage.costSource !== void 0 && usage.totalCostUsd === void 0) {
15313
+ context.addIssue({
15314
+ code: "custom",
15315
+ message: "Thread Usage costSource must be provided with totalCostUsd",
15316
+ path: ["costSource"]
15317
+ });
15318
+ }
15319
+ if (usage.unpricedModels !== void 0 && usage.costSource !== "publicPrice") {
15320
+ context.addIssue({
15321
+ code: "custom",
15322
+ message: "Thread Usage unpricedModels must be provided with a publicPrice cost",
15323
+ path: ["unpricedModels"]
15324
+ });
15325
+ }
15147
15326
  if (usage.planFiveHourResetsAtUnix !== void 0 && usage.planFiveHourUsedPercent === void 0) {
15148
15327
  context.addIssue({
15149
15328
  code: "custom",
@@ -15398,27 +15577,27 @@ var harnessModelCatalogSchema = external_exports.object({
15398
15577
  }).strict().superRefine((catalog, context) => {
15399
15578
  const refs = /* @__PURE__ */ new Set();
15400
15579
  const thinkingIds = new Set(catalog.thinkingOptions.map(({ id }) => id));
15401
- for (const [index, model] of catalog.models.entries()) {
15402
- if (refs.has(model.ref.id)) {
15580
+ for (const [index, model2] of catalog.models.entries()) {
15581
+ if (refs.has(model2.ref.id)) {
15403
15582
  context.addIssue({
15404
15583
  code: "custom",
15405
15584
  message: "Model Catalog refs must be unique",
15406
15585
  path: ["models", index, "ref", "id"]
15407
15586
  });
15408
15587
  }
15409
- refs.add(model.ref.id);
15410
- if (model.fastModel) {
15411
- if (refs.has(model.fastModel.id) || catalog.models.some((entry) => entry.ref.id === model.fastModel?.id)) {
15588
+ refs.add(model2.ref.id);
15589
+ if (model2.fastModel) {
15590
+ if (refs.has(model2.fastModel.id) || catalog.models.some((entry) => entry.ref.id === model2.fastModel?.id)) {
15412
15591
  context.addIssue({
15413
15592
  code: "custom",
15414
15593
  message: "Fast Model refs must be distinct and unique",
15415
15594
  path: ["models", index, "fastModel"]
15416
15595
  });
15417
15596
  }
15418
- refs.add(model.fastModel.id);
15597
+ refs.add(model2.fastModel.id);
15419
15598
  }
15420
15599
  const supportedThinkingIds = /* @__PURE__ */ new Set();
15421
- for (const [optionIndex, optionId] of (model.supportedThinkingOptionIds ?? []).entries()) {
15600
+ for (const [optionIndex, optionId] of (model2.supportedThinkingOptionIds ?? []).entries()) {
15422
15601
  if (supportedThinkingIds.has(optionId)) {
15423
15602
  context.addIssue({
15424
15603
  code: "custom",
@@ -15612,13 +15791,40 @@ var HARNESS_PLUGIN_LIMIT = 128;
15612
15791
  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
15792
  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
15793
  var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15794
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15795
+ var harnessInstallationGuideSchema = external_exports.object({
15796
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15797
+ before: localizedTextSchema.optional(),
15798
+ after: localizedTextSchema.optional(),
15799
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15800
+ }).strict();
15615
15801
  var pluginPresentationShape = {
15616
15802
  id: harnessPluginIdSchema,
15617
15803
  name: external_exports.string().trim().min(1).max(128),
15618
15804
  version: external_exports.string().min(1).max(128),
15805
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
15806
+ kind: external_exports.literal("usage").optional(),
15807
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15808
+ iconStyle: external_exports.object({
15809
+ vector: external_exports.object({
15810
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15811
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15812
+ paths: external_exports.array(external_exports.object({
15813
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15814
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15815
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15816
+ }).strict()).min(1).max(32)
15817
+ }).strict().optional(),
15818
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15819
+ borderRadius: external_exports.number().min(0).max(50).optional(),
15820
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
15821
+ }).strict().optional(),
15822
+ installation: harnessInstallationGuideSchema.optional(),
15823
+ notice: localizedTextSchema.optional(),
15619
15824
  /** The factory accepts a persisted local entrypoint through its construction context. */
15620
15825
  launchCommand: external_exports.literal(true).optional(),
15621
15826
  links: external_exports.object({
15827
+ website: documentationUrlSchema.optional(),
15622
15828
  documentation: documentationUrlSchema.optional(),
15623
15829
  installation: documentationUrlSchema.optional()
15624
15830
  }).strict().optional()
@@ -16037,6 +16243,11 @@ var codexSshDraftSchema = external_exports.strictObject({
16037
16243
  });
16038
16244
  var remoteConnectionsRequestSchema = external_exports.discriminatedUnion("action", [
16039
16245
  external_exports.strictObject({ action: external_exports.literal("list") }),
16246
+ external_exports.strictObject({
16247
+ action: external_exports.literal("read-thread"),
16248
+ hostId: hostId.refine((id) => id !== "local"),
16249
+ input: delegationReadParamsSchema
16250
+ }),
16040
16251
  external_exports.strictObject({
16041
16252
  action: external_exports.literal("save"),
16042
16253
  draft: codexSshDraftSchema,
@@ -16160,7 +16371,6 @@ var tokenFields = [
16160
16371
  "cachedInputTokens",
16161
16372
  "cacheWriteInputTokens",
16162
16373
  "outputTokens",
16163
- "outputTokensPerSecond",
16164
16374
  "reasoningOutputTokens",
16165
16375
  "totalTokens",
16166
16376
  "contextWindowTokens",
@@ -16168,10 +16378,12 @@ var tokenFields = [
16168
16378
  ];
16169
16379
  var safeIntegerFields = [
16170
16380
  "planFiveHourResetsAtUnix",
16171
- "planSevenDayResetsAtUnix"
16381
+ "planSevenDayResetsAtUnix",
16382
+ "timeToFirstOutputMs"
16172
16383
  ];
16173
16384
  var percentFields = [
16174
16385
  "cacheHitRatePercent",
16386
+ "sessionCacheHitRatePercent",
16175
16387
  "planFiveHourUsedPercent",
16176
16388
  "planSevenDayUsedPercent"
16177
16389
  ];
@@ -16179,9 +16391,31 @@ var usageFields = /* @__PURE__ */ new Set([
16179
16391
  ...tokenFields,
16180
16392
  ...safeIntegerFields,
16181
16393
  ...percentFields,
16394
+ "sessionCacheUsage",
16182
16395
  "totalCostUsd",
16183
16396
  "totalCredits",
16184
- "contextUsagePercent"
16397
+ "contextUsagePercent",
16398
+ "outputTokensPerSecond",
16399
+ "apiOutputTokensPerSecond",
16400
+ "costSource",
16401
+ "unpricedModels"
16402
+ ]);
16403
+ var requestTokenFields = [
16404
+ "inputTokens",
16405
+ "cachedInputTokens",
16406
+ "cacheWriteInputTokens",
16407
+ "cacheWrite1hInputTokens",
16408
+ "outputTokens",
16409
+ "reasoningOutputTokens",
16410
+ "startedAtMs",
16411
+ "completedAtMs"
16412
+ ];
16413
+ var requestFields = /* @__PURE__ */ new Set([
16414
+ ...requestTokenFields,
16415
+ "requestId",
16416
+ "historical",
16417
+ "model",
16418
+ "provider"
16185
16419
  ]);
16186
16420
 
16187
16421
  // dist/command.js
@@ -16346,14 +16580,14 @@ var AntigravityHistory = class _AntigravityHistory {
16346
16580
  const file2 = historyPath(input.environment);
16347
16581
  const nativeSessionId = input.nativeSessionId ?? null;
16348
16582
  let turns = [];
16349
- let model;
16583
+ let model2;
16350
16584
  let thinkingOptionId;
16351
16585
  if (file2 && nativeSessionId) {
16352
16586
  try {
16353
16587
  const parsed = historySchema.safeParse(JSON.parse(await readFile(file2, "utf8")));
16354
16588
  if (parsed.success && parsed.data.nativeSessionId === nativeSessionId) {
16355
16589
  turns = parsed.data.turns;
16356
- model = parsed.data.model;
16590
+ model2 = parsed.data.model;
16357
16591
  thinkingOptionId = parsed.data.thinkingOptionId;
16358
16592
  }
16359
16593
  } catch {
@@ -16374,7 +16608,7 @@ var AntigravityHistory = class _AntigravityHistory {
16374
16608
  file: file2,
16375
16609
  nativeSessionId,
16376
16610
  turns,
16377
- ...model ? { model } : {},
16611
+ ...model2 ? { model: model2 } : {},
16378
16612
  ...thinkingOptionId ? { thinkingOptionId } : {}
16379
16613
  });
16380
16614
  }
@@ -16456,8 +16690,8 @@ var AntigravityHistory = class _AntigravityHistory {
16456
16690
  this.#nativeSessionId = nativeSessionId;
16457
16691
  this.#queueWrite();
16458
16692
  }
16459
- setSelection(model, thinkingOptionId) {
16460
- this.#model = model;
16693
+ setSelection(model2, thinkingOptionId) {
16694
+ this.#model = model2;
16461
16695
  this.#thinkingOptionId = thinkingOptionId;
16462
16696
  this.#queueWrite();
16463
16697
  }
@@ -16486,7 +16720,7 @@ var AntigravityHistory = class _AntigravityHistory {
16486
16720
  const file2 = this.#file;
16487
16721
  const nativeSessionId = this.#nativeSessionId;
16488
16722
  const turns = this.#turns.map(jsonTurn);
16489
- const model = this.#model;
16723
+ const model2 = this.#model;
16490
16724
  const thinkingOptionId = this.#thinkingOptionId;
16491
16725
  this.#write = this.#write.catch(() => void 0).then(async () => {
16492
16726
  const directory = path5.dirname(file2);
@@ -16497,7 +16731,7 @@ var AntigravityHistory = class _AntigravityHistory {
16497
16731
  formatVersion: HISTORY_VERSION,
16498
16732
  nativeSessionId,
16499
16733
  turns,
16500
- ...model ? { model } : {},
16734
+ ...model2 ? { model: model2 } : {},
16501
16735
  ...thinkingOptionId ? { thinkingOptionId } : {}
16502
16736
  })}
16503
16737
  `, { mode: 384 });
@@ -16706,14 +16940,14 @@ async function forkAntigravitySession(options) {
16706
16940
  }
16707
16941
  } : {}
16708
16942
  }));
16709
- const model = sourceSession?.model ?? sourceHistory.model;
16943
+ const model2 = sourceSession?.model ?? sourceHistory.model;
16710
16944
  const thinkingOptionId = sourceSession?.thinkingOptionId ?? sourceHistory.thinkingOptionId;
16711
16945
  const permissionMode = sourceSession?.permissionMode ?? "dangerously-skip-permissions";
16712
16946
  const forkedHistory = await AntigravityHistory.createDerived({
16713
16947
  environment: sessionEnvironment,
16714
16948
  nativeSessionId: derivedNativeSessionId,
16715
16949
  turns: copiedTurns,
16716
- ...model ? { model } : {},
16950
+ ...model2 ? { model: model2 } : {},
16717
16951
  ...thinkingOptionId ? { thinkingOptionId } : {}
16718
16952
  });
16719
16953
  await Promise.all([
@@ -16728,7 +16962,7 @@ async function forkAntigravitySession(options) {
16728
16962
  const session = createSession({
16729
16963
  history: forkedHistory,
16730
16964
  nativeRef: derivedNativeRef,
16731
- ...model ? { model } : {},
16965
+ ...model2 ? { model: model2 } : {},
16732
16966
  ...thinkingOptionId ? { thinkingOptionId } : {},
16733
16967
  permissionMode,
16734
16968
  cwd: input.cwd,
@@ -16810,19 +17044,19 @@ function parseAntigravityModels(output) {
16810
17044
  ...defaultThinkingOptionId ? { defaultThinkingOptionId } : {}
16811
17045
  });
16812
17046
  }
16813
- function antigravityModelArguments(model, thinkingOptionId) {
16814
- if (!model)
17047
+ function antigravityModelArguments(model2, thinkingOptionId) {
17048
+ if (!model2)
16815
17049
  return [];
16816
- const arguments_ = ["--model", model.id];
16817
- if (thinkingOptionId && !EFFORT_SUFFIX_PATTERN.test(model.id)) {
17050
+ const arguments_ = ["--model", model2.id];
17051
+ if (thinkingOptionId && !EFFORT_SUFFIX_PATTERN.test(model2.id)) {
16818
17052
  arguments_.push("--effort", thinkingOptionId);
16819
17053
  }
16820
17054
  return arguments_;
16821
17055
  }
16822
- function antigravityAvailableThinkingOptions(catalog, model) {
16823
- if (!catalog || !model)
17056
+ function antigravityAvailableThinkingOptions(catalog, model2) {
17057
+ if (!catalog || !model2)
16824
17058
  return void 0;
16825
- const supported = catalog.models.find(({ ref }) => ref.id === model.id)?.supportedThinkingOptionIds;
17059
+ const supported = catalog.models.find(({ ref }) => ref.id === model2.id)?.supportedThinkingOptionIds;
16826
17060
  if (!supported)
16827
17061
  return void 0;
16828
17062
  const options = supported.flatMap((id) => {
@@ -16920,14 +17154,14 @@ async function rollbackAntigravityLastTurn(options) {
16920
17154
  }
16921
17155
  } : {}
16922
17156
  }));
16923
- const model = sourceSession?.model ?? sourceHistory.model;
17157
+ const model2 = sourceSession?.model ?? sourceHistory.model;
16924
17158
  const thinkingOptionId = sourceSession?.thinkingOptionId ?? sourceHistory.thinkingOptionId;
16925
17159
  const permissionMode = sourceSession?.permissionMode ?? "dangerously-skip-permissions";
16926
17160
  const rolledBackHistory = await AntigravityHistory.createDerived({
16927
17161
  environment: sessionEnvironment,
16928
17162
  nativeSessionId: derivedNativeSessionId,
16929
17163
  turns: mappedTurns,
16930
- ...model ? { model } : {},
17164
+ ...model2 ? { model: model2 } : {},
16931
17165
  ...thinkingOptionId ? { thinkingOptionId } : {}
16932
17166
  });
16933
17167
  await Promise.all([
@@ -16942,7 +17176,7 @@ async function rollbackAntigravityLastTurn(options) {
16942
17176
  const session = createSession({
16943
17177
  history: rolledBackHistory,
16944
17178
  nativeRef: derivedNativeRef,
16945
- ...model ? { model } : {},
17179
+ ...model2 ? { model: model2 } : {},
16946
17180
  ...thinkingOptionId ? { thinkingOptionId } : {},
16947
17181
  permissionMode,
16948
17182
  cwd: input.cwd,
@@ -19823,10 +20057,10 @@ var AntigravityAdapter = class {
19823
20057
  ...nativeRef ? { nativeSessionId: nativeRef.nativeSessionId } : {},
19824
20058
  ...input.kind === "resume" && input.knownTurnRefs ? { knownTurnRefs: input.knownTurnRefs } : {}
19825
20059
  });
19826
- const model = (input.kind === "create" ? input.model : void 0) ?? history.model;
20060
+ const model2 = (input.kind === "create" ? input.model : void 0) ?? history.model;
19827
20061
  const thinkingOptionId = (input.kind === "create" ? input.thinkingOptionId : void 0) ?? history.thinkingOptionId;
19828
20062
  if (thinkingOptionId) {
19829
- const available = antigravityAvailableThinkingOptions(catalog, model);
20063
+ const available = antigravityAvailableThinkingOptions(catalog, model2);
19830
20064
  if (!available?.some(({ id }) => id === thinkingOptionId)) {
19831
20065
  return {
19832
20066
  ok: false,
@@ -19838,15 +20072,15 @@ var AntigravityAdapter = class {
19838
20072
  };
19839
20073
  }
19840
20074
  }
19841
- if (model || thinkingOptionId)
19842
- history.setSelection(model, thinkingOptionId);
20075
+ if (model2 || thinkingOptionId)
20076
+ history.setSelection(model2, thinkingOptionId);
19843
20077
  const session = new AntigravitySession({
19844
20078
  ...catalog ? { catalog } : {},
19845
20079
  cwd: input.cwd,
19846
20080
  environment: sessionEnvironment,
19847
20081
  executable,
19848
20082
  history,
19849
- ...model ? { model } : {},
20083
+ ...model2 ? { model: model2 } : {},
19850
20084
  ...nativeRef ? { nativeRef } : {},
19851
20085
  permissionMode,
19852
20086
  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,