crewly 1.20.143 → 1.20.145
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/config/constants.ts +59 -0
- package/config/index.ts +2 -0
- package/config/roles/orchestrator/prompt.md +9 -0
- package/config/skills/orchestrator/delegate-task/execute.sh +11 -0
- package/config/skills/orchestrator/delegate-task/execute.test.sh +38 -0
- package/config/skills/orchestrator/harness-login/SKILL.md +88 -0
- package/config/skills/orchestrator/harness-login/execute.sh +75 -0
- package/config/skills/orchestrator/harness-login/execute.test.sh +72 -0
- package/config/skills/orchestrator/reply-chat/SKILL.md +11 -1
- package/config/skills/orchestrator/reply-chat/execute.sh +13 -1
- package/config/skills/orchestrator/reply-slack/SKILL.md +1 -0
- package/config/skills/orchestrator/reply-slack/execute.sh +11 -2
- package/dist/backend/backend/src/constants.d.ts +55 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +36 -1
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +36 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/harness/harness.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/harness/harness.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/harness/harness.routes.js +3 -0
- package/dist/backend/backend/src/controllers/harness/harness.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.d.ts +61 -0
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.js +133 -0
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +69 -7
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +4 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +9 -2
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +8 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +75 -3
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +28 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts +11 -1
- package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/codex-runtime.service.js +18 -0
- package/dist/backend/backend/src/services/agent/codex-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +12 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +18 -3
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +29 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +48 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +15 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +20 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts +147 -5
- package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-relogin.service.js +210 -20
- package/dist/backend/backend/src/services/harness/harness-relogin.service.js.map +1 -1
- package/dist/backend/backend/src/services/harness/owner-login-request.d.ts +87 -0
- package/dist/backend/backend/src/services/harness/owner-login-request.d.ts.map +1 -0
- package/dist/backend/backend/src/services/harness/owner-login-request.js +191 -0
- package/dist/backend/backend/src/services/harness/owner-login-request.js.map +1 -0
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.d.ts +217 -0
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.js +300 -0
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +32 -2
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +59 -5
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +4 -2
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +6 -3
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts +68 -9
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.js +121 -11
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.js.map +1 -1
- package/dist/backend/backend/src/services/system/auto-update.service.d.ts +292 -0
- package/dist/backend/backend/src/services/system/auto-update.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/system/auto-update.service.js +590 -0
- package/dist/backend/backend/src/services/system/auto-update.service.js.map +1 -0
- package/dist/backend/backend/src/services/system/auto-update.utils.d.ts +265 -0
- package/dist/backend/backend/src/services/system/auto-update.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/services/system/auto-update.utils.js +397 -0
- package/dist/backend/backend/src/services/system/auto-update.utils.js.map +1 -0
- package/dist/backend/backend/src/services/system/version-check.service.d.ts +15 -1
- package/dist/backend/backend/src/services/system/version-check.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/system/version-check.service.js +21 -2
- package/dist/backend/backend/src/services/system/version-check.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +7 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +14 -2
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.js +16 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-completion.d.ts +128 -0
- package/dist/backend/backend/src/services/v3/request-completion.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/request-completion.js +311 -0
- package/dist/backend/backend/src/services/v3/request-completion.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +3 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +17 -3
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +8 -0
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.js +11 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/backend/backend/src/types/settings.types.d.ts +8 -0
- package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/settings.types.js +4 -0
- package/dist/backend/backend/src/types/settings.types.js.map +1 -1
- package/dist/backend/backend/src/utils/agent-reply-filter.utils.d.ts +75 -0
- package/dist/backend/backend/src/utils/agent-reply-filter.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/agent-reply-filter.utils.js +127 -0
- package/dist/backend/backend/src/utils/agent-reply-filter.utils.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +56 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +57 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/backend/config/index.d.ts +2 -2
- package/dist/backend/config/index.d.ts.map +1 -1
- package/dist/backend/config/index.js +2 -2
- package/dist/backend/config/index.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +55 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +36 -1
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +28 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +11 -1
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js +18 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +12 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +18 -3
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +29 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +48 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +15 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +20 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts +147 -5
- package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-relogin.service.js +210 -20
- package/dist/cli/backend/src/services/harness/harness-relogin.service.js.map +1 -1
- package/dist/cli/backend/src/services/harness/owner-login-request.d.ts +87 -0
- package/dist/cli/backend/src/services/harness/owner-login-request.d.ts.map +1 -0
- package/dist/cli/backend/src/services/harness/owner-login-request.js +191 -0
- package/dist/cli/backend/src/services/harness/owner-login-request.js.map +1 -0
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.d.ts +217 -0
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.js +300 -0
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.js.map +1 -0
- package/dist/cli/backend/src/services/system/auto-update.utils.d.ts +265 -0
- package/dist/cli/backend/src/services/system/auto-update.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/services/system/auto-update.utils.js +397 -0
- package/dist/cli/backend/src/services/system/auto-update.utils.js.map +1 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +7 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +14 -2
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/request-completion.d.ts +128 -0
- package/dist/cli/backend/src/services/v3/request-completion.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/request-completion.js +311 -0
- package/dist/cli/backend/src/services/v3/request-completion.js.map +1 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts +8 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/v3-data.service.js +11 -1
- package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -1
- package/dist/cli/backend/src/types/settings.types.d.ts +8 -0
- package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/settings.types.js +4 -0
- package/dist/cli/backend/src/types/settings.types.js.map +1 -1
- package/dist/cli/backend/src/utils/agent-reply-filter.utils.d.ts +75 -0
- package/dist/cli/backend/src/utils/agent-reply-filter.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/agent-reply-filter.utils.js +127 -0
- package/dist/cli/backend/src/utils/agent-reply-filter.utils.js.map +1 -0
- package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/start.js +14 -3
- package/dist/cli/cli/src/commands/start.js.map +1 -1
- package/dist/cli/cli/src/commands/update-status.d.ts +85 -0
- package/dist/cli/cli/src/commands/update-status.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/update-status.js +162 -0
- package/dist/cli/cli/src/commands/update-status.js.map +1 -0
- package/dist/cli/cli/src/constants.d.ts +1 -1
- package/dist/cli/cli/src/constants.d.ts.map +1 -1
- package/dist/cli/cli/src/constants.js +1 -1
- package/dist/cli/cli/src/constants.js.map +1 -1
- package/dist/cli/cli/src/index.js +7 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/backend-respawn.d.ts +50 -0
- package/dist/cli/cli/src/utils/backend-respawn.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/backend-respawn.js +59 -0
- package/dist/cli/cli/src/utils/backend-respawn.js.map +1 -0
- package/dist/cli/config/constants.d.ts +56 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +57 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/index.d.ts +2 -2
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js +2 -2
- package/dist/cli/config/index.js.map +1 -1
- package/frontend/dist/assets/{index-e05af897.js → index-71670b91.js} +22 -22
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
- package/packages/crewly-agent/src/runtime/agent-runner.service.test.ts +39 -0
- package/packages/crewly-agent/src/runtime/agent-runner.service.ts +17 -17
- package/packages/crewly-agent/src/runtime/interactive-login-guard.test.ts +60 -0
- package/packages/crewly-agent/src/runtime/interactive-login-guard.ts +76 -0
- package/packages/crewly-agent/src/runtime/reply-tool-calls.test.ts +53 -0
- package/packages/crewly-agent/src/runtime/reply-tool-calls.ts +76 -0
- package/packages/crewly-agent/src/runtime/tool-registry.test.ts +8 -0
- package/packages/crewly-agent/src/runtime/tool-registry.ts +14 -0
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-Update Service
|
|
3
|
+
*
|
|
4
|
+
* Keeps an npm-installed Crewly on the latest release with nobody at the
|
|
5
|
+
* keyboard (specs/auto-update.md):
|
|
6
|
+
*
|
|
7
|
+
* 1. about 10 min after boot, then every 3 h, ask the npm registry for the
|
|
8
|
+
* latest `crewly`;
|
|
9
|
+
* 2. when it is newer and auto-update is on, wait for a quiet window — no
|
|
10
|
+
* agent in_progress and no turn in flight, seen twice ~60 s apart;
|
|
11
|
+
* 3. `npm install -g --prefix <the running copy's prefix> crewly@<version>`;
|
|
12
|
+
* 4. verify the installed package.json says `<version>`;
|
|
13
|
+
* 5. write a marker and ask for the graceful restart (drain, exit 120, the
|
|
14
|
+
* `crewly start` parent respawns the backend from the new files);
|
|
15
|
+
* 6. on the next boot, read the marker and DM the owner once.
|
|
16
|
+
*
|
|
17
|
+
* Failures (install error, verify mismatch, no restart path) back off 6 h
|
|
18
|
+
* and never restart onto a broken install. Dev checkouts, non-npm installs
|
|
19
|
+
* and backends without a respawning parent are skipped.
|
|
20
|
+
*
|
|
21
|
+
* All I/O goes through {@link AutoUpdateDeps} so the rules are unit-testable
|
|
22
|
+
* with a mocked registry, npm and clock; {@link createAutoUpdateService}
|
|
23
|
+
* wires the real ones.
|
|
24
|
+
*
|
|
25
|
+
* @module services/system/auto-update.service
|
|
26
|
+
*/
|
|
27
|
+
import { type AutoUpdateOutcome, type AutoUpdateState, type InstallInfo } from './auto-update.utils.js';
|
|
28
|
+
/** Result of one `npm install` run. */
|
|
29
|
+
export interface InstallRunResult {
|
|
30
|
+
/** True when npm exited 0 */
|
|
31
|
+
ok: boolean;
|
|
32
|
+
/** Exit code (null when killed) */
|
|
33
|
+
code: number | null;
|
|
34
|
+
/** Tail of the combined output, for the failure reason */
|
|
35
|
+
outputTail: string;
|
|
36
|
+
}
|
|
37
|
+
/** What is keeping the machine busy right now. */
|
|
38
|
+
export interface BusySnapshot {
|
|
39
|
+
/** Sessions with a turn in flight (InFlightTurnTracker) */
|
|
40
|
+
midTurn: string[];
|
|
41
|
+
/** Active agents whose workingStatus is in_progress */
|
|
42
|
+
inProgress: string[];
|
|
43
|
+
}
|
|
44
|
+
/** Minimal logger. */
|
|
45
|
+
export interface AutoUpdateLogger {
|
|
46
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
47
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
48
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
49
|
+
}
|
|
50
|
+
/** Everything the service touches outside itself. */
|
|
51
|
+
export interface AutoUpdateDeps {
|
|
52
|
+
/** Crewly home (state, marker and log live here) */
|
|
53
|
+
crewlyHome: string;
|
|
54
|
+
/** Where/how the running copy is installed */
|
|
55
|
+
install: InstallInfo;
|
|
56
|
+
/** Version this process is running (read at boot, before any install) */
|
|
57
|
+
currentVersion: string | null;
|
|
58
|
+
/** `settings.general.autoUpdate` (undefined = default on) */
|
|
59
|
+
getSettingEnabled: () => Promise<boolean | undefined>;
|
|
60
|
+
/** Environment (for CREWLY_AUTO_UPDATE) */
|
|
61
|
+
env: NodeJS.ProcessEnv;
|
|
62
|
+
/** Whether a parent will respawn the backend after exit 120 */
|
|
63
|
+
hasSupervisor: () => boolean;
|
|
64
|
+
/** Latest version on npm (null on failure) */
|
|
65
|
+
fetchLatestVersion: (currentVersion: string) => Promise<string | null>;
|
|
66
|
+
/** True when a shutdown / restart is already under way */
|
|
67
|
+
isRestartInProgress: () => boolean;
|
|
68
|
+
/** Busy agents and turns */
|
|
69
|
+
getBusy: () => Promise<BusySnapshot>;
|
|
70
|
+
/** Run npm; resolves when it exits */
|
|
71
|
+
runInstall: (command: string, args: string[]) => Promise<InstallRunResult>;
|
|
72
|
+
/** npm executable */
|
|
73
|
+
npmCommand: string;
|
|
74
|
+
/** Read the installed version from disk */
|
|
75
|
+
readInstalledVersion: (packageRoot: string) => string | null;
|
|
76
|
+
/** Ask for the graceful restart; false when nothing can restart us */
|
|
77
|
+
requestRestart: (reason: string) => boolean;
|
|
78
|
+
/** Whether the owner channel (Slack) is up */
|
|
79
|
+
isNotifyReady: () => boolean;
|
|
80
|
+
/** Send one owner notification */
|
|
81
|
+
notifyOwner: (title: string, message: string) => Promise<void>;
|
|
82
|
+
/** This machine's display name */
|
|
83
|
+
getDeviceName: () => Promise<string>;
|
|
84
|
+
/** Called after a successful install, before the restart (e.g. re-anchor the cwd) */
|
|
85
|
+
afterInstall: (packageRoot: string) => void;
|
|
86
|
+
/** Append a line to auto-update.log */
|
|
87
|
+
appendLog: (line: string) => void;
|
|
88
|
+
/** Logger */
|
|
89
|
+
logger: AutoUpdateLogger;
|
|
90
|
+
/** Clock */
|
|
91
|
+
now: () => number;
|
|
92
|
+
/** Sleep */
|
|
93
|
+
sleep: (ms: number) => Promise<void>;
|
|
94
|
+
/** Schedule a callback (returns a handle for cancel) */
|
|
95
|
+
schedule: (fn: () => void, ms: number) => unknown;
|
|
96
|
+
/** Cancel a scheduled callback */
|
|
97
|
+
cancel: (handle: unknown) => void;
|
|
98
|
+
}
|
|
99
|
+
/** Result of one {@link AutoUpdateService.runCycle}. */
|
|
100
|
+
export interface CycleResult {
|
|
101
|
+
/** How it ended */
|
|
102
|
+
outcome: AutoUpdateOutcome | 'backoff';
|
|
103
|
+
/** Detail for logs/tests */
|
|
104
|
+
detail?: string;
|
|
105
|
+
/** Target version, when one was chosen */
|
|
106
|
+
version?: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Periodically upgrades the running npm install and restarts into it.
|
|
110
|
+
*/
|
|
111
|
+
export declare class AutoUpdateService {
|
|
112
|
+
private readonly deps;
|
|
113
|
+
private static instance;
|
|
114
|
+
private timer;
|
|
115
|
+
private running;
|
|
116
|
+
private stopped;
|
|
117
|
+
private lastLoggedMode;
|
|
118
|
+
private busySince;
|
|
119
|
+
private pendingNotice;
|
|
120
|
+
private readonly statePath;
|
|
121
|
+
private readonly markerPath;
|
|
122
|
+
/**
|
|
123
|
+
* @param deps - Injected I/O
|
|
124
|
+
*/
|
|
125
|
+
constructor(deps: AutoUpdateDeps);
|
|
126
|
+
/**
|
|
127
|
+
* Register the process-wide instance (index.ts).
|
|
128
|
+
*
|
|
129
|
+
* @param service - Instance, or null to clear
|
|
130
|
+
*/
|
|
131
|
+
static setInstance(service: AutoUpdateService | null): void;
|
|
132
|
+
/**
|
|
133
|
+
* The process-wide instance, when one was registered.
|
|
134
|
+
*
|
|
135
|
+
* @returns The instance or null
|
|
136
|
+
*/
|
|
137
|
+
static getInstance(): AutoUpdateService | null;
|
|
138
|
+
/**
|
|
139
|
+
* Boot: consume the pending-upgrade marker (and report it), log the mode,
|
|
140
|
+
* and schedule the first check.
|
|
141
|
+
*/
|
|
142
|
+
start(): void;
|
|
143
|
+
/**
|
|
144
|
+
* Stop scheduling (shutdown).
|
|
145
|
+
*/
|
|
146
|
+
stop(): void;
|
|
147
|
+
/**
|
|
148
|
+
* Whether this boot is the result of an auto-upgrade whose notice is still
|
|
149
|
+
* owed — the generic "back online" announcement is skipped then, so the
|
|
150
|
+
* owner gets one message per upgrade, not two.
|
|
151
|
+
*
|
|
152
|
+
* @returns True while the upgrade notice is pending or was just sent
|
|
153
|
+
*/
|
|
154
|
+
isUpgradeBoot(): boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Current persisted status.
|
|
157
|
+
*
|
|
158
|
+
* @returns The state
|
|
159
|
+
*/
|
|
160
|
+
getState(): AutoUpdateState;
|
|
161
|
+
/**
|
|
162
|
+
* The on/off/skip mode as a short string (also what update-status shows).
|
|
163
|
+
*
|
|
164
|
+
* @returns e.g. `enabled`, `dev-checkout`, `disabled-env`
|
|
165
|
+
*/
|
|
166
|
+
describeMode(): Promise<string>;
|
|
167
|
+
/**
|
|
168
|
+
* One check → (maybe) install → verify → restart pass.
|
|
169
|
+
*
|
|
170
|
+
* @returns How it ended
|
|
171
|
+
*/
|
|
172
|
+
runCycle(): Promise<CycleResult>;
|
|
173
|
+
/**
|
|
174
|
+
* Body of {@link runCycle}.
|
|
175
|
+
*
|
|
176
|
+
* @returns How it ended
|
|
177
|
+
*/
|
|
178
|
+
private runCycleInner;
|
|
179
|
+
/**
|
|
180
|
+
* Whether nothing is busy. A stale in_progress flag stops blocking after
|
|
181
|
+
* MAX_BUSY_DEFER_MS; a turn in flight always blocks.
|
|
182
|
+
*
|
|
183
|
+
* @returns ok, or the reason it is not
|
|
184
|
+
*/
|
|
185
|
+
private isQuiet;
|
|
186
|
+
/**
|
|
187
|
+
* Record a busy deferral.
|
|
188
|
+
*
|
|
189
|
+
* @param version - Target version
|
|
190
|
+
* @param reason - What is busy
|
|
191
|
+
* @returns Cycle result
|
|
192
|
+
*/
|
|
193
|
+
private deferBusy;
|
|
194
|
+
/**
|
|
195
|
+
* Record a failure, back off, and tell the owner once per target version
|
|
196
|
+
* after repeated failures.
|
|
197
|
+
*
|
|
198
|
+
* @param outcome - Failure kind
|
|
199
|
+
* @param version - Target version
|
|
200
|
+
* @param reason - Why
|
|
201
|
+
* @returns Cycle result
|
|
202
|
+
*/
|
|
203
|
+
private recordFailure;
|
|
204
|
+
/**
|
|
205
|
+
* Boot half of the upgrade: consume the marker; when this process runs the
|
|
206
|
+
* version it names, record success and DM the owner.
|
|
207
|
+
*/
|
|
208
|
+
private handleBootMarker;
|
|
209
|
+
/**
|
|
210
|
+
* Send an owner notice once the channel is up (waits up to NOTIFY_WAIT_MS).
|
|
211
|
+
*
|
|
212
|
+
* @param compose - Builds the notice from the device name
|
|
213
|
+
* @returns True when sent
|
|
214
|
+
*/
|
|
215
|
+
private notify;
|
|
216
|
+
/**
|
|
217
|
+
* Schedule the next cycle.
|
|
218
|
+
*
|
|
219
|
+
* @param ms - Delay
|
|
220
|
+
*/
|
|
221
|
+
private scheduleNext;
|
|
222
|
+
/**
|
|
223
|
+
* Timer body: run a cycle and pick the next delay from its outcome.
|
|
224
|
+
*/
|
|
225
|
+
private tick;
|
|
226
|
+
/**
|
|
227
|
+
* Log the mode when it changes (so "dev checkout — auto-update off" is
|
|
228
|
+
* said once, not every 3 hours).
|
|
229
|
+
*
|
|
230
|
+
* @param mode - Current mode
|
|
231
|
+
*/
|
|
232
|
+
private logModeOnce;
|
|
233
|
+
/**
|
|
234
|
+
* Merge a patch into the status file (best-effort).
|
|
235
|
+
*
|
|
236
|
+
* @param patch - Fields to change
|
|
237
|
+
*/
|
|
238
|
+
private updateState;
|
|
239
|
+
/**
|
|
240
|
+
* Append a timestamped line to auto-update.log.
|
|
241
|
+
*
|
|
242
|
+
* @param line - Text
|
|
243
|
+
*/
|
|
244
|
+
private log;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Human-readable line for a mode.
|
|
248
|
+
*
|
|
249
|
+
* @param mode - Mode from {@link AutoUpdateService.describeMode}
|
|
250
|
+
* @param install - Install info
|
|
251
|
+
* @returns Log line
|
|
252
|
+
*/
|
|
253
|
+
export declare function describeModeLine(mode: string, install: InstallInfo): string;
|
|
254
|
+
/**
|
|
255
|
+
* Run npm, appending its output to the log, killing it after the timeout.
|
|
256
|
+
*
|
|
257
|
+
* @param command - npm executable
|
|
258
|
+
* @param args - Arguments
|
|
259
|
+
* @param appendLog - Log sink
|
|
260
|
+
* @param timeoutMs - Kill after this long
|
|
261
|
+
* @returns Exit status and output tail
|
|
262
|
+
*/
|
|
263
|
+
export declare function runNpmInstall(command: string, args: string[], appendLog: (line: string) => void, timeoutMs?: number): Promise<InstallRunResult>;
|
|
264
|
+
/** Live hooks the server provides to {@link createAutoUpdateService}. */
|
|
265
|
+
export interface AutoUpdateWiring {
|
|
266
|
+
/** Crewly home */
|
|
267
|
+
crewlyHome: string;
|
|
268
|
+
/** `settings.general.autoUpdate` */
|
|
269
|
+
getSettingEnabled: () => Promise<boolean | undefined>;
|
|
270
|
+
/** Latest version on npm */
|
|
271
|
+
fetchLatestVersion: (currentVersion: string) => Promise<string | null>;
|
|
272
|
+
/** Restart already under way */
|
|
273
|
+
isRestartInProgress: () => boolean;
|
|
274
|
+
/** Busy snapshot */
|
|
275
|
+
getBusy: () => Promise<BusySnapshot>;
|
|
276
|
+
/** Graceful restart with RESTART_REQUESTED */
|
|
277
|
+
requestRestart: (reason: string, exitCode: number) => boolean;
|
|
278
|
+
/** Owner channel up */
|
|
279
|
+
isNotifyReady: () => boolean;
|
|
280
|
+
/** Owner notification */
|
|
281
|
+
notifyOwner: (title: string, message: string) => Promise<void>;
|
|
282
|
+
/** Device name */
|
|
283
|
+
getDeviceName: () => Promise<string>;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Build the service with the real filesystem, npm, clock and timers.
|
|
287
|
+
*
|
|
288
|
+
* @param wiring - Server hooks
|
|
289
|
+
* @returns The service (not started)
|
|
290
|
+
*/
|
|
291
|
+
export declare function createAutoUpdateService(wiring: AutoUpdateWiring): AutoUpdateService;
|
|
292
|
+
//# sourceMappingURL=auto-update.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-update.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/system/auto-update.service.ts"],"names":[],"mappings":"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"}
|