@codexhost/cli-darwin-x64 0.13.2 → 0.14.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 +94 -8
- package/app/console-web.js +537 -146
- package/app/desktop-controller.mjs +108 -12
- package/app/host-runtime.mjs +847 -235
- package/app/plugins/antigravity/plugin.mjs +143 -20
- package/app/plugins/claude-code/plugin.mjs +601 -71
- package/app/plugins/codebuddy/plugin.mjs +227 -30
- package/app/plugins/codex-usage/plugin.mjs +212 -77
- package/app/plugins/copilot/assets/icon.png +0 -0
- package/app/plugins/copilot/manifest.json +26 -0
- package/app/plugins/copilot/plugin.mjs +34546 -0
- package/app/plugins/cursor-cli/plugin.mjs +20805 -44862
- package/app/plugins/deepseek-harness/manifest.json +2 -2
- package/app/plugins/deepseek-harness/plugin.mjs +202 -21
- package/app/plugins/enabled.json +1 -0
- package/app/plugins/grok/plugin.mjs +278 -29
- package/app/plugins/hermes/plugin.mjs +143 -12
- package/app/plugins/kimi-code/plugin.mjs +140 -16
- package/app/plugins/kiro-cli/plugin.mjs +121 -10
- package/app/plugins/omp/plugin.mjs +2200 -2002
- package/app/plugins/opencode/plugin.mjs +137 -16
- package/app/plugins/pi/plugin.mjs +2563 -2282
- package/app/plugins/qoder/plugin.mjs +133 -14
- package/app/plugins/qoder-cn/plugin.mjs +133 -14
- package/app/plugins/workbuddy/plugin.mjs +603 -56
- package/app/plugins/zcode/plugin.mjs +133 -14
- package/app/renderer-extension.js +1171 -529
- package/bin/codexhost +0 -0
- package/libexec/codexhost-shim +0 -0
- package/libexec/codexhost-updater +0 -0
- package/package.json +1 -1
|
@@ -14965,6 +14965,15 @@ var harnessDisplaySetSchema = external_exports.strictObject({
|
|
|
14965
14965
|
initializeOnly: external_exports.boolean().optional()
|
|
14966
14966
|
});
|
|
14967
14967
|
|
|
14968
|
+
// ../../shared-contracts/dist/harness-presentation.js
|
|
14969
|
+
var localeSchema = external_exports.string().max(64).regex(/^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/u);
|
|
14970
|
+
var displayText = (maximum) => external_exports.string().min(1).max(maximum).refine((text2) => text2.trim().length > 0);
|
|
14971
|
+
var harnessLocalizationsSchema = external_exports.record(localeSchema, external_exports.object({
|
|
14972
|
+
label: displayText(256).optional(),
|
|
14973
|
+
description: displayText(1024).optional()
|
|
14974
|
+
}).strict()).refine((entries) => Object.keys(entries).length <= 16, "Too many locales");
|
|
14975
|
+
var harnessLocalizedTextSchema = external_exports.record(localeSchema, displayText(4096)).refine((entries) => typeof entries.en === "string", "English fallback is required").refine((entries) => Object.keys(entries).length <= 16, "Too many locales");
|
|
14976
|
+
|
|
14968
14977
|
// ../../shared-contracts/dist/model-price-overrides.js
|
|
14969
14978
|
var usdPerMillionTokens = external_exports.number().finite().nonnegative();
|
|
14970
14979
|
var modelPriceOverrideSchema = external_exports.strictObject({
|
|
@@ -15014,10 +15023,19 @@ var model = external_exports.string().min(1).max(512);
|
|
|
15014
15023
|
var project = external_exports.string().min(1).max(4096);
|
|
15015
15024
|
var usageStatisticsParamsSchema = external_exports.strictObject({
|
|
15016
15025
|
range: external_exports.enum(USAGE_STATISTICS_RANGES),
|
|
15026
|
+
/** Display timezone for ranges, dates and hourly buckets; omitted means the Host's local zone. */
|
|
15027
|
+
timeZone: external_exports.string().min(1).max(128).refine((value) => {
|
|
15028
|
+
try {
|
|
15029
|
+
new Intl.DateTimeFormat("en", { timeZone: value });
|
|
15030
|
+
return true;
|
|
15031
|
+
} catch {
|
|
15032
|
+
return false;
|
|
15033
|
+
}
|
|
15034
|
+
}, "Unsupported usage statistics timezone").optional(),
|
|
15017
15035
|
harness: harness.optional(),
|
|
15018
15036
|
model: model.nullable().optional(),
|
|
15019
15037
|
project: project.nullable().optional(),
|
|
15020
|
-
/** One
|
|
15038
|
+
/** One date in the query timezone inside the range. */
|
|
15021
15039
|
date: localDate.optional()
|
|
15022
15040
|
});
|
|
15023
15041
|
var usageStatisticsTotalsSchema = external_exports.strictObject({
|
|
@@ -15053,7 +15071,7 @@ var usageStatisticsSessionSchema = external_exports.strictObject({
|
|
|
15053
15071
|
});
|
|
15054
15072
|
var usageStatisticsResultSchema = external_exports.strictObject({
|
|
15055
15073
|
range: external_exports.enum(USAGE_STATISTICS_RANGES),
|
|
15056
|
-
/** First
|
|
15074
|
+
/** First date in the query timezone (Host local when omitted); null for all time. */
|
|
15057
15075
|
from: localDate.nullable(),
|
|
15058
15076
|
to: localDate,
|
|
15059
15077
|
/** The filters these figures apply, echoed so a late answer to older filters is recognised. */
|
|
@@ -15093,7 +15111,7 @@ var usageStatisticsResultSchema = external_exports.strictObject({
|
|
|
15093
15111
|
totals: usageStatisticsTotalsSchema,
|
|
15094
15112
|
/** Each date and Harness of the range: every filter except the day. */
|
|
15095
15113
|
daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
|
|
15096
|
-
/**
|
|
15114
|
+
/** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
|
|
15097
15115
|
hourly: external_exports.array(external_exports.strictObject({
|
|
15098
15116
|
weekday: external_exports.number().int().min(0).max(6),
|
|
15099
15117
|
hour: external_exports.number().int().min(0).max(23),
|
|
@@ -15153,6 +15171,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
|
|
|
15153
15171
|
"codexhost/harness/display-settings/set",
|
|
15154
15172
|
"codexhost/harness/inspect",
|
|
15155
15173
|
"codexhost/harness/installation",
|
|
15174
|
+
"codexhost/harness/installation/start",
|
|
15175
|
+
"codexhost/harness/installation/status",
|
|
15156
15176
|
"codexhost/harness/launch-settings/get",
|
|
15157
15177
|
"codexhost/harness/launch-settings/set",
|
|
15158
15178
|
"codexhost/harness/web-ui/open",
|
|
@@ -15228,7 +15248,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
|
|
|
15228
15248
|
var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
|
|
15229
15249
|
var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
|
|
15230
15250
|
var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
|
|
15251
|
+
var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text2) => text2.length <= maximum));
|
|
15252
|
+
var composerIndicatorsSchema = external_exports.array(external_exports.object({
|
|
15253
|
+
kind: external_exports.literal("countdown"),
|
|
15254
|
+
id: external_exports.string().min(1).max(64),
|
|
15255
|
+
expiresAtUnix: nonNegativeSafeIntegerSchema,
|
|
15256
|
+
label: indicatorTextSchema(256).optional(),
|
|
15257
|
+
tooltip: indicatorTextSchema(1024).optional()
|
|
15258
|
+
}).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
|
|
15259
|
+
message: "Composer indicator IDs must be unique"
|
|
15260
|
+
});
|
|
15231
15261
|
var threadUsageSnapshotSchema = external_exports.object({
|
|
15262
|
+
composerIndicators: composerIndicatorsSchema.optional(),
|
|
15232
15263
|
inputTokens: nonNegativeSafeIntegerSchema.optional(),
|
|
15233
15264
|
cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
|
|
15234
15265
|
cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
|
|
@@ -15301,8 +15332,24 @@ var threadUsageSnapshotSchema = external_exports.object({
|
|
|
15301
15332
|
}
|
|
15302
15333
|
});
|
|
15303
15334
|
var usagePercentSchema = external_exports.number().finite().min(0).max(100);
|
|
15335
|
+
var accountCreditsPeriodSchema = external_exports.enum([
|
|
15336
|
+
"weekly",
|
|
15337
|
+
"monthly",
|
|
15338
|
+
"five_hour",
|
|
15339
|
+
"seven_day",
|
|
15340
|
+
"unknown"
|
|
15341
|
+
]);
|
|
15342
|
+
var accountCreditsScopeSchema = external_exports.object({
|
|
15343
|
+
id: external_exports.string().min(1).max(256),
|
|
15344
|
+
label: external_exports.string().min(1).max(256),
|
|
15345
|
+
localizations: harnessLocalizationsSchema.optional()
|
|
15346
|
+
}).strict();
|
|
15304
15347
|
var accountCreditsProductUsageSchema = external_exports.object({
|
|
15305
15348
|
product: external_exports.string().min(1),
|
|
15349
|
+
/** Native period and scope, never inferred from the display name. */
|
|
15350
|
+
periodType: accountCreditsPeriodSchema.optional(),
|
|
15351
|
+
scope: accountCreditsScopeSchema.optional(),
|
|
15352
|
+
localizations: harnessLocalizationsSchema.optional(),
|
|
15306
15353
|
used: external_exports.number().finite().nonnegative().optional(),
|
|
15307
15354
|
// Zero is a real empty cap, not an absent field.
|
|
15308
15355
|
limit: external_exports.number().finite().nonnegative().optional(),
|
|
@@ -15322,9 +15369,11 @@ var accountCreditsSnapshotSchema = external_exports.object({
|
|
|
15322
15369
|
unit: external_exports.string().min(1).max(32).optional(),
|
|
15323
15370
|
/** Native label when the primary limit is scoped to a model or product group. */
|
|
15324
15371
|
label: external_exports.string().min(1).optional(),
|
|
15372
|
+
scope: accountCreditsScopeSchema.optional(),
|
|
15373
|
+
localizations: harnessLocalizationsSchema.optional(),
|
|
15325
15374
|
usedPercent: usagePercentSchema,
|
|
15326
15375
|
resetsAt: external_exports.string().min(1).optional(),
|
|
15327
|
-
periodType:
|
|
15376
|
+
periodType: accountCreditsPeriodSchema,
|
|
15328
15377
|
productUsage: external_exports.array(accountCreditsProductUsageSchema).min(1).optional(),
|
|
15329
15378
|
resetCredits: accountResetCreditsSchema.optional()
|
|
15330
15379
|
}).strict();
|
|
@@ -15335,7 +15384,9 @@ var threadUsageInspectionParamsSchema = external_exports.object({
|
|
|
15335
15384
|
var threadUsageInspectionSchema = external_exports.object({
|
|
15336
15385
|
threadId: hostThreadIdSchema,
|
|
15337
15386
|
usage: threadUsageSnapshotSchema.nullable(),
|
|
15338
|
-
accountCredits: accountCreditsSnapshotSchema.optional()
|
|
15387
|
+
accountCredits: accountCreditsSnapshotSchema.optional(),
|
|
15388
|
+
/** Whether this source can provide cached account quota independently of usage. */
|
|
15389
|
+
accountCreditsSupported: external_exports.boolean().optional()
|
|
15339
15390
|
}).strict();
|
|
15340
15391
|
|
|
15341
15392
|
// ../../shared-contracts/dist/harness-accounts.js
|
|
@@ -15462,7 +15513,8 @@ var harnessPermissionModeSchema = external_exports.object({
|
|
|
15462
15513
|
id: harnessPermissionModeIdSchema,
|
|
15463
15514
|
label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
|
|
15464
15515
|
description: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_DESCRIPTION_MAX_LENGTH).optional(),
|
|
15465
|
-
dangerous: external_exports.boolean().optional()
|
|
15516
|
+
dangerous: external_exports.boolean().optional(),
|
|
15517
|
+
localizations: harnessLocalizationsSchema.optional()
|
|
15466
15518
|
}).strict();
|
|
15467
15519
|
var harnessPermissionModeCatalogSchema = external_exports.object({
|
|
15468
15520
|
modes: external_exports.array(harnessPermissionModeSchema).min(1).max(HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH),
|
|
@@ -15615,7 +15667,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
|
|
|
15615
15667
|
}).strict().optional(),
|
|
15616
15668
|
autonomousTurns: external_exports.object({
|
|
15617
15669
|
observe: external_exports.boolean()
|
|
15618
|
-
}).strict().optional()
|
|
15670
|
+
}).strict().optional(),
|
|
15671
|
+
/** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
|
|
15672
|
+
steer: external_exports.boolean().optional()
|
|
15619
15673
|
}).strict();
|
|
15620
15674
|
var harnessConfigurationStateSchema = external_exports.object({
|
|
15621
15675
|
effectiveModel: harnessModelRefSchema.optional(),
|
|
@@ -15662,7 +15716,9 @@ var harnessInspectionSchema = external_exports.union([
|
|
|
15662
15716
|
var harnessInspectParamsSchema = external_exports.object({
|
|
15663
15717
|
harnessId: harnessIdSchema,
|
|
15664
15718
|
cwd: nonBlankTextSchema2.max(16384).optional(),
|
|
15665
|
-
refresh: external_exports.boolean().optional()
|
|
15719
|
+
refresh: external_exports.boolean().optional(),
|
|
15720
|
+
/** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
|
|
15721
|
+
purpose: external_exports.literal("availability").optional()
|
|
15666
15722
|
}).strict();
|
|
15667
15723
|
var harnessWebUiOpenParamsSchema = external_exports.object({
|
|
15668
15724
|
harnessId: harnessIdSchema
|
|
@@ -15745,6 +15801,15 @@ var threadOwnershipListResultSchema = external_exports.object({
|
|
|
15745
15801
|
seen.add(thread.threadId);
|
|
15746
15802
|
}
|
|
15747
15803
|
});
|
|
15804
|
+
var threadSteeringInspectParamsSchema = external_exports.object({
|
|
15805
|
+
threadId: hostThreadIdSchema,
|
|
15806
|
+
/** The text about to be steered; a Harness command always stops and restarts. */
|
|
15807
|
+
text: external_exports.string().optional()
|
|
15808
|
+
}).strict();
|
|
15809
|
+
var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
|
|
15810
|
+
var threadSteeringInspectResultSchema = external_exports.object({
|
|
15811
|
+
delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
|
|
15812
|
+
}).strict();
|
|
15748
15813
|
|
|
15749
15814
|
// ../../shared-contracts/dist/harness-plugins.js
|
|
15750
15815
|
var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
|
|
@@ -15846,11 +15911,31 @@ var harnessInstallationStateSchema = external_exports.object({
|
|
|
15846
15911
|
latestVersion: external_exports.string().min(1).max(128),
|
|
15847
15912
|
updateAvailable: external_exports.boolean(),
|
|
15848
15913
|
canUpdate: external_exports.boolean(),
|
|
15914
|
+
/** Defaults to CLI; some Harnesses ship only inside a desktop application. */
|
|
15915
|
+
versionKind: external_exports.enum(["cli", "application"]).optional(),
|
|
15916
|
+
/** Official download opened by the user; does not imply an automatic installation. */
|
|
15917
|
+
manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
|
|
15849
15918
|
// Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
|
|
15850
15919
|
message: external_exports.string().max(2048).optional(),
|
|
15851
15920
|
messageCode: external_exports.string().min(1).max(128).optional(),
|
|
15921
|
+
/** Safe plugin-owned explanation, distinct from raw diagnostic message. */
|
|
15922
|
+
notice: harnessLocalizedTextSchema.optional(),
|
|
15852
15923
|
latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
|
|
15853
15924
|
}).strict();
|
|
15925
|
+
var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
|
|
15926
|
+
var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
|
|
15927
|
+
external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
|
|
15928
|
+
external_exports.object({
|
|
15929
|
+
taskId: external_exports.string().uuid(),
|
|
15930
|
+
status: external_exports.literal("succeeded"),
|
|
15931
|
+
result: harnessInstallationStateSchema
|
|
15932
|
+
}).strict(),
|
|
15933
|
+
external_exports.object({
|
|
15934
|
+
taskId: external_exports.string().uuid(),
|
|
15935
|
+
status: external_exports.literal("failed"),
|
|
15936
|
+
error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
|
|
15937
|
+
}).strict()
|
|
15938
|
+
]);
|
|
15854
15939
|
|
|
15855
15940
|
// ../../shared-contracts/dist/codex-accounts.js
|
|
15856
15941
|
var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
|
|
@@ -15975,6 +16060,7 @@ var harnessCommandDescriptorSchema = external_exports.object({
|
|
|
15975
16060
|
invocation: commandInvocationSchema,
|
|
15976
16061
|
label: commandLabelSchema,
|
|
15977
16062
|
description: commandDescriptionSchema.optional(),
|
|
16063
|
+
localizations: harnessLocalizationsSchema.optional(),
|
|
15978
16064
|
argumentMode: external_exports.enum(["none", "text"]),
|
|
15979
16065
|
/**
|
|
15980
16066
|
* Native distinction reported by the Harness. Omitted when the Harness does
|
|
@@ -16335,6 +16421,18 @@ function sanitizeDiagnosticTail(value) {
|
|
|
16335
16421
|
return redacted.length <= DIAGNOSTIC_TAIL_MAX_LENGTH ? redacted : redacted.slice(-DIAGNOSTIC_TAIL_MAX_LENGTH);
|
|
16336
16422
|
}
|
|
16337
16423
|
|
|
16424
|
+
// ../../harness-adapter/dist/steer.js
|
|
16425
|
+
function unsupportedSteer(harnessLabel) {
|
|
16426
|
+
return {
|
|
16427
|
+
ok: false,
|
|
16428
|
+
error: {
|
|
16429
|
+
code: "unsupported",
|
|
16430
|
+
message: `${harnessLabel} cannot steer an active Turn natively`,
|
|
16431
|
+
retryable: false
|
|
16432
|
+
}
|
|
16433
|
+
};
|
|
16434
|
+
}
|
|
16435
|
+
|
|
16338
16436
|
// ../../harness-adapter/dist/usage.js
|
|
16339
16437
|
var tokenFields = [
|
|
16340
16438
|
"inputTokens",
|
|
@@ -16362,6 +16460,7 @@ var usageFields = /* @__PURE__ */ new Set([
|
|
|
16362
16460
|
...safeIntegerFields,
|
|
16363
16461
|
...percentFields,
|
|
16364
16462
|
"sessionCacheUsage",
|
|
16463
|
+
"composerIndicators",
|
|
16365
16464
|
"totalCostUsd",
|
|
16366
16465
|
"totalCredits",
|
|
16367
16466
|
"contextUsagePercent",
|
|
@@ -18488,10 +18587,13 @@ function usageSessionTitle(value) {
|
|
|
18488
18587
|
return void 0;
|
|
18489
18588
|
if (normalized.length <= MAX_SESSION_TITLE_LENGTH)
|
|
18490
18589
|
return normalized;
|
|
18491
|
-
|
|
18492
|
-
|
|
18493
|
-
|
|
18494
|
-
|
|
18590
|
+
let title = "";
|
|
18591
|
+
for (const character of normalized) {
|
|
18592
|
+
if (title.length + character.length >= MAX_SESSION_TITLE_LENGTH)
|
|
18593
|
+
break;
|
|
18594
|
+
title += character;
|
|
18595
|
+
}
|
|
18596
|
+
return `${title.trimEnd()}…`;
|
|
18495
18597
|
}
|
|
18496
18598
|
function sessionIdOk(value) {
|
|
18497
18599
|
return typeof value === "string" && value.length > 0 && value.length <= MAX_SESSION_ID_LENGTH;
|
|
@@ -19480,6 +19582,8 @@ var HermesSession = class {
|
|
|
19480
19582
|
switch (command.type) {
|
|
19481
19583
|
case "turn.start":
|
|
19482
19584
|
return this.#startTurn(command);
|
|
19585
|
+
case "turn.steer":
|
|
19586
|
+
return Promise.resolve(unsupportedSteer("Hermes"));
|
|
19483
19587
|
case "turn.cancel":
|
|
19484
19588
|
return this.#cancelTurn(command);
|
|
19485
19589
|
case "interaction.respond":
|
|
@@ -19980,11 +20084,23 @@ function gatewayPermissionModes() {
|
|
|
19980
20084
|
{
|
|
19981
20085
|
id: "default",
|
|
19982
20086
|
label: "原生审批策略",
|
|
20087
|
+
localizations: {
|
|
20088
|
+
en: {
|
|
20089
|
+
label: "Native approval policy",
|
|
20090
|
+
description: "Follow the Hermes global approval policy; disable YOLO for this Session."
|
|
20091
|
+
}
|
|
20092
|
+
},
|
|
19983
20093
|
description: "遵循 Hermes 全局审批策略,关闭本会话 YOLO。"
|
|
19984
20094
|
},
|
|
19985
20095
|
{
|
|
19986
20096
|
id: "dont_ask",
|
|
19987
20097
|
label: "会话 YOLO",
|
|
20098
|
+
localizations: {
|
|
20099
|
+
en: {
|
|
20100
|
+
label: "Session YOLO",
|
|
20101
|
+
description: "Automatically approve Hermes tool actions in this Session."
|
|
20102
|
+
}
|
|
20103
|
+
},
|
|
19988
20104
|
description: "本会话自动批准 Hermes 工具操作。",
|
|
19989
20105
|
dangerous: true
|
|
19990
20106
|
}
|
|
@@ -20387,6 +20503,10 @@ function createHermesInstallation(environment, command) {
|
|
|
20387
20503
|
updateAvailable: false,
|
|
20388
20504
|
canUpdate: false,
|
|
20389
20505
|
messageCode: "hermes-update-plan-unavailable",
|
|
20506
|
+
notice: {
|
|
20507
|
+
en: "This Hermes release does not expose a safe update plan. Use the original installer.",
|
|
20508
|
+
"zh-CN": "此 Hermes 版本不提供安全的更新计划,请使用原安装方式更新。"
|
|
20509
|
+
},
|
|
20390
20510
|
message: "This Hermes release does not expose a safe update plan. Use the original installer."
|
|
20391
20511
|
};
|
|
20392
20512
|
const plan = await run(["update", "--plan"]);
|
|
@@ -20399,6 +20519,10 @@ function createHermesInstallation(environment, command) {
|
|
|
20399
20519
|
updateAvailable: false,
|
|
20400
20520
|
canUpdate: false,
|
|
20401
20521
|
messageCode: "hermes-externally-managed",
|
|
20522
|
+
notice: {
|
|
20523
|
+
en: "This Hermes installation is managed externally. Update it through its desktop app, container, or original package manager.",
|
|
20524
|
+
"zh-CN": "此 Hermes 安装由外部工具管理,请通过其桌面应用、容器或原包管理器更新。"
|
|
20525
|
+
},
|
|
20402
20526
|
message: "This Hermes installation is managed externally. Update it through its desktop app, container, or original package manager."
|
|
20403
20527
|
};
|
|
20404
20528
|
const output = await run(["update", "--check"]);
|
|
@@ -20417,6 +20541,13 @@ function createHermesInstallation(environment, command) {
|
|
|
20417
20541
|
canUpdate,
|
|
20418
20542
|
...updateAvailable && !release ? { latestVersionKind: "tracking-branch" } : {},
|
|
20419
20543
|
messageCode: canUpdate ? "hermes-update-channel" : "hermes-manual-update",
|
|
20544
|
+
notice: canUpdate ? {
|
|
20545
|
+
en: "Uses Hermes's configured update channel. Gateway restarts are deferred; existing processes keep their running code.",
|
|
20546
|
+
"zh-CN": "使用 Hermes 配置的更新渠道,暂不重启 Gateway;现有进程继续运行原有代码。"
|
|
20547
|
+
} : {
|
|
20548
|
+
en: "Use the native updater manually. Safe non-interactive updates require a clean source checkout, commit identity, and Gateway restart deferral.",
|
|
20549
|
+
"zh-CN": "请手动使用原生更新器。安全的非交互更新要求源码目录无未提交修改、可识别当前提交,并支持推迟 Gateway 重启。"
|
|
20550
|
+
},
|
|
20420
20551
|
message: canUpdate ? "Uses Hermes's configured update channel. Gateway restarts are deferred; existing processes keep their running code." : "Use the native updater manually. Safe non-interactive updates require a clean source checkout, commit identity, and Gateway restart deferral."
|
|
20421
20552
|
};
|
|
20422
20553
|
},
|