@xopcai/xopc 0.0.153 → 0.0.154
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/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-XA9328eM.js → activity-store-CzdG0bk4.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-E09Jv6kW.js → agent-avatar-dicebear-DFWvUDnw.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-BA46Lyc7.js → agents-D1VBNTLF.js} +1 -1
- package/dist/gateway/static/root/assets/{api-kQEpNIa-.js → api-CsyI9oBh.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-BzrND8g7.js → app-management-settings-panel-DjnqOKBb.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CKMCWf75.js → appearance-settings-CRqe823O.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-DPP_gFCc.js → apps-page-BcTujyqO.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-DNOroxSq.js → archive-plugin-BXq09JWB.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-PtKuOOfL.js → attachment-load-zlQDh1aZ.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-C7HQ5bAK.js → automation-suggestion-card-gGgpY4-w.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BuMTtTYy.js → automations-page-BToFWoa2.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-DDFoTNKm.js → binary-plugins-DCndLyIW.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-CH_e8EXF.js → block-editor-msfuLqvE.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-43uOCSrE.js → browser-settings-page-QKmt9rhz.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-api-Cby6Utaf.js → capability-presets-api-Bxopvkgk.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-BZvp3H2p.js → capability-presets-settings-panel-DfNXDSNd.js} +1 -1
- package/dist/gateway/static/root/assets/{channel-recipient-api-COdmaOO4.js → channel-recipient-api-BnHaWUSY.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-BAPRTSF4.js → channels-settings-H4S5xOJd.js} +1 -1
- package/dist/gateway/static/root/assets/channels-status-swr-CCNusXn-.js +1 -0
- package/dist/gateway/static/root/assets/{connector-logo-CinEws2y.js → connector-logo-B-uLLvB8.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-P-Ur9mlf.js → connectors-page-CdhnQLcO.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-O3wyOYRG.js → desktop-pet-Ex6MK9js.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-nbvEKluo.js → desktop-pet-settings-BOIzaX68.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-DyZJo5xz.js → directory-picker-path-field-DqGXYqi0.js} +1 -1
- package/dist/gateway/static/root/assets/{dreaming-settings-CruD-NNs.js → dreaming-settings-CxijakYG.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-CV7SDe48.js → extension-debug-page-BvdFiVRk.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DJCYwgB_.js → extension-page-Dh6JVCzg.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-6kJQVKbq.js → extension-settings-page-DVj6FCSE.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-DOewYtbP.js → gateway-config-api-CQm4GutS.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-BjjXod61.js → gateway-settings-ss66lTqH.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-ewVb05iS.js → gateway-startup-retry-BHJhfrQI.js} +1 -1
- package/dist/gateway/static/root/assets/{goal-create-dialog-BStw0m9M.js → goal-create-dialog-DrLfAaIQ.js} +1 -1
- package/dist/gateway/static/root/assets/{goal-detail-page-BOChQ7i7.js → goal-detail-page-CGX9RlwQ.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-config-api-CYNvVerg.js → goals-config-api-qW18xhUI.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-page-BrNRDv8T.js → goals-page-Dw_HSDwB.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-settings-CHZcm6es.js → goals-settings-BIU5W1zl.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-B5oMLvbo.js → heartbeat-settings-CfqjGaTh.js} +1 -1
- package/dist/gateway/static/root/assets/index-C74vxaN3.css +1 -0
- package/dist/gateway/static/root/assets/{index-B5cSZcER.js → index-DEFW3c5N.js} +62 -62
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-Eb8IqcMd.js → keyboard-shortcuts-settings-cCBoXp7P.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-L-MQ_dJY.js → local-app-workbench-page-D2eb_Y9l.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-Zb0f5eNc.js → local-apps-page-DO2x_rcy.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-CQDaFvDN.js → locale-store-D7eqlIJ9.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-CGWbln8I.js +7 -0
- package/dist/gateway/static/root/assets/{markdown-split-RnzQRPvB.js → markdown-split-BZXNhOwW.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-BoX0SWrl.js → media-plugins-DCetbXqB.js} +1 -1
- package/dist/gateway/static/root/assets/{messages--cnUi8Ld.js → messages-CJ9O8gs2.js} +4 -4
- package/dist/gateway/static/root/assets/{models-hub-panel-BQuynkNz.js → models-hub-panel-CgPuYUSc.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-CSOXTk0P.js → notes-page-BimdI125.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-workbench-B7NIQBqd.js → notes-workbench-CJgcA6rb.js} +2 -2
- package/dist/gateway/static/root/assets/{page-tabs-Dl9G6Pm3.js → page-tabs-U1pk4NrV.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-B8R5o1uN.js → preview-open-alternatives-Fxwf5YPD.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-DoN-qkzc.js → project-detail-page-VxBEkOCK.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-BBOW0A-s.js → projects-page-aaYIPefA.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-BzXHX9bU.js → remote-access-hub-DsoA6Lgj.js} +1 -1
- package/dist/gateway/static/root/assets/{save-bar-controls-D6OGeVDa.js → save-bar-controls-Dn4L4DG1.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-CKrch41X.js → schedule-field-RyKxT9K9.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-FroNrvKO.js → schema-form-C1vggaSD.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-c4n4TLc2.js → sessions-page-D6Izw2Lf.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-2xdJe22X.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-1SeKT26L.js → settings-collapsible-section-nlLe8F2O.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-Cz4xOOt4.js → settings-form-section-D_ZiLpm2.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-rBI7xqmM.js → settings-loading-skeleton-B5N97pZa.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-7SlGFgmR.js → settings-page-DPyCrjUe.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-C7B19AHf.js → settings-page-layout-DIvXTz_k.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-_x53a0I_.js → setup-status-panel-DrJTD2wb.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-DwcX1sXG.js → share-preview-page-Us8Qsjnv.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-BwfS4kkk.js → shares-settings-wKE-xvx5.js} +1 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DKFt8QcO.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-sCuywwN5.js → skills-page-DLUejhxZ.js} +1 -1
- package/dist/gateway/static/root/assets/sliding-segmented-uWmrxE3P.js +1 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-CZkASLIv.js → system-settings-panel-5lTZWRTB.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-DP5WlsZg.js → theme-store-BpYvZAYm.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-C2TbyW3H.js → typed-models-lib-BkK8sFRf.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-4WYXfEXk.js → use-channel-catalog-CyWgVZUn.js} +1 -1
- package/dist/gateway/static/root/assets/{user-context-page-0MO96b3-.js → user-context-page-CI0uYsYu.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-fields-editor-Cqalx8iJ.js → user-profile-fields-editor-DHORj_-E.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-settings-panel-CVbTC44o.js → user-profile-settings-panel-C0cBmeSQ.js} +1 -1
- package/dist/gateway/static/root/assets/{utils-DOvyuYat.js → utils-D_hszPJs.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-ClOb2PfC.js → voice-api-key-field-C8A5XTpx.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-page-Ci_rGhsb.js → work-discovery-page-QyGK7xcU.js} +1 -1
- package/dist/gateway/static/root/assets/{work-item-detail-page-DnJeDqJB.js → work-item-detail-page-DtM6dJcm.js} +1 -1
- package/dist/gateway/static/root/assets/work-page-BkWtyIkX.js +1 -0
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-pNCz37MS.js → workflow-run-setup-panel-DxO26B4k.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-BFTxMEH6.js → workflows-page-CzHTzaGu.js} +1 -1
- package/dist/gateway/static/root/index.html +7 -7
- package/dist/package.js +1 -1
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/infra/update-restart.d.ts +1 -0
- package/dist/src/infra/update-restart.js +20 -0
- package/dist/src/infra/update-runner.js +1 -0
- package/dist/src/infra/update-service-refresh.d.ts +14 -0
- package/dist/src/infra/update-service-refresh.js +66 -0
- package/package.json +1 -1
- package/dist/gateway/static/root/assets/channels-status-swr-DvB_8J5B.js +0 -1
- package/dist/gateway/static/root/assets/index-CNr0KWZU.css +0 -1
- package/dist/gateway/static/root/assets/logs-page-ToUMpW7t.js +0 -7
- package/dist/gateway/static/root/assets/settings-advanced-gate-BEsX3iAM.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-BkjO4n_a.js +0 -1
- package/dist/gateway/static/root/assets/work-page-n9XZM9PY.js +0 -1
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=20260713-1" />
|
|
12
12
|
<link rel="manifest" href="/site.webmanifest?v=20260713-1" />
|
|
13
13
|
<title>xopc</title>
|
|
14
|
-
<script type="module" crossorigin src="/assets/index-
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-DEFW3c5N.js"></script>
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
|
|
@@ -24,15 +24,15 @@
|
|
|
24
24
|
<link rel="modulepreload" crossorigin href="/assets/check-BODqo66o.js">
|
|
25
25
|
<link rel="modulepreload" crossorigin href="/assets/circle-alert-RzVebuX2.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/middleware-Pd0e8Igk.js">
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/messages
|
|
28
|
-
<link rel="modulepreload" crossorigin href="/assets/locale-store-
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/messages-CJ9O8gs2.js">
|
|
28
|
+
<link rel="modulepreload" crossorigin href="/assets/locale-store-D7eqlIJ9.js">
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/schemas-DgQq6Z5S.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/config-reload-event-Bjh2zoKp.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/copy-to-clipboard-HOJ79TWv.js">
|
|
32
|
-
<link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-
|
|
33
|
-
<link rel="modulepreload" crossorigin href="/assets/activity-store-
|
|
34
|
-
<link rel="modulepreload" crossorigin href="/assets/theme-store-
|
|
35
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-BHJhfrQI.js">
|
|
33
|
+
<link rel="modulepreload" crossorigin href="/assets/activity-store-CzdG0bk4.js">
|
|
34
|
+
<link rel="modulepreload" crossorigin href="/assets/theme-store-BpYvZAYm.js">
|
|
35
|
+
<link rel="stylesheet" crossorigin href="/assets/index-C74vxaN3.css">
|
|
36
36
|
</head>
|
|
37
37
|
<body>
|
|
38
38
|
<div id="root"></div>
|
package/dist/package.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { init_agent_scope, normalizeAgentId, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
|
|
1
2
|
import { resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
|
|
2
3
|
import "../agent-manifest/index.js";
|
|
3
|
-
import { init_agent_scope, normalizeAgentId, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
|
|
4
4
|
import { init_session_key, parseSessionKey } from "../routing/session-key.js";
|
|
5
5
|
import { agentExists, getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
6
6
|
//#region src/config/agent-profile.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
|
|
2
1
|
import { init_agent_scope, listAgentEntries, normalizeAgentId, resolveAgentDir, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId, resolveUserPath, validateAgentIdForNewAgent } from "../agent/agent-scope.js";
|
|
2
|
+
import { resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
|
|
3
3
|
import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
|
|
4
4
|
import { WORKSPACE_FILES, init_paths, resolveUserProfilePath } from "../config/paths.js";
|
|
5
5
|
import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES, REQUIRED_AGENT_PROFILE_MARKDOWN_FILE_SET } from "../agent/context/workspace.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
3
|
import { shouldSilence, stripHeartbeatToken } from "../../heartbeat/tokens.js";
|
|
4
|
+
import { appendCronEventLines } from "../../heartbeat/event-prompt.js";
|
|
4
5
|
import { isWithinActiveHours } from "../../heartbeat/active-hours.js";
|
|
5
6
|
import { isHeartbeatContentEmpty } from "../../heartbeat/content-check.js";
|
|
6
|
-
import { appendCronEventLines } from "../../heartbeat/event-prompt.js";
|
|
7
7
|
import { createHeartbeatWake } from "../../heartbeat/wake.js";
|
|
8
8
|
import { resolveHeartbeatMdPath } from "../workspace-heartbeat-path.js";
|
|
9
9
|
import { readFile } from "fs/promises";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DEFAULT_ACK_MAX_CHARS, HEARTBEAT_OK, NO_REPLY, shouldSilence, stripHeartbeatToken } from "./tokens.js";
|
|
2
|
+
import { appendCronEventLines } from "./event-prompt.js";
|
|
2
3
|
import { isWithinActiveHours } from "./active-hours.js";
|
|
3
4
|
import { isHeartbeatContentEmpty } from "./content-check.js";
|
|
4
|
-
import { appendCronEventLines } from "./event-prompt.js";
|
|
5
5
|
import { createHeartbeatWake } from "./wake.js";
|
|
6
6
|
export { DEFAULT_ACK_MAX_CHARS, HEARTBEAT_OK, NO_REPLY, appendCronEventLines, createHeartbeatWake, isHeartbeatContentEmpty, isWithinActiveHours, shouldSilence, stripHeartbeatToken };
|
|
@@ -15,6 +15,7 @@ export declare function isRunningInsideGatewayService(env?: Record<string, strin
|
|
|
15
15
|
export declare function maybeRestartGatewayAfterUpdate(params: {
|
|
16
16
|
shouldRestart?: boolean;
|
|
17
17
|
expectedVersion?: string;
|
|
18
|
+
updatedPackageRoot?: string;
|
|
18
19
|
configPath?: string;
|
|
19
20
|
triggerInProcessRestart?: InProcessRestartTrigger;
|
|
20
21
|
}): Promise<UpdateRestartResult>;
|
|
@@ -6,6 +6,7 @@ import { isRestartEnabled } from "../config/commands.flags.js";
|
|
|
6
6
|
import { resolveGatewayService } from "../daemon/service.js";
|
|
7
7
|
import { authorizeGatewaySigusr1Restart, writeGatewayRestartIntentSync } from "./restart.js";
|
|
8
8
|
import { findVerifiedGatewayListenerPidsOnPortSync, signalVerifiedGatewayPidSync } from "./gateway-processes.js";
|
|
9
|
+
import { refreshGatewayServiceAfterUpdate } from "./update-service-refresh.js";
|
|
9
10
|
//#region src/infra/update-restart.ts
|
|
10
11
|
init_loader();
|
|
11
12
|
init_paths();
|
|
@@ -143,6 +144,25 @@ async function maybeRestartGatewayAfterUpdate(params) {
|
|
|
143
144
|
message: "Gateway restart is disabled (commands.restart=false). Restart manually: xopc gateway restart"
|
|
144
145
|
};
|
|
145
146
|
if (isRunningInsideGatewayService() && params.triggerInProcessRestart) {
|
|
147
|
+
if (params.updatedPackageRoot && params.expectedVersion) try {
|
|
148
|
+
const service = await resolveGatewayService();
|
|
149
|
+
if (await service.isLoaded({ env: process.env })) await refreshGatewayServiceAfterUpdate({
|
|
150
|
+
service,
|
|
151
|
+
packageRoot: params.updatedPackageRoot,
|
|
152
|
+
expectedVersion: params.expectedVersion
|
|
153
|
+
});
|
|
154
|
+
} catch (err) {
|
|
155
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
156
|
+
log.warn({
|
|
157
|
+
err,
|
|
158
|
+
expectedVersion: params.expectedVersion
|
|
159
|
+
}, `Gateway service refresh failed after update: ${message}`);
|
|
160
|
+
return {
|
|
161
|
+
ok: false,
|
|
162
|
+
mode: "failed",
|
|
163
|
+
message: `Installed ${params.expectedVersion}, but failed to refresh the gateway service: ${message}`
|
|
164
|
+
};
|
|
165
|
+
}
|
|
146
166
|
const result = params.triggerInProcessRestart();
|
|
147
167
|
if (!result.ok) return {
|
|
148
168
|
ok: false,
|
|
@@ -541,6 +541,7 @@ async function runGatewayUpdateWithPostSteps(opts = {}) {
|
|
|
541
541
|
postUpdate.restart = await maybeRestartGatewayAfterUpdate({
|
|
542
542
|
shouldRestart: opts.shouldRestart,
|
|
543
543
|
expectedVersion: result.after?.version ?? void 0,
|
|
544
|
+
updatedPackageRoot: result.mode === "npm" || result.mode === "pnpm" ? result.root : void 0,
|
|
544
545
|
triggerInProcessRestart: opts.triggerInProcessRestart
|
|
545
546
|
});
|
|
546
547
|
return {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { GatewayService, GatewayServiceCommandConfig, GatewayServiceInstallArgs } from '../daemon/types.js';
|
|
2
|
+
export declare function resolveUpdatedGatewayEntryPoint(packageRoot: string): Promise<string>;
|
|
3
|
+
export declare function buildRefreshedGatewayServiceArgs(params: {
|
|
4
|
+
command: GatewayServiceCommandConfig;
|
|
5
|
+
entryPoint: string;
|
|
6
|
+
expectedVersion: string;
|
|
7
|
+
env?: NodeJS.ProcessEnv;
|
|
8
|
+
}): GatewayServiceInstallArgs;
|
|
9
|
+
export declare function refreshGatewayServiceAfterUpdate(params: {
|
|
10
|
+
service: GatewayService;
|
|
11
|
+
packageRoot: string;
|
|
12
|
+
expectedVersion: string;
|
|
13
|
+
env?: NodeJS.ProcessEnv;
|
|
14
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { createLogger } from "../utils/logger/index.js";
|
|
2
|
+
import { init_logger } from "../utils/logger.js";
|
|
3
|
+
import { SERVICE_VERSION_ENV_KEY, formatGatewayServiceDescription } from "../daemon/constants.js";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import fs from "node:fs/promises";
|
|
6
|
+
//#region src/infra/update-service-refresh.ts
|
|
7
|
+
init_logger();
|
|
8
|
+
const log = createLogger("UpdateServiceRefresh");
|
|
9
|
+
function resolveBinPath(bin) {
|
|
10
|
+
if (typeof bin === "string") return bin;
|
|
11
|
+
if (!bin || typeof bin !== "object") return null;
|
|
12
|
+
return bin.xopc ?? Object.values(bin).find((value) => typeof value === "string") ?? null;
|
|
13
|
+
}
|
|
14
|
+
async function resolveUpdatedGatewayEntryPoint(packageRoot) {
|
|
15
|
+
const resolvedRoot = path.resolve(packageRoot);
|
|
16
|
+
const packageJsonPath = path.join(resolvedRoot, "package.json");
|
|
17
|
+
const binPath = resolveBinPath(JSON.parse(await fs.readFile(packageJsonPath, "utf8")).bin);
|
|
18
|
+
if (!binPath) throw new Error(`Updated package has no xopc CLI entry point: ${packageJsonPath}`);
|
|
19
|
+
const entryPoint = path.resolve(resolvedRoot, binPath);
|
|
20
|
+
const relative = path.relative(resolvedRoot, entryPoint);
|
|
21
|
+
if (relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) throw new Error(`Updated xopc CLI entry point escapes its package root: ${binPath}`);
|
|
22
|
+
await fs.access(entryPoint);
|
|
23
|
+
return entryPoint;
|
|
24
|
+
}
|
|
25
|
+
function buildRefreshedGatewayServiceArgs(params) {
|
|
26
|
+
const programArguments = [...params.command.programArguments];
|
|
27
|
+
const gatewayArgIndex = programArguments.findLastIndex((arg) => arg === "gateway");
|
|
28
|
+
if (gatewayArgIndex < 2) throw new Error("Gateway service command does not contain a replaceable Node.js CLI entry point.");
|
|
29
|
+
programArguments[gatewayArgIndex - 1] = params.entryPoint;
|
|
30
|
+
const environment = {
|
|
31
|
+
...params.command.environment,
|
|
32
|
+
[SERVICE_VERSION_ENV_KEY]: params.expectedVersion,
|
|
33
|
+
XOPC_SERVICE_MARKER: "1"
|
|
34
|
+
};
|
|
35
|
+
const profile = params.env?.XOPC_PROFILE?.trim() || void 0;
|
|
36
|
+
return {
|
|
37
|
+
env: params.env ?? process.env,
|
|
38
|
+
stdout: process.stdout,
|
|
39
|
+
programArguments,
|
|
40
|
+
workingDirectory: params.command.workingDirectory,
|
|
41
|
+
environment,
|
|
42
|
+
description: formatGatewayServiceDescription({
|
|
43
|
+
profile,
|
|
44
|
+
version: params.expectedVersion
|
|
45
|
+
})
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async function refreshGatewayServiceAfterUpdate(params) {
|
|
49
|
+
const env = params.env ?? process.env;
|
|
50
|
+
const command = await params.service.readCommand(env);
|
|
51
|
+
if (!command) throw new Error("Could not read the installed gateway service command.");
|
|
52
|
+
const entryPoint = await resolveUpdatedGatewayEntryPoint(params.packageRoot);
|
|
53
|
+
const installArgs = buildRefreshedGatewayServiceArgs({
|
|
54
|
+
command,
|
|
55
|
+
entryPoint,
|
|
56
|
+
expectedVersion: params.expectedVersion,
|
|
57
|
+
env
|
|
58
|
+
});
|
|
59
|
+
await params.service.install(installArgs);
|
|
60
|
+
log.info({
|
|
61
|
+
entryPoint,
|
|
62
|
+
expectedVersion: params.expectedVersion
|
|
63
|
+
}, "Refreshed gateway service definition after update");
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
export { buildRefreshedGatewayServiceArgs, refreshGatewayServiceAfterUpdate, resolveUpdatedGatewayEntryPoint };
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./locale-store-CQDaFvDN.js";import{n as t}from"./channel-recipient-api-COdmaOO4.js";function n(){return e(`/api/channels/status`)}var r=t;export{r as n,n as t};
|