@xopcai/xopc 0.0.89 → 0.0.91
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 +36 -12
- package/README.zh-CN.md +36 -12
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/Combination-HAlzriaz.js +41 -0
- package/dist/gateway/static/root/assets/agents-bVWUlrlD.js +222 -0
- package/dist/gateway/static/root/assets/apps-page-CIC8bmvZ.js +1 -0
- package/dist/gateway/static/root/assets/{attachment-preview-renderer-CpyoFbs4.js → attachment-preview-renderer-DBAxQXb-.js} +2 -2
- package/dist/gateway/static/root/assets/{attachment-process-heavy-CqVriadb.js → attachment-process-heavy-Csq3TrrP.js} +4 -4
- package/dist/gateway/static/root/assets/channels-settings-C8G8RAAP.js +1 -0
- package/dist/gateway/static/root/assets/{channels-status-swr-DaHGkRF1.js → channels-status-swr-CYWL5DLD.js} +1 -1
- package/dist/gateway/static/root/assets/circle-check-C23XjkUj.js +1 -0
- package/dist/gateway/static/root/assets/copy-Dv6d4Dvw.js +1 -0
- package/dist/gateway/static/root/assets/cron-api-TVqLlGAC.js +1 -0
- package/dist/gateway/static/root/assets/cron-dreaming-jobs-Ip703-qM.js +2 -0
- package/dist/gateway/static/root/assets/cron-page-BtcFYlvv.js +1 -0
- package/dist/gateway/static/root/assets/dist-CUV1uY5f.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-CtuKJ9tE.js → extension-debug-page-mTLHRDp1.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-ykzjOkR5.js → extension-page-iI8BI7WK.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-Ce2qrdpO.js → extension-settings-page-ByXcdubM.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-C9FFJjuH.js → fetch-BWtQq_Ys.js} +1 -1
- package/dist/gateway/static/root/assets/{field-primitives-BFcrNeTU.js → field-primitives-BsZ-4VT5.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-CEg4Vr9R.js → heartbeat-config-api-WjTsRLCU.js} +1 -1
- package/dist/gateway/static/root/assets/{index-CZfy9oxs.js → index-CKkR-v9U.js} +101 -97
- package/dist/gateway/static/root/assets/index-VlELBY99.css +1 -0
- package/dist/gateway/static/root/assets/logs-page-ClnIpxfd.js +1 -0
- package/dist/gateway/static/root/assets/note-detail-page-B91pLkEI.css +1 -0
- package/dist/gateway/static/root/assets/note-detail-page-DJ2Mb4x7.js +179 -0
- package/dist/gateway/static/root/assets/note-time-JLBPSLzK.js +1 -0
- package/dist/gateway/static/root/assets/notes-page-BE-75qz9.js +1 -0
- package/dist/gateway/static/root/assets/{pdf-BnEvgIXZ.js → pdf-epILhEOn.js} +1 -1
- package/dist/gateway/static/root/assets/preload-helper-zJ_50EbN.js +1 -0
- package/dist/gateway/static/root/assets/sessions-page-bJJkWtTl.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-BqdzA28u.js → settings-form-section-DSYCknxM.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-WcMXLq2U.js +3 -0
- package/dist/gateway/static/root/assets/share-preview-page-awRqs4hV.js +2 -0
- package/dist/gateway/static/root/assets/skills-page-Lu-i1JG7.js +2 -0
- package/dist/gateway/static/root/assets/{theme-store-CNqbmTNV.js → theme-store-BC-42BoZ.js} +1 -1
- package/dist/gateway/static/root/assets/toast-z0toXu32.js +1 -0
- package/dist/gateway/static/root/assets/url-CY1RQKTU.js +3 -0
- package/dist/gateway/static/root/assets/{utils-BWm2tG2w.js → utils-DX3TQuap.js} +1 -1
- package/dist/gateway/static/root/assets/vendor-codemirror-DYoKfS8f.js +45 -0
- package/dist/gateway/static/root/assets/voice-api-key-field-B5uKlDqA.js +1 -0
- package/dist/gateway/static/root/assets/workflow-page.utils-ClC37yEp.js +1 -0
- package/dist/gateway/static/root/assets/workflows-page-C7VhIXtR.js +27 -0
- package/dist/gateway/static/root/index.html +11 -7
- package/dist/package.js +1 -1
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +20 -18
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +1 -1
- package/dist/src/agent/tools/cronjob-tool.d.ts +6 -0
- package/dist/src/agent/tools/cronjob-tool.js +74 -9
- package/dist/src/agent/tools/cronjob-tool.js.map +1 -1
- package/dist/src/agent/tools/edit.d.ts +5 -1
- package/dist/src/agent/tools/edit.js +7 -5
- package/dist/src/agent/tools/edit.js.map +1 -1
- package/dist/src/agent/tools/factory.js +2 -2
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/write.d.ts +5 -1
- package/dist/src/agent/tools/write.js +7 -5
- package/dist/src/agent/tools/write.js.map +1 -1
- package/dist/src/agent/workflow/agent-progress.js +2 -0
- package/dist/src/agent/workflow/agent-progress.js.map +1 -1
- package/dist/src/agent/workflow/builtins/client-proposal.d.ts +12 -0
- package/dist/src/agent/workflow/builtins/client-proposal.js +155 -0
- package/dist/src/agent/workflow/builtins/client-proposal.js.map +1 -0
- package/dist/src/agent/workflow/builtins/competitor-scan.d.ts +12 -0
- package/dist/src/agent/workflow/builtins/competitor-scan.js +150 -0
- package/dist/src/agent/workflow/builtins/competitor-scan.js.map +1 -0
- package/dist/src/agent/workflow/builtins/content-draft.d.ts +13 -0
- package/dist/src/agent/workflow/builtins/content-draft.js +146 -0
- package/dist/src/agent/workflow/builtins/content-draft.js.map +1 -0
- package/dist/src/agent/workflow/builtins/content-repurpose.d.ts +11 -0
- package/dist/src/agent/workflow/builtins/content-repurpose.js +137 -0
- package/dist/src/agent/workflow/builtins/content-repurpose.js.map +1 -0
- package/dist/src/agent/workflow/builtins/decision-compare.d.ts +13 -0
- package/dist/src/agent/workflow/builtins/decision-compare.js +173 -0
- package/dist/src/agent/workflow/builtins/decision-compare.js.map +1 -0
- package/dist/src/agent/workflow/builtins/inbox-triage.d.ts +11 -0
- package/dist/src/agent/workflow/builtins/inbox-triage.js +148 -0
- package/dist/src/agent/workflow/builtins/inbox-triage.js.map +1 -0
- package/dist/src/agent/workflow/builtins/index.d.ts +10 -1
- package/dist/src/agent/workflow/builtins/index.js +46 -1
- package/dist/src/agent/workflow/builtins/index.js.map +1 -1
- package/dist/src/agent/workflow/builtins/meeting-prep.d.ts +12 -0
- package/dist/src/agent/workflow/builtins/meeting-prep.js +144 -0
- package/dist/src/agent/workflow/builtins/meeting-prep.js.map +1 -0
- package/dist/src/agent/workflow/builtins/offer-design.d.ts +12 -0
- package/dist/src/agent/workflow/builtins/offer-design.js +161 -0
- package/dist/src/agent/workflow/builtins/offer-design.js.map +1 -0
- package/dist/src/agent/workflow/builtins/weekly-review.d.ts +12 -0
- package/dist/src/agent/workflow/builtins/weekly-review.js +131 -0
- package/dist/src/agent/workflow/builtins/weekly-review.js.map +1 -0
- package/dist/src/agent/workflow/step-labels.js +2 -2
- package/dist/src/agent/workflow/step-labels.js.map +1 -1
- package/dist/src/agent/workflow/subagent-runner.js +3 -1
- package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
- package/dist/src/agent/workflow/types.d.ts +4 -0
- package/dist/src/chat-commands/agent-edit.d.ts +4 -0
- package/dist/src/chat-commands/agent-edit.js +136 -0
- package/dist/src/chat-commands/agent-edit.js.map +1 -0
- package/dist/src/chat-commands/index.d.ts +1 -0
- package/dist/src/chat-commands/index.js +3 -1
- package/dist/src/chat-commands/index.js.map +1 -1
- package/dist/src/cli/bin.js +2 -0
- package/dist/src/cli/bin.js.map +1 -1
- package/dist/src/cli/commands/cron.js +42 -3
- package/dist/src/cli/commands/cron.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +79 -56
- package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +1 -1
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/update.js +86 -79
- package/dist/src/cli/commands/update.js.map +1 -1
- package/dist/src/commands/agents.config.d.ts +3 -2
- package/dist/src/commands/agents.config.js +5 -2
- package/dist/src/commands/agents.config.js.map +1 -1
- package/dist/src/config/agent-typed-models.d.ts +2 -7
- package/dist/src/config/agent-typed-models.js +3 -14
- package/dist/src/config/agent-typed-models.js.map +1 -1
- package/dist/src/config/localized-text.d.ts +6 -0
- package/dist/src/config/localized-text.js +42 -0
- package/dist/src/config/localized-text.js.map +1 -0
- package/dist/src/config/models-json.d.ts +6 -6
- package/dist/src/config/schema.d.ts +6 -21
- package/dist/src/config/schema.js +4 -4
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/cron/executor.d.ts +2 -0
- package/dist/src/cron/executor.js +111 -1
- package/dist/src/cron/executor.js.map +1 -1
- package/dist/src/cron/types.d.ts +8 -1
- package/dist/src/cron/validation.d.ts +4 -0
- package/dist/src/cron/validation.js +4 -3
- package/dist/src/cron/validation.js.map +1 -1
- package/dist/src/cron/workflow-run-completion.d.ts +23 -0
- package/dist/src/cron/workflow-run-completion.js +72 -0
- package/dist/src/cron/workflow-run-completion.js.map +1 -0
- package/dist/src/extensions/update.d.ts +51 -0
- package/dist/src/extensions/update.js +260 -0
- package/dist/src/extensions/update.js.map +1 -0
- package/dist/src/gateway/agents-admin.d.ts +15 -8
- package/dist/src/gateway/agents-admin.js +77 -28
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +6 -0
- package/dist/src/gateway/hono/lib/config-payload.js +3 -1
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/middleware/auth.d.ts +2 -0
- package/dist/src/gateway/hono/middleware/auth.js +11 -7
- package/dist/src/gateway/hono/middleware/auth.js.map +1 -1
- package/dist/src/gateway/hono/routes/agents.js +55 -12
- package/dist/src/gateway/hono/routes/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/agents.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/gateway.d.ts +2 -2
- package/dist/src/gateway/hono/routes/config-patch/gateway.js +12 -0
- package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +1 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
- package/dist/src/gateway/hono/routes/notes.d.ts +3 -0
- package/dist/src/gateway/hono/routes/notes.js +274 -0
- package/dist/src/gateway/hono/routes/notes.js.map +1 -0
- package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
- package/dist/src/gateway/hono/routes/update.js +55 -107
- package/dist/src/gateway/hono/routes/update.js.map +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +3 -1
- package/dist/src/gateway/hono/routes/workflows.js.map +1 -1
- package/dist/src/gateway/server.js +2 -0
- package/dist/src/gateway/server.js.map +1 -1
- package/dist/src/gateway/service.d.ts +3 -0
- package/dist/src/gateway/service.js +12 -1
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/workspace-ripgrep.d.ts +6 -0
- package/dist/src/gateway/workspace-ripgrep.js +62 -11
- package/dist/src/gateway/workspace-ripgrep.js.map +1 -1
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/infra/brew.d.ts +4 -0
- package/dist/src/infra/brew.js +20 -0
- package/dist/src/infra/brew.js.map +1 -0
- package/dist/src/infra/package-json.d.ts +2 -0
- package/dist/src/infra/package-json.js +23 -0
- package/dist/src/infra/package-json.js.map +1 -0
- package/dist/src/infra/package-update-steps.d.ts +35 -0
- package/dist/src/infra/package-update-steps.js +304 -0
- package/dist/src/infra/package-update-steps.js.map +1 -0
- package/dist/src/infra/path-env.d.ts +11 -0
- package/dist/src/infra/path-env.js +90 -0
- package/dist/src/infra/path-env.js.map +1 -0
- package/dist/src/infra/path-prepend.d.ts +7 -0
- package/dist/src/infra/path-prepend.js +44 -0
- package/dist/src/infra/path-prepend.js.map +1 -0
- package/dist/src/infra/stable-node-path.d.ts +2 -0
- package/dist/src/infra/stable-node-path.js +28 -0
- package/dist/src/infra/stable-node-path.js.map +1 -0
- package/dist/src/infra/update-global.d.ts +30 -23
- package/dist/src/infra/update-global.js +113 -64
- package/dist/src/infra/update-global.js.map +1 -1
- package/dist/src/infra/update-log.d.ts +1 -0
- package/dist/src/infra/update-log.js +12 -0
- package/dist/src/infra/update-log.js.map +1 -0
- package/dist/src/infra/update-restart.d.ts +20 -0
- package/dist/src/infra/update-restart.js +165 -0
- package/dist/src/infra/update-restart.js.map +1 -0
- package/dist/src/infra/update-runner.d.ts +89 -1
- package/dist/src/infra/update-runner.js +604 -173
- package/dist/src/infra/update-runner.js.map +1 -1
- package/dist/src/infra/update-startup.d.ts +3 -0
- package/dist/src/infra/update-startup.js +8 -4
- package/dist/src/infra/update-startup.js.map +1 -1
- package/dist/src/notes/attachment-ref.d.ts +9 -0
- package/dist/src/notes/attachment-ref.js +27 -0
- package/dist/src/notes/attachment-ref.js.map +1 -0
- package/dist/src/notes/index.d.ts +4 -0
- package/dist/src/notes/index.js +4 -0
- package/dist/src/notes/note-attachment-sync.d.ts +7 -0
- package/dist/src/notes/note-attachment-sync.js +46 -0
- package/dist/src/notes/note-attachment-sync.js.map +1 -0
- package/dist/src/notes/note-index-meta.d.ts +14 -0
- package/dist/src/notes/note-index-meta.js +87 -0
- package/dist/src/notes/note-index-meta.js.map +1 -0
- package/dist/src/notes/paths.d.ts +5 -0
- package/dist/src/notes/paths.js +23 -0
- package/dist/src/notes/paths.js.map +1 -0
- package/dist/src/notes/service.d.ts +42 -0
- package/dist/src/notes/service.js +331 -0
- package/dist/src/notes/service.js.map +1 -0
- package/dist/src/notes/store.d.ts +33 -0
- package/dist/src/notes/store.js +317 -0
- package/dist/src/notes/store.js.map +1 -0
- package/dist/src/notes/types.d.ts +162 -0
- package/dist/src/notes/types.js +1 -0
- package/dist/src/routing/resolve-route.d.ts +3 -1
- package/dist/src/routing/resolve-route.js.map +1 -1
- package/dist/src/session/store.d.ts +5 -3
- package/dist/src/session/store.js +66 -20
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/utils/logger/stats.d.ts +1 -1
- package/dist/src/workflows/domain/event.d.ts +3 -0
- package/dist/src/workflows/domain/run.d.ts +3 -0
- package/dist/src/workflows/domain/run.js.map +1 -1
- package/dist/src/workflows/engine/projector.js +17 -0
- package/dist/src/workflows/engine/projector.js.map +1 -1
- package/dist/src/workflows/engine/workflow-engine.js +127 -0
- package/dist/src/workflows/engine/workflow-engine.js.map +1 -1
- package/dist/src/workflows/index.js +1 -1
- package/dist/src/workflows/service/run-view-to-snapshot.js +3 -1
- package/dist/src/workflows/service/run-view-to-snapshot.js.map +1 -1
- package/dist/src/workflows/service/workflow-run-service.d.ts +1 -0
- package/dist/src/workflows/service/workflow-run-service.js +4 -1
- package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
- package/dist/src/workflows/service/workflow-session-bridge.js +1 -1
- package/package.json +1 -1
- package/dist/gateway/static/root/assets/agents-B6PJB07W.js +0 -222
- package/dist/gateway/static/root/assets/apps-page-BOr0B1wv.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-BelUKggl.js +0 -1
- package/dist/gateway/static/root/assets/cron-api-CjOg-BIj.js +0 -1
- package/dist/gateway/static/root/assets/cron-dreaming-jobs-DueM3rBz.js +0 -2
- package/dist/gateway/static/root/assets/cron-page-DhoZmZXb.js +0 -1
- package/dist/gateway/static/root/assets/dist-6LecgDx5.js +0 -1
- package/dist/gateway/static/root/assets/dist-BTWC-BTN.js +0 -45
- package/dist/gateway/static/root/assets/index-CiN1cQiQ.css +0 -1
- package/dist/gateway/static/root/assets/logs-page-BwWLfqvd.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-DV5WN8uk.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-CfOBRbPX.js +0 -3
- package/dist/gateway/static/root/assets/share-preview-page-Di5Bzh4g.js +0 -2
- package/dist/gateway/static/root/assets/skills-page-D0H5Kaxg.js +0 -2
- package/dist/gateway/static/root/assets/url-aYn-Rj1C.js +0 -7
- package/dist/gateway/static/root/assets/vendor-codemirror-D0yxdRpg.js +0 -58
- package/dist/gateway/static/root/assets/voice-api-key-field-X2UfnHeq.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-BOPpO3NG.js +0 -27
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-restart.js","names":[],"sources":["../../../src/infra/update-restart.ts"],"sourcesContent":["/**\n * Gateway restart after xopc update — daemon, unmanaged, or in-process respawn.\n */\n\nimport { loadConfig } from '../config/loader.js';\nimport { resolveConfigPath } from '../config/paths.js';\nimport { isRestartEnabled } from '../config/commands.flags.js';\nimport { resolveGatewayService } from '../daemon/service.js';\nimport type { GatewayService } from '../daemon/types.js';\nimport {\n findVerifiedGatewayListenerPidsOnPortSync,\n signalVerifiedGatewayPidSync,\n} from './gateway-processes.js';\nimport { authorizeGatewaySigusr1Restart, writeGatewayRestartIntentSync } from './restart.js';\nimport { createLogger } from '../utils/logger.js';\n\nconst log = createLogger('UpdateRestart');\n\nconst DEFAULT_HEALTH_ATTEMPTS = 120;\nconst DEFAULT_HEALTH_DELAY_MS = 500;\n\nexport type UpdateRestartResult = {\n ok: boolean;\n mode: 'in-process' | 'daemon' | 'unmanaged' | 'skipped' | 'disabled' | 'failed';\n message?: string;\n};\n\nexport type InProcessRestartTrigger = () => { ok: boolean; mode?: string; message?: string };\n\nexport function isRunningInsideGatewayService(\n env: Record<string, string | undefined> = process.env,\n): boolean {\n return env.XOPC_SERVICE_MARKER?.trim() === '1';\n}\n\nfunction resolveGatewayPort(configPath?: string): number {\n const config = loadConfig(configPath ?? resolveConfigPath());\n return typeof config.gateway?.port === 'number' ? config.gateway.port : 18790;\n}\n\nfunction parsePortFromArgs(programArguments: string[] | undefined): number | null {\n if (!programArguments?.length) {\n return null;\n }\n for (let i = 0; i < programArguments.length; i += 1) {\n const arg = programArguments[i];\n if (arg === '--port') {\n const parsed = parseInt(String(programArguments[i + 1]), 10);\n if (Number.isFinite(parsed) && parsed > 0) {\n return parsed;\n }\n }\n if (arg?.startsWith('--port=')) {\n const parsed = parseInt(arg.split('=', 2)[1] ?? '', 10);\n if (Number.isFinite(parsed) && parsed > 0) {\n return parsed;\n }\n }\n }\n return null;\n}\n\nasync function resolveRestartPort(service: GatewayService): Promise<number> {\n const command = await service.readCommand(process.env).catch(() => null);\n return parsePortFromArgs(command?.programArguments) ?? resolveGatewayPort();\n}\n\nasync function waitForGatewayHealth(port: number, expectedVersion?: string): Promise<boolean> {\n for (let attempt = 0; attempt < DEFAULT_HEALTH_ATTEMPTS; attempt += 1) {\n try {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 1500);\n const response = await fetch(`http://127.0.0.1:${port}/api/health`, {\n method: 'GET',\n signal: controller.signal,\n });\n clearTimeout(timeout);\n if (!response.ok) {\n await new Promise((r) => setTimeout(r, DEFAULT_HEALTH_DELAY_MS));\n continue;\n }\n if (expectedVersion) {\n const body = (await response.json()) as { version?: string };\n if (body.version && body.version !== expectedVersion) {\n await new Promise((r) => setTimeout(r, DEFAULT_HEALTH_DELAY_MS));\n continue;\n }\n }\n return true;\n } catch {\n await new Promise((r) => setTimeout(r, DEFAULT_HEALTH_DELAY_MS));\n }\n }\n return false;\n}\n\nasync function restartUnmanagedGateway(port: number, configPath?: string): Promise<UpdateRestartResult> {\n const config = loadConfig(configPath ?? resolveConfigPath());\n if (!isRestartEnabled(config)) {\n return {\n ok: false,\n mode: 'disabled',\n message:\n 'Gateway restart is disabled in config (commands.restart=false). Restart manually: xopc gateway restart',\n };\n }\n\n const pids = findVerifiedGatewayListenerPidsOnPortSync(port).filter(\n (pid): pid is number => Number.isFinite(pid) && pid > 0,\n );\n if (pids.length === 0) {\n return {\n ok: false,\n mode: 'failed',\n message: `No gateway listener found on port ${port}.`,\n };\n }\n if (pids.length > 1) {\n return {\n ok: false,\n mode: 'failed',\n message: `Multiple gateway processes on port ${port}; use \"xopc gateway status\" before retrying.`,\n };\n }\n\n const targetPid = pids[0];\n if (process.platform === 'win32') {\n writeGatewayRestartIntentSync({ targetPid });\n signalVerifiedGatewayPidSync(targetPid, 'SIGTERM');\n } else {\n authorizeGatewaySigusr1Restart();\n signalVerifiedGatewayPidSync(targetPid, 'SIGUSR1');\n }\n\n return {\n ok: true,\n mode: 'unmanaged',\n message: `Gateway restart signal sent to process ${targetPid} on port ${port}.`,\n };\n}\n\nasync function restartDaemonGateway(\n service: GatewayService,\n port: number,\n expectedVersion?: string,\n): Promise<UpdateRestartResult> {\n try {\n const loaded = await service.isLoaded({ env: process.env });\n if (!loaded) {\n return restartUnmanagedGateway(port);\n }\n await service.restart({ env: process.env, stdout: process.stdout });\n const healthy = await waitForGatewayHealth(port, expectedVersion);\n if (!healthy) {\n log.warn({ port, expectedVersion }, 'Gateway restart completed but health check timed out');\n return {\n ok: true,\n mode: 'daemon',\n message: 'Gateway service restarted; health check timed out (gateway may still be starting).',\n };\n }\n return {\n ok: true,\n mode: 'daemon',\n message: 'Gateway service restarted successfully.',\n };\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n log.warn({ err, port }, `Daemon restart failed: ${message}`);\n return { ok: false, mode: 'failed', message };\n }\n}\n\nexport async function maybeRestartGatewayAfterUpdate(params: {\n shouldRestart?: boolean;\n expectedVersion?: string;\n configPath?: string;\n triggerInProcessRestart?: InProcessRestartTrigger;\n}): Promise<UpdateRestartResult> {\n if (params.shouldRestart === false) {\n return { ok: true, mode: 'skipped', message: 'Restart skipped (--no-restart).' };\n }\n\n const config = loadConfig(params.configPath ?? resolveConfigPath());\n if (!isRestartEnabled(config)) {\n return {\n ok: false,\n mode: 'disabled',\n message:\n 'Gateway restart is disabled (commands.restart=false). Restart manually: xopc gateway restart',\n };\n }\n\n if (isRunningInsideGatewayService() && params.triggerInProcessRestart) {\n const result = params.triggerInProcessRestart();\n if (!result.ok) {\n return {\n ok: false,\n mode: 'failed',\n message: result.message ?? 'In-process gateway restart failed.',\n };\n }\n log.info({ mode: result.mode }, 'Scheduled in-process gateway restart after update');\n return {\n ok: true,\n mode: 'in-process',\n message: result.message ?? 'Gateway restart scheduled.',\n };\n }\n\n const service = await resolveGatewayService();\n const port = await resolveRestartPort(service);\n return restartDaemonGateway(service, port, params.expectedVersion);\n}\n"],"mappings":"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"}
|
|
@@ -1,19 +1,107 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { createDefaultCommandRunner } from './run-command.js';
|
|
2
|
+
import { type UpdateChannel } from './update-channels.js';
|
|
3
|
+
import { type ExtensionPostUpdateResult } from '../extensions/update.js';
|
|
4
|
+
import { type GlobalInstallManager } from './update-global.js';
|
|
5
|
+
import { type InProcessRestartTrigger, type UpdateRestartResult } from './update-restart.js';
|
|
6
|
+
export type UpdateStepResult = {
|
|
7
|
+
name: string;
|
|
8
|
+
command: string;
|
|
9
|
+
cwd: string;
|
|
10
|
+
durationMs: number;
|
|
11
|
+
exitCode: number | null;
|
|
12
|
+
stdoutTail?: string | null;
|
|
13
|
+
stderrTail?: string | null;
|
|
14
|
+
};
|
|
15
|
+
export type UpdatePostUpdateResult = {
|
|
16
|
+
extensions?: ExtensionPostUpdateResult;
|
|
17
|
+
restart?: UpdateRestartResult;
|
|
18
|
+
};
|
|
19
|
+
export type UpdateRunResult = {
|
|
20
|
+
status: 'ok' | 'error' | 'skipped';
|
|
21
|
+
mode: 'git' | 'pnpm' | 'npm' | 'unknown';
|
|
22
|
+
root?: string;
|
|
23
|
+
reason?: string;
|
|
24
|
+
before?: {
|
|
25
|
+
sha?: string | null;
|
|
26
|
+
version?: string | null;
|
|
27
|
+
};
|
|
28
|
+
after?: {
|
|
29
|
+
sha?: string | null;
|
|
30
|
+
version?: string | null;
|
|
31
|
+
};
|
|
32
|
+
steps: UpdateStepResult[];
|
|
33
|
+
durationMs: number;
|
|
34
|
+
postUpdate?: UpdatePostUpdateResult;
|
|
35
|
+
};
|
|
36
|
+
export type UpdateStepInfo = {
|
|
37
|
+
name: string;
|
|
38
|
+
command: string;
|
|
39
|
+
index: number;
|
|
40
|
+
total: number;
|
|
41
|
+
};
|
|
42
|
+
export type UpdateStepCompletion = UpdateStepInfo & {
|
|
43
|
+
durationMs: number;
|
|
44
|
+
exitCode: number | null;
|
|
45
|
+
stderrTail?: string | null;
|
|
46
|
+
};
|
|
47
|
+
export type UpdateStepProgress = {
|
|
48
|
+
onStepStart?: (step: UpdateStepInfo) => void;
|
|
49
|
+
onStepComplete?: (step: UpdateStepCompletion) => void;
|
|
50
|
+
};
|
|
51
|
+
export type UpdateInstallSurface = {
|
|
52
|
+
kind: 'git';
|
|
53
|
+
mode: 'git';
|
|
54
|
+
root: string;
|
|
55
|
+
packageRoot: string;
|
|
56
|
+
} | {
|
|
57
|
+
kind: 'global';
|
|
58
|
+
mode: GlobalInstallManager;
|
|
59
|
+
root: string;
|
|
60
|
+
packageRoot: string;
|
|
61
|
+
} | {
|
|
62
|
+
kind: 'package-root';
|
|
63
|
+
mode: 'unknown';
|
|
64
|
+
root: string;
|
|
65
|
+
packageRoot: string;
|
|
66
|
+
} | {
|
|
67
|
+
kind: 'missing';
|
|
68
|
+
mode: 'unknown';
|
|
69
|
+
root?: string;
|
|
70
|
+
packageRoot?: undefined;
|
|
71
|
+
};
|
|
72
|
+
type UpdateRunnerOptions = {
|
|
73
|
+
cwd?: string;
|
|
74
|
+
argv1?: string;
|
|
75
|
+
channel?: UpdateChannel;
|
|
76
|
+
timeoutMs?: number;
|
|
77
|
+
progress?: UpdateStepProgress;
|
|
78
|
+
skipExtensionSync?: boolean;
|
|
79
|
+
shouldRestart?: boolean;
|
|
80
|
+
triggerInProcessRestart?: InProcessRestartTrigger;
|
|
81
|
+
};
|
|
82
|
+
export declare function resolveUpdateInstallSurface(opts?: Pick<UpdateRunnerOptions, 'cwd' | 'argv1' | 'timeoutMs'>): Promise<UpdateInstallSurface>;
|
|
83
|
+
export declare function runGatewayUpdate(opts?: UpdateRunnerOptions): Promise<UpdateRunResult>;
|
|
84
|
+
export declare function runGatewayUpdateWithPostSteps(opts?: UpdateRunnerOptions): Promise<UpdateRunResult>;
|
|
85
|
+
export declare function formatUpdateApiResult(result: UpdateRunResult, channel: UpdateChannel): Record<string, unknown>;
|
|
2
86
|
export type AutoUpdateResult = {
|
|
3
87
|
ok: boolean;
|
|
4
88
|
exitCode: number | null;
|
|
5
89
|
reason?: string;
|
|
6
90
|
stdout?: string;
|
|
7
91
|
stderr?: string;
|
|
92
|
+
result?: UpdateRunResult;
|
|
8
93
|
};
|
|
9
94
|
export declare function runAutoUpdateCommand(params: {
|
|
10
95
|
channel: UpdateChannel;
|
|
11
96
|
root?: string | null;
|
|
12
97
|
timeoutMs?: number;
|
|
98
|
+
triggerInProcessRestart?: InProcessRestartTrigger;
|
|
13
99
|
}): Promise<AutoUpdateResult>;
|
|
14
100
|
export declare function runAutoUpdateCommandWithProgress(params: {
|
|
15
101
|
channel: UpdateChannel;
|
|
16
102
|
root?: string | null;
|
|
17
103
|
timeoutMs?: number;
|
|
104
|
+
triggerInProcessRestart?: InProcessRestartTrigger;
|
|
18
105
|
onProgress?: (line: string, source: 'stdout' | 'stderr') => void | Promise<void>;
|
|
19
106
|
}): Promise<AutoUpdateResult>;
|
|
107
|
+
export { createDefaultCommandRunner };
|